IKNP 的改进:G-OT、C-OT、R-OT

参考文献:

  1. M. Naor and B. Pinkas. Efficient oblivious transfer protocols. In ACM-SIAM Symposium On Discrete Algorithms, SODA ’01, pages 448–457. Society for Industrial and Applied Mathematics, 2001.
  2. Asharov G, Lindell Y, Schneider T, et al. More efficient oblivious transfer and extensions for faster secure computation[C]//Proceedings of the 2013 ACM SIGSAC conference on Computer & communications security. 2013: 535-548.
  3. IKNP: https://blog.csdn.net/weixin_44885334/article/details/126733495

Base OT

最知名的半诚实敌手下安全的 OT 协议是 Naor-Pinkas 协议(找不到免费论文 ╥﹏╥ )。最近密码协议课程上学习了,回来补充下:关键思路是通过 C C C R → S R \to S RS两个公钥减少到一个,并通过公开并固定 g r g^r gr S → R S \to R SR两个密文的规模减小一半

在这里插入图片描述
在 CDH 假设下,Naor-Pinkas 协议是 在 RO 模型下对于半诚实敌手安全 O T 1 2 OT^2_1 OT12 协议。

Asharov 等人提出了一种新的基于 DDH 假设的 1-out-of-2 n × O T l n \times OT_l n×OTl 协议。在椭圆曲线群下,它比 Naor-Pinkas 协议的 RO 模型下的协议慢 1 1 1倍,比标准模型下的协议快 3 3 3倍;并行的 n n n越大,平局每次 OT 的代价就越小。

安全参数 κ \kappa κ,素数 q q q κ \kappa κ比特。算法如下:

在这里插入图片描述

General OT

IKNP 平均每次 OT 操作,仅仅需要 3 3 3次 Hash 运算(发送方 2 2 2次加密运算,接收方 1 1 1次解密运算),在计算复杂度上似乎已经是最优了。

但是,IKNP 协议需要构造 m × κ m \times \kappa m×κ的矩阵,其中 κ = 80 \kappa=80 κ=80很小,而 m m m取决于 MPC 电路的规模可以达到数十万。IKNP 需要在 OT 之前,预先确定 m m m的上界,然后在执行 OT 时,发送巨大的矩阵。因此,通信复杂度过高,尤其是互联网的发展速度远不及 CPU 的发展速度的今天,通信往往是制约 MPC 的瓶颈。

