Bootstrap

安全多方计算

安全多方计算

Lecture 1 安全多方计算(MPC)的基本概念及基础组件 —— 冯登国院士_哔哩哔哩_bilibili

安全多方计算定义与应用

安全多多方计算起源于姚启智教授于1982年在论文《Protocols for Secure computation》中以百万富翁问题(两个百万富翁A和B想知道他们两个谁更富有,但他们都不想让对方及其第三方指导自己财富的任何信息)提出。

Fairplay首个MPC实现. 实现了半诚实安全(姚启智提出的两方安全计算协议),使学术界和工业界看到MPC协议是可实现的,可用于解决实际问题,04年之后随着大数据时代的到来,数据隐私计算的驱动,大量MPC的故作致力于实际高效设计,不断提高MPC协议的性能,推动MPC协议的实际应用。

安全多方计算发展历程.jpg

随着数据安全法和个人信息保护法的颁布,并且数据价值和企业经济利益,使数据形成一座座孤岛,数据流通难以实现。
MPC能打破数据孤岛,实现数据流通,保护数据隐私,并在诸多领域发现实际应用。

现状及应用.jpg

安全多方分类

MPC 协议需要满足隐私性 (privacy) 和正确性 (correctness) 两个基本安全属性.

(1) 敌手行为

半诚实敌手:按照协议描述执行,但试图从协议记录中获取信息
恶意敌手:可以执行任何攻击,发送任意的消息
image.png

(2) 腐化数量(腐化门限t)

不诚实大多数情况, 其中 n/2 ⩽ t < n (大部分 MPC 协议考虑 t = n − 1);
诚实大多数情况, 其中 t < n/2 (即允许严格少于一半数量的参与方被敌手腐化).

image.png

(3) 输出的可达性

中止安全:腐化实体获得输出后,介意阻止诚实实体获得输出
公平性: 要么腐化实体和诚实实体均获得输出,要么他们均没有输出
保证输出传送: 所有城市实体总是获得输出

(4) 计算模型

布尔电路: 由AND,XOR,NOT等逻辑门组成
算术电路: 由AND,MULT等运算组成,通常定义在域 F \mathbb{F} F上或环 Z 2 k \mathbb{Z}_{2^k} Z2k(即 m o d 2 k mod 2^k mod2k)上
RAM程序: 由read,wrire等指令组成的程序

[!tip] 注意
大部分MPC协议考虑布尔电路模型或算术电路模型
目前,只有少数MPC协议针对RAM计算模型设计,适合于输入为数据库的引用场景

(5) 敌手计算能力(计算资源)

概率多项式时间(PPT):任意PPT敌手不能打破协议安全性
无限性计算能力(信息论安全或无条件安全): 即使用无限计算能力的敌手也不能打破协议安全性(抵抗量子计算机攻击)

信息论安全MPC协议需要再诚实大多数模型下设计

(6) 腐化策略

静态腐化: 在协议运行前,敌手决定腐化(Corrupt)哪些实体
自适应腐化:在协议运行过程中,敌手能自适应决定腐化哪些实体

目前, 高效的 MPC 协议设计主要考 虑的是静态腐化, 而满足自适应腐化安全性的 MPC 协议通常效率较低

(7) 网络模型

同步网络模型: 同一个交互轮的信息在固定延时 Δ \Delta Δ 内一定到达
异步网络模型: 没有要求同步时钟,也没有要求预先固定的网络延时,更加现实的网络假设(通常要求 t < n / 3 t<n/3 t<n/3)

已知高效的MPC协议均考虑同步网络模型

MPC 基本设计方法

秘密分享:具有较低的通信宽带,但轮数复杂度为O(d),适用于低延迟网络(局域网),其中d代表电路深度

混淆电路:轮数复杂度为O(1),但需要较高通信带宽,适用于高延迟网络(广域网)

image.png
在恶意敌手模型下, 一系列研究工作也将秘密分享方法 融合到基于混淆电路的常数轮 MPC 协议中以获得更高效率

MPC基础组件

image.png

线性秘密分享

( n , t ) (n,t) (n,t)门限线性秘密分享

