多方安全计算MPC

article/2025/9/13 1:38:07

1.多方安全计算的价值

MPC是密码学的一个重要分支,旨在解决一组互不信任的参与方之间保护隐私的协同计算问题,为数据需求方提供不泄露原始数据前提下的多方协同计算能力。

在目前个人数据毫无隐私的环境下,对数据进行确权并实现数据价值显得尤为重要。MPC就是实现此目的的计算协议,在整个计算协议执行过程中,用户对个人数据始终拥有控制权,只有计算逻辑是公开的。计算参与方只需参与计算协议,无需依赖第三方就能完成数据计算,并且参与各方拿到计算结果后也无法推断出原始数据。

2.多方安全计算的来源

多方安全计算(MPC:Secure Muti-Party Computation)研究由图灵奖获得者、中国科学院院士姚期智教授在1982年提出,姚教授以著名的百万富翁问题来说明多方安全计算。百万富翁问题指的是,在没有可信第三方的前提下,两个百万富翁如何不泄露自己的真实财产状况来比较谁更有钱。通过研究此问题,形象地说明了多方安全计算面临的挑战和问题解决思路,经Oded Goldreich、Shaft Goldwasser等学者的众多原始创新工作,多方安全计算逐渐发展成为密码学的一个重要分支。

3.问题抽象

多方安全计算可以抽象的理解为:两方分别拥有各自的私有数据,在不泄漏各自私有数据的情况下,能够计算出关于公共函数 的结果。整个计算完成时,只有计算结果对双方可知,且双方均不知对方的数据以及计算过程的中间数据。

4.什么是多方安全计算?

多个持有各自私有数据的参与方,共同执行一个计算逻辑计算逻辑(如,求最大值计算),并获得计算结果。但过程中,参与的每一方均不会泄漏各自数据的计算,被称之为MPC计算。

举个例子,Bob和Alice想弄清谁的薪资更高,但因为签署了保密协议而不能透露具体薪资。如果Bob和Alice分别将各自的薪资告诉离职员工Anne,这时Anne就能知道谁的薪资更高,并告诉Bob和Alice。这种方式就是需保证中间人Anne完全可信。

而通过MPC则可以设计一个协议,在这个协议中,算法取代中间人的角色,Alice和Bob的薪资以及比较的逻辑均交由算法处理,参与方只需执行计算协议,而不用依赖于一个完全可信的第三方。

多方安全计算所要确保的基本性质就是:在协议执行期间发送的消息中不能推断出各方持有的私有数据信息,关于私有数据唯一可以推断的信息是仅仅能从输出结果得到的信息。

4.1.什么是算法

算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。

如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。

算法具有以下五个重要特征:

  • 有穷性:算法的有穷性是指算法必须能在执行有限个步骤之后终止;
  • 确切性:算法的每一步骤必须有确切的定义;
  • 输入项:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件;
  • 输出项:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;
  • 可行性:算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步,即每个计算步都可以在有限时间内完成(也称之为有效性)。

注意:文档中提到的“算法”,特指MPC底层算法;“计算逻辑”特指为执行具体运算而编写的算法,运行在MPC底层算法之上。

4.2.MPC问题分类

由算法适用性来看,MPC既适用于特定的算法,如加法、乘法、AES,集合交集等;也适用于所有可表示成计算过程的通用算法。

根据计算参与方个数不同,可分为只有两个参与方的2PC和多个参与方(≥3)的通用MPC。

安全两方计算所使用的协议为Garbled Circuit(GC)+Oblivious Transfer(OT);而多方安全计算所使用的协议为同态加密+秘密分享+OT。

