https://zhuanlan.zhihu.com/p/399361005
Oblivious Transfer 總結
不經意傳輸(OT,oblivious transfer)是一個密碼學協議,目前被廣泛的應用於安全多方計算(SMPC,Secure Multi-Party Computation)。它由 Rabin 在 1981 年提出。本文梳理總結了1981年到2013年之間,不經意傳輸協議的發展脈絡,並總結了關鍵技術。
一、Rabin 1981 提出
它是爲了解決如下的問題而產生:Alice 擁有祕密 ,Bob 擁有祕密 。Alice 和 Bob 想要交換祕密,要求兩方都有可能得到祕密並且祕密擁有方不知道對方是否得到祕密。具體方案如下:
方案假設 兩方的祕密都是單比特!!
(1) 隨機選取兩個大素數。並計算得到 ,然後將發送給
(2)隨機選取一個數 ,要求 ,計算 ,然後將 和私鑰加密的 發送給 。
(3) 找到一個 使得 ,發送 給
(4) 計算 ,此時有 。
(5) 根據下面公式計算
接着計算 然後將 發送給
這是 Alice 獲得 Bob 的祕密 的過程,可以得出 Alice 得到 的概率爲。Bob獲得 的過程依然是上述步驟,只不過是將 Alice 和 Bob 角色互換。
Rabin 提出的方案兩方都無法獲得對方的祕密的概率是,可以成功交換的概率是 。可見該方案還不是很完善,不能保證兩方每次都能在滿足要求的情況下獲得祕密,還不具有應用意義。所以有了 1985 年 Even 等人在此[1]基礎上提出的新的 1-out-2 OT 協議[2]。
1985 1-out-of-2 OT
Even 等人的提出新的使用公鑰密碼體制的 1-out-of-2 OT 協議,給出了 OT 公理化的定義和實現。相比於 Rabin 等人提出的一方只有的概率獲得祕密,Even等人將其進行了改進,即:Alice 擁有兩個祕密 ,而 Bob 想要知道其中一個。在 OT 協議執行完成之後,Bob 獲得了其中一個祕密,但是不知道另外一條祕密 ,並且 Alice 也不知道 Bob 選擇的是還是。如下圖:
具體過程爲:
(1)在公鑰密碼中隨機選擇一組密鑰
同時隨機選擇加密算32法明文空間R的兩個明文
最後將和發送給
(2)隨機選擇
然後在與(1)同樣的明文空間選擇;
計算,並且向發送
(3)計算,其中
隨機選擇變量
進而將三元組發送給
(4)根據自己選擇以及三元組最後一項來選擇第一項或者第二項;
相同選第一項,不同選第二項,與自己進行 運算得到祕密
是模運算加法,是模運算減法。模運算的就是明文空間大小
可以清楚的看到,1-out-of-2 OT 執行結束之後,Bob獲得了一個祕密且不知到另外一條祕密,而 Alice 則不知到 Bob 拿到了哪一條祕密。1-out-of-2 OT 是一個具有實際應用意義的不經意傳輸協議,也是目前較爲常用的一種。
1986 1-out-of-n OT
之後在1986年,Brassard[3] 等人繼續將OT協議改進到了 1-out-of-n OT 版本。與上述1-out-of-2 OT中的問題基本相同,唯一變化的就是從 2 條祕密傳遞 1 條給 Bob 變成了 從 n 條祕密傳遞給 Bob .
初始協議爲:n條祕密爲:,且每個消息長爲 bits,設 表示第 i 個祕密的第 j 位,可見。
(1)首先 Alice 隨機選擇大素數 ,計算,並計算模 m 的二次非剩餘 y,然後對於每一個比特位 選擇一個整數 並計算 (顯然,當且僅當 時 時二次剩餘)然後將 發送給 Bob。
(2)Bob選擇隨機數 r 以及 隨機的比特位 ,計算 ,其中當且僅當 時 ,q 是 m 的二次剩餘。
如此一來,只需要驗證 (2) 中得到的 q 是否爲 m 的二次剩餘即可,若是則 反之則不等。
每一輪上述過程 Bob 可以得某個消息的一個比特位,重複 次,即可得到祕密 。
雖然上述方法可以完成目標,但是仍存在三個缺點:
- Bob 可能詢問的是不同祕密的比特位。
- Bob 可能得到兩個消息之間的異或。
- Alice 可能欺騙 Bob,發送的 y 可能是一個 二次剩餘,也就有可能指出 Bob 的選擇。
爲克服以上缺點,改進上述算法如下:
(1) Bob 隨機選擇擾動函數 ,隨機整數和隨機比特位 ,使得 ,其中 i 表示 Bob 想要獲得第 i 條祕密。並計算 將 t 個 傳送給 Alice,同時需要向 Alice 證明所有的 可用性(我的理解是以此來保證請求的是同一條消息的不同比特位,也就是解決缺點 1和2)。
(2) Bob 傳送 k 給 Alice ().
(3) Alice 對於每一個都給出模 m 下的二次特徵值,發送給Bob。
(4) Bob根據二次特徵值來推測出相應比特的數據(特徵值爲零則與 α 不同,不爲零則相同)。
這便是最開始的 1-out-of-n OT 協議。至此最基本的OT協議包括 2 取 1,n 取 1 都已經有了。接下來就是關於OT擴展的內容了。
Beaver 96
但是在1988年,Impagliazzo和Rudich 就已經證明了不能使用黑盒的構造方法從一個單項函數來實現 OT,也就是說,雖然OT協議的設計已經很成熟,但是應用中的運算消耗仍然很高。而公鑰密鑰的出現有助於解決現有的OT協議執行次數過高的問題,不過因爲公鑰密鑰需要低效率的冪指數運算,不利於直接加密大數據,因此將公鑰的私鑰兩種方法結合,對現有OT進行擴展,提高OT協議的效率。1996年Beaver等人就使用這種方法,提出了一種OT擴展技巧,通過僞隨機裝置來對等大量OT執行的效果。僞隨機依靠一個單向函數(一個黑箱)來了實現。
下圖是一個基本的1-out-of-2 OT, 設預計算階段的 R-OT 協議使發送方 Alice 獲得兩個隨機信息, 接收方Bob獲得, 設在線階段Alice的需要發送的信息爲, Bob 的選擇比特爲 . Beaver 去隨機化的主要思想是 Alice 使用R-OT的兩個隨機信息 作爲一次一密(OTP)來加密需要他發送的信息 並將盲化結果 發給 Bob. 如果 , Alice發送的兩個信息是 , , Bob本地計算即可得到選擇比特 c 對應的比特祕密 ,但是無法獲得 。但是如果 ,按照上述步驟我們會發現 Bob 將無法獲得正確的信息,除非 Alice 交換 來加密 。如下圖所示:
爲解決上述 的情況,容易想到的解決方法是讓 Bob 告知 Alice 是否有 ,具體如下圖所示,其中是否等於0,表示爲
上述過程就是一個在基本的 1-out-of-2 OT上使用隨機數來實現的過程,即 R-OT 。但是其每執行以此 OT 都需要進行裏現階段的隨機數生成,這個開銷非常昂貴。反之其在線階段只需要異或運算,反而比較高效。並且以此離線階段的R-OT以此只能產生一個OT實例,這也給其應用帶來困難。而Beaver等人在1996年,使用了混合加密的方式對R-OT進行了改進,使得其離線階段效率得到了提高,並且例證了OT擴展方案的可行性。
要講清Beaver等人的 OT 擴展,首先了解一下混合加密。公鑰密鑰的出現有助於解決現有的OT協議執行次數過高的問題,不過因爲公鑰密鑰需要低效率的冪指數運算,不利於直接加密大數據,因此將公鑰的私鑰兩種方法結合,使用昂貴的公鑰加密短密鑰,然後使用相對便宜的私鑰來加密長信息。以此實現對現有OT進行擴展,提高OT協議的效率。應用如下:
如上圖所示,使用姚氏混淆電路來完成整個過程,其中左側爲 Alice 輸入 並得到所有的消息對,即就是 n 個R-OT離線階段的 ,右側爲 Bob 輸入 並得到比特串 r 以及對應的消息,即就是R-OT離線階段的。其中輸入的長度爲,輸出的結果個數爲 n ,且 。也就是說在此擴展中只需要 個R-OT,可以得到 n 個 OT 實例,即就是使用 實現 ,同樣有 。
然而由於姚氏混淆電路的原因導致其不夠實用,但是他例證的說明了 OT-extension 是可行的。也爲後面 OT 的發展做出重要貢獻。
IKNP[03]
在Beaver等人之後,IKNP[03] 協議則逐步讓 OT 協議走上實用的道路。IKNP[03]協議和Beaver等人解決的問題實際上是相同的,都是爲了讓 Alice 獲得消息對 和讓 Bob 後的對應的 以便在線階段 OT 的使用。與不太實用的Beaver96使用 Yao's GC 不同的是,IKNP[03] 使用 OT 來實現,具體如下:
首先,Bob 隨機構造長度爲 比特串 ,然後將其看爲一個 的列向量,並對每個比特位進行按行擴展爲 位 (重複編碼擴展),完成後進行祕密分享,如圖:
接着 Alice 也隨機選取長度爲 的比特串 ,然後雙方共同執行base-OT 其中 Bob 爲發送方,將兩個祕密份額矩陣 的第 列作爲輸入的兩個消息,Alice 作爲接收方,以 爲輸入來選擇兩個祕密份額矩陣第 列的某一個來構成自己的矩陣 的第 列,結果如下:
當 時, 兩個祕密份額矩陣 對應位置的行向量相等,所以Alice所得矩陣 的行向量 與 Bob 的任意一個份額矩陣該位置對應的行向量 相同;當 時, Alice所得矩陣 的行向量 等於 Bob 的份額矩陣 該位置對應的行向量 與 的異或,即:
其中 是份額矩陣 的行向量,上述過程可以進一步抽象爲:
上述過程後 Alice 獲得了矩陣 ,加上自己擁有的選擇串 ,則 Alice 就有了消息對 。Bob 則擁有了相應的 (選擇比特), (某個消息),如下圖所示:
運用上述公式進一步改寫爲:
由此就已經可以明顯的看出 Alice 擁有了隨機的消息對,並且 Bob 擁有選擇比特位和 Alice 消息對中的其中一個消息。這已是解決一開始問題(兩方獲得用於在線階段的消息隊等)。效率方面,擴展矩陣是 的矩陣,其中,而base-OT階段是按照列來進行,所以會進行 次 base-OT,然而傳輸了 n-bits 的內容,並且不需要 Yao's GC。
但是仔細觀察可以看到,上述的消息對之間重複的使用了同一個比特串 ,這使得生成的消息之間存在相關性,所以必須解決這種下相關性。本協議採用的方法是:使用一個隨機預言機(Random Oracle)來解決相關性,用哈希函數 來實現隨機預言機(Random Oracle) 。對於消息 和比特串 , 使得 是獨立僞隨機的。從而解決上述問題!整個INKP[03]協議如下圖所示:
最後整合爲可用的結果爲:
此協議是面對半誠實模型的。對於 Bob 惡意的情況下,該模型是危險的!
若 Bob 在生成的某一個份額矩陣中修改 對應行向量的某一個比特位 (如 中黑色方塊由原來的 0 變爲 1) ,並且同時 Alice 對應的選擇向量 對應的比特位 ( Alice 得到的矩陣中橘色方塊位置),那麼就會造成 Alice 得到的向量與 Bob 具有的行向量不同 (灰色塊所示的向量)。在後續協議執行過程中,例如哈希等,只要Bob檢測到 Alice 的結果與自己的不同,就可以推斷出該位 ,相同則推斷出 。如此一來,Bob得到 Alice 選擇串 的一個比特值。因此 IKNP[03] 僅僅是半誠實安全。
KK[13]
在 Kolesnikov,Kumaresan等人 2013 年發表的文章中,對 IKNP[03] 協議在 GMW 中長度擴展步驟的通信開銷遠高於核心歸約步驟的通信開銷問題進行了優化。Kolesnikov 等人發現,IKNP[03] 在base-OT 階段,對 Bob 的選擇比特串 進行擴展的時,使用的是重複編碼擴展方法,這是最簡單的編碼方法,其編碼效率僅爲 是擴展後的向量長度。因此 Kolesnikov 等人從此着手,使用更加複雜的編碼方式在優化 IKNP[03] 協議。
用 表示對 使用某種編碼方法,用編碼的視角看待 IKNP[03] 協議,首先是 Bob 對選擇向量 擴展,擴展後的矩陣如下:
然後再運用祕密分享得到:(其中 表示 其中一個份額矩陣的行向量)
通過祕密分享矩陣得到 Alice 的向量組 ,然後每一個向量分別異或 ,得到 :
使用 ,改寫 矩陣爲:
可以看到最後 Alice 獲得結果進一步變爲:,然後再用隨機預言機來破壞其關聯性:Bob的值也就變爲 , , ...... , 。
從編碼的方式瞭解了 IKNP[03] 之後就可以使用其他的編碼方式對其推廣,按照這種方式推廣的結果相比於 IKNP[03] 也就是 Alice 獲得的兩個消息結果中的編碼部分改變而已,例如用 表示一個編碼結果 ( 表示編碼結果的第 位),則 Alice 獲得的兩個消息變爲 。而 Bob 的結果並不變。所以改進後協議的提升也都來自編碼效率的改變。
ALSZ[13]
ALSZ[13] 在 IKNP[03] 基礎上多通信複雜度和計算複雜度都進行了優化,首先是算法方面的計算複雜度,Asharov 經過實驗發現 IKNP[03] 協議中大約 42% 的計算耗費在矩陣轉置上,於是對於矩陣給的轉置進行優化,如下圖所示:
先對最小的 2×2 子矩陣進行轉置,只需要消耗很少的時間,進而再將該 2×2 矩陣看爲整體再尋找下一個 “2×2” 子矩陣。並且因爲轉置之間不衝突,再同一個層級上可以並行。如此一來將 m×n 的矩陣轉置的計算消耗從 降低爲 。其中 r 是CPU 寄存器大小。此外因爲 Bob 擁有的 組成的矩陣列之間沒有相關性,所以可以在 OT 中使用並行算法加速。
在通信複雜度方面,Asharov 等人使用盲化因子 來初始化 Bob 持有的矩陣而不是隨機生成,這樣每次只需要向 Alice 傳輸一個消息就可,具體如下。
原本的協議是:(其中 PRG() 是僞隨機序列生成器)
優化後:
在 IKNP[03] 中有: ,以此來驗證一下上述優化的正確性,當 時,易得;當 時,易得 ,這符合 IKNP[03] 中的結論。在通信中,原本的方案需要發送消息對 ,但是優化後的方案對於一個消息對,只需要發送一個消息 就可以了,可見該優化方法理論上可以降低此過程一半通信消耗。
Asharov 等人還對應用在 Yao'S GC 和 GMW 上的 OT-Extension 做出了相應的優化。
在 Yao'S GC 上,對於最後一部分的 OT ,使用了Correlated-OT 來降低帶寬,在 C-OT 中,Alice 得到的消息對 是相關的,例如 。具體如圖所示:
是一個隨機比特, ,其中 Δ 是一個全局隨機量,r 是Bob 的選擇比特,在之前敘述的通用 OT-Extension 中,Alice 接下來需要計算併發送兩個消息 。但是在應用了上述C-OT 的 Yao'S GC 上只需要Alice 設定 ,計算併發送一個消息 即可。而 Bob 根據自己的 r 值來得到自己的輸出,當 ,得到 ;當,得到 。很容易證明,不同的 r 值會讓 Bob 得到 ,所以此方法可行,並且因爲只需要傳輸一個消息,則降低了一半的帶寬需求。
在 GMW 上則使用了Random-OT 來優化,如圖:
其中 Alice 獲得的 都是隨機的,之後 Alice 設定 , ,而後 Bob 只需要計算 ,因爲 ,顯然當 ,得到 ;當,得到 。如此一來不需要進行最後一步的通信就可以得到消息。
最後,感謝陳小軍老師的幫助、建議、指導和修改!感謝董業師兄
的幫助、建議和修改,李開運師兄
的幫助和建議!
此外上述圖示中 Beaver96 和 IKNP03 部分圖例是根據 Mike Rosulek 報告 中的圖示重新繪製得來,特此聲明!
參考文獻
[1] Rabin M O . How to Exchange Secrets by Oblivious Transfer[J]. Technical Memo TR-81, 1981.
[2] Even S . A randomized protocol for signing contracts[J]. ACM SIGACT News, 1983.
[3] Brassard G , C Crépeau, Robert J M . All-or Nothing Disclosure of Secrets. Advances in Cryptology — CRYPTO’ 86, 1986.
[4] Impagliazzo R , Rudich S . Limits on the provable consequences of one-way permutations (invited talk). Springer New York, 1990.
[5] Beaver D . Correlated Pseudorandomness and the Complexity of Private Computations[C]// Twenty-eighth Acm Symposium on the Theory of Computing. ACM, 1996.
[6] Ishai Y , Kilian J , Nissim K , et al. Extending Oblivious Transfers Efficiently[C]// 23rd Annual International Cryptology Conference. CiteSeer, 2003.
[7] Kolesnikov V , Kumaresan R . Improved OT Extension for Transferring Short Secrets[M]. Springer Berlin Heidelberg, 2013.
[8] Asharov G , Lindell Y , Schneider T , et al. More efficient oblivious transfer and extensions for faster secure computation[C]// Proceedings of the 2013 ACM SIGSAC conference on Computer & communications security. ACM, 2013.
[9] Yao, Andrew. (1986). How to generate and exchange secrets. Annual Symposium on Foundations of Computer Science (Proceedings). 10. 162 - 167. 10.1109/SFCS.1986.25.
[10] Goldreich, Oded & Micali, S. & Wigderson, Avi. (1987). How to play ANY mental game. 218-229. 10.1145/28395.28420.
[11] V. Kolesnikov and T. Schneider. Improved garbled circuit: Free XOR gates and applications. In International Colloquium on Automata, Languages and Programming (ICALP’08), volume 5126 of LNCS, pages 486–498. Springer, 2008.
[12] Mike Rosulek. http://web.engr.oregonstate.edu