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

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


1. 安全多方计算简介

安全多方计算问题(SMC,Secure Multi-party Computation)由由中国计算机科学家、2000年图灵奖获得者姚启智教授于1982年在论文《Protocols for secure computations》中以百万富翁问题(两个百万富翁Alice和Bob想知道他们两个谁更富有,但他们都不想让对方及其他第三方知道自己财富的任何信息)提出,开创了密码学研究的新领域。

安全多方计算定义:是指在一个互不信任的多用户网络中,n nn个参与者P 1 , P 2 , . . . , P n P_1,P_2,...,P_nP1,P2,...,Pn,每个持有秘密数据x i x_ixi,希望共同计算出函数f ( x 1 , x 2 , . . . , x n ) = ( y 1 , y 2 , . . . , y n ) f(x_1,x_2,...,x_n)=(y_1,y_2,...,y_n)f(x1,x2,...,xn)=(y1,y2,...,yn)P i P_iPi仅得到结果y i y_iyi,并且不泄露x i x_ixi给其他参与者。

平均薪水问题是一个简单的安全多方计算问题,即某公司n nn位职员想了解他们每月的平均薪水有多少,但又不想让任何其他人知道自己的薪水。

设公司n nn个职员A 1 , A 2 , … , A n A_1,A_2,…,A_nA1,A2,,An,他们的薪水分别为x 1 , x 2 , … , x n x_1,x_2,…,x_nx1,x2,,xn。该问题可形式化描述为:对n nn个秘密输入x 1 , x 2 , … , x n x_1,x_2,…,x_nx1,x2,,xn,在不泄露各自秘密的情况下计算函数值:f ( x 1 , x 2 , … , x n ) = ( x 1 + x 2 + … + x n ) / n f(x_1,x_2,…,x_n)=(x_1+x_2+…+x_n)/nf(x1,x2,,xn)=(x1+x2++xn)/n执行以下协议:

  • (1)A 1 A_1A1选择一个随机数r rr并加上他的薪水得r + x 1 r+x_1r+x1发送给A 2 A_2A2
  • (2)A 2 A_2A2加上他的薪水得r + x 1 + x 2 r+x_1+x_2r+x1+x2发送给A 3 A_3A3
  • (3)A 3 , A 4 , A 5 , … , A n − 1 A_3,A_4,A_5,…,A_{n-1}A3,A4,A5,,An1继续执行同样操作
  • (4)A n A_nAn加上他的薪水得r + x 1 + x 2 + … + x n r+x_1+x_2+…+x_nr+x1+x2++xn发送给A 1 A_1A1
  • (5)A 1 A_1A1将其减去随机数r rr再除以总人数n nn便得公司职员的平均薪水( x 1 + x 2 + … + x n ) / n (x_1+x_2+…+x_n)/n(x1+x2++xn)/n
  • (6)A 1 A_1A1A 2 , A 3 , … , A n A_2,A_3,…,A_nA2,A3,,An公布平均薪水的结果

2. 基本概念

2.1 参与者

参与者指参与协议的各方,每个参与者被抽象为具有概率多项式时间算法的图灵机根据参与者在协议中的行为将其分为以下三类:

(1)诚实参与者:诚实参与者完全按照要求完成执行过程中的各个步骤,同时保密自己的所有输入、输出及中间结果。诚实参与者也会根据自己的输入、输出以及中间结果来推导其他参与者的信息,但是不会被攻击者腐败。

(2)半诚实参与者:半诚实参与者在协议的执行过程中,完全按照协议的要求完成协议的各个步骤,但同时可能将自己的输入、输出及中间结果泄露给攻击者。

(3)恶意参与者:恶意参与者在协议的执行过程中,完全按照攻击者的意志执行协议的各个步骤,他不但将自己的所有输入、输出及中间结果泄露给攻击者,还可以根据攻击者的意图改变输入信息、伪造中间及输出信息,甚至中止协议。

2.2 攻击者

安全多方计算协议中,攻击者会破坏协议安全性或正确性,通过腐败参与者的一个子集,来控制其对协议进行攻击。根据攻击者对恶意参与者的控制程度、攻击者的计算能力、网络同步与异步状态、自适应性等准则,可以对攻击者有不同的分类。其中按照对恶意参与者的控制程度,将攻击者分为以下下三类:

(1)被动攻击者:又称为半诚实攻击者。被动攻击者只是监听恶意参与者的输入、输出及中间计算结果,并不控制恶意参与者的行为(比如修改恶意参与者的输入输出)。