在多方安全计算中,安全挑战模型包括半诚实敌手模型和恶意敌手模型。市场大部分场景满足半诚实敌手模型,也是JUGO技术产品所考虑的敌手模型。

  • 半诚实敌手模型:计算方存在获取其他计算方原始数据的需求,但仍按照计算协议执行。半诚实关系即参与方之间有一定的信任关系,适合机构之间的数据计算;
  • 恶意敌手模型:参与方根本就不按照计算协议执行计算过程。参与方可采用任何(恶意)方式与对方通信,且没有任何信任关系。结果可能是协议执行不成功,双方得不到任何数据;或者协议执行成功,双方仅知道计算结果。更多适用于个人之间、或者个人与机构之间的数据计算。

4.3.多方安全计算主要通过以下四大技术来进行保障:

(1)同态加密(Homomorphic Encryption,简称HE)

同态加密是一类具有特殊自然属性的加密方法,可在密文域下进行数据运算的加密算法。与一般加密算法相比,同态加密除了能实现基本的加密操作之外,还能实现密文间的多种计算功能,即先计算后解密等价于先解密后计算。

根据不同加密方案对所支持功能的不同限制,同态加密方案可分为有限同态和完全同态(FHE)方案。有限同态的加密算法只支持某些特定的功能(如有限的加法和乘法运算)。有限同态算法容易实现,其计算开销也小;因此,这种算法已经在实践中使用。相比之下,完全同态算法可以支持任意函数,但其计算开销巨大;因此,它们离实际应用还有一定距离。

通过FHE算法,数据用户可以将加密数据外包给服务器,直接对这些数据执行各种操作,而不暴露这些数据包含的任何机密信息。支持的操作包括查询和修改加密数据。一旦对加密数据操作的操作已经完成,结果就返回给数据用户,数据用户使用相应的解密密钥对接收到的加密数据进行解密。在整个过程中,服务器帮助数据用户执行复杂的操作,而无需从用户的数据中获取任何信息。

多用户同态加密主要有两种类型:门限FHE和多密钥FHE。在前者中,密钥生成过程是一个交互式SMPC协议,其中多个用户共同协商一个公钥并获取相应私钥的秘密份额。然后,所有用户都使用公共公钥对其私有数据进行加密并将其发送到服务器,其中,该服务器具有强大的计算能力。此服务器对收到的密文执行任意函数计算。最后,用户交互地应用解密协议来获得计算结果的明文。

(2)混淆电路(Garbled Circuit,简称GC)

混淆电路思想是利用计算机模拟集成电路的方式来实现多方安全计算的,它将运算任务转化为门电路的形式,并且对每一条线路进行加密,在很大程度上保障了用户的隐私安全。

(3)不经意传输(Oblivious Transfer,简称OT)

不经意传输协议是一种可保护隐私的秘密协议,它使得服务发送方和服务接收方以不经意的方式交互信息,从而可达到保护隐私的目的。不经意传输协议是一个两方安全计算协议,接收方从发送方的数据中选取部分数据,协议使得接收方除选取的内容外,对剩余数据一无所知,并且发送方也无从知道被选取的内容。

(4) 秘密分享(Secret Sharing,简称SS)

秘密分享也被称为秘密分割,是一种对秘密信息的管理方式,它将秘密进行拆分,拆分后的每一个分片由不同的参与者管理,单个参与者无法恢复秘密信息,需要超过一定门限数量的人一同协作进行合并才能恢复秘密文件。

5.MPC算法基本原理(2PC半诚实模型)

下面介绍安全两方计算的半诚实模型下的MPC算法原理:

5.1.MPC算法执行过程

先对输入数据做预处理。

遵循原则:1、尽量少的数据输入;2、尽量多的数据预处理

——数据量太大时会大幅降低算法执行效率。

计算逻辑转化为布尔电路。

遵循原则:尽量简单的计算逻辑

——由于MPC是计算密集型和通信密集型算法,若计算逻辑很复杂,会对执行效率产生很大影响。

转化方式:手动/电路编译器Frutta

将输入的布尔电路做GC和OT算法(详细在下面叙述),得到输出结果。

5.2.GC+OT的两方计算基本框架

GC+ OT是在两方semi-honest模型下的通用型算法,即可以支持任意计算逻辑的安全两方计算。

总体框架如下图:


