Paillier半同态加密 【练习markdown】

Paillier半同态加密

Paillier算法介绍

基本概念

  • 质数:
    • 也称素数,是指只能被1和本身整除的自然数,即大于1的自然数中,除了1和它本身以外,没有其它的因数。比如2、3、5、7、11等都是质数,而4、6、8、9等则不是质数。
  • Z n ∗ Z_n^* Zn
    • 表示模n意义下,即 [ 0 − n ) [0-n) [0n)中所有与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 xy1(modn)2
  • 欧拉函数 φ ( 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)=(p1)(q1)即为 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(p1,q1))满足 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} ω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 x2a(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 xna(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 ax2(modn) b ≡ x 2 ( m o d n ) b \equiv x^2 \pmod n bx2(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)x1+nxmodn2,则 y − 1 ≡ n x m o d    n 2 y-1\equiv nx\mod n^2 y1nxmodn2,两边同除以 n n n得, x ≡ ( y − 1 ) / n m o d    n x\equiv(y-1)/n\mod n x(y1)/nmodn。所以,在Paillier方案中,会构造函数 L ( y ) = ( y − 1 ) / n L(y)=(y-1)/n L(y)=(y1)/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} zyn(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,(p1)(q1))=1
  • 计算 n = p q n=pq n=pq以及 λ = l c m ( p − 1 , q − 1 ) λ=lcm(p-1, q-1) λ=lcm(p1,q1)这里 l c m lcm lcm表示最小公倍数
  • 随机选择整数 g g g, g ∈ Z n 2 ∗ g \in Z^*_{n^2} gZn2,且满足 μ = ( 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)=nx1
  • 得到公钥 ( n , g ) (n, g) (n,g),私钥 ( λ , μ ) (\lambda, \mu) (λ,μ)
加密
  • 对于明文 m m m m ∈ Z n ∗ m\in Z_n^* mZn,选择随机数 r r r r ∈ Z n ∗ r\in Z_n^* rZn 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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值