安全多方计算(Secure Multiparty Computation, MPC)能在让多方联合计算函数而不泄露各自输入,其核心挑战在于如何在保证隐私的前提下高效完成乘法操作。Beaver 三元组(Beaver Triples)正是解决这一问题的关键预处理原语。理解它的生成机制、安全属性与电路级优化策略,是构建生产级 MPC 系统的基础。
为什么需要 Beaver 三元组
在 MPC 中,基于秘密分享的协议天然支持加法操作 —— 各参与方的分享份额线性组合即可得到加法结果。然而,乘法操作却复杂得多。假设两方各有秘密值 $x$ 和 $y$ 的分享 $[x]$ 和 $[y]$,直接相乘会得到 degree-2 的多项式,若直接重建需要 2-of-n 的门限阈值,比原始分享的阈值更高,导致安全性下降。
Beaver 三元组提供了一种优雅的解决方案。核心思想是将乘法所需的非线性操作转移到离线预处理阶段,在线阶段仅执行轻量级的线性变换。具体而言,一个 Beaver 三元组由三个随机值 $(a, b, c)$ 组成,其中 $c = a \cdot b$,三方各自持有这三个值的分享 $[a], [b], [c]$。在线阶段执行乘法时,利用恒等式 $xy = c + b (x-a) + a (y-b) + (x-a)(y-b)$,各参与方只需本地计算 $[x] - [a]$ 与 $[y] - [b]$,然后广播差值 $d = x - a$ 与 $e = y - b$(这些差值本身不泄露原始值,因为 $a$ 和 $b$ 是随机掩码),最后线性组合分享得到 $[xy]$。
这种机制将每次乘法所需的通信轮数降至常数级,非常适合延迟敏感的场景。
随机性质量与生成协议
Beaver 三元组的安全性完全依赖于生成随机数的质量。若攻击者能预测或操控 $a$ 与 $b$ 的分布,三元组将丧失掩码功能,有被推导出实际输入的风险。因此,随机数必须是均匀分布且与输入独立的。
离线生成三元组的主流方法有三类:
基于不经意传输(OT)的生成:两方通过扩展的 OT 协议联合生成随机比特,适用于小规模场景。优点是安全性易于证明,缺点是通信量随三元组数量线性增长。
基于向量不经意线性运算(VOLE)的生成:通信效率更高,通过建立长向量上的不经意运算,一次交互产生大量相关随机性,适合大规模预处理。主流实现如 MP-SPDZ、EMP-toolkit 均采用此路径。
基于噪音累积的生成:利用物理随机源(如量子随机数发生器、卫星熵源)生成种子,再通过伪随机扩展器批量生产三元组。这种方式适合预处理预算充足但在线通信受限的场景。
无论采用何种方法,都必须确保三元组仅使用一次 —— 重用同一组 $(a, b, c)$ 会导致相邻两次乘法之间的差值产生线性关系,攻击者可据此推断原始输入。
算术电路中的参数规划
在实际部署中,需要根据目标电路的乘法门数量精确规划三元组预算。估算公式为:
$$ N_{triples} = N_{mul} + N_{gadget} + \alpha \cdot N_{input} $$
其中 $N_{mul}$ 是主电路乘法数,$N_{gadget}$ 包含了比较器、激活函数等密码学组件所需的额外三元组,$N_{input}$ 是各方需要提供的输入分享数量,$\alpha$ 通常取 1.1~1.2 的安全余量。
阈值选择同样关键。若使用 Shamir 秘密分享,阈值 $t$ 必须满足 $t < n/2$ 才能保证乘法协议的安全性(BGW 协议边界)。若使用阈值完全共享(n-of-n),则可容忍最多 $n-1$ 个腐败节点,但单点故障风险上升。对于 2-of-3 设置,三元组存储开销可接受且安全性与可用性平衡良好;对于 10-of-20 设置,需仔细评估诚实多数假设是否成立。
安全边界与常见陷阱
Beaver 三元组预处理的潜在风险主要集中在两方面:
选择性失败攻击:恶意参与方在离线阶段故意提交错误的三元组份额,导致在线阶段重构失败。防御措施包括对三元组进行批量验证 —— 各方随机抽样部分三元组进行在线重建测试,通过零知识证明确保一致性。成本通常控制在总预处理的 3%~5% 以内。
信息泄露通道:即使三元组本身安全,若生成过程与在线输入存在统计关联,仍可能产生侧信道。典型场景是伪随机数生成器的种子与参与方身份或时间戳相关联。最佳实践是使用基于哈希函数的可验证随机函数(VRF)生成种子,确保输出与输入在计算上不可区分。
工程落地建议
对于需要部署 MPC 预处理系统的团队,有几条可操作的建议:
首先,建立三元组预算与电路规模的动态映射表。上线前通过静态分析工具(如 SCALE-MAMBA 的电路编译器)统计乘法门数量,自动生成预处理计划。
其次,实现三元组的流水线生成与消费解耦。采用双缓冲机制 —— 后台持续生成新三元组的同时,在线阶段消费已生成的三元组,确保即使在高并发场景下也不因三元组耗尽而阻塞。
最后,监控离线阶段的通信效率。若 VOLE 生成成为瓶颈(通常表现为预处理耗时超过在线计算的 10 倍),应考虑升级到批处理模式或引入更多辅助参与方以分摊通信负载。
资料来源:MPC Alliance Wiki 关于 Beaver-based Protocols 的定义说明,以及 Stoffel 博客对 Beaver 三元组基础概念的图解演示。
内容声明:本文无广告投放、无付费植入。
如有事实性问题,欢迎发送勘误至 i@hotdrydog.com。