参考文献:
- [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)(这里 Y Y Y 是某随机数 y y y 的承诺),接着模拟器 rewind 敌手,重新选择随机挑战 c ′ c' c′ 并获得另一个可接受副本 ( Y , c ′ , z ′ ) (Y,c',z') (Y,c′,z′)(还是同一个 y y y 的承诺),两者满足 h ( z ) = S c + Y , h ( z ′ ) = S c ′ + Y h(z)=Sc+Y, h(z')=Sc'+Y h(z)=Sc+Y,h(z′)=Sc′+Y,于是 h ( z − s c ) = Y = h ( z ′ − s c ′ ) h(z-sc)=Y=h(z'-sc') h(z−sc)=Y=h(z′−sc′),接下来只需证明 z − s c ≠ z ′ − s c ′ z-sc \neq z'-sc' z−sc=z′−sc′ 即可。因为上述 ID 协议是 Perfect WI 的,因此以至少 1 / 2 1/2 1/2 的概率敌手猜错私钥 s ′ s' s′,敌手设置了 z − s ′ c = y = z ′ − s ′ c ′ z-s'c=y=z'-s'c' z−s′c=y=z′−s′c′,替换为 s ≠ s ′ s \neq s' s=s′ 之后,以极高的概率使得 ( y 1 : = z − s c ) ≠ ( y 2 : = z ′ − s c ′ ) (y_1:=z-sc) \neq (y_2:=z'-sc') (y1:=z−sc)=(y2:=z′−sc′),它们是 CRHF 的一对碰撞,出现矛盾。
最后,我们并行多个 ID 协议(例如 30 30 30 个),保持 WI 的同时,可以把 completeness probability 从仅 1 / e 1/e 1/e 提升到 1 − 2 − 20 1-2^{-20} 1−2−20(目的并非是降低 soundness error,因为 c c c 的熵已经足够大),这里只需证明者成功完成其中一次 ID 协议证明即可。然后在 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 问题。