安全多方计算(Secure Multi-Party Computation ,MPC)技术主要是指,多个通信的参与者在保障通信和计算过程的正确性、隐私性、公平性等安全特征的基础上,联合进行某些功能函数计算,各自得到他们预定的计算结果的一类技术。近些年来,安全多方计算成为密码学最热门的研究领域之一。

安全两方计算(Secure Two-party Computation)是安全多方计算的一个特例情形,其参与计算的实体仅为两方。

姚氏混淆电路是由姚期智教授在上世纪80年代初提出的,学界第一个安全多方计算方案。

本文简明阐述姚氏混淆电路的基本原理,并描述一个基于混淆电路的两方安全计算协议。

1

安全两方计算

在讨论安全两方计算的概念之始,我们先看看姚氏“百万富翁问题”:两位争强好胜的富翁Alice和Bob 在街头相遇,如何在不暴露各自财富的前提下比较出谁更富有?

这个富有趣味性的问题背后的逻辑,是在Alice和Bob不互相透露自己的秘密的情况下,让两者的秘密(财富值)都参与某个特定计算(比较大小),最终得出想要的计算结果(谁更富有)。并且计算过程中,两者的秘密不能够暴露。以下引出安全两方计算的定义。

安全两方计算(Secure Two-Party Computation)是指两个实体:

1. 使用任意算法f
    2. 输入各自的私密数据x,y
    3. 不依赖第三方
    4. 除了结果z=f(x,y)外,对其他信息一无所知

使用框图表示如下图:

2

布尔电路

布尔电路的定义及相关的两个概念:

1.布尔电路是一些由导线连接的门和输入的集合。不能有环。门有三种:与,或,非。

2.布尔电路的规模指电路中门的数量。布尔电路的深度指从输入导线到输出导线最长一条路线的门的个数。布尔电路的规模反映一个电路的大小,布尔电路的深度反映一次计算所需要的时间

多项式时间算法总是能转换为一个多项式规模的布尔电路。也就是说,第一节中安全两方计算概念中的算法f,只要它是一个多项式时间的算法,总是可以生成一个相同功能的布尔电路的。

布尔电路的逻辑结构可以用真值表表示。真值表的示例见下文中的表1。

3

混淆电路

混淆电路的基本思路是对电路本身进行加密。

1.混淆值

混淆值的取值范围为中之一,其中值代表0,值代表1。是特定长度(如128bit)的随机对称密钥。混淆值本身不会透露它对应的明文信息,即,只得到一个混淆值的情况下,如无额外信息,是不能知道它到底代表0还是代表1的。

2.混淆门

混淆门能够进行混淆值的计算。混淆表是一种对混淆门进行逻辑描述的表,类似于真值表于逻辑门的关系,混淆表与混淆门也包含了等价的信息。通过四步操作,就可以将一个真值表转换为一个混淆表,此过程相当于对真值表/逻辑门进行加密。

对于真值表的第一个输入参数,以代替其中的0,以代替其中的1,取得参数1的混淆值

●对于真值表的第二个输入参数,以代替其中的0,以代替其中的1,取得参数2的混淆值

●对于真值表中的输出参数,先代替其中的0,以代替其中的1,取得输出的混淆值。再取以为对称密钥,对进行两次对称加密。(此处的对称密码算法,解密时应能验证是否成果解密,比如使用认证加密AD)

●对上一步生成的表格,只取列,并对各行做乱序处理,得到最终的混淆表。

混淆表的一个示例见第五节的表3。

3. 混淆电路

混淆电路由多个混淆门组成。

对于混淆电路有两种操作:一种是生成混淆电路,先生成一个特定功能的布尔电路,再以此为基础,将其中的逻辑门转换为混淆门,即可生成一个混淆电路。另一种操作称为求值操作,是指生成混淆电路后,使用混淆电路计算得到输出。

4

基于混淆电路的协议

本节描述一个基于混淆电路的两方安全计算协议。

Alice与Bob是两方计算的两个参与者,协议可以描述为:

1.构造电路:假设f是需要计算的函数,Alice构造对应的布尔电路(用1表示真,0表示假),这个电路有两个输入,分别为Alice和Bob的输入。

2.混淆电路:Alice混淆布尔电路中的每一个逻辑门运算的真值表,隐藏布尔电路的输入和输出之间的对应关系。对混淆的结果,只保留列,并打乱行顺序,生成混淆表。

3.Alice将电路发给Bob:Alice把混淆表和Alice的输入值发送给Bob。

4.Alice将自己选择的混淆值告知Bob,并将Bob需要的两种混淆值对应的布尔值告知Bob。

