GMW协议

news2024/11/17 3:27:49

概述

回顾混淆电路的流程,一方生成加密真值表,另一方执行计算,门电路的输入通过主动发送和不经意传输索取实现,用这样的方式来达到多方计算中一些公平性。
那么是否可以让双方拥有更加对等的地位,让每个参与方都持有一部分秘密份额,都参与计算的方法呢?
假如让双方都加入计算,那么就一定得加密,不加密的话势必会导致自己的秘密份额泄漏,那么在布尔电路中单位比特应该怎么加密呢?异或
为什么采用异或加密呢?
image.png
从表中可以看到,密文分布均匀,概率是相等的,而密文反推出明文的概率也是相等的,和随机猜测的概率是一样的,也就意味着只拿到密文并不能给攻击者提供任何有效的额外信息。
其次,注意到异或对于密文的计算是相当友好的。
image.png

两方GMW协议

GMW协议同时支持布尔电路和算数电路计算,这里考虑布尔电路,特点是每个参与方都持有秘密份额。

执行流程

假定参与方分为 P 1 P1 P1(输入为 x ∈ { 0 , 1 } n x\in \{0,1\}^n x{0,1}n)和 P 2 P2 P2输入为 y ∈ { 0 , 1 } n y\in \{0,1\}^n y{0,1}n,然后进行类似加法共享操作,即 P 1 P1 P1对于每一个输入比特 x i ∈ { 0 , 1 } x_i\in \{0,1\} xi{0,1},都随机生成一个随机比特 r i ∈ R { 0 , 1 } r_i\in_R \{0,1\} riR{0,1},然后发送给 P 2 P2 P2,此时 P 1 P1 P1所持有的秘密份额为 x ⊕ r x \oplus r xr,而 P 2 P2 P2持有的则是 r r r,这样二者就共同持有 x x x,相当于把 x x x这个秘密做了一个加法分享, y y y也同理。
接下来考虑一个门,将输出定为 w k w_k wk,两个输入定为 w i w_i wi w j w_j wj,然后将每个输入拆分为两部分 w x = s x 1 ⊕ s x 2 w_x=s_x^1 \oplus s_x^2 wx=sx1sx2 P 1 P1 P1 P 2 P2 P2分别持有两个输入的各一部分 ( s i 1 , s j 1 ) (s_i^1,s_j^1) (si1,sj1) ( s i 2 , s j 2 ) (s_i^2,s_j^2) (si2,sj2)

电路拆分

一般的,电路由XOR,NOT和AND三个基础门构成,下面看看如何进行安全计算(以两方为例)

XOR

无需交互,本地计算,两方分别对自己的秘密份额进行异或即可得到结果。
image.png

NOT

无需交互,本地计算,只需各自对秘密份额取反即可
image.png

AND

显然需要交互才能进行求值。
image.png
那么应该如何安全的交互呢?
P 1 P1 P1的视角来看,它只知道自己的两份秘密份额 s i 1 , s j 1 s_i^1,s_j^1 si1,sj1对应的值,而不知道 s i 2 , s j 2 s_i^2,s_j^2 si2,sj2所对应的值,意味着对于未知的 ( s i 2 , s j 2 ) (s_i^2,s_j^2) (si2,sj2)一共有4种取值可能 ( 00 , 01 , 10 , 11 ) (00,01,10,11) (00,01,10,11),接着 P 1 P1 P1对于每一种可能都准备一份对应的秘密份额,然后执行4选1-OT协议,将对应的秘密份额发给 P 2 P2 P2,来获得对应的秘密份额。具体如下,
令整体的结果秘密为 S = F ( s i 1 , s j 1 ) ( s i 2 , s j 2 ) = ( s i 1 ⊕ s i 2 ) ⊗ ( s j 1 ⊕ s j 2 ) S=F_{(s_i^1,s_j^1)}(s_i^2,s_j^2)=(s_i^1 \oplus s_i^2) \otimes(s_j^1 \oplus s_j^2) S=F(si1,sj1)(si2,sj2)=(si1si2)(sj1sj2),把这个视为输入为两个秘密份额,输出为门电路输出值的一个函数,为了不泄露自己秘密份额, P 1 P1 P1选择一位随机比特 r ∈ R { 0 , 1 } r\in_R\{0,1\} rR{0,1},计算出一张4选1的OT秘密表,
image.png
随后由 P 1 P1 P1作为OT的发送方将OT秘密表的4行分别作为4个秘密输入, P 2 P2 P2作为接收方将自己的2个秘密份额作为选择项,选择接收OT秘密表所对应的行。 P 1 P1 P1 r r r设置为门输出的秘密份额, P 2 P2 P2则将OT协议种接收的的值作为门输出的秘密份额。这样二者就分别持有了最终结果的一部分。在计算完所有门之后,双方都公布自己拥有的所有输出秘密份额即可得到最终结果。
直观上看,很明显参与方无法得到另一个参与方输入的任何信息, P 2 P2 P2只知道自己接收的OT协议的结果,而 P 1 P1 P1同样只知道OT协议的选择项。

