基于秘密分享方法的MPC

基于秘密分享方法的MPC

Lecture 2 基于秘密分享方法的 MPC 协议 —— 冯登国院士_哔哩哔哩_bilibili

大部分OT扩展协议设计流程:
首先,设计相关不经意传输协议(COT),然后通过标准的方法转换得到随机的不经意传输协议(ROT),最后设计(OT)
image.png

相关协议介绍

ROT

发送者接收两个消息 r 0 , r 1 r_0,r_1 r0,r1接受者随机获取消息 r c , c ∈ { 0 , 1 } r_c,c\in\{0,1\} rc,c{0,1}
image.png

将随机随机不经意传输转化为传统的不经意传输
R O T ⇒ O T ROT \Rightarrow OT ROTOT
image.png

COT

image.png

将COT构造为ROT C O T ⇒ R O T COT \Rightarrow ROT COTROT
image.png

相关强健Hash函数:Correlation Robust Hash Funtion(CRHF)
杂凑函数(RO)
密钥固定的分组密码(RPM)

向量不经意线性函数计算(VOLE)

image.png

不经意线性函数计算(OLE)

image.png

基于秘密分享的MPC协议的基本框架

![[2024-06-27#线性秘密分享]]

基于线性秘密分享的MPC协议——基本框架

image.png

[!tip] 注意
在计算电路中,加法门和数乘门无需通信,在本机即可完成计算,但乘法门需要运行乘法子协议,因此重点关注乘法子协议的构造

其中所有的通信是建立在安全信道的基础之上(加法秘密分享除外,加法秘密分享可以只有一个参与方)

  • 支持多个参与方 ( p 1 , … , p n ) (p_1,\dots,p_n) (p1,,pn)运行协议;若腐化门限 t < n / 2 t<n/2 t<n/2,信道付啊咋读一般为 O ( n ) O(n) O(n),若 n / 2 ≤ t < n − 1 n/2\leq t< n-1 n/2t<n1,通信复杂度一般为 O ( n 2 ) O(n^2) O(n2)
  • 加法和数乘等线性门无需通信,计算速度极快
  • 协议通信主要发生在乘法门计算
  • 所有运算定义在有限域 F \mathbb{F} F上,也可以推广至一般环上(根据应用,环通常考虑剩余类环 Z 2 k \mathbb{Z}_{2^k} Z2k,由于模运算等价于直接截断)
  • 基于线性秘密分享的MPC协议主要考虑如何设计实际高效的乘法子协议

诚实大多数半诚实安全MPC协议

Shamir秘密分享

  • 分享算法 [ x ] ← S h a r e ( x ) [x]\leftarrow Share(x) [x]Share(x):随机选取次数为 t t t的多项式 f f f满足 x = f ( 0 ) x=f(0) x=f(0), x i = f ( α i ) x^i=f(\alpha_i) xi=f(αi)对于 i ∈ [ n ] i\in[n] i[n],其中 α 1 , … , α n ∈ F \alpha_1,\dots,\alpha_n\in\mathbb{F} α1,,αnF为不同的非零域元素
  • 重构算法 [ x ] ← R e c ( x ) [x]\leftarrow Rec(x) [x]Rec(x):需要至少 t + 1 t+1 t+1个份额, x = f ( 0 ) = ∑ λ i ( 0 ) ⋅ f ( α i ) x=f(0)=\sum\lambda_i(0)\cdot f(\alpha_i) x=f(0)=λi(0)f(αi),其中 λ i ( x ) = ∏ j ≠ i ( x − α j ) / ( α i − α j ) \lambda_i(x)=\prod_{j\neq i}(x-\alpha_j)/(\alpha_i-\alpha_j) λi(x)=j=i(xαj)/(αiαj) 是拉格朗日系数函数

image.png

Shamir秘密分享另一种生成方式
  • [ x ] ← S h a r e ( x ) [x]\leftarrow Share(x) [x]Share(x):随机选取t个域元素 x 1 , … , x t ∈ F x^1,\dots,x^t\in\mathbb{F} x1,,xtF,然后将密码值 x x x t t t个域元素 x 1 , … , x t x^1,\dots,x^t x1,,xt通过拉格朗日差值公式获得次数为 t t t的多项式 f f f满足 x = f ( 0 ) x=f(0) x=f(0) x i = f ( α i ) x^i=f(\alpha_i) xi=f(αi)
  • 其余 t + 1 t+1 t+1个份额计算为 x i = f ( α i ) x^i=f(\alpha_i) xi=f(αi)
  • P i P_i Pi运行该分享算法,将除自己以外的份额发送给所有其他参与方:通信开销为 n − 1 = 2 t n-1=2t n1=2t个域元素,其中这里不失一般性假设 n = 2 t + 1 n=2t+1 n=2t+1(诚实大多数)

[!tip] 注意
这里与传统的Shamir秘密分享不同的是:传统的是随机选取 t − 1 t-1 t1个系数 a i a_i ai,通过拉格朗日计算 x t x^t xt
此处是先随机选取t个域元素 x 1 , … , x t ∈ F x^1,\dots,x^t\in\mathbb{F} x1,,xtF,然后计算系数 a i a_i ai

image.png
为啥是通信效率提高了一倍,传统的 P i P_i Pi运行该分享算法,将除自己以外的份额发送给所有的参与方其中通信开销为n-1=2t(其中为2t是假设不失一般性,也就是诚实大多数)
伪随机生成器(PRG)优化,是指定 t t t个参与方, P 1 , … , P t P_1,\dots,P_t P1,,Pt,获得随机份额 x 1 , … , x t ∈ F x^1,\dots,x^t\in \mathbb{F} x1,,xtF

P i P_i Pi发送随机的种子seed_1,\dots,seed_t给参与方 P 1 , … , P t P_1,\dots,P_t P1,,Pt(可用于计算多个Shamir分享,通信开销可忽略不计)
分享生成: P i P_i Pi P 1 , … , P t P_1,\dots,P_t P1,,Pt计算随机份额 x j = P R G ( s e e d j ) x^j=PRG(seed_j) xj=PRG(seedj)
通信开销降低为t个域元素

image.png
即当诚实大多数的 r i r_i ri是均匀分布的那么 r r r也是均匀分布的

image.png

半诚实安全的BGW乘法子协议

基于Shamir秘密分享的BGW乘法子协议
预处理阶段: 所有参与方生成随机的零分享 [ 0 ] 2 t [0]_{2t} [0]2t
乘法门计算阶段: 给定输入分享 [ x ] t [x]_t [x]t, [ y ] t [y]_t [y]t,计算输出分享 [ z ] t = [ x ⋅ y ] t [z]_t=[x\cdot y]_t [z]t=[xy]t

  • 所有参与方本地计算 [ z ] t [z]_t [z]t,即每方 P i P_i Pi本地计算份额 x i ⋅ y i = h ( α i ) x^i\cdot y^i=h(\alpha_i) xiyi=h(αi), h = f ⋅ g h=f\cdot g h=fg为次数 2 t 2t 2t多项式
  • 随机化: [ z ~ 2 t ] = [ z ] 2 t + [ 0 ] 2 t [\tilde{z}_{2t}]=[z]_{2t}+[0]_{2t} [z~2t]=[z]2t+[0]2t,记对应次数 2 t 2t 2t多项式为 h ^ \hat{h} h^
  • t t t次多项式 h ^ \hat{h} h^ h ~ \tilde{h} h~中所有次数 ≤ t \leq t t 单项式组成,存在公共矩阵 A A A满足 [ h ^ ( α 1 ) , … , h ^ ( α n ) ] T = A ⋅ [ h ~ ( α 1 ) , … , h ~ ( α n ) ] T [\hat{h}(\alpha_1),\dots,\hat{h}(\alpha_n)]^T=A\cdot [\tilde{h}(\alpha_1),\dots,\tilde{h}(\alpha_n)]^T [h^(α1),,h^(αn)]T=A[h~(α1),,h~(αn)]T
  • 次数约化:每方 P i P_i Pi运行分享算法 [ h ~ ( α 1 ) ] ← S h a r e ( h ~ ( α i ) ) [\tilde{h}(\alpha_1)]\leftarrow Share(\tilde{h}(\alpha_i)) [h~(α1)]Share(h~(αi)),发送份额给其他参与方,本地计算矩阵乘法,然后运行重构算法 h ^ ( α i ) ← R e c ( [ h ^ ( α i ) ] ) \hat{h}(\alpha_i)\leftarrow Rec([\hat{h}(\alpha_i)]) h^(αi)Rec([h^(αi)]),即为 P i P_i Pi关于 [ z ] t [z]_t [z]t的份额 z i z^i zi

(讲解的不够详尽),查找相关资料:(1)Completeness theorems for non-cryptographic fault-tolerant disstributed computation. (2)A Full Proof of the BGW Protocol for Perfectly-Secure Multiparty Computation

GRR乘法子协议对RGW乘法子协议进行效率优化
image.png

半诚实安全的DN乘法子协议

image.png

提升信息论安全效率
image.png

image.png

image.png

基于Shamir秘密分享半诚实安全乘法子协议的效率对比

image.png

诚实大多数假设下乘法验证技术

诚实大多数假设下乘法子协议性质

image.png
在诚实大多数假设下大部分诚实安全的乘法子协议(以DN类乘法子协议为例)满足以下性质

  • 在恶意敌手模型下已经保证输入/输出的隐私性
  • 但不能保证计算的正确性,即允许敌手在输入中引入加法错误,对于输入分享 [ x ] [x] [x], [ y ] [y] [y],输出为 [ z ] = [ x ⋅ y + d ] [z]=[x\cdot y+d] [z]=[xy+d],其中 d d d是敌手选择的加法错误
    在恶意敌手模型下诚实大多数MPC协议的主要目标是设计高效的乘法验证协议,保证在所有的乘法门输出中加法错误为0(没有错误被引入,也就是可以纠正错误)

乘法验证技术

主要为三类乘法验证技术
image.png

对偶验证技术

对偶验证技术相比较于其他两种技术设计更加简单,应用场景更广

设计思路为运行两次半诚实安全协议,第一次输入为真实值 x x x,第二次输入随机化 r x rx rx,通过验证算法验证,最后重构输出
image.png
具体的验证过程

对偶验证技术

验证过程如下:
假设当分享 [ x ] [ y ] [x][y] [x][y]以及 [ r x ] [ r y ] [rx][ry] [rx][ry]运算乘法子协议有加法错误如 [ z ] = [ x ⋅ y + d   ] [z]=[x\cdot y+{\color{red}d} \ ] [z]=[xy+d ] [ r ⋅ x ⋅ y + e ] [r\cdot x\cdot y+{\color{red} e}] [rxy+e]需要检查是否与 [ r ⋅ z + f ] [r\cdot z+{\color{red}f}] [rz+f]相等, [ r ⋅ ( x ⋅ y + d ) + f ] [r\cdot (x\cdot y+{\color{red}d})+{\color{red}f}] [r(xy+d)+f]只有当 r = ( f − e ) / d {\color{red}r=(f-e)/d} r=(fe)/d时会出现误判,这样的概率至多为 1 / F 1/\mathbb{F} 1/F,当域足够大时可以忽略不计
image.png
由于为了验证乘法子协议的合法性,每步多引入两次乘法计算,增大了开销,现对上述算法进行优化。
首先运行投币协议,选取随机系数 α 1 , … , α m ∈ F \alpha_1,\dots,\alpha_m\in\mathbb{F} α1,,αmF,然后验证 ∑ α i ⋅ [ r ⋅ x i ⋅ y i + e i ] \sum \alpha_i\cdot[r\cdot x_i\cdot y_i+{\color{red}e_i}] αi[rxiyi+ei]是否与 [ r ⋅ ∑ α i [ z i ] + f ] [r\cdot\sum\alpha_i[z_i]+{\color{red}f} ] [rαi[zi]+f]
只有当 ∑ α i ⋅ ( e i − r ⋅ d i ) = f \sum\alpha_i\cdot(e_i-r\cdot d_i)=f αi(eirdi)=f时才相等,f可能依赖于 α 1 , … , α m \alpha_1,\dots,\alpha_m α1,,αm的选择,无法推导出 e i − r ⋅ d i = 0 e_i-r\cdot d_i=0 eirdi=0
image.png
image.png

在安全加密信息分享领域,复制秘密分享(Secret Sharing)是一种重要的技术,主要用于将敏感信息(如密钥、密码等)分割为多个部分,并分发给不同的参与者,确保信息的安全性和可用性。这种方法广泛应用于密钥管理、分布式系统安全以及数据保护等领域。 ### 科学的复制秘密分享机制 复制秘密分享的核心思想是将一个秘密 $ S $ 分割为 $ n $ 个份额(shares),并将这些份额分配给 $ n $ 个参与者。只有当至少 $ k $ 个份额(其中 $ k \leq n $)被组合时,原始秘密才能被重构。这种方案被称为 $(k, n)$-阈值秘密分享方案。最经典的实现是Shamir's Secret Sharing算法,它基于多项式插值原理。 #### Shamir's Secret Sharing Shamir's Secret Sharing 是由Adi Shamir提出的,利用了多项式插值理论。具体步骤如下: 1. **选择一个随机多项式**:选择一个次数为 $ k-1 $ 的多项式 $ f(x) $,其中 $ f(0) = S $。 2. **生成份额**:对于每个参与者 $ i $,计算 $ f(i) $ 并将该值作为份额分配给参与者。 3. **重构秘密**:当至少 $ k $ 个参与者提供他们的份额时,可以通过拉格朗日插值法计算 $ f(0) $,从而恢复原始秘密 $ S $。 该方案的优点在于即使 $ k-1 $ 个份额被泄露,攻击者也无法获取任何关于秘密的信息,从而保证了信息的机密性。 #### 应用场景 复制秘密分享技术在多个领域有重要应用: 1. **密钥管理**:在加密系统中,主密钥通常是一个关键的敏感信息。通过秘密分享技术,可以将主密钥分割为多个部分并分发给不同的管理员,确保只有在多个管理员共同参与时才能恢复密钥。 2. **分布式存储**:在分布式系统中,秘密分享可以用于保护数据的完整性。例如,将加密数据的密钥分割后存储在不同的节点上,防止单点故障。 3. **多方计算**:在多方安全计算(Secure Multi-Party Computation, MPC)中,秘密分享是实现隐私保护计算的基础之一。参与者可以在不暴露各自输入的情况下,共同计算某个函数的结果。 #### 安全性与挑战 复制秘密分享技术的安全性依赖于以下几个关键因素: 1. **份额的存储与传输**:份额的存储和传输必须通过安全通道进行,以防止被攻击者截获。如果攻击者能够获取足够的份额,他们可以重构原始秘密。 2. **参与者的行为管理**:需要确保参与者不会滥用他们的份额。例如,在某些场景中,可能需要引入可信的第三方来验证份额的合法性。 3. **动态更新与撤销**:在实际应用中,可能需要动态更新秘密或撤销某些参与者的权限。这要求方案支持动态调整份额的分配。 #### 实现示例 以下是一个简单的Shamir's Secret Sharing实现示例,使用Python编写: ```python from sympy import symbols, interpolate import random def generate_shares(secret, k, n): # 生成一个随机的k-1次多项式,其中f(0) = secret coefficients = [secret] + [random.randint(1, 100) for _ in range(k-1)] # 计算每个参与者的份额 shares = [] for i in range(1, n+1): share = 0 for j, coeff in enumerate(coefficients): share += coeff * (i ** j) shares.append((i, share)) return shares def reconstruct_secret(shares): # 使用拉格朗日插值法重构秘密 x = symbols('x') points = [tuple(share) for share in shares] polynomial = interpolate(points, x) return int(polynomial.subs(x, 0)) # 示例:将秘密123分割为5个份额,至少需要3个份额才能重构 secret = 123 k = 3 n = 5 shares = generate_shares(secret, k, n) print("生成的份额:", shares) # 选择任意3个份额进行重构 selected_shares = shares[:k] reconstructed_secret = reconstruct_secret(selected_shares) print("重构的秘密:", reconstructed_secret) ``` #### 安全建议 为了确保复制秘密分享方案的安全性,建议采取以下措施: 1. **使用强随机数生成器**:生成多项式系数时,应使用强随机数生成器,以防止攻击者预测系数。 2. **加密存储份额**:份额在存储时应使用强加密算法进行保护,防止未经授权的访问。 3. **定期更新份额**:定期更新份额并重新分发,以减少长期暴露的风险。 4. **引入冗余机制**:在分发份额时,可以引入冗余机制,确保即使某些份额丢失或损坏,仍然可以恢复秘密。 通过合理设计和实施复制秘密分享方案,可以有效提升信息的安全性,确保敏感数据在分布式环境中的机密性和可用性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值