Tongsuo 支持半同态加密算法 Paillier
· 阅读需 16 分钟
背景
在《Tongsuo 支持半 同态加密算法 EC-ElGamal》中,已经阐述了同态和半同态加密算法的背景和原理,可以移步查阅,总之,同态算法在隐私计算领域有着重要的作用,目前应用比较广泛的是 Paillier 和 EC-ElGamal 半同态加密算法,这两个算法都只支持加法同态,其接口也类似,只是原理和性能不一样,Paillier 是基于复合剩余类的困难性问题(大数分解难题)的公钥加密算法,有点类似 RSA,而 EC-ElGamal 是基于椭圆曲线数学理论的公钥加密算法,其安全性理论上要比 Paillier 要更好,但其性能各有优劣,EC-ElGamal 的加密和密文加法性能要比 Paillier 好,而 Paillier 的解密和密文标量乘法性能要比 EC-ElGamal 好,而且稳定,EC-ElGamal 的解密性能与解密的数字大小有关系,数字越大可能需要解密的时间越长,这与 EC-ElGamal 解密用到的解密表有关系,而 Paillier 的解密就没有这个问题,可以根据自己的业务特点选择使用 Paillier 还是 EC-ElGamal。
Paillier 原理
密钥生成
- 随机选择两个大素数 ,满足 ,且满足 p 和 q 的长度相等;
- 计算 以及, 表示最小公倍数;
- 随机选择整数 ,一般的计算公式如下:
- 随机选择整数
- 计算:,为了简化和提高性能,一般选1,
- 定义 L 函数:,计算:
- 公钥:,私钥:
加密
- 明文 m,满足
- 选择随机数 r,满足 且
- 计算密文: