【隐私计算笔谈】MPC系列专题(七):信息论安全的混淆电路

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

对于一个门G来说,输入线为1,2输出线3,其真值表一共就四种可能性: 
【隐私计算笔谈】MPC系列专题(七):信息论安全的混淆电路_第1张图片
 在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时同理。 
【隐私计算笔谈】MPC系列专题(七):信息论安全的混淆电路_第2张图片

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

【隐私计算笔谈】MPC系列专题(七):信息论安全的混淆电路_第3张图片
 
因为电路计算时1对应的是加密值0和1,为了标识出解密2的加密值时需要使用的是哪个部分,需要对0和1附加一个指针比特,用来告知重构各个 子秘密的参与者使用2的哪一部分进行解密,可以实现约定当指针比特=0时,使用2的左半部分,当=1时,使用2的右半部分。 

【隐私计算笔谈】MPC系列专题(七):信息论安全的混淆电路_第4张图片
 
为了掩盖各个数据块的顺序,再产生一个随机的翻转比特,用于打乱数据块的顺序。如当=0时,保持原来顺序,当=1时,将一二两行和三四两行进行对调。 

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

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

【隐私计算笔谈】MPC系列专题(七):信息论安全的混淆电路_第5张图片

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

【隐私计算笔谈】MPC系列专题(七):信息论安全的混淆电路_第6张图片

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

【隐私计算笔谈】MPC系列专题(七):信息论安全的混淆电路_第7张图片
 
可以看到当导线2的输入的左侧都相等,因此2的输入左侧只需要一0⨁00即可,以此来降低数据量。同理,对于或门也可以进行类似的替代,以降低数据量。OR门的真值表如下图所示:
  
【隐私计算笔谈】MPC系列专题(七):信息论安全的混淆电路_第8张图片
 
可以观察到在真值表中,OR门输出导线3有三行都相同,即01=10=11:
 
【隐私计算笔谈】MPC系列专题(七):信息论安全的混淆电路_第9张图片

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

【隐私计算笔谈】MPC系列专题(七):信息论安全的混淆电路_第10张图片
 
可以看到当导线2的输入右侧部分只需要一组1⨁01,可以直接使用一组1⨁01来作为导线2的右侧输入,以此来降低数据量。

你可能感兴趣的:(电路区块链区块链开发mpc)