LSSS主要由三个算法组成:分享算法,重构算法和打开算法
分享算法 [ x ] ← S h a r e ( x ) [x]\leftarrow Share(x) [x]Share(x): P i P_i Pi获得份额 x i x^i xi,其中共有 n n n个参与方 P 1 , … , P n P_1,\dots,P_n P1,,Pn
重构算法 [ x ] ← R e c ( x ) [x]\leftarrow Rec(x) [x]Rec(x): P i P_i Pi获得秘密值 x x x(要求至少 t + 1 t+1 t+1个份额)
打开算法 [ x ] ← O p e n ( x ) [x]\leftarrow Open(x) [x]Open(x):所有参与方获得 x x x

image.png

  • 给定 [x] 和 [y], 本地计算 [z] = [x] + [y] 满足 z = x + y.
  • 给定 [x] 和公开已知的常数 c ∈ F, 本地计算 [y] = [x] + c 满足 y = x + c.
  • 给定 [x] 和公开已知的常数 c ∈ F, 本地计算 [y] = c · [x] 满足 y = c · x.
  • 应用于MPC协议设计中,加法等线性们是free(即无需通信)
加法秘密分享

主要用在不诚实大多数MPC协议中(t=n-1)
x = x 1 + x 2 + ⋯ + x n , x ∈ F x=x^1+x^2+\dots+x^n,x\in \mathbb{F} x=x1+x2++xn,xF,其中 x x x为秘密(secret), x i x^i xi为份额(share)

重复秘密分享

主要用在诚实大多数MPC协议中(t<n/2,n较小);以n=3,t=1为例
x = x 1 + x 2 + ⋯ + x n , x ∈ F x=x^1+x^2+\dots+x^n,x\in \mathbb{F} x=x1+x2++xn,xF: P 1 P_1 P1持有 ( x 2 , x 3 ) (x^2,x^3) (x2,x3), P 2 P_2 P2持有 ( x 1 , x 3 ) (x^1,x^3) (x1,x3), P 3 P_3 P3持有 ( x 1 , x 2 ) (x^1,x^2) (x1,x2),

复制秘密分 享主要用在参与方数量 n 比较小的情况, 因为复制秘密分享方案要求每方存储 ( n − 1 t ) \binom{n-1}{t} (tn1) 个分享

Shamir秘密分享及推广

主要用在诚实大多数MPC协议中( t + 1 ≤ ( n + 1 ) / 2 t+1\leq(n+1)/2 t+1(n+1)/2)
x = f ( 0 ) , x i = f ( a i ) x=f(0),x^i=f(a_i) x=f(0),xi=f(ai),其中f为次数t的随机多项式, α 1 , … , α n α i ∈ F \alpha_1,\dots,\alpha_n \alpha_i \in \mathbb{F} α1,,αnαiF为不同的非零域元素
推广形式(打包秘密分享,packed secret sharing): x i = f ( β i ) , x i = f ( a i ) , x_i=f(\beta_i),x^i=f(a_i), xi=f(βi),xi=f(ai),一个多项式分享k个秘密 x , … , x n x_,\dots,x_n x,,xn,其中 β 1 , … , β k \beta_1,\dots,\beta_k β1,,βk, α 1 , … , α n ∈ F \alpha_1,\dots,\alpha_n\in \mathbb{F} α1,,αnF为不同的域元素(更小的腐化门限 t + k ≤ ( n + 1 ) / 2 t+k\leq(n+1)/2 t+k(n+1)/2)

image.png

三种秘密分享的共性
均满足线性性质(加法同态性),均可用于设计高效的MPC协议

三种秘密分享的区别

  • 针对恶意敌手,加法秘密分享需要结合信息论消息认证码(IT-MAC)实现秘密的认证,Shamir及重复秘密分享直接保证了秘密的认证(由于大部分实体是诚实的,重构需要t+1/n个分享)
  • 重复秘密分享适合于少量参与方(分享尺寸与参与方数量指标成指数关系,例如:3-9个参与方),Shamir秘密分享适合与大量参与方

