茫然傳輸(Oblivious Transfer)

轉自

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_0m1m_1,而R每次輸入一個選擇b。當協議結束的時候,S無法獲得關於b的任何有價值的信息,而R只能獲得mbm_b,對於m1bm_{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_qZpZ_p^*的q階子羣
  • 給定ZpZ_p^*的生成元g,滿足Diffie-Hellman困難性假設

隨機預言函數:

  • H

協議:

  • 步驟1
    S發送並公佈隨機數CZqC \in Z_q,然後S生成隨機數a,並計算gag^aCaC^a
  • 步驟2
    R選擇隨機數1kq1 \le k \le q,並生成公鑰pkr=gk{pk}_r=g^kpk1r=C/gk{pk}_{1-r}=C/g^k,R將pk0{pk}_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)\oplus x_0)E1=(ga,H((pk1)a)x1)E_1=(g^a, H(({pk}_1)^a)\oplus x_1)
  • 步驟4
    Receiver通過計算H((ga)k)H((g^a)^k)得到H((pkr)a)H(({pk}_r)^a),因此可以得到
    xr=Er,2H((pkr)a)x_r=E_{r,2}\oplus H(({pk}_r)^a)

擴展OT(OT Extension)

相對於對稱密碼學,基於數論中各種困難性假設的公鑰密碼學操作的算法複雜度更高。因此,在平時密文傳輸信息的過程中,通信雙方都會先進行基於公鑰密碼學的密鑰交換協議得到一個通信的對稱密鑰加密傳輸信息。

擴展OT的思路也一樣。雖然這種方法沒有完全拋棄公鑰密碼學操作,但是已經將公鑰密碼學操作的數量降低到很少。如,擴展OT可以將OTlmOT_l^m歸約到使用少量基於公鑰密碼的OTλλOT_{\lambda}^{\lambda}和若干對稱密碼學操作,其中λ<<m\lambda <<m。通常情況下,λ\lambda可以取爲80,128或更多。注意λ\lambda不能太小,因爲其通常作爲安全性參數。

  • 使用公鑰密碼學操作產生少量種子OT
  • 利用堆成密碼學操作(如PRG,哈希函數等)將這些種子OT協議擴展爲任意數量的OT協力。

IKN茫然傳輸協議

Yuval Ishai等人提出的IKN茫然傳輸擴展協議,其中λ\lambda爲安全參數

  1. 1次OTlmOT_l^m協議->1次OTmλOT_m^{\lambda}協議
  2. 1次OTmλOT_m^{\lambda}協議->λ\lambdaOTλ1OT_{\lambda}^1協議。

注:下面展示Extending OT with a Semi-Honest Receiver

Part1: OTlmOT_l^m->OTmλOT_m^{\lambda}

輸入信息:

  • Sender有m對輸入(xj,0xj,1)(x_{j,0},x_{j,1})xx的長度爲ll位,1jm1 \le j \le m
  • Receiver有m個輸入選擇比特r=(r1,r2,...,rm)\textbf{r}=(r_1, r2, ..., r_m)

系統參數:

  • 安全參數λ\lambda

隨機預言函數:

  • H:[m]×{0,1}λ{0,1}l\textbf{H}:[m]\times {\{0,1\}}^{\lambda}\rightarrow {\{0,1\}}^l

