【隱私計算筆談】MPC系列專題(九):OT協議(二)

PlatON技術團隊發表於2023-01-10

OT擴充套件協議

首先假設Alice是傳送方,Bob是接收方,Bob的?位元長的選擇位元串為?,\( ?_? \)表示選擇位元串?的第?位元。Bob產生兩個? × ?的隨機矩陣A和B:
 

圖片
 

用\( ?^?,?^? \)分別表示矩陣?和?的第?列向量,用\( ?_?,?_? \)分別表示矩陣?和?的第?行向量。矩陣?和?滿足\( ?_?⊕?_?=?_?.1^k \),即若\( ?_?= 1 \),則\( ?_?⊕?_?=1^k \);若\( ?_?=0 \),則\( ?_? ⊕?_?=0^k \),其中\( 1^k \)表示?位元長的1組成的位元串,\( 0^k \)表示?位元長的0組成的位元串。
 

傳送方Alice隨機產生一個?位元長的串?。Alice和Bob之間利用2選1不經意傳輸協議,根據位元串?的各個位元\( ?_1,…,?_? \)的值,Bob向Alice傳送不同的值。若\( ?_?=0 \),則Bob傳送\( ?^? \);若\( ?_?=1 \),則Bob傳送\( ?^? \)。
 

當Bob傳送完後,Alice獲得了一個?×?的矩陣,記為?, 

圖片

記\( ?^? \)表示矩陣?的第?列向量,\( ?_? \)表示矩陣?的第?列向量。那麼有結論:\( ?_?=?_?\oplus[?_?.?] \),即若\( ?_?=0 \),則\( ?_?=?_?\oplus[?_?.?]=?_? \);若\( ?_?=1 \),則\( ?_?=?_?\oplus[?_?.?]=?_?\oplus? \)。
 

假設有一個雜湊函式?,則Bob可以計算\( ?(?_?) \)和\( ?(?_?\oplus?) \),對於每一個\( ?_? \),都等於\( ?_? \)或者\( ?_?\oplus? \)。Alice 分別使用\( ?(?_?) \)和\( ?(?_?\oplus?) \)來加密秘密\( ?_0 \)和\( ?_1 \),得到\( ?_0=?(?_?)\oplus?_0,?_1= ?(?_?\oplus?)\oplus?_1 \)。
 

加密之後Alice將\( ?_0 \)和\( ?_1 \)傳送給Bob。由於\( ?_? \)的值為\( ?_? \)或\( ?_?\oplus? \),而\( ?_?\oplus? \)的值為\( ?_?\oplus? \)或\( ?_? \),根據\( ?_? \)的值而定,若\( ?_? \)為\( ?_? \)則\( ?_?\oplus? \)為\( ?_?\oplus? \);若\( ?_? \)為\( ?_?\oplus? \)則\( ?_?\oplus? \)為\( ?_? \),二者中必有一個是\( ?_? \)。
 

Bob只掌握\( ?_? \)而不知道\( ?_? \),Bob又掌握著\( ?_? \),因此對於Alice傳送過來的\( ?(?_?)\oplus?_0 \)和\( ?(?_?\oplus?)\oplus?_1 \),Bob可以本地計算\( ?(?_?) \)來解密\( ?(?_?)\oplus?_0 \)或者\( ?(?_?\oplus?)\oplus?_1 \)中的一個,具體解密哪個取決於\( ?_? \)的值。矩陣C的每一列都可用來進行一次OT協議,因此可進行?次?位元的OT協議。 
 

假設Bob的選擇位元串為?=101,Bob產生兩個3×3的隨機矩陣A和B,且矩陣A和矩陣B符合\( ?_?\oplus?_?=?_?.1^k \): 
 

圖片

 
可以看到,\( ?_1\oplus?_1= 1.1^k =[1 1 1]^T,?_2\oplus?_2=0.1^k=[0 0 0]^T,?_3\oplus?_3= 1.1^k =[1 1 1]^T \)。
 

