Pailliar同态加密算法描述与证明
Pailliar加密算法1999年被提出,是基于DCRT(Decisional Composite Residuosity Assumption)的加法同态加密方案。
Pailliar加密算法1999年被提出,是基于DCRT(Decisional Composite Residuosity Assumption)的加法同态加密方案。
DCRT
DCRT问题是说,判断一个数是否是模 n 2 n^2 n2的 n n n次剩余是困难的,也就是没有多项式时间算法可以解决。
密钥生成
Pailliar算法是一个非对称加密算法,有公钥和私钥。
选择两个素数 p p p和 q q q,计算 n = p q n=pq n=pq.
在区间 ( 0 , n 2 ) (0,n^2) (0,n2)随机选择一个数 g g g,满足 L ( g λ m o d n 2 ) L(g^\lambda \mod n^2) L(gλmodn2)与 n n n互素,其中 λ \lambda λ是 p − 1 p-1 p−1与 q − 1 q-1 q−1的最小公倍数(也就是n的欧拉函数值,即小于n与n互素的元素个数)。 L ( x ) L(x) L(x)是一个函数, L ( x ) = x − 1 n L(x)=\frac{x-1}{n} L(x)=nx−1,这里使用的是一般的除法,不是模除法。
通常需要选择 g = 1 m o d n g=1 \mod n g=1modn,使得 L ( g x m o d n 2 ) = k x m o d n L(g^x \mod n^2)=kx \mod n L(gxmodn2)=kxmodn,k是整数.
证明如下:
由 g = 1 m o d n g=1 \mod n g=1modn,知道 g = 1 + k n g=1+kn g=1+kn,k是一个整数。
所以, g x = ( 1 + k n ) x = 1 + k n + c 2 n 2 + c 3 n 3 + ⋯ + c x n x = 1 + k n m o d n 2 g^x=(1+kn)^x=1+kn+c_2n^2+c_3n^3+\cdots+c_xn^x=1+kn \mod n^2 gx=(1+kn)x=1+kn+c2n2+c3n3+⋯+cxnx=1+knmodn2.
所以, g = 1 m o d n g=1 \mod n g=1modn,使得 L ( g x m o d n 2 ) = k x m o d n L(g^x \mod n^2)=kx \mod n L(gxmodn2)=kxmodn.
最后产生的公钥 p k = ( n , g ) pk=(n,g) pk=(n,g),私钥 s k = λ sk=\lambda sk=λ.
加密
设要加密的明文为 m ∈ [ 0 , n ) m \in [0,n) m∈[0,n);
在 ( 0 , n ) (0,n) (0,n)之间选择一个随机数 r r r;
密文 c = g m r n m o d n 2 c=g^mr^n \mod n^2 c=gmrnmodn2.
解密
m = L ( c λ m o d n 2 ) ⋅ L − 1 ( g λ m o d n 2 ) m o d n m=L(c^\lambda \mod n^2) \cdot L^{-1}(g^\lambda \mod n^2) \mod n m=L(cλmodn2)⋅L−1(gλmodn2)modn,其中 L − 1 ( g λ m o d n 2 ) L^{-1}(g^\lambda \mod n^2) L−1(gλmodn2)是 L ( g λ m o d n 2 ) L(g^\lambda \mod n^2) L(gλmodn2)关于n的模逆元。
解密正确性验证
首先,我们知道 n λ n\lambda nλ就是 n 2 n^2 n2的欧拉函数值,所以, r n λ = 1 m o d n 2 r^{n\lambda}=1 \mod n^2 rnλ=1modn2.
m = L ( c λ m o d n 2 ) ⋅ L − 1 ( g λ m o d n 2 ) m o d n = L ( g m λ r n λ m o d n 2 ) ⋅ ( k λ ) − 1 m o d n = L ( g m λ m o d n 2 ) ⋅ ( k λ ) − 1 m o d n = k m λ ⋅ ( k λ ) − 1 m o d n = m m o d 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
同态加法
假设 C 1 = g m 1 r 1 n m o d n 2 , C 2 = g m 2 r 2 n m o d n 2 C_1=g^{m_1}r_1^n \mod n^2, C_2=g^{m_2}r_2^n \mod n^2 C1=gm1r1nmodn2,C2=gm2r2nmodn2分别是 m 1 m_1 m1和 m 2 m_2 m2的两个有效密文。
C 1 + C 2 = g m 1 r 1 n ⋅ g m 2 r 2 n m o d n 2 = g m 1 + m 2 ( r 1 r 2 ) n m o d n 2 C_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^2 C1+C2=gm1r1n⋅gm2r2nmodn2=gm1+m2(r1r2)nmodn2是 m 1 + m 2 m_1+m_2 m1+m2的一个有效密文。
标量乘法
设 C = g m r n m o d n 2 C=g^mr^n \mod n^2 C=gmrnmodn2是 m m m的密文。
则 C a = ( g m r n ) a m o d n 2 = g a m ( r a ) n m o d n 2 C^a=(g^mr^n)^a \mod n^2=g^{am}(r^a)^n \mod n^2 Ca=(gmrn)amodn2=gam(ra)nmodn2显然是 a m am am的一个有效密文。
更多推荐
所有评论(0)