Paillier加密是一种公钥加密算法,基于复合剩余类的困难问题。其满足于加法同态,即密文相乘等于明文相加,即:
密钥生成
快速生成私钥
在密钥相同的情况下,可以快速生成密钥:
, 为欧拉函数,即
加密
解密
加法同态
Paillier加密的两个密文消息相乘的结果解密后得到两个消息相加的结果。
对于两个密文 和
其中 和 都是 中的元素,因此 也属于 , 并具有相同的性质,所以 可以看作是 加密的密文, 的解密结果为 。
总结
常见的同态加密算法中,Paillier算法和Benaloh算法仅满足加法同态,RSA算法和ElGamal算法只满足乘法同态,而Gentry算法则是全同态的。
https://en.wikipedia.org/wiki/Paillier_cryptosystem
https://blog.csdn.net/sinianluoye/article/details/82855059
http://www.cs.tau.ac.il/~fiat/crypt07/papers/Pai99pai.pdf
⑵ 同态加密的实现原理是什么在实际中有何应用
同态加密是一种加密形式,它允许人们对密文进渗轮衡行特定的代数运算得到仍然是加密的结果,将其解密所得到的结果与对明文进行同样的运算结果一样。换言之,这项技术令人们可以在加密的数据中进行诸如检索、比较等操作,得出正确的结果,而在整个处理过程中无需对数据进行解密。其意义在于,真正从根本上解决将数据及其操作委托给第三方时的保密问题,例如对于各种云计算的应用。
这一直是密码学领域的一个重要课题,以往人们只找到一些部分实现这种操作的方法。而2009年9月桐族克雷格·金特里(Craig Gentry)的论文 从数学上提出了“全同态加密”的可行方法,即可以在不解密的条件下对加密数据进行任何可以在明文上进行的运算,使这项技术取得了决定性的丛做突破。人们正在此基础上研究更完善的实用技术,这对信息技术产业具有重大价值。
⑶ 全同态加密和部分同态的加密有什么区别
区别:
1、部分同态既能做乘法又能做加法,但是不能同态计算任意的函数;全同态加密可以对密文进行无限次数的任意同态操作,也就是说它可以同态计算任意的函数。
2、部分同态加密能做的事情,全同态加密也能做;但是全同态加密一般计算开销比较大,所以部分同态加密方案够用的时候没必要选用全同态加密;
3、设计出全同态加密的协议是比设计部分同态加密的算法要难的。
同态加密规定
如果有一个加密函数f,把明文A变成密文A’,把明文B变成密文B’,也就是说f(A)=A’,f(B)=B’。另外还有一个解密函数,能够将f加密后的密文解密成加密前的明文。
对于一般的加密函数,如果我们将A’和B’相加,得到C’。我们用对C’进行解密得到的结果一般是毫无意义的乱码。
但是,如果f是个可以进行同态加密的加密函数, 我们对C’使用进行解密得到结果C, 这时候的C = A + B。这样,数据处理权与数据所有权可以分离,这样企业可以防止自身数据泄露的同时,利用云服务的算力。
⑷ 同态加密(1) GSW同态加密方案
所有的更新都放在我的博客中, 本文地址为 https://lingeros-tot.github.io/2019/08/11/%E5%90%8C%E6%80%81%E5%8A%A0%E5%AF%86-1-GSW%E5%8A%A0%E5%AF%86%E6%96%B9%E6%A1%88/
GSW同态加密方案确实如论文标题一样, 概念清晰明了, 其Intuition简单到一个刚学完线性代数的大一新生也能理解. GSW还支持基于属性的加密, 但本文中我们将不介绍这一部分内容.
当然, 完全理解GSW方案仍然需要用到一些比较进阶的知识, 如LWE问题的困难性等. 我们在本文中不会对这些知识做过多的介绍, 这些知识将在今后其他的博文中介绍. 关于同态加密的基础知识可以参阅博文 同态加密(0) 基础概念 , 这篇博文完成后, 地址将被更新到这里.
GSW方案是由Craig Gentry [1] , Amit Sahai与Brent Waters于2013年提出的方案, 发表于论文[GSW13] [2] 中.
最基本的GSW同态加密方案的私钥( )是一个向量 [3] , 而所有的明文 都被加密一个矩阵 中, 其中 是以 为近似特征向量并以 为近似特征值的矩阵, 即我们要求
这里可以看出, 我们只需要挑选 中非 的位(最好是选较大的位), 如第 位 , 并比较 与 的值就可以解出 的值.
一个需要注意的地方就是, 虽然 取自 , 但被视作是 中的元素, 因此具体的运算也是按照 的运算方式来进行.
我们也可以将噪声(error)显式地写出来, 记作
其中 是非常小的向量. 因此可以看出, 如果 确实是一个较小的噪声, 那么我们就可以正确地解出 .
现在我们来验证该加密方案具有同态性质. 现在假设有两个密文 , 对对应的明文分别是 , 即
其中 均为较小的噪声, 那么令 , 我们检验 的解密结果
这里可以看出, 确实是一个比较小的噪声项, 但是要让 的噪声比较小, 那么就需要让 是一个较小的矩阵(即其最大的元素较小), 我们稍后会解释如何做到这一点.
虽然说是乘法同态性质, 但是由于 , 我们也可以将 视作是做了同态的与(AND)运算. 与运算相对来说是比较简单的, 但是仅有与运算是不够的, 因为与运算是单调的, 单调的电路不可能是完备的, 我们需要实现一个超强的逻辑门----与非门的同态运算.
设 , 其中 为 阶单位矩阵, 则
根据之前的讨论, 如果 是一个较小的项, 我们有把握能从 中解出 .
到这里有没有一种心情舒畅的感觉? 与非门生万物, 我们确实可以通过不断地叠加与非门来实现相当复杂的函数运算, 并且由于与非门是完备的, 仅用与非门可以实现任何一个布尔函数.
虽然与非门非常强大, 但是每一次进行与非门运算, 都会导致新密文得噪声变得更大, 因此较多层的运算后, 噪声可能大得导致解密错误! 因此我们必须评估我们究竟能进行多少次的运算, 以及在快要达到极限的时候使用Bootstrapping技术. 这一点我们将在详细介绍方案的时候来说明.
这里我们要首先介绍一种工具, 我们称其为Lattice Gadget, 它的本质是一些代数运算, 能够辅助我们从标准的LWE加密方案生成满足同态性质的密文.
第一个运算是 , 它的作用是将一个 [4] 向量的每一位按照二进制展开, 即每一个元素 表示成二进制的形式 , 其中 [5] . 即
即将 的每一位都展开成了二进制, 变成 位, 整个结果一共是 位. 显然, .
类似的, 我们可以定义 的反函数 , 令
即将每一位的二进制表示重新组合成了 表示. 但是要注意的是, 并没有要求参数一定要是只由 构成的向量, 我们可以定义一个全新的函数
这个操作有什么意义? 它将那些不是全由 构成的 重新"抹平"成了由 中的元素构成, 并且能够保持其一定的性质.
下面介绍另一个不是那么好看, 但是却非常简单的操作 . 的功能也是将一个 向量转换为 向量, 但是却使用的是完全不一样的方式.
即将 的每一位, 展开为 位, 并且后一位是前一位的两倍. 使得整个向量变成 . 这样做的好处是, 如果 分别是 中的一位, 那么
前面一部分就是 中第 组的第 位, 而后一部分就是 中第 组的第 位, 那么显然有
如果将 直接写成 的形式, 我们还有
实际上左右两边的两项都是由中间得到的, 这样就可以将左右两边连接在一起. 这样我们发现一个惊人的事实: 如果内积的第二项是标准的 结果的形式, 那么对第一项做 操作不会改变内积的结果! 实际上这也不难理解, 因为Flatten操作就是把数值过高的位分到权重更高的位而已. 但是这样做有一个好处就是, 使得 变成每一位都是 的 .
我们将以上几种记号都推广到对矩阵可用, 例如对于 , 令
其余几种记号也做类似的推广, 总之就是, 对矩阵的每一列的列向量做相应的操作. 这时我们发现, 如果密钥 确实是某个向量 进行 的结果, 即 , 那么就有
这可以使得 变成一个较小的矩阵, 而不改变最后与 的相乘的结果! 这样使得 可以代替 进行下一层的同态运算使得我们要求的 项较小! 我们直接将 的结果记作
现在我们开始具体介绍方案. 我们要说的是, GSW方案根据解密算法的选区不同, 实际上有构造两套方案. 第一种是选择 作为解密算法, 该算法仅能解出 , 因此整个同态运算中主要用与非门构建逻辑电路进行计算. 另一个解密算法 可以解出 , 这样就可以自然地使用加法与乘法进行运算.
首先我们要说的是, GSW并不是一个标准假设下的全同态加密方案. GSW如果要做到全同态加密, 需要用到Bootstrapping, 进而需要用到LWE加密方案的Circular Security假设(即用一对公私钥中的公钥来加密私钥相关信息的加密结果是安全的). 我们这里不介绍Bootstrapping的具体过程, 仅介绍Somewhat HE.
这里的参数较多, 需要逐一解释一下. 首先 是安全参数, 表示密码方案中基于的困难的问题的复杂程度, 所有的参数都应该(直接或间接)基于这个参数选择. 参数 表示同态运算的层数, 由于同态运算的层数由噪声的占比决定, 因此想要做更多的同态运算次数, 那么噪声就不应该太快掩盖 , 就应该相应地选择大一些. 而LWE问题的错误分布 还有维数 按理来说是应该根据 来选择, 但是这两个参数是可以根据 来进行权衡(tradeoff)的, 这里直接用基础参数 来代替 . 而参数 则是为了方便我们进行表示而引入的记号, 并且他们在前面也出现过.
实际上这里就是变相生成了一组LWE问题的实例, 如果对这里不熟悉, 可以跟进我的Blog学习知识. 相关博文更新后会在这里补充地址.
这就是整个加密的过程, 其中 操作是为了保证 是一个较小的矩阵, 我们知道 是一个 向量, 那么
也是一个小噪声, 因此密文符合我们的要求.
实际上这里的解密过程就是比较 与 的值. 而为了使得解密出错的概率最低, 所以选择 较大的一项, 这样使得错误最多可以积累到 而解密不出错.
接下来我们看一下进行 层同态运算后, 噪声的增长. 我们知道, 两个噪声为 的密文行一次加法运算, 噪声增长到 . (这里 , 表示解密中的噪声项), 而两个噪声为 的密文乘法结果的的噪声项为 , 最多为 . 如果初始噪声为 的密文进行 层运算, 则噪声最多增长为 , 由这一点可以看出, 我们最多可以进行对数次数的同态运算. 但是对数次的运算已经足够用于解密运算, 因此我们可以基于Circular Security假设, 使用Bootstrapping技术实现全同态.
⑸ 隐私计算-密码学-同态加密
近年来,随着大数据与人工智能的盛行,针对个人的个性化的推荐技术的不断发展,人们在享受便利的同时,也深深的感觉到无处不在的监控与监事,比如刚刚浏览了一个网站的商品,当去其他网站访问的时候就会推荐类似的产品;刚刚搜索了某件商品,在很多其他的场景中都会给你推荐。这种体验,谈不上不好,也谈不上多坏,但是如果仔细想想,就感觉自己的网上进行裸奔,个人隐私,一清二楚,毫无隐私可言,细思极恐。
不过随着广大用户对于个人隐私的重视程度不断加强,以及法律法规的不断完善,针对个人隐私的保护提出了更高的要求,什么样的数据可以采集、收集与使用,如何使用都是一个比较敏感的问题。十三届全国人大常委会第三十次会议表决通过了《 中华人民共和国个人信息保护法 》,并与2021年11月1日起施行。确立个人信息保护原则、规范处理活动保障权益、禁止“大数据杀熟”规范自动化决策、严格保护敏感个人信息、赋予个人充分权利等。新规施行后,违法的主体将 最高可处五千万以下或者上一年度营业额百分之五 以下的罚款。
鉴于上述情况,近年来隐私计算技术被不断的提及,源于其有优秀的数据保护作用,使得 “数据不出域、数据可用不可见、数据可算不可见” ,限定了数据的使用场景,防止了数据的泄露,而引起了业界的热捧。
隐私计算技术的演进历程如下图描述,以下是杨强教授在KDD 2021中国区的分享材料:
可以看到,隐私计算技术从1979年就开始了,最开始是安全多方计算、到差分隐私、到TEE, 再到最近火的不能再火的联邦学习 ,一系列的技术应运而生。那为啥现在隐私计算这么火呢。
注:隐私计算技术成熟度曲线
但是这些技术本身的安全加密都是采用共同的方法与策略,下面讲述下隐私计算的加密技术。
本文主要介绍同态加密,
众所周知,优秀的程序员需要 严谨的逻辑思维与具象能力 ,当然在材料的时候,可能需要适当的渲染。但是对于技术的理解,对技术的探索,严谨的逻辑与坚实的推理是非常重要的。所以,对于“数据加密”这个命题,需要进行一番探索。
如此三态合一,即可保障数据的全链路的生命周期安全 。
那么有没有办法解决数据计算的安全问题呢?答案就是 同态加密技术 。保障数据的运行态的安全,那么同态加密技术具体是如何实现,如何应用,并且有哪些限制呢?
什么是同态加密? ,引用Gentry大佬的原话:
同态加密(Homomorphic Encryption, HE),指满足密文同态运算性质的加密算法,即数据经过同态加密之后,对密文进行某些特定的计算,得到的密文计算结果在进行对应的同态解密后的明文等同于对明文数据直接进行相同的计算, 实现数据的“可算不可见” 。同态加密的实现效果如图所示。
举个例子: 国内某家大型的三甲医院,由于历史悠久,并且医术精湛,历史遗留了大量的用户病例数据 。如今思考基于这些病例数据进行建模分析。但是由于数据量特别巨大,医院本身的IT资源有限,计算能力不足。
这个时候,云厂商找了过来。但是对于医院来说,这些数据本身是用户的隐私信息,并且也是医院的核心价值,所以尽管云厂商再三保证数据安全, 但是医院还是不能够放心的将数据上传到云厂商进行计算 。
正当这个事情推进不下去的时候,云厂商从密码行业花大价钱招来某个大牛,大牛提出一个方案,这样吧,我们现在有 这样一门技术,不需要传输明文数据,只需要传输密文就好,而且加密秘钥由医院自己保存,我们基于上传的密文数据做不解密的密态运算( 并计算函数医院提供就好),这样数据不会泄露,云厂商对数据无感知,之后传回密文结果,医院自己解密就好 。医院一听非常高兴,那就这么办吧。
下面将核心流程描述下。
这里,大家可能有个问题,这个f应该是什么样的函数,有什么样的限制条件?HE方案是支持任意的数据处理方法f,还是说只支持满足一定条件的f呢?根据f的限制条件不同,HE方案实际上分为了两类:
Paillier加密算法是Pascal paillier[1]在1999年发明的概率公钥加密算法,该算法 基于复合剩余类的困难问题,是一种满足加法的同态加密算法 ,已经广泛应用在加密信号处理或第三方数据处理领域。
前面我们分析过 同态加密的核心流程 ,大家可以一起回忆一下。核心的函数包括:秘钥生成、明文加密、密文解密,下面我们来一步一步的分析,并且描述下,
秘钥的生成主要有如下的步骤,
下面介绍一个完整的同态运算,m由 组成,介绍下同态加密的是如何使用密文计算的。
⑹ 同态加密简介
同态加密是数据加密方式的一种,特点是允许数据在加密情况下实现数学或逻辑运算。
同态加密通常为非对称性加密。因此在介绍同态加密之前,简单介绍一下非对称性加密。非对称性加密分为三个步骤:
1. 生成一对钥匙,一个公钥pub和一个密钥priv;
2. 使用公钥pub加密原始数据,得到加密数据,公式:pub(原始数据)= 加密数据 ;
3. 使用密钥priv解密加密数据,得到原始数据,公式:priv( 加密数据 )= 原始数据 ;
同态加密允许对 加密数据 进行处理,得到的解密结果等价于在原始数据下做运算。以联邦学习用到的Paillier算法举例,假设我有两个数 和 ,我希望把它们扔给第三方做加法运算,即 + 。同时不希望第三方知道 、 及它们之和的具体值,同态加密可以派上用场,具体步骤如下:
1. (本地)生成一对钥匙,公钥pub和密钥priv,公钥用于加密,密钥用于解密;
2. (本地)使用公钥pub分别加密 和 ,得到 ( )和 ( );
3. (第三方)使用 函数处理 和 ,即 ;
4. (本地)使用密钥priv解密 ,即 ;
4中 = + 。第三方通过上述步骤3实现了 和 在加密状态下做加法的操作。
为了更直观认识上述步骤,假设 =100, =200,步骤就变成:
1. (本地)生成一对钥匙,公钥pub和密钥priv,公钥用于加密,密钥用于解密;
2. (本地)使用公钥pub分别加密 和 ,得到 =1234, =4321 (举例);
3.(第三方) 使用 函数处理 和 ,即 =12345678;
4. (本地)使用解密priv解密 ,得到 = 300。
第三方在不知道 =100和 =200,但是通过 函数依然可以在加密情况下实现相加运算。
⑺ 隐私保护技术 同态加密
安全多方计算
同态加密
差分隐私
同态加密逐渐被认为是在 PPML 中实现安全多方计算的一种可行方法。
设 表示使用 作为加密密钥的加密函数。设 表示明文空间, 且 表示密文空间。一个安全密码系统若满足以下条件,则可被称为同态的(homomorphic):
对于 中的运算符 和 中的运算符 , 符号表示左边项等于或可以直接由右边项计算出来,而不需要任何中间解密。在本书中,我们将同态加密运算符设为 ,并且对密文的加法操作和乘法操作按如下方式重载:
加法:
标量乘法:
同态加密方法分为三类:部分同态加密 (Partially Homomorphic Encryption, PHE),些许同态加密 (Somewhat Homomorphic Encryption, SHE) 和全同态加密 (Fully Homomorphic Encryption, FHE)。
//待补充
⑻ 同态加密的同态加密的相关概念
同态加密的思想起源于私密同态,代数同态和算术同态是私密同态的子集。
R 和 S 是域,称加密函数 E:R→S 为:
加法同态,如果存在有效算法⊕,E(x+y)=E(x)⊕E(y)或者 x+y=D(E(x)⊕E(y))成立,
并且不泄漏 x 和 y。
乘法同态,如果存在有效算法 ,E(x×y)=E(x) E(y)或者 xy=D(E(x) E(y))成立,
并且不泄漏 x 和 y。
混合乘法同态,如果存在有效算法 ,E(x×y)=E(x) y 或者 xy=D(E(x) y)成立,并
且不泄漏 x。
减法同态,如果存在有效算法○- ,E(x-y)=E(x)○- E(y)或者 x-y=D(E(x)○- E(y))成立,
并且不泄漏 x 和 y,则称 E 为减法同态。
除法同态,如果存在有效算法○/ ,E(x/y)=E(x)○/ E(y)或者 x/y=D(E(x)○/ E(y))成立,
并且不泄漏 x 和 y,则称 E 为减法同态。
代数同态,如果 E 既是加法同态又是乘法同态。
算术同态,如果 E 同时为加法同态、减法同态、乘法同态和除法同态。
⑼ 请大神解答一下什么是同态加密,百度的都看不懂。
同态加密是一种特殊的加密方法,将明文加密之后通过特殊的运算处理得出的结果与把明文经过特殊处理再进行加密的结果是一样的。这项技术可以在加密的数据中进行诸如检索、比较等操作而无需对数据先进行解密,从根本上解决将数据委托给第三方时的保密问题。这种专业术语在网络上都是解释地比较深奥的,没有基础很难看懂,推荐你们去看煊凌科技的官网,上面的区块链专业术语都是解释得比较通俗。如果看不懂的话还可以在网站联系客服,请他们解答。
⑽ 秘密共享和同态加密的区别
解决的问题不同,应用场景。
1、秘密共享主要是用来将一个秘密信息分割成多份,交给不同的参与者,使得只有当所有参与者合并它们手中的信息时,才能还原出原始的秘密信息;而同态加密则是用来对凯罩已经加密的密文进行一系列计算,得到闭宴正确密文的计算结果,而不用解密得到明文再进行计算,从而实现对加密数据的计算保护和隐私保护。
2、秘密共享主要应用于多方安全计算、安全存储和安全通信等领域;而同态加密主要应盯态闹用于云计算、区块链和数据隐私保护等领域。