Paillier 同态加密

前言

同态加密其实是一种特殊的加密技术,它具有一种特殊的性质,即在密文上进行某种特定运算操作后,再解密得到的结果与在明文上进行同样的运算操作结果相同。换句话说,同态加密允许在加密状态下进行计算操作,而无需解密. 同态加密在加密货币领域具有极强重要的作用, 在多方协同签名进行转账, 智能合约方面都有同态加密的身影。

同态加密性质

同态加密,就是满足下面的性质的加密算法
在这里插入图片描述

  • FHE支持无限次的乘法和加法运算,当前算法复杂度高,实际使用较少。
  • SWHE支持有限次的加法和乘法运算。
  • PHE只支持加法或乘法运算中的一种。

PHE在实际中使用的较多。 加法同态的算法有Paillier算法、DGK算法、OU算法、基于格密码的方案等。乘法同态有我们常见的RSA算法、ElGamal算法等。

前置知识

为了彻底理解同态加密,这里我列举了一些需要用到的数学定理,公式。

二次项定理/泰勒展开

在这里插入图片描述

唯一分解定理‌

每一个大于 1 的自然数 n n n,要么本身是质数(素数),要么可以唯一地写成一系列质数次方的乘积。
n = p 1 a 1 × p 2 a 2 × . . . × p n a n n=p_1^{a_1} \times p_2^{a_2} \times ... \times p_n^{a_n} n=p1a1×p2a2×...×pnan
其中 a 1 , a 2 . . . , a n a_1,a_2...,a_n a1,a2...,an均为正整数

剩余类/同余类

设模为 n n n,根据对 n n n取模将所有正整数分为 n n n类,记作 [ 1 ] , [ 2 ] , . . . [ n − 1 ] [1],[2],...[n−1] [1],[2],...[n1], 记为 Z n Z_n Zn

[ a ] [a] [a] 表示 所有与整数 a a a n n n同余的整数构成的集合叫做模 n n n的一个剩余类, a a a [ a ] [a] [a]的代表元

n = 5 , a = 1 , [ 1 ] = 1 , 6 , 11 , 26 , 21... n=5,a=1,[1]=1,6,11,26,21... n=5,a=1,[1]=1,6,11,26,21...这些数字对5取模都为1

与 n 互质的剩余类,记为 Z n ∗ Z_n^* Zn
Z n ∗ = { a ∈ Z n ∣ g c d ( a , n ) = 1 } Z_n^*=\{a\in Z_n | gcd(a,n)=1\} Zn={aZngcd(a,n)=1}

费小马定理

在这里插入图片描述

欧拉函数

ϕ ( n ) \phi(n) ϕ(n)为小于等于 n n n的正整数中与 n n n互质的数的数

n n n为质数时很容易得到 ϕ ( n ) = n − 1 \phi(n)=n−1 ϕ(n)=n1
p h i ( 5 ) phi(5) phi(5)=4,因为有4个数与5互质分别是:1,2,3,4

  • 欧拉函数性质 : 若 p , q p,q p,q互质, n = p q , 则 ϕ ( n ) = ϕ ( p ) ϕ ( q ) = ( p − 1 ) ( q − 1 ) n=pq,则\phi(n)=\phi(p)\phi(q)=(p−1)(q−1) n=pq,ϕ(n)=ϕ(p)ϕ(q)=(p1)(q1)
  • 欧拉定理: 若 n n n a a a互质,则 a ϕ ( n ) ≡ 1 ( m o d n ) a^{\phi(n)} \equiv 1 \pmod n aϕ(n)1(modn)

Carmichael 函数

n ∈ N , a ∈ N n \in N, a \in N nN,aN, 使 a m = 1 ( m o d n ) a^m= 1 \pmod n am=1(modn)恒成立的最小正整数 m m m, 记 λ ( n ) \lambda(n) λ(n)

  • 对于素数 n n n λ ( n ) = ϕ ( n ) = n − 1 \lambda(n) = \phi(n) = n-1 λ(n)=ϕ(n)=n1(欧拉函数)。

  • 但对于合数, λ ( n ) \lambda(n) λ(n) 通常是 ϕ ( n ) \phi(n) ϕ(n) 的真因数。

    • n = p k n = p^k n=pk 是奇素数的幂, λ ( p k ) = ϕ ( p k ) = p k − 1 ( p − 1 ) \lambda(p^k) = \phi(p^k) = p^{k-1}(p-1) λ(pk)=ϕ(pk)=pk1(p1)
    • n = 2 k n = 2^k n=2k k ≥ 3 k \geq 3 k3,则 λ ( 2 k ) = 2 k − 2 \lambda(2^k) = 2^{k-2} λ(2k)=2k2
    • 对于一般的合数 n = ∏ i = 1 m p i k i n = \prod_{i=1}^m p_i^{k_i} n=i=1mpiki λ ( n ) \lambda(n) λ(n) 是所有 λ ( p i k i ) \lambda(p_i^{k_i}) λ(piki) 的最小公倍数。

Paillier算法

Paillier是一个支持加法同态的公钥密码系统,在众多PHE方案中,Paillier方案由于效率较高、安全性证明完备的特点,在各大顶会和实际应用中被广泛使用,是隐私计算场景中最常用的PHE实例化方案之一。

密钥生成

在这里插入图片描述

公钥加密

在这里插入图片描述

私钥解密

在这里插入图片描述

证明

在这里插入图片描述
在这里插入图片描述

总结

在环论中,同态加密本质是构造一个从‌明文环‌(如 Z n Z_n Zn )到‌密文环‌的‌环同态映射‌.加密函数 E : M → C E:M\rightarrow C E:MC 需满足

E ( m 1 + m 2 ) = E ( m 1 ) ⊕ E ( m 2 ) E ( m 1 ∗ m 2 ) = E ( m 1 ) ⊗ E ( m 2 ) E(m_1+m_2) =E(m_1) \oplus E(m_2) \\E(m_1 * m_2) =E(m_1) \otimes E(m_2) E(m1+m2)=E(m1)E(m2)E(m1m2)=E(m1)E(m2)

其中 M M M 是明文空间(通常是一个环), C C C 是密文空间(另一个环或代数结构)

主要参考

费马小定理(通俗易懂)
应用密码学 | Paillier同态加密算法简介
加密货币安全基石: 详解 Paillier 同态加密并使用币安tss-lib库

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值