Tongsuo 支持半同态加密算法 EC-ElGamal
背景
随着大数据与人工智能的快速发展,个人隐私数据泄露和滥用时有发生,隐私安全问题也越来越被重视,国家于 2020 年施行密码法、2021 年施行个人信息保护法,对个人隐私数据和数据安全加密有更高的要求。因此,隐私计算也不断地被提及和关注,源于其有优秀的数据保护作用,使得『数据不出域、 可用不可见』,限定了数据的使用场景,防止了数据的泄露,而引起了业界的热捧。 隐私计算是指在保护数据本身不对外泄露的前提下,实现数据共享和计算的技术集合,共享数据价值,而非源数据本身,实现数据可用不可见。 隐私计算对于个人用户来说,有助于保障个人信息安全; 对于企业来说,隐私计算是数据协作过程中履行数据保护义务的关键路径; 对于政府来说,隐私计算实现数据价值最大化的重要支撑。
隐私计算目前在金融、医疗、电信、政务等领域均在开展应用试验,比如:
- 银行和金融机构在不泄露各方原始数据的前提下,进行分布式模型训练,可以有效降低信贷、欺诈等风险;
- 医疗机构无需共享原始数据便可进行联合建模和数据分析,数据使用方在不侵犯用户隐私的情况下,可以使用建模运算结果数据,有效推动医疗行业数据高效利用;
- ……
隐私计算的相关技术有多方安全计算(MPC)、可信执行环境(TEE)、联邦学习(FL)、同态加密(HE)、差分隐私(DP)、零知识证明(ZKP)、区块链(BC)等等。这些技术各有优缺点,隐私计算的产品或者平台也是由这些技术来搭建。
其中与密码学明显相关的是同态加密,目前同态加密算法的开源项目各有千秋,用户使用比较复杂。Tongsuo 作为基础密码库,应该提供一套简单易用和高效的同态加密算法实现和接口,让上层应用更方便简单地使用同态加密算法。
此外,随着隐私计算技术的兴起,蚂蚁集团推出了开箱即用、软硬件结合的隐私计算基础设施,一站式解决方案,即可信原生一体机。Tongsuo 作为蚂蚁可信原生一体机中的核心基础软件密码库,将同态加密等隐私计算所需的相关密码学能力整合其中,为可信原生一体机的用户带来更加便捷高效的使用体验。
同态加密
同态加密(Homomorphic Encryption, HE)是指满足密文同态运算性质的加密算法,按性质分为加法同态和乘法同态:
- 加法同态
- 满足:
- 椭圆曲线加密算法满足加法同态:
- 乘法同态
- 满足:
- RSA加密算法满足乘法同态:
同态加密后得到密文数据,对密文数据进行同态加法或者乘法得到密文结果,将密文结果同态解密后可以得到原始数据直接加法或者乘法的计算结果,如下图: 根据满足加法和乘法的运算次数又分为:全同态加密和半同态加密
- 全同态加密( Fully Homomorphic Encryption, FHE )
- 支持任意次的加法和乘法运算
- 难实现、性能差(密钥过大,运行效率低,密文过大)
- 主流算法:Gentry、BFV、BGV、CKKS
- 需要实现的接口:(非本文重点,略)
- 半同态加密(Partially Homomorphic Encryption, PHE)
- 只支持加法或乘法中的一种运算,或者可同时支持有限次数的加法和乘法运算
- 原理简单、易实现、性能好
- 主流算法:RSA、ElGamal、Paillier
- 需要实现的接口:
- KeyGen():密钥生成算法,用于产生加密数据的公钥 PK(Public Key)和私钥 SK(Secret Key),以及一些公共参数 PP(Public Parameter)。
- Encrypt():加密算法,使用 PK 对用户数据 Data 进行加密,得到密文 CT(Ciphertext)。
- Decrypt():解密算法,使用 SK 对密文 CT 解密得到数据原文 PT(Plaintext)。
- Add():密文同态加法,输入两个 CT 进行同态加运算。
- Sub():密文同态减法,输入两个 CT 进行同态减法算。
- ScalaMul() 或者 Mul():密文同态标量乘法,输入一个 CT 和一个标量 PT, 计算 CT 的标量乘结果。
EC-ElGamal 原理
ElGamal 加密算法是基于 Diffie-Hellman 密钥交换的非对称加密算法,EC-ElGamal 是 ECC 的一种,是把ElGamal 移植到椭圆曲线上来的实现,主要计算有:椭圆曲线点加、点减、点乘、模逆和离散对数。
以下是 EC-ElGamal 的算法原理:
- 公共参数:
- G:椭圆曲线基点
- SK:私钥,SK=d,d 是 0 到椭圆曲线的阶 q 之间的随机数
- PK:公钥,PK=dG
- 加密
- 明文 m,随机数 r
- 计算密文 C:
- 明文 m 的取值范围为模 order(G) 的模空间,但实际使用时 m 需限制为较小的数(例如 32 比特长度),否则椭圆曲线离散对数问题(ECDLP)无法求解。
- 解密
- 计算 rPK: