【隐私计算笔谈】MPC系列专题(十三):比特分解

比特分解

上一次科普介绍了比特比较(Bitwise Compare),比特比较可以实现多方下的比较,不过其要求比较的输入是按比特分享的。回忆一下,在Shamir(t,n)秘密分享机制中所有被分享的秘密都是一个完整的比特串的形式,通过一个秘密多项式被分享成个在域上的子秘密。

【隐私计算笔谈】MPC系列专题(十三):比特分解_第1张图片

 
那么要想在Shamir(t,n)秘密分享机制中使用bitwise compare来实现多方比较,就需要将在域上的子秘密以比特形式重新分享,将其记为\( []_→[]_B \),称为比特分解(Bit Decomposition)。
 
如果已经有了\( []_B \),将\( []_B \)转换成\( []_ \)较为简单,因为\( []_B={[_0]_B,…[_{l-1}]_B} \),分别表示从高位数起按比特分享的第比特。由于

\( a=a_{0} \cdots a_{l-1}=\sum{_{i=0}^{l-1}} 2^{l-1-i} \cdot a_{i} \)
 
回忆一下Shamir(t, n)秘密共享机制的性质,所有对应的子秘密相加,等于主秘密相加;所有子秘密乘上同一个常数,等于主秘密乘上该常数。因此将\( []_B→[]_ \)只需计算\( []_p=\sum{_{i=0}^{l-1}} 2^{l-1-i} \cdot []_{i} \)。 
 

【隐私计算笔谈】MPC系列专题(十三):比特分解_第2张图片

图:Bit Decomposition
 
比特分解(Bit Decomposition)\( []_→[]_B \)的主要步骤为: 
 
1.所有参与者共同产生一个随机数\( []_B \)(上次科普介绍过如何共同产生随机数),并计算对应的\( []_ \)。
 
2.每个参与者都计算\( []_=[]_−[]_ \),并将\( []_ \)进行公开。因此每个参与者都能获得=− 。
 
3.由于每个参与者都知道明文的,因此每个参与者都可计算 \( []_B \),之后 计算\( []_B=[]_B+[]_B= {[_0]_,…,[_]_} \)。(注意这里用的加法是Bit-Add,\( [=+]_B \),并不是直接按比特相加,同理下面用到的类似\( [\alpha]_B=[\beta]_B+[\gamma]_B \)形式的实际都为\( [\alpha=\beta+\gamma]_B \),因为:
 
image.png
 
若此时对\( []_B \)进行重构,获得的=+,∈ {0,1} ,因此\( []_B \)的值其实是\( []_B=[+]_B \)。现在需要想办法消去。的值可以使用上次科普介绍的比特比较(Bitwise Compare)协议,通过比较\( []_B \)和\( [p]_B \)得到\( [q]_B \),若<则=0,反之则=1。
 
4.考虑g=(2−)  2,将它的按比特分享记为\( [g]_{B}={[g_{l-1}]_{p}, \ldots,[g_{0}]_{p}} \)。将\( 2^− \)的二进制表示记为\( _0⋯_{-1} \),则
 

图片

 
若将和\( 2^− \)相乘后模上\( 2^ \),可得到\( (2^−)  2^=(2^−)  2^=(2^−)  2^=g \)。因此可以通过\( [g_i]_p=f_i[q]_p \)来计算\( [g]_B \)。 
 
5.现在有了\( [g]_B=[(2^l-qp) mod 2^l]_B \)和\( []_B=[+]_B \),可以通过将二者相加,获得\( [h]_B=[d]_B+[g]_B=[a+q2^l]_B={{[h_0]_B,...,[h_l]_B}} \)。注意,是+1位的,而ℎ是位,二者相加后得到的最高位为\( [q2^l]_B \),因此只要将最高位丢弃,那么留下的就是\( [a]_B={[h_1]_B,...,[h_l]_B} \)。有了比特分解之后,就可将\( [a]_p \)转换为\( [a]_B \),在通过上次科普介绍的Bitwise Compare(Less-Than)来进行多方比较。
 

【隐私计算笔谈】MPC系列专题(十三):比特分解_第3张图片

 

你可能感兴趣的:(【隐私计算笔谈】MPC系列专题(十三):比特分解)