本节摘要:不经意传输(OT)解决"选择权也要保密"的问题:发送方给出两条消息,接收方取走其一,发送方不知道取了哪条、接收方读不到没取的那条。本节讲清 OT 的语义、它与公钥原语的关系、OT 扩展"128 次基 OT 撑起百万次调用"的工程逻辑,以及它在 MPC 引擎中的用量地位。
前两节的秘密分享保护"数值",OT 保护"选择行为"。设想混淆电路的求值方要为自己的输入位拿对应标签(第 3 章的核心步骤):生成者手里有位 0 的标签和位 1 的标签,求值方要取走其中一个。这里有一对相互冲突的诉求——生成者不能知道求值方选了哪个(否则输入泄露),求值方也不能把两个都拿走(否则可以解出整张门表、导致生成者输入泄露)。OT 的语义恰好卡在这条缝上:恰取一份,双方各守一端。
1-out-of-2 OT 的形式化语义:发送方输入两条消息 m0、m1,接收方输入选择比特 c;协议结束后接收方得到 m_c(且仅此一条),发送方对 c 一无所知。这个"不对称"很特别——别的原语都在追求"谁都不知道",OT 追求的是"各自瞎一只眼"。Rabin 1981 年的原始版本、Even-Goldreich-Lempel 的两方版本、以及后来的 k-out-of-n 推广,语义大同小异,核心都是"选择隐私"。

朴素实现靠公钥操作。以最经典的 EG 思路为例:接收方按选择比特生成两把"不对称"的钥匙,把混淆后的"信封"发给发送方;发送方用两条消息分别加密 m0、m1 回传;接收方只能打开自己那一个信封,发送方从信封看不出选择。每一条 OT 都要若干次公钥运算(如椭圆曲线点乘),单条微秒到毫秒级——听着不慢,但在协议里 OT 的用量以百万计(第 3 章混淆电路每个输入位一条,第 4 章 GMW 每个 AND 门一条),公钥版直接把性能打进尘埃。
OT 扩展(IKNP 技术)是 MPC 工程化的分水岭:双方先跑 128 次(安全参数量级)公钥基础 OT,之后每条扩展 OT 只需对称运算(哈希加少量带宽),单条降到微秒以下,吞吐从每秒千条跳到每秒百万条。后续的纠错码改进(如 KKRT)把常数的隐含项进一步压扁。记住这个数:128 次基 OT 是"点火成本",之后近乎无限量供应。这也是为什么现代框架把 OT 扩展当成基础设施来预热(第 6 章预计算节还会再算这笔账)。
OT 在两类场景里是刚需。其一是混淆电路的输入标签交付(3.2 节流程第三步),每输入位一条 OT,8 位比较电路就是 16 条,AES 电路 128 位密钥输入就是 128 条起步。其二是 GMW 的 AND 门(4.1 节),乘法在异或世界里靠 OT 实现通信用例。所以工程界有个粗略说法:两方协议的性能下限约等于 OT 扩展的性能下限。选型时看一个框架好不好,先看它的 OT 实现是不是最新的扩展技术。
💡 关键直觉:OT 是"信息买卖的规则制定者"——它不卖信息本身,只规范"买方挑一件、卖方不知挑了哪件"的交易流程。MPC 里所有涉及"从选项中取用"的环节,底层几乎都是 OT。
本节要点:OT 语义是恰取一份且双向保密;公钥基 OT 昂贵、OT 扩展用 128 次点火摊薄到对称运算成本;混淆电路与 GMW 都建立在它之上。下一节补完工具箱的最后两件:同态加密与零知识证明。
OT 不止 1-out-of-2 一种形态。k-out-of-n OT 从 n 条消息里取 k 条,隐私求交的 OT 路线(7.2 节)用它成批搬运比对材料;OT 扩展的批量语义则在一次点火 128 条基 OT 之后,把每条扩展 OT 的边际成本压到哈希与带宽的水平,工程口径常按每条几十微秒计。用量感受一下量级:一扇 GMW 与门两次 OT,一万个与门的电路就是两万次 OT——扩展技术下这是亚秒级开销,公钥直跑则是分钟级灾难。这个对比解释了为什么 OT 扩展被视作两方 MPC 从论文走向工程的技术前提。
def ot_extension_cost(base_ots=128, ext_ots=1_000_000): # 公钥直跑:每条一次点乘约 50 微秒;扩展:点火加每条约 1 微秒 direct = ext_ots * 50e-6 extended = base_ots * 50e-6 + ext_ots * 1e-6 return round(direct, 1), round(extended, 2) print(ot_extension_cost()) # (50.0, 0.13) 单位秒
会话输出一对对比数字:百万条 OT 的耗时从分钟级压到亚秒级。把"点火成本摊薄边际成本"这个结构记住,它在预计算(第 6 章)里会以更大规模重演。
OT 的语义在现实世界找不到完美对应物,这正是它的精妙之处——最接近的直觉是"糊着纸的菜单":顾客指哪个菜服务员就上哪个,但服务员看不见顾客指的位置,顾客也掀不开别的菜。这个直觉能帮你快速判断一个需求是不是 OT 型:双方对"选择行为本身"是否互有保密诉求。查询审计日志时不留查询痕迹、投票时选项保密、比价时不暴露关注点——都是 OT 型需求。
用量视角还有一个容易被忽略的角落:OT 的双向保密让它在"防合谋分析"里也有一席之地。两方联合统计时,若某方的贡献通过 OT 逐条匿名注入,另一方连"对方有没有贡献"都难以判断——这种粒度的隐私需求在联合建模的反刷量设计里真实存在。
回到本章的主线:现在你手里有了三样东西——加法分享(管数值)、Shamir 门限(管门槛与保管)、OT(管选择)。第 3 章的混淆电路会把它们串成第一条完整协议链,第 4、5 章则分别从布尔与算术两个方向把它们推到生产级。每一站的协议拆开看,底层都是这三样东西的不同组合方式——工具箱虽小,组合无穷,这是 MPC 最迷人的地方。