安全多方计算新突破!阿里首次实现“公开可验证” 的安全方案

阿里妹导读:近日,阿里安全双子座实验室与马里兰大学等高校合做的论文《Covert Security with Public Verifiability: Faster, Leaner, and Simpler 》【1】被欧洲密码年会(Eurocrypt)2019接收。这是国内公司在安全多方计算领域的第一篇顶会论文(Eurocrypt2018只有3篇大陆做者论文,难度可见一斑)。算法

今天,咱们邀请阿里高级安全专家鸿程,深刻解读业界首个“公开可验证(PVC)” 的安全两方计算方案。安全

安全多方计算介绍

安全多方计算( Secure Multi-Party Computation,MPC)于1986 年由姚期智院士提出【2】。安全多方计算协议容许多个数据全部者在互不信任的状况下进行协同计算,输出计算结果,并保证任何一方均没法获得除应得的计算结果以外的其余任何信息。换句话说,MPC技术能够获取数据使用价值,却不泄露原始数据内容。函数

互联网已经完成了从IT时代向DT时代的转变,数据已经成为DT时代企业的核心竞争力。数据做为一种新能源,只有流动起来才能产生价值。不过,大多数企业考虑到数据安全和我的隐私等问题,对数据共享都很是谨慎。而MPC对打破数据孤岛,实现数据的可控共享,具备重要的理论和现实意义。性能

MPC方案主要可分为基于混淆电路(Garbled Circuit,GC)和基于秘密共享两种。本文主要关注GC类方案。优化

不经意传输(Oblivious Transfer)ui

咱们首先介绍一种基础的安全多方计算协议:不经意传输(Oblivious Transfer, OT)。加密

来看一个例子:假设某旅行社拥有N个景点的旅游资料,小淘想去其中的A景点游玩,但愿向旅行社购买相关资料作好出游功课。可是小淘很是在乎本身的隐私,不但愿向旅行社泄露本身的目的地是哪里。所以双方但愿这笔交易可以知足如下隐私条件:spa

  1. 小淘不但愿向旅行社泄露“我准备去A景点”这一信息;
  2. 旅行社只但愿出售小淘出钱购买的那份资料,而不泄露小淘未购买的N-1份资料;

粗看起来这种隐私条件彷佛是没法知足的:旅行社只要把景点A的资料给到小淘,就必然了解了“小淘正在关注A景点”这一信息;除非旅行社把全部N份资料都给出,可是这又违背了旅行社的利益;ci

可是神奇的OT可让交易在这种“不可能的条件”下达成。简而言之,在OT协议中,旅行社把他拥有的N份资料使用某种双方协商赞成的加密算法和参数进行加密,而后发送给小淘;小淘能够从密文中解密出A的资料,而没法解密出其余N-1份资料。rem

OT除了能够直接用于构造MPC方案以外,也是GC等许多MPC方案的基石。

混淆电路

咱们知道,任意函数最后在计算机语言内部都是由加法器、乘法器、移位器、选择器等电路表示,而这些电路最后均可以仅由AND和XOR两种逻辑门组成。一个门电路其实就是一个真值表,例如AND门的真值表就是:

例如其中右下格表示两根输入线(wire)都取1时,输出wire=1:即 1 AND 1 = 1。

假设咱们把每一个wire都使用不一样的密钥加密,把真值表变成这样:

例如其中右下格表示若是门的输入是b和d,那么输出加密的f(密钥是b和d)。这个门从控制流的角度来看仍是同样的,只不过输入和输出被加密了,且输出必须使用对应的输入才能解密,解密出的f又能够做为后续门的输入。这种加密方式就称为“混淆电路(Garbled Circuit,GC)”。

将电路中全部的门都按顺序进行这样的加密,咱们就获得了一个GC表示的函数。这个函数接收加密的输入,输出加密的结果。

假设有两个参与方A和B各自提供数据a、b,但愿安全的计算约定的函数F(a,b),那么一种基于GC的安全两方计算协议过程能够非正式的描述以下:

细心的同窗必定会指出:第4步中A怎么能够接触B的输入b呢?这不是违背了安全多方计算的假设吗?这里就须要使用OT,A扮演Sender,B扮演Receiver,让B从A处获得Encrypt( b),却不向A透露b的内容。如图所示:

须要注意的是,上述流程只是最原始的GC方法的不严谨描述,GC后续还有Point & Permute、Free XOR、Half Gates等多种细节优化,随着最近几年的研究进展,GC的性能已经差很少能够实用了。以求两个百万维向量的汉明距离(Hamming Distance)为例(应用场景是两份数据求类似度,却互相不泄露数据内容),这样的安全两方计算已经能够在1.5秒左右完成。

安全多方计算的安全模型

半诚实行为模型与恶意行为模型

