不经意置换是对复杂电路的优化,应用不经意置换重拍数组中的元素顺序是PSI、平方根等很多隐私算法的重要构造模块。
不经意置换的基础组件是条件交换器,也被叫做X交换模块。
条件交换器包含两个输入a1,a2,产生的两个输出b1,b2.根据交换比特p的值,输出匹配输入的顺序(b1=a1,b2=a2)或者交换输入的顺序(b1=a2,b2=a1)。电路生成方已知交换比特P,但不能将交换比特披露给电路求值方。
Kolesnikov和Schneider提出了条件交换器的一种设计方法,此方法充分利用了FreeXOR的性质,只需要一个包含两个密文的乱码表即可实现条件交换器的功能,条件交换器的实现方法为:
b1=a1 ⊕(p∧(a1⊕a2))
b2=a2 ⊕(p∧(a1⊕a2))
条件交换器如图所示,如果不需要交换输入的位置,则模块f=0;如果需要交换输入的位置,则模块f=1。将输入a1,a2与交换比特p用AND门连接起来,即可得到模块f。
原作者:Kolesnikov和Schneider