Asharov 等人的思路是:先用 OT 发送 κ × κ \kappa \times \kappa κ×κ的小矩阵 K 0 = [ k 1 0 ∣ ⋯ ∣ k κ 0 ] , K 1 = [ k 1 1 ∣ ⋯ ∣ k κ 1 ] K_0=[k_1^0|\cdots|k_\kappa^0],K_1=[k_1^1|\cdots|k_\kappa^1] K0=[k10kκ0],K1=[k11kκ1],然后将它们的每一列作为随机种子(seed)输入到 PRG 中,扩展为 m × κ m \times \kappa m×κ的大矩阵,将它们作为 OT 的密钥,来发送 ( t i , t i ⊕ r ) (t^i,t^i \oplus r) (ti,tir)

  1. 接收方持有 k i 0 , k i 1 k_i^0,k_i^1 ki0,ki1,然后利用 OT 发送
    ( v i 0 , v i 1 ) = ( G ( k i 0 ) ⊕ t i , G ( k i 1 ) ⊕ ( t i ⊕ r ) ) (v_i^0,v_i^1) = (G(k_i^0)\oplus t^i,G(k_i^1)\oplus (t^i \oplus r)) (vi0,vi1)=(G(ki0)ti,G(ki1)(tir))

  2. 发送方持有 s i s_i si对应的密钥随机性 k i s i k_i^{s_i} kisi,收到 v i s i v_i^{s_i} visi后,计算
    q i = G ( k i s i ) ⊕ v i s i = { t i , s i = 0 t i ⊕ r , s i = 1 q^i = G(k_i^{s_i}) \oplus v_i^{s_i} = \left\{ \begin{aligned} t^i, && s_i=0\\ t^i \oplus r, && s_i=1\\ \end{aligned} \right. qi=G(kisi)visi={ti,tir,si=0si=1

Asharov 等人发现,因为 t i t^i ti只是个随机数,如果不再随机选择 t i t^i ti,而是直接设置 t i = G ( k i 0 ) t^i = G(k_i^0) ti=G(ki0),那么 v i 0 = 0 v_i^0=0 vi0=0就不用发送(类似于减少 Yao’s GC 通信量的 GRR3 技术),接收方只需发送:
u i : = v i 1 = G ( k i 1 ) ⊕ ( t i ⊕ r ) = G ( k i 0 ) ⊕ G ( k i 1 ) ⊕ r u^i := v_i^1 = G(k_i^1)\oplus (t^i \oplus r) = G(k_i^0) \oplus G(k_i^1) \oplus r ui:=vi1=G(ki1)(tir)=G(ki0)G(ki1)r

那么相较于 IKNP 通信量减半。发送方可以直接计算出
q i = { G ( k i 0 ) = t i , s i = 0 G ( k i 1 ) ⊕ u i = t i ⊕ r , s i = 1 q^i = \left\{ \begin{aligned} G(k_i^0) &= t^i, && s_i=0\\ G(k_i^1) \oplus u^i &= t^i \oplus r, && s_i=1\\ \end{aligned} \right. qi={G(ki0)G(ki1)ui=ti,=tir,si=0si=1

然后发送方用秘密 s s s以及矩阵 Q ∈ { 0 , 1 } m × κ Q \in \{0,1\}^{m \times \kappa} Q{0,1}m×κ的每一行来加密消息对 ( x i 0 , x i 1 ) (x_i^0,x_i^1) (xi0,xi1),接收方不知道 s s s因此只能解密一个消息。另外因为 PRG 是可以连续扩张的 r r r也可以用 PRG 来连续生成,因此 q i q^i qi的长度可以任意扩展,以执行不固定的 m m m数量的 OT 协议。

由于密钥随机性 K 0 , K 1 K_0,K_1 K0,K1与 OT 要传输的消息 ( x i 0 , x i 1 ) (x_i^0,x_i^1) (xi0,xi1)完全独立,因此可以将传输 K 0 , K 1 K_0,K_1 K0,K1的 OT 协议作为 Initial OT Phase,之后的使用 K 0 , K 1 K_0,K_1 K0,K1作为密钥发送 ( x i 0 , x i 1 ) (x_i^0,x_i^1) (xi0,xi1)的过程作为 OT extension Phase,协议如下:

在这里插入图片描述
在构造矩阵 Q Q Q的过程中,G-OT 协议的通信量减半!

Correlated OT

C-OT 专用于加速使用 Free XOR 技术的 Yao’ GC

输入线 w w w上的两个线标签为 k w 0 , k w 1 ⊕ R k_w^0,k_w^1 \oplus R kw0,kw1R,其中 R R R是全局随机数。在使用 OT 协议时,两个密文为:
y j 0 = k w 0 ⊕ H ( q j ) ,    y j 1 = k w 1 ⊕ H ( q j ⊕ s ) y_j^0 = k_w^0 \oplus H(q_j),\,\, y_j^1 = k_w^1 \oplus H(q_j \oplus s) yj0=kw0H(qj),yj1=kw1H(qjs)

Asharov 等人再次发现,因为 k w 0 k_w^0 kw0仅仅是个随机数,如果不再随机选择 k w 0 k_w^0 kw0,而是直接设置 k w 0 = H ( q j ) k_w^0 = H(q_j) kw0=H(qj),那么 y j 0 = 0 y_j^0=0 yj0=0就不用发送,发送方只需发送一个密文
y j : = y j 1 = k w 1 ⊕ H ( q j ⊕ s ) = R ⊕ H ( q j ) ⊕ H ( q j ⊕ s ) y_j := y_j^1 = k_w^1 \oplus H(q_j \oplus s) = R \oplus H(q_j) \oplus H(q_j \oplus s) yj:=yj1=kw1H(qjs)=RH(qj)H(qjs)
通信量减半。接收方可以根据 r j r_j rj直接计算出:
k w r j = { H ( t j ) = k w 0 , r j = 0 y j ⊕ H ( t j ) = k w 1 , r j = 1 k_w^{r_j} = \left\{ \begin{aligned} H(t_j) &= k_w^0, && r_j=0\\ y_j \oplus H(t_j) &= k_w^1, && r_j=1\\ \end{aligned} \right. kwrj={H(tj)yjH(tj)=kw0,=kw1,rj=0rj=1

注意,由于设置的线标签 k w 0 = H ( q j ) k_w^0 = H(q_j) kw0=H(qj) Q Q Q有关,因此需要先执行 OT,后生成混淆电路

上述协议可以扩展到任意的 第一个消息是随机数 x j 0 x_j^0 xj0,第二个消息是第一个消息的函数值 x j 1 = f j ( x j 0 ) x_j^1 = f_j(x_j^0) xj1=fj(xj0) 的不经意传输上。对于每一行 1 ≤ j ≤ m 1 \le j \le m 1jm f j f_j fj可以是任意的不同函数。

发送方设置
x j 0 = H ( q j ) ,   y j 0 = x j 0 ⊕ H ( q j ) = 0 x_j^0 = H(q_j),\, y_j^0 = x_j^0 \oplus H(q_j) = 0 xj0=H(qj),yj0=xj0H(qj)=0

然后仅仅发送一个密文

y j : = y j 1 = x j 1 ⊕ H ( q j ⊕ s ) = f j ( x j 0 ) ⊕ H ( q j ⊕ s ) y_j := y_j^1 = x_j^1 \oplus H(q_j \oplus s) = f_j(x_j^0) \oplus H(q_j \oplus s) yj:=yj1=xj1H(qjs)=fj(xj0)H(qjs)

接收方获得了
x j r j = ( r j ⋅ y j ) ⊕ H ( t j ) x_j^{r_j} = (r_j \cdot y_j) \oplus H(t_j) xjrj=(rjyj)H(tj)

在根据矩阵 Q Q Q计算和发送密文的过程中,C-OT 协议的通信量减半!

Random OT

R-OT 专用于加速使用 Beaver Triple 的 GMW

在构建乘法三元组时,需要利用 OT 发送随机比特对 b 0 , b 1 b_0,b_1 b0,b1,密文为
y j 0 = b 0 ⊕ H ( q j ) ,    y j 1 = b 1 ⊕ H ( q j ⊕ s ) y_j^0 = b_0 \oplus H(q_j),\,\, y_j^1 = b_1 \oplus H(q_j \oplus s) yj0=b0H(qj),yj1=b1H(qjs)

Asharov 等人又双叒叕发现,因为两个消息是独立的随机数,如果不再随机选择,而是直接设置 b j 0 = H ( q j ) b_j^0 = H(q_j) bj0=H(qj)以及 b j 1 = H ( q j ⊕ s ) b_j^1 = H(q_j \oplus s) bj1=H(qjs),那么 y j 0 = 0 , y j 1 = 0 y_j^0=0,y_j^1=0 yj0=0,yj1=0就都不用发送了

发送者不必发送密文,而接收者直接计算
b j r j = H ( t j ) { H ( q j ) = b j 0 , r j = 0 H ( q j ⊕ s ) = b j 1 , r j = 1 b_j^{r_j} = H(t_j) \left\{ \begin{aligned} H(q_j) &= b_j^0, && r_j=0\\ H(q_j \oplus s) &= b_j^1, && r_j=1\\ \end{aligned} \right. bjrj=H(tj){H(qj)H(qjs)=bj0,=bj1,rj=0rj=1

利用上述的 R-OT 协议,可以构建两方功能 f a b f_{ab} fab,双方都没有输入,一方获得 ( a , u ) (a,u) (a,u),另一方获得 ( b , v ) (b,v) (b,v),它们都是随机的布尔值,满足约束 a b = u ⊕ v ab=u \oplus v ab=uv,协议如下:

在这里插入图片描述

然后利用两次 f a b f_{ab} fab(也就是两次 R-OT),可以计算 Beaver Triple ( a , b , c = a b ) ∈ { 0 , 1 } 3 (a,b,c=ab) \in \{0,1\}^3 (a,b,c=ab){0,1}3

  1. a = a 0 ⊕ a 1 a=a_0 \oplus a_1 a=a0a1 b = b 0 ⊕ b 1 b=b_0 \oplus b_1 b=b0b1 c = c 0 ⊕ c 1 c=c_0 \oplus c_1 c=c0c1,一方持有 0 0 0的那些 shares,另一方持有 1 1 1的那些 shares,需满足约束
    c 0 ⊕ c 1 = ( a 0 ⊕ a 1 ) ( b 0 ⊕ b 1 ) = a 0 b 0 ⊕ a 0 b 1 ⊕ a 1 b 0 ⊕ a 1 b 1 c_0 \oplus c_1 = (a_0 \oplus a_1)(b_0 \oplus b_1) = a_0b_0 \oplus a_0b_1 \oplus a_1b_0 \oplus a_1b_1 c0c1=(a0a1)(b0b1)=a0b0a0b1a1b0a1b1

  2. P 0 P_0 P0作为发送者, P 1 P_1 P1作为接收者,执行 f a b f_{ab} fab,使得 P 0 P_0 P0获得 ( a 0 , u 0 ) (a_0,u_0) (a0,u0) P 1 P_1 P1获得 ( b 1 , v 1 ) (b_1,v_1) (b1,v1),满足
    a 0 b 1 = u 0 ⊕ v 1 a_0b_1 = u_0 \oplus v_1 a0b1=u0v1

  3. P 0 P_0 P0作为接收者, P 1 P_1 P1作为发送者,执行 f a b f_{ab} fab,使得 P 0 P_0 P0获得 ( b 0 , v 0 ) (b_0,v_0) (b0,v0) P 1 P_1 P1获得 ( a 1 , u 1 ) (a_1,u_1) (a1,u1),满足
    a 1 b 0 = v 0 ⊕ u 1 a_1b_0 = v_0 \oplus u_1 a1b0=v0u1

  4. 那么, P i P_i Pi设置
    c i = a i b i ⊕ u i ⊕ v i c_i = a_ib_i \oplus u_i \oplus v_i ci=aibiuivi

容易验证 c 0 ⊕ c 1 = ( a 0 ⊕ a 1 ) ( b 0 ⊕ b 1 ) c_0 \oplus c_1 = (a_0 \oplus a_1)(b_0 \oplus b_1) c0c1=(a0a1)(b0b1),双方获得了随机的 Beaver Triple ( a , b , c ) (a,b,c) (a,b,c) 的 shares

在根据矩阵 Q Q Q计算和发送密文的过程中,R-OT 协议的通信量可以完全去除!

总结

Asharov 等人对 IKNP 的通信量复杂度做了优化,

  1. Base-OT:基于DDH假设,每个 OT 都使用相同的 u = g r u=g^r u=gr n n n越大,平均通信量越小。
  2. G-OT:先用 Base-OT 传输 κ × κ \kappa \times \kappa κ×κ的小矩阵 K 0 , K 1 K_0,K_1 K0,K1的列。用它们作为密钥的随机性,利用 PRG 扩展为 OT 密钥来传输矩阵 T , U T,U T,U。特殊地设置 T T T的每一列,使得 T T T的密文为 0 0 0,因此这一部分的通信量减半。
  3. C-OT:基于 G-OT,根据矩阵 Q Q Q加密两条消息。特殊地设置随机消息 x j 0 = G ( q j ) x_j^0=G(q_j) xj0=G(qj),使得它的密文为 0 0 0,因此这一部分的通信量减半。
  4. R-OT:基于 G-OT,根据矩阵 Q Q Q加密两条消息。特殊地设置随机消息 x j 0 = G ( q j ) ,   x j 1 = G ( q j ⊕ s ) x_j^0=G(q_j),\, x_j^1=G(q_j \oplus s) xj0=G(qj),xj1=G(qjs),使得它们的密文都为 0 0 0,因此这一部分的通信量完全消失。
  • 9
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值