Kolesnikov的门估值秘密共享方案(Gate Evaluation Secret Sharing,GESS)是高效的信息论安全的乱码电路方案。
在GESS方案中,每条导线的输入都是子秘密,子秘密由秘密共享方案产生,所有的输出是秘密分享方案中将要被分享的秘密。
首先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的具体值可能相 等也可能不等)。
因为电路计算时𝑤1对应的是加密值𝑟0和𝑟1,为了标识出解密𝑤2的加密值时需要使用的是哪个部分,需要对𝑟0和𝑟1附加一个指针比特𝑏,用来告知重构各个 子秘密的参与者使用𝑤2的哪一部分进行解密,可以实现约定当指针比特𝑏=0时,使用𝑤2的左半部分,当𝑏=1时,使用𝑤2的右半部分。
为了掩盖各个数据块的顺序,再产生一个随机的翻转比特𝑟,用于打乱数据块的顺序。如当𝑟=0时,保持原来顺序,当𝑟=1时,将一二两行和三四两行进行对调。
对于GESS方案来说,导线𝑤2的输入长度是𝑤1长度的两倍,当电路深度增加时,导线的输入会越来越长。为了降低输入长度,可以根据OR门和AND门的特性进行优化。先观察与门的真值表,如下图所示:可以看到与门的输出导线𝑤3的结果中有三个相同,即𝑠00=𝑠01=𝑠10。
因此导线𝑤2对应的加密值有多行的值相同,统一用𝑠00代替,可以得到:
可以看到当导线𝑤2的输入的左侧都相等,因此𝑤2的输入左侧只需要一𝑟0⨁𝑠00即可,以此来降低数据量。同理,对于或门也可以进行类似的替代,以降低数据量。OR门的真值表如下图所示: 统一使用𝑠01进行代替,可得:
可以看到当导线𝑤2的输入右侧部分只需要一组𝑟1⨁𝑠01,可以直接使用一组𝑟1⨁𝑠01来作为导线𝑤2的右侧输入,以此来降低数据量。