Pailliar加密算法1999年被提出,是基于DCRT(Decisional Composite Residuosity Assumption)的加法同态加密方案。

DCRT

DCRT问题是说,判断一个数是否是模n2n^2n2的nnn次剩余是困难的,也就是没有多项式时间算法可以解决。

密钥生成

Pailliar算法是一个非对称加密算法,有公钥和私钥。
选择两个素数ppp和qqq,计算n=pqn=pqn=pq.
在区间(0,n2)(0,n^2)(0,n2)随机选择一个数ggg,满足L(gλmod  n2)L(g^\lambda \mod n^2)L(gλmodn2)与 nnn互素,其中 λ\lambdaλ是p−1p-1p−1与q−1q-1q−1的最小公倍数(也就是n的欧拉函数值,即小于n与n互素的元素个数)。L(x)L(x)L(x)是一个函数,L(x)=x−1nL(x)=\frac{x-1}{n}L(x)=nx−1​,这里使用的是一般的除法,不是模除法。
通常需要选择g=1mod  ng=1 \mod ng=1modn,使得L(gxmod  n2)=kxmod  nL(g^x \mod n^2)=kx \mod nL(gxmodn2)=kxmodn,k是整数.
证明如下:
由g=1mod  ng=1 \mod ng=1modn,知道g=1+kng=1+kng=1+kn,k是一个整数。
所以,gx=(1+kn)x=1+kn+c2n2+c3n3+⋯+cxnx=1+knmod  n2g^x=(1+kn)^x=1+kn+c_2n^2+c_3n^3+\cdots+c_xn^x=1+kn \mod n^2gx=(1+kn)x=1+kn+c2​n2+c3​n3+⋯+cx​nx=1+knmodn2.
所以,g=1mod  ng=1 \mod ng=1modn,使得L(gxmod  n2)=kxmod  nL(g^x \mod n^2)=kx \mod nL(gxmodn2)=kxmodn.

最后产生的公钥pk=(n,g)pk=(n,g)pk=(n,g),私钥sk=λsk=\lambdask=λ.

加密

设要加密的明文为m∈[0,n)m \in [0,n)m∈[0,n);
在(0,n)(0,n)(0,n)之间选择一个随机数rrr;
密文c=gmrnmod  n2c=g^mr^n \mod n^2c=gmrnmodn2.

解密

m=L(cλmod  n2)⋅L−1(gλmod  n2)mod  nm=L(c^\lambda \mod n^2) \cdot L^{-1}(g^\lambda \mod n^2) \mod nm=L(cλmodn2)⋅L−1(gλmodn2)modn,其中L−1(gλmod  n2)L^{-1}(g^\lambda \mod n^2)L−1(gλmodn2)是L(gλmod  n2)L(g^\lambda \mod n^2)L(gλmodn2)关于n的模逆元。

解密正确性验证

首先,我们知道nλn\lambdanλ就是n2n^2n2的欧拉函数值,所以,rnλ=1mod  n2r^{n\lambda}=1 \mod n^2rnλ=1modn2.
m=L(cλmod  n2)⋅L−1(gλmod  n2)mod  n=L(gmλrnλmod  n2)⋅(kλ)−1mod  n=L(gmλmod  n2)⋅(kλ)−1mod  n=kmλ⋅(kλ)−1mod  n=mmod  n\begin{aligned} m&=L(c^\lambda \mod n^2) \cdot L^{-1}(g^\lambda \mod n^2) \mod n\\ &=L(g^{m\lambda}r^{n\lambda} \mod n^2) \cdot (k\lambda)^{-1} \mod n\\ &=L(g^{m\lambda} \mod n^2) \cdot (k\lambda)^{-1} \mod n\\ &=km\lambda \cdot (k\lambda)^{-1} \mod n\\ &=m \mod n \end{aligned}m​=L(cλmodn2)⋅L−1(gλmodn2)modn=L(gmλrnλmodn2)⋅(kλ)−1modn=L(gmλmodn2)⋅(kλ)−1modn=kmλ⋅(kλ)−1modn=mmodn​

同态加法

假设 C1=gm1r1nmod  n2,C2=gm2r2nmod  n2C_1=g^{m_1}r_1^n \mod n^2, C_2=g^{m_2}r_2^n \mod n^2C1​=gm1​r1n​modn2,C2​=gm2​r2n​modn2分别是 m1m_1m1​和m2m_2m2​的两个有效密文。
C1+C2=gm1r1n⋅gm2r2nmod  n2=gm1+m2(r1r2)nmod  n2C_1+C_2=g^{m_1}r_1^n \cdot g^{m_2}r_2^n \mod n^2=g^{m_1+m_2}(r_1r_2)^n \mod n^2C1​+C2​=gm1​r1n​⋅gm2​r2n​modn2=gm1​+m2​(r1​r2​)nmodn2是m1+m2m_1+m_2m1​+m2​的一个有效密文。

标量乘法

设C=gmrnmod  n2C=g^mr^n \mod n^2C=gmrnmodn2是mmm的密文。
则Ca=(gmrn)amod  n2=gam(ra)nmod  n2C^a=(g^mr^n)^a \mod n^2=g^{am}(r^a)^n \mod n^2Ca=(gmrn)amodn2=gam(ra)nmodn2显然是amamam的一个有效密文。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