现有的基于格的签名方案基本都是在下述两种框架中得到的。
第一种:哈希-签名的方法主要是基于Ajtai SIS问题及其相关的陷门函数。陷门函数用来生成优质基。原像采样函数使用优质基对格进行采样。原像采样函数生成的参数用来进行签名构造。
第二种:Fiat-Shamir框架: … ( 待 补 充 ) \dots(待补充) …(待补充)
但是相对第二种Fiat-Shamir框架,哈希-签名这种模式要求格的维数要相对大的多,所以哈希-签名这种模式在密钥、签名的尺寸上来说相对非常大。(哈希-签名要求格维数大于 5 n log q 5n\log q 5nlogq,第二种Fiat-Shamir差不多是 2 n 2n 2n)
Hash-and-sign 格签名一般构造方式
k e y g e n ( ⋅ ) : keygen(\sdot): keygen(⋅):
-
生成矩阵 A ( a i ∈ R q ) A(a_i\in R_q) A(ai∈Rq), B ( b i ∈ R q ) B(b_i\in R_q) B(bi∈Rq).
(1)满足 A T = 0 AT=0 AT=0;
(2) T T T的范数比较小。
-
A A A为公钥
-
T T T为私钥( T T T为陷门基)
S i g n ( s k , μ ) : Sign(sk,\mu): Sign(sk,μ):
- 计算 t t t满足 A t = H ( μ ) At=H(\mu) At=H(μ)
- 利用原像陷门采样选取距离 H ( μ ) H(\mu) H(μ)最近的格点 v ∈ L ( T ) v\in L(T) v∈L(T)
- e = t − v e=t-v e=t−v
V e r i f y ( p k , μ , e ) : Verify(pk,\mu,e): Verify(pk,μ,e):
- e e e的范数较小
- A e = H ( μ ) Ae=H(\mu) Ae=H(μ)
Fiat-Shamir格签名一般构造方式
原文中叙述了两种表达,此处只记关于高斯分布的一种。
k e y g e n ( ⋅ ) : keygen(\sdot): keygen(⋅):
- 生成矩阵 A ∈ R q n × m A\in \mathbb R^{n\times m}_q A∈Rqn×m, S ∈ R q m × k S\in \mathbb R^{m\times k}_q S∈Rqm×k.满足 T ← A S T\leftarrow AS T←AS;
- 公钥 ( A , T ) (A,T) (A,T)
- 私钥为 S S S
S i g n ( s k , μ ) : Sign(sk,\mu): Sign(sk,μ):
- 从某一高斯分布中随机抽取 y ← D s m y \leftarrow D^m_s y←Dsm
- 计算 c ← H ( A y , μ ) c\leftarrow H(Ay,\mu) c←H(Ay,μ)
- 计算 z = S c + y z=Sc+y z=Sc+y
- 以概率 min ( D s m ( z ) M D S c , s m ( z ) , 1 ) \min(\frac{D^m_s(z)}{MD^m_{Sc,s}(z)},1) min(MDSc,sm(z)Dsm(z),1)输出 ( z , c ) (z,c) (z,c)
V e r i f y ( p k , μ , z , c , A , T ) : Verify(pk,\mu,z,c,A,T): Verify(pk,μ,z,c,A,T):
- ∥ z ∥ ≤ k s m \|z\|\leq ks\sqrt{m} ∥z∥≤ksm,其中 k > 1 k>1 k>1
- c = H ( A z − T c , μ ) c=H(Az-Tc,\mu) c=H(Az−Tc,μ)
[1]蔡杰. 基于格的指定验证者数字签名方案及身份鉴别协议研究[D].山东大学,2020.