5.Bob计算电路值:Bob用真值表和混淆的输入计算输出值。使用Alice和Bob的输入对应的,解密混淆表的每一个值,只有一个能够成功解密,结果为。再将发给Alice,Alice即可还原出混淆值对应的布尔值。最后Alice可以将明文计算结果以安全方式告知Bob。

值得提出的是,本协议只是展示了混淆电路的基本原理和使用方法,但安全性和实用性仍需要进一步提升,才能满足现实世界解决问题的需求。在混淆电路协议被提出以后,学界已经涌现了非常多的研究成果来优化其使用中的安全性和计算效率,本文中暂时不进一步讨论这些内容。

5

一个例子:一元富翁

最后,我们举一个具体的例子,来展示第四节中的协议。

问题:假设富翁Alice和Bob的资产数量都只有1bit(0元或1元),需要在不泄露两位富翁的资产数量的前提下,知道Alice的资产是否比Bob多。(本例只为展示协议的流程,所以问题尽量的简化了。即使这样的资产数量并不能使Alice与Bob被称为“富翁”。)

条件:Alice的资产为0元,Bob的资产为1元。他们互相不知道对方的资产数量。

1.构造电路:Alice根据计算函数f,构建下图电路:

其中,Alice的资产值记作x,Bob的资产值记作y,结果记作z。当z=1时,Alice的资产大于Bob的;当z=0时,Alice的资产小于或等于Bob的资产数量。

该电路的真值表如下表所示:

表1-真值表:1bit数字比较

2. 混淆电路:将上述真值表转换为混淆表,混淆表的形式如下表所示:

表2-真值表计算混淆表

在计算中,Alice对各个混淆值取随机密钥。其中加密算法选择AES-256,以下密钥为base64编码后的内容:

由此计算出:

所以需要发送给Bob的混淆表,形式为:(已经打乱过行顺序)

3.Alice将表3的混淆表发送给Bob。

4.Alice根据自己的秘密——她的资产是0,选择了混淆值

nQ0DEzHK+KdXOj7Dg0gMa4u6H5TGCHozql2NLQMK5l8=,并且告知Bob她选择了哪个混淆值。

注意Bob并不知晓这个混淆值代表0还是1,所以Bob并不知道Alice的秘密。

并且Alice告知Bob,对于Bob来说,OOvRuZiaRe33Sf3caHNHM/8k8llr2RVdJlnQ0w2AoCM=代表布尔值0;

混淆值AvsOttGzuHT3T7/oC0FQewQqq2ysCZvynMO+2fXjQNw=代表布尔值1。

5.Bob根据自己的秘密——他的资产是1,选择了混淆值AvsOttGzuHT3T7/oC0FQewQqq2ysCZvynMO+2fXjQNw=。

对于表3的每一行,使用两个输入混淆值。

(nQ0DEzHK+KdXOj7Dg0gMa4u6H5TGCHozql2NLQMK5l8=和AvsOttGzuHT3T7/oC0FQewQqq2ysCZvynMO+2fXjQNw=)对该结果做两次对称解密。

四行中仅有一行能够解密成功,解密成功的计算结果为Wn9pYEg4D7uv5ioT3X6DFLVDTkT7aBrfGY6wOYbLhHY=。

Bob将此结果发送给Alice,

Alice查对应关系可得,计算结果为z=0。

对应的,Alice的资产少于等于Bob的。

计算完成。

由示例过程可知,在全过程中,Alice无法知道Bob的选择,于是无法知晓Bob的秘密。而Bob无法知晓Alice的混淆值对应哪个比特,也无法知晓Alice的秘密。但Alice与Bob共同计算出了结果。

往期推荐密码基础概念(二)

密码基础概念(一)

ARM平台linux系统内核HOOK常见问题探讨二

ARM平台linux系统内核HOOK常见问题探讨一

扫描关注我们

微信:OPPO安珀实验室