多方的GMW协议

XOR和NOT门不需要交互,直接本地计算就好,所以难点在于AND门上
假如参与方为 n n n个,那么和两方的类似,每个参与方都对每个输入比特都选择一个随机比特,然后发送给其他参与方,达到加法共享的效果。这样一来每个参与方都持有 ( a i , b i ) (a_i,b_i) ai,bi两份输入份额。那么对AND门计算

其中部分是每个参与方可以通过自己拥有的份额计算出来的,而部分需要每个参与方两两进行一次两方的GMW即可,将得到的两部分结果进行一次XOR即可得到最终的结果。
显而易见,GC和GMW都对二进制操作很友好,GMW是以共享的角度来计算的,输入输出都各自持有一部分,后续可以继续扩展到代数级别。

参考

实用安全多方计算导论
CS 276 – Cryptography Oct 27, 2014 Lecture 16: Secure multi-party computation (GMW Protocol + Malicious Model)
Boolean Sharing(布尔共享)
【隐私计算笔谈】MPC系列专题(四):GMW协议和BGW协议

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

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

相关文章

华为OD机试真题(Java),数组合并(100%通过+复盘思路)

一、题目描述 现在有多组整数数组,需要将他们合并成一个新的数组。 合并规则从每个数组里按顺序取出固定长度的内容,合并到新的数组,取完的内容会删除掉。 如果改行不足固定长度,或者已经为空,则直接取出剩余部分的内…

Numpy从入门到精通——Numpy运算符|批处理

这个专栏名为《Numpy从入门到精通》,顾名思义,是记录自己学习numpy的学习过程,也方便自己之后复盘!为深度学习的进一步学习奠定基础!希望能给大家带来帮助,爱睡觉的咋祝您生活愉快! 这一篇介绍《…

Android 项目编译 Gradle 配置说明

前言 Android 的Gradle版本更新换代还是很快的,更新换代除了功能上变得强大之外,还会出现很多意料之外的Bug,而很多开发者会被折磨的死去活来,下面我们来看有哪些编译配置。 正文 首先要知道什么时候会进行编译,有以下…

Efficient Attention: Attention with Linear Complexities

paper: https://arxiv.org/pdf/1812.01243.pdf 这里写目录标题 一、引言二、方法实现高效注意力的解释效率优势 三、实验消融插入层键的维度骨干架构 一、引言 注意机制在计算机视觉和自然语言处理中有着广泛的应用。最近的工作开发了点积注意力机制,并将其应用于…

MobileBERT模型简单介绍

目录 一、概要 二、深入扩展 2.1 知识蒸馏方法 2.2 渐进式知识迁移 一、概要 MobileBERT 可以看作一个“瘦身”后的BERT-large模型,其使用了瓶颈结构(Bottleneck Structure),并且在自注意力和前馈神经网络的设计上也有一定的改…

图形化之家谱遗传系统

