【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+j≡k(modN)∑aibi
【R在如上定义的加法和乘法运算下构成一个环】
参数包括三个整数(N,p,q)和四个次数为N-1的整系数多项式集合 L f , L g , L ϕ , L m , L_f,L_g,L_\phi, L_m, Lf,Lg,Lϕ,Lm,其中p 和q不要求是素数,但满足(p,q)= 1 且q大于p。
产生方:密文接受方
过程:随机选取两个多项式
f
,
g
∈
L
g
,
f,g\in L_g ,
f,g∈Lg,其中多项式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)。
Fq∗f≡1(modq)和Fp∗f≡1(modp)。
计算
h
≡
F
q
∗
g
(
m
o
d
q
)
h≡F_q*g(mod q)
h≡Fq∗g(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) e≡pϕ∗h+m(modq)将e发送给收方。
(1)计算
a
≡
f
∗
e
(
m
o
d
q
)
,
a≡f*e(mod q),
a≡f∗e(modq),a的系数选在- q / 2 ~ q / 2之间。
(2)计算
F
p
∗
a
(
m
o
d
p
)
F_p*a(modp)
Fp∗a(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
a≡f∗e≡f∗pϕ∗h+f∗m(modq)≡f∗pϕ∗Fq∗g+f∗m(modq)≡pϕ∗g+f∗m(modq)≡pϕ∗g+f∗m
【注释:由于最后一步其系数在- 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)
Fp∗a≡Fp∗pϕ∗g+Fp∗f∗m(modp)≡m(modp)
【可以看到,最后是m mod p,可知,m一定是小于p的,否则不能正确恢复明文】