同态加密之Paillier算法
0,背景介绍
同态加密,即原来在明文上的运算操作,经过同态加密后在密文上同样可以进行。一般有半同态和全同态加密之分:
-
半同态加密 (Partial Homomorphic Encryption, PHE):只支持某些特定的运算法则 f ,PHE 的优点是原理简单、易实现,缺点是仅支持一种运算(加法或乘法);
-
层次同态加密(Liveled HE,LHE):一般支持有限次数的加密算法,LHE 的优点是同时支持加法和乘法,并且因为出现时间比 PHE 晚,所以技术更加成熟、一般效率比 FHE 要高很多、和 PHE 效率接近或高于 PHE,缺点是支持的计算次数有限。
-
全同态加密 (Fully Homomorphic Encryption, FHE):支持无限次的任意运算法则 f,FHE 有以下类别:基于理想格的 FHE 方案、基于 LWE/RLWE 的 FHE 方案等等。FHE 的优点是支持的算子多并且运算次数没有限制,缺点是效率很低,目前还无法支撑大规模的计算。
第一个满足加法和乘法同态的同态加密方法直到2009年才由Craig Gentry提出。目前来说,全同态加密算法性能较差,应用较少。比较常用的是半同态加密算法,实现方式有 RSA (乘法同态)、Elgamal、Paillier (加法同态)等。
1,Paillier算法介绍
密钥生成
- 随机选择两个质数 p 和 q ,尽可能地保证 p 和 q 的长度接近或相等(安全性高);
- 计算 N=pq 和 λ=lcm(p−1,q−1),其中 lcm 表示最小公倍数;
- 随机选择 g∈Z∗N^2,满足 g c d ( L ( g λ m o d N 2 ) , N ) = 1 gcd(L(g^λ mod N^2),N)=1 gcd(L(gλmodN2),N)=1(后面会发现g=n+1满足条件,因此可以直接取g=n+1)。其中 Z 表示整数,下标表示该整数集合里有多少个元素;L(x)= x − 1 N \frac{x-1}{N} Nx−1, μ = ( L ( g λ m o d N 2 ) ) − 1 m o d N μ = (L(g^λ mod N^2))^{-1} \mod N μ=(L(gλmodN2))−1modN;
- 公钥为 (N,g);
- 私钥为(λ,μ)。
加密过程
对于任意明文消息 m ∈ Z N m∈Z_N m∈ZN,任意选择一随机数 r ∈ Z N ∗ r∈Z_{N}^* r∈ZN∗,计算得到密文 c :
c = E ( m ) = g m r N m o d N 2 c=E(m)=g^mr^N \mod N^2 c=E(m)=gmrNmodN

最低0.47元/天 解锁文章
6131

被折叠的 条评论
为什么被折叠?



