半同态加密-Paillier

原文:Paillier P. Public-key cryptosystems based on composite degree residuosity classes[C]//International conference on the theory and applications of cryptographic techniques. Springer, Berlin, Heidelberg, 1999: 223-238.

一、方案描述

密钥生成

  • 随机选择两个大素数 p p p q q q满足 g c d ( p q , ( q − 1 ) ( p − 1 ) ) = 1 gcd(pq,(q-1)(p-1))=1 gcd(pq,(q1)(p1))=1,且满足 p p p q q q长度相等。
  • 计算 n = p q n=pq n=pq以及 λ = l c m ( p − 1 , q − 1 ) \lambda = lcm(p-1,q-1) λ=lcm(p1,q1),这里 l c m lcm lcm表示最小公倍数, ∣ n ∣ |n| n n n n的比特长度
  • 随机选择整数 g ← Z n 2 ∗ g\leftarrow Z^*_{n^2} gZn2 ( 这里取 g = n + 1 既可以简化运算,且使得正确性证明更容易 ) \textcolor{red}{(这里取g=n+1既可以简化运算,且使得正确性证明更容易)} (这里取g=n+1既可以简化运算,且使得正确性证明更容易)
  • 定义 L L L函数: L ( x ) = x − 1 n L(x)=\frac{x-1}{n} L(x)=nx1,计算 μ = ( L ( g λ   m o d   n 2 ) ) − 1   m o d   n \mu=(L(g^\lambda ~mod ~n^2))^{-1}~ mod ~ n μ=(L(gλ mod n2))1 mod n
  • 最终得到公钥 ( n , g ) (n,g) (n,g),私钥 ( λ , μ ) (\lambda,\mu) (λ,μ)

加密

  • 输入明文消息 m m m,满足 0 ≤ m ≤ n 0\leq m \leq n 0mn
  • 选择随机数 r r r满足 0 ≤ r ≤ n 0\leq r \leq n 0rn r ∈ Z n ∗ r \in Z^*_{n} rZn
  • 计算密文 c = g m r n   m o d   n 2 c=g^mr^n~mod ~ n^2 c=gmrn mod n2

解密

  • 输入密文 c c c,满足 c ∈ Z n 2 ∗ c\in Z^*_{n^2} cZn2
  • 计算明文消息 m = L ( c λ   m o d   n 2 ) ⋅ μ   m o d   n m=L(c^\lambda~mod ~ n^2)\cdot \mu ~mod ~n m=L(cλ mod n2)μ mod n

同态加法

c = c 1 ⊕ c 2 = c 1 ⋅ c 2   m o d   n 2 c =c_1\oplus c_2= c_1\cdot c_2 ~mod~n^2 c=c1c2=c1c2 mod n2,其中 c 1 c_1 c1 c 2 c_2 c2为密文。

同态标量乘法(密文明文乘法)

c = a ⊗ c 1 = c 1 a   m o d   n 2 c = a \otimes c_1=c_1^a~mod~n^2 c=ac1=c1a mod n2,其中 c 1 c_1 c1为密文, a a a为明文(标量)。

二、正确性分析

加密解密正确性

