在混淆電路介紹(一)中,我們介紹了混淆電路(garbled circuits,gc)背後依賴的密碼學思想:不經意傳輸(oblivious transfer,ot)。在混淆電路介紹(二)中,我們成功地將乙個比較大小的函式轉化成了乙個邏輯電路。在這篇文章中,我們將基於以上兩篇文章,詳細介紹 gc 協議的原理。
首先我們回顧一下定義。混淆電路是一種密碼學協議。遵照這個協議,兩個 party 能在互相不知曉對方資料的情況下計算某一能被邏輯電路表示的函式。以著名的 yao's millionaires' problem 為例,兩個富翁 alex 和 bob 想在不知道對方財富值的情況下計算誰的財富值更高。比如 alex 的財富值是 15,bob 的財富值是 11。通過 gc,alex 和 bob 都知道了 alex 更富有,但是 alex 和 bob 都不知道對方的財富值。
在混淆電路介紹(二)中,我們已將比大小的函式轉化為邏輯電路。電路由
混淆電路協議分為三個部分。
step 1: alice 生成混淆電路
首先,alice 基於上述電路生成對應的混淆電路。生成過程主要分四步。
第一步,alice 對電路中的每一線路(wire)進行標註。如下圖所示,alice 一共標註了七條線路,包括模組的輸入輸出
這些生成的標註會在 step 2 有選擇性地發給 bob,但 bob 並不知道
第二步,alice 對電路中的每乙個邏輯門的 truth table 用
第三步,alice 對每乙個替換後的 truth table 的輸出進行兩次對稱密匙加密(即加密和解密的密匙相同),加密的密匙是 truth table 對應行的兩個輸入。比如 truth table 的第一行是
第四步,alice 對第三步加密過後的 truth table 的行打亂得到 garbled table。所以 garbled table 的內容和行號就無關了。混淆電路的混淆二字便**於這次打亂。
step 2: alice 和 bob 通訊
第一步,alice 將她的輸入對應的字串傳送給 bob。比如
由於 bob 不知道
第二步,bob 通過不經意傳輸(ot)協議從 alice 獲得他的輸入對應的字串。不經意傳輸保證了 bob 在
所以 alice 也就無從知曉 bob 的
了。最後,alice 將所有邏輯門的 garbled table 都發給 bob。在這個例子中,一共有四個 garbled table。
step 3: bob evaluate 生成的混淆電路
alice 和 bob 通訊完成之後,bob 便開始沿著電路進行解密。
因為 bob 擁有所有輸入的標籤和所有 garbled table,他可以逐一對每個邏輯門的輸出進行解密。在這個例子中,假設 bob 擁有的輸入標籤為
他可以對於電路圖左上方的 xor,用
解密獲得
對於電路圖左下方的 xor,用
解密獲得
對於電路圖中間的 and,用
解密獲得
對於電路圖右側的 xor,用
解密 值得注意的是,由於 garbled table 每一行的密匙都不同,所以 bob 只能解密其中一行。而且 bob 並不知道解密出來的
對應的邏輯值,也就無從獲得更多資訊了。而 alice 全程不參與 bob 的解密過程,所以也如法獲得更多資訊。
step 4: 共享結果
最後 alice 和 bob 共享結果。alice 分享
或者 bob 分享
,雙方就能獲得電路輸出的邏輯值了。
通過乙個特定的電路例子,本文演繹了混淆電路(garbled circuits,gc)原理。這個實現可以運用到任意可以用邏輯門描述的電路。
混淆解密 安全多方計算之混淆電路
它的核心技術是將兩方參與的安全計算函式編譯成布林電路的形式,並將真值表加密打亂,從而實現電路的正常輸出而又不洩露參與計算的雙方私有資訊。由於任何安全計算函式都可轉換成對應布林電路的形式,相較其他的安全計算方法,具有較高的通用性,因此引起了業界較高的關注度。文末驚喜 技術社群全面公升級!技術交流不迷路...
混淆解密 安全多方計算之混淆電路
它的核心技術是將兩方參與的安全計算函式編譯成布林電路的形式,並將真值表加密打亂,從而實現電路的正常輸出而又不洩露參與計算的雙方私有資訊。由於任何安全計算函式都可轉換成對應布林電路的形式,相較其他的安全計算方法,具有較高的通用性,因此引起了業界較高的關注度。混淆電路發展 姚氏電路是基於半誠實模型 se...
混淆解密 混淆電路介紹(一)不經意傳輸
在近期的文章中,王益介紹了多方安全計算 multiparty computation,mpc 的一種常見的實現形式 分享秘密 secret sharing 今天我們來介紹另外一種常見的實現 混淆電路 garbled circuits,gc gc 是一種密碼學協議。遵照這個協議,兩個 party 能在...