OT协议介绍

MPC 协议中的两个关键技术是 OT(oblivious transfer)协议和秘密分享。这里先介绍 OT 协议,以参考文献 1 中的基础 1-out-of-2 OT 协议为样例。

OT 协议模型的参与角色包括发送者 sender 和接收者 chooser。其功能描述如下:发送者提供两个消息 M0M_0M0M1M_1M1,接收者根据输入比特 b∈{0,1}b \in \{0,1\}b{0,1} 选择接收 MbM_bMb。安全要求是 sender 无法获知 chooser 的 bbb 值,chooser 无法获知 M1−bM_{1-b}M1b 的内容。也就是说,当 b=0b=0b=0 时只能获取 M0M_0M0,无法获取 M1M_1M1;对 sender 来说也无法知道 chooser 获取的是 M0M_0M0 还是 M1M_1M1

下面介绍 OT 协议安全模型中的难题假设(primitive)。

离散对数相关难题(CDH/DDH)通常定义在大素数模数下的循环群上。记群为 Zq∗\mathbb{Z}_q^*Zq,生成元为 ggg。任选群元素指数 aaa,令 m=gam=g^am=ga;给定 g,mg,mg,m 时不存在已知多项式时间算法恢复 aaa。判定 Diffie-Hellman(DDH)问题是:均匀随机选择 a,b,ca,b,ca,b,c,判断下面两个三元组是否可区分:

(ga, gb, gab) (g^a,\ g^b,\ g^{ab}) (ga, gb, gab)

(ga, gb, gc) (g^a,\ g^b,\ g^c) (ga, gb, gc)

OT 协议的安全模型中还会用到随机预言机 Random Oracle(RO)。RO 对任意输入返回均匀随机输出,且对同一输入返回值保持一致。工程实现中常用哈希函数(如 SHA-256)近似实现 RO。

两轮 OT 协议可分为 4 个阶段(随机选择均指从 Zq∗\mathbb{Z}_q^*Zq 中均匀选择,对数运算在对应群中进行)。

1. 阶段1:Setup

Sender 随机选择 xxx,计算

C=gx C=g^x C=gx

并将 CCC 公开给 chooser。

2. 阶段2:Round1

Chooser 随机选择 kkk,计算

PKb=gk,PK1−b=CPKb,b∈{0,1} PK_b=g^k,\quad PK_{1-b}=\frac{C}{PK_b},\quad b\in\{0,1\} PKb=gk,PK1b=PKbC,b{0,1}

并将与其选择对应的公钥信息发送给 sender(协议上 sender 可由 CCC 和一个公钥恢复另一个公钥)。

3. 阶段3:Round2

  1. Sender 输入两个消息集合

{M0, M1} \{M_0,\ M_1\} {M0, M1}

  1. Sender 随机选择 r0,r1r_0,r_1r0,r1,计算

R0=gr0,R1=gr1 R_0=g^{r_0},\quad R_1=g^{r_1} R0=gr0,R1=gr1

以及加密密钥

K0=PK0r0,K1=PK1r1 K_0=PK_0^{r_0},\quad K_1=PK_1^{r_1} K0=PK0r0,K1=PK1r1

  1. 通过哈希函数构造密文:

E0=H(K0)⊕M0,E1=H(K1)⊕M1 E_0=H(K_0)\oplus M_0,\quad E_1=H(K_1)\oplus M_1 E0=H(K0)M0,E1=H(K1)M1

  1. Sender 发送

(R0,R1,E0,E1) (R_0,R_1,E_0,E_1) (R0,R1,E0,E1)

给 chooser。

4. 阶段4:提取消息

Chooser 使用阶段 2 中的 kkk 计算恢复密钥

Kb=Rbk K_b=R_b^k Kb=Rbk

并恢复消息

Mb=H(Kb)⊕Eb M_b=H(K_b)\oplus E_b Mb=H(Kb)Eb

协议正确性分析

  1. b=0b=0b=0(chooser 选择 M0M_0M0)时:

PK0=gk,PK1=Cgk PK_0=g^k,\quad PK_1=\frac{C}{g^k} PK0=gk,PK1=gkC

Sender 在阶段 3 计算

K0=PK0r0=gkr0,K1=PK1r1=Cr1gkr1 K_0=PK_0^{r_0}=g^{kr_0},\quad K_1=PK_1^{r_1}=\frac{C^{r_1}}{g^{kr_1}} K0=PK0r0=gkr0,K1=PK1r1=gkr1Cr1

Chooser 在阶段 4 有

R0k=(gr0)k=gr0k=K0 R_0^k=(g^{r_0})^k=g^{r_0k}=K_0 R0k=(gr0)k=gr0k=K0

因此可解出 M0M_0M0;而对 M1M_1M1 对应密钥无法正确匹配。

  1. b=1b=1b=1(chooser 选择 M1M_1M1)时:

PK0=Cgk,PK1=gk PK_0=\frac{C}{g^k},\quad PK_1=g^k PK0=gkC,PK1=gk

Sender 在阶段 3 计算

K0=PK0r0=Cr0gkr0,K1=PK1r1=gkr1 K_0=PK_0^{r_0}=\frac{C^{r_0}}{g^{kr_0}},\quad K_1=PK_1^{r_1}=g^{kr_1} K0=PK0r0=gkr0Cr0,K1=PK1r1=gkr1

Chooser 在阶段 4 有

R1k=(gr1)k=gr1k=K1 R_1^k=(g^{r_1})^k=g^{r_1k}=K_1 R1k=(gr1)k=gr1k=K1

因此可解出 M1M_1M1;而对 M0M_0M0 无法正确恢复。

MPC 协议中的秘密分享及混淆电路方案中都会使用 OT 协议。上面介绍的是最基本的 1-out-of-2 OT。实际上 OT 的研究非常丰富:从功能上的 1-out-of-2 到 1-out-of-NNN,安全模型从 stand-alone 下的 RO 到 UC 下的 GRO、GPRO 等。详情可参考 IACR 最新 OT 相关论文。

参考文献

  1. Efficient oblivious transfer protocols. Moni Naor, Benny Pinkas.
  2. Efficient and Round-Optimal Oblivious Transfer and Commitment with Adaptive Security. Ran Canetti, Pratik Sarkar, Xiao Wang.
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