Paillier半同态加密:原理、高效实现方法和应用
Paillier半同态加密:原理、高效实现方法和应用 https://mp.weixin.qq.com/s/zF-0KAAtaiNDB6TAa6t89Q
Paillier半同态加密:原理、高效实现方法和应用
一 简介
1 背景
《数据安全法》已于9月1日起正式实施,两个月后《个人信息保护法》也将开始施行,意味着数据安全和隐私保护方面的监管将会在年内陆续到位。 在合规收紧大背景下,“数据孤岛”现象日渐明显。如何实现安全的数据流通,保护数据隐私并发挥数据的价值,支持多方的联合计算,是各大数据平台亟需解决的问题。而隐私计算技术旨在实现“数据可用不可见”的目标,具有广阔的应用前景。在联合国隐私增强计算技术手册[35]中,列出了同态加密(Homomorphic Encryption, HE)、安全多方计算(Secure Multiparty Computation, MPC)等5种隐私计算技术,其中HE提供了对加密数据进行处理的能力,完美符合隐私计算的计算模式,是当前学术研究的热点,受到了广泛的关注。
2 何为同态加密(HE)?
HE是一种特殊的加密方法,它允许直接对加密数据执行计算,如加法和乘法,而计算过程不会泄露原文的任何信息。计算的结果仍然是加密的,拥有密钥的用户对处理过的密文数据进行解密后,得到的正好是处理后原文的结果。
根据支持的计算类型和支持程度,同态加密可以分为以下三种类型:
- 半同态加密(Partially Homomorphic Encryption, PHE):只支持加法或乘法中的一种运算。其中,只支持加法运算的又叫加法同态加密(Additive Homomorphic Encryption, AHE);
- 部分同态加密(Somewhat Homomorphic Encryption, SWHE):可同时支持加法和乘法运算,但支持的计算次数有限;
- 全同态加密(Fully Homomorphic Encryption, FHE):支持任意次的加法和乘法运算。
在同态加密概念被Rivest在1978年首次提出[15]后,学术界出现了多个支持PHE的方案,如RSA、GM[13]、Elgamal[14]、Paillier[1]。此后,SWHE方案也相继问世,如BGN[16]。关于FHE如何实现,学术界在很长的时间都没有答案。直到2009年,Gentry[28]使用理想格构造了第一个FHE方案,轰动了整个学术界,并引发了学者们对于FHE方案构造的研究热潮。此后相继涌现出多个优秀的FHE方案,包括BFV[36]、BGV[37]、CKKS[38]等,以及多个优秀的开源算法库如SEAL[39]、HELib[40]等。
3 为何需要半同态加密(PHE)?
通用安全计算方法有所不足
隐私计算的应用场景非常广泛,除满足多方的通用计算(算数或布尔计算)功能外,还有如隐私集合求交(Private Set Intersection, PSI)[17]、隐私保护机器学习[4]、加密数据库查询[9]、门限签名[3]等等更加细分的应用。然而,在几种主要的通用计算技术路线中,每种方法各有各的效率/安全性缺陷。FHE在计算有限次乘法后需要较复杂的去除噪声的操作,经典的通用MPC协议通信开销较大,而TEE的安全性高度依赖于硬件厂商,无法提供密码学上严谨的安全性。在复杂的计算场景中,单独使用某种通用方法通常得不到一个可用的落地方案,这也激发了学者们研究对于特定场景的特定解法。一个可行的方案通常是根据具体场景来进行定制化的设计,通过组合、优化不同的技术组件来得到安全、高效的方案,精准满足该场景需求。
PHE登场:辅助多种隐私计算场景
图1.1. PHE的应用场景
由于通用安全计算方法的一些不足,以及在一些特定场景只需要使用一种HE运算(如加法)即可完成功能,PHE在隐私计算领域得到了大量使用,在多个开源库(如FATE[31])和大量学术顶会(如S&P、NDSS等[4][7][18][19][11][21])的方案中都有它的身影。PHE的高效、支持无限次加法或乘法的特点,使其成为隐私计算的重要基本组件,可辅助完成多种隐私计算功能:
1)隐私保护数据聚合
由于加法PHE可以在密文上直接执行加和操作,不泄露明文,在到多方协作的统计场景中,可完成安全的统计求和的功能。
- 在联邦学习中,不同参与方训练出的模型参数可由一个第三方进行统一聚合。使用加法PHE,可以在明文数据不出域、且不泄露参数的情况下,完成对模型参数的更新,此方法已应用在实际应用(如FATE[31])和多个顶会工作中(如SIGMOD[4]、KDD[7]、ATC[18]);
- 在在线广告投放的场景中,广告主(如商家)在广告平台(如媒体)投放在线广告,并希望计算广告点击的转化收益。然而,广告点击数据集和购买数据集分散在广告主和广告平台两方。使用PHE加密结合隐私集合求和(Private Intersection-Sum-with-Cardinality, PIS-C)协议[19]可以在保护双方隐私数据的前提下,计算出广告的转化率。 该方案已被Google落地应用[20];
- 在加密数据库SQL查询场景,在数据库不可信的情况下,可以通过部署协议和代理来保护请求者的查询隐私。其中,PHE可以用来完成安全数据求和和均值的查询[9]。
2)乘法三元组生成
通用安全计算根据计算电路的不同可分为算数计算和布尔计算,对于算数计算来说,其中的难点是如何做乘法。而使用预生成的乘法三元组来辅助乘法运算的方法可以大大降低乘法的在线开销,是目前最为流行的方法。PHE是用于计算乘法三元组的重要工具[2][12],已在多个顶会方案(如NDSS[11]、S&P[21])和实际产品(如Sharemind[2])中得到应用,对于加速安全计算具有重要意义。
3)构造特定的隐私保护协议
在机器学习预测分类场景中,若拥有模型的一方不可信(如外部厂商),在数据方输入样本进行预测分类时,可能需要保护样本数据的隐私。PHE作为building block可以构造出隐私保护比较协议和argmax协议,并可以此进一步构造出隐私保护朴素贝叶斯分类器和超平面决策分类器[24]。此外,用PHE还可构造出不经意选择(Oblivious Selection)协议,来支持隐私保护决策树分类器[25]。
4)门限签名
传统签名方式要求签名时从存储介质(如磁盘)中拉取完整私钥到内存,存在泄露风险(如被木马、病毒窃取,侧信道攻击等)。 使用门限签名可以有效规避此类风险,让多方协作完成签名过程,并确保私钥没有在任何一方被恢复。特定的PHE算法可以用于实现门限签名[3],相关方案已在集团密钥管理系统落地[22]。
5)同态秘密分享
同态秘密分享是一种前沿的安全计算技术,可以用来大幅降低安全计算的交互通信量。具有特定代数结构的PHE方案经过特殊设计,可以用来实现同态秘密分享[10],具有广阔的应用前景。
6)隐私集合求交
使用PHE结合多项式的方法可构造出PSI协议[17]。
4 Paillier:最著名的半同态加密方案
Paillier是一个支持加法同态的公钥密码系统 [1],由Paillier在1999年的欧密会(EUROCRYPT)上首次提出。此后,在PKC'01中提出了Paillier方案的简化版本[26][8],是当前Paillier方案的最优方案。在众多PHE方案中,Paillier方案由于效率较高、安全性证明完备的特点,在各大顶会和实际应用中被广泛使用,是隐私计算场景中最常用的PHE实例化方案之一。
其他的支持加法同态的密码系统还有DGK [5]、OU [6]和基于格密码的方案[12]等。其中,DGK方案的密文空间相比Paillier更小,加解密效率更高,但由于算法的正确性和安全性在学术界没有得到广泛研究和验证,且我们的实验表明算法的加解密部分存在缺陷,不推荐在工业界代码中使用。OU和基于格的加法同态计算效率更高,也是PHE不错的候选项。其中OU的在方案中的使用频率相对较低,而基于格的方案密文大小较大,在一些特定场景有自身的优势。
数据技术及产品部-数据安全生产平台团队对Paillier加密方案的原理和高效实现方法开展了研究,利用多种优化方法实现了目前最优的Paillier加解密效率,可助力基于Paillier加密的上层协议在集团真实业务场景中落地。
二 Paillier方案原理
1 加法同态加密定义
在描述具体方案之前,我们先定义加法PHE。首先列举方案具有的所有算法。
- KeyGen():密钥生成算法。用于产生加密数据的公钥PK(Public Key)和私钥SK(Secret Key),以及一些公开常数PP(Public Parameter);
- Encrypt():加密算法。使用PK对用户数据Data进行加密,得到密文CT(Ciphertext);
- Decrypt():解密算法。用于解密得到数据原文PT(Plaintext)。
HE除了加解密以外,还具有在密文上进行处理的能力,所以还应拥有“处理”算法。对于加法PHE,支持的算法有同态加以及同态标量乘(标量乘法可看作多次加法)。
- Add():同态加算法。输入两个CT进行同态加运算。
- ScalaMul():同态标量乘算法。输入一个CT和一个标量PT,计算CT的标量乘结果。
2 Paillier方案描述
原版Paillier方案于论文[1]中提出,下面对方案进行描述: