头图

双方比较

之前已经介绍过了利用加密电路或者比特分解来实现安全多方比较。本次再介绍一种利用不经意传输来实现双方比较的方法。
图片

不经意传输在之前的科普进行过介绍,该比较协议的主要思路为:将需要比较的两个比特串分为多个部分,每个部分再进行比较,最后利用树形结构进行组合。假设有比特串𝑥和比特串𝑦,将比特串𝑥划分为两个部分,分别为\( 𝑥_1,𝑥_0 \),将比特串𝑦也划分为\( 𝑦_1 \)和\( 𝑦_0 \)。
图片

表达式1{𝑥<𝑦} 表示若𝑥<𝑦,则表达式1{𝑥<𝑦} 的值为1,否则为0。同理,表达式1{𝑥=𝑦 } 表示若𝑥=𝑦则表达式的值为1,反之为0。
图片

思考如下的比较:

$$ \begin{array}{c} x=x_{1} \| x_{0} \\ y=y_{1} \| y_{0} \\ 1\{x<y\}=1\left\{x_{1}<y_{1}\right\} \oplus\left(1\left\{x_{1}=y_{1}\right\} \wedge 1\left\{x_{0}<y_{0}\right\}\right) \quad \text { 式 } 1 \end{array} $$

把比特串𝑥和比特串𝑦分为两部分后,先比较\( 𝑥_1和𝑦_1 \)的大小,由于\( 𝑥_1和𝑦_1 \)都是高位部分,因此若\( 𝑥_1<𝑦_1 \)则比特串𝑥<𝑦;反之若\( 𝑥_1>𝑦_1 \)则𝑥>𝑦,在这两种情况下无需在比较\( 𝑥_0,𝑦_0 \)的大小了。只有当\( 𝑥_1=𝑦_1 \)时,需要通过比较\( 𝑥_0,𝑦_0 \)的大小关系来确定𝑥, 𝑦的大小关系。

式1就是该比较协议的核心思想。该协议的详细流程为:

首先假设Alice掌握比特串𝑥,Bob掌握比特串𝑦,先考虑最简单的情况,𝑥和𝑦等长均为𝑙比特且\( \frac{l}{m} \)为2的指数倍。

1. Alice和Bob分别对𝑥和𝑦进行𝑞等分:Alice:把𝑥进行𝑞等分,每份𝑚比特:

$$ x=x_{q-1}\|\cdots\| x_{0} $$

Bob:把𝑦进行𝑞等分,每份𝑚比特:

$$ y=y_{q-1}\|\cdots\| y_{0} $$

2. Alice产生两个随机数,将其分别记为\( {<It_0,j>}_{B}^{0} , {<eq_0,j>}_{B}^{0} \)。Alice利用\( M=2^m \)个比特,分别为\( s_{j,0}...s_{j,M-1} \)来标识\( x_j \)的大小关系;利用𝑀个比特,分别为\( t_{j,0}...t_{j,M-1} \)来标识\( x_j \)的相等关系: 
图片

即对于\( x_j \),Alice将比特\( s_{j,0}...s_{j,M-1} \)中下标为\( s_{j,0}...s_{j,x_j-1} \)的全都设置为随机数 \( {<It_{0,j}>}_{B}^{0}\oplus 0 \),将下标为\( s_{j,x_j}...s_{j,M-1} \)的全都设置为\( {<It_{0,j}>}_{B}^{0}\oplus 1 \)。例如段\( x_j=(1010)_2=(10)_{10} \),则𝑀=16。Alice将\( s_{j,0}...s_{j,9} \)设置为\( {<It_{0,j}>}_{B}^{0}\oplus 0 \),将\( s_{j,10}...s_{j,15} \)设置为\( {<It_{0,j}>}_{B}^{0}\oplus 1 \)。

即下标比\( x_j \)的值小的为随机数\( {<It_0,j>}_{0}^{B} \) 异或0,下标大于等于\( x_j \)的异或1。对于\( t_{j,0}...t_{j,M-1} \),则是只有当下标和\( x_j \)相等时为随机数 \( {<eq_0,j>}_{0}^{B} \)异或1,否则均为随机数 \( {<eq_0,j>}_{0}^{B} \)异或0。 

若用黄色表示比特值为1,蓝色表示比特值为0,则Alice在完成上述步骤后,\( s_{j,0}...s_{j,M-1} \)和\( t_{j,0}...t_{j,M-1} \)如下所示:
图片

对于0≤𝑗≤𝑞−1,Alice对每个\( x_j \)都进行上述的步骤,因此能得到\( s_{0,0}...s_{q-1,M-1} \)共𝑞∙𝑀比特,得到\( t_{0,0}...t_{q-1,M-1} \)共𝑞∙𝑀比特。

3. Alice和Bob间调用𝑞次𝑀选1的OT协议,Alice在 OT 协议中的输入为\( s_{j,0}...s_{j,M-1} \),Bob在OT中的输入为\( y_i \):
图片

𝑞次𝑀选1的OT结束后,Bob会获得\( s_{0,y_0}...s_{q-1,y_{q-1}} \)。

Alice和Bob再调用𝑞次𝑀选1的OT协议,Alice在OT协议中的输入为\( t_{j,0}...t_{j,M-1} \),Bob在OT中的输入为\( y_i \): 
图片
𝑞次𝑀选1的OT结束后,Bob会获得{\( t_{0,y_0}...t_{q-1,y_{q-1}} \)}。

将{\( s_{0,y_0}...s_{q-1,y_{q-1}} \)}记为{\({<It_{0,0}>}_{1}^{B} ,..., {<It_{0,q-1}>}_{1}^{B} \)},将{\( t_{0,y_0}...t_{q-1,y_{q-1}} \)}记为{ \( {<eq_{0,0}>}_{1}^{B},... {<eq_{0,q-1}>}_{1}^{B} \) }。 

Alice的输入为 \( s_{j,0}...s_{j,M-1} \),Bob的输入为\( y_i \),那么当\( y_i≥x_i \)时,Bob通过OT获得的为 \( {<It_{0,j}>}_{0}^{B}\oplus 1 \),当\( y_i<x_i \)时,Bob通过OT获得的为\( {<It_{0,j}>}_{0}^{B}\oplus 0 \)。又由于Bob 通过OT获得的\( {<It_{0,j}>}_{0}^{B}\oplus 1 \)或者\( {<It_{0,j}>}_{0}^{B}\oplus 0 \)异或上 Alice的随机数\( {<It_{0,j}>}_{0}^{B} \),即为\( x_j < y_j \)的比较结果,因此可以将Bob获得的记为\( {<It_{0,j}>}_{1}^{B} \),看做是\( x_j < y_j \)的比较结果的一个子秘密。只有当Bob的子秘密\( {<It_{0,j}>}_{1}^{B} \)和 Alice的子秘密\( {<It_{0,j}>}_{0}^{B} \), 进行异或才能获得 \( x_j < y_j \)的比较结果\( {<It_{0,j}>}^{B} \)。 

同理可将Alice的输入为\( t_{j,0}...t_{j,M-1} \),Bob的输入为\( y_i \),OT后Bob获得的\( {<eq_{0,j}>}_{B}^{0}\oplus 1 \){\( x_j=y_j \)}记为\( {<eq_{0,j}>}_{1}^{B} \),作为Bob获得的1{\( x_j=y_j \)}的子秘密。 

4. Alice和Bob运行如下算法(Alice运行则𝑏=0,Bob 运行则𝑏=1): 
图片

该算法的目的为将需要比较的比特串分成多个部分,每个部分进行比较, 再将比较结果进行组合。举个例子来解释这个算法,假设𝑞=16,则\( x=x_{15} | ... | x_{0} ,y=y_{15} | ... | y_{0}\),要比较𝑥和𝑦先比较\( x_{15} | ... | x_{8} \)和\( y_{15} | ... | y_{8} \)的大小,只有当\( x_{15} | ... | x_{8} \)和\( y_{15} | ... | y_{8} \)相等时才需要接着去比较\( x_{7} | ... | x_{0} \)和\( y_{7} | ... | y_{0} \)间的大小关系。而比较\( x_{15} | ... | x_{8} \)和\( y_{15} | ... | y_{8} \)间的大小关系可以先比较\( x_{15} | ... | x_{12} \)和\( y_{15} | ... | y_{12} 间的大小关系,若二者相等再比较\( x_{11} | ... | x_{8} \)和\( y_{11} | ... | y_{8} \),以此类推,则形成了一个树形结构。

最后最先需要比较的为和间的大小关系。用:

$$ x=x^{(i)}=\frac{x^{i}_q}{2^i}-1 \| ... \| {x_{0}}^i $$

表示该树形结构,(𝑖)表示位于第几层,如
图片
树形结构如下图所示:
图片
正确性证明:

\( F_{𝑎𝑛𝑑} \)是多方𝑎𝑛𝑑函数,需要Alice和Bob共同完成𝑎𝑛𝑑操作。如𝐴𝑙𝑖𝑐𝑒掌握\( a_0 \)和\( b_0 \),Bob掌握\( a_1 \)和\( b_1 \),二者都调用\( F_{𝑎𝑛𝑑} \)后,\( F_{𝑎𝑛𝑑} \)对Alice的输出为\( (a\wedge b)_0 \),对Bob的输出为\( (a\wedge b)_1 \),具体实现可以使用之前介绍过的Beaver Triple完成,因此:
图片
输出为:
图片
则:
图片
又由于:
图片
因此对\( {<It_{i,j}>}_{B}^{b} \) 异或上 \( {<It_{i,j}>}_{B}^{1-b} \)可得:
图片

图片
由此得证。


PlatON技术团队
23 声望164 粉丝

PlatON技术团队,⼀群专注于技术、玩转算法、追求⾼效的⼯程师。