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

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的,否则不能正确恢复明文】

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值