回顧一下,最近幾次的科普我們介紹了三方複製秘密共享的秘密分享方式,其主要應用為作為隱私保護機器學習的隱私保護框架,將資料作為秘密,按機器學習對資料的操作進行安全多方計算。
機器學習需要對資料進行定點數的加法、乘法、矩陣運算等,需要三方複製秘密共享也有對應的這些操作。因此之後我們介紹了在和下三方複製秘密共享的乘法。在進行定點數運算時會帶來定點數精度擴大問題,於是我們接著介紹了兩個定點數截斷演算法Truncate I和Truncate II。秘密在三方複製秘密共享中有\( Z_2 \)和\( Z_{2^k} \)兩種表示方式,需要有互相轉換的方式,我們接著介紹了將在\( Z_{2^k} \)下的子秘密\( [x]^A \)轉換為在\( Z_2 \)下的子秘密\( [x]^B \)的 Bit Decomposition演算法。
有兩種子秘密的表示形式,那麼當需要兩個不同表示形式的秘密進行計算,如需要子秘密\( [x]^A \)和子秘密\( [y]^B \)進行計算\( [x]^A[y]^B=[xy]^A \)時又該怎麼辦呢?將\( [x]^A \)轉換為\( [x]^B \),或者將\( [y]^B \)轉換為\( [y]^A \)進行計算,是一種辦法。本次科普將介紹更高效的跨秘密表示形式的計算方法。在介紹實現誇秘密表示形式的計算方法之前,先介紹一種半誠實的三方OT和計算\( a[b]^B=[ab]^A \)的方法。
三方OT
與雙方 OT 相比,這個三方 OT 協議較為簡單,是雙方 OT 的一個變形,實際依舊只有兩方進行OT,而讓第三方作為 OT 協議的幫助者。假設參與者為Alice、Bob、Candy,Alice是秘密的傳送方,Bob是秘密的接收方,而Candy則是幫助者,則整個三方 OT 協議可以被表示成\( ((m_0,m_1),?,?)→ (⊥,m_c,⊥) \),符號「⊥」表示空,即未接收到資訊。
OT 協議的具體流程為:首先Alice和Candy共同產生兩個?位元的隨機數\( w_0,w_1 \),Alice和Candy都知道\( w_0,w_1 \)的具體值,接著Alice計算\( m_0\oplus w_0,m_1\oplus w_1 \),並且將\( m_0\oplus w_0,m_1\oplus w_1 \)傳送給Bob。Bob將自己的選擇位元?傳送給Candy,Candy根據選擇位元的值傳送\( w_c \)給Bob,Bob利用\( w_c \)即可成功解密出\( m_c \)。
完整執行完成後,Bob只獲得了\( m_c \),Candy只知道\( c,w_0,w_1 \)而不知道\( m_0,m_1 \),Alice只知道\( w_o,w_1,m_0,m_1 \),而不知道Bob的選擇,三者都只掌握了部分資訊。
跨表示形式的子秘密計算
接著介紹計算\( a[b]^B=[ab]^A \)的方式:最簡單的例子是?為\( Z_{2^k} \)上的明文,而?為單位元。秘密?以\( (b_1,b_2,b_3) \)的形式被三方分享,Alice掌握\( (b_1,b_2) \),Bob掌握 \( (b_2,b_3) \),Candy 掌握\( (b_3,b_1) \)。首先Alice(傳送者)在環\( Z_{2^k} \)上產生一個隨機數 ?,接著產生兩個訊息\( m_0=(0\oplus b_1\oplus b_2)a-r \)和\( m_1=(1\oplus b_1\oplus b_2)a-r \)。Bob(接收者)掌握有\( b_3 \),而Candy(幫助者)也掌握有\( b_3 \),因此三者可以進行上述的三方OT。Alice作為 OT 的傳送方,在這次 OT 中的輸入為\( m_i=(i\oplus b_1\oplus b_2)a-r,i\in \) { 0,1 } ;Bob作為接收方,在這次OT的輸入為\( b_3 \);Candy則作為幫助者。注意\( b_1,b_2,b_3 \)都是單位元值,因此Bob透過OT可以獲得\( m_{b_3}=(b_3\oplus b_1\oplus b_2)a-r=ba-r \)。注意我們目標是讓參與的三方獲得\( [ab]^A \)。
接著,Alice、Bob和Candy可以利用之前預先產生的\( (s_1,s_2,s_3) \)來計算\( [c]^A=[ab]^A=(s_1+r,ab-r+s_3,s_3) \)。注意Bob已經獲得了??−?,也掌握了\( s_2,s_3 \),因此Bob可以本地計算\( c_2=ab-r+s_3 \),同樣 Alice 也可本地直接計算\( c_1=s_1+r \),Candy本身就掌握有\( c_3=s_3 \)。
圖:三方OT計算\( a[b]^B \)
回憶一下三方複製秘密共享的規則,要求Alice掌握\( c_1 \),Bob掌握\( c_2,c_3 \),Candy掌握\( c_3,c_1 \)。因此為了符合複製秘密共享的規則,Bob計算\( c_2=ab-r+s_3 \)之後,需要再將\( c_2 \)傳送給Alice,同樣Alice在計算完\( s_1+r \)後需要將它傳送給Candy。或者也可以再進行一次三方OT,這次由 Bob來扮演傳送方,Bob在OT協議的輸入為\( m_i=(i\oplus b_2\oplus b_3)a-r+s_3 \), ?∈{0,1},接收方由Alice扮演,Alice輸入選擇位元\( b_1 \)來獲得訊息\( c_2=ab-r+s_3 \)。這樣就成功的完成了\( [c]^A=[ab]^A=(s_1+r,ab-r+s_3,s_3) \)的計算。
有了\( a[b]^B=[ab]^A \)的計算方式,我們就可以進一步計算\( [a]^A[b]^B=[ab]^A \)了。\( a[b]^B \)和\( [a]^A[b]^B \)的區別只是前者?以明文的形式,而後者是以密文的形式,思考一下複製秘鑰共享的性質,實際上\( [a]^A=a_1+a_2+a_3 \),因此\( [a]^A[b]^B=a_1[b]^B+(a_2+a_3)[b]^B \)。只需進行兩次\( a[b]^B \)形式的乘法,再進行加法,即可成功計算出\( [a]^A[b]^B \)。