同态加密之Paillier算法

该文章已生成可运行项目,

同态加密之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算法介绍

密钥生成
  1. 随机选择两个质数 p 和 q ,尽可能地保证 p 和 q 的长度接近或相等(安全性高);
  2. 计算 N=pq 和 λ=lcm(p−1,q−1),其中 lcm 表示最小公倍数;
  3. 随机选择 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} Nx1 μ = ( L ( g λ m o d N 2 ) ) − 1 m o d    N μ = (L(g^λ mod N^2))^{-1} \mod N μ=(L(gλmodN2))1modN
  4. 公钥为 (N,g);
  5. 私钥为(λ,μ)。
加密过程

对于任意明文消息 m ∈ Z N m∈Z_N mZN,任意选择一随机数 r ∈ Z N ∗ r∈Z_{N}^* rZN,计算得到密文 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

本文章已经生成可运行项目
评论 74
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值