更细心的同窗还会进一步提出问题:“怎么确保A给B的

就是一个正确的GC呢?例如A和B商定要比a和b的大小,商定了F(a,b)=a>b?1:0,可是A能够制做一个别的函数的GC,例如F(a,b)=b的第1个比特,这样显然是会侵害B的隐私的,可是因为函数是以GC形式发给B的,B是没有办法发现这个问题?”

这确实是一个安全问题,事实上,GC还存在如selective failure等其余更多的安全问题。在介绍解决方案以前,咱们须要先定义安全多方计算的安全模型。

安全多方计算的安全模型包含多个角度的内容,在上述上下文中,咱们关注的是其中的“行为模型”,即参与方可能进行何种行为以获取其余方的隐私。常见的行为模型包括“半诚实(Semi Honest)”和“恶意(Malicious)”两种。前者假设全部参与方都是忠实的按照协议步骤进行执行,只是想经过协议内容推测其余方的隐私,然后者假设恶意参与方为了获取其余方的隐私能够不遵循协议内容。

用扑克牌打个不严谨的比方,半诚实的牌友会试图从本身的手牌和已经打出的牌来推测他人的手牌,可是仍是遵循扑克牌规则的;而一个恶意的牌友则换牌、偷牌等手段无所不用。

可见,本节开始提出的问题属于恶意行为的范畴,而原始的GC只能说在半诚实行为模型下是安全的,没法抵御恶意行为攻击。有许多对GC方案的改进方案能够达到恶意行为模型下的安全性,可是它们都须要付出很大的性能代价:仍然以求两个百万维向量的汉明距离为例,其中最快的方法也须要10秒+,比同等的半诚实方案慢7倍以上。事实上,通过咱们的调研,若想真正的实现支持大规模数据的MPC产品,基本上只能考虑半诚实方案。这严重影响了安全多方计算的实用性。

公开可验证(Public Verifiable Covert, PVC)行为模型

PVC是在半诚实、恶意之间的一种折中。其主要思想是:每一个参与方的全部行为都自动带有相似签名的机制以供其余参与方存证。假设某个参与方实施恶意行为,那么其余参与方能够有

的几率发现(

称为威慑因子,通常>=50%,不能100%发现,由于100%那就直接知足恶意行为模型了)这一恶意行为,并将该行为及其签名公开,令做恶者承受名誉损失。考虑到名誉对一个数据全部者的重要性(例如此后可能再也找不到合做),50%左右的威慑力已经足以让理性者不考虑做恶。

PVC模型最开始是由学者在Asiacrypt2012【3】提出,Asiacrypt2015【4】上也有学者提出相关的改进方案,可是这些方案不只效率较低,并且只有复杂的理论描述,实现可能性低。咱们提出的新型PVC方案不只协议简洁,性能有大幅提高,并且首次进行了完整的代码实现。仍然以求两个百万维向量的汉明距离为例,使用咱们威慑因子为50%的PVC方法大概只须要2.5秒。

如下仍假设有两个参与方A和B各自提供数据a、b,但愿安全的计算约定的函数F(a,b),以威慑因子

=50%为例,给出咱们的PVC方案的非正式描述:

  1. A选择两个随机种子s1和s2, B和A运行OT随机选择其中一个(不妨设B获取了s1);
  2. A使用s1和s2分别生成GC1和GC2;
  3. B和A运行OT获取GC1中B输入wire的加密值(咱们后面能够看到GC1不会真正被使用,所以这里能够不与b对应,好比是任意常数值的密文);
  4. B和A运行OT获取GC2中B输入wire对应的b的加密值;
  5. A对GC1进行Hash,并把Hash发给B;
  6. A对GC2进行Hash,并把Hash发给B;
  7. A对上述全部流程进行签名,并把签名发送给B;
  8. B因为有s1,所以能够自行生成GC1,能够本身模拟第3步和第5步;若是结果与A发的不一致,则公布相关签名做为A做恶证据。若是一致,就用GC2进行真实计算。

可见,A若是做恶,总有50%的几率被B抽查到(由于A不知道B到底掌握了哪一个GC的随机种子)。所以理性的A会选择不做恶,忠实的执行安全多方计算协议。

须要再次强调的是,为便于理解,全部的协议都仅仅是非正式描述,有兴趣进一步研究细节的同窗欢迎参阅咱们的论文【1】。

总结

咱们与马里兰大学等高校合做,首次实现了一种“公开可验证(PVC)” 的安全两方计算方案,这种方案的性能接近半诚实方案,同时其PVC特性可以对做弊行为造成威慑力,令其具备远强于半诚实模型的安全性,具备很高的实用价值。



本文做者:鸿程

阅读原文

本文来自云栖社区合做伙伴“ 阿里技术”,如需转载请联系原做者。

相关文章
相关标签/搜索