matlab paillier加密_paillier加密算法原理详解

Paillier加密算法是一种公钥加密方法,基于复合剩余类的困难问题,支持加法同态。本文详细介绍了算法的加密解密过程、密钥生成、加解密实例,以及解密所需的数学原理,包括卡迈克尔定理的应用。同时,展示了如何通过Paillier系统实现加法同态加密,使得加密后的密文相乘对应于明文的相加。
摘要由CSDN通过智能技术生成

paillier加密算法是一种公钥加密算法,基于复合剩余类的困难问题。满足加法同态,即密文相乘等于明文相加:D(E(m1)·E(m2))=m1+m2。这里详细介绍其加密解密是如何推导的,需要具备数论、代数系统、模运算的相关知识,同时理解起来可能需要多阅读几遍并加以思考。

先将密钥生成和加解密过程罗列便于直观看

加密过程

在进行加解密之前,必须先产生可以用来加密的公钥n和g。n是两个大小相近的两个大素数的乘积:n=p·q。g是$ℤ_{n^{2}}$中的半随机数,同时g的阶必须在$ℤ^{*}_{n^{2}}$中并且能被n整除。由于g必须符合一些特殊性质(我们将在解密部分提出)所以$ℤ^{*}_{n^{2}}$中会有很少一部分元素不能用作g,意味着g是一个半随机数。为了简单计算,我们先选取两个小素数p=7,q=11计算得到n=p·q=77。从$ℤ^{*}_{n^{2}}$中选择g(g的阶必须是$ℤ^{*}_{n^{2}}$中元素并且是n的倍数。除此之外,g需要满足的另一个性质将会在解密时详细描述),在这里我们先选择5652作为g。因为g模n2的阶是2310且是77的倍数,并且在$ℤ^{*}_{n^{2}}$中。那么g所需要的包括未清楚定义的所有性质将会被满足。至此,我们找到了用来实际加解密运算过程的公钥(n,g)。随着公钥发布,任何人都能使用公钥加密数据并将密文传给私钥持有者。整个过程可用图一表示。

计算实例

公式

明文m=42

随机数r=23

c ≡ (5652)42·(23)77mod 5929

≡ (4019)(606) ≡ 4624 mod 5929

创建明文消息m,m∈ℤn

随机选择非零整数 r∈$ℤ^{*}_{n}$

计算密文c ≡ gm·rnmod n2

图1:n = 77, g = 5652时paillier系统加密

c是加密信息,私钥持有者解密时无需了解r的值。

解密过程

在已知p,q和g的情况下,任何人都可以将收到的加密消息c解密。我们注意到在已知p,q的情况下,卡迈克尔公式λ(n) = lcm[(p – 1)(q – 1)]很容易计算。我们也注意到,如果g ∈ $ℤ_{n^{2}}$,就像我们之前选作公钥的g,卡迈克尔定理保证gλ(n) ≡ 1 mod n成立。卡迈克尔定理表明如果两个整数a和n互质,那么关系式 aλ(n)≡ 1 mod n。因为g是模n2的单元,显然与n2互质,意味着g与n也是互质的。在这个基础上,卡迈克尔定理成立。解密时,忽略密文c的值,对于所有使用公钥对(n, g)进行的解密,计算gλ(n)mod n2都是必要的。gλ(n)mod n2计算得到的值是$ℤ_{n^{2}}$中的一个元素,由卡迈克尔定理可知,该值 ≡ 1 mod n。如果我们从结果值中减1得到的值可以被n整除。计算过程如图2

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值