当前位置: 首页 > 工具软件 > NTRU > 使用案例 >

密码学基础之NTRU公钥密码系统【笔记】

秦才
2023-12-01

NTRU

【NTRU是一种基于环的公钥密码系统】
【特点:密钥短且容易产生,算法运算速度快,所需存储空间小】

预备知识

(1)设R表示最高次数不超过N-1的所有整系数多项式集合,设a = a0 + a1x +…+aN-1xN-1,b = b0 + b1x +…+bN-1xN-1
(2)R上的加法定义为:a + b = (a0 + b0)+ (a1 + b1)x +…+(aN-1 + bN-1)xN-1
(3)R上的乘法定义为:a * b = c0 + c1x +…+cN-1xN-1,k阶系数为 ∑ i + j ≡ k ( m o d N ) a i b i \sum_{i+j ≡k(mod N)}^{} a_i b_i i+jk(modN)aibi
【R在如上定义的加法和乘法运算下构成一个环】

算法的参数

参数包括三个整数(N,p,q)和四个次数为N-1的整系数多项式集合 L f , L g , L ϕ , L m , L_f,L_g,L_\phi, L_m, LfLgLϕLm,其中p 和q不要求是素数,但满足(p,q)= 1 且q大于p。

密钥的产生

产生方:密文接受方
过程:随机选取两个多项式 f , g ∈ L g , f,g\in L_g , f,gLg,其中多项式f在模p下和模q下均可逆,其逆元分别表示为Fq和Fp,即: F q ∗ f ≡ 1 ( m o d q ) 和 F p ∗ f ≡ 1 ( m o d p ) 。 F_q * f ≡1(modq)和F_p * f ≡1(modp)。 Fqf1(modq)Fpf1(modp)
计算 h ≡ F q ∗ g ( m o d q ) h≡F_q*g(mod q) hFqg(modq)
以h作为公开钥,f作为秘密钥,同时产生方需要保存Fq

加密

发送方:持有消息m,多项式 ϕ ∈ L ϕ , \phi \in L_\phi, ϕLϕ,用公开钥h对消息进行加密 e ≡ p ϕ ∗ h + m ( m o d q ) e≡p\phi*h+m(mod q) epϕh+m(modq)将e发送给收方。

解密

(1)计算 a ≡ f ∗ e ( m o d q ) , a≡f*e(mod q), afe(modq),a的系数选在- q / 2 ~ q / 2之间。
(2)计算 F p ∗ a ( m o d p ) F_p*a(modp) Fpa(modp)即可恢复明文m。

解密原理

a ≡ f ∗ e ≡ f ∗ p ϕ ∗ h + f ∗ m ( m o d q ) ≡ f ∗ p ϕ ∗ F q ∗ g + f ∗ m ( m o d q ) ≡ p ϕ ∗ g + f ∗ m ( m o d q ) ≡ p ϕ ∗ g + f ∗ m a≡f*e≡f*p\phi*h+f*m(mod q)≡f*p\phi*F_q*g+f*m(mod q)≡p\phi*g+f*m(mod q)≡p\phi*g+f*m afefpϕh+fm(modq)fpϕFqg+fm(modq)pϕg+fm(modq)pϕg+fm
【注释:由于最后一步其系数在- q / 2 ~ q / 2之间,所以mod q后结果不变】
F p ∗ a ≡ F p ∗ p ϕ ∗ g + F p ∗ f ∗ m ( m o d p ) ≡ m ( m o d p ) F_p*a≡F_p*p\phi*g + F_p*f*m(mod p)≡m(mod p) FpaFppϕg+Fpfm(modp)m(modp)
【可以看到,最后是m mod p,可知,m一定是小于p的,否则不能正确恢复明文】

 类似资料: