Code-based SIG: CROSS

参考文献:

  1. [GGM86] Oded Goldreich, Shafi Goldwasser, Silvio Micali. How to construct random functions. J. ACM 33(4): 792-807 (1986).
  2. [Merkle87] Ralph C. Merkle. A Digital Signature Based on a Conventional Encryption Function. CRYPTO 1987: 369-378.
  3. [CE24] André Chailloux, Simona Etinski. On the (in)security of optimized Stern-like signature schemes. Des. Codes Cryptogr. 92(3): 803-832 (2024).
  4. SDP-based ZKP & SIG
  5. Merkle Tree & Hash-based SIG

Merkle Tree

场景:Alice 持有 t t t 个数据块,想要将其中的 k k k 个数据块发送给 Bob,并且 Bob 要确认这些数据块的位置内容的正确性。可以使用 [Merkle87] 提出的 Merkle Tree 实现它。

方便起见,我们假设 t t t 是二的幂次,从而 Merkle Tree 是一颗完全二叉树。如下图所示,将数据 D i D_i Di 的摘要作为叶子,然后两两 Hash,最终得到对全部数据块的承诺 c o m com com

在这里插入图片描述

首先 Bob 已经知道 c o m com com 的值。现在,Alice 发送 k k k 个橙色数据块给 Bob,同时发送从这些叶子到根的路径上各个节点的兄弟(绿色那些)。因为多个橙色数据块的路径存在重叠,某些节点不必发送。确切地说,最近公共祖先的两个孩子被省略,而从该祖先到根的兄弟被共用。因此,最近祖先的深度越大,那么省略的节点数就越多。当 k k k 个数据块最分散时,是最坏情况:每个叶子到最近公共祖先的路径长度约为 log ⁡ ( t / k ) \log(t/k) log(t/k)

对于一般的 t t t,假设 w t ( t ) = m wt(t) = m wt(t)=m,可以用 m m m 颗完全二叉树来实现。可以证明 Merkle Proof 的长度上界为:
2 λ ⋅ ⌊ k ⋅ log ⁡ ( t / k ) + m − 1 ⌋ 2\lambda \cdot \lfloor k \cdot \log(t/k) + m-1\rfloor 2λklog(t/k)+m1
其中 2 λ 2\lambda 2λ 是 Hash 值的长度。 但是通常,Merkle Proof 的实际规模会远小于该上界。

PRNG Tree

场景:Alice 秘密生成了 t t t 个随机数,想要将其中的 t − k t-k tk 个随机数发送给 Bob,并且 Bob 对其余的 k k k 个随机数(在计算意义下)无知。可以使用 [GGM86] 提出的 PRNG Tree 实现它。

方便起见,我们假设 t t t 是二的幂次,从而 PRNG Tree 是一颗完全二叉树。如下图所示,根据种子 s e e d seed seed,迭代计算 PRG 得到两个孩子,最终获得全部随机数 R i R_i Ri

在这里插入图片描述

现在,Alice 想要发送 t − k t-k tk 个橙色随机数给 Bob,只需发送 k k k 个灰色叶子到根的路径上各个节点的兄弟(绿色那些)。类似的,多个路径可以合并。可以证明 Seed Path 的长度上界是:
λ ⋅ min ⁡ ( ⌊ k ⋅ log ⁡ ( t / k ) + m − 1 ⌋ , t − k ) \lambda \cdot \min\big(\lfloor k \cdot \log(t/k) + m-1\rfloor, t-k\big) λmin(klog(t/k)+m1,tk)
其中 λ \lambda λ 是 PRG 的种子长度,其中 t − k t-k tk 表示直接传输那些叶子。

函数 f t ( k ) = k ⋅ log ⁡ ( t / k ) f_t(k)=k\cdot\log(t/k) ft(k)=klog(t/k),有两个零点 k = 0 , t k=0,t k=0,t,它在 k ∈ ( 0 , t ) k \in (0, t) k(0,t) 上先增后降,并且当 k ∈ ( t / 2 , t ) k \in (t/2,t) k(t/2,t) 时满足 f t ( k ) > t − k f_t(k) > t-k ft(k)>tk,因此这里需要取两者之间的较小值。Merkle Proof 似乎也应当有类似的优化?

在这里插入图片描述

CROSS

我们回顾一下,[CVE10] 是一种基于 qSD 问题的 Shamir’s PKP 框架 ZKP 协议,

在这里插入图片描述

