2.5 基于Python的安全计算库
前面介绍了联邦学习中常见的安全机制及实现。事实上,这些安全机制并非联邦学习所特有,它们各自在密码学领域中已经被广泛研究和使用,因此,当前也有很多开源的实现方案可供使用。本节简要介绍一些常用的基于Python实现的安全计算库。
Python开源程序包pycrypto提供了常用的加/解密算法的实现[2],不仅包括AES、DES、RSA、ElGamal等常用算法,还包括常用的散列函数(例如SHA256和RIPEMD160等)。特别地,Python开源程序包pycryptodome是pycrypto项目的一个分支(fork),提供了更加丰富的加/解密算法的实现,包括秘密共享算法[15]。在pycryptodome包里,对计算量大的操作还提供了高效的C语言扩展实现。
当前联邦学习系统里最常用的隐私保护机制是同态加密。开源的Python-Paillier程序包提供了支持部分同态加密(例如加法和标量乘法同态加密)的Python 3实现[16]。Python-Paillier程序包主要是实现了基于Paillier算法的加法和标量乘法同态加密算法,支持对浮点数的加密运算。
差分隐私的主要实现机制是在输入或输出上加入随机化的噪声(数据),例如拉普拉斯噪声、高斯噪声、指数噪声[201]等。开源的Python程序包differential-privacy提供了常用的差分隐私方法的实现[7]。IBM公司提供的开源程序包diffprivlib是另外一个常用的Python差分隐私程序库[175]。
开源的MPyC程序包提供了基于Python的安全多方计算的实现[14]。MPyC程序包主要提供了基于有限域上的阈值秘密共享,即使用Shamir的门限阈值密码共享方案以及伪随机秘密共享[253]。
常用的基于Python的安全计算程序包还有散列算法、ECC(Elliptic Curve cryptography)加密算法、ECDSA(Elliptic Curve Digital Signature Algorithm)加密算法和eth-keys秘钥生成算法等[17]。