m = D e c r y p t ( 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 ) ) − 1   m o d   n m = Decrypt(c)=L(c^\lambda~mod ~ n^2)\cdot \mu ~mod ~n=L(c^\lambda~mod ~ n^2)\cdot (L(g^\lambda ~mod ~n^2))^{-1} ~mod~ n m=Decrypt(c)=L(cλ mod n2)μ mod n=L(cλ mod n2)(L(gλ mod n2))1 mod n
      = c λ   m o d   n 2 − 1 g λ   m o d   n 2 − 1 = g m λ ⋅ r n λ   m o d   n 2 − 1 g λ   m o d   n 2 − 1 = g m λ   m o d   n 2 − 1 g λ   m o d   n 2 − 1 = ( 1 + n ) m λ   m o d   n 2 − 1 ( 1 + n ) λ   m o d   n 2 − 1 ~~~~~=\frac{c^\lambda~mod~n^2-1}{g^\lambda~mod~n^2-1}=\frac{g^{m\lambda}\cdot \textcolor{red}{r^{n\lambda}}~mod~n^2-1}{g^\lambda~mod~n^2-1}=\frac{g^{m\lambda}~mod~n^2-1}{g^\lambda~mod~n^2-1}=\frac{(1+n)^{m\lambda}~mod~n^2-1}{(1+n)^\lambda~mod~n^2-1}      =gλ mod n21cλ mod n21=gλ mod n21gr mod n21=gλ mod n21g mod n21=(1+n)λ mod n21(1+n) mod n21
      = ( 1 m λ + 1 ( m λ − 1 ) n + 1 ( m λ − 2 ) n 2 + ⋯ + n m λ )   m o d   n 2 − 1 ( 1 λ + 1 ( λ − 1 ) n + 1 ( λ − 2 ) n 2 + ⋯ + n λ )   m o d   n 2 − 1 = 1 + n + n 2 + n 3 + ⋯ + n m λ   m o d   n 2 − 1 1 + n + n 2 + n 3 + ⋯ + n λ   m o d   n 2 − 1 ~~~~~=\frac{(1^{m\lambda}+1^{(m\lambda-1)}n+1^{(m\lambda-2)}n^2+\cdots+n^{m\lambda})~mod ~n^2-1}{(1^{\lambda}+1^{(\lambda-1)}n+1^{(\lambda-2)}n^2+\cdots+n^{\lambda})~mod ~n^2-1}=\frac{1+n+n^2+n^3+\cdots+n^{m\lambda} ~mod~ n^2 -1}{1+n+n^2+n^3+\cdots+n^{\lambda} ~mod~ n^2 -1}      =(1λ+1(λ1)n+1(λ2)n2++nλ) mod n21(1+1(1)n+1(2)n2++n) mod n21=1+n+n2+n3++nλ mod n211+n+n2+n3++n mod n21
      = 1 + n m λ / 2   m o d   n 2   − 1 1 + n λ / 2   m o d   n 2   − 1 = n m λ n λ = m ~~~~~=\frac{1+nm\lambda/2 ~mod ~n^2~-1}{1+n\lambda/2 ~mod ~n^2~-1}=\frac{nm\lambda}{n\lambda}=m      =1+/2 mod n2 11+nmλ/2 mod n2 1=nmλ=m

补充:证明    r n λ   m o d   n 2 = 1 ~~r^{n\lambda}~mod~n^2=1   r mod n2=1
根据欧拉定理:如果 r r r y y y互质,则 r ϕ ( y ) = 1   m o d   y r^{\phi(y) }=1~mod ~y rϕ(y)=1 mod y
r n λ = r p q ( p − 1 ) ( q − 1 ) r^{n\lambda}=r^{pq(p-1)(q-1)} r=rpq(p1)(q1),则可以得到
r p ( p − 1 ) = 1   m o d   p 2 r^{p(p-1)}=1~mod~p^2 rp(p1)=1 mod p2,则 ( r p ( p − 1 ) ) x = ( p 2 + 1 ) x = 1   m o d   p 2 (r^{p(p-1)})^x=(p^2+1)^x=1~mod~p^2 (rp(p1))x=(p2+1)x=1 mod p2 这里可以展开 ( p 2 + 1 ) x \textcolor{red}{这里可以展开(p^2+1)^x} 这里可以展开(p2+1)x
所以 r n λ − 1 ∣ p 2 r^{n\lambda}-1|p^2 r1∣p2 r n λ − 1 ∣ q 2 r^{n\lambda}-1|q^2 r1∣q2,则 r n λ − 1 ∣ n 2 r^{n\lambda}-1|n^2 r1∣n2

同态加法正确性

c 1 ⊕ c 2 = c 1 ⋅ c 2   m o d   n 2 = g m 1 r 1 n g m 2 r 2 n   m o d   n 2 = g m 1 + m 2 ( r 1 r 2 ) n   m o d   n 2 c_1\oplus c_2= c_1\cdot c_2 ~mod~n^2 =g^{m_1}r_1^ng^{m_2}r_2^n~mod~n^2=\textcolor{red}{g^{m_1+m_2}}(r_1r_2)^n~mod~n^2 c1c2=c1c2 mod n2=gm1r1ngm2r2n mod n2=gm1+m2(r1r2)n mod n2,解密后得到 m 1 + m 2 m_1+m_2 m1+m2

明文密文乘法正确性

a ⊗ c = ( g m r n ) k   m o d   n 2 = g m k r n k   m o d   n 2 a\otimes c=(g^mr^n)^k~mod~n^2=\textcolor{red}{g^{mk}}r^{nk}~mod~n^2 ac=(gmrn)k mod n2=gmkrnk mod n2,解密得到 m k mk mk

三 安全性分析

  1. 敌手知道公钥 ( n , g ) (n,g) (n,g)无法推出私钥 λ \lambda λ,这是一个 大整数因子分解问题 \textcolor{red}{大整数因子分解问题} 大整数因子分解问题
  2. 满足语义安全(IND-CPA),如下图为secreflow社区课程的解析。
    在这里插入图片描述
  3. 方案安全性可以归约到判定性合数剩余假设(DCRA),即给定一个合数n和整数z,判定z是否在 n 2 n^2 n2下是否是n次剩余是困难的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值