【密码学基础】混淆电路(Garbled Circuit)

news2024/11/26 15:32:59

1 概念

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

2 流程

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

Step 1:Alice生成混淆电路

首先,Alice将目标函数转化为布尔电路,然后生成一张与门的 真值表(true table):
在这里插入图片描述
然后,随机生成6个数 X 0 , X 1 , Y 0 , Y 1 , Z 0 , Z 1 X_0, X_1, Y_0, Y_1, Z_0, Z_1 X0,X1,Y0,Y1,Z0,Z1对真值表进行替换。注: X 1 X_1 X1表示替换 X = 1 X=1 X=1的位置,其他同理。于是有了下面这张 替换表
在这里插入图片描述
之后,Alice对替换表中的 Z Z Z进行连续两次对称加密(加密密钥和解密密钥相同)。如下图,加密密钥则是两个输入 X , Y X, Y X,Y,得到加密表:
在这里插入图片描述
然后,打乱各行,使加密表内容与行号无关(这里我交换了第2和第3行的顺序),最终得到 混淆表(garbled table)。 这也就是混淆电路中“混淆”二字的由来!
在这里插入图片描述

Step 2:Alice和Bob进行通信

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

Step 3:Bob计算混淆电路

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

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

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

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

总结

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/83763.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL错误码大全

MySQL的所有错误码可以从MySQL官网查看。 1.MySQL地址 首页网址 2.文档地址 以此点击如下标志。 MySQL8.0文档地址 3.错误码地址 服务码官网地址 点进去之后,可以看到: 分为三大类: Server Error Message ReferenceClient Error Mes…

Java大型建筑建设综合工程项目管理系统源码带原生APP源码 工程管理系统源码 Java手机端工程项目管理系统源码带客户端操作手册

客户端下载: 1、安卓手机端 先下载“PP助手”应用商店,再在PP助手中搜索“star工程”下载安装。 2、苹果手机端 苹果手机APPstore中搜索“star工程”下载安装。 建设综合工程项目管理系统,让公司业务管理实现可记录,可追踪&#…

数字图像处理(入门篇)七 图像数据预处理之灰度变化

目录 一 常用操作 1 反转 2 对比度增强 3 对比度压缩 4 伽马矫正 二 实践 1 反转、对比度增强和对比度压缩 (1) 代码 (2) 结果图 2 伽马矫正 (1) 代码 (2) 结果图 (3) 结论 (4) np.power函数 图像灰度变换:将原始图像中的每一个点的灰度值&#xff0c…

尚医通 (三十三) -------- 阿里云OSS、用户认证与就诊人

目录一、阿里云 oss1. 开通 对象存储 OSS 服务2. 使用 SDK 文档3. 文件服务实现搭建 service-oss 模块测试SDK封装 service 接口封装 controller 接口二、用户认证1. 需求分析2. api 接口3. 前端4. 预约挂号页面调整三、就诊人管理1. 需求分析2. api 接口3. 前端四、平台用户管…

最新阿里云服务器和GPU服务器长期优惠活动价格表

阿里云服务器优惠活动是长期的,在12月优惠活动大促期间云服务器价格会有所调整,主机教程网现在给大家分享最新的阿里云服务器优惠活动价格表。现在阿里云双十一优惠活动刚刚结束,随之而来的就是双12优惠活动,关于阿里云服务器、对…

camunda入门教程及实现原理

1、camunda简介 1、介绍: Camunda是一种工作流引擎。 Camunda BPM 是一个轻量级、开源灵活的工作流框架,是由Java开发的一个纯Java库。它的核心是一个在Java虚拟机内部运行的原生BPMN 2.0流程引擎,因此它可以嵌入到任何Java应用程序或运行时…

Linux 添加环境变量的两种方法 exprot 临时法 vi /etc/profile永久法

编写一个shell脚本之后,怎么可在任意目录运行改脚本呢?为什么别人写的脚本可以直接运行,自己写的脚本就会出现 -bash: XXXXX.sh: command not found 这样的错误呢? 1、举例验证,先新建一个HelloWorld的shell脚本&…

Alibaba 工具型技术系列,实战技术针对于项目中常用的 Excel 操作指南

ExcelIgnoreUnannotated 默认不加 ExcelProperty 的注解的都会参与读写,加了不会参与 通用参数 ReadWorkbook,ReadSheet 都会有的参数,如果为空,默认使用上级。 converter 转换器,默认加载了很多转换器。也可以自定义。 rea…

