1-out-2 OT
Oblivious Transfer(茫然传输)简称OT,是一种基本密码学原语,被广泛的用于安全多方计算等领域。
OT最早在1981年被 Michael O. Rabin提出[1],在Rabin的OT协议中,发送者S发送一个信息m给接收者R,接收者R以1/2的概率接受信息m。所以在协议交互的结束的时候,S并不知道R是否接受了消息。该方案是基于RSA加密体系构造的。
1985年S. Even, O. Goldreich, and A. Lempel提出了1-out-2 OT[2],在新的方案中S每次发送2个信息 m 0 m_0 m0和 m 1 m_1 m1,而R每次输入一个选择b。当协议结束的时候,S无法获得关于b的任何有价值的信息,而R只能获得 m b m_b mb,对于 m 1 − b m_{1-b} m1−b,R也一无所知。
1988年,Claude Crépeau 证明了Rabin的OT方案和1-out-2 OT方案是等价的[3]。
1-out-n OT
而在1986年Brassard等人首次将1-out-2 OT扩展为1-out-n OT[4],1998年Stern J P.首次将公钥特性加入了1-out-n OT协议之中[5]。
2001年Naor和Pinkas基于Diffie-Hellamn(DDH)困难问题假设给出了一个高效的2轮1-out-n OT协议[6],同一年Aiello等人基于同态加密也给出了一个2轮的1-out-n OT协议[7],并且在该方案中无论n多大,R只需要进行2次指数运算而S则需要2n 2n2n次指数运算。
2003年Yuval Ishai等人以1-out-2 OT为基础提出了一种高效的通过少量OT构造大量OT的方案,该方案基于随机神谕机构造[8]。
2008年,Lindell将cut-and-choose技术融入到OT协议中,给出了一个高效而且可以完全模拟的OT协议[9]。
2013年,Vladimir Kolesnikov1 和 Ranjit Kumaresan直接构造了1-out-n OT[19],并且对于短消息的茫然传输效率比03年Yuval Ishai等人的方案更高。
浅见
在入门阶段,可以粗略看一下2000年之前的文章对于OT的起源和初始的想法有大体的了解。
对于[6] 和[7]的两篇文章可以着重看一下,其中对于安全性的证明和复杂性的分析是比较符合中等水平的要求的。
2003年和2013年的两篇论文可以对比看一下,很有意义也就很有意思。
2008年的论文作者Lindell是个大佬,牛到可以写算法导论那种等级著作的大佬,他在大作中的安全性证明不是写给一般水平玩家看的。
除此之外,还可以看一下Dan Bone的书[]中关于OT部分的介绍,比较浅显容易理解。
参考文献
[1]Michael O. Rabin. “How to exchange secrets by oblivious transfer.”
[2]S. Even, O. Goldreich, and A. Lempel, “A Randomized Protocol for Signing Contracts.”
[3]Claude Crépeau. “Equivalence between two flavours of oblivious transfer.”
[4]Gilles Brassard, Claude Crépeau and Jean-Marc Robert. “All-or-nothing disclosure of secrets.”
[5]Stern J P. “A New and Efficient All-Or-Nothing Disclosure of Secrets Protocol.”
[6]Moni Naor and Benny Pinkas. “Efficient oblivious transfer protocols.”
[7]Bill Aiello, Yuval Ishai, and Omer Reingold. “Priced Oblivious Transfer:How to Sell Digital Goods.”
[8]Ishai Y., Kilian J., Nissim K., Petrank E. “Extending Oblivious Transfers Efficiently.”
[9]Lindell Y. “Efficient Fully-Simulatable Oblivious Transfer.”
[10]Vladimir Kolesnikov and Ranjit Kumaresan. “Improved OT Extension for Transferring Short Secrets.”
敌手模型
半诚实(Semi-Honest)模型
假设参与计算的各方都是半诚实的,即参与方可以保留交互时得到的信息。对于想要协作完成计算并得到正确结果的参与方来说,这样的模型符合实际情况。
半诚实模型的敌手行为时被动的,它只是收集信息,这些信息可能用于以后的分析以图得到私有信息。
恶意(Malicious)模型
相对于半诚实模型,恶意的敌手拥有更主动的行为:
- 它可以拒绝参与协议的执行
- 可以用任意值来替换它的输入
- 可以在任意时间终止执行
Naor-Pinkas茫然传输协议
Naor和Pinkas通过三次公钥密码学操作实现了半诚实模型下的1-out-of-2茫然传输协议。
输入信息:
- Sender输入两个长度为l比特的字符串 ( x 0 , x 1 ) (x_0, x_1) (x0,x1)
- Receiver输入一个选择比特r,用于选择 ( x 0 , x 1 ) (x_0, x_1) (x0,x1)中的其中一个
系统参数:
- p,q均为素数,且q|p-1
- Z q Z_q Zq为q阶群, G q G_q Gq是 Z p ∗ Z_p^* Zp∗的q阶子群
- 给定 Z p ∗ Z_p^* Zp∗的生成元g,满足Diffie-Hellman困难性假设
随机预言函数:
- H
协议:
- 步骤1
S发送并公布随机数 C ∈ Z q C \in Z_q C∈Zq,然后S生成随机数a,并计算 g a g^a ga和 C a C^a Ca。 - 步骤2
R选择随机数 1 ≤ k ≤ q 1 \le k \le q 1≤k≤q,并生成公钥 p k r = g k {pk}_r=g^k pkr=gk, p k 1 − r = C / g k {pk}_{1-r}=C/g^k pk1−r=C/gk,R将 p k 0 {pk}_0 pk0发送给S。 - 步骤3
S计算 ( p k 0 ) a ({pk}_0)^a (pk0)a, ( p k 1 ) a = C a / ( p k 0 ) a ({pk}_1)^a=C^a/({pk}_0)^a (pk1)a=Ca/(pk0)a。Sender将 ( E 0 , E 1 ) (E_0, E_1) (E0,E1)发送给Receiver。 E 0 = ( g a , H ( ( p k 0 ) a ) ⊕ x 0 ) E_0=(g^a, H(({pk}_0)^a)\oplus x_0) E0=(ga,H((pk0)a)⊕x0), E 1 = ( g a , H ( ( p k 1 ) a ) ⊕ x 1 ) E_1=(g^a, H(({pk}_1)^a)\oplus x_1) E1=(ga,H((