1:废话不多说先看成果。 QQ录屏20230418163603 QQ录屏20230418163732 2:解析: 1:不知道会有多少个孩子,所以我们用二叉树的孩子兄弟结构 typedef struct treeNode {char name[100];//名字int generation;//辈分char g…

Pytorch深度学习笔记(五)反向传播算法

推荐课程:04.反向传播_哔哩哔哩_bilibili 1.为什么要使用反向传播算法 简单模型可以使用解析式更新w 复杂模型,如图,输入矩阵为5*1矩阵,等一层权重矩阵H1为6*5矩阵,则需要30个解析式,第二层权重矩阵H2为6…

1685_Excel的几种脚本处理方式

全部学习汇总: GreyZhang/python_basic: My learning notes about python. (github.com) 做个小结,实际上是写的我自己学习的过程。 关于Excel的处理方式很多,我也不会那么多,在这里我只想写一下我自己接触过的。大致是三种方式&a…

Pikachu靶场(Cross-Site Scripting)

Cross-Site Scripting 反射型xss(get)源代码修改限制地址栏 反射性xss(post)存储型xssDOM型xss-xxss盲打xss之过滤xss之htmlspecialcharsxss之href输出xss之js输出 Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突&#xff0c…

《花雕学AI》25:用文字画出你的非凡想象力,微软新Bing带你体验DALL-E的神奇

你有没有想过用文字来画画?这听起来可能很不可思议,但是现在,你可以通过微软新Bing来实现这个想法。微软新Bing支持AI绘画功能,只要输入一句话,就能生成一幅图像。这个功能是由DALL-E驱动的,DALL-E是一个能…

mybatis03-多表查询、延迟加载、逆向工程

mybatis03 mybatis 多表联查 背景产生:开发过程中单表查询 不能满足项目需求分析功能。对于复杂业务来说,关联的表有几张,甚至几十张 并且表与表之间的关系相当复杂。目的:实现复杂业务功能,必须进行多表查询&#x…

开发插件JFormDesigner(可视化GUI编程)的使用与注册-简单几步即可完成

开发插件JFormDesigner(可视化GUI编程)的使用与注册 获取链接:1.JFormDesigner获取2.记录插件下载路径3.使用zcj注册4.生成license5.打开idea进行注册 获取链接: https://pan.baidu.com/s/1N9ua2p3BpiMIARCEewRxIw?pwd4e9a 提取…

WebSocket 通信 —— 浏览器原生支持

在上一篇内容中讲到使用Node中的Net核心模块完成socket通信,那么本篇就继续来讲关于浏览器原生支持的 WebSocket ,实现通信。那么什么是 WebSocket ? 它是HTML5开始提供的一种浏览器与服务器间进行全双工(全双工:同时进行双向传输…

激活函数(Activation Function)及十大常见激活函数

目录 1 激活函数的概念和作用 1.1 激活函数的概念 1.2 激活函数的作用 1.3 通俗地理解一下激活函数(图文结合) 1.3.1 无激活函数的神经网络 1.3.2 带激活函数的神经网络 2 神经网络梯度消失与梯度爆炸 2.1 简介梯度消失与梯度爆炸 2.2 梯度不稳…

asp.net+C#房地产销售系统文献综述和开题报告+Lw

本系统使用了B/S模式,使用ASP.NET语言和SQL Server来设计开发的。首先把所有人分为了用户和管理员2个部分,一般的用户可以对系统的前台进行访问,对一般的信息进行查看,而注册用户就可以通过登录来完成对房屋信息的查看和对房屋的…

动态通讯录——C语言【详解+全部码源】

作者简介: 辭七七,目前大一,正在学习C/C,Java,Python等 作者主页: 七七的个人主页 文章收录专栏:进阶C语言,本专栏主要讲解数据存储,进阶指针,动态内存管理&a…

企业数据安全能力建设思路

在现代社会,企业数据安全已经成为一个非常重要的话题。企业数据安全能力的建设是每个企业都必须面对和解决的问题。企业数据安全能力建设思路包括以下几个方面: 1. 建立完善的安全管理制度 企业要建立完善的安全管理制度,包括信息安全政策、…

[入门必看]数据结构5.1:树的基本概念

[入门必看]数据结构5.1:树的基本概念 第五章 树与二叉树5.1 树的基本概念知识总览5.1.15.1.2 树的定义和基本术语5.1.3 树的性质 5.1.15.1.2 树的定义和基本术语树的基本概念树形逻辑结构的应用结点之间的关系描述结点、树的属性描述有序树 V.S 无序树树 V.S 森林 5…

软考 软件设计师上午题uml

UML uml事物依赖关系关联聚合组合关系泛化关系实现关系关联多重度UML类图UML 类图的概念对象图用例图包含关系扩展关系泛化关系用例图概念交互图通信图![在这里插入图片描述](https://img-blog.csdnimg.cn/d62c6f00d57a48949e3306461f3fbe25.png)通信图例子状态图状态图的状态和…

# 生成器

生成器 生成器是什么? 生成器(generator)是一种用来生成数据的对象。它们是普通函数的一种特殊形式,可以用来控制数据的生成过程。 生成器有什么优势? 使用生成器的优势在于它们可以在生成数据的同时控制数据的生成过程…