2.4.4 全同态加密算法
半同态加密算法仅支持密文上的某一种运算,但机器学习场景的计算过程是相当复杂的,比如某些非线性的激活函数。如果想在数据的密文状态上完成非线性激活函数的运算,那么半同态加密算法无法保证计算结果的正确性,因此便产生了对全同态加密算法的需求。
全同态加密算法是指在不解密的情况下,可以进行任意次的加法和乘法操作,同时保证在解密后与明文做相同操作的结果是相等的。从理论上讲,能够进行任意次的加法和乘法操作,便意味着可以使用电路等方法实现其他任意复杂的运算。但由于这个过于理想的属性,从半同态加密算法到全同态加密算法的发展道路不是一帆风顺的,其间密码学专家和学者做了多种尝试,直到2009年才由Gentry构造出了第一个全同态密码算法。但该算法复杂的电路实现导致加密时的噪声扩张速度过快,从而影响了解密的正确性[61]。后来,Gentry和Halevi对算法中的自举技术等方面进行了改进,从理论上解决了解密错误的问题,但由于自举技术的实现过程十分复杂,且十分耗时,因此并不能对密文进行任意次的操作,这导致全同态加密算法的实用性受到了影响[62]。因此,目前同态加密的实际应用依然以半同态加密为主。