NTRU密码系统
抽象代数补充
卷积多项式环
定理:设$F$是域,非零多项式$m\in F[x]$,那么每个非零同余类$a\in F[x]/(m)$存在唯一的代表元$r$满足$\deg r<\deg m,a\equiv r(\bmod m)$。
对于商环$F[x]/(x^2+1)$,根据上面的定理可知商环的每个元素可以被唯一表示成$\overline{\alpha+\beta x},\alpha,\beta\in F$,有加法运算:
乘法运算类似,但是需要注意结果是在环上,需要取余:
给定正整数为$N$,可以构造卷积多项式环为$R=\frac{Z[x]}{x^N-1}$。模$q$的卷积多项式环为$R_q=\frac{(Z/qZ)[x]}{x^N-1}$,这里的模是指对于多项式的每个系数模$q$。
根据上面的定理可以得知卷积多项式环的元素都为以下形式:
根据除法取余可知,即模运算时只需将$x$次数模$m$:
通常为了简便把多项式$a(x)=a_0+a_1x+a_2x^2+…+a_{N-1}x^{N-1}\in R$表示成向量:
进行加法符合向量计算法则,对应系数相加。
进行乘法时,如果$a(x)\cdot b(x)=c(x)$且有$a(x),b(x)\in R_q$,先进行普通的多项式相乘写出结果(注意模幂),然后需要对$c_k$系数模$q$。
中心提升
设$a(x)\in R_q$,把$a(x)$对$R$的中心提升为$a’(x)$,记为$CL(a)$,满足$a’(x)\bmod q=a(x)$,$a’(x)$的系数满足$-\frac q2<a_i’≤\frac q2$。
比起模多项式将$R$上多项式转换到$R_p,R_q$上,中心提升(Center-lift)将$R_p,R_q$中的多项式转换回了$R$中,且使得多项式系数绝对值最小。
转换规则也很简单:
例如如果$q=2$,$a(x)$的中心提升是系数为$0,1$的多项式。
当$N=5,q=7$时:
多项式$a(x)=5+3x-6x^2+2x^3+4x^4$的中心提升系数为${-3,-2,…,2,3}$,可得$CL(a)=-2+3x+x^2+2x^3-3x^4$。
多项式$b(x)=3+5x^2-6x^3+3x^4$的中心提升系数为${-3,-2,…,2,3}$,可得$CL(b)=3-2x^2+x^3+3x^4$。
注意到提升映射不满足环同态,即$CL(a)\cdot CL(b)≠CL(a\cdot b)$。
NTRU密码系统
参数引入
首先令$N>1$,选定模数$p,q$,设卷积多项式环:
通过对系数模运算,可以将$R$中的多项式给转到$R_p$或者$R_q$的元素,反之可以利用中心提升将$R_p$或者$R_q$的元素给转到$R$中。
这里需要确定$N$是素数且$\gcd(N,q)=\gcd(p,q)=1$,再设$d_1,d_2$是正整数,定义一个集合:
这个集合里的多项式称为三值多项式。
密钥生成
Alice选择公开参数$(N,p,q,d)$,其中$N$和$p$为素数,满足$\gcd(N,q)=\gcd(p,q)=1$,$q>(6d+1)p$。
Alice的私钥生成需要两个随机的多项式:
计算逆元$F_q(x)=f(x)^{-1}\in R_q$,$F_p(x)=f(x)^{-1}\in R_p$(逆元可能会不存在,不存在需要重新选择)。
计算公钥$h(x)=F_q(x)\cdot g(x)\in R_q$,对应的私钥为$(f(x),F_p(x))$。
加解密过程
Bob的明文为是$R$上的多项式$m(x)$,系数大小都在$-\frac p2$和$\frac p2$之间($m(x)$是$R_p$多项式的一个中心提升),接受公钥之后选择一个随机多项式$r(x)\in \mathcal{T}(d,d)$,计算密文$e(x)=ph(x)\cdot r(x)+m(x)(\bmod q)$,密文$e(x)$在环$R_q$中。
Alice收到Bob密文后,计算$a(x)\equiv f(x)\cdot e(x)(\bmod q)$,将$a(x)$中心提升到$R$中之后得$b(x)$:
得到$m(x)$。
原理证明
证明NTRU加解密原理,需要证明在满足$q>(6d+1)p$时Alice计算出的$b(x),m(x)$相等。
对于多项式$pg(x)\cdot r(x)+f(x)\cdot m(x)$,考虑其可能的最大值:
由于$g(x),r(x)$都在$\mathcal{T}(d,d)$上,所以卷积$g(x)\cdot r(x)$的最大可能系数为$2d$。
同理$f(x)\in \mathcal T(d+1,d)$,$m(x)$系数在$-\frac p2$和$\frac p2$之间,所以最大可能系数是$(2d+1)\frac p2$。
相加,最大可能系数就是$(3d+\frac 12)p$。
满足$q>(6d+1)p$即为$\frac q2>(3d+\frac 12)p$。Alice计算出的每一个系数在数量上都要严格小于$\frac q2$,所以经过计算并中心提升后就可以恢复出准确值,$a(x)$就是$R$中的多项式。
Alice然后计算$b(x)$就能得到$m(x)$:
安全性证明
在NTRU里的公钥$h(x)$的系数是模$q$下的随机整数,但是相关的$f(x)$和$g(x)$都是三值多项式,系数很小:
所以想要破解NTRU需要进行密钥恢复:给定$h(x)$如何找到$f(x)$和$g(x)$满足上式。
需要注意到私钥的解不唯一,如果$(f(x),g(x))$是一个解,对于$0≤k<N$,$(x^kf(x),x^kg(x))$也是一个解,同余式的等价关系并没有变。
这里的$x^kf(x)$称作$f(x)$的循环。
恢复密钥的难点在于无法被穷举或者碰撞。如果使用穷举进行攻击,需要验证$f(x)\cdot h(x)(\bmod q)$是否是三值多项式。
根据$f(x)\in\mathcal{T}(d+1,d)$,需要先令$d+1$个系数为$1$,然后让剩下$N-(d+1)$个系数中的$d$个为$-1$,但是由于所有的$f(x)$的循环都满足,所以有$N$中选择。
举个例子,提供的公开参数为$(N,p,q,d)=(251,3,257,83)$,看起来数并不是很大,然而爆破出密钥需要的次数约为:
造格破解
格攻击就是格规约攻击,常用的用途是用来解小未知数方程。
这里的思想通过构造格得到私钥,也就是通过用公钥$h(x)$解出私钥$f(x)$和$g(x)$,和同余密码系统类似,但是这里我们构造的对象是多项式而不是之前的整数。
对于公共参数$(N,p,q,d)$和公钥$h(x)=h_0+h_1x+…+h_{N-1}x^{N-1}$,构造格:
这个格和同余密码系统的格形式上其实差不多,下面的推导也和同余密码系统的神似:
注意到格$L$的维度为$2N$,每个行向量有$2N$个坐标,可以看做用两个多项式向量链接在一起的向量,也就是说现在将私钥$f(x),g(x)$连在一起所得到的结果是否是格$L$的向量。
还是回到这个公式:
转为等式,但是这里补给$q$的参数不是整数而是多项式,这里设为$u(x)$把上式换个形式:
发现:
发现$(f,g)$是格中的向量,设公共参数$d≈\frac N3,q≈2N$,计算范数,比较一下高斯期望:
当$N$为大数,向量长度远小于高斯期望,格的最短向量就极有可能是向量$(f,g)$或者它的循环,即为得到了私钥。
一个例子:
1 | bits = 512 |
这是一个一维的NTRU密钥的生成,在这个例子中,有方程:
已知$q,h$求解$f,g$,知道$f,g<\sqrt{\frac q2}$,$\gcd(f,qg)=1$。