隐私计算的技术调研报告

2019-03-05  本文已影响0人  区块链布道者Enoch

数据隐私的保护手段,主要分为可信硬件和密码学两个流派。硬件方面主要是可信执行环境(Trusted Execution Environment),而密码学方面有同态加密(Homomorphic Encryption),安全多方计算(Multi-party Computation)和零知识证明(Zero-knowledge Proof, ZKP)。在此之前,我们需要对电路门有个基本的概念:

image.png

接下来主要从性能和可用性方面来分析这三大技术方向,首先从FHE开始。
A.FHE,全同态可以说是云计算巨头决战的关键所在,IBM基于BGV方案推出了全同态的HElib,在业内获得了比较高的评价。

1)有几篇论文对HElib的性能进行了测试,我们看下实验结果:
1.1)A survey on fully homomorphic encryption an engineering respective
Environment:Intel Core i5-3320M
参数说明:l--输入的bit位大小; d--电路深度; w--输入线


image.png

在bootstrapping模式也就是FHE的模式下,AES加解密的时间15min+是无法忍受的。

1.2)Faster Homomorphic Linear Transformations in HElib*
Environment:ntel Xeon CPU,E5-2698 v3 @ 2.30GHz(Haswell处理器,32核,250G)
参数说明:d代表slot的大小(是p mod m的顺序),D是维度大小,标有“⋆”的D值表示“坏”维度
之后IBM团队发布了一个最新论文,大幅提高了计算速度,最高达75倍,标准运算是AES计算。


image.png

进一步的,在多核模式下测试,得到的结果是:


image.png
可见在实数乘法在16核模式下进入了10秒级以内,但是对于常规运算仍然是不可想象的。

2)微软的SEAL号称是性能最高的同态加密库,同样有一篇论文对其进行了详细实验。
Private Predictive Analysis on Encrypted Medical Data
Environment:Intel Core i7- 3520M at 2893.484 MHz
参数说明:密文是n维向量,其系数模为q,消息是另一个模数p,P1/P2分别是相应bit位长度的值。


image.png

SEAL对加密数据实施了Logistic回归模型,128bits的密文高达4,096bit,大概1Mb的数据产生超过10Gb的加密数据。


image.png
对它进行加解密、加法和乘法,加法运算仅需1ms,但是乘法需要5秒以上,无法实际的场景中使用。

A Conclusion:在业内,FHE是众多云计算厂商夺取的制高点,根据目前的学术研究和项目进展来看,FHE完全商业化尚要3年左右。

B SMC,安全多方计算经过了多年的发展,在半诚实对手模型取得了一定的效果,但在恶意攻击者模型或者多方模型中还需进步。
同样的,为了让大家有个大致的概念,描述我们将要做的实验的参数:AES运算包含6800 gates,input和output是128bit,s'=125,depth=50(这个数据来自Yehuda Lindell and Ben Riva. 2015. Blazing Fast 2PC in the Offline/Online Setting with Security for Malicious Adversaries. In ACM CCS 2015. 579–590.)

1)Fast Cut-and-Choose Based Protocols for Malicious and Covert Adversaries∗
在这篇paper中,它做了个对比实验,我们可以看到执行AES时产生了巨大的数据通信量,如Bandwidth,即使优化之后仍然高达177M。


image.png

2)TinyLEGO: An Interactive Garbling Scheme for Maliciously Secure Two-Party Computation
参数说明:k--计算安全参数,s—统计安全参数。在这篇paper中大幅降低了通讯数据量。


image.png

3)Authenticated Garbling and Efficient Maliciously Secure Two-Party Computation
在这张paper显示了基于TinyLEGO在两方计算中的性能,当然首先是看这些操作有多少个gates。


image.png

它分别测试两个节点在AWS的本地服务器和远程服务器的情况,实验结果如下:


image.png

公链部署在异构网络中,所以参考WAN的模式更符合实际。接着对比其他的方案,测试AES操作,结果如下:


image.png

最后分别测试一些复杂的操作,比如整数乘法、排序等,可以看到时延非常高。


image.png

4)Constant Round Maliciously Secure 2PC with Function-independent Preprocessing using LEGO
这篇paper中离线预处理部分符合条件的电路,从而大幅减少了中间产生的数据。


image.png

B Conclusion:尽管这几年的进步比较大,但是从计算速度这个角度看,高于明文计算2-3个数量级,对网络的消耗大,需要编写复杂的业务逻辑生成电路,也对内存也造成了巨大的压力。

C Intel SGX,大家对它的性能比较感兴趣,我们就从IBM research的一篇博客说起。
1)https://medium.com/@danny_harnik/impressions-of-intel-sgx-performance-22442093595a
Environment:Lenovo laptop with 8-core Intel® Core(TM) i7–6820HQ CPU with 2.70GHz, using 16GB 2133MHz DDR4 RAM and running on an Ubuntu 16.04 OS.
在单线程模式下
1.1)testing a simple function:从一个字节数组中找到最大的4字节整数
a)在非安全区运行的普通函数;b)数组已经在安全区直接执行计算;c)在明文内存中存取,用安全模式计算;d)将数组拷贝去安全区执行计算。

image.png
result:在低数据量的情况下,CPU上下文切换和进入退出安全区对性能的限制很大;而在256kb的时候,前述方面的差距就比较小;在8M的时候在安全区的性能下降很大,这可能跟额外的L3缓存(8M)在读取一个安全区本地数组的时候消失有关;当达到EPC的容量限制(64M)时,性能显著下降;当在一个安全区调用拷贝函数时,一旦拷贝数据内容大于64kb会导致性能下降。
1.2)测试sha256
image.png
1.3)测试AES的加密函数
image.png
result:sgxsdk在trusted模式下达到了untrusted的一半是因为没有使用intel’s AES-NI 硬件优化;sgxssl的低效则被intel修复;trused模式下的opaque则达到了高性能。
1.4)在安全区内对比AES128
image.png

2)Slalom: Fast, Verifiable and Private Execution of Neural Networks in Trusted Hardware
在这篇paper中实现了基于SGX的模型,能将计算外包到GPU中,具体的方法是优化内存和将计算的中间层外包。这个实验中不包含多线程处理,我们先看一下结果:


image.png

result:SGX上面的微型基准。我们绘制了验证线性结果的相对加速比与在飞地中进行计算相比。虚线表示直接计算所获得的吞吐量。“融合”可分离卷积不包含中间激活。
由此可见对于给定场景,安全可信处理器的效率比最佳可用不可信硬件低最多一个数量级,接着使用外包计算的中间层至GPU,性能获得了大幅提升。


image.png
   C Conclusion:从性能上看,SGX能满足大部分业务需求,对于机器学习等复杂运算,需要改造模型以符合其特性。至于侧信道攻击,Intel进行了积极修复,同时我们需要通过在程序设计上隐藏控制流和数据流来规避相当程度的攻击。

Final Conclusion:相信看到这里大家心里都有了答案,从实践复杂度、性能、网络和技术成熟度来看,在3年之内,TEE将是最具竞争力的方案。

上一篇下一篇

猜你喜欢

热点阅读