三方複製秘密分享
複製秘密共享(three-party replicated secret sharing),是另一種秘密共享技術。本次科普要介紹的是Araki等人的半誠實的三方複製秘密共享協議,用於在三方環境下的安全多方計算和秘密共享,可以容忍最多一個腐化使用者,其相比於Shamir(2, 3)來說有非常小的通訊量和計算量。
首先介紹在布林電路下的情景,假設參與者分別為 Alice、Bob和Candy,三者的序號分別記為1、2、3。在複製秘密共享中,一個單位元的秘密?會被生成為三個子秘密\( ?_1,?_2,?_3 \),且\( ?=?_1⊕?_2⊕?_3 \)。具體方式為:秘密分享者首先生成三個隨機數\( ?_1,?_2,?_3 \),並且滿足\( ?_1⊕?_2⊕?_3=0 \)。讓子秘密\( ?_1=?_3⊕?,?_2=?_1⊕? \),子秘密\( ?_3=?_2⊕? \)。則\( ?_1⊕?_2⊕?_3=?_1⊕?_2⊕?_3⊕?⊕?⊕?=? \)。讓Alice、Bob和Candy分別持有\( (?_1,?_1), (?_2,?_2), (?_3,?_3) \),將這種秘密分享方式簡記為[?]。滿足限制條件\( ?_1⊕?_2⊕?_3=0 \)下生成隨機數\( ?_1,?_2,?_3 \)的具體方式之後再進行介紹。
在這種情況下,任意兩個參與者合謀就可以恢復出秘密?,如Bob和Candy合謀,則Candy可以利用自己手中的\( ?_3 \)和Bob手中的\( ?_2 \),計算\( ?_3⊕?_2=?_2⊕?⊕?_2=? \)。
在安全多方計算中,只要實現了多方加法和多方乘法,即可實現完備。因此接下來開始介紹該三方複製秘密共享協議實現多方加法和多方乘法的方式。此時Alice已經持有了\( (?_1,?_1), (?_1,?_1) \),Bob持有了\( (?_2,?_2), (?_2,?_2) \), Candy持有了\( (?_3,?_3), (?_3,?_3) \)。
首先是XOR(加法)的實現方式:要計算 [?]=[?+?],Alice、Bob和Candy只需要分別本地計算\( ?_?+?_?,?∈{ 1,2,3} \)即可。以Alice為例,因為\( ?_1=?_3⊕?,?_1=?_3⊕? \),則\( ?_1⊕?_1=?_3⊕?⊕?_3⊕?=(?_3⊕?_3)⊕(?⊕?)=(?_3⊕?_3)⊕? \),若將\( ?_1⊕?_1 \)記為\( ?_1 \),\( ?_2⊕?_2 \)記為\( ?_2 \),\( ?_3⊕?_3 \)記為\( ?_3 \),則Alice、Bob和Candy在分別完成本地計算\( ?_?+?_?,?∈{ 1,2,3} \)後,Alice可以得到\( ?_1=?_3⊕? \),Bob可以得到\( ?_2=?_1⊕? \),Candy可以得到\( ?_3=?_2⊕? \);且\( ?_1⊕?_2⊕?_3=?_1⊕?_2⊕?_3⊕?_1⊕?_2⊕?_3=0⊕0=0 \),由此滿足之前的秘密分享定義,\( ?_1⊕?_2⊕?_3=?,?_1⊕?_2⊕?_3=0 \)。
接著是AND(乘法)的實現方式:要實現乘法首先需要另外引入三個隨機數,記為?, ?, ?,且滿足?⊕?⊕?=0,Alice掌握?,Bob掌握?,Candy掌握?。
Alice計算?1=?1?1⊕?1?1⊕?,並把\( ?_1 \)傳送給Bob;Bob計算?2=?2?2⊕?2?2⊕?,並把\( ?_2 \)傳送給Candy;Candy 計算?3=?3?3⊕?3?3⊕?,並把\( ?_3 \)傳送給Alice。
接著Alice本地計算\( ?_1=?_1⊕?_3 \),\( ?_1=?_1 \);Bob本地計算\( ?_2=?_2⊕?_1,?_2=?_2 \);Candy本地計算\( ?_3=?_3⊕?_2,?_3=?_3 \)。
正確性證明:
又因為
因此:
$$ ?_1?_1⊕?_2?_2⊕?_3?_3=?_1?_1⊕?_2?_2⊕?_3?_3⊕?(?_1⊕?_2⊕?_3)⊕?(?_1⊕?_2⊕?_3)⊕??=?_1?_1⊕?_2?_2⊕?_3?_3⊕?? $$
把\( ?_1?_1⊕?_2?_2⊕?_3?_3 \)的結果代入到\( ?_1⊕?_2⊕?_3 \)可得:
而\( ?_1⊕?_2⊕?_3=?_1⊕?_3⊕?_2⊕?_1⊕?_3⊕?_2= 0 \),即:
$$ ?_1=?_3⊕?? , ?_2=?_1⊕??, ?_3=?_2⊕?? $$
其中\( ?_1⊕?_2⊕?_3=??,?_1⊕?_2⊕?_3=0 \),由此得證乘法的正確性。
滿足限制條件\( ?_1⊕?_2⊕?_3=0 \)下生成隨機數\( ?_1,?_2,?_3 \)的方式為:Alice、Bob、Candy分別生成隨機數?1,?2,?3,Alice將?1傳送給Bob,Bob將?2傳送給Candy,Candy將?3傳送給Alice。則Alice計算?1=?1⊕?3,Bob計算?2=?2⊕?1,Candy計算?3=?3⊕?2。
顯然: