浙大暑期密碼學課程-筆記|兩方安全計算

浙大暑期密碼學課程-筆記|兩方安全計算

視頻地址:浙大暑期Crypto課程-MPC I(上)浙大暑期Crypto課程-MPC I(下)

參考:筆記分享|浙大暑期密碼學課程:兩方安全計算

摘要

多方安全計算(MPC)有着廣泛的應用,本次課程將由來自浙江大學的張秉晟老師帶來,主要講解兩方安全協議。

圖片

安全多方計算的定義千奇百怪,主要可分爲通俗定義狹義定義廣義定義

  • 狹義上來說安全多方計算使用混淆電路祕密分享的方式來實現
  • 廣義上來說可以使用全同態加密等手段來進行

圖片

安全多方計算可以分爲通用安全多方計算專用安全多方計算

  • 通用安全多方計算一般是將計算任務轉換爲布爾電路或代數電路,使用交互式協議來完成運算
  • 專用安全多方計算的效率更高,一般可以不依賴於電路的方式來解決,目前常用的協議主要有隱私求交集PSI協議

圖片
以下是衡量安全多方計算的三個維度,主要包括安全假設安全保障性能,其中安全假設一般注重同步網絡中的半誠實敵手,下圖介紹了三個維度中主要考量的要點。

  • 敵手模型:隱匿作惡()
  • 敵手門限大於1/2無意義!
  • 設置假設:RO()、CRS()

圖片

兩方安全計算的設計策略

接下來我們以計算一個與門電路爲例子,引入兩方安全計算,下圖是本協議的示意圖,主要問題是如何來定義該框架的安全性。

  • 問題:安全計算\(F(a,b)=ab\)
  • 方法:將\(a\)編碼(加密)後執行計算,此處應利用「同態」

圖片

圖片

一般的設計思路可以分爲自頂向下自底向上,如下圖所示,三個層次主要包括協議層,原語層和假設層

  • 協議是密碼學中最高層次的,如MPC協議,PSI協議
  • 原語是第二層次的,主要包括加密,數字簽名等算法
  • 假設是最低層次的,任何的協議和原語的安全性都依賴於一些假設,比如求解離散對數問題是困難的,求解大整數分解問題是困難的

圖片

圖片

一般設計協議是自頂向下(框架-》細節),教學採用自底向上,教學採用該方法可以易於讓學生接受。

圖片

Elgamal加密

我們在上次課中提到了基於判定性DH的密鑰交換協議和一次一密,我們知道一次一密是目前最安全的加密方案,判定性DH假設在密碼學中廣泛使用,下面三張圖是前一次課程的概要。

  • DH協議

圖片

  • 一次一密:敵手無法在多項式時間內區分隨機值和密文

圖片

圖片

下圖是Elgamal加密的示意圖,Elgamal是一種公鑰加密方案,主要由初始化,密鑰生成,加密和解密四個算法構成。

  • 下圖\(t\)應該爲\(r\)

圖片

圖片

根據上次課程所講,我們需要確定一個算法在什麼假設下能夠達到什麼樣的安全性,那麼同理,我們需要考慮Elgamal在何種假設下可以達到什麼樣的安全性。

圖片

接下來下圖定義了公鑰加密中IND-CPA的安全性博弈定義。

圖片

Elgamal是IND-CPA安全的:

  • 安全規約

圖片

Lifted Elgamal

在安全計算中,我們希望能夠在不知道私鑰的情況下,對密文進行運算,運算的結果解密後和明文的運算結果保持一致,我們記爲數據的延展性【同態?】。

圖片

同態加密解決了上述的問題,接下來我們簡要講解一下「Lifted Elgamal加密算法」

圖片

Lifted Elgamal加密是滿足加法同態性,並且只要消息空間範圍不大,我們可以直接通過計算離散對數,得到最後的明文消息

  • 計算離散對數\(DLog\),一般通過查表獲得
  • \(Dec(C_1*C_2)=Dec(g^{r_1+r_2},g^{m_1+m_2}.h^{r_1+r_2})=m_1+m_2\)

圖片

同態加密及在兩方安全計算的應用示例

假設下面是一個兩方計算模型,P1和P2分別輸入a和b,P1得到最後的結果\(f(a,b)\),如下圖所示。

圖片

我們可以採用單邊模擬(one-side simulation)的方式來證明該協議的安全性。

  • P1的安全證明:假設敵手控制P2,P1的計算結果在敵手看來是隨機的,不可區分的
  • P2的安全證明:假設敵手控制P1,P2的計算結果在敵手看來是隨機的,不可區分的

圖片

計算a AND b

我們仍然採用之前的例子來講解安全多方計算,即兩個參與方,分別計算a和b的乘積,即a AND b,具體如下圖所示。

圖片

下圖是本協議的交互方式,主要是基於Lift Elgamal進行構造。

圖片

本方案的正確性顯然能夠滿足,該方案的正確性主要基於Lift Elgamal的正確性,如下圖所示。

  • \(d=c^b=Enc(a,r)^b\)
  • \(M=Dec(d)=a+...+a=ab\)

圖片

下圖主要描述了P1的隱私,即P2只能看到隨機的密文,而得不到其他任何信息。

圖片下圖描述了P2的隱私,當然P2可能有部分信息泄漏(中間信息),P1可以從P2交互的信息中得到額外隱私信息,所以我們需要對其進行修復。

  • P1獲得的是\(c^b\),可能反推出\(b\)

圖片

下圖是修復後的協議,在該協議中,通過選取一個隨機值\(r'\),可以實現P2的隱私保護,即P1得不到P2的輸入相關信息

  • P1獲得的是\(c^b.Enc(0,r')\),這樣每次獲取的結果都是不一樣的,可抗重放攻擊,且根據「加法同態性」,解密後相當於(ab+0)
  • 問題:加密時用的隨機數不同,是否可以進行同態計算?
    • 答案:是
    • 以ElGamal爲例:
      • \(c1=Enc(m1,r1)=(g^{r1},m1.h^{r1}),c2=Enc(m2,r2)=(g^{r2},m2.h^{r2})\)
      • \(c1.c2=(g^{r1+r2},m1.m2.h^{r1+r2}),Dec(c1.c2)=m1.m2\)

圖片

下圖所示是僅有兩條消息【逐比特發送】構成的兩方計算協議。

圖片

計算<a,b>

接下來的例子,將一個比特擴展到多個比特,實現了標量的乘法操作,如以下兩張圖所示。

圖片

  • \(d=(\prod c_i^{b_i}.Enc(0,r')),Dec(d)=a_1.b_1+...+a_n.b_n=<a,b>\)

圖片

下圖是上述兩方計算協議中,P1和P2的隱私性解釋如下:

  • P1只能看到最終輸出的隨機加密密文
  • P2只能看到P1輸入的隨機加密密文

圖片

計算漢明重量

下面同時給出了第一個兩方協議的擴展和在漢明重量計算中的應用:

  • 漢明重量:非零符號的個數
  • 漢明距離:表示兩個(相同長度)字符串對應位置的不同字符的數量,我們以\(d(x,y)\)表示兩個字\(x,y\)之間的漢明距離,具體說,對兩個字符串進行異或(XOR)運算,並統計結果爲1的個數,那麼這個數就是漢明距離。

圖片

下圖是計算漢明重量的方法,協議和安全性,協議的安全性和之前所提的標量乘法的安全性相類似。

  • 字符a和b的漢明重量\(\delta(a,b)=\Sigma(b_{i}+(1-2b_{i})a_{i})=\Sigma(1-2b_{i})a_{i}+\Sigma b_{i}\)

圖片

圖片

圖片

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