emlog模板开发基础2022最新指南

emlog模板的开发基础指南,如果想要开发emlog的模板,你必须知道那些开发内容呢?下面将介绍分析emlog5下的模板基本结构以及基本变量、函数的作用。 首先我们用该知道emlog的模板是位于根目录content\templates\文件夹下,每个模板都是一个单独的文件夹,文件夹以模板名…

[附源码]JAVA毕业设计-英杰学堂网上教学平台-(系统+LW)

[附源码]JAVA毕业设计-英杰学堂网上教学平台-(系统LW) 项目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项…

一道关于Vue的数据绑定和依赖收集的面试题

概要 分享一道Vue的面试题,该题涉及Vue的响应式数据绑定和依赖收集,希望可以加深大家对Vue原理的理解。 题面 有如下html和JS,要求使用Vue的响应式数据原理和依赖收集原理,实现createApps和ref方法。只能使用原生JS&#xff0c…

教育的本质——采用不同学习方式,学习者在两周后还能记住的内容有多少

目录 一、学习金字塔模型 二、学习曲线 三、左右脑交替学习法 一、学习金字塔模型 “学习金字塔模型”,人们学习的效率一共分为七个层次: 第一层 ~ 第四层:这是我们最熟悉不过的形式,在学生时代,老师在上面讲课、…

【Leetcode】225. 用队列实现栈、232. 用栈实现队列

作者:一个喜欢猫咪的的程序员 专栏:《Leetcode》 喜欢的话:世间因为少年的挺身而出,而更加瑰丽。 ——《人民日报》 目录 225. 用队列实现栈 232. 用栈实现队列 225. 用队列实现栈 225. 用队…

91-143-Scala-集合模式泛型等

91-Scala-集合模式泛型等: Scala 的集合有三大类:序列 Seq、集 Set、映射 Map,所有的集合都扩展自 Iterable特质。 2)对于几乎所有的集合类,Scala 都同时提供了可变和不可变的版本,分别位于以下两个包 不…

人工智能(AI)背后人工的力量——数据标注

尽管随着AI的普及,我们在生活中越来越依赖于人工智能,但“人工智障”的相关调侃也从来没有消失过。 相信大家都知道,如果我们想要让AI准确识别出图中的鸟,我们需要在数据集中手动将这些照片标记为鸟,然后让算法和图像…

c3p0数据库连接池的使用

c3p0数据库连接池的使用 c3p0的官网:c3p0 - JDBC3 c3p0数据库连接池有两种方法 导入jar包 首先两种方法都需要导入jar包 图中打钩的,第一个是c3p0的包,第二个是连接数据库的 在WEB-INF下新建lib包,将所需要的jar导入 右键添加…

【Java技术专题】「OpenJDK专题」想不想编译属于你自己的JDK呢?(Windows环境)

Win10下编译OpenJDK8 编译环境 Windows10专业版64位; 编译前准备 Tip: 以下软件的安装和解压目录尽量不要包含中文或空格,不然可能会出现问题 安装 Visual Studio 2010 Professional 在windows下编译JDK需要使用Visual Studio 2010 Profes…

反抗与反噬:亚马逊被迫结束封号神秘主义,不再粗暴关店

“每一天醒来,都要看一眼自己的店铺是否还在。”、“账号被封之后,自己也曾第一时间向平台申诉,经历过一次、两次甚至是多次申诉无果后,才意识到账号是真的回不来了。”、“过去传言大卖有保护伞,这一回才发现做亚马逊…

B站有哪些值得Java初学者看的视频,Java学习路线

我的读者中有很大一部分学生读者,以前也分享过一些Java学习路线,但是我收到的反馈并不好,因为学习路线包含的内容太多了,对于初学者来说难度太大,时间也不够用,根本学不完。今天我将结合B站优秀视频整理一期…

英特尔着眼系统工艺协同优化理念,推进摩尔定律新浪潮

Ann Kelleher介绍了晶体管诞生75年之后的新进展 在IEDM 2022(2022 IEEE国际电子器件会议)全体会议上发表演讲之前,英特尔副总裁兼技术开发总经理Ann Kelleher接受了《IEEE Spectrum》的采访,她表示,摩尔定律的下一波浪…