[迁移说明] 本文最初发布于 blog.zzw4257.cn,现已迁移并在本站进行结构化整理与增强。
第6章 基于线性秘密分享的协议 (Protocols based on Linear Secret Sharing) 从本章开始,我们将深入探讨几类经典的 MPC 协议。我们将从半诚实安全 (Semi-Honest Secure) 的协议入手,这是理解更复杂恶意安全协议的基础。本章的核心是介绍基于线性秘密分享方案 (Linear Secret Sharing Scheme, LSSS) 的 MPC 协议。LSSS 的一个关键特性是,秘密的份额可以进行线性组合,从而直接得到原秘密线性组合的份额。
本章主要介绍两类基于 LSSS 的里程碑式协议:
BGW 协议 (Ben-Or, Goldwasser, Wigderson) : 该协议主要构建于 Shamir 秘密分享 之上,能够为算术电路提供信息论安全(在半诚实模型和特定门限下)。我们将回顾其构造,并为其提供在通用可组合 (UC) 框架下的形式化安全性证明。GMW 协议 (Goldreich, Micali, Wigderson) : 该协议则通常基于更简单的加法秘密分享 (例如,基于异或的分享来处理布尔电路,或基于模加法来处理算术电路)。其安全性通常是计算安全的,依赖于诸如茫然传输 (OT) 等密码学原语。我们将探讨其在布尔电路和算术电路上的不同版本。graph TD
A[经典MPC协议] --> B{核心构建模块};
B --> C[线性秘密分享方案 LSSS];
C --> D[BGW协议];
D --> D1[基于: Shamir 秘密分享];
D --> D2[安全模型: 半诚实];
D --> D3[安全级别: 信息论安全 当 t < n/2];
D --> D4[本章重点: UC 安全性证明];
C --> E[GMW协议];
E --> E1[基于: 加法秘密分享 如XOR分享];
E --> E2[安全模型: 半诚实];
E --> E3[安全级别: 计算安全 依赖OT];
E --> E4[版本: 布尔电路 - 两方/多方, 算术电路];
style C fill:#90ee90,stroke:#333,stroke-width:2px,font-weight:bold
style D fill:#d1e7dd
style E fill:#f8d7da 6.1 BGW 协议(半诚实安全)(BGW Protocol - Semi-Honest Security) BGW 协议 [30] 是最早实现对任意函数进行安全多方计算的协议之一,它为后续的 MPC 研究奠定了坚实的基础。
6.1.1 协议描述 (Protocol Description - Fig 6.2 / Fig 3.1) 📋 BGW 协议核心流程 (基于 Shamir ( t , n ) (t,n) ( t , n ) -秘密分享, t < n / 2 t < n/2 t < n /2 ) 该协议的详细步骤与第3章介绍的“半诚实安全的电路计算协议”完全一致。这里进行概要回顾,并强调其基于 Shamir 分享的特性。
协议阶段 :
1.输入分享 (Input Sharing Phase) :
对于每个参与方 P i P_i P i 的私密输入 x i , k ∈ F x_{i,k} \in \mathbb{F} x i , k ∈ F (有限域元素),P i P_i P i 选择一个随机的、阶数最高为 t t t 的多项式 q i , k ( z ) q_{i,k}(z) q i , k ( z ) ,使得 q i , k ( 0 ) = x i , k q_{i,k}(0) = x_{i,k} q i , k ( 0 ) = x i , k 。 P i P_i P i 计算份额 s i , k ( j ) = q i , k ( α j ) s_{i,k}^{(j)} = q_{i,k}(\alpha_j) s i , k ( j ) = q i , k ( α j ) (其中 α j \alpha_j α j 是公开的、赋予 P j P_j P j 的非零域元素),并将 s i , k ( j ) s_{i,k}^{(j)} s i , k ( j ) 安全地发送给 P j P_j P j 。最终,对于电路的每个输入导线 w w w (其值为 v w v_w v w ),每个参与方 P j P_j P j 持有其 Shamir 份额 [ v w ] j [v_w]_j [ v w ] j (即 q w ( α j ) q_w(\alpha_j) q w ( α j ) )。 2.计算阶段 (Computation Phase) : 参与方按照电路的拓扑顺序,逐个门进行计算。设一个门 g g g 的输入导线为 w a , w b w_a, w_b w a , w b ,其上的秘密值分别为 v a , v b v_a, v_b v a , v b ,输出导线为 w c w_c w c ,其值为 v c v_c v c 。参与方 P j P_j P j 持有份额 [ v a ] j [v_a]_j [ v a ] j 和 [ v b ] j [v_b]_j [ v b ] j 。
加法门 (v c = v a + v b v_c = v_a + v_b v c = v a + v b ) : 每个 P j P_j P j 在本地计算其输出份额 [ v c ] j = [ v a ] j + [ v b ] j [v_c]_j = [v_a]_j + [v_b]_j [ v c ] j = [ v a ] j + [ v b ] j 。 由于 Shamir 分享的线性性,q c ( z ) = q a ( z ) + q b ( z ) q_c(z) = q_a(z) + q_b(z) q c ( z ) = q a ( z ) + q b ( z ) 仍是 t t t 阶多项式,且 q c ( 0 ) = q a ( 0 ) + q b ( 0 ) = v a + v b = v c q_c(0) = q_a(0) + q_b(0) = v_a + v_b = v_c q c ( 0 ) = q a ( 0 ) + q b ( 0 ) = v a + v b = v c 。
常数乘法门 (v c = k ⋅ v a v_c = k \cdot v_a v c = k ⋅ v a ) : 每个 P j P_j P j 在本地计算其输出份额 [ v c ] j = k ⋅ [ v a ] j [v_c]_j = k \cdot [v_a]_j [ v c ] j = k ⋅ [ v a ] j (其中 k k k 是公开常数)。 q c ( z ) = k ⋅ q a ( z ) q_c(z) = k \cdot q_a(z) q c ( z ) = k ⋅ q a ( z ) 仍是 t t t 阶多项式,且 q c ( 0 ) = k ⋅ v a = v c q_c(0) = k \cdot v_a = v_c q c ( 0 ) = k ⋅ v a = v c 。
乘法门 (v c = v a ⋅ v b v_c = v_a \cdot v_b v c = v a ⋅ v b ) :
本地份额乘积 : 每个 P j P_j P j 计算 h j = [ v a ] j ⋅ [ v b ] j = q a ( α j ) ⋅ q b ( α j ) h_j = [v_a]_j \cdot [v_b]_j = q_a(\alpha_j) \cdot q_b(\alpha_j) h j = [ v a ] j ⋅ [ v b ] j = q a ( α j ) ⋅ q b ( α j ) 。 这些 h j h_j h j 是一个新的多项式 h ( z ) = q a ( z ) ⋅ q b ( z ) h(z) = q_a(z) \cdot q_b(z) h ( z ) = q a ( z ) ⋅ q b ( z ) 在点 α j \alpha_j α j 上的取值。h ( z ) h(z) h ( z ) 的阶数最高为 2 t 2t 2 t ,且 h ( 0 ) = q a ( 0 ) q b ( 0 ) = v a v b = v c h(0) = q_a(0)q_b(0) = v_a v_b = v_c h ( 0 ) = q a ( 0 ) q b ( 0 ) = v a v b = v c 。度降低 / 重新随机化和分享 (Degree Reduction / Re-randomization and Re-sharing) : 由于 h ( z ) h(z) h ( z ) 的阶数为 2 t 2t 2 t ,而我们希望后续计算仍基于 t t t 阶多项式的分享。因为 t < n / 2 ⇒ 2 t < n t < n/2 \Rightarrow 2t < n t < n /2 ⇒ 2 t < n , 所以 2 t + 1 ≤ n 2t+1 \le n 2 t + 1 ≤ n 。这意味着 2 t + 1 2t+1 2 t + 1 个点足以唯一确定 h ( z ) h(z) h ( z ) 。每个参与方 P j P_j P j 将其计算得到的 h j = h ( α j ) h_j = h(\alpha_j) h j = h ( α j ) 视为一个新的秘密。P j P_j P j 对 h j h_j h j 进行一次新的、独立的 Shamir ( t , n ) (t,n) ( t , n ) -分享:选择随机 t t t 阶多项式 q j ′ ( z ) q'_j(z) q j ′ ( z ) 使得 q j ′ ( 0 ) = h j q'_j(0) = h_j q j ′ ( 0 ) = h j ,然后将份额 q j ′ ( α k ) q'_j(\alpha_k) q j ′ ( α k ) 发送给 P k P_k P k 。 现在,对于秘密 v c = h ( 0 ) v_c = h(0) v c = h ( 0 ) ,我们知道 v c = ∑ j ∈ S r e c o n λ j h ( α j ) v_c = \sum_{j \in S_{recon}} \lambda_j h(\alpha_j) v c = ∑ j ∈ S reco n λ j h ( α j ) ,其中 S r e c o n S_{recon} S reco n 是一个大小为 2 t + 1 2t+1 2 t + 1 的公开索引集合,λ j \lambda_j λ j 是对应的拉格朗日重构系数。 每个参与方 P k P_k P k 计算其关于 v c v_c v c 的新的 t t t -阶份额: [ v c ] k = ∑ j ∈ S r e c o n λ j ⋅ q j ′ ( α k ) [v_c]_k = \sum_{j \in S_{recon}} \lambda_j \cdot q'_j(\alpha_k) [ v c ] k = j ∈ S reco n ∑ λ j ⋅ q j ′ ( α k ) 令新的分享多项式为 q c ( z ) = ∑ j ∈ S r e c o n λ j q j ′ ( z ) q_c(z) = \sum_{j \in S_{recon}} \lambda_j q'_j(z) q c ( z ) = ∑ j ∈ S reco n λ j q j ′ ( z ) 。 则 q c ( 0 ) = ∑ λ j q j ′ ( 0 ) = ∑ λ j h ( α j ) = h ( 0 ) = v c q_c(0) = \sum \lambda_j q'_j(0) = \sum \lambda_j h(\alpha_j) = h(0) = v_c q c ( 0 ) = ∑ λ j q j ′ ( 0 ) = ∑ λ j h ( α j ) = h ( 0 ) = v c 。 且 q c ( z ) q_c(z) q c ( z ) 的阶数是 t t t (因为每个 q j ′ ( z ) q'_j(z) q j ′ ( z ) 的阶数是 t t t ,λ j \lambda_j λ j 是常数)。 因此,[ v c ] k = q c ( α k ) [v_c]_k = q_c(\alpha_k) [ v c ] k = q c ( α k ) 。
3.输出重构阶段 (Output Reconstruction Phase) :
对于需要公开的输出值 v o u t v_{out} v o u t (其当前分享为 [ v o u t ] [v_{out}] [ v o u t ] ,基于 t t t 阶多项式 q o u t ( z ) q_{out}(z) q o u t ( z ) ),指定的接收方(或所有参与方)收集至少 t + 1 t+1 t + 1 个份额。 使用这些份额通过拉格朗日插值计算 v o u t = q o u t ( 0 ) v_{out} = q_{out}(0) v o u t = q o u t ( 0 ) 。 6.1.2 安全性证明 (Security Proof) 在第3章中,我们对 BGW 协议的安全性进行了较为直观的分析。本节将给出其在 UC 框架下,针对静态半诚实敌手的形式化安全性证明。
**📐 定理 6.1: BGW 协议的半诚实 UC 安全性” 假设被攻陷的参与方数量不超过 t t t ,且 t < n / 2 t < n/2 t < n /2 。BGW 协议 Π BGW \Pi_{\text{BGW}} Π BGW (如图 6.2 或 3.1 所述) 对于静态半诚实敌手,在通用可组合 (UC) 框架下,信息论安全地 (statistically or perfectly securely) 实现了安全函数计算的理想功能 F sfe \mathcal{F}_{\text{sfe}} F sfe (如图 6.1,即标准的安全函数计算理想功能)。
证明 : 依据 UC 框架的平凡敌手完备性定理 (Thm 4.1),我们仅需为平凡敌手 A triv \mathcal{A}_{\text{triv}} A triv 构造一个模拟器 S \mathcal{S} S ,使得对于任何环境 Z \mathcal{Z} Z ,真实世界执行 EXEC Π BGW , A triv , Z \text{EXEC}_{\Pi_{\text{BGW}}, \mathcal{A}_{\text{triv}}, \mathcal{Z}} EXEC Π BGW , A triv , Z 的视图与理想世界执行 EXEC F sfe , S , Z \text{EXEC}_{\mathcal{F}_{\text{sfe}}, \mathcal{S}, \mathcal{Z}} EXEC F sfe , S , Z 的视图是不可区分的(对于 BGW 协议,实际上可以达到完美或统计不可区分)。
**💡 理想功能 F sfe \mathcal{F}_{\text{sfe}} F sfe (图 6.1 - 回顾)”
当收到 P i P_i P i 的输入 (Input, sid, x_i) 时,记录 x i x_i x i ,并通知 S \mathcal{S} S (Input, sid, P_i)。 当收到 S \mathcal{S} S 的指令 (Output, sid, P_i),且所有必需输入已到时,将计算出的 y i = f ( x ⃗ ) i y_i=f(\vec{x})_i y i = f ( x ) i 发送给 P i P_i P i (若 P i P_i P i 诚实,则通过 Z \mathcal{Z} Z ;若 P i P_i P i 被攻陷,则给 S \mathcal{S} S )。 模拟器 S \mathcal{S} S 的构造 : 设 C C C 为被攻陷的参与方集合 (∣ C ∣ ≤ t |C| \le t ∣ C ∣ ≤ t )。 S \mathcal{S} S 在内部运行 A triv \mathcal{A}_{\text{triv}} A triv ,并模拟其与环境 Z \mathcal{Z} Z 和协议其余部分的交互。
处理来自 F sfe \mathcal{F}_{\text{sfe}} F sfe 的 (Input, sid, P_i) 通知 :
若 P i ∈ C P_i \in C P i ∈ C (被攻陷方) : 环境 Z \mathcal{Z} Z 已经通过 A triv \mathcal{A}_{\text{triv}} A triv 向 P i P_i P i 提供了其真实输入 x i x_i x i 。 S \mathcal{S} S 知道了 x i x_i x i 。S \mathcal{S} S 指示其内部的 A triv \mathcal{A}_{\text{triv}} A triv (模拟 P i P_i P i ) 完全按照协议规定,对 x i x_i x i 进行 Shamir 分享,并将相应的份额“发送”给 C C C 中的其他成员(即 A triv \mathcal{A}_{\text{triv}} A triv 的其他部分)。对于要发往诚实方 P j ∉ C P_j \notin C P j ∈ / C 的份额,S \mathcal{S} S 仅作记录,不实际发送。若 P i ∉ C P_i \notin C P i ∈ / C (诚实方) : S \mathcal{S} S 并不知道 P i P_i P i 的真实输入 x i x_i x i 。S \mathcal{S} S 设定 P i P_i P i 的输入为一个固定的默认值 (例如,全零向量或0)。然后,S \mathcal{S} S 模拟 P i P_i P i 对这个默认值进行 Shamir 分享,并将产生的份额发送给 C C C 中的每个成员 P k ∈ C P_k \in C P k ∈ C (即提供给 A triv \mathcal{A}_{\text{triv}} A triv )。模拟计算阶段的交互 (主要是乘法门的度降低) :
线性门 : 所有计算都是本地的。被攻陷方 P i ∈ C P_i \in C P i ∈ C 会根据其持有的(可能是混合了真实输入份额和模拟的基于默认值的份额)份额进行计算。S \mathcal{S} S 遵循此过程。乘法门的度降低步骤 (当需要诚实方 P j ∉ C P_j \notin C P j ∈ / C 发起重分享时) : 当一个诚实方 P j P_j P j 需要对其本地计算的 2 t 2t 2 t 阶份额 h j = q a ( α j ) q b ( α j ) h_j = q_a(\alpha_j)q_b(\alpha_j) h j = q a ( α j ) q b ( α j ) 进行 t t t 阶重分享时,S \mathcal{S} S 模拟 P j P_j P j 的行为如下:S \mathcal{S} S 选择一个随机的 t t t 阶多项式 q j ′ ( z ) q'_j(z) q j ′ ( z ) 使得 q j ′ ( 0 ) = 0 q'_j(0)=0 q j ′ ( 0 ) = 0 (因为 P j P_j P j 的“真实”输入被模拟为0,从而其贡献给 h j h_j h j 的部分也是基于0的,除非 h j h_j h j 的值完全由被攻陷方的份额决定)。然后 S \mathcal{S} S 将 q j ′ ( α k ) q'_j(\alpha_k) q j ′ ( α k ) 作为模拟份额发送给 C C C 中的每个成员 P k ∈ C P_k \in C P k ∈ C 。 被攻陷方 P i ∈ C P_i \in C P i ∈ C 接收到所有这些(真实的或模拟的)重分享份额后,会计算其新的 t t t 阶份额。处理来自 F sfe \mathcal{F}_{\text{sfe}} F sfe 的 (Output, sid, P_i) 指令 (当 P i ∈ C P_i \in C P i ∈ C 是输出接收方) :
F sfe \mathcal{F}_{\text{sfe}} F sfe 将真实的输出值 y i y_i y i (基于所有参与方的真实输入计算得到的) 发送给 S \mathcal{S} S (因为 P i P_i P i 被攻陷)。S \mathcal{S} S 现在需要模拟诚实方 P j ∉ C P_j \notin C P j ∈ / C 在输出重构阶段发送给被攻陷方 P i P_i P i 的份额 q y i ( α j ) q_{y_i}(\alpha_j) q y i ( α j ) 。S \mathcal{S} S 知道 C C C 中所有成员已经持有的关于 y i y_i y i 的 t t t 阶多项式 q y i ( z ) q_{y_i}(z) q y i ( z ) 的 ∣ C ∣ |C| ∣ C ∣ 个(模拟的)份额。它还知道 q y i ( 0 ) = y i q_{y_i}(0) = y_i q y i ( 0 ) = y i 。由于 ∣ C ∣ ≤ t |C| \le t ∣ C ∣ ≤ t ,这 ∣ C ∣ + 1 |C|+1 ∣ C ∣ + 1 个条件(∣ C ∣ |C| ∣ C ∣ 个份额值和 q y i ( 0 ) = y i q_{y_i}(0)=y_i q y i ( 0 ) = y i )足以唯一确定 q y i ( z ) q_{y_i}(z) q y i ( z ) (如果 ∣ C ∣ = t |C|=t ∣ C ∣ = t ),或者可以找到一个与这些条件一致且系数随机选择的 q y i ( z ) q_{y_i}(z) q y i ( z ) (如果 ∣ C ∣ < t |C|<t ∣ C ∣ < t ,因为此时有 t − ∣ C ∣ t-|C| t − ∣ C ∣ 个自由度来选择剩余的随机系数)。 S \mathcal{S} S 构造出这样的 q y i ( z ) q_{y_i}(z) q y i ( z ) ,然后计算 q y i ( α j ) q_{y_i}(\alpha_j) q y i ( α j ) 对于所有 P j ∉ C P_j \notin C P j ∈ / C ,并将这些模拟的份额提供给 A triv \mathcal{A}_{\text{triv}} A triv (模拟它们是从诚实方 P j P_j P j 发送给被攻陷方 P i P_i P i 的)。不可区分性分析 (完美或统计不可区分) : 我们需要证明环境 Z \mathcal{Z} Z 无法区分它所观察到的被攻陷方 C C C 的视图。
输入分享阶段 : 来自诚实方 P j ∉ C P_j \notin C P j ∈ / C 的份额,在真实世界中是基于其真实输入 x j x_j x j 的 t t t -Shamir份额;在理想世界中,是 S \mathcal{S} S 模拟的基于默认值(如0)的 t t t -Shamir份额。由于 ∣ C ∣ ≤ t |C| \le t ∣ C ∣ ≤ t ,根据 Shamir 分享的 t t t -隐私性,这两组 t t t 个份额对于 C C C 来说都表现为均匀随机的、与原始秘密(x j x_j x j 或 0)无关的值(除非秘密本身就是0)。因此, C C C 的视图在这部分是不可区分的。计算阶段 (乘法门度降低) : 当诚实方 P j ∉ C P_j \notin C P j ∈ / C 重分享其 2 t 2t 2 t 阶份额 h j h_j h j 时,它进行的是一次新的 t t t -Shamir 分享。同样,由于 t t t -隐私性, C C C 收到的份额是均匀随机的,与 h j h_j h j 的真实值(或 S \mathcal{S} S 模拟的0值)无关。输出重构阶段 :引理 6.1 (Page 68, 与引理1, Page 68 类似,但针对 BGW) : 令 Strip ( view C ) \text{Strip}(\text{view}_C) Strip ( view C ) 为 C C C 的视图中移除了输出重构阶段来自诚实方的份额的部分。对于两个不同的诚实方输入向量 x ⃗ h o n e s t ( 0 ) \vec{x}_{honest}^{(0)} x h o n es t ( 0 ) 和 x ⃗ h o n e s t ( 1 ) \vec{x}_{honest}^{(1)} x h o n es t ( 1 ) (假设被攻陷方输入不变), Strip ( view C ( x ⃗ h o n e s t ( 0 ) ) ) \text{Strip}(\text{view}_C(\vec{x}_{honest}^{(0)})) Strip ( view C ( x h o n es t ( 0 ) )) 和 Strip ( view C ( x ⃗ h o n e s t ( 1 ) ) ) \text{Strip}(\text{view}_C(\vec{x}_{honest}^{(1)})) Strip ( view C ( x h o n es t ( 1 ) )) 的分布是完美相同的。这是因为所有来自诚实方的中间计算份额(由于 t t t -隐私性)在 C C C 看来都是随机的。引理 6.2 (Page 70, 与引理2, Page 70 类似) : 令 Dress y ⃗ C ( StrippedView ) \text{Dress}_{\vec{y}_C}(\text{StrippedView}) Dress y C ( StrippedView ) 是一个过程,它获取剥离后的视图和被攻陷方应得的真实输出 y ⃗ C \vec{y}_C y C ,并“填充回”输出重构阶段来自诚实方的份额。那么,Dress y ⃗ C ( Strip ( view C ) ) \text{Dress}_{\vec{y}_C}(\text{Strip}(\text{view}_C)) Dress y C ( Strip ( view C )) 与原始的 view C \text{view}_C view C 具有完美相同的分布。这是因为给定 y i = q y i ( 0 ) y_i = q_{y_i}(0) y i = q y i ( 0 ) 和 C C C 已知的 ∣ C ∣ ≤ t |C| \le t ∣ C ∣ ≤ t 个份额,其余诚实方的份额是被唯一确定(或一致地随机确定)的。结合 : 理想世界中 S \mathcal{S} S 产生的视图是 Dress y ⃗ C ( Strip ( view C ( x ⃗ h o n e s t = 0 ⃗ ) ) ) \text{Dress}_{\vec{y}_C}(\text{Strip}(\text{view}_C(\vec{x}_{honest}=\vec{0}))) Dress y C ( Strip ( view C ( x h o n es t = 0 ))) (其中 y ⃗ C \vec{y}_C y C 是基于真实输入的)。 真实世界 C C C 的视图是 view C ( x ⃗ h o n e s t = actual values ) \text{view}_C(\vec{x}_{honest}=\text{actual values}) view C ( x h o n es t = actual values ) 。 由引理1,Strip ( view C ( x ⃗ h o n e s t = 0 ⃗ ) ) ≡ perf Strip ( view C ( x ⃗ h o n e s t = actual values ) ) \text{Strip}(\text{view}_C(\vec{x}_{honest}=\vec{0})) \stackrel{\text{perf}}{\equiv} \text{Strip}(\text{view}_C(\vec{x}_{honest}=\text{actual values})) Strip ( view C ( x h o n es t = 0 )) ≡ perf Strip ( view C ( x h o n es t = actual values )) 。 由引理2,应用 Dress y ⃗ C \text{Dress}_{\vec{y}_C} Dress y C 后,两者仍然完美不可区分。 因此,真实视图和模拟视图是完美不可区分的。**✅ 结论” BGW 协议在 t < n / 2 t < n/2 t < n /2 的条件下,对于静态半诚实敌手,信息论安全地(完美地)在 UC 框架下实现了 F sfe \mathcal{F}_{\text{sfe}} F sfe 。
**❓ 关于假设输出门之前都有乘法门 (Page 71)” 这个假设主要简化了引理 6.2 的证明。如果输出门前是线性门,输出多项式 q y i ( z ) q_{y_i}(z) q y i ( z ) 的随机性完全由其输入导线的多项式决定。模拟器在构造 q y i ( z ) q_{y_i}(z) q y i ( z ) 时,需要确保其随机性与这些“上游”多项式(它们可能是基于真实输入或模拟的0输入)的(模拟的)随机性一致。这使得证明稍微复杂,但协议本身仍然是安全的。乘法门后的度降低步骤会引入新的、独立的随机性到输出多项式中,使得模拟更直接。
隐私计算第6章:基于线性秘密分享的协议(BGW与GMW) 周三 10月 22 2025 Course 3508 字 · 14 分钟