【隱私計算筆談】MPC系列專題(十二):位元比較

PlatON技術團隊發表於2023-02-06

位元或

上次的科普介紹了共享隨機數和位元分享,透過共享隨機數來實現位元分享,再透過位元分享來實現本次要介紹的位元串比較。

在介紹位元比較之前先簡單介紹一下位元的或。位元異或的實現方法較為簡單,利用之前介紹過的?2下Shamir共享機制的加法就能實現。而位元或則無法直接透過Shamir共享機制的加法或者乘法實現。

圖片

注意之前介紹過,在算數電路上實現乘法和加法即可實現任意函式,而在布林電路上實現異或和與即可實現任意函式。安全多方計算就是為了在保護隱私資訊下共同計算目標函式,如果把位元與透過使用加法和乘法的函式表示,那麼即可透過加法和乘法實現與門的功能。 

圖片

思考一下與的特點,當多個位元相或時,其中只要有一個位元的值為1,或的結果就是1,因此可以統計出現1的個數,只要超過0次,最後的值就為1。可以設計出這樣一個函式:若函式有個?輸入,分別為?1,…,??,則讓\( g=1+\sum{_{i=1}^{l}} x_{i} \),讓實現與的函式為?(?1,…,??): 
圖片
將\( g=1+\sum{_{i=1}^{l}} x_{i} \),是因為當\( \sum{_{i=1}^{l}} x_{i}=0 \)時會洩露資訊。回憶一下,在Shamir秘密分享機制中,當秘密分享函式的輸入為0時,得到的就是秘密,因此需要避免輸入為0。讓\( g=1+\sum{_{i=1}^{l}} x_{i} \)可以使得函式?(?)的定義域從[0,?]變為[1,?+1],從而避免出現輸入?為0的情況。?(?)的具體實現則可透過有?個未知係數的方程,?個方程解?個未知數即可,即?(1)=0,?(2)=⋯=?(?+1)=1。把\( g=1+\sum{_{i=1}^{l}} x_{i} \)和?(?)對映到Shamir秘密共享機制上,加法和乘法對應Shamir中的加和乘,即可實現在共享的位元上的或計算。 

位元比較(Bitwise Compare)

具體要介紹的比較為小於,即如果位元串?<?,則得到的結果為1,如果?>?,則得到的結果為0。假設有兩個?位元長的位元串?和?,分別為\( ?=?_0?_1⋯?_{?-1}和?=?_0?_1⋯?_{?-1} \),首先將位元串?和?按位元進行異或,得到位元串\( ?=?_0⋯?_{?-1} \),其中\( ?_?=?_?\oplus?_?,0≤?≤?−1 \)。再計算位元串\( ?=?_0⋯?_{?-1} \),其中\( d_{j}=\vee_{i=0}^{j} c_{i},0≤?≤?−1 \),即位元串?的第?位位元是位元串?從高位起前?位位元的或。

比如,如果位元串?=100 101 ,位元串?=101 011,位元串?為位元串?和?按位異或的結果,位元串?=001 110,位元串\( d=d_0...d_{l-1} , d_0=c_0 , d_1=c0 \vee c1 , d2=c_0 \vee c_1 \vee c_2 , d_{l-1}=c_0 \vee c_1 \vee... \vee c_{l-1} \),可以得到位元串?=001 111。位元串?的第?位位元是位元串?從高位起前?位位元的或,可以觀察到當位元串?中某個位元是整個位元串中第一位為1的時候,位元串?從那位起之後都為1。如以上舉的例子中,?3為位元串?中第一個出現1的位元,則位元串?的?3以及?3之後都為1,之前都為0。

再接著讓\( ?_?=?_{?-1}−?_? \), 1≤?≤?−1, ?0=?0,因此可以得到位元串?,在上面這個例子中,得到的位元串?=001 000,即位元串?會保留位元串?中第一位出現1的那位,其餘位均為0。

最後,計算\( \sum{_{i=0}^{l}} d_{i}.b_{i} \)即為最後的結果,在上面這個例子中結果為1,和位元串?<?相符合。

它所使用的原理是,如果位元串?>?,那麼位元串?中第一位1出現的一定比位元串?中的第一位1要早,否則位元串?就小於等於位元串?。

將位元串?和?按位進行異或得到?後,位元串?中第一位1出現的位置就是位元串?和?中最早的第一位1出現的位置。那麼如果位元串?中第一位1出現的位置和?中最早的第一位1出現的位置相同,就說明?>?。而接下去做的步驟就是為了證明位元串?中第一位1出現的位置和?中最早的第一位1出現的位置是否相同。在上面的例子中,用橘色表示1,藍色表示0,則?、?、?為: 

圖片

位元串?是從?第一位1出現起,之後都為1。位元串?是除了?第一位1出現的位置為1,其餘位都為0。即成功將?中第一位出現1的位置提取了出來。在上面的例子中,?和?用圖形表示為:

圖片

現在位元串?中1的位置即為?中第一位出現1的位置,將?和?進行按位與,如果?第一位出現1的位置和?中1的位置相同,那麼該位按位與的結果就是1,其餘位均為0,所有位相與結果之和就是1。反之,?第一位出現1的位置和?中1的位置不同,則為0。

將上述比較方式中的?, ?的各個位元都採用位元分享的方式進行分享,後續的「異或」以及「或」操作都採用我們之前介紹過的對子秘密的「位元異或」和「位元或」操作,即可實現對?,?的多方比較,且不向任何參與者洩露?,?的具體值。
圖片

相關文章