2.4.5 半同态加密算法在联邦学习中的应用
半同态加密算法在机器学习领域的应用已经相对成熟,为密码算法在实际应用中出现的不兼容性提供了众多解决方法。首先,我们介绍一下密码算法在实际场景中的直接应用会导致哪些不兼容的问题。
密码学是一门基于数论的科学,密码算法的设计一般都在某个特殊的代数结构上进行(比如有限域),也就是说,明文空间和密文空间中的元素都是“整数”,不存在小数。因此,第一个不兼容性出现在数字类型上。机器学习中的数据大多存在小数,如果想使用密码算法进行加密,那么必须先将小数编码至整数。常用的编码方案就是所有数同乘一个大整数(如10n),使得有效位均在小数点之前。第一个不兼容性很容易理解和解决,虽然编码操作会导致某些小数点后位数较多的数据产生误差,但是只要保证使用的系数足够大,便可将该误差控制在可以接受的范围内。
第二个不兼容性仍然来自代数结构。在密码学中,在代数结构中的运算都带有模操作,但在实际场景中对模操作的需求则比较少,密码算法的直接应用引入的模操作会导致解密错误。因此,需要对密码算法的参数进行设置,以保证模数N足够大,使得明文以及明文的运算结果始终小于N,从而保证在实际应用中不会出现因模操作导致的解密错误。具体来讲,我们无须保证所有中间结果均小于N,只需保证输入的明文以及待解密的运算结果小于N即可。举个例子,假如某加法同态加密算法的明文空间为ZN,我们在使用该算法进行加密时,必须保证所有的明文均为[0,N-1]中的整数,如图2-5中的明文m1和m2,另外,我们希望得到的计算结果m3也应在该范围内,否则得到的结果可能是m3-N。
图2-5 在半同态加密算法中明文的大小不能大于模数
由于全同态加密算法实用性的限制,在联邦学习中,主要使用半同态加密算法实现对联邦其他参与方私有数据的操作。半同态加密技术主要应用在纵向联邦学习中。
在纵向联邦学习中,不同的参与方有不同的特征,为了实现协同训练,在训练过程中,不同的参与方之间需要传输中间结果以聚合所有特征的效果,但这些中间结果往往会被恶意的联邦成员用来推理分析用户的隐私数据。为了避免隐私的泄露,联邦学习使用半同态加密算法对中间值进行处理,只传输中间结果的密文。得益于半同态加密算法的性质,隐私不仅得到了保护,其他参与方仍然能通过中间结果的密文值完成协议内容。具体可参考SecureBoost方案[63]。
在横向联邦学习中,同态加密的应用较少,而核心技术一般为差分隐私或者安全多方计算。如在文献[64]中,同态加密算法作为一种辅助技术,对差分隐私的噪声进行加密,而算法的隐私保护更多的是由差分隐私本身和安全多方计算完成的。