茫然传输经典协议

茫然传输(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 l l比特的字符串 ( x 0 , x 1 ) (x_{0},x_{1}) (x0,x1),接收者输入一个选择比特 r r r
    系统参数:设 q q q, p p p均为素数,且满足 q ∣ p − 1 q|p-1 qp1 Z q Z_{q} Zq q q q阶群, G q G_{q} Gq Z p ∗ Z_{p}^{*} Zp q q q阶子群。给定 Z p ∗ Z_{p}^{*} Zp的生成元 g g g,满足 D i f f i e − H e l l m a n Diffie-Hellman DiffieHellman困难性假设。
    随机预言函数: H H H

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

    Step 2: 接收者选择随机数 1 ⩽ k ⩽ q 1 \leqslant k \leqslant q 1kq,并生成公钥 p k r pk_{r} pkr p 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_i Mi, M j M_j Mj分别表示矩阵M的第 i i i列和第 j j j行, S S S R R R分别表示发送者和接收者。

     子协议1: O T l m OT_{l}^{m} OTlm转换为 O T m λ OT_{m}^{\lambda} OTmλ
     输入信息:S的输入信息是m对长度 l l l比特字符串 ( x j , 0 , x j , 1 ) (x_{j,0},x_{j,1}) (xj,0,xj,1),其中, 1 ⩽ k ⩽ m 1 \leqslant k \leqslant m 1km; R R R的输入是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 R R生成一个 m × λ m×\lambda m×λ的随机矩阵 T T T
     步骤2:参与者调用 O T m λ OT_{m}^{\lambda} OTmλ协议。在这个协议中,S扮演输入为s的接收者, R R R扮演输入为 ( t i , r ⊕ t i ) (t_{i},r\oplus t_{i}) (ti,rti)的发送者,其中 1 ⩽ i ⩽ λ 1 \leqslant i \leqslant \lambda 1iλ
     步骤3:令 Q Q Q代表 S S S在步骤2中接收到的 m × λ m×\lambda m×λ的矩阵,即 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 m 1jm, 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 m 1jm , R R R 输出 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 S S的输入信息是 λ \lambda λ对长度为 m m m比特的字符串 ( x i , 0 , x i , 1 ) (x_{i,0},x_{i,1}) (xi,0,xi,1)。其中 1 ⩽ i ⩽ λ 1\leqslant i \leqslant \lambda 1iλ R R R的输入是 λ \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 k k比特的字符串 ( s i , 0 , s i , 1 ) (s_{i,0},s_{i,1}) (si,0,si,1).
     步骤2:参与者调用 O T λ λ OT^{\lambda}_{\lambda} OTλλ协议。在这个协议中, S S S扮演输入为 ( s i , 0 , s i , 1 ) (s_{i,0},s_{i,1}) (si,0,si,1)的发送者, R R R扮演输入为 r r r的接收者,其中 1 ⩽ i ⩽ λ 1 \leqslant i \leqslant \lambda 1iλ
     步骤3:对于 1 ⩽ i ⩽ λ 1 \leqslant i \leqslant \lambda 1iλ S S S R R R发送 y j , 0 y_{j,0} yj,0 y 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 S S的输入信息是 m m m对长度为 l l l比特的字符串 ( x j , 0 , x j , 1 ) (x_{j,0},x_{j,1}) (xj,0,xj,1),其中 1 ⩽ j ⩽ m 1 \leqslant j \leqslant m 1jm R R R的输入是 m m m个选择比特 r = ( r 1 , … r m ) r=(r_{1},…r_{m}) r=(r1,rm)
     系统参数:安全参数 λ \lambda λ>
     随机预言函数: H : [ m ] × 0 , 1 λ → H:[m]×{0,1}_{\lambda} \to H:[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 R R生成随机字符串对 ( 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 m 1jm S S S生成随机向量s ∈ { 0 , 1 } λ \in {\{ 0,1\} _\lambda } {0,1}λ S S S R R R执行 O T λ λ OT^{\lambda}_{\lambda} OTλλ,其中 S S S扮演接收者, R R R扮演发送者。协议结束后, S S S获得 k j , s j k_{j,s_{j}} kj,sj 1 ⩽ j ⩽ λ 1 \leqslant j \leqslant \lambda 1jλ
     步骤2: R R R生成一个 m × m \times m× λ \lambda λ的随机比特矩阵 T T T,计算 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 S S 1 ⩽ j ⩽ λ 1 \leqslant j \leqslant \lambda 1jλ
     步骤3: S S S生成 m × λ m \times\lambda m×λ的矩阵 Q Q Q,其中 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 \lambda 1jλ S S S计算 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 R R 1 ⩽ i ⩽ m 1 \leqslant i \leqslant m 1im
     步骤4:对于 1 ⩽ j ⩽ m 1 \leqslant j \leqslant m 1jm, R R R输出 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 R R共调用 m m m H H H 2 λ 2\lambda 2λ G G G,发送数据 2 m λ 2m\lambda 2mλ比特; S S S共调用 2 m 2m 2m H H H λ \lambda λ G G G,发送数据 2 m l 2ml 2ml比特。当 λ = m \lambda=m λ=m时, O T λ λ OT^{\lambda}_{\lambda} OTλλ的消耗可以忽略不计。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值