【密码学基础】混淆电路(Garbled Circuit)
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)相关推荐
- 混淆电路简介(GC)
混淆电路简介 混淆电路的定义 混淆电路的过程 混淆电路的定义 混淆电路是一种密码学协议,由姚期智教授在80年代针对安全计算所提出的概念.其效果就是:当几个通信方需要一起输入某些数据,然后通过同一个 ...
- 隐私计算:使用混淆电路开源框架Obliv-C解决百万富翁难题
"假设有两个百万富翁,他们都想知道谁更富有,但他们都想保护好自己的隐私,谁都不愿意让对方或者任何第三方知道自己真正拥有多少财富.那么如何在保护好双方隐私的情况下,计算出谁更有钱呢?" ...
- 姚氏百万富翁 混淆电路_姚氏混淆电路原理简介
安全多方计算(Secure Multi-Party Computation ,MPC)技术主要是指,多个通信的参与者在保障通信和计算过程的正确性.隐私性.公平性等安全特征的基础上,联合进行某些功能函数 ...
- 混淆电路——混淆电路原理
混淆电路原理 在我们前两章讲过混淆电路的基础知识--不经意传输&转换逻辑电路以后,我们就可以将这两种技术合并在一起,用作我们的混淆电路的设置. 我们还是以百万富翁问题为例,在上一章我们已经将比 ...
- 硬件基础:电路基础知识
电路的研究方式: 从电路模型出发,研究电路基本理论.分析方法以及工程技术中典型类电路的特点和规律. 电路的四类知识 基础知识 电路模型,电路基本物理量,电路基本元件,基尔霍夫定律,磁路的基础知识.. ...
- MPC系列-混淆电路
混淆电路:混淆电路是一种密码学协议,完成参与方能在互相不知晓对方数据的情况下计算某一能 被逻辑电路表示的函数.通过对电路进行加密来掩盖电路的输入和电路的结构,以此来实现对各个参与者的隐私信息的保密,再 ...
- 学习之路-现代密码学基础-001
学习之路-现代密码学基础-第一章密码学概论 转载于:https://www.cnblogs.com/vegetables-Adanos/p/5371420.html
- 计算机 密码学 实验一,计算机网络安全技术-实验一-密码学基础
计算机网络安全技术-实验一-密码学基础 计算机科学与技术系实 验 报 告专业名称 网络工程 课程名称 计算机网络安全技术 项目名称 密码学 班 级 13 网工(1)班 学 号 1304031030 姓 ...
- http、https、密码学基础、GET和POST区别
http协议相关: http协议的特性: http协议是建立在TCP/IP协议之上应用层协议,默认端口为80或者8080.http协议的的特点是无状态,无连接(并不是真的没有连接,而是在请求数据的时候 ...
最新文章
- C# C/S WPF 远程操作服务器上面的文件
- 阿里雷卷:Reactive 基金会的成立将对开发方式带来哪些影响?
- 拆分文件_领导让把工作表拆分每个文件,我花半个小时,同事1分钟搞定了
- 使用HANA Web-based Development Workbench创建最简单的Server Side JavaScript
- 拆解苹果iPhone11
- HTML设置允许冒泡,html css hover也会冒泡
- 拒绝暴力调参!推荐一个模型Debug神器!
- 驱动api_消费者驱动契约已死?
- FreeBSD5.0内核 - 锁机制
- linux-数据库篇-索引
- 在 Linux 下搭建 FTP 服务器
- Internet Download Manager 6.32.6 V2 下载工具
- Java ee和Java se的区别
- 【AHP】层次分析法 | 过程解读 案例实践
- DLL编写中extern “C”和__stdcall的作用
- mxnet:Optimizer rescale_grad
- LFS-初入门第一篇(准备环境)
- 域计算机软件安装统计,如何通过SCCM查找客户端计算机已安装的软件清单
- hctf-2018-Crypto-xorgame
- chmod 777的含义
热门文章
- 详解三大抽样分布的构造原理,以及随机数的产生
- java制作网易邮箱登录页面,java调用网易邮箱需要注意的点
- mt6739 GPIO复用为PWM模式
- 540. 有序数组中的单一元素
- (原創) 為什麼要學C/C++? (C/C++)
- vlc内部运行机制以及架构分
- 电影视频服务器架设完全入门教程
- 2021年全球以太网设备供电收入大约2648百万美元,预计2028年达到3023.8百万美元,2022至2028期间,年复合增长率CAGR为2.1%
- 关于场景烘培以及灯光使用的基础文章
- 文字描边加粗_用AE制作动态手写文字效果