1 概念

  • 混淆电路是一种密码学协议,以实现安全多方计算(MPC)。场景是当多个通信方需要共同输入数据,然后通过同一个函数计算出一个结果,但是,各个通信方都不允许其他人知道自己的输入是什么。混淆电路就能很好地解决这个问题。
  • 补充:可计算函数都可转化为电路的实现:加、比较、乘法等。电路是由门(gate)组成,如与门、非门、或门、与非门等。
  • 混淆电路通过加密和扰乱电路值来掩盖真实的输入信息,加密和扰乱是以门为单位,每个门都有一张真值表。
  • 混淆电路(GC) = 不经意传输(OT) + 逻辑电路

2 流程

本文以与门为例介绍混淆电路的算法流程。Alice和Bob两方分别拥有数据XXX和YYY(0或1),现在希望双方都不知道对方数据的情况下,计算出逻辑与的结果ZZZ。

Step 1:Alice生成混淆电路

首先,Alice将目标函数转化为布尔电路,然后生成一张与门的 真值表(true table):

然后,随机生成6个数X0,X1,Y0,Y1,Z0,Z1X_0, X_1, Y_0, Y_1, Z_0, Z_1X0​,X1​,Y0​,Y1​,Z0​,Z1​对真值表进行替换。注:X1X_1X1​表示替换X=1X=1X=1的位置,其他同理。于是有了下面这张 替换表

之后,Alice对替换表中的ZZZ进行连续两次对称加密(加密密钥和解密密钥相同)。如下图,加密密钥则是两个输入X,YX, YX,Y,得到加密表:

然后,打乱各行,使加密表内容与行号无关(这里我交换了第2和第3行的顺序),最终得到 混淆表(garbled table)。 这也就是混淆电路中“混淆”二字的由来!

Step 2:Alice和Bob进行通信

Alice将自己的输入X=nX=nX=n替换为为第一步生成的随机数XnX_nXn​,发送给Bob,这样Bob就无从知晓Alice的真是输入到底是多少了。
然后,Bob也需要将手里的真实输入替换为第一步生成的随机数,怎么实现?通过不经意传输(OT)协议,从Alice手里获取对应的替换值Y1/Y0Y_1/Y_0Y1​/Y0​。注意!因为采用了1-out-of-2 OT协议,所以Bob只能取到Y1,Y0Y_1, Y_0Y1​,Y0​中的其一,并且Alice无从知晓Bob到底取走了哪个,从而无法知道Bob手里的真实值是多少。
随后,Alice也将混淆表发送给Bob进行后续的计算。

Step 3:Bob计算混淆电路

Alice和Bob完成上述的通信后(Alice替换真实值发给Bob,Bob从Alice手里取到对应替换值,Alice将混淆表发给Bob),Bob尝试进行电路解密。假设Alice真实输入是0,Bob真实输入是1,那么目前Bob已知的信息有X0,Y1X_0, Y_1X0​,Y1​两个数据。使用这两个值,对混淆表进行对称密钥解密,最终,只有第3行是可以解密出结果的!也就是Z0Z_0Z0​。注意,这里解密出的Z0Z_0Z0​仍是替换值,而只有Alice才知道替换的关系。

Step 4:Alice和Bob共享计算结果

Bob分享解密后的结果Z0Z_0Z0​给Alice,Alice知道替换值与原始值的替换关系,所以可以快速替换回真实值,并且可以将最终的真实结果分享给Bob。

通过以上4个步骤,就在双方均不知道对方数据的情况下,顺利实现了共同计算同一个函数的功能。

总结


Alice端会生成布尔电路已经对应的真值表、替换表、加密表以及混淆表,发送给Bob的是替换值和混淆表,然后Bob通过OT协议拿到自己的替换值,从而对混淆表中的值进行解密。最后,将解密结果共享给Alice得到真值结果,最后双方共享真值结果。

参考资料:
混淆电路简介(GC)
MPC系列-混淆电路

