参考文献:
- [vN51] Von Neumann J. Various techniques used in connection with random digits[J]. Applied Math Series, 1951, 12(36-38): 1.
- [GGH97] Goldreich O, Goldwasser S, Halevi S. Public-key cryptosystems from lattice reduction problems[C]//Advances in Cryptology—CRYPTO’97: 17th Annual International Cryptology Conference Santa Barbara, California, USA August 17–21, 1997 Proceedings 17. Springer Berlin Heidelberg, 1997: 112-131.
- [HILL99] Håstad J, Impagliazzo R, Levin L A, et al. A pseudorandom generator from any one-way function[J]. SIAM Journal on Computing, 1999, 28(4): 1364-1396.
- [PS00] Pointcheval D, Stern J. Security arguments for digital signatures and blind signatures[J]. Journal of cryptology, 2000, 13: 361-396.
- [BN06] Bellare M, Neven G. Multi-signatures in the plain public-key model and a general forking lemma[C]//Proceedings of the 13th ACM conference on Computer and communications security. 2006: 390-399.
- [GPV08] Gentry C, Peikert C, Vaikuntanathan V. Trapdoors for hard lattices and new cryptographic constructions[C]//Proceedings of the fortieth annual ACM symposium on Theory of computing. 2008: 197-206.
- [LM08] Lyubashevsky V, Micciancio D. Asymptotically efficient lattice-based digital signatures[C]//Theory of Cryptography: Fifth Theory of Cryptography Conference, TCC 2008, New York, USA, March 19-21, 2008. Proceedings 5. Springer Berlin Heidelberg, 2008: 37-54.
- [Lyu09] Lyubashevsky V. Fiat-Shamir with aborts: Applications to lattice and factoring-based signatures[C]//Advances in Cryptology–ASIACRYPT 2009: 15th International Conference on the Theory and Application of Cryptology and Information Security, Tokyo, Japan, December 6-10, 2009. Proceedings 15. Springer Berlin Heidelberg, 2009: 598-616.
- [Lyu12] Lyubashevsky V. Lattice signatures without trapdoors[C]//Advances in Cryptology–EUROCRYPT 2012: 31st Annual International Conference on the Theory and Applications of Cryptographic Techniques, Cambridge, UK, April 15-19, 2012. Proceedings 31. Springer Berlin Heidelberg, 2012: 738-755.
- [GLP12] Güneysu T, Lyubashevsky V, Pöppelmann T. Practical lattice-based cryptography: A signature scheme for embedded systems[C]//Cryptographic Hardware and Embedded Systems–CHES 2012: 14th International Workshop, Leuven, Belgium, September 9-12, 2012. Proceedings 14. Springer Berlin Heidelberg, 2012: 530-547.
- [BG14] Bai S, Galbraith S D. An improved compression technique for signatures based on learning with errors[C]//Topics in Cryptology–CT-RSA 2014: The Cryptographer’s Track at the RSA Conference 2014, San Francisco, CA, USA, February 25-28, 2014. Proceedings. Springer International Publishing, 2014: 28-47.
- [SWIFFT] Lyubashevsky V, Micciancio D, Peikert C, et al. SWIFFT: A modest proposal for FFT hashing[C]//Fast Software Encryption: 15th International Workshop, FSE 2008, Lausanne, Switzerland, February 10-13, 2008, Revised Selected Papers 15. Springer Berlin Heidelberg, 2008: 54-72.
- [BLISS] Ducas L, Durmus A, Lepoint T, et al. Lattice signatures and bimodal Gaussians[C]//Advances in Cryptology–CRYPTO 2013: 33rd Annual Cryptology Conference, Santa Barbara, CA, USA, August 18-22, 2013. Proceedings, Part I. Springer Berlin Heidelberg, 2013: 40-56.
- [Dilithium] Lyubashevsky V, Ducas L, Kiltz E, et al. Crystals-dilithium[J]. Algorithm Specifications and Supporting Documentation, 2020.
简介
Fiat-Shamir 范式:令 Π \Pi Π 是一个 Sigma 协议( 3 3 3-round public-coin ZK proof/argument),证明者和验证者交互的副本形如 ( a , e , z ) (a,e,z) (a,e,z),其中 a a a 是承诺, e e e 是公开掷币的一系列挑战(使得 soundness error 可忽略), z z z 是对这些挑战的回应,证明者将证据 w w w 作为私钥。我们用 H H H 表示随机神谕(Random Oracle)。给定消息 m m m,签名者随机生成 a a a,询问 RO 获得挑战 e = H ( a , m ) e=H(a,m) e=H(a,m),然后利用私钥 s s s 做出恰当的响应 z z z,最后以副本 ( a , e , z ) (a,e,z) (a,e,z) 作为签名值。验证者检验 e e e 是否等于 H ( a , m ) H(a,m) H(a,m),然后验证 ( a , e , z ) (a,e,z) (a,e,z) 是否是一个可接受副本。
在早期格签名中的一个关键问题是,如何使得签名值不过多地泄露私钥信息。最早 [GGH97] 提出了一个基于 SIS 问题的 Hash-and-Sign 范式签名方案,但是它的签名值会泄露私钥的形状信息。[GPV08] 给出的解决思路是,让签名值与私钥的概率分布相互独立。对于 Fiat-Shamir 范式的格签名也有类似的问题,[Lyu09] 仿照 Schnorr 协议将分立的多个挑战合并为一个多项式 c c c,使用一个窄区间 [ − B , B ] [-B,B] [−B,B] 上均匀采样的掩码 y y y 来隐藏证据,签名值为 z = y + s c z=y+sc z=y+sc。但是当 ∥ z − s c ∥ ≥ B \|z-sc\| \ge B ∥z−sc∥≥B 时会泄露 y y y 的信息,进而泄露私钥 s s s 的信息,[Lyu09] 通过 abort 技术丢弃那些会泄露私钥信息的签名值,使得签名值的分布成为窄区间上的均匀分布(与私钥相互独立)。在 [Lyu12] 中使用拒绝采样技术,进一步推广到从任意分布 g g g 中采样,然后按照概率 min ( f ( x ) / ( M g ( x ) ) , 1 ) \min\left(f(x) / (Mg(x)), 1\right) min(f(x)/(Mg(x)),1) 拒绝样本,这使得最终的输出分布与 f f f 统计接近,其中 f f f 不包含私钥的信息。[Lyu12] 按照中心高斯分布采样 y y y,则签名值 z = y + s c z=y+sc z=y+sc 服从一个偏移为 s c sc sc 的高斯分布,使得 M M M 在截尾区间内满足 M g ( x ) ≥ f ( x ) Mg(x) \ge f(x) Mg(x)≥f(x)。[Lyu12] 进一步指出,可以把签名方案建立在 LWE 问题上,这将降低公钥的规模。
利用拒绝采样技术可以构造出可证明安全的格签名方案,但是实用化的签名算法还对计算效率和载荷规模有着严格要求。提升格密码计算效率的一个常规手段,就是利用环结构以及 NTT 技术使得矩阵-向量乘法的计算复杂度从 O ( n 2 ) O(n^2) O(n2) 降低到 O ( n log n ) O(n \log n) O(nlogn)。然而,[Lyu12] 的格签名除了矩阵运算的开销,拒绝采样会导致签名程序反复执行直到生成一个合适的签名值,如果常数 M M M 过大那么将会造成算力的较大浪费。[BLISS] 提出可以使用一个随机符号位 b b b,那么签名值 z = y + ( − 1 ) b s c z=y+(-1)^bsc z=y+(−1)bsc 服从双峰高斯,这可以降低 M M M 的大小,使得签名速度更快、签名值的规模更小。
为了继续降低载荷大小,人们尝试了多种压缩方法。[GLP12] 研究了基于 LWE 的签名方案,其签名值形如 ( z 1 = y 1 + s c , z 2 = y 2 + e c ) (z_1=y_1+sc, z_2=y_2+ec) (z1=y1+sc,z2=y2+ec),前者是对私钥的 ZKPoK,后者是对噪声的 ZKPoK。[GLP12] 提出可以将数字划分为高阶比特和低阶比特两部分,在不影响进位的情况下可以简单丢弃低阶比特,这可以使得签名值第二分量的规模大幅减小。后续 [BG14] 发现对于噪声 e e e 的知识证明可以被隐含在对于私钥 s s s 的证明中,因此签名值的第二分量可以直接被丢弃。[Dilithium] 采用了更加激进的压缩策略,它将公钥也使用类似 [GLP12] 的技术进行了压缩,但是这导致验签时会出现进位错误,因此需要在签名值中引入额外的进位提示信息,虽然签名值变大了数百字节,但是公钥大小缩减了 约 2.5 2.5 2.5 倍,总的载荷规模是下降的。
拒绝采样技术
Aborting Technique
基于格的哈希函数可以被用于构造可证明安全的一次签名方案 [LM08] [SWIFFT],然后根据标准技术,使用 PRF 就可将它转化为树状无状态签名方案。它的复杂度仅为 O ( n log 2 n ) O(n\log^2 n) O(nlog2n),这在理论上很有吸引力,然而在实际中有时人们并不希望使用树状结构。[GPV08] 提出的 PSF 在各种优化技术加持下也可以做到 O ( n log n ) O(n \log n) O(nlogn) 级别的复杂度,然而其中所需的离散高斯采样的速度很慢,并且对于代码实现的要求极高,否则容易出现漏洞。
[Lyu09] 提出了 Fiat-Shamir 范式的可证明安全格签名方案。首先我们构造一个安全的身份鉴别协议(ID),然后利用 RO 公开掷硬币作为验证者的随机挑战,将交互式协议转化为非交互式的签名方案。一般地我们令 ID 协议是一个 3 3 3-round public-coin WI PoK with negligible soundness error,最知名的一个 ID 协议就是 Schnorr 协议:考虑 q q q 阶循环群 ⟨ g ⟩ ⊆ Z p \langle g \rangle \subseteq \mathbb Z_p ⟨g⟩⊆Zp,私钥为 s s s,公钥为 g s g^s gs。副本形如 ( a = g y ( m o d p ) , c ∈ Z q , z = y + c ⋅ s ( m o d q ) ) (a=g^y \pmod p, c \in \mathbb Z_q, z=y+c \cdot s \pmod q) (a=gy(modp),c∈Zq,z=y+c⋅s(modq)),验证者检验 a ⋅ ( g s ) c = g z ( m o d p ) a \cdot (g^s)^{c} = g^z \pmod p a⋅(gs)c=gz(modp) 是否成立。虽然在标准假设下没有证明 Schnorr 协议是安全的,但它至今也没有受到过较严重攻击。Schnorr 协议将分立的多比特挑战合并为单个挑战 c ∈ Z q c \in \mathbb Z_q c∈Zq,仅仅一次挑战就达成了 negl. s.e. 的目标,因此副本十分的紧凑。
然而,直接把 Schnorr 协议移植到格上还有一些阻碍。首先是 Schnorr 协议工作在有限群上,然而格是无限群,这导致在格上生成均匀的随机掩码 y y y 成为不可能的任务。一种解决办法是,在一个远比 R = ∥ s c ∥ R=\|sc\| R=∥sc∥ 大得多的有限子集 [ − k R , k R ] [-kR,kR] [−kR,kR] 中随机选取 y y y,这使得 z = y + c s z=y+cs z=y+cs 以极大概率落在 [ − ( k − 1 ) R , ( k − 1 ) R ] [-(k-1)R,(k-1)R] [−(k−1)R,(k−1)R] 内部,此时的 y = z − c s y=z-cs y=z−cs 总是会落在 [ − k R , k R ] [-kR,kR] [−kR,kR] 内,由于 y y y 是其上均匀的,从而没法确定秘密 s s s 的任何信息。但是这么选取的 S S S 范围过大,这导致直接伪造 z z z 变得更加容易(很大近似因子的 SIS 问题)。[Lyu09] 的解决办法是,在一个很窄的范围内选取 y y y,例如 [ − 2 R , 2 R ] [-2R,2R] [−2R,2R],计算 z = y + c s z=y+cs z=y+cs 之后判断它是否落在 [ − R , R ] [-R,R] [−R,R] 内部。如果越界了,比如 z ∈ [ R , 2 R ] z \in [R,2R] z∈[R,2R],那么满足 y = z − c s ≥ 2 R y=z-cs \ge 2R y=z−cs≥2R 的那些候选 s s s 就可以被排除掉,这泄露了秘密的部分信息。因此越界的这些 z z z 都应该被丢弃,然后重复签名过程直到满足此条件。
首先,我们构造一个基于 Ring-SIS 的加法同态 Hash 函数簇。简记 R : = Z p [ x ] / ( x n + 1 ) \mathcal R := \mathbb Z_p[x]/(x^n+1) R:=Zp[x]/(xn+1),令 D : = { y : ∥ y ∥ ≤ d } ⊆ R \mathcal D:=\{y:\|y\| \le d\} \subseteq \mathcal R D:={
y:∥y∥≤d}⊆R 是取值范围很窄的子集。定义一族函数
H ( R , D , m ) = { h a ( y ) : = a T y , ∀ y ∈ D m } a ∈ R m \mathcal H(\mathcal R,\mathcal D,m) = \{h_a(y):=a^Ty,\,\, \forall y \in \mathcal D^m\}_{a \in \mathcal R^m} H(R,D,m)={
ha(y):=aTy,∀y∈Dm}a∈Rm
容易看出,对于 ∀ y , y ′ ∈ R m , ∀ c ∈ R \forall y,y' \in R^m, \forall c \in \mathcal R ∀y,y′∈Rm,∀c∈R,这个它是加法同态的, h ( y + y ′ ) = h ( y ) + h ( y ′ ) h(y+y') = h(y)+h(y') h(y+y′)=h(y)+h(y′) 以及 h ( y c ) = h ( y ) c h(yc) = h(y)c h(yc)=h(y)c。并且在近似 SVP 假设下,它是个 CRHF(抗原像、抗碰撞)。接下来 [Lyu09] 使用这个 Hash 函数作为承诺方案,来构造类似于 Schnorr 协议的 ID 协议。
令 n n n 是二的幂次, m m m 是任意整数, p p p 是充分大的素数,令 R : = Z p [ x ] / ( x n + 1 ) R := \mathbb Z_p[x]/(x^n+1) R:=Zp[x]/(xn+1)。假设挑战 c c c 是重量 κ \kappa κ 的二元挑战,满足 2 κ ( n κ ) ≥ 2 160 2^\kappa{n \choose \kappa} \ge 2^{160} 2κ(κn)≥2160 使得熵足够大。令 σ \sigma σ 是任意的较小整数,它约束秘密 s s s 的规模,那么 s c sc sc 的大小约束在较小范围 σ κ \sigma\kappa σκ 以内。一些重要参数的取值范围如下:
D c : = { c ∈ R : ∥ c ∥ 1 ≤ κ } ⊆ R D s : = { s ∈ R : ∥ s ∥ ∞ ≤ σ } ⊆ D y D y : = { y ∈ R : ∥ y ∥ ∞ ≤ m n σ κ } ⊆ R D z : = { z ∈ R : ∥ z ∥ ∞ ≤ m n σ κ − σ κ } ⊆ D y \begin{aligned} D_c &:= \{c \in R: \|c\|_1 \le \kappa\} \subseteq R\\ D_s &:= \{s \in R: \|s\|_\infty \le \sigma\}\subseteq D_y\\ D_y &:= \{y \in R: \|y\|_\infty \le mn\sigma\kappa\} \subseteq R\\ D_z &:= \{z \in R: \|z\|_\infty \le mn\sigma\kappa - \sigma\kappa\}\subseteq D_y\\ \end{aligned} DcDsDyDz:={
c∈R:∥c∥1≤κ}⊆R:={
s∈R:∥s∥∞≤σ}⊆Dy:={
y∈R:∥y∥∞≤mnσκ}⊆R:={
z∈R:∥z∥∞≤mnσκ−σκ}⊆Dy
我们令 D = D y , R = R \mathcal D = D_y, \mathcal R = R D=Dy,R=R,那么从 H ( R , D , m ) \mathcal H(\mathcal R,\mathcal D,m) H(R,D,m) 中抽取的 h : D y m → R h: D_y^m \to R h:Dym→R 是一个随机的同态哈希函数。[Lyu09] 构造的 ID 协议为:
- Alice 持有私钥 s ∈ D s m s \in D_s^m s∈Dsm,Bob 持有公钥 S = h ( s ) ∈ R S = h(s) \in R S=h(s)∈R
- Alice 均匀随机采样掩码 y ∈ D y m y \in D_y^m y∈Dym,做承诺 Y = h ( y ) ∈ R Y=h(y) \in R Y=h(y)∈R 发送给 Bob
- Bob 均匀随机采样挑战 c ∈ D c c \in D_c c∈Dc 发送给 Alice
- Alice 计算 z = y + c s ∈ R m z=y+cs \in R^m z=y+cs∈Rm(这里是向量 s ∈ D s m s \in D_s^m s∈Dsm 关于数量 c ∈ D s c \in D_s c∈Ds 的标量积),如果 z ∈ D z m z \in D_z^m z∈Dzm 则发送给 Bob,而当 z ∉ D z m z \notin D_z^m z∈/Dzm 时需要 abort
- Bob 收到 z z z 后首先检验 z ∈ D z m z \in D_z^m z∈Dzm(确保 z z z 是短的),然后检查 h ( z ) ∈ R h(z) \in R h(z)∈R 是否等于 Y + S c ∈ R Y+Sc \in R Y+Sc∈R(这里是数量 S ∈ R S \in R S∈R 和数量 c ∈ D s c \in D_s c∈Ds 的乘积)
对比 D y D_y Dy 和 D z D_z Dz,容易证明 completeness 的概率为 ( 1 − 1 / m n ) m n ≈ 1 / e (1-1/mn)^{mn} \approx 1/e (1−1/mn)mn≈1/e,期望上重复执行 e ≈ 2.718 e \approx 2.718 e≈2.718 次可以完成一次身份鉴别。
与 Schnorr 协议不同(仅有唯一的证据,无法证明安全),[Lyu09] 的协议随机挑选的证据 s ∈ D s s \in D_s s∈Ds,会有多个其他证据使得 S = h ( s ) = h ( s ′ ) S=h(s)=h(s') S=h(s)=h(s′)(除了可忽略的概率),其中 s ≠ s ′ ∈ D s s \neq s' \in D_s s=s′∈Ds 都是短向量。我们可以证明它是完美证据不可区分的(Perfect WI):对于同一个副本 ( Y , c , z ) (Y,c,z) (Y,c,z),两个证据 s ≠ s ′ s \neq s' s=s′ 都满足 S = h ( s ) = h ( s ′ ) S=h(s)=h(s') S=h(s)=h(s′),那么由于 z = y + c s = y ′ + c s ′ z=y+cs=y'+cs' z=y+cs=y′+cs′ 且 z ∈ D z m z \in D_z^m z∈Dzm,那么存在 y , y ′ ∈ D y m y,y' \in D_y^m y,y′∈Dym 使得 h ( y ′ ) = h ( y + c ( s − s ′ ) ) = h ( y ) = Y h(y')=h(y+c(s-s'))=h(y)=Y h(y′)=h(y+c(s−s′))=h(y)=Y,且两个掩码 P r [ y ] = P r [ y ′ ] Pr[y]=Pr[y'] Pr[y]=Pr[y′] 是同分布的。
进而我们可以证明这个 ID 协议是主动安全的:如果存在某 PPT 敌手能够在学习之后伪装成 Prover 给出可接受副本,那么对于任意哈希函数 h h h,模拟器随机生成 S = h ( s ) S=h(s) S=h(s) 并为敌手模拟 ID 协议,然后让敌手给出一个可接受副本 ( Y , c , z ) (Y,c,z) (Y,c,z),接着模拟器 rewind 敌手,重新选择随机挑战 c ′ c' c′ 并获得另一个可接受副本 ( Y , c ′ , z ′ ) (Y,c',z') (Y,c′,z′),两者满足 h ( z − s c ) = h ( z ′ ) − S c ′ = h ( z ′ − s c ′ ) h(z-sc)=h(z')-Sc'=h(z'-sc') h(z−sc)=h(z′)−Sc′=h(z′−sc′)。因为是 Perfect WI 的,因此以至少 1 / 2 1/2 1/2 的概率有 z ≠ z ′ z \neq z' z=z′,从而 z − s c ≠ z − s c ′ z-sc \neq z-sc' z−sc=z−sc′ 是 CRHF 的一对碰撞,出现矛盾。
最后,我们并行多个 ID 协议,保持 WI 的同时降低 soundness error。然后在 RO 模型下,利用 Fiat-Shamir heuristic 将这个 ID 协议转化为签名方案。值得注意的是,在签名方案中那些最终 abort 的 ID 协议副本不必发送,并且多个副本只需要同一个挑战 c c c 即可(只要 c , y i c,y_i c,yi 相互独立则 abort 概率相同),以及可使用标准的抗碰撞哈希 H ( Y i ) H(Y_i) H(Yi) 取代同态承诺 Y i Y_i Yi(此时验签等式为 H ( Y i ) = H ( h ( z i ) − S c ) H(Y_i) = H(h(z_i)-Sc) H(Yi)=H(h(zi)−Sc)),上述三种修正可以极大地减小签名值规模。
Rejection Sampling
von Neumann 拒绝采样技术([vN51]):令 f , g f,g f,g 是集合 R R R 上的两个分布,若存在 M ∈ R M \in \mathbb R M∈R 使得 f ( x ) ≤ M g ( x ) , ∀ x ∈ R f(x) \le Mg(x), \forall x \in R f(x)≤Mg(x),∀x∈R,那么按照分布 g g g 采样 z z z,然后以概率 f ( z ) / ( M g ( z ) ) ≤ 1 f(z)/(Mg(z)) \le 1 f(z)/(Mg(z))≤1 输出 z z z,否则重新采样。则输出分布恰好为 f f f,期望的循环次数为 M M M。
[Lyu09] 中,掩码 y y y 从 D y m D_y^m Dym 中均匀采样,可视为半径 r + v r+v r+v 的 m m m 维球体。仅当签名值 z = y + S c z = y+Sc z=y+Sc 落入 D z m D_z^m Dzm 时才输出,可视为半径 r r r 的 m m m 维球体。如果 f f f 是 D z m D_z^m Dzm 上均匀分布, g g g 是 D y m D_y^m Dym 上均匀分布,则需要设置 M = ( r + v ) m / r m M = (r+v)^m/r^m M=(r+v)m/rm 才能使得输出 z z z 的分布恰好是 f f f,并且如果 z ∈ D z m z \in D_z^m z∈Dzm 则为 f ( z ) / ( M g ( z ) ) = 1 f(z)/(Mg(z))=1 f(z)/(Mg(z))=1,如果 z ∉ D z m z \notin D_z^m z∈/Dzm 则为 f ( z ) / ( M g ( z ) ) = 0 f(z)/(Mg(z))=0 f(z)/(Mg(z))=0。然而为了获得较小的 M M M,这需要 r ≥ m v = O ~ ( n 1.5 ) r \ge mv = \tilde O(n^{1.5}) r≥mv=O~(n1.5),导致签名 z z z 的规模过大。
而 [Lyu12] 选取 f , g f,g f,g 都是标准差 σ = O ~ ( v ) \sigma = \tilde O(v) σ=O~(v) 的离散高斯分布,并且选择一个较小的常数 M M M 使得 f ( x ) ≤ M g ( x ) f(x) \le Mg(x) f(x)≤Mg(x) 仅仅对于较短的 x x x 成立(截尾后的区间),此时拒绝概率变成了 min ( f ( z ) / ( M g ( z ) ) , 1 ) \min(f(z)/(Mg(z)), 1) min(f(z)/(Mg(z)),1) 并且输出分布与 f f f 是统计接近的(不再完美了),那么 z z z 的期望长度可缩短为 σ m = O ~ ( n ) \sigma \sqrt m = \tilde O(n) σm=O~(n)。
中心 v v v 标准差 σ \sigma σ 的 m m m 维高斯函数定义为 ρ σ , v m ( x ) : = ( 1 2 π σ 2 ) m exp ( − ∥ x − v ∥ 2 2 σ 2 ) \rho_{\sigma,v}^m(x) := \left(\frac{1}{\sqrt{2\pi \sigma^2}}\right)^m \exp\left(\frac{-\|x-v\|^2}{2\sigma^2}\right) ρσ,vm(x):=(2πσ21)mexp(2σ2−∥x−v∥2),对应的离散高斯分布为 D σ , v m ( x ) = ρ σ , v m ( x ) / ρ σ , v m ( Z m ) D_{\sigma,v}^m(x)=\rho_{\sigma,v}^m(x)/\rho_{\sigma,v}^m(\mathbb Z^m) Dσ,vm(x)=ρσ,vm(x)/ρσ,vm(Zm)。[Lyu12] 证明一个关于离散高斯尾部的重要不等式:对于任意的 v ∈ R m v \in \mathbb R^m v∈Rm 和任意的 σ , r > 0 \sigma,r>0 σ,r>0,都有
P r [ ∣ ⟨ z , v ⟩ ∣ > r : z ← D σ m ] ≤ 2 exp ( − r 2 2 ∥ v ∥ 2 σ 2 ) Pr\left[|\langle z, v \rangle|>r: z \leftarrow D_\sigma^m\right] \le 2\exp\left(\frac{-r^2}{2\|v\|^2\sigma^2}\right) Pr[∣⟨z,v⟩∣>r:z←Dσm]≤2exp(2∥v∥2σ2−r2)
进而可以推出:
- 对于任意的 k > 0 k>0 k>0,一维中心离散高斯分布满足 P r [ ∣ z ∣ > k σ : z ← D σ ] ≤ 2 exp ( − k 2 / 2 ) Pr[|z| > k\sigma: z \leftarrow D_\sigma] \le 2\exp(-k^2/2) Pr[∣z∣>kσ:z←Dσ]≤2exp(−k2/2)
- 对于任意的 z ∈ Z m z \in \mathbb Z^m z∈Zm 以及 σ ≥ 3 / 2 π \sigma \ge 3/\sqrt{2\pi} σ≥3/2π,密度函数满足 D σ m ( z ) ≤ 2 − m D_\sigma^m(z) \le 2^{-m} Dσm(z)≤2−m
- 对于任意的 k > 1 k>1 k>1,高斯尾部的概率为 P r [ ∥ z ∥ > k σ m : z ← D σ m ] < k m exp ( ( 1 − k 2 ) m / 2 ) Pr[\|z\|>k\sigma\sqrt m: z \leftarrow D_\sigma^m] < k^m\exp\left((1-k^2)m/2\right) Pr[∥z∥>kσm:z←Dσm]<kmexp((1−k2)m/2)
- 对于任意的 v , z ∈ Z m v,z \in \mathbb Z^m v,z∈Zm 满足 D σ m ( z ) / D σ , v m ( z ) = exp ( − 2 ⟨ z , v ⟩ + ∥ v ∥ 2 2 σ 2 ) D_\sigma^m(z)/D_{\sigma,v}^m(z) = \exp\left( \dfrac{-2\langle z,v \rangle + \|v\|^2}{2\sigma^2} \right) Dσm(z)/Dσ,vm(z)=exp(2σ2−2⟨z,v⟩+∥v∥2),选取标准差 σ = τ ∥ v ∥ \sigma = \tau\|v\| σ=τ∥v∥ 和截尾界 r = τ σ ∥ v ∥ r=\tau\sigma\|v\| r=τσ∥v∥,那么以至少 1 − 2 exp ( − τ 2 / 2 ) 1-2\exp(-\tau^2/2) 1−2exp(−τ2/2) 的概率使得 D σ m ( z ) / D σ , v m ( z ) ≤ exp ( 1 + 1 / ( 2 τ 2 ) ) D_\sigma^m(z)/D_{\sigma,v}^m(z) \le \exp(1+1/(2\tau^2)) Dσm(z)/Dσ,vm(z)≤exp(1+1/(2τ2))
General Rejection Sampling Lemma:令 V V V 是任意集合, h : V → R h: V \to \mathbb R h:V→R 和 f : Z m → R f: \mathbb Z^m \to \mathbb R f:Zm→R 是两个分布。令 { g v : Z m → R } h \{g_v: \mathbb Z^m \to \mathbb R\}_h {
gv:Zm→R}h 是一族分布,并满足
∃ M ∀ v , P r [ M g v ( z ) ≥ f ( z ) : z ← f ] ≥ 1 − ϵ \exists M \forall v, Pr[Mg_v(z) \ge f(z): z \leftarrow f] \ge 1-\epsilon ∃M∀v,Pr[Mgv(z)≥f(z):z←f]≥1−ϵ
-
算法 A A A 定义为:采样 v ← h v \leftarrow h v←h 和 z ← g v z \leftarrow g_v z←gv,依概率 min ( f ( z ) M g v ( z ) , 1 ) \min\left(\frac{f(z)}{Mg_v(z)},1\right) min(Mgv(z)f(z),1) 输出 ( z , v ) (z,v) (z,v)
-
算法 F F F 定义为:采样 v ← h v \leftarrow h v←h 和 z ← f z \leftarrow f z←f,依概率 1 / M 1/M 1/M 输出 ( z , v ) (z,v) (z,v)
则两者的输出分布的统计距离为 ϵ / M \epsilon/M ϵ/M,且算法 A A A 有输出的概率至少为 ( 1 − ϵ ) / M (1-\epsilon)/M (1−ϵ)/M。如果令 V ⊆ Z m V \subseteq \mathbb Z^m V⊆Zm 是范数至多为 T T T 的整数格点的收集,选取 σ = w ( T log m ) \sigma = w(T\sqrt{\log m}) σ=w(Tlogm),再令 g v = D σ , v m g_v=D_{\sigma,v}^m gv=Dσ,vm, f = D σ m f=D_{\sigma}^m f=Dσm,那么存在小常数 M = O ( 1 ) M=O(1) M=O(1) 使得 A , F A,F A,F 的输出分布统计距离为 2 − w ( log m ) / M 2^{-w(\log m)}/M 2−w(logm)/M,且算法 A A A 有输出的概率至少为 ( 1 − 2 − w ( log m ) ) / M \left(1-2^{-w(\log m)}\right)/M (1−2−w(logm))/M。
Main Theorem:对于离散高斯分布 f = D σ , g v = D σ , v f=D_\sigma, g_v=D_{\sigma,v} f=Dσ,gv=Dσ,v,我们选取 σ = τ T \sigma=\tau T σ=τT,并设置 M = exp ( 1 + 1 / ( 2 τ 2 ) ) ≈ e M = \exp(1+1/(2\tau^2)) \approx e M=exp(1+1/(2τ2))≈e,则以至少 1 − 2 exp ( − τ 2 / 2 ) 1-2\exp(-\tau^2/2) 1−2exp(−τ2/2) 的概率满足 f ( z ) ≤ M g v ( z ) f(z) \le Mg_v(z) f(z)≤Mgv(z),选取 τ = 12 \tau=12 τ=12 时此概率约为 1 − 2 − 100 1-2^{-100} 1−2−100。
基于 SIS 问题的签名方案:
- K e y G e n ( 1 n ) KeyGen(1^n) KeyGen(1n):均匀采样 S ← U [ − d , d ] m × k S \leftarrow_\mathcal U [-d,d]^{m \times k} S←U[−d,d]m×k 和 A ← U Z q n × m A \leftarrow_\mathcal U \mathbb Z_q^{n \times m} A←UZqn×m,计算 T = A S ∈ Z q n × k T=AS \in \mathbb Z_q^{n \times k} T=AS∈Zqn×k,公开参数为 A A A 私钥为 S S S 公钥为 T T T
- S i g n ( μ , A , S ) Sign(\mu,A,S) Sign(μ,A,S):高斯采样 y ← D σ m y \leftarrow D_\sigma^m y←Dσm,访问 RO 计算挑战 c ← H ( A y , μ ) c \leftarrow H(Ay,\mu) c←H(Ay,μ)(这里是 Hash to point, D H : = { c ∈ { − 1 , 0 , 1 } k : ∥ c ∥ 1 ≤ κ } D_H:=\{c \in \{-1,0,1\}^k: \|c\|_1 \le \kappa\} DH:={ c∈{ −1,0,1}k:∥c∥1≤κ}),然后计算 z ← y + S c z \leftarrow y+Sc z←y+Sc(服从偏移高斯分布 D σ , S c m ( z ) D_{\sigma,Sc}^m(z) Dσ,Scm(z),不要取模,否则容易伪造签名),最后以概率 min ( D σ m ( z ) M D σ , S c m ( z ) , 1 ) \min\left(\frac{D_\sigma^m(z)}{MD_{\sigma,Sc}^m(z)},1\right) min(MDσ,Scm(z)Dσm(z),1) 输出签名值 ( c , z ) (c,z) (c,z)
- V e r i f y ( μ , ( c , z ) , A , T ) Verify(\mu,(c,z),A,T) Verify(μ,(c,z),A,T):首先检查 ∥ z ∥ ≤ η σ m \|z\| \le \eta\sigma\sqrt m ∥z∥≤ησm 确保签名值是短的(对于短格基 S S S 的 PoK),然后验证 H ( A z − T c , μ ) H(Az-Tc,\mu) H(Az−Tc,μ) 是否等于 c c c,其中系数 η ∈ [ 1.1 , 1.3 ] \eta\in[1.1,1.3] η∈[1.1,1.3] 确保正确签名极大概率可通过长度检查。
Renyi 熵:令 D \mathcal D D 是集合 S S S 上分布,定义 H R e n y i ( D ) : = − log P r [ X = Y ] H_{Renyi}(\mathcal D) := -\log Pr[X=Y] HRenyi(D):=−logPr[X=Y],其中 X , Y ← D S X,Y \leftarrow_{\mathcal D} \mathcal S X,Y←DS 是独立选取的。可以证明 H R e n y i ( D ) ≤ H S h a n n o n ( D ) , ∀ D H_{Renyi}(\mathcal D) \le H_{Shannon}(\mathcal D), \forall \mathcal D HRenyi(D)≤HShannon(D),∀D,并且对于均匀分布 H R e n y i = H S h a n n o n H_{Renyi} = H_{Shannon} HRenyi=HShannon
剩余哈希引理(Leftover Hash Lemma, [HILL99]):令 H : X → Y \mathcal H:X \to Y H:X→Y 是一族 Pairwise Independent 哈希函数(即 P r h ← H [ h ( x ) = h ( x ′ ) ] = 1 / ∣ Y ∣ , ∀ x ≠ x ′ Pr_{h \leftarrow \mathcal H}[h(x)=h(x')]=1/|Y|, \forall x \neq x' Prh←H[h(x)=h(x′)]=1/∣Y∣,∀x=x′)。令 D \mathcal D D 是集合 X X X 上的 H R e n y i ( D ) = m H_{Renyi}(\mathcal D)=m HRenyi(D)=m 的分布,值域大小 ∣ Y ∣ = 2 m − 2 e |Y| = 2^{m-2e} ∣Y∣=2m−2e,那么
Δ ( { ( h , h ( x ) ) : h ← U H , x ← D X } , U ( H × Y ) ) ≤ 2 − ( e + 1 ) \Delta\left(\{(h,h(x)): h \leftarrow_{\mathcal U} \mathcal H, x \leftarrow_{\mathcal D} X\},\,\, \mathcal U(\mathcal H \times Y)\right) \le 2^{-(e+1)} Δ({(h,h(x)):h←UH,x←DX},U(H×Y))≤2−(e+1)
如果 D \mathcal D D 是 X X X 上均匀分布,那么 Δ ≤ 1 2 ∣ Y ∣ / ∣ X ∣ \Delta \le \dfrac{1}{2}\sqrt{|Y|/|X|} Δ≤21∣Y∣/∣X∣,当值域 Y Y Y 对比定义域 X X X 是极度压缩的,那么 { h ( x ) } \{h(x)\} {
h(x)} 与 U ( Y ) \mathcal U(Y) U(Y) 统计不可区分。
对于由 A ∈ Z q n × m A \in \mathbb Z_q^{n \times m} A∈Zqn×m 索引的同态哈希函数 h A ( s ) : = A s , ∀ s ∈ Z m h_A(s) := As, \forall s \in \mathbb Z^m hA(s):=As,∀s∈Zm,当 q q q 是素数时它是 Pairwise Independent 的。对于均匀的 S ∈ [ − d , d ] m × k S \in [-d,d]^{m \times k} S∈[−d,d]m×k,那么承诺值 T ← h A ( S ) T \leftarrow h_A(S) T←hA(S) 与均匀分布的统计距离为 Δ ≤ 1 2 q n / ( 2 d + 1 ) m \Delta \le \dfrac{1}{2}\sqrt{q^n/(2d+1)^m} Δ≤21qn/(2d+1)m。安全参数 λ \lambda λ,我们设置 m ≫ n m \gg n m≫n 使得 Δ ≤ 2 − λ \Delta \le 2^{-\lambda} Δ≤2−λ,从而可以抵御私钥恢复攻击。
另外通过降低 d d d,这使得 SIS 问题变得更难,我们就可以降低 q q q 和 m m m 使得载荷减小。如果令 m = 2 n m=2n m=2n 那么 A = [ A 1 ∣ I ] , S = [ S 1 ∣ S 2 ] T A=[A_1|I], S=[S_1|S_2]^T A=[A1∣I],S=[S1∣S2]T,那么 T = A S = A 1 S 1 + S 2 T=AS=A_1S_1+S2 T=AS=A1S1+S2,这就转化为了基于 LWE 的格签名,签名值形如 ( c , z 1 , z 2 ) (c,z_1,z_2) (c,z1,z2),满足 z 1 = y 1 + S 1 c , z 2 = y 2 + S 2 c z_1=y_1+S_1c, z_2=y_2+S_2c z1=y1+S1c,z2=y2+S2c。也容易将 LWE 和 SIS 转化到 RLWE 和 RSIS 变体上。
Forking Lemma
接下来证明 [Lyu12] 的签名方案可以抵御签名伪造攻击。
General Forking Lemma([PS00], [BN06]):令 I G IG IG 是 input generator, H H H 是大小 h ≥ 2 h \ge 2 h≥2 的集合, q q q 是随机访问 H H H 的次数。敌手 A A A 定义为
x ← I G , { h 1 , ⋯ , h q } ← R H , ( J , σ ) ← A ( x , { h 1 , ⋯ , h q } ) x \leftarrow IG, \{h_1,\cdots,h_q\} \leftarrow_R H, (J,\sigma) \leftarrow A(x,\{h_1,\cdots,h_q\}) x←IG,{
h1,⋯,hq}←RH,(J,σ)←A(x,{
h1,⋯,hq})
其中 σ \sigma σ 是关于 h J h_J hJ 的,当 J ≥ 1 J \ge 1 J≥1 时我们说 A A A 的输出是可接受的,其概率记为 a c c acc acc。我们再定义一个分叉程序 F A F_A FA:
- 输入 x x x,为 A A A 挑选随机带 ρ \rho ρ,访问 H H H 获得 h 1 , ⋯ , h q h_1,\cdots,h_q h1,⋯,hq,调用 A ( x , { h 1 , ⋯ , h q } ; ρ ) A(x,\{h_1,\cdots,h_q\};\rho) A(x,{ h1,⋯,hq};ρ) 得到 ( I , σ ) (I,\sigma) (I,σ)
- 当 I = 0 I=0 I=0 时输出 ( 0 , ⊥ , ⊥ ) (0,\perp,\perp) (0,⊥,⊥),当 I = 1 I=1 I=1 时访问 H H H 获得新的 h I ′ , ⋯ , h q ′ h_I',\cdots,h_q' hI′,⋯,hq′,调用 A ( x , { h 1 , ⋯ , h I − 1 , h I ′ , ⋯ , h q ′ } ; ρ ) A(x,\{h_1,\cdots,h_{I-1},h_I',\cdots,h_q'\};\rho) A(x,{ h1,⋯,hI−1,hI′,⋯,hq′};ρ) 得到 ( I ′ , σ ′ ) (I',\sigma') (I′,σ′)
- 当 I = I ′ I=I' I=I′ 且 h I ≠ h I ′ h_I \neq h_I' hI=hI′ 时,输出 ( 1 , σ , σ ′ ) (1,\sigma,\sigma') (1,σ,σ′),否则输出 ( 0 , ⊥ , ⊥ ) (0,\perp,\perp) (0,⊥,⊥)
定义成功分叉的概率为 f r k : = P r [ b = 1 : x ← I G , ( b , σ , σ ′ ) ← F A ( x ) ] frk := Pr\left[b=1: x \leftarrow IG, (b,\sigma,\sigma') \leftarrow F_A(x)\right] frk:=Pr[b=1:x←IG,(b,σ,σ′)←FA(x)],那么有
f r k ≥ a c c ⋅ ( a c c q − 1 h ) frk \ge acc \cdot (\dfrac{acc}{q} - \dfrac{1}{h}) frk≥acc⋅(qacc−h1)
[Lyu09] 可以作为 [Lyu12] 的 Ring-SIS 版本变体,并且其中分布 f , g f,g f,g 选取了窄区间均匀分布。对于 [Lyu12] 的格签名方案,其安全归约为:首先利用 Hybrid 技术,修改挑战为 c ← U { v ∈ { − 1 , 0 , 1 } k : ∥ v ∥ 1 ≤ κ } c \leftarrow_\mathcal U \{v \in \{-1,0,1\}^k: \|v\|_1 \le \kappa\} c←U{
v∈{
−1,0,1}k:∥v∥1≤κ},修改回应为 z ← D σ m z \leftarrow D_\sigma^m z←Dσm,修改拒绝概率为 1 / M 1/M 1/M,则它与原始签名方案统计不可区分。假设 PPT 敌手 F F F 是成功概率 δ \delta δ 的 Forger,我们构造 PPT 敌手 B B B,它持有 Forger 和上述的 Signer 的代码并为它们提供随机带 r F , r S r_F,r_S rF,rS 作为子程序。在学习阶段它为 F F F 模拟它与 Signer 以及 RO 的交互视图,模拟 RO 时依次使用 r 1 , ⋯ , r t r_1,\cdots,r_t r1,⋯,rt 来回应并打表。在伪造阶段 F F F 给出了一个可接受副本 ( μ , ( c , z ) ) (\mu,(c,z)) (μ,(c,z))。如果 c = H ( A z − T c , μ ) c=H(Az-Tc,\mu) c=H(Az−Tc,μ) 之前没有 RO 查询过,根据 RO 定义可知其成功率不会超过 1 / ∣ D H ∣ 1/|D_H| 1/∣DH∣,因此以至少 δ − 1 / ∣ D H ∣ \delta-1/|D_H| δ−1/∣DH∣ 的概率使得 H ( A z − T c , μ ) = r j H(Az-Tc,\mu)=r_j H(Az−Tc,μ)=rj 位于表格中。
- 假设 r j r_j rj 是被 Signer 使用的(即 μ ′ , ( c = r j , z ′ ) \mu',(c=r_j,z') μ′,(c=rj,z′) 是合法签名),则 H ( A z ′ − T c , μ ′ ) = H ( A z − T c , μ ) H(Az'-Tc,\mu')=H(Az-Tc,\mu) H(Az′−Tc,μ′)=H(Az−Tc,μ),于是 A z − T c ≡ A z ′ − T c Az-Tc \equiv Az'-Tc Az−Tc≡Az′−Tc 且 μ = μ ′ \mu=\mu' μ=μ′(除了可忽略的概率 F F F 找到了 RO 的一对碰撞),因此 A ( z − z ′ ) ≡ 0 A(z-z') \equiv 0 A(z−z′)≡0,然而 z ≠ z ′ z \neq z' z=z′(因为 F F F 成功伪造)从而 v = z − z ′ v=z-z' v=z−z′ 是一个满足 A v = 0 ( m o d q ) Av=0 \pmod q Av=0(modq) 的非零短向量,这打破了 SIS 问题。
- 假设 r j r_j rj 是被 Forger 做 RO 查询时使用的,那么我们记录下 ( c = r j , z ) (c=r_j,z) (c=rj,z) 后 rewind,对相同的 μ \mu μ 和随机带 r F , r S r_F,r_S rF,rS,使用新的 RO 查询结果 r 1 , ⋯ , r j − 1 , r j ′ , ⋯ , r t ′ r_1,\cdots,r_{j-1},r_j',\cdots,r_t' r1,⋯,rj−1,rj′,⋯,rt′,根据分叉引理 Forger 将会以至少 ( δ − 1 / ∣ D H ∣ ) ( ( δ − 1 / ∣ D H ∣ ) / t − 1 / ∣ D H ∣ ) (\delta - 1/|D_H|)((\delta - 1/|D_H|)/t - 1/|D_H|) (δ−1/∣DH∣)((δ−1/∣DH∣)/t−1/∣DH∣) 的概率输出一个新的可接受伪造签名 ( μ ′ , ( c ′ = r j ′ , z ′ ) ) (\mu',(c'=r_j',z')) (μ′,(c′=rj′,z′)),并且 r j ′ ≠ r j r_j' \neq r_j rj′=rj。由于两次调用中的 y y y 是相同的,从而有 A z − T c ≡ A y ≡ A z ′ − T c ′ Az-Tc \equiv Ay\equiv Az'-Tc' Az−Tc≡Ay≡Az′−Tc′(除了可忽略的概率 F F F 找到了 RO 的一对碰撞),也就是 A ( z − S c − z ′ + S c ′ ) ≡ 0 A(z-Sc-z'+Sc') \equiv 0 A(z−Sc−z′+Sc′)≡0,那么 v = z − S c − z ′ + S c ′ v=z-Sc-z'+Sc' v=z−Sc−z′+Sc′ 以至少 1 / 2 1/2 1/2 的概率(因为 ID 协议是 WI 的)是一个满足 A v = 0 ( m o d q ) Av=0 \pmod q Av=0(modq) 的非零短向量,这也打破了 SIS 问题。
在 SIS 困难性假设下,敌手 B B B 不存在,那么任意的敌手 F F F 都不存在。这就证明了基于 SIS 问题的签名方案是 EUF-CMA 的。
而基于 LWE 问题的签名方案,由于 d d d 和 m m m 都较小,那么 T = A S T=AS T=AS 不一定拥有多个证据 S ≠ S ′ S \neq S' S=S′,所以 WI 性质是平凡的,依照上述的归约过不去。[Lyu12] 的思路是,使用 Hybrid 技术将 d d d 扩大到足够大的 d ′ d' d′ 使得存在多个证据,然后便可以用上述的安全归约了。需要注意,基于 LWE 的签名方案,抵御私钥恢复攻击是基于 LWE 问题的,但是抵御签名伪造依然是基于 SIS 问题的。
双峰高斯分布
虽然 [Lyu12] 使用高斯分布取代 [Lyu09] 的均匀分布,在保持 M ≈ e M \approx e M≈e 时使得签名值 z z z 的规模从 O ~ ( n 1.5 ) \tilde O(n^{1.5}) O~(n1.5) 降低到了 O ~ ( n ) \tilde O(n) O~(n),但是仍需要选取标准差为 σ = 12 ∥ S c ∥ \sigma = 12\|Sc\| σ=12∥Sc∥ 的离散高斯分布,系数 τ = 12 \tau=12 τ=12 依然过大。[BLISS] 将 g v ( z ) g_v(z) gv(z) 替换为了双峰离散高斯分布 ( D σ , S c m + D σ , − S c m ) / 2 (D_{\sigma,Sc}^m + D_{\sigma,-Sc}^m)/2 (Dσ,Scm+Dσ,−Scm)/2,这使得 g v ( z ) g_v(z) gv(z) 与中心离散高斯分布 f ( z ) = D σ m f(z)=D_\sigma^m f(z)=Dσm 更加接近,从而可以降低 M M M 的大小。可以证明:
D σ m 1 2 D σ , S c m + 1 2 D σ , − S c m ( x ) = exp ( ∥ S c ∥ 2 σ 2 ) cosh ( ⟨ x , S c ⟩ σ 2 ) ≤ exp ( ∥ S c ∥ 2 σ 2 ) \dfrac{D_\sigma^m}{\dfrac{1}{2}D_{\sigma,Sc}^m + \dfrac{1}{2}D_{\sigma,-Sc}^m}(x) = \dfrac{\exp\left(\dfrac{\|Sc\|}{2\sigma^2}\right)}{\cosh\left(\dfrac{\langle x, Sc\rangle}{\sigma^2}\right)} \le \exp\left(\dfrac{\|Sc\|}{2\sigma^2}\right) 21Dσ,Scm+21Dσ,−ScmDσm(x)=cosh(σ2⟨x,Sc⟩)exp(2σ2∥Sc∥)≤exp(2σ2∥Sc∥)
其中 cosh ( x ) = ( e x + e − x ) / 2 ≥ 1 , ∀ x \cosh(x)=(e^x+e^{-x})/2 \ge 1,\forall x cosh(x)=(ex+e−x)/2≥1,∀x,它以概率 1 1 1 成立(而不仅仅是 1 − 2 − 100 1-2^{-100} 1−2−100,因此不必截尾)。如果维持 M ≈ e M \approx e M≈e,这可以降低标准差为 σ = ∥ S c ∥ / 2 \sigma=\|Sc\|/\sqrt 2 σ=∥Sc∥/2,从而缩小签名的大小。
对于 y ← D σ m y \leftarrow D_{\sigma}^m y←Dσm,选取 b ← U { − 1 , + 1 } b \leftarrow_\mathcal U \{-1,+1\} b←U{ −1,+1},计算签名值 z = y + b S c z=y+bSc z=y+bSc,它服从双峰高斯。对于验签程序,给定公钥 T = A S T=AS T=AS,需要满足 H ( A y , μ ) = H ( A z − T c , μ ) H(Ay,\mu)=H(Az-Tc,\mu) H(Ay,μ)=H(Az−Tc,μ),这需要 A y = A z − T c = A y + b T c − T c Ay=Az-Tc=Ay+bTc-Tc Ay=Az−Tc=Ay+bTc−Tc,于是有 b T c ≡ T c ( m o d q ) bTc \equiv Tc \pmod q bTc≡Tc(modq),那么必须满足 T c ≡ − T c , ∀ c Tc \equiv -Tc,\forall c Tc≡−Tc,∀c,当 q q q 是素数时 Z q \mathbb Z_q Zq 是无零因子环,从而求出 T ≡ 0 ( m o d q ) T \equiv 0 \pmod q T≡0(modq)。因此 [Lyu12] 中的验签公式不再奏效,[BLISS] 的解决方案是转换到 Z 2 q \mathbb Z_{2q} Z2q 上工作,选取 T ≡ q I ( m o d 2 q ) T\equiv qI \pmod{2q} T≡qI(mod2q),那么验签公式 A y ≡ A z − T c ( m o d 2 q ) Ay\equiv Az-Tc \pmod{2q} Ay≡Az−Tc(mod2q) 就可以正确验签了。
签名方案构造如下:
- K e y G e n ( 1 λ ) KeyGen(1^\lambda) KeyGen(1λ):采样一个短矩阵 S ∈ Z 2 q m × n S \in \mathbb Z_{2q}^{m \times n} S∈Z2qm×n,计算矩阵 A ∈ Z 2 q n × m A \in \mathbb Z_{2q}^{n \times m} A∈Z2qn×m 使得 A S ≡ q I ( m o d 2 q ) AS \equiv qI \pmod{2q} AS≡qI(mod2q)(也就是 A = q S − 1 ( m o d 2 q ) A=qS^{-1} \pmod{2q} A=qS−1(mod2q)),公开参数为 A A A 私钥为 S S S,公钥为 q I qI qI 可省略
- S i g n ( μ , A , S ) Sign(\mu,A,S) Sign(μ,A,S):采样 y ← D σ m y \leftarrow D_\sigma^m y←Dσm,计算 c ← H ( A y , μ ) c \leftarrow H(Ay,\mu) c←H(Ay,μ)(Hash to point, c ∈ { − 1 , 0 , 1 } n c \in \{-1,0,1\}^n c∈{ −1,0,1}n 是 κ \kappa κ 重的短向量),然后采样 b ← U { 0 , 1 } b \leftarrow_\mathcal U \{0,1\} b←U{ 0,1},计算 z ← y + ( − 1 ) b S c z \leftarrow y+(-1)^bSc z←y+(−1)bSc,依概率 exp ( ∥ S c ∥ / 2 σ 2 ) M cosh ( ⟨ z , S c ⟩ / σ 2 ) \dfrac{\exp\left(\|Sc\|/2\sigma^2\right)}{M\cosh\left(\langle z, Sc\rangle/\sigma^2\right)} Mcosh(⟨z,Sc⟩/σ2)exp(∥Sc∥/2σ2) 输出 ( c , z ) (c,z) (c,z),否则重新执行 S i g n ( μ , A , S ) Sign(\mu,A,S) Sign(μ,A,S)
- V e r i f y ( μ , ( c , z ) , A ) Verify(\mu,(c,z),A) Verify(μ,(c,z),A):首先检查 ∥ z ∥ ≤ η m σ \|z\| \le \eta\sqrt m\sigma ∥z∥≤ηmσ(其中 η ∈ [ 1 , 1 , 1 , 4 ] \eta \in [1,1,1,4] η∈[1,1,1,4] 使得正确签名通过此检查的概率至少为 1 − 2 − λ 1-2^{-\lambda} 1−2−λ),额外检查 ∥ z ∥ ∞ < q / 4 \|z\|_\infty < q/4 ∥z∥∞<q/4(出于安全归约的需要),最后检查 H ( A z + q c , μ ) H(Az+qc,\mu) H(Az+qc,μ) 是否等于 c c c(因为 ( − 1 ) b A S c = q c (-1)^bASc = qc (−1)bASc=qc)
由于 M = exp ( ∥ S c ∥ 2 σ 2 ) M = \exp\left(\dfrac{\|Sc\|}{2\sigma^2}\right) M=exp(2σ2∥Sc∥),选取 σ ≥ τ ∥ S c ∥ \sigma \ge \tau\|Sc\| σ≥τ∥Sc∥ 时使得 M = exp ( 1 / ( 2 τ 2 ) ) M = \exp(1/(2\tau^2)) M=exp(1/(2τ2))。因此确定 ∥ S c ∥ \|Sc\| ∥Sc∥ 的紧上界可以降低签名大小。容易知道 ∥ S c ∥ ≤ κ ∥ S ∥ \|Sc\| \le \kappa\|S\| ∥Sc∥≤κ∥S∥([Lyu12] 使用的),另一个上界 ∥ S c ∥ ≤ κ s 1 ( S ) \|Sc\| \le \sqrt\kappa s_1(S) ∥Sc∥≤κs1(S),其中 s 1 ( S ) s_1(S) s1(S) 是奇异范数(singular norm, ∥ A ∥ L S V : = max ∥ x ∥ 2 = 1 x T A T A x \|A\|_{LSV}:=\sqrt{\max_{\|x\|_2=1} x^TA^TAx} ∥A∥LSV:=max∥x∥2=1xTATAx 或者是 ∥ A ∥ ∞ , 1 : = max ∥ x ∥ ∞ = 1 ∥ A x ∥ 1 \|A\|_{\infty,1}:=\max_{\|x\|_\infty=1}\|Ax\|_1 ∥A∥∞,1:=max∥x∥∞=1∥Ax∥1,文章中没写啊)。[BLISS] 给出了一个更紧的上界,定义 N k : R m × n → R N_k:\mathbb R^{m \times n} \to \mathbb R Nk:Rm×n→R 为
N κ ( X ) : = max I ⊆ { 1 , ⋯ , n } , ∣ I ∣ = κ ∑ i ∈ I ( max J ⊆ { 1 , ⋯ , n } , ∣ J ∣ = κ ∑ j ∈ J T i j ) , T = X T X ∈ R n × n N_\kappa(X) := \max_{I \subseteq \{1,\cdots,n\},|I|=\kappa} \sum_{i \in I}\left( \max_{J \subseteq \{1,\cdots,n\},|J|=\kappa} \sum_{j \in J} T_{ij}\right),\,\, T=X^TX \in \mathbb R^{n \times n} Nκ(X):=I⊆{
1,⋯,n},∣I∣=κmaxi∈I∑
J⊆{
1,⋯,n},∣J∣=κmaxj∈J∑Tij
,T=XTX∈Rn×n
那么对于任意的 S ∈ R m × n S \in \mathbb R^{m \times n} S∈Rm×n 以及任意的 c ∈ B κ n c \in \mathbb B_\kappa^n c∈Bκn,都有 ∥ S c ∥ 2 ≤ N κ ( S ) \|Sc\|^2 \le N_\kappa(S) ∥Sc∥2≤Nκ(S)。相较于 [Lyu12],标准差 σ \sigma σ 降低了大约 κ / 2 \sqrt\kappa/2 κ/2 的因子。并且, N κ ( S ) N_\kappa(S) Nκ(S) 可以快速计算:计算 T = S T S T=S^TS T=STS,找出最长的 κ \kappa κ 列加起来,然后找出它最大的 κ \kappa κ 个元素加起来。
我们还要实现 Hash to B κ n B_\kappa^n Bκn,[BLISS] 从 RO 中获得 κ ′ > κ \kappa' > \kappa κ′>κ 个随机数 x i ∈ Z n x_i \in \mathbb Z_n xi∈Zn(丢弃 ≥ k n \ge kn ≥kn 的值保证均匀),然后设置 c x i = 1 c_{x_i}=1 cxi=1 直到 ∥ c ∥ 1 = κ \|c\|_1=\kappa ∥c∥1=κ。选取足够大的 κ ′ \kappa' κ′ 使得成功率够高,否则需要重新执行。在 [GLP12] 中,它将 512 512 512 长的串分成 32 32 32 组,对每组使用 5 5 5 比特 r 1 r 2 r 3 r 4 r 5 r_1r_2r_3r_4r_5 r1r2r3r4r5,其中 r 2 r 3 r 4 r 5 r_2r_3r_4r_5 r2r3r4r5 用来确定组内的位置, r 1 r_1 r1 用于确定符号,于是 32 32 32 个分组中恰有 1 1 1 个位置非零,且一共只需 160 160 160 比特的哈希值。而在 [Dilithium] 中,对于 i = n − τ , ⋯ , n i=n-\tau,\cdots,n i=n−τ,⋯,n,从 X O F ( ρ ) XOF(\rho) XOF(ρ) 中获得 j ∈ { 0 , 1 , ⋯ , i } j \in \{0,1,\cdots,i\} j∈{ 0,1,⋯,i} 以及 s ∈ { 0 , 1 } s \in \{0,1\} s∈{ 0,1},然后设置 c i ← c j c_i \leftarrow c_j ci←cj 以及 c j ← ( − 1 ) s c_j \leftarrow (-1)^s cj←(−1)s(布谷鸟)。
虽然 A S = 0 ( m o d q ) AS=0 \pmod q AS=0(modq) 很特殊,但是可以证明仅根据 A A A 难以求解出短矩阵 S S S 或者短向量 v = S c v=Sc v=Sc:任给一个格基 B B B,设置 A ∈ Z 2 q n × m A \in \mathbb Z_{2q}^{n \times m} A∈Z2qn×m 满足 A = 2 B ( m o d q ) A=2B \pmod q A=2B(modq),如果 PPT 敌手找到了一个短向量 v v v 使得 A v = 0 ( m o d q ) Av=0 \pmod q Av=0(modq),那么由于 2 ( m o d q ) 2 \pmod{q} 2(modq) 是可逆的,因此有 B v = 0 ( m o d q ) Bv=0 \pmod q Bv=0(modq),这就破解了 SIS 问题。