最近 [BBP+24] 提出了受限的 qSD 问题(R-SD in NPC),提高了错误重量 w w w 的大小,

  1. 在安全强度上,R-SD 问题比 qSD 更难,因此可以降低参数规模
  2. 在通信开销上,R-SD 问题可以选取 full weight 错误向量,从而省略置换 Σ ∈ S n \Sigma \in S_n ΣSn

因为 R-SD 问题是一组(关于有限域上加法的)线性方程组 H e = s He = s He=s,其中 e ∈ E n ⊆ F q n e \in \mathbb E^n \subseteq \mathbb F_q^n eEnFqn,所以限制到乘法子群 G ⊆ E n G \subseteq \mathbb E^n GEn 基本不影响其安全强度。利用群 G G G 的代数结构和同构关系,可以进一步降低其表示的规模。

ZKP based on R-SDP(G)

CROSS(Codes and Restricted Objects Signature Scheme)是基于 R-SDP(G) 问题的 CVE 方案变体,做了如下的优化:

  1. 不再采样 σ ∈ G : = ⟨ g 1 , ⋯   , g m ⟩ ⊆ \sigma \in G := \langle g_1,\cdots,g_m\rangle \subseteq σG:=g1,,gm 然后计算 σ ( u ) , σ ( s ) \sigma(u),\sigma(s) σ(u),σ(s),而是直接根据 S e e d Seed Seed 采样 s ′ ∈ G s'\in G sG u ′ ∈ F p n u' \in \mathbb F_p^n uFpn,然后计算出满足 s = σ ( s ′ ) s=\sigma(s') s=σ(s) 的映射 σ ∈ G \sigma \in G σG,以及 y = u ′ + β s ′ y = u'+\beta s' y=u+βs,其中 β ∈ F p ∗ \beta \in \mathbb F_p^* βFp 是第一个挑战。因为 G G G 的传递群(transitive group)同构于 G G G 本身,获得的 σ \sigma σ 是均匀随机的。
  2. 当第二个挑战 b = 1 b=1 b=1 时,仅发送种子 S e e d Seed Seed 即可重构 u ′ u' u s ′ s' s 从而 y y y
  3. 还可以将 y y y 推迟发送,先做承诺 d = H a s h ( y ) d = Hash(y) d=Hash(y);假如 b = 0 b=0 b=0,仍需传输 y y y 本身;但是如果 b = 0 b=0 b=0,那么可以省略 y y y 的传输。

CROSS 使用的基础 ID 协议如下:

在这里插入图片描述

该协议满足:Completeness,Zero Knowledge,以及 ( 2 , 2 ) (2,2) (2,2)-out-of- ( p − 1 , 2 ) (p − 1, 2) (p1,2) special soundness,满足 s.e. = p / ( p − 1 ) p/(p-1) p/(p1)

这里重点看一下 soundness 的证明过程:敌手 P ∗ P^* P 试图让 V V V 相信其具有 P P P 身份,存在如下的两种策略(构造性的,但是可证明最优,即给出了 s.e. 的上界),

  1. P ∗ P^* P 随机生成 S e e d Seed Seed β ∗ ∈ F p ∗ \beta^* \in \mathbb F_p^* βFp,继续做出 u ′ u' u e ′ e' e
  2. P ∗ P^* P 随机生成 σ ∈ G \sigma \in G σG(不知道 e ∈ G e \in G eG),计算出 y ∗ = u ′ + β ∗ e ′ y^*=u'+\beta^*e' y=u+βe
  3. P ∗ P^* P 计算 s ~ = σ ( y ∗ ) H T − β ∗ s \tilde s=\sigma(y^*)H^T - \beta^*s s~=σ(y)HTβs,然后发送 c 0 = H a s h ( s ~ , σ ) c_0=Hash(\tilde s,\sigma) c0=Hash(s~,σ) c 1 = H a s h ( u ′ , e ′ ) c_1=Hash(u',e') c1=Hash(u,e) V ( ρ ) V(\rho) V(ρ),这里 ρ \rho ρ 是敌手 P ∗ P^* P 为黑盒子程序 V V V 选取的随机带
  • Strategy 0:对于 b = 0 b=0 b=0 总是成功,并且对于 b = 1 b=1 b=1 猜测 β \beta β 使之有可能成功,
    1. P ∗ P^* P 求解出 e ~ \tilde e e~ 使之满足 e ~ H T = s \tilde e H^T=s e~HT=s(不限制 e ~ \tilde e e~ 范围,简单高斯消元,然后随机采样),以及 u ~ \tilde u u~ 使之满足 u ~ H T = s ~ \tilde uH^T=\tilde s u~HT=s~(同理,随机采样)
    2. 收到 V V V 的挑战 β \beta β
      • 假如 β = β ∗ \beta = \beta^* β=β,那么发送 h = H a s h ( y ∗ ) h=Hash(y^*) h=Hash(y),再根据 b ∈ { 0 , 1 } b \in \{0,1\} b{0,1} 决定发送 ( y ∗ , σ ) (y^*,\sigma) (y,σ) 或者 S e e d Seed Seed,两者都必定被接受;
      • 假如 β ≠ β ∗ \beta \neq \beta^* β=β,那么 P ∗ P^* P 计算 y = σ − 1 ( u ~ ) + β σ − 1 ( e ~ ) y=\sigma^{-1}(\tilde u)+\beta\sigma^{-1}(\tilde e) y=σ1(u~)+βσ1(e~),然后发送 h = H a s h ( y ) h=Hash(y) h=Hash(y),对于 b = 0 b=0 b=0 该副本被接受(因为 σ ( y ) H T − β s = s ~ \sigma(y)H^T-\beta s = \tilde s σ(y)HTβs=s~),但对于 b = 1 b=1 b=1 基本无法成功(得让 S e e d ∗ Seed^* Seed 生成 h h h 的原像/第二原像)
    3. 该策略的成功率是 1 p − 1 + p − 2 p − 1 ⋅ 1 2 = p 2 ( p − 1 ) \frac{1}{p-1} + \frac{p-2}{p-1}\cdot \frac{1}{2}= \frac{p}{2(p-1)} p11+p1p221=2(p1)p
  • Strategy 1:对于 b = 1 b=1 b=1 总是成功,并且对于 b = 0 b=0 b=0 猜测 β \beta β 使之有可能成功,
    1. 收到 V V V 的挑战 β \beta β P ∗ P^* P 直接计算 y = u ′ + e ′ β y=u'+e'\beta y=u+eβ,并发送 h = H a s h ( y ) h=Hash(y) h=Hash(y)
      • 假如 b = 1 b=1 b=1,那么发送 S e e d Seed Seed,此时必定被接受;
      • 假如 b = 0 b=0 b=0,则仅当 β = β ∗ \beta=\beta^* β=β 时才被接受(此时有 σ ( y ) H T − β s = s ~ \sigma(y)H^T-\beta s = \tilde s σ(y)HTβs=s~),否则无法成功(不然 σ ( e ′ ) H T = s \sigma(e')H^T=s σ(e)HT=s 就破解了 R-SDP)
    2. 该策略的成功率是 1 2 + 1 2 ⋅ 1 p − 1 = p 2 ( p − 1 ) \frac{1}{2} + \frac{1}{2}\cdot\frac{1}{p-1}= \frac{p}{2(p-1)} 21+21p11=2(p1)p
  1. 这两个策略的公共步骤是随机的,Strategy 0 的专属步骤也是随机的,但是 Strategy 1 的专属步骤却是确定性的(在执行了公共步骤的条件下);两者的成功率都只依赖公共步骤的随机性(确切地说,就是 ρ \rho ρ

现在,假设对于固定的 c 0 = H a s h ( s ~ , σ ) c_0=Hash(\tilde s,\sigma) c0=Hash(s~,σ) c 1 = H a s h ( u ′ , e ′ ) c_1=Hash(u',e') c1=Hash(u,e),存在四个可接受副本,具有以下形式(即使用 ( 2 , 2 ) (2,2) (2,2)-out-of- ( p − 1 , 2 ) (p-1, 2) (p1,2) 的挑战):
T 1 : = ( c 0 , c 1 , β , h , b 0 , y , σ ) , T 2 : = ( c 0 , c 1 , β , h , b 1 , S e e d ) T 3 : = ( c 0 , c 1 , β ∗ , h ∗ , b 0 , y ∗ , σ ∗ ) , T 4 : = ( c 0 , c 1 , β ∗ , h ∗ , b 1 , S e e d ∗ ) \begin{aligned} T_1 &:= (c_0,c_1,\beta,h,b_0,y,\sigma), &T_2 &:= (c_0,c_1,\beta,h,b_1,Seed)\\ T_3 &:= (c_0,c_1,\beta^*,h^*,b_0,y^*,\sigma^*), &T_4 &:= (c_0,c_1,\beta^*,h^*,b_1,Seed^*)\\ \end{aligned} T1T3:=(c0,c1,β,h,b0,y,σ),:=(c0,c1,β,h,b0,y,σ),T2T4:=(c0,c1,β,h,b1,Seed):=(c0,c1,β,h,b1,Seed)
其中 β ≠ β ∗ ∈ F p ∗ \beta \neq \beta^* \in \mathbb F_p^* β=βFp 以及 b 0 = 0 , b 1 = 1 b_0=0,b_1=1 b0=0,b1=1

那么,可以构造知识提取器,

  1. 首先根据 T 2 T_2 T2 T 4 T_4 T4,生成 ( u ′ , e ′ ) (u',e') (u,e) ( u ′ ∗ , e ′ ∗ ) (u'^*, e'^*) (u,e),构造出 y ′ y' y y ′ ∗ y'^* y,满足 H a s h ( u ′ , e ′ ) = H a s h ( u ′ ∗ , e ′ ∗ ) = c 1 Hash(u',e') = Hash(u'^*, e'^*) = c_1 Hash(u,e)=Hash(u,e)=c1,由于抗碰撞性,可得到 y − y ∗ = ( β − β ∗ ) e ′ y-y^*=(\beta-\beta^*)e' yy=(ββ)e
  2. 其次根据 T 1 T_1 T1 T 3 T_3 T3,满足 H a s h ( σ ( y ) H T − β s , σ ) = H a s h ( σ ( y ∗ ) H T − β ∗ s , σ ∗ ) Hash(\sigma(y)H^T-\beta s,\sigma) = Hash(\sigma(y^*)H^T-\beta^* s,\sigma^*) Hash(σ(y)HTβs,σ)=Hash(σ(y)HTβs,σ),由于抗碰撞性,可得到 σ ( y − y ∗ ) H T = ( β − β ∗ ) s \sigma(y-y^*)H^T = (\beta-\beta^*)s σ(yy)HT=(ββ)s
  3. 最终有 σ ( e ′ ) H T = s \sigma(e')H^T=s σ(e)HT=s,这就解出了秘密 e : = σ ( e ′ ) e := \sigma(e') e:=σ(e)

因此 s.e. 严格小于 ( p − 1 ) + 2 2 ( p − 1 ) \frac{(p-1)+2}{2(p-1)} 2(p1)(p1)+2(否则敌手就能够给出上述形式的四个可接受副本),这说明 s.e. 恰好就是 p 2 ( p − 1 ) \frac{p}{2(p-1)} 2(p1)p

人们将第一个挑战有 q q q 种取值、第二个挑战有 2 2 2 种取值的 5-pass 协议称为 q 2 q2 q2-Identification scheme。如果它满足 ( 2 , 2 ) (2,2) (2,2)-out-of- ( q , 2 ) (q, 2) (q,2)-special soundness,那么其 s.e. 不超过 q + 1 2 q \frac{q+1}{2q} 2qq+1

SUF-CMA SIG

将上述的 q 2 q2 q2-Identification scheme 并行重复 t t t 次,采用 Fiat-Shamir transformation 得到 SUF-CMA SIG 方案。令 T ( i ) : = ( C o m ( i ) , C h 1 ( i ) , R s p 1 ( i ) , C h 2 ( i ) , R s p 2 ( i ) ) T^{(i)} := (Com^{(i)}, Ch_1^{(i)}, Rsp_1^{(i)}, Ch_2^{(i)}, Rsp_2^{(i)}) T(i):=(Com(i),Ch1(i),Rsp1(i),Ch2(i),Rsp2(i)) 表示 t t t 个副本,将 Hash 建模为 RO,将挑战设置为当前视图的散列
C h 1 = H a s h ( M s g , C o m ) C H 2 = H a s h ( M s g , C o m , C h 1 , R s p 1 ) \begin{aligned} Ch_1 &= Hash(Msg, Com)\\ CH_2 &= Hash(Msg, Com, Ch_1,Rsp_1) \end{aligned} Ch1CH2=Hash(Msg,Com)=Hash(Msg,Com,Ch1,Rsp1)
其中的 C o m , C h 1 , R s p 1 , C h 2 , R s p 2 Com, Ch_1, Rsp_1,Ch_2,Rsp_2 Com,Ch1,Rsp1,Ch2,Rsp2 视为长度 t t t 的向量。

承诺 C o m Com Com 通常是对长度 λ \lambda λ 比特的种子做的,而承诺方案一般直接使用具有单向、抗碰撞的 Hash 函数来实例化,其为确定性承诺方案。但是根据 [CE24],存在一种利用碰撞的攻击,以 O ( 2 λ / 2 ) O(2^{\lambda/2}) O(2λ/2) 时间打破恢复出私钥(自然打破 SUF-CMA 安全性)

采取随机化承诺方案,即在每次承诺 C o m ( i ) Com^{(i)} Com(i) 时都加入 λ \lambda λ 比特的随机带,可以避免该问题,然而这导致通信量增大。[CE24] 提出了 salt + index construction,对于多个承诺只需加入单个 2 λ 2\lambda 2λ 比特的盐(视为共享随机带),并且添加索引,承诺形如
C o m ( i ) = H a s h ( x ( i ) ∥ S a l t ∥ i ) Com^{(i)} = Hash(x^{(i)}\|Salt\|i) Com(i)=Hash(x(i)Salti)
最终的签名值设置为 S i g n = ( S a l t , C o m , R s p 1 , R s p 2 ) Sign = (Salt, Com, Rsp_1, Rsp_2) Sign=(Salt,Com,Rsp1,Rsp2)

为了减小通信开销,继续做如下优化:CROSS-ID 的副本形如 ( c 0 ( i ) , c 1 ( i ) , β ( i ) , h ( i ) , b ( i ) , f ( i ) ) (c_0^{(i)},c_1^{(i)},\beta^{(i)},h^{(i)},b^{(i)},f^{(i)}) (c0(i),c1(i),β(i),h(i),b(i),f(i))

  1. 因为 b ( i ) = 0 b^{(i)}=0 b(i)=0 时需要发送 ( y ( i ) , σ ( i ) ) (y^{(i)},\sigma^{(i)}) (y(i),σ(i)),而 b ( i ) = 1 b^{(i)}=1 b(i)=1 时仅需发送 S e e d ( i ) Seed^{(i)} Seed(i),假如选取固定重量 w < t w < t w<t 使之取 1 1 1 w w w 尽可能接近 t t t,那么就可以减小签名;注意这会影响 forgery attacks 的复杂度,因此需要增大轮数 t t t
  2. 使用 PRNG Tree 产生种子 S e e d ( i ) Seed^{(i)} Seed(i),传输 b ( i ) = 1 b^{(i)}=1 b(i)=1 的那些叶子对应 Seed Path;当 w w w 增大时,这部分的规模也会降低
  3. 只有少量的 c 0 ( i ) c_0^{(i)} c0(i) 可被重构,使用 Merkle Tree 承诺 c 0 ( i ) c_0^{(i)} c0(i),树根为 c 0 c_0 c0;发送 b ( i ) = 1 b^{(i)}=1 b(i)=1 的那些 c 0 ( i ) c_0^{(i)} c0(i) 对应的 Merkle Proof,当 w w w 增大该部分变小
  4. 因为大多数 c 1 ( i ) c_1^{(i)} c1(i) 可被重构,将 c 1 ( i ) c_1^{(i)} c1(i) 合并承诺,计算 c 1 = H a s h ( c 1 ( 1 ) , ⋯   , c 1 ( t ) ) c_1 = Hash(c_1^{(1)},\cdots,c_1^{(t)}) c1=Hash(c1(1),,c1(t));仅需传输 b ( i ) = 0 b^{(i)}=0 b(i)=0 的那些 c 1 ( i ) c_1^{(i)} c1(i),当 w w w 增大该部分变小
  5. y ( i ) y^{(i)} y(i) 合并承诺,计算 h = H a s h ( y ( 1 ) , ⋯   , y ( t ) ) h=Hash(y^{(1)},\cdots,y^{(t)}) h=Hash(y(1),,y(t));无论 b ( i ) b^{(i)} b(i) 如何取值, V V V 总可以得到全部的 y ( i ) y^{(i)} y(i)(直接传输、可重构)

CROSS 的签名算法描述如下:

在这里插入图片描述

CROSS 的验签算法描述如下:

在这里插入图片描述

公钥和签名大小为:

在这里插入图片描述

因为 t t t 个副本中有 t / 2 < w < t t/2 < w < t t/2<w<t 个位置是 b ( i ) = 1 b^{(i)}=1 b(i)=1,这会使得伪造更加容易。考虑如下的伪造算法,

  1. 采样 S a l t Salt Salt M S e e d MSeed MSeed(确定性的签名算法),猜测各个 β ( i ) \beta^{(i)} β(i) b ( i ) b^{(i)} b(i) 的取值,记为 β ~ ( i ) , b ~ ( i ) \tilde \beta^{(i)}, \tilde b^{(i)} β~(i),b~(i)
  2. 对于各个副本执行 Strategy 0/1 的公共步骤,制作出 ( C o m ( i ) , C h 1 ( i ) ) (Com^{(i)}, Ch_1^{(i)}) (Com(i),Ch1(i))
  3. 假如位置 S ⊆ [ t ] S \subseteq [t] S[t] 上的 β ~ ( i ) \tilde \beta^{(i)} β~(i) 猜对了,其中 ∣ S ∣ ≥ t ∗ |S| \ge t^* St,那么继续执行如下步骤;否则回到 Step 1 重新猜测
  4. 对于 i ∈ S i \in S iS,直接根据 CROSS-ID 并做出副本的 y , h y,h y,h 部分(必定被接受)
  5. 对于 i ∉ S i \not\in S iS 的副本,
    • 如果 b ~ ( i ) = 0 \tilde b^{(i)}=0 b~(i)=0,那么运行 Strategy 0 做出必定被接受的副本(如果猜对了 b ( i ) b^{(i)} b(i)
    • 如果 b ~ ( i ) = 1 \tilde b^{(i)}=1 b~(i)=1,那么运行 Strategy 1 做出必定被接受的副本(如果猜对了 b ( i ) b^{(i)} b(i)
  6. 根据 Step 4, 5 构造出的 R s p 1 ( i ) Rsp_1^{(i)} Rsp1(i),生成 C h 2 ( i ) Ch_2^{(i)} Ch2(i)
  7. 假如 i ∉ S i \not\in S iS 位置的 b ~ ( i ) \tilde b^{(i)} b~(i) 全都猜对了,那么就给出了一个伪造签名;否则回到 Step 5 重新生成 R s p 1 ( i ) Rsp_1^{(i)} Rsp1(i)(随机的 Strategy 0 专属步骤,确定的 Strategy 1 专属步骤)

上述伪造算法包含串行的两个猜测阶段,第一阶段使得足够多位置的 β ( i ) \beta^{(i)} β(i) 猜对,第二阶段使得其余位置的 b ( i ) b^{(i)} b(i) 猜对,期望的计算复杂度为:

在这里插入图片描述

这被用来确定 t t t w w w 的取值(但毕竟是构造性算法,给出的是安全强度上界;该算法是否有最优性?虽然 Strategy 0/1 确是最优的)

Parameter Set

CROSS 采取枚举方法来生成参数集:由于 R-SDP 的困难性依赖 E \mathbb E E 的结构,将 F p \mathbb F_p Fp 设置为素域,并让 E \mathbb E E 是素数阶 z z z 的乘法子群,

  1. 首先枚举素数 17 ≤ p ≤ 2477 17 \le p \le 2477 17p2477,素数 z ∣ ( p − 1 ) z \mid (p-1) z(p1),还有码率 R ∈ [ 0 , 3 , 0.7 ] R \in [0,3,0.7] R[0,3,0.7]
  2. 采用 full weight 的错误向量,根据 R-SDP 的安全强度评估脚本(国内连不上)找出最小的 n n n 以及最优的 m m m,使得安全强度至少 λ \lambda λ 比特
  3. 然后枚举 w w w,计算出最小的 t ≥ λ t \ge \lambda tλ,使得伪造算法的计算复杂度超过 2 λ 2^\lambda 2λ,并且限制 t < 1100 t < 1100 t<1100 以确保计算足够高效
  4. 最后根据签名大小和轮数 t t t,挑出某些合适的参数集

对于 R-SDP,他们固定选取 p = 127 p=127 p=127 以及 z = 7 z=7 z=7(都是 Mersenne primes),使得 F p , F z \mathbb F_p, \mathbb F_z Fp,Fz 上的运算可以在 int16 内快速完成。但是 R-SDP(G) 要求 z z z 足够大,否则容易解码,他们固定选取了 p = 509 p=509 p=509 z = 127 z=127 z=127,使得至少后者可以高效计算。

参数集如下:

在这里插入图片描述

ref 实现的性能如下:

在这里插入图片描述

CROSS 的公钥规模比 RSA 更小,是 Dilithium 的二十分之一;签名规模与 SPHINCS+ 接近,是 Dilithium 的 3~11 倍;密钥生成的速度远比 SPHINCS+ 快,比 Dilithium 快 2~6倍;签名的速度远比 SPHINCS+ 快,比 Dilithium 慢 2~30 倍,与 RSA 接近;验签速度接近 SPHINCS+,比 Dilithium 慢 7~35 倍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值