(2)主动攻击者:除了监听任意参与者的输入、输出及中间结果外,主动攻击者还控制恶意参与者的行为(如恶意篡改参与者的输入,按照自己的意图控制恶意参与者的输出等)。

(3)隐蔽攻击者:Aumann和Lindell于2007年提出介于被动攻击者与主动攻击者之间的攻击者类型,即隐蔽攻击者(Convert adversary)。隐蔽攻击者以被发现的概率为(称为遏制因子)危险去攻击协议,被隐蔽攻击者腐败的参与者可以进行主动的腐败行为。

3. 安全多方计算的模型

安全多方计算的模型主要有三种:半诚实模型、恶意模型与隐蔽攻击模型。

(1)半诚实模型:如果所有参与者都是半诚实或诚实的,称此模型为半诚实模型。半诚实成员完全遵守协议,但它会收集协议执行过程中的所有记录,并试图推断其他成员的输入,半诚实模型中的攻击者都是被动的。

半诚实模型下的理想模型定义:在理想模型中,存在一个诚实第三方T TT,该第三方能够与所有参与者进行保密通信,且对对参与者发送给的所有信息保密。攻击者不能得到诚实参与者与T之间交换的任何信息。

  • 输入:参与者A AA拥有x xx,参与者B BB拥有y yy
  • 参与者发送输入至T TT: 参与者按要求将输入发送至T TT
  • T TT回应参与者:T TT收到输入( x , y ) (x,y)(x,y)后,计算( x , y ) (x,y)(x,y)T TT发送f 1 ( x , y ) f_1(x,y)f1(x,y)至参与者A AA,发送f 2 ( x , y ) f_2(x,y)f2(x,y)至参与者B BB
  • 输出:诚实的参与者总是输出从T TT接收到的信息;恶意的参与者会输出任意一个多项式函数,该多项式函数跟初始输入及从T TT得到的信息的有关。

(2)恶意模型:有恶意参与者的模型称为恶意模型。恶意参与者完全按照攻击者的意愿执行协议的各个步骤,他不但将自己的所有输入、输出以及中间结构泄露给攻击者,还可以根据攻击者的意图改变改变输入信息、伪造中间及输出信息,甚至终止协议。恶意模型中的攻击者是主动的。

恶意模型下的理想模型定义:在理想模型中,存在一个诚实第三方T TT

  • 输入:每一个参与者都有一个输入,用w ww表示。
  • 参与者发送输入至T TT:恶意参与者有根据当前输入w ww,决定拒绝发送消息或将某个发送给T TT
  • T TT回应第一个参与者:如果T TT收到一对输入( x , y ) (x,y)(x,y),他计算( x , y ) (x,y)(x,y),并将第一个元素f 1 ( x , y ) f_1(x,y)f1(x,y)发回给第一个参与者。否则,T TT就向两个参与者都发送一个终止符⊥ \bot,终止协议。
  • T TT回应第二个参与者:如果第一个参与这是恶意的,他会根据自己的输入以及诚实第三方T TT的回应,决定是否让T TT终止协议。如果他要求T终止协议,T TT就将终止符⊥ \bot发送给第二个参与者来终止协议。否则T TT将发送f 2 ( x , y ) f_2(x,y)f2(x,y)至第二个参与者。
  • 输出:诚实的参与者总是输出从T接收到的信息;恶意的参与者会输出任意一个多项式函数,该多项式函数跟初始输入及从T得到的信息的有关。

(3)隐蔽攻击模型:有被隐蔽攻击者参与的模型称为隐蔽攻击者模型,被腐败的参与者可以进行主动的腐败行为,但仅在能小于一定概率不被发现的情况下才可实施腐败行为。

4. 安全多方计算的密码学工具

(1)秘密共享

秘密共享定义如下:将原始秘密m mm在参与者集合中P 1 , P 2 , . . . , P n P_1,P_2,...,P_nP1,P2,...,Pn分享,P i P_iPi持有子秘密m p i m_{p_i}mpi,只有特定参与者的集合才能够从他们的子秘密中恢复秘密m mm,而其他参与者不能得到秘密m mm的任何信息。

常见的秘密共享方案包括:Shamir秘密共享方案、Asmuth-Bloom方案、Feldman的VSS方案、Pedersen的VSS方案以及无分发者Joint-Shamir-RSS方案(Joint Shamir Random Secret Sharing)。

(2)同态加密

R.Rivest等人1978年首次在《On data banks and privacy homomorphisms》中以隐私同态(Privacy homomorphism)的概念提出。同态性使得可以在加密数据上进行运算,从而保护用户数据隐私。Gentry, C. 于2009年在《Fully homomorphic encryption using ideal lattics》给出了全同态的定义,并基于理想格构造了一系列全同方案。