【密码学基础】混淆电路(Garbled Circuit)相关推荐

  1. 混淆电路简介(GC)

    混淆电路简介 混淆电路的定义 混淆电路的过程 混淆电路的定义   混淆电路是一种密码学协议,由姚期智教授在80年代针对安全计算所提出的概念.其效果就是:当几个通信方需要一起输入某些数据,然后通过同一个 ...

  2. 隐私计算:使用混淆电路开源框架Obliv-C解决百万富翁难题

    "假设有两个百万富翁,他们都想知道谁更富有,但他们都想保护好自己的隐私,谁都不愿意让对方或者任何第三方知道自己真正拥有多少财富.那么如何在保护好双方隐私的情况下,计算出谁更有钱呢?" ...

  3. 姚氏百万富翁 混淆电路_姚氏混淆电路原理简介

    安全多方计算(Secure Multi-Party Computation ,MPC)技术主要是指,多个通信的参与者在保障通信和计算过程的正确性.隐私性.公平性等安全特征的基础上,联合进行某些功能函数 ...

  4. 混淆电路——混淆电路原理

    混淆电路原理 在我们前两章讲过混淆电路的基础知识--不经意传输&转换逻辑电路以后,我们就可以将这两种技术合并在一起,用作我们的混淆电路的设置. 我们还是以百万富翁问题为例,在上一章我们已经将比 ...

  5. 硬件基础:电路基础知识

    电路的研究方式: 从电路模型出发,研究电路基本理论.分析方法以及工程技术中典型类电路的特点和规律.  电路的四类知识 基础知识 电路模型,电路基本物理量,电路基本元件,基尔霍夫定律,磁路的基础知识.. ...

  6. MPC系列-混淆电路

    混淆电路:混淆电路是一种密码学协议,完成参与方能在互相不知晓对方数据的情况下计算某一能 被逻辑电路表示的函数.通过对电路进行加密来掩盖电路的输入和电路的结构,以此来实现对各个参与者的隐私信息的保密,再 ...

  7. 学习之路-现代密码学基础-001

    学习之路-现代密码学基础-第一章密码学概论 转载于:https://www.cnblogs.com/vegetables-Adanos/p/5371420.html

  8. 计算机 密码学 实验一,计算机网络安全技术-实验一-密码学基础

    计算机网络安全技术-实验一-密码学基础 计算机科学与技术系实 验 报 告专业名称 网络工程 课程名称 计算机网络安全技术 项目名称 密码学 班 级 13 网工(1)班 学 号 1304031030 姓 ...

  9. http、https、密码学基础、GET和POST区别

    http协议相关: http协议的特性: http协议是建立在TCP/IP协议之上应用层协议,默认端口为80或者8080.http协议的的特点是无状态,无连接(并不是真的没有连接,而是在请求数据的时候 ...

最新文章

  1. spark中的ALS
  2. PHP使用Switch语句判断星座,PHP的switch判断语句的“高级”用法详解 用switch语句怎样判断成绩的等级...
  3. 【背包】逃亡的准备 (ssl 1236)
  4. (45)FPGA面试技能提升篇(Hyperlink接口)
  5. 金融行业密钥体系介绍(转)
  6. opencv 打印文字_如何使用OpenCV+Python去除手机拍摄文本底色
  7. 有效利用1 on 1
  8. 求助matable基本
  9. MySQL数据表操作思维导图
  10. swfobject简单封装
  11. TIT 计算机图形学 实验一 十二面体线框模型
  12. 台式机win10关闭fn热键_笔记本fn键,小编告诉你笔记本fn键怎么取消
  13. 记录一下unity 加载外部视频
  14. python 判断区分字符串是否都是英文/中文
  15. 2021-11-09小程序的开发制作的价格是多少?
  16. 【报告分享】2021中国住宿业市场网络口碑报告-中国饭店协会众荟(附下载)
  17. 微信支付结算费率怎么降低至0.2~0.35操作方法
  18. 墨客科普---MOAC分层分片技术
  19. 如何实现微博自动化发单
  20. python 点击tree目录、执行下一个操作_如何使用python解决下一个iter(xml.etree.ElementTree)?...

热门文章

  1. 深耕云游戏的这三年,元境营收呈阶梯式增长,机构竞争力评级第一
  2. 基于51单片机的音乐盒设计proteus仿真原理图PCB
  3. Primas与币乎,孰轻孰重
  4. C++:找出一个整型数组中最大值。
  5. 教程篇(6.0) 02. 防火墙策略 ❀ FortiGate 安全 ❀ Fortinet 网络安全专家 NSE 4
  6. 计算机专业英语词汇mp3,[听单词] 计算机专业英语词汇音频07,常用计算机英语单词MP3...
  7. 幼师资格证计算机考试内容,幼师教师资格证考试需要考哪些科目
  8. java技术+tomcat+mysql
  9. 邹承鲁院士谈读文献(转自Bigbug)
  10. PHP常量修饰符是什么,php const常量修饰符使用方法