6.小结

多方安全计算是一种在不泄漏原始数据的情况下,对数据进行的计算。上述内容首先介绍了MPC的价值及来源,然后详述了两方安全计算的技术实现原理,主要包括GC和OT算法,并对一些技术基础知识做了简要概述。


http://chatgpt.dhexx.cn/article/eggAZumx.shtml

相关文章

安全多方计算(MPC)

MPC既适用于特定的算法,如加法、乘法、AES,集合交集等;也适用于所有可表示成计算过程的通用算法。 根据计算参与方个数不同,可分为只有两个参与方的2PC和多个参与方(≥3)的通用MPC 1)安全两方&a…

安全多方计算之二:一文搞懂百万富翁问题

百万富翁问题 1. 解决方案2. 协议描述3. 协议说明4. 协议举例5. 协议扩展 两个百万富翁Alice和Bob想知道他们两个谁更富有,但他们都不想让对方及其他第三方知道自己财富的任何信息,这是由中国计算机科学家、2000年图灵奖获得者姚启智教授于1982年在论文《…

安全多方计算-入门学习笔记(三)

四、基于非噪音的安全多方计算介绍 1概念 非噪音方法一般是通过密码学方法将数据编码或加密,得到一些奇怪的数字,而且这些奇怪的数字有一些神奇的性质,比如看上去很随机但其实保留了原始数据的线性关系,或者顺序明明被打乱但人们…

基于隐私保护的安全多方计算区块链融合技术的智能合约

安全多方计算与区块链的融合技术 SMPC-安全多方计算综述安全的定义安全模型SMPC效率问题 区块链应用:智能合约智能合约的问题SMPC需求引入 基于SMPC的智能合约辅助:MPI协议-效率提升 SMPC-安全多方计算综述 随着物联网、移动计算、大数据、云计算的快速…

安全多方计算之GMW协议

安全多方计算之GMW协议 一、背景 论文原文《How to play any mental game》。作者:Micali S, Goldreich O, Wigderson A. 发表在:Proceedings of the Nineteenth ACM Symp on Theory of Computing, STOC. GMW协议可以同时适用在布尔电路和算术电路&am…

多方安全计算概述

多方安全计算(Secure Multi-Party Computation, MPC)是密码学的一个分支,在无可信第三方的情况下,仍可安全地按照公开的计算逻辑,进行数据协同计算,并输出结果。 即使参与各方输入的数据只有自…

安全多方计算之一:什么是安全多方计算

安全多方计算 1. 安全多方计算简介2. 基本概念2.1 参与者2.2 攻击者 3. 安全多方计算的模型4. 安全多方计算的密码学工具5. 学习参考 1. 安全多方计算简介 安全多方计算问题SMC,Secure Multi-party Computation)由由中国计算机科学家、2000年图灵奖获得…

安全多方计算简介