全同态加密方案是指, 对于n nn个明文消息m 1 , m 2 , … , m n m_{1}, m_{2}, \ldots, m_{n}m1,m2,,mn , 及对应的密文c 1 , c 2 , … , c n c_{1}, c_{2}, \ldots, c_{n}c1,c2,,cn , 其加密算法E EE与解密算法D DD满足, 对于有限域上的任意可计算函数f ffD ( f ( E ( m 1 ) , E ( m 2 ) , … , E ( m n ) ) = f ( m 1 , m 2 , … , m n ) D\left(f\left(E\left(m_{1}\right), E\left(m_{2}\right), \ldots, E\left(m_{n}\right)\right)=f\left(m_{1}, m_{2}, \ldots, m_{n}\right)\right.D(f(E(m1),E(m2),,E(mn))=f(m1,m2,,mn)

全同态加密体制使得可以在加密数据上进行任意计算与分析,可应用于加密云存储服务,隐私信息检索,隐私数据挖据等许多重要领域。比如许多企业需要委托第三方(云计算数据中心)对数据进行处理分析,但是数据中含有商业机密等敏感信息,可以首先使用全同态加密算法对数据加密后再发送给第三方,这样云端服务器不用解密就可以直接处理数据,完成后返给用户,用户对数据解密得到处理结果。

(3) 比特承诺

比特承诺方案(Bit Commitment Scheme)解决这样的问题:Alice向Bob承诺一个预测(比特值),直到一段时间之后才揭示着预测(比特值);在这期间,Alice不能改变自己的预测(比特值)。

比特承诺的一个直观例子:Alice 把消息M MM(承诺)放在一个箱子里(只有Alice有钥匙)并将它锁住送给Bob,等到 Alice 决定向 Bob证实消息M MM时,Alice把消息M MM及钥匙给 Bob,Bob 能够打开箱子并验证箱子里的消息同 Alice出示的消息是否相同,且Bob 确信箱子里的消息在他保管期间没有被篡改。

常见的比特承诺方案有基于对称密码算法的,基于单向函数的以及基于数学难解问题的(大数分解、离散对数等)。

(4)零知识证明

零知识证明(Zero Knowledge Proof) 由S.Goldwasser、S.Micali 及 C.Rackoff于1985年在论文《The Knowledge Complexity of Interactive Proof Systems》(交互式证明系统中的知识复杂性)首次提出,是一种用于证明者在不泄露任何其他信息的情况下证明其掌握知识正确性的密码学协议。

该协议的一方称为证明者(Prover),用P PP表示;协议的另一方称为验证者(Verifier),用V VV表示。零知识证明指P PP试图使V VV相信某个论断是正确的,但却不向V泄露任何有用的信息,即P PP在论证的过程中V VV得不到任何有用的信息。

(5)混合网络

1981年,Chaum首次在《Untraceable electronic mail, return addresses, and digital pseudonyms》提出混合网络(MN,Mix-Network),用于保护参与者的隐私。

混合网络是一个多方协议,协议的输入是一个密文表,该密文表中的密文与明文有一一对应的关系。混合网将这个密文表随机置换后输出另外一个密文表,称之为盲表(Blinded table)。同输入的密文表一样,输出的盲表中的密文和相同的一组明文也是一一对应的,即输出的密文表是输入密文表的随机置换。混合网络的安全性在于攻击者无法确定输出盲表中的某一条密文与输入密文表中的哪一条密文是对应的。

M.Jakobsson和A.Juels提出了基于Mix-Match的安全多方计算协议,该类协议包括Mix与Match两个阶段:Mix阶段通过构造混合网络,生成盲表;Match阶段通过执行PET协议进行查表,得到对应的输出。最后参与者共同解密输出。

(6)不经意传输

不经意传输(OT,Oblivious Transfer)又称健忘传输或茫然传输,由Rabin于1981年提出。不经意传输是从一个消息集合秘密获取取部分消息的方法,该协议执行完毕后,接收方知道他是否收到这个秘密,但发送方却不知道(oblivious)。

考虑这样的场景:A意欲出售许多个问题的答案,B打算购买其中一个问题的答案,但又不想让A知道他买的哪个问题的答案。即B不愿意泄露给A他究竟掌握哪个问题的秘密,此类场景可通过不经意传输协议实现。

不经意传输包括:1-out-of-2不经意传输、1-out-of-n不经意传输、m-out-of-n不经意传输。

5. 学习参考

(1)David Evans、Vladimir Kolesnikov、Mike Rosulek,《A Pragmatic Introduction to Secure Multi-Party Computation》(中文版:《实用安全多方计算导论》)

  • 第1章 引言(Introduction)
  • 第2章 安全多方计算定义(Defining Multi-Party Computation)
  • 第3章 安全多方计算基础协议(Fundamental MPC Protocol)
  • 第4章 实现技术(Implementation Techniques)
  • 第5章 不经意数据结构(Oblivious Data Structures)
  • 第6章 恶意安全性(Malicious Security )
  • 第7章 其他威胁模型(Alternative Threat Models)
  • 第8章 总结(Conclusion)

(2)Wenliang Du,Mikhail J. Atallah,《Secure Multi-Party Computation Problems and Their Applications:A Review and Open Problems》

(3)Oded Goldreich(以色列),《Secure Multi-Party Computation》

(4)Yehuda Lindell(以色列),《Secure Multiparty Computation》

(5)冯登国, 《Concretely efficient secure multi-party computation protocols: survey and more》

(6)Facebook AI Research,《CRYPTEN: Secure Multi-Party Computation Meets Machine Learning》

(7)安全多方计算专栏密码学专栏

相关文章
|
2月前
|
机器学习/深度学习 算法 安全
隐私计算训练营第三讲-详解隐私计算的架构和技术要点
SecretFlow 是一个隐私保护的统一框架,用于数据分析和机器学习,支持MPC、HE、TEE等隐私计算技术。它提供设备抽象、计算图表示和基于图的ML/DL能力,适应数据水平、垂直和混合分割场景。产品层包括SecretPad(快速体验核心能力)和SecretNote(开发工具)。算法层涉及PSI、PIR、数据分析和联邦学习(水平、垂直、混合)。此外,SecretFlow还有YACL密码库和Kusica任务调度框架,Kusica提供轻量化部署、跨域通信和统一API接口。
66 0
|
1月前
|
监控 安全 数据可视化
第9讲:隐语多方安全计算在安全核对的行业实践丨隐私计算实训营 第1期
行业法规趋势强调数据安全与隐私保护,如《个人信息安全规范》、《数据安全法》和《个人信息保护法》,倡导最小权限原则和数据的有效利用。产品方案致力于在保障安全和隐私的前提下促进数据共享。技术共建中,与隐语合作构建安全自证能力,包括可审查性、可视化监控和可攻防的验证机制,确保数据操作透明且安全。
21 1
|
1月前
|
SQL 安全 数据挖掘
隐私计算实训营第7讲:隐语SCQL的架构详细拆解丨隐私计算实训营 第1期
SCQL是安全协作查询语言,让不信任的多方能在保护隐私的前提下进行联合数据分析。它假设参与者半诚实,支持多方(N>=2)合作,且具备SQL语法支持和性能优化。SCQL提供类似SQL的用户界面,通过CCL机制允许数据所有者控制数据使用权限。系统基于SPU的MPC框架运行,适用于多个应用场景。
20 0
|
2月前
|
安全 区块链 数据安全/隐私保护
隐私计算实训营 第1期-第2讲 隐私计算开源如何助力数据要素流通
本文探讨了数据要素流通中的三个关键主体——数据提供方、数据消费方和数据平台方的忧虑。数据提供方关注商业秘密、个人隐私、数据使用控制及安全合规;数据消费方则担忧数据授权链和合规使用;数据平台方旨在解决双方疑虑,提供主体审核、授权链路审核、合规评审等服务。技术可信是关键,涉及隐私计算(数据可用不可见)、数据空间与区块链技术(数据可控可计量)以及数据匿名化(数据可算不可识)等。
|
2月前
|
数据采集 运维 安全
|
2月前
|
机器学习/深度学习 安全 物联网
安全多方计算之十:联邦学习与安全多方计算
安全多方计算之十:联邦学习与安全多方计算
|
2月前
|
机器学习/深度学习 人工智能 安全
安全多方计算之九:不经意传输
安全多方计算之九:不经意传输
|
9月前
|
机器学习/深度学习 安全 算法
「机密计算-隐私计算」科普
「机密计算-隐私计算」科普
359 0
|
9月前
|
机器学习/深度学习 安全 算法
「机密计算-隐私计算」技术框架
「机密计算-隐私计算」技术框架
227 0
|
10月前
|
机器学习/深度学习 SQL 人工智能
隐私计算技术路线介绍及对比
隐私计算技术路线介绍及对比
331 0

热门文章

最新文章