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个信息m0m
0
和m1m
1
,而R每次输入一个选择b。当协议结束的时候,S无法获得关于b的任何有价值的信息,而R只能获得mbm
b
,对于m1−bm
1−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比特的字符串(x0,x1)(x
0
,x
1
)
Receiver输入一个选择比特r,用于选择(x0,x1)(x
0
,x
1
)中的其中一个
系统参数:
p,q均为素数,且q|p-1
ZqZ
q
为q阶群,GqG
q
是Z∗pZ
p
∗
的q阶子群
给定Z∗pZ
p
∗
的生成元g,满足Diffie-Hellman困难性假设
随机预言函数:
H
协议:
步骤1
S发送并公布随机数C∈ZqC∈Z
q
,然后S生成随机数a,并计算gag
a
和CaC
a
。
步骤2
R选择随机数1≤k≤q1≤k≤q,并生成公钥pkr=gkpk
r
=g
k
,pk1−r=C/gkpk
1−r
=C/g
k
,R将pk0pk
0
发送给S。
步骤3
S计算(pk0)a(pk
0
)
a
,(pk1)a=Ca/(pk0)a(pk
1
)
a
=C
a
/(pk
0
)
a
。Sender将(E0,E1)(E
0
,E
1
)发送给Receiver。E0=(ga,H((pk0)a)⊕x0)E
0
=(g
a
,H((pk
0
)
a
)⊕x
0
),E1=(ga,H((pk1)a)⊕x1)E
1
=(g
a
,H((pk
1
)
a
)⊕x
1
)
步骤4
Receiver通过计算H((ga)k)H((g
a
)
k
)得到H((pkr)a)H((pk
r
)
a
),因此可以得到
xr=Er,2⊕H((pkr)a)
x
r
=E
r,2
⊕H((pk
r
)
a
)
扩展OT(OT Extension)
相对于对称密码学,基于数论中各种困难性假设的公钥密码学操作的算法复杂度更高。因此,在平时密文传输信息的过程中,通信双方都会先进行基于公钥密码学的密钥交换协议得到一个通信的对称密钥加密传输信息。
扩展OT的思路也一样。虽然这种方法没有完全抛弃公钥密码学操作,但是已经将公钥密码学操作的数量降低到很少。如,扩展OT可以将OTmlOT
l
m
归约到使用少量基于公钥密码的OTλλOT
λ
λ
和若干对称密码学操作,其中λ<<mλ<<m。通常情况下,λλ可以取为80,128或更多。注意λλ不能太小,因为其通常作为安全性参数。
使用公钥密码学操作产生少量种子OT
利用堆成密码学操作(如PRG,哈希函数等)将这些种子OT协议扩展为任意数量的OT协力。
IKN茫然传输协议
Yuval Ishai等人提出的IKN茫然传输扩展协议,其中λλ为安全参数
1次OTmlOT
l
m
协议->1次OTλmOT
m
λ
协议
1次OTλmOT
m
λ
协议->λλ次OT1λOT
λ
1
协议。
注:下面展示Extending OT with a Semi-Honest Receiver
Part1: OTmlOT
l
m
->OTλmOT
m
λ
输入信息:
Sender有m对输入(xj,0,xj,1)(x
j,0
,x
j,1
);xx的长度为ll位,1≤j≤m1≤j≤m。
Receiver有m个输入选择比特r=(r1,r2,…,rm)r=(r
1
,r2,…,r
m
)。
系统参数:
安全参数λλ
随机预言函数:
H:[m]×{0,1}λ→{0,1}lH:[m]×{0,1}
λ
→{0,1}
l
协议:
S初始化一个随机向量s∈{0,1}λs∈{0,1}
λ
R初始化一个m×λm×λ的随机矩阵TT,其中tit
i
代表TT的第i列,tit
i
代表TT的第i行。
进行OTλmOT
m
λ
协议,在该协议中发送者为R而接收者为S,分别记为RSR
S
及SRS
R
。
RSR
S
有λλ对输入(ti,r⊕ti)(t
i
,r⊕t
i
)
SRS
R
有λλ个输入选择比特ss
SRS
R
得到一个m×λm×λ的矩阵QQ
S,即SRS
R
,发送m对(yj,0,yj,1)(y
j,0
,y
j,1
)给R,其中yj,0=xj,0⊕H(j,qj)y
j,0
=x
j,0
⊕H(j,q
j
);yj,1=xj,1⊕H(j,qj⊕s)y
j,1
=x
j,1
⊕H(j,q
j
⊕s);1≤j≤m1≤j≤m
qj=(sj⋅rj)⊕tj={tjsj⊕tjrj=0rj=1q
j
=(s
j
⋅r
j
)⊕t
j
={
t
j
s
j
⊕t
j
r
j
=0
r
j
=1
R计算m个输出zj=yj,rj⊕H(j,tj)z
j
=y
j,r
j
⊕H(j,t
j
);其中,zj=xj,rjz
j
=x
j,r
j
,1≤j≤m1≤j≤m
重点分析4,5步
当rj=0r
j
=0时,R收到yj,0=xj,0⊕H(j,tj)y
j,0
=x
j,0
⊕H(j,t
j
)以及yj,1=xj,1⊕H(j,tj⊕s)y
j,1
=x
j,1
⊕H(j,t
j
⊕s),而R只能解开xj,0x
j,0
当rj=1r
j
=1时,R收到yj,0=xj,0⊕H(j,sj⊕tj)y
j,0
=x
j,0
⊕H(j,s
j
⊕t
j
)以及yj,1=xj,1⊕H(j,tj)y
j,1
=x
j,1
⊕H(j,t
j
),而R只能解开xj,1x
j,1
PART2 OTλmOT
m
λ
->OTλλOT
λ
λ
思路:其实就是利用OTλλOT
λ
λ
传输混淆元,后面与OT再无关系。后面通过随机预言函数基于长度为λλ的混淆元生成长度为m的混淆项。
输入信息:
Sender有对λλ输入(xi,0,xi,1)(x
i,0
,x
i,1
);xx的长度为mm位,1≤i≤λ1≤i≤λ。
Receiver有λλ个输入选择比特r=(r1,r2,…,rλ)r=(r
1
,r2,…,r
λ
)。
系统参数:
安全参数λλ
随机预言函数:
G:{0,1}λ→{0,1}mG:{0,1}
λ
→{0,1}
m
协议:
S初始化λλ对随机的长度为k比特的(si,0,si,1)(s
i,0
,s
i,1
)
进行OTλλOT
λ
λ
协议,在该协议中发送者为S而接收者为R,分别记为SSS
S
及RRR
R
。
SSS
S
有λλ对输入(si,0,si,1)(s
i,0
,s
i,1
)
SRS
R
有λλ个输入选择rr
SRS
R
得到长度为λλ的向量s={si,ri}s={s
i,r
i
};1≤i≤λ1≤i≤λ
S向R发送λλ对(yi,0,yi,1)(y
i,0
,y
i,1
),其中yi,0=xi,b⊕G(si,b)y
i,0
=x
i,b
⊕G(s
i,b
)
R通过步骤2中得到的向量ss进行还原,即zi=yi,ri⊕G(si,ri)z
i
=y
i,r
i
⊕G(s
i,r
i
)
PART3 OTλλOT
λ
λ
可以通过调用λλ次OT1λOT
λ
1
协议实现
效率分析
R共调用m次H,2λ2λ次G,发送数据2mλ2mλ比特
S共调用2m次H,λλ次G,发送数据2ml2ml比特
当然协议中调用了一次OTλλOT
λ
λ
协议,因为与m和l无关为常数。
综上,整个流程归约到OTλλOT
λ
λ
(只有该部分与公钥密码学相关),即相当于λλ次OT1λOT
λ
1
协议。
