文章目录 一、安全多方计算定义二、安全多方计算安全模型1.行为模型2.安全门限 三、安全多方计算关键技术1.秘密共享(Secret Sharing, SS)2.不经意传输(Oblivious Transfer, OT)3.混淆电路(Garbled Circuit, GC) 参考资料 一、安全多方计算定义 安全多方计算(Secure Multi-Par…

安全多方计算 # 个人笔记

一个优美令人如痴如醉的领域。 Data is the oil of the 21st century 欢迎读者拍砖和提供本文修改建议。本文长期维护。 第二次编辑于2021/10/20,新增了部分阅读材料,调整了文章内容的组织。 0 研究背景 【最后更新于2021/10/20】 时代背景&#xff1…

Verilog操作符

操作符优先级表 Verilog中的大小(size)与符号 Verilog根据表达式中变量的长度对表达式的值自动地进行调整; Verilog自动截断或扩展赋值语句中右边的值以适应左边变量的长度; 当一个负数赋值给无符号变量如reg时,Verilog自动完成二进制补码计算; 算术运算符 加(+)、减(-…

C语言——操作符详解

目录 一、算术操作符 二、移位操作符 三、位操作符 四、赋值操作符 五、单目操作符 六、关系操作符 七、逻辑操作符 八、条件操作符 九、逗号表达式 十、下标引用、函数调用和结构成员 以上就是C语言中涉及到得操作符,我将用代码实例配合说明&#xff0c…

教妹学Java(十一):操作符简介

大家好,我是沉默王二,一个和黄家驹一样身高,和刘德华一样颜值的程序员。本篇文章通过我和三妹对话的形式来谈一谈“Java 中的操作符”。 教妹学 Java,没见过这么有趣的标题吧?“语不惊人死不休”,没错&…

位运算操作符详解

文章目录 一. 移位操作符>> <<1. 整数的二进制表示Ps:怎么确定一个数在内存中占几位呢&#xff1f; 2. <<左移操作符3. >>右移操作符 二. 位操作符& &#xff5c;^1. &按&#xff08;二进制&#xff09;位与2. &#xff5c;按&#xff08;二进…

【C语言】操作符详解

文章目录 前言一、操作符分类二、用法详述1.算数操作符2.移位操作符2.1左移操作符2.2右移操作符2.3警告&#xff1a; 3.位操作符3.1 & 按位与3.2 | 按位或3.3 \^ 按位异或 4.赋值操作符5.单目操作符5.1逻辑反操作符 !5.2 自增、自减操作符 、--5.3 按位取反 ~ 6.关系操作符…

集合类型的操作符(共10个)

注意&#xff1a;本次所有的举例均为s{1,2,3,4,5},t{4,5,6,7} 1.S - T 或 S.difference(T): 返回一个新集合&#xff0c;包括在集合S中但不在集合T中的元素 eg:2.S - T或S.difference_update(T): 更新集合S&#xff0c;包括在集合S,包括在集合S中但不在集合T中的元素。 eg: 3.S…

c++ 操作符大全-算术操作符、关系操作符、逻辑操作符、位操作符、自增自减操作符、赋值操作符、条件操作符、逗号操作符、操作符优先级

文章目录 操作符1、算术操作符2、关系操作符3、逻辑操作符4、位操作符5、自增自减操作符6、赋值操作符7、条件操作符8、逗号操作符9、操作符优先级 操作符 计算机程序可以看作一串运算式&#xff0c;可以对各种运算类型进行运算。这种运算不仅仅是代数上的加减乘除&#xff0c…

操作符详解—c语言

目录 1. 操作符分类&#xff1a; 2. 算术操作符 3. 移位操作符 3.1 左移操作符 3.2 右移操作符 4. 位操作符 5. 赋值操作符 6. 单目操作符 6.1 单目操作符介绍 7. 关系操作符 8. 逻辑操作符 9. 条件操作符 10. 逗号表达式 11. 下标引用、函数调用和结构成…

【SV】流操作符

流操作符 作用 把其后的数据打包成一个比特流 >>和<< 操作符>>把数据从左向右变成流&#xff0c;<<则把数据从右到左变成流。 注意&#xff1a; 可以指定一个片段宽度&#xff0c;把源数据按照这个宽度分段以后再转变成流。 例如 h{>>1{j}} 或…

C语言操作符总结

目录 1.算术操作符 2.移位操作符 3.位操作符 4.赋值操作符 5.单目操作符 6.关系操作符 7.逻辑操作符 8.条件操作符 9.逗号表达式 10.下标引用、函数调用和结构成员 C语言中操作符总共有10种&#xff0c;分别是&#xff1a; 算术操作符&#xff0c;移位操作符&#xf…

C语言操作符汇总

目录 一、算术操作符 二、移位操作符 三、位操作符 四、赋值操作符 五、单目操作符 六、关系操作符 七、逻辑操作符 八、条件操作符 九、逗号表达式 十、下标引用、函数调用和结构成员 C语言的操作符分为以下10种&#xff1a; 算术操作符移位操作符位操作符赋值操作…