Paillier半同态加密
Paillier算法介绍
基本概念
- 质数:
- 也称素数,是指只能被1和本身整除的自然数,即大于1的自然数中,除了1和它本身以外,没有其它的因数。比如2、3、5、7、11等都是质数,而4、6、8、9等则不是质数。
-
Z
n
∗
Z_n^*
Zn∗:
- 表示模n意义下,即 [ 0 − n ) [0-n) [0−n)中所有与n互质的元素的集合。
-
Z
n
2
∗
Z_{n^2}^*
Zn2∗:
- 表示模
n
2
n^2
n2意义下的可逆元素集合。具体地,对于正整数
n
n
n,
Z
n
2
∗
Z_{n^2}^*
Zn2∗包含了模
n
2
n^2
n2意义下与
n
2
n^2
n2互质的所有元素。也就是说,如果
x
x
x属于
Z
n
2
∗
Z_{n^2}^*
Zn2∗,那么
x
x
x满足以下两个条件:
- x x x和 n 2 n^2 n2互质,即 g c d ( x , n 2 ) = 1 gcd\left(x, n^2\right) = 1 gcd(x,n2)=1
- x x x在模 n 2 n^2 n2意义下有逆元,即存在 y y y使得 x y ≡ 1 ( m o d n ) 2 xy \equiv 1\pmod n^2 xy≡1(modn)2
- 表示模
n
2
n^2
n2意义下的可逆元素集合。具体地,对于正整数
n
n
n,
Z
n
2
∗
Z_{n^2}^*
Zn2∗包含了模
n
2
n^2
n2意义下与
n
2
n^2
n2互质的所有元素。也就是说,如果
x
x
x属于
Z
n
2
∗
Z_{n^2}^*
Zn2∗,那么
x
x
x满足以下两个条件:
- 欧拉函数
φ
(
n
)
\varphi\left(n\right)
φ(n)
- n = p q n = pq n=pq,其中 p p p和 q q q是两个质数
- 欧拉函数 φ ( n ) = ( p − 1 ) ( q − 1 ) \varphi\left(n\right) = \left(p-1\right)\left(q-1\right) φ(n)=(p−1)(q−1)即为 Z n ∗ Z_n^* Zn∗中的元素个数
- 更进一步, Z n 2 ∗ Z_{n^2}^* Zn2∗的元素个数为 φ ( n 2 ) = n φ ( n ) \varphi\left(n^2\right) = n\varphi\left(n\right) φ(n2)=nφ(n)
- 卡迈克尔函数(Carmichael’s Function)
- λ ( n ) = l c m ( p − 1 , q − 1 ) ) \lambda\left(n\right) = lcm\left(p-1, q-1)\right) λ(n)=lcm(p−1,q−1))满足 a λ ( n ) ≡ 1 ( m o d n ) a^{\lambda\left(n\right)} \equiv 1 \pmod n aλ(n)≡1(modn)
- 根据卡迈克尔定理(Carmichael’s Theorem),对于任意元素
ω
∈
Z
n
2
∗
\omega \in Z_{n^2}^*
ω∈Zn2∗
- ω λ ≡ 1 ( m o d n ) \omega^\lambda \equiv 1 \pmod n ωλ≡1(modn)
- ω n λ ≡ 1 ( m o d n 2 ) \omega^{n\lambda} \equiv 1 \pmod {n^2} ωnλ≡1(modn2)
- n次剩余
- 在数论中,给定一个正整数 a a a和一个素数 p p p,如果存在整数 x x x使得 x 2 ≡ a ( m o d p ) x^2 \equiv a \pmod p x2≡a(modp),那么称 a a a是模 p p p的二次剩余(Quadratic Residue,QR),否则称 a a a是模 p p p的二次非剩余(Quadratic Non-Residue, QNR)。
- 类似地,如果存在整数 x x x使得 x n ≡ a ( m o d p ) x^n \equiv a \pmod p xn≡a(modp),那么称 a a a是模 p p p的n次剩余(nth Power Residue),否则称 a a a是模 p p p的n次非剩余(nth Power Non-Residue)。
- 当 n = 2 n = 2 n=2时,n次剩余就是二次剩余。n次剩余和二次剩余一样,具有很多重要的应用,例如在加密算法和密码学中被广泛使用。
- 复合剩余类问题(Composite Residuosity Problem,CRP)
- 在模 n n n意义下,给定两个整数 a a a和 b b b,判断是否存在整数 x x x,使得 a ≡ x 2 ( m o d n ) a \equiv x^2 \pmod n a≡x2(modn)且 b ≡ x 2 ( m o d n ) b \equiv x^2 \pmod n b≡x2(modn)同时成立。其中n是一个合数。
- 二项式定理
- 泰勒展开式 y = ( 1 + n ) x = ∑ k = 0 x C x k n k = 1 + n x + C x 2 n 2 + . . . y=(1+n)^x=\sum _{k=0}^xC_x^kn^k=1+nx+C_x^2n^2+... y=(1+n)x=∑k=0xCxknk=1+nx+Cx2n2+...,显然有 ( 1 + n ) x ≡ 1 + n x m o d n 2 (1+n)^x\equiv 1+nx\mod n^2 (1+n)x≡1+nxmodn2,则 y − 1 ≡ n x m o d n 2 y-1\equiv nx\mod n^2 y−1≡nxmodn2,两边同除以 n n n得, x ≡ ( y − 1 ) / n m o d n x\equiv(y-1)/n\mod n x≡(y−1)/nmodn。所以,在Paillier方案中,会构造函数 L ( y ) = ( y − 1 ) / n L(y)=(y-1)/n L(y)=(y−1)/n,可得 L ( y m o d n 2 ) ≡ x m o d n L(y\mod n^2)\equiv x\mod n L(ymodn2)≡xmodn。
算法思路
Paillier半同态加密算法的安全性基于复合剩余类问题(Decisional Composite Residusity Assumption, DCRA)的困难性,即在给出 y y y和 n n n的情况下,很难判断模 n 2 n^2 n2的n次剩余是否存在: z ≡ y n ( m o d n 2 ) z \equiv y^n \pmod {n^2} z≡yn(modn2)。
加解密过程
密钥
- 选择两个不同且长度相等的大素数 p p p, q q q,保证 g c d ( p q , ( p − 1 ) ( q − 1 ) ) = 1 gcd\left(pq, \left(p-1\right)\left(q-1\right)\right) = 1 gcd(pq,(p−1)(q−1))=1
- 计算 n = p q n=pq n=pq以及 λ = l c m ( p − 1 , q − 1 ) λ=lcm(p-1, q-1) λ=lcm(p−1,q−1)这里 l c m lcm lcm表示最小公倍数
- 随机选择整数 g g g, g ∈ Z n 2 ∗ g \in Z^*_{n^2} g∈Zn2∗,且满足 μ = ( L ( g λ ( m o d n 2 ) ) ) − 1 \mu=\left(L\left(g^\lambda\pmod{n^2}\right)\right)^{-1} μ=(L(gλ(modn2)))−1存在, L L L函数定义为 L ( x ) = x − 1 n L(x) = \frac{x-1}{n} L(x)=nx−1
- 得到公钥 ( n , g ) (n, g) (n,g),私钥 ( λ , μ ) (\lambda, \mu) (λ,μ)
加密
- 对于明文 m m m, m ∈ Z n ∗ m\in Z_n^* m∈Zn∗,选择随机数 r r r, r ∈ Z n ∗ r\in Z_n^* r∈Zn∗且 r r r和 n n n互质
- 计算密文
c = E n c ( m , n , g , r ) = g m r n ( m o d n 2 ) \begin{aligned} c &= Enc(m, n, g, r) \\ &= g^mr^n\pmod {n^2} \end{aligned} c=Enc(m,n,g,r)=gmrn(modn2)
解密
- 计算明文:
m = D e c ( c , λ , μ ) = L ( c λ m o d n 2 ) ∗ μ ( m o d n ) = L ( c λ m o d n 2 ) L ( g λ m o d n 2 ) ( m o d n ) \begin{aligned} m &= Dec(c, \lambda, \mu) \\ &= L\left(c^λ\mod{n^2}\right)*\mu\pmod n \\ &= \frac{L\left(c^\lambda \mod n^2\right)}{L\left(g^\lambda \mod n^2\right)}\pmod n \end{aligned} m=Dec(c,λ,μ)=L(cλmodn2)∗μ(modn)=L(gλmodn2)L(cλmodn2)(modn)