秘密重构 R e c ( [ x ] , i ) Rec([x],i) Rec([x],i)
P i P_i Pi安全通道收到 x x x的分享 [ x ] [x] [x](记 [ x ] [x] [x]为秘密 x x x的分享)

  • 加法秘密分享: x = ∑ i = 1 n x i x=\sum_{i=1}^{n}x^i x=i=1nxi(认证性: 用IT-MAC验证)
  • Shamir秘密分享:拉格朗日差值方法计算 x = f ( 0 ) x=f(0) x=f(0)(认证性: 验证所有分享落在多项式f上)
  • 重复秘密分享: x = x 1 + x 2 + x 3 x=x^1+x^2+x^3 x=x1+x2+x3(认证性:验证分享的一致性)

信息论消息认证码(IT-MAC)

BDOZ[^bdoz]
SPDZ1
image.png

image.png

零知识证明

image.png

零知识证明

混淆电路

image.png

承诺方案

承诺方案是零知识证明协议的关键组件之一。承诺协议将需要被承诺的元素x打包为承诺 C C C,还有一个打开算法用于验证 C C C x x x的关系(即 C C C x x x承诺所得)。承诺通常需要具备以下两个性质
(1)隐藏性: 通过承诺C无法得知关于被承诺元素x的任何信息。根据敌手的计算能力又可分为完美隐藏性和计算隐藏性
(2)绑定性: 对与一个承诺 C C C,敌手难以找到一个不同于 x x x的被承诺元素 x ′ x' x,使得打开算法也能通过验证。根据敌手的计算能力又可分为完美绑定性和计算绑定性。

image.png

投币(coin-tossing)协议

多个参与方共同生成一个随机数r
不诚实参与方(即使合谋)不能控制随机数,使其偏离既定分布

不诚实发多数MPC协议采用投币协议,诚实大多数MPC协议一般使用秘密分享方案

image.png

同态加密(HE)

同态加密

当前同态加密的分类:
全同态加密(FHE): f f f为任意电路(包括乘法、加法等运算)
层级同态加密(Leveled FHE): f f f为指定深度的任意电路
类同态加密(SHE): f f f为深度浅的任意电路
加法同态加密(AHE): f f f为只包括加法等线性操作的电路
image.png

不经意传输及其算术变形

不经意传输协议作为基础密码组件,OT允许发送发 P S P_S PS输入两个消息 m 0 m_0 m0 m 1 m_1 m1接受方 P R P_R PR输入一个选择比特 b ∈ { 0 , 1 } b\in\{0,1\} b{0,1},使得 P R P_R PR仅能获得 m b m_b mb而对 m 1 − b m_{1-b} m1b完全未知,同时 P S P_S PS不能获得比特 b b b的任何信息。作为OT的一类重要变形,COT要求输入消息 m 0 m_0 m0 m 1 m_1 m1满足一个固定的相关性 Δ \Delta Δ,即 m 0 ⊕ m 1 = Δ m_0 \oplus m_1=\Delta m0m1=Δ。从向量角度可以这样理解:COT协议输出 ( v , Δ ) (v,\Delta) (v,Δ) P S P_S PS,输出 ( w , u ) (w,u) (w,u) P R P_R PR,满足 w = v + u ⋅ Δ ∈ { 0 , 1 } k w=v+u\cdot\Delta\in\{0,1\}^k w=v+uΔ{0,1}k u ∈ { 0 , 1 } u\in\{0,1\} u{0,1}

image.png

OT依赖于公钥密码组件[c:IR88]
OT能基于不同困难假设构造
image.png

基于OT协议: Naor-Pinkas协议
Naor-Pinkas讲解
image.png

<span注意span> 不经意传输需要公钥密码操作,与堆成密码操作相比,计算效率低,然而MPC协议需要大量的OTs(如亿级数量),使得基于公钥操作的OT协议效率过低
image.png

提出不经意传输扩展可用于解决需要大量OTs的问题

image.png

image.png

名词扫盲

随机预言机
循环群生成元
困难问题LPN/DCR/DDH

参考文献


  1. Multiparty computation from somewhat homomorphic encryption ↩︎

;