圖片

 
結合具體例子來看:傳送方Alice隨機產生一個?=3位元長的選擇位元串?=[0 0 1],Alice和Bob間利用二選一的不經意傳輸協議,如之前介紹過的Naor-Pinkas協議,接收根據位元串?的各個位元\( ?_1,?_2,?_3 \)的值,Bob向 Alice傳送矩陣A和B的不同列。若\( ?_?=0 \),則Bob傳送\( ?^? \);若\( ?_?=1 \),則Bob傳送\( ?^? \) 。則Alice將收到\( ?^1={[1 0 0]}^T, ?^2={[1 0 0]}^T,?^3={[1 1 1]}^T \)。
 

圖片

 
將最後Alice收到的矩陣記為?: 
 

圖片

 
可以看到矩陣?滿足\( ?_?=?_?\oplus[?_?.?] \),如\( ?_1=?_1\oplus[?_?.?]=?_1\oplus[1.?]= [1 1 0]\oplus[0 0 1]=[1 1 1],?_2= ?_2\oplus[?_2.?]=?_2\oplus[0.?]=?_2=[0 0 1],?_3=?_3\oplus[?_3.?]=?_3 \oplus ? = [0 1 0]\oplus [0 0 1]=[0 1 1] \)。可以看到矩陣?的各行都滿足關係式\( ?_?=?_? \oplus [?_?.?] \)。
 

圖片

 
Alice使用矩陣雜湊函式H和矩陣C對秘密進行加密,Alice使用\( ?(?_1) \)來加密Alice的秘密\( ?_0 \),使用\( ?(?_1 \oplus ?) \)來加密秘密\( ?_1 \),得到加密後的密文\( ?_0=?(?_1) \oplus ?_0,?_1=?(?_1  \oplus ?) \oplus ?_1 \),之後Alice將\( ?_0 \)和\( ?_1 \)傳送給Bob。
 

圖片

 
注意此時\( ?(?_1)= ?([1 1 1])=?(?_1 \oplus ?),?(?_1 \oplus ?) = ?(?_1 \oplus ? \oplus ?)=?(?_1) \),Bob是不知道?的,Bob只知道\( ?_1 \) ,當\( ?_1=1 \)時,由於\( ?(?_1 \oplus ?)=?(?_1) \),Bob又掌握\( ?_1 \),因此Bob可以直接計算?(?),由此透過計算\( ?(?_1 \oplus ?) \oplus ?_1 \oplus ?(?_1)=?_1 \),可以解密出\( ?_1 \)。而Bob不知道?,因此Bob無法計算\( ?(?_1 \oplus ?) \),也就無法計算出\( ?_2 \)。
 
Alice接著又使用\( ?(?_2) \)來加密秘密\( ?_0′ \),使用\( ?(?_2 \oplus ?) \)來加密秘密\( ?_1′ \),得到加密後的密文\( ?_2=?(?_2) \oplus ?_0′, ?_3= ?(?_2 \oplus ?) \oplus ?_1′ \),之後Alice將\( ?_2 \)和\( ?_3 \)傳送給Bob。
 
因為\( ?_2=0 \),因此\( ?(?_2)=?([0 0 1])=?(?_2 \oplus ?) \)
\( ?(?_2 \oplus ?)=?(?_2 \oplus ? \oplus ?)=?(?_2) \),Bob又掌握\( ?_2 \),因此 Bob可以直接計算\( ?(?_2) \),由此透過計算\( ?(?_2) \oplus ?_0′ \oplus ?(?_2)=?_0′ \),可以解密出\( ?_0 \)。而Bob不知道?,因此 Bob無法計算\( ?(?_2 \oplus ?) \),也就無法計算出\( ?_2 \)。Bob能解密哪個取決於Bob的選擇位元串?的各位元值,正如上面的例子,\( ?_0=1 \)時Bob可解密\( ?_1 \);\( ?_1=0 \)時Bob可解密\( ?_0′ \),由此實現不經意傳輸。
 

圖片

相關文章