茫然传输(OT)
茫然传输的概念是由Rabin提出的,Even、Goldreich和Lempel首次提出了1-out-of-2茫然传输的概念。由于茫然传输协议在安全多方计算等领域有着重要应用。Naor和Pinkas最早研究了抵抗自适应腐化者的OT传输协议。M.Green.S.Hohenberger等研究了UC安全的OT协议,不过这些协议基本随机预言模型或者基于一些非经典密码学困难性假设,这些协议对于实际应用而言仍然效率显低。
在OT拓展协议方面,不论是抵抗被动攻击者还是主动攻击者的OT拓展协议都取得了较大的进展。
Naor-Pinkas茫然传输协议
Naro和Pinkas通过三次公钥密码学操作实现了半诚实模型下的1-out-of-2茫然传输协议。
输入信息:发送者输入两个长度为lll比特的字符串(x0,x1)(x_{0},x_{1})(x0,x1),接收者输入一个选择比特rrr。
系统参数:设qqq,ppp均为素数,且满足q∣p−1q|p-1q∣p−1。ZqZ_{q}Zq为qqq阶群,GqG_{q}Gq是Zp∗Z_{p}^{*}Zp∗的qqq阶子群。给定Zp∗Z_{p}^{*}Zp∗的生成元ggg,满足Diffie−HellmanDiffie-HellmanDiffie−Hellman困难性假设。
随机预言函数:HHH
Step 1: 发送者生成并公布随机数C∈ZqC \in {Z_q}C∈Zq,然后发送者生成随机数aaa,并计算gag_{a}ga和CaC_{a}Ca。
Step 2: 接收者选择随机数1⩽k⩽q1 \leqslant k \leqslant q1⩽k⩽q,并生成公钥pkrpk_{r}pkr,pk1−r=C/gkpk_{1-r}=C/g_{k}pk1−r=C/gk,接收者将pk0pk_{0}pk0发送给发送者。
Step 3: 发送者计算(pk0)a(pk_0)^{a}(pk0)a,(pk1)a=Ca/(pk0)a(pk_1)^{a}=C_{a}/(pk_{0})^{a}(pk1)a=Ca/(pk0)a。发送者执行加密计算,并将加密结果(E0,E1)(E_0,E_1)(E0,E1)发送给接收者。
E0=(ga,H((pk0)a,0)⊕x0)E1=(ga,H((pk1)a,1)⊕x1){E_0} = ({g_a},H({(p{k_0})^a},0) \oplus {x_0})\\{E_1} = ({g_a},H({(p{k_1})^a},1) \oplus {x_1})E0=(ga,H((pk0)a,0)⊕x0)E1=(ga,H((pk1)a,1)⊕x1)
Step 4:接收者计算H((pkr)a)=H((ga)k)H((pk_{r})^{a})=H((g_a)^k)H((pkr)a)=H((ga)k),然后计算xrx_{r}xr。
xr=Er,2⊕H((pkr)a,r){x_r} = {E_{r,2}} \oplus H({(p{k_r})^a},r)xr=Er,2⊕H((pkr)a,r)
其中,Er,2E_{r,2}Er,2表示ErE_{r}Er的第二个元素。
IKN茫然传输协议
Ishai等人提出的茫然传输扩展协议可以将一个OTlmOT_{l}^{m}OTlm协议首先转化为调用一次OTmλOT_{m}^{\lambda }OTmλ协议,然后将OTmλOT_{m}^{\lambda}OTmλ协议转化为调用λ\lambdaλ次OTmλOT_{m}^{\lambda}OTmλ协议。其中,λ\lambdaλ表示系统安全参数。MiM_iMi,MjM_jMj分别表示矩阵M的第iii列和第jjj行,SSS与RRR分别表示发送者和接收者。
子协议1:OTlmOT_{l}^{m}OTlm转换为OTmλOT_{m}^{\lambda}OTmλ
输入信息:S的输入信息是m对长度lll比特字符串(xj,0,xj,1)(x_{j,0},x_{j,1})(xj,0,xj,1),其中,1⩽k⩽m1 \leqslant k \leqslant m1⩽k⩽m;RRR的输入是m个选择比特r=(r1,…rm)r=(r_{1},…r_{m})r=(r1,…rm)。
随机预言函数:H[m]×H[m]×H[m]×{0,1}k→_{k}→k→{0,1}l_{l}l。
系统参数:安全参数λ\lambdaλ。
步骤1:S生成随机向量 s∈{0,1}λs \in {\{ 0,1\} _\lambda }s∈{0,1}λ, RRR生成一个m×λm×\lambdam×λ的随机矩阵TTT。
步骤2:参与者调用OTmλOT_{m}^{\lambda}OTmλ协议。在这个协议中,S扮演输入为s的接收者,RRR扮演输入为(ti,r⊕ti)(t_{i},r\oplus t_{i})(ti,r⊕ti)的发送者,其中1⩽i⩽λ1 \leqslant i \leqslant \lambda1⩽i⩽λ。
步骤3:令QQQ代表SSS在步骤2中接收到的m×λm×\lambdam×λ的矩阵,即qi=(si,r)⊕ti{q_i} = ({s_i},r) \oplus {t_i}qi=(si,r)⊕ti,qj=(rj∗s)⊕tj{q_j} = ({r_{j}*s}) \oplus {t_j}qj=(rj∗s)⊕tj。对于1⩽j⩽m1 \leqslant j \leqslant m1⩽j⩽m, S 向R发送yj,0=xj,0⊕H(j,qj)y_{j,0}=x_{j,0} \oplus H(j,q_{j})yj,0=xj,0⊕H(j,qj),yj,1=xj,1⊕H(j,qj⊕s)y_{j,1}=x_{j,1} \oplus H(j,q_{j} \oplus s)yj,1=xj,1⊕H(j,qj⊕s)。
步骤4:对于1⩽j⩽m1 \leqslant j \leqslant m1⩽j⩽m ,RRR 输出 zj=yi,r⊕H(j,tj){z_j} = {y_{i,r}} \oplus H(j,{t_j})zj=yi,r⊕H(j,tj)。
子协议2:OTmλOT_{m}^{\lambda}OTmλ转换为OTλλOT_{\lambda}^{\lambda}OTλλ
输入信息:SSS的输入信息是λ\lambdaλ对长度为mmm比特的字符串(xi,0,xi,1)(x_{i,0},x_{i,1})(xi,0,xi,1)。其中1⩽i⩽λ1\leqslant i \leqslant \lambda1⩽i⩽λ;RRR的输入是λ\lambdaλ个选择比特r=(r1,r2…,rλ)r=(r_{1},r_{2}…,r_{\lambda})r=(r1,r2…,rλ)。
系统参数:安全参数λ\lambdaλ。
随机预言函数:一个伪随机数生成器G:G:G:{0,1}λ_{\lambda}λ→\to→{0,1}m_{m}m。
步骤1:S随机生成λ\lambdaλ对kkk比特的字符串(si,0,si,1)(s_{i,0},s_{i,1})(si,0,si,1).
步骤2:参与者调用OTλλOT^{\lambda}_{\lambda}OTλλ协议。在这个协议中,SSS扮演输入为(si,0,si,1)(s_{i,0},s_{i,1})(si,0,si,1)的发送者,RRR扮演输入为rrr的接收者,其中1⩽i⩽λ1 \leqslant i \leqslant \lambda1⩽i⩽λ。
步骤3:对于1⩽i⩽λ1 \leqslant i \leqslant \lambda1⩽i⩽λ,SSS向RRR发送yj,0y_{j,0}yj,0和yj,1y_{j,1}yj,1,其中yi,b=xi,b⊕G(si,ri)y_{i,b}=x_{i,b} \oplus G(s_{i,r_{i}})yi,b=xi,b⊕G(si,ri)。
上述协议的调用的OTλλOT^{\lambda}_{\lambda}OTλλ协议可以通过调用λ\lambdaλ次OTλ1OT^{1}_{\lambda}OTλ1协议实现。
子协议3:OTlmOT_{l}^{m}OTlm转换为OTλλOT_{\lambda}^{\lambda}OTλλ
输入信息:SSS的输入信息是mmm对长度为lll比特的字符串(xj,0,xj,1)(x_{j,0},x_{j,1})(xj,0,xj,1),其中1⩽j⩽m1 \leqslant j \leqslant m1⩽j⩽m。RRR的输入是mmm个选择比特r=(r1,…rm)r=(r_{1},…r_{m})r=(r1,…rm)。
系统参数:安全参数λ\lambdaλ>
随机预言函数:H:[m]×0,1λ→H:[m]×{0,1}_{\lambda} \toH:[m]×0,1λ→ {0,1}l_{l}l。
伪随机数生成器:G:0,1λ→0,1mG:{0,1}_{\lambda} \to {0,1}_{m}G:0,1λ→0,1m。
步骤1:RRR生成随机字符串对(kj,0,kj,1)∈{0,1}2λ({k_{j,0}},{k_{j,1}}) \in {\{ 0,1\} _{2\lambda }}(kj,0,kj,1)∈{0,1}2λ,1⩽j⩽m1 \leqslant j \leqslant m1⩽j⩽m。SSS生成随机向量s ∈{0,1}λ\in {\{ 0,1\} _\lambda }∈{0,1}λ。SSS和RRR执行OTλλOT^{\lambda}_{\lambda}OTλλ,其中SSS扮演接收者,RRR扮演发送者。协议结束后,SSS获得kj,sjk_{j,s_{j}}kj,sj,1⩽j⩽λ1 \leqslant j \leqslant \lambda1⩽j⩽λ。
步骤2:RRR生成一个m×m \timesm×λ\lambdaλ的随机比特矩阵TTT,计算vj,0=tj⊕G(kj,0)v_{j,0}=t_{j} \oplus G(k_{j,0})vj,0=tj⊕G(kj,0),vj,1=tj⊕G(kj,1⊕r)v_{j,1}=t_{j} \oplus G(k_{j,1} \oplus r)vj,1=tj⊕G(kj,1⊕r),并将vj,0,vj,1v_{j,0},v_{j,1}vj,0,vj,1发送给SSS,1⩽j⩽λ1 \leqslant j \leqslant \lambda1⩽j⩽λ。
步骤3:SSS生成m×λm \times\lambdam×λ的矩阵QQQ,其中qj=vj,sj⊕G(kj,sj)q^{j}=v_{j,s_{j}} \oplus G(k_{j,s_{j}})qj=vj,sj⊕G(kj,sj),1⩽j⩽λ1 \leqslant j \leqslant \lambda1⩽j⩽λ。SSS计算yi,0=xi,0⊕H(qi)y_{i,0}=x_{i,0} \oplus H(q_{i})yi,0=xi,0⊕H(qi),yi,1=xi,1⊕H(qi⊕s)y_{i,1}=x_{i,1} \oplus H(q_{i} \oplus s)yi,1=xi,1⊕H(qi⊕s),并将(yi.0,yi,1)(y_{i.0},y_{i,1})(yi.0,yi,1)发送给RRR,1⩽i⩽m1 \leqslant i \leqslant m1⩽i⩽m。
步骤4:对于1⩽j⩽m1 \leqslant j \leqslant m1⩽j⩽m,RRR输出zj=yi,rj⊕H(tj)z_{j}=y_{i,r_{j}} \oplus H(t_{j})zj=yi,rj⊕H(tj)。
字协议3中,RRR共调用mmm次HHH,2λ2\lambda2λ次GGG,发送数据2mλ2m\lambda2mλ比特;SSS共调用2m2m2m次HHH,λ\lambdaλ次GGG,发送数据2ml2ml2ml比特。当λ=m\lambda=mλ=m时,OTλλOT^{\lambda}_{\lambda}OTλλ的消耗可以忽略不计。
5237

被折叠的 条评论
为什么被折叠?



