Zama文章 之 同态加密概论

原文链接:Homomorphic Encryption 101

Homomorphic Encryption 101

全同态加密(FHE)长期被视为密码学的圣杯。其概念与70年代末提出,但首次实现仅在30年前。现在,公共和私用行业都鼓励这个新的安全范式且为FHE的实用性积极工作。

始于1978年,由RSA中的R和A,与Michael Dertouzos为用户隐私提出同态性。图中简介了FHE发展。

什么是FHE

加密让敏感信息在存储或传输时受到保护。但是标准加密技术要求数据解密才能操作。同态加密背后的想法是不解密并直接计算加密数据。这一名字来自于数学概念同态性(homomorphism):一个集合的元素在保持原有元素间关系的情况下转换为另一集合的元素。

应用到加密中,这就意味着操作一个明文或一个密文会产生等价的结果。就是当操作密文时在加密形式下操作明文。例如,给出两个密文c_1c_2分别由明文x_1x_2加密得到,那么存在公开操作\oplus,使得密文c_3=c_1\oplus c_2是明文x_3=x_1+x_2的加密。

允许加密文或乘密文的密码系统(不能都可以操作)称之为半同态加密(partially homomorphic encryption)方案;比如ElGmal密码(1985)和Paillier密码(1999)。我们说一个方案是“全”同态的,需要它能同时支持密文的加法和乘法,因为所有的程序都能表示为电路的加法和乘法。

第一个全同态加密被Craig Gentry发现于2009年,并介绍了自举(bootstrapping)的概念

带噪音操作:自举技巧

大多数全同态加密的方案依赖于格上的困难问题。因此,密文必须包含确定级别的噪音来保证加密的安全性。然而带来的问题是同态计算要增加密文中噪音的级别(个人理解:要噪音的级别就是多少,原文对级别用的词是level)。只要噪音低于一个确定的阈值,密文就可以被解密。但是当噪音增长太多就会溢出到数据中,导致不可能解密。

 为了防止溢出,一个特殊的噪声操作技巧——自举,被应用于密文,有效的将噪音重置在很小的级别。

在Gentry的FHE方案中,自举就是同态地评估解密电路,获得另一个由相同明文加密的密文。因为解密可以移除噪声,所以自举的密文中噪声被重置为很小的级别。一个获取全同态加密可行的策略是在部分同态加密(somewhat homomorphic encryption)每次执行加法或乘法后对其进行自举操作。

自举的还是层级的?(Bootstrapped or leveled?)

自Gentry的发现后,出现了几代成功的FHE,他们大多要么控制同态计算的噪声增长,要么优化自举操作。尤其是出现了下列两种方法:

  • 快速自举(也称自举的方案):此方案被设计的主要目标就是尽可能多的减少自举的计算开销。基于第三代GSW方案的FHEW密码,被设计带有大幅优化的自举。在Gentry方案中两个密文乘花费三十分钟(个人理解:这么慢吗?我很惊讶,应该不是我翻译错了),用FHEW自举密文花运行了半秒。FHEW的自举最终被TFHE优化,一次自举仅用几十毫秒。
  • 更少噪声的操作(也称层级方案):此方案是参数化的以确保给定函数的电路可以在不用自举的情况下同态评估。因为同态乘法引入了最多的噪声,所以最关键的就是需评估的电路的乘法深度(或者说是层的个数),即连续乘法的最长序列。因此层级FHE方案提供了噪声预算来支持L级乘法,这里的L是电路乘法深度。代表方案有BFV、BGV、CKKS

对于第一类或第二类FHE方案的选择取决于使用情况:简单情况用层级FHE,更复杂的用自举FHE然而,理想的来说,我们是要结合二者,这也是我们在Zama做的工作。

布尔的还是算术的?(Boolean or Arithmetic?)

这里还有一种区分对于这些不同的FHE方案。Gentry的初始工作是加密比特作为输入然后加或乘他们。这可被扩展为至少两种方向。

  • 布尔电路:加法对应于异或,乘法对应于与。事实上任何函数都可以被表示为一个由一系列二进制门相连接的布尔电路。甚至可以仅仅由通用的与非门来表示。对于加密数据,输入两个加密比特的密文,可以评估一个自带自举操作的二进制门。输出的加密比特的密文是“干净的”,因为是自举的输出,噪声已经被修正了级别。这个过程可以迭代。这就是门自举(gate bootstrapping),如FHEW或TFHE。
  • 算术电路:这种电路不操作比特,而是输入模p的整数(p>2),并由一系列加法和乘法组成算术电路(当p=2时为布尔电路)。这种方案一般是层级FHE方案用的。对于算术电路其他形式的输入也有,比如CKKS的实数,这时的计算是近似的。

可控自举和函数电路(Programmable bootstrapping and functional circuits):一个新的范式

迄今为止,最快的自举是TFHE的(几十毫秒),虽然其原设计为布尔电路,TFHE可以扩展支持其他输入形式,如整数。

进一步讲,TFHE的自举对于评估单变量函数是可控为免费的(个人理解:此处不甚明了,需要了解可以细查PBS),同时可以减少噪声。这杯称为可控自举(programmable bootstrapping PBS),是现如今评估非线性函数最好用的工具,比如神经网络中的激活层。

PBS操作不仅能同态评估单变量函数,也可以用于计算多变量函数。比如最大值函数max(x,y),可以被变换为max(x,y)=y+max(0,x-y)。这里Kolmogorov(1957)有一个结论就是任意多变量函数都可表达为单变量函数的线性组合。

这带来了一种新的计算范式,函数电路(functional circuits),一个方案主要实施了同态加和单变量函数就可以是全同态的。在Zama的TFHE变体中,单变量函数可以使用可控自举同态评估,其中加法可以用层级的方法评估。

在Zama的开源FHE中有可控编程,结合了TFHE的特点。(原文此处有链接)。

神经网络的应用

神经网络是函数电路的特殊情况,激活层是非线性单变量函数,获得先前层被操作的输入的和。计算激活函数在FHE中众所周知是很难的,因为非线性不能被简单的加和乘(使用可控编程)精确表示。在我们发布在CSCML 2021的论文中,我们展示了可控自举能同态评估深度神经网络,且比之前的工作更快更深更准。三种神经网络(NN-20,NN-50,NN-100)有20、50和100稠密(dense)和卷积层,有92神经元,使用ReLu激活层,用MNIST数据集训练,在私人电脑上评估。

虽然这么说早点,但是这仍然显示了FHE已经到了黄金时间,可以用于云服务,我们很自信在五年内这些分支可以优化100到1000x,让FHE成为隐私保护中无处不在的技术。

个人理解:本篇主要简单阐述了FHE的大概发展情况及最基本的内容,对于其可控自举和函数电路是什么意思我没太搞懂,待以后深入了解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值