姚氏百万富翁 混淆电路_姚氏混淆电路原理简介相关推荐

  1. 三极管常用电路_三极管偏置电路

    三极管常用电路_三极管偏置电路 1.三极管偏置电路_固定偏置电路 如上图为三极管常用电路中的固定偏置电路:Rb的作用是用来控制晶体管的基极电路Ib,Ib称为偏流,Rb称为偏流电阻或偏置电阻.改变Rb的 ...

  2. s8050三极管经典电路_浅谈电路的PSRR(电源纹波抑制比)

    最近被邀请回答一个关于电源扰动对电路影响的问题,本来想简单回答一下,结果回想起工作后第一个项目有一个翻车的地方,就越写越多,干脆写成文章好了. 这不是一篇实用的文章,主要是我自己的思路,以及一些看起来 ...

  3. 电磁炉的三种工作形式_单管电路_半桥电路和全桥电路

    电磁炉的核芯电路是一个变频电路,即将50或60Hz的低频市电转换成20kHz的高频电供给感应线圈来产生高频磁场,使金属锅具在磁场作用下产生涡流而发热.目前电磁炉变频电路的主要形式有三种:单管电路.半桥 ...

  4. opa847方波放大电路_总结模拟电路应该具备的三大能力分析

    模拟电路是电子工程师绕不开的一个坎,虽然现在很多模拟电路可以用集成电路实现,但是,从基础性的学习和能力的培养来看,还是应该对模拟电路有一个比较深入的了解. 清华大学华成英老师总结模拟电路应该具备的能力 ...

  5. 填谷式无源pfc电路_有源PFC电路上各个元件的作用-安泰维修

    PFC(Powerfactorcompensation)电路是电源上经常使用的一种电路,PFC电路位于整流桥之后,滤波电容之前,用于改善电路的功率因数和EMI指标.PFC分为有源和无源,现代小型化开关 ...

  6. jh锂电保护电路_锂电池保护电路设计方案

    锂电池材料构成及性能探析 首先我们来了解一下锂电池的材料构成,锂离子电池的性能主要取决于所用电池内部材料 的结构和性能.这些电池内部材料包括负极材料.电解质.隔膜和正极材料等.其中正.负极 材料的选择 ...

  7. allatori混淆工具_代码混淆神器 Allatori

    准备工作 此次案例使用官方 Demo,不使用任何插件 环境:windows 10 1.Allatori简介 Allatori 是第二代 Java 混淆器,可为您的知识产权提供全方位的保护. 尽管大多数 ...

  8. 电路基础_模拟电路_问答_2023_01

    模拟电路 (数学.电路.编程.信号处理) 模拟电路的历史可以追溯到19世纪初,当时电学理论才刚刚开始发展.经过多年的研究和实践,一些重要的电学定律和基本电路结构被发现和建立,如欧姆定律.基尔霍夫定律. ...

  9. 理解姚氏百万富翁问题

    问题:两富人比谁钱多.如何能实现互相保密但可以比出谁钱多? 乍一看感觉不是什么特别复杂的问题,比如知乎用户@辰舰长的答案: 用天平,每个富商领到一个质量固定的黑箱,让富商在其中放入质量与财富相对应的筹 ...

最新文章

  1. ASP.NET.4.5.1+MVC5.0系统角色和权限讲解
  2. 如何使用Worktile进行敏捷项目开发管理
  3. Cloudify — Plugins
  4. 模块版网站与html网站,网站新闻模块代码html
  5. 双向链表的创建和相关操作
  6. selenium python下载_使用Selenium、Chrome和Python下载PDF
  7. 吴恩达机器学习5——神经网络的学习
  8. 安卓隐藏摄像_【快讯:诺基亚发布三款安卓机;全面屏手机的最终形态,目标是去掉摄像头;iPhone 打电话不息屏或挂断电话后不亮屏是什么问题?】...
  9. fatfs 文件属性_FATFS文件系统剖析(全).
  10. onclick控制元素显示与隐藏时,点击第一次无反应的原因
  11. ios html清除缓存图片,iOS 清理文件缓存(示例代码)
  12. win10ltsc安装后重启提示bitlocker有问题怎么办_重装系统过程中电脑意外重启?这几步彻底摆脱安装失败的尴尬!...
  13. c++基础 STL 第 0 篇:(模板)
  14. 计算机哪个按键可以和弦,钢琴键盘和弦图解大全!作曲必看!老师和家长快收藏起来...
  15. php调用chromium截图,chromium截图实现
  16. c语言字符串字数统计,C语言中使用lex统计文本文件字符数
  17. 搭建视频播放服务器(nginx web服务器)
  18. 图像边缘检测 Canny边缘检测
  19. android的自我评价,2021年ANDROID软件工程师的自我评价
  20. 《SEO实战密码》笔记①-了解搜索引擎

热门文章

  1. 使用masonry布局旋转View的问题
  2. Windows不能在本地计算机启动MongoDB,错误代码 100
  3. Java凝视Override、Deprecated、SuppressWarnings具体解释
  4. PHPExcel读取excel的多个sheet存入数据库
  5. 4.9.3 方法注释
  6. CCNA笔记-交换机安全
  7. 基于Springboot实现宠物医院综合管理系统
  8. What is Gensim?
  9. 编程面试过程中最常见的10大算法
  10. 如何用javasript对Gridview的项目进行汇总统计?