头图

Kolesnikov的门估值秘密共享方案(Gate Evaluation Secret Sharing,GESS)是高效的信息论安全的乱码电路方案。  

对于一个门G来说,输入线为𝑤1,𝑤2输出线𝑤3,其真值表一共就四种可能性: 
图片
 在GESS方案中,每条导线的输入都是子秘密,子秘密由秘密共享方案产生,所有的输出是秘密分享方案中将要被分享的秘密。 

用户𝑃1生成导线标签:

 (𝑤10,𝑤11),(𝑤20,𝑤21)。𝑤𝑖𝑗, 𝑖∈{1,2},𝑗∈{0,1}  

对应导线𝑤𝑖输入为𝑗的情况。因此一共可能的输入情况有四种,导线𝑤3也有四种输出记为𝑠00,𝑠01,𝑠10,𝑠11。 

首先GESS生成两个随机数𝑟0, 𝑟1,让𝑤10对应的加密值为𝑟0,让𝑤11对应的加密值为𝑟1。当导线𝑤1输入为0时,对应于𝑤10,导线𝑤2也有两种输入的可能,分别为0和1,对应两个导线𝑤3的输出。 

同理如果确定了导线𝑤2的输入如为𝑤20,根据导线𝑤1的不同输入0和1,也只会有两种输出可能𝑠00和𝑠10(注意这里𝑠00和𝑠01只代表输出可能,实际根据具体的门𝐺,𝑠00和𝑠01的具体值可能相 等也可能不等)。  

GESS将导线𝑤1的两种输入可能𝑤10和𝑤11与输出可能相绑定,作为𝑤2的输入。即把𝑠00⨁𝑟0∥𝑠10⨁𝑟1作为𝑤20的加密值,把𝑠01⨁𝑟0∥𝑠11⨁𝑟1作为𝑤21的加密值,∥符号表示连接。如当输入导线𝑤2的输入为0,则导线𝑤2的加密值为𝑠00⨁𝑟0∥𝑠10⨁𝑟1,导线𝑤1输入有两种可能,当导线𝑤1输入为0时,𝑤1的加密值为𝑟0,𝑟0可以与导线𝑤2的加密值前半部分𝑠00⨁𝑟0相异或,解密出𝑠00,正是𝑤1和𝑤2输入为0,0时的输出。当导线𝑤1的输入为1时,𝑤1的加密值为𝑟1,𝑟1可以与导线𝑤2的加密值后半部分𝑠10⨁𝑟1相异或,解密出𝑠10,正是𝑤1,𝑤2的输入为1,0时𝑤3的输出。当输入导线𝑤2的输入为1时同理。 
图片

 可以把表的行按𝑤2的输入值重新排序: 

图片
 
因为电路计算时𝑤1对应的是加密值𝑟0和𝑟1,为了标识出解密𝑤2的加密值时需要使用的是哪个部分,需要对𝑟0和𝑟1附加一个指针比特𝑏,用来告知重构各个 子秘密的参与者使用𝑤2的哪一部分进行解密,可以实现约定当指针比特𝑏=0时,使用𝑤2的左半部分,当𝑏=1时,使用𝑤2的右半部分。 

图片
 
为了掩盖各个数据块的顺序,再产生一个随机的翻转比特𝑟,用于打乱数据块的顺序。如当𝑟=0时,保持原来顺序,当𝑟=1时,将一二两行和三四两行进行对调。 

GESS在密文状态下对门G进行求值,输出导线的加密值是与两条输入导线的加密值所关联,可以逐门进行秘密分享,不需要在电路求值过程中解码出中间明文值。 

对于GESS方案来说,导线𝑤2的输入长度是𝑤1长度的两倍,当电路深度增加时,导线的输入会越来越长。为了降低输入长度,可以根据OR门和AND门的特性进行优化。先观察与门的真值表,如下图所示: 

图片

可以看到与门的输出导线𝑤3的结果中有三个相同,即𝑠00=𝑠01=𝑠10。 

图片

因此导线𝑤2对应的加密值有多行的值相同,统一用𝑠00代替,可以得到: 

图片
 
可以看到当导线𝑤2的输入的左侧都相等,因此𝑤2的输入左侧只需要一𝑟0⨁𝑠00即可,以此来降低数据量。同理,对于或门也可以进行类似的替代,以降低数据量。OR门的真值表如下图所示:
  
图片
 
可以观察到在真值表中,OR门输出导线𝑤3有三行都相同,即𝑠01=𝑠10=𝑠11:
 
图片

统一使用𝑠01进行代替,可得: 

图片
 
可以看到当导线𝑤2的输入右侧部分只需要一组𝑟1⨁𝑠01,可以直接使用一组𝑟1⨁𝑠01来作为导线𝑤2的右侧输入,以此来降低数据量。


PlatON技术团队
23 声望164 粉丝

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