Skip to content

同态加密 ​

Paillier加密: 任意次同态加与标量乘 ​

支持无限次的加法同态以及明文k与密文的乘法同态(k⋅Enc(m)),这里先讲g优化为n+1后的Paillier加密。

  1. 参数设置:

    1. 选择两个大素数p,q,计算 N=pq
    2. 计算 ϕ(N)=(p−1)(q−1),ϕ(N2)=N⋅ϕ(N),∵ϕ(Nm)=Nm⋅(1−1a)⋅(1−1b)⋯=Nm−1⋅(a−1)(b−1)⋯,其中a,b,⋯为N的不同质因数
    3. 由二项式定理易知:(1+N)a∈Z∗N2modN2≡(1+aN), ∴(1+N)NmodN2≡1,易知:ind(1+N)∈Z∗N2=N
    4. 对于一个映射 f(a,b)=(1+N)a⋅bNmodN2 是单射
    证明

    设 f(a1,b1)=f(a2,b2),则 (1+N)a1⋅b1N≡(1+N)a2⋅b2NmodN2,则 (1+N)a1−a2≡(b2b1−1)NmodN2,设 a1−a2=k,则 (1+N)k≡(b2b1−1)NmodN2,如果k≠0,则(1+N)k=1+kN,而(b2b1−1)N≡1modN,则kN≡0modN恒成立,但是对于模N2而言,如果k≠0,则kN<N2,故不成立,所以k=0,即a1=a2,从而b1=b2。证毕。

    1. f(a1,b1)⋅f(a2,b2)→f(a1+a2,b1b2) 是一个同态
    2. 公钥为 N, 私钥为 ϕ(N),既(p−1)(q−1)
    3. 记 L(x)=x−1N
  2. 加密

    1. 选择随机数r∈Z∗N
    2. 明文m∈ZN
    3. 密文计算:c=Enc(m,r)=(1+N)m⋅rN=(1+m⋅N)⋅rNmodN2
  3. 解密

    1. 计算 cϕ(N)modN2,则 cϕ(N)≡((1+N)m⋅rN)ϕ(N)modN2≡(1+N)m⋅ϕ(N)modN2,∵gcd(r,N2)=1andϕ(N2)=Nϕ(N)→rNϕ(N)≡1modN2
    2. 计算 (1+N)m⋅ϕ(N)−1N≡1+m⋅ϕ(N)N−1N≡m⋅ϕ(N)modN (参数设置中的3)
    3. 解得 m≡m⋅ϕ(N)⋅ϕ(N)−1modN

原始版本:把 1+N 换成生成元 g,则加密为 c=gm⋅rNmodN2,跟优化后的比多了一次幂运算。

  1. 同态加

    1. 设有两个密文 c1=Enc(m1,r1),c2=Enc(m2,r2)
    2. 则 c1⋅c2modN2=(1+N)m1⋅r1N⋅(1+N)m2⋅r2NmodN2 =(1+N)m1+m2⋅(r1r2)NmodN2=Enc(m1+m2,r1r2)
  2. 标量乘

    1. 设有密文 c=Enc(m,r),标量k∈Z
    2. 则 ckmodN2=((1+N)m⋅rN)kmodN2 =(1+N)km⋅(rk)NmodN2=Enc(km,rk)

BGN加密: 任意次同态加与一次同态乘 ​

配对的一些性质:

乘法同态:

e(u1·u2,v)=e(u1,v)·e(u2,v)

e(u,v1·v2)=e(u,v1)·e(u,v2)

指数可提到映射外:e(ua,v)=e(u,v)a,e(u,vb)=e(u,v)b

合起来:e(ua,vb)=e(u,v)ab

  1. 密钥生成

    1. 选择两个大素数p,q,计算 N=pq
    2. 准备双线性映射 e:G×G→GT,生成元 g∈G,生成元 h∈GT,ind(G)=ind(GT)=N
    3. 公钥为 (n,g,h,e,G,GT),私钥为 (p,q)
  2. 加密 计算 c=gm⋅hr,其中m∈ZN为明文,r∈ZN为随机数

  3. 解密

    1. 计算 cp=(gm⋅hr)p=(gp)m
    2. 然后对其进行离散对数求解,得到m
  4. 同态加 Enc(m1)⊕Enc(m2)=g1mh1r⋅c⋅hr =gm1+m2⋅hr1+r2+r =Enc(m1+m2)

  5. 同态乘

    1. c1=Enc(m1)=gm1hr1,c2=Enc(m2)=gm2hr2

    2. denote g1=e(g,g),h1=e(g,h),有 ind(g1)=n, ind(h1)=p

    3. Enc(m1)⊗Enc(m2)==e(c1,c2)h1r=e(gm1hr1,gm2hr2)h1r=e(gm1,gm2hr2)⋅e(hr1,gm2hr2)h1r=e(gm1,gm2)⋅e(gm1,hr2)⋅e(hr1,gm2)⋅e(hr1,hr2)⋅h1r=e(g,g)m1m2⋅e(g,h)m1r2⋅e(h,g)r1m2⋅e(h,h)r1r2⋅h1r=g1m1m2⋅h1m1r2+r1m2+⋯+r=g1m1m2⋅h1r~=Enc(m1m2)
    4. alt text