茫然传输经典协议

茫然传输(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茫然传输协议。
输入信息:发送者输入两个长度为l ll比特的字符串( x 0 , x 1 ) (x_{0},x_{1})(x0,x1),接收者输入一个选择比特r rr
系统参数:设q qq,p pp均为素数,且满足q ∣ p − 1 q|p-1qp1Z q Z_{q}Zqq qq阶群,G q G_{q}GqZ p ∗ Z_{p}^{*}Zpq qq阶子群。给定Z p ∗ Z_{p}^{*}Zp的生成元g gg,满足D i f f i e − H e l l m a n Diffie-HellmanDiffieHellman困难性假设。
随机预言函数:H HH

Step 1: 发送者生成并公布随机数C ∈ Z q C \in {Z_q}CZq,然后发送者生成随机数a aa,并计算g a g_{a}gaC a C_{a}Ca

Step 2: 接收者选择随机数1 ⩽ k ⩽ q 1 \leqslant k \leqslant q1kq,并生成公钥p k r pk_{r}pkrp k 1 − r = C / g k pk_{1-r}=C/g_{k}pk1r=C/gk,接收者将p k 0 pk_{0}pk0发送给发送者。

Step 3: 发送者计算( 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。发送者执行加密计算,并将加密结果( E 0 , E 1 ) (E_0,E_1)(E0,E1)发送给接收者。
E 0 = ( g a , H ( ( p k 0 ) a , 0 ) ⊕ x 0 ) E 1 = ( g a , H ( ( p k 1 ) a , 1 ) ⊕ x 1 ) {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 ( ( p k r ) a ) = H ( ( g a ) k ) H((pk_{r})^{a})=H((g_a)^k)H((pkr)a)=H((ga)k),然后计算x r x_{r}xr

x r = E r , 2 ⊕ H ( ( p k r ) a , r ) {x_r} = {E_{r,2}} \oplus H({(p{k_r})^a},r)xr=Er,2H((pkr)a,r)

其中,E r , 2 E_{r,2}Er,2表示E r E_{r}Er的第二个元素。

IKN茫然传输协议

Ishai等人提出的茫然传输扩展协议可以将一个O T l m OT_{l}^{m}OTlm协议首先转化为调用一次O T m λ OT_{m}^{\lambda }OTmλ协议,然后将O T m λ OT_{m}^{\lambda}OTmλ协议转化为调用λ \lambdaλO T m λ OT_{m}^{\lambda}OTmλ协议。其中,λ \lambdaλ表示系统安全参数。M i M_iMi,M j M_jMj分别表示矩阵M的第i ii列和第j jj行,S SSR RR分别表示发送者和接收者。

子协议1:O T l m OT_{l}^{m}OTlm转换为O T m λ OT_{m}^{\lambda}OTmλ
输入信息:S的输入信息是m对长度l ll比特字符串( x j , 0 , x j , 1 ) (x_{j,0},x_{j,1})(xj,0,xj,1),其中,1 ⩽ k ⩽ m 1 \leqslant k \leqslant m1km;R RR的输入是m个选择比特r = ( r 1 , … r m ) 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}λ, R RR生成一个m × λ m×\lambdam×λ的随机矩阵T TT
步骤2:参与者调用O T m λ OT_{m}^{\lambda}OTmλ协议。在这个协议中,S扮演输入为s的接收者,R RR扮演输入为( t i , r ⊕ t i ) (t_{i},r\oplus t_{i})(ti,rti)的发送者,其中1 ⩽ i ⩽ λ 1 \leqslant i \leqslant \lambda1iλ
步骤3:令Q QQ代表S SS在步骤2中接收到的m × λ m×\lambdam×λ的矩阵,即q i = ( s i , r ) ⊕ t i {q_i} = ({s_i},r) \oplus {t_i}qi=(si,r)ti,q j = ( r j ∗ s ) ⊕ t j {q_j} = ({r_{j}*s}) \oplus {t_j}qj=(rjs)tj。对于1 ⩽ j ⩽ m 1 \leqslant j \leqslant m1jm, S 向R发送y j , 0 = x j , 0 ⊕ H ( j , q j ) y_{j,0}=x_{j,0} \oplus H(j,q_{j})yj,0=xj,0H(j,qj)y j , 1 = x j , 1 ⊕ H ( j , q j ⊕ s ) y_{j,1}=x_{j,1} \oplus H(j,q_{j} \oplus s)yj,1=xj,1H(j,qjs)
步骤4:对于1 ⩽ j ⩽ m 1 \leqslant j \leqslant m1jm ,R RR 输出 z j = y i , r ⊕ H ( j , t j ) {z_j} = {y_{i,r}} \oplus H(j,{t_j})zj=yi,rH(j,tj)

子协议2:O T m λ OT_{m}^{\lambda}OTmλ转换为O T λ λ OT_{\lambda}^{\lambda}OTλλ
输入信息:S SS的输入信息是λ \lambdaλ对长度为m mm比特的字符串( x i , 0 , x i , 1 ) (x_{i,0},x_{i,1})(xi,0,xi,1)。其中1 ⩽ i ⩽ λ 1\leqslant i \leqslant \lambda1iλR RR的输入是λ \lambdaλ个选择比特r = ( r 1 , r 2 … , 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λk kk比特的字符串( s i , 0 , s i , 1 ) (s_{i,0},s_{i,1})(si,0,si,1).
步骤2:参与者调用O T λ λ OT^{\lambda}_{\lambda}OTλλ协议。在这个协议中,S SS扮演输入为( s i , 0 , s i , 1 ) (s_{i,0},s_{i,1})(si,0,si,1)的发送者,R RR扮演输入为r rr的接收者,其中1 ⩽ i ⩽ λ 1 \leqslant i \leqslant \lambda1iλ
步骤3:对于1 ⩽ i ⩽ λ 1 \leqslant i \leqslant \lambda1iλS SSR RR发送y j , 0 y_{j,0}yj,0y j , 1 y_{j,1}yj,1,其中y i , b = x i , b ⊕ G ( s i , r i ) y_{i,b}=x_{i,b} \oplus G(s_{i,r_{i}})yi,b=xi,bG(si,ri)
上述协议的调用的O T λ λ OT^{\lambda}_{\lambda}OTλλ协议可以通过调用λ \lambdaλO T λ 1 OT^{1}_{\lambda}OTλ1协议实现。

子协议3:O T l m OT_{l}^{m}OTlm转换为O T λ λ OT_{\lambda}^{\lambda}OTλλ
输入信息:S SS的输入信息是m mm对长度为l ll比特的字符串( x j , 0 , x j , 1 ) (x_{j,0},x_{j,1})(xj,0,xj,1),其中1 ⩽ j ⩽ m 1 \leqslant j \leqslant m1jmR RR的输入是m mm个选择比特r = ( r 1 , … r m ) 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 , 1 m G:{0,1}_{\lambda} \to {0,1}_{m}G:0,1λ0,1m
步骤1:R RR生成随机字符串对( k j , 0 , k j , 1 ) ∈ { 0 , 1 } 2 λ ({k_{j,0}},{k_{j,1}}) \in {\{ 0,1\} _{2\lambda }}(kj,0,kj,1){0,1}2λ1 ⩽ j ⩽ m 1 \leqslant j \leqslant m1jmS SS生成随机向量s ∈ { 0 , 1 } λ \in {\{ 0,1\} _\lambda }{0,1}λS SSR RR执行O T λ λ OT^{\lambda}_{\lambda}OTλλ,其中S SS扮演接收者,R RR扮演发送者。协议结束后,S SS获得k j , s j k_{j,s_{j}}kj,sj1 ⩽ j ⩽ λ 1 \leqslant j \leqslant \lambda1jλ
步骤2:R RR生成一个m × m \timesm×λ \lambdaλ的随机比特矩阵T TT,计算v j , 0 = t j ⊕ G ( k j , 0 ) v_{j,0}=t_{j} \oplus G(k_{j,0})vj,0=tjG(kj,0)v j , 1 = t j ⊕ G ( k j , 1 ⊕ r ) v_{j,1}=t_{j} \oplus G(k_{j,1} \oplus r)vj,1=tjG(kj,1r),并将v j , 0 , v j , 1 v_{j,0},v_{j,1}vj,0,vj,1发送给S SS1 ⩽ j ⩽ λ 1 \leqslant j \leqslant \lambda1jλ
步骤3:S SS生成m × λ m \times\lambdam×λ的矩阵Q QQ,其中q j = v j , s j ⊕ G ( k j , s j ) q^{j}=v_{j,s_{j}} \oplus G(k_{j,s_{j}})qj=vj,sjG(kj,sj)1 ⩽ j ⩽ λ 1 \leqslant j \leqslant \lambda1jλS SS计算y i , 0 = x i , 0 ⊕ H ( q i ) y_{i,0}=x_{i,0} \oplus H(q_{i})yi,0=xi,0H(qi)y i , 1 = x i , 1 ⊕ H ( q i ⊕ s ) y_{i,1}=x_{i,1} \oplus H(q_{i} \oplus s)yi,1=xi,1H(qis),并将( y i . 0 , y i , 1 ) (y_{i.0},y_{i,1})(yi.0,yi,1)发送给R RR1 ⩽ i ⩽ m 1 \leqslant i \leqslant m1im
步骤4:对于1 ⩽ j ⩽ m 1 \leqslant j \leqslant m1jm,R RR输出z j = y i , r j ⊕ H ( t j ) z_{j}=y_{i,r_{j}} \oplus H(t_{j})zj=yi,rjH(tj)
字协议3中,R RR共调用m mmH HH2 λ 2\lambda2λG GG,发送数据2 m λ 2m\lambda2mλ比特;S SS共调用2 m 2m2mH HHλ \lambdaλG GG,发送数据2 m l 2ml2ml比特。当λ = m \lambda=mλ=m时,O T λ λ OT^{\lambda}_{\lambda}OTλλ的消耗可以忽略不计。


版权声明:本文为Albery原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。