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

2023-05-16

640?wx_fmt=jpeg

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


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


安全多方计算介绍


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

640?wx_fmt=png


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


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

不经意传输(Oblivious  Transfer)

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

来看一个例子:假设某旅行社拥有N个景点的旅游资料,小淘想去其中的A景点游玩,希望向旅行社购买相关资料做好出游功课。但是小淘非常在意自己的隐私,不希望向旅行社泄露自己的目的地是哪里。因此双方希望这笔交易能够满足以下隐私条件:


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

粗看起来这种隐私条件似乎是无法满足的:旅行社只要把景点A的资料给到小淘,就必然了解了“小淘正在关注A景点”这一信息;除非旅行社把所有N份资料都给出,但是这又违背了旅行社的利益;

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

以下以N=2为例,基于Diffie-Hellman密钥交换协议,给出一种1  of  2  OT实现方法的非正式描述;其中S(Sender)=旅行社,R(Receiver)=小淘,S拥有两份资料
640?wx_fmt=png,R希望取得其中的640?wx_fmt=png


1.  S秘密生成随机数a;  R秘密生成随机数b;
2.  S将
640?wx_fmt=png发送给R;  R将640?wx_fmt=png发送给S;

3.  S计算640?wx_fmt=png

4.  S以640?wx_fmt=png为密钥加密640?wx_fmt=png,  以k1为密钥加密640?wx_fmt=png,将640?wx_fmt=png640?wx_fmt=png发送给R;

5.  由于640?wx_fmt=png,  因此R可以计算出640?wx_fmt=png,并解密出640?wx_fmt=png,但R无法计算640?wx_fmt=png,因此无法解密出640?wx_fmt=png


如果R希望取得640?wx_fmt=png,只需把第2步中的640?wx_fmt=png改为640?wx_fmt=png即可。


640?wx_fmt=png


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

混淆电路

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

640?wx_fmt=png


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

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

640?wx_fmt=png


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

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

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

1.  A把F进行加密,得到GC表示的函数
640?wx_fmt=png;  (注意这里A是电路的生成者,所以他了解每根wire的密钥);

2.  A把自己的输入a使用第1步中对应的wire密钥加密,得到Encrypt(a);
3.  A将Encrypt(a)、
640?wx_fmt=png发送给B;

4.  A将B的输入b使用第1步中对应的wire密钥加密,得到Encrypt(b),并将Encrypt(b)发送给B;
5.  B拥有完整的GC和输入,因此可以运行电路得到加密的输出;
6.  A把输出wire的密钥发给B,B解密得到最终结果F(a,b);  
7.  如果A需要的话,B再把(a,b)发给A;

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

640?wx_fmt=png


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

安全多方计算的安全模型

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

更细心的同学还会进一步提出问题:“怎么确保A给B的640?wx_fmt=png就是一个正确的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是在半诚实、恶意之间的一种折中。其主要思想是:每个参与方的所有行为都自动带有类似签名的机制以供其他参与方存证。假设某个参与方实施恶意行为,那么其他参与方可以有
640?wx_fmt=png的概率发现(640?wx_fmt=png称为威慑因子,一般>=50%,不能100%发现,因为100%那就直接满足恶意行为模型了)这一恶意行为,并将该行为及其签名公开,令作恶者承受名誉损失。考虑到名誉对一个数据所有者的重要性(例如此后可能再也找不到合作),50%左右的威慑力已经足以让理性者不考虑作恶。


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

以下仍假设有两个参与方A和B各自提供数据a、b,希望安全的计算约定的函数F(a,b),以威慑因子
640?wx_fmt=png=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特性能够对作弊行为形成威慑力,令其具有远强于半诚实模型的安全性,具有很高的实用价值。


参考资料:

[1] https://eprint.iacr.org/2018/1108

[2] Yao.A.C. How to Generate and Exchange Secrets. FOCS 1986: 162-167

[3] Asharov G , Orlandi C . Calling Out Cheaters:Covert Security with Public Verifiability, Advances in Cryptology – ASIACRYPT 2012. Springer Berlin Heidelberg, 2012. 

[4] Kolesnikov V , Malozemoff A J . PublicVerifiability in the Covert Model (Almost) for Free, Advances in Cryptology – ASIACRYPT 2015. Springer Berlin Heidelberg, 2015.



640?wx_fmt=gif

你可能还喜欢

点击下方图片即可阅读


640?wx_fmt=jpeg

为拯救爸妈朋友圈,达摩院造了“谣言粉碎机”


640?wx_fmt=jpeg

阿里开源 iOS 协程开发框架 coobjc


640?wx_fmt=jpeg

这是工程师最长长长情的表白