協議:

  1. S初始化一個隨機向量s{0,1}λ\textbf{s} \in {\{0,1\}}^{\lambda}
  2. R初始化一個m×λm\times \lambda的隨機矩陣T\textbf{T},其中ti\textbf{t}^i代表T\textbf{T}的第i列,ti\textbf{t}_i代表T\textbf{T}的第i行。
  3. 進行OTmλOT_m^{\lambda}協議,在該協議中發送者爲R而接收者爲S,分別記爲RSR_SSRS_R
    • RSR_Sλ\lambda對輸入(ti,rti)(\textbf{t}^i,\textbf{r}\oplus \textbf{t}^i)
    • SRS_Rλ\lambda個輸入選擇比特s\textbf{s}
    • SRS_R得到一個m×λm\times \lambda的矩陣Q\textbf{Q}
  4. S,即SRS_R,發送m對(yj,0,yj,1)(y_{j, 0}, y_{j, 1})給R,其中yj,0=xj,0H(j,qj)y_{j,0}=x_{j,0}\oplus H(j, \textbf{q}_j)yj,1=xj,1H(j,qjs)y_{j,1}=x_{j,1}\oplus H(j,\textbf{q}_j \oplus \textbf{s})1jm1\le j\le m
    qj=(sjrj)tj={tjrj=0sjtjrj=1\textbf{q}_j=(\textbf{s}_j \cdot \textbf{r}_j)\oplus \textbf{t}_j=\left\{ \begin{aligned} t_j && {r_j=0}\\ s_j\oplus t_j && {r_j=1}\\ \end{aligned} \right.
  5. R計算m個輸出zj=yj,rjH(j,tj)z_j=y_{j, r_j}\oplus H(j,\textbf{t}_j);其中,zj=xj,rjz_j=x_{j,r_j}1jm1\le j\le m

重點分析4,5步

  • rj=0r_j=0時,R收到yj,0=xj,0H(j,tj)y_{j,0}=x_{j,0}\oplus H(j, t_j)以及yj,1=xj,1H(j,tjs)y_{j,1}=x_{j,1}\oplus H(j, t_j\oplus s),而R只能解開xj,0x_{j,0}
  • rj=1r_j=1時,R收到yj,0=xj,0H(j,sjtj)y_{j,0}=x_{j,0}\oplus H(j, s_j\oplus t_j)以及yj,1=xj,1H(j,tj)y_{j,1}=x_{j,1}\oplus H(j, t_j),而R只能解開xj,1x_{j,1}

PART2 OTmλOT_m^{\lambda}->OTλλOT_{\lambda}^{\lambda}

思路:其實就是利用OTλλOT_{\lambda}^{\lambda}傳輸混淆元,後面與OT再無關係。後面通過隨機預言函數基於長度爲λ\lambda的混淆元生成長度爲m的混淆項。

輸入信息:

  • Sender有對λ\lambda輸入(xi,0xi,1)(x_{i,0},x_{i,1})xx的長度爲mm位,1iλ1 \le i \le \lambda
  • Receiver有λ\lambda個輸入選擇比特r=(r1,r2,...,rλ)\textbf{r}=(r_1, r2, ..., r_{\lambda})

系統參數:

  • 安全參數λ\lambda

隨機預言函數:

  • G:{0,1}λ{0,1}m\textbf{G}: {\{0,1\}}^{\lambda}\rightarrow {\{0,1\}}^m

協議:

  1. S初始化λ\lambda對隨機的長度爲k比特的(si,0,si,1)(s_{i,0},s_{i,1})
  2. 進行OTλλOT_{\lambda}^{\lambda}協議,在該協議中發送者爲S而接收者爲R,分別記爲SSS_SRRR_R
    • SSS_Sλ\lambda對輸入(si,0,si,1)(s_{i,0},s_{i,1})
    • SRS_Rλ\lambda個輸入選擇r\textbf{r}
    • SRS_R得到長度爲λ\lambda的向量s={si,ri}\textbf{s}=\{s_{i,r_i}\}1iλ1\le i \le \lambda
  3. S向R發送λ\lambda(yi,0,yi,1)(y_{i,0},y_{i,1}),其中yi,0=xi,bG(si,b)y_{i,0}=x_{i,b}\oplus \textbf{G}(s_{i,b})
  4. R通過步驟2中得到的向量s\textbf{s}進行還原,即zi=yi,riG(si,ri)z_i=y_{i,r_i}\oplus \textbf{G}(s_{i, r_i})

PART3 OTλλOT_{\lambda}^{\lambda}可以通過調用λ\lambdaOTλ1OT_{\lambda}^1協議實現

效率分析

  • R共調用m次H,2λ2\lambda次G,發送數據2mλ2m\lambda比特
  • S共調用2m次H,λ\lambda次G,發送數據2ml2ml比特
  • 當然協議中調用了一次OTλλOT_{\lambda}^{\lambda}協議,因爲與m和l無關爲常數。

綜上,整個流程歸約到OTλλOT_{\lambda}^{\lambda}(只有該部分與公鑰密碼學相關),即相當於λ\lambdaOTλ1OT_{\lambda}^1協議。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章