640?wx_fmt=gif

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 在Pod中执行目录操作,提示Permission denied

    问题 xff1a 进入Pod执行创建文件的操作 xff0c 出现如下报错 kubectl exec it jenkins 5b688ddcc7 h72f2 n cicd bash touch test touch cannot touch
  • Copy宿主机文件到Docker容器中

    1 查找容器名 docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 67686c68c78c keycloak v3 34 opt keycloak bin k 3
  • K8S中部署Grafana

    官方部署文档 xff1a Deploy Grafana on Kubernetes Grafana Labs 以下Yaml从官方copy下来的并做了些修改 xff0c Service使用Nodeport方式是为了便于本地访问 cat gra
  • 在 AlertManager 报警通知中展示监控图表

    参考原文档 xff1a 在 AlertManager 报警通知中展示监控图表 Promoter 是一个用于 AlertManager 通知的 Webhooks 实现 xff0c 支持在消息通知中展示实时报警图表 xff0c 也支持定制消息通
  • Github添加SSH keys

    问题 xff1a 在本地 xff08 linux系统 xff09 下载github仓库源代码时 xff0c 执行git clone 命令时出现以下报错 xff1a git clone git 64 github com hh hub pro
  • 阿里技术大牛最爱的“闲书”,你看过多少?

    在忙碌的写代码 修bug生活里 xff0c 你有多久没有闲下来 xff0c 读读 闲书 xff0c 取悦自己了呢 xff1f 正如梁文道所说 xff0c 读一些无用的书 xff0c 做一些无用的事 xff0c 花一些无用的时间 xff0c
  • blackbox_exporter 黑盒监测

    一 简介 blackbox exporter blackbox exporter是Prometheus 官方提供的 exporter 之一 xff0c 可以提供 http dns tcp icmp 的监控数据采集 xff0c blackbo
  • Python 与Django环境搭建

    系统 xff1a Windows 10 python环境搭建 1 python安装步骤 python包下载链接 xff1a https www python org downloads windows 下载版本 xff1a python 3
  • prometheus图

    Prometheus Server 框架图 xff0c 只要能提供对应的metrics接口 xff0c promehteus就能接入监控 xff0c prometheus会把抓取到的指标数据持久化到本地磁盘中 xff0c 跟其它数据库一样它
  • 经典文献阅读之--BEVDistill(BEV蒸馏)

    0 简介 之前作者前段时间在研究BEV的相关算法 xff0c 当时就觉得BEV算法好是好 xff0c 但是所需要的内存以及计算资源实在是太大了 xff0c 无法实时在真实场景中运行 我们知道多视图 xff08 multi view 三维目标
  • 经典文献阅读之--FastFlowNet(轻量光流估计)

    0 简介 密集的光流估计在许多机器人视觉任务中起着关键作用 随着深度学习的到来 xff0c 已经比传统方法以令人满意的精度预测了它 然而 xff0c 当前的网络经常占用大量参数并且需要沉重的计算成本 这些缺点阻碍了在功率或内存受限的移动设备
  • Matlab与ROS(1/2)---Message(三)

    0 简介 消息是ROS中交换数据的主要容器 主题和服务使用消息在节点之间传输数据 为了标识其数据结构 xff0c 每条消息都有一个消息类型 例如 xff0c 来自激光扫描仪的传感器数据通常以sensor msgs LaserScan类型的消
  • Matlab与ROS(1/2)---发布者和订阅者数据通信(四)

    0 简介 我们在前面一节介绍了Matlab与Message的通信 xff0c 而我们这一节主要来介绍发布者和订阅者在Matlab中的操作 这部分我们主要来看一下ROS1和ROS2中分别是如何使用Topic的 1 ROS1的消息订阅与发布 1
  • Matlab与ROS(1/2)---服务端和客户端数据通信(五)

    0 简介 在前几讲我们讲了Matlab中的Message以及Topic的相关知识 而ROS主要支持的通信机制还有服务这一类 服务通过允许请求以及响应的通信方式 xff0c 来给整个系统完成更紧密的耦合 服务客户端向服务服务器发送请求消息并等
  • Matlab与ROS---Action与Gazebo(六)

    0 简介 对于ROS1而言 xff0c 其在Matlab当中相较于ROS2还有一些比较高级的用法 xff0c 比如说我们接下来要说的Action和Gazebo仿真 1 ROS Action ROS的Action行为模式当中也存在有一个客户端
  • Matlab与ROS---TF坐标系(七)

    0 简介 我们上面讲了最基础的通信机制以及在Matlab中如何使用这些通信 xff0c 下面我们这一讲来主要介绍ROS当中最常用的TF坐标系在Matlab中的使用 tf是分布式的 xff0c 因此所有的坐标帧信息对ROS网络中的每个节点都是
  • OCR如何读取皱巴巴的文件?深度学习在文档图像形变矫正的应用详解

    阿里妹导读 xff1a OCR作为智能审核的重要环节 xff0c 其识别准确率影响着最终审核效果的好坏 xff0c 而来自扫描仪 智能手机的文档图像多存在卷曲 折叠 本文旨在利用深度学习算法对文档图像的形变进行矫正 xff0c 从而提高OC
  • 经典文献阅读之--VGICP(体素化的ICP匹配)

    0 简介 之前我们在以前的文章中介绍了很多有关于点云匹配相关的知识 xff0c 最近两年处理GICP这一大一统的ICP匹配方法以外 xff0c 还有一个工作对体素化和ICP这两者打起了心思 xff0c Voxelized GICP for
  • 经典文献阅读之--Orbeez-SLAM(单目稠密点云建图)

    0 简介 对于现在的VSLAM而言 xff0c 现在越来越多的工作开始聚焦于如何将深度学习结合到VSLAM当中 xff0c 而最近的这个工作就给出了一个比较合适的方法 Orbeez SLAM A Real time Monocular Vi
  • 经典文献阅读之--NORLAB-ICP(重力约束ICP)

    0 简介 最近几年IPC相关的文章也出了不少 xff0c 最近作者有看到了一篇比较有意思的ICP论文 Gravity constrained point cloud registration xff0c 这篇论文将传统的ICP考虑了重力因素

随机推荐