全同态加密释疑(二):一个技术
陈智罡
在全同态加密(Fully Homomorphic Encryption)方案中,有一个非常重要技术:同态解密。
为什么要同态解密,前面说过噪音问题是实现全同态加密方案的最大障碍。Gentry在实现全同态加密方案时,注意到可以在Evaluate算法中执行自己的解密函数,那么输入的数据是什么呢?
解密函数当然输入的是密钥sk和密文c。但是不要忘了Evaluate算法是如何定义的。Evaluate算法是对输入的密文c1,c2,…执行函数f的操作,也就是对密文进行计算,其实隐含在其中的本质是对密文做同态计算,即计算后的密文解密后要等于对明文做同样的计算,如果这点做不到,那么Evaluate算法即使能对密文做很多次运算,也是没有意义的,这点一定要清楚。
这就是两种形态,明文态和密文态,两种形态对应的是同一个计算电路。在明文态,输入电路的是明文,而这些明文都是位(因为是布尔电路)。在密文态,输入电路的就是把每一个明文变成密文就可以了(算术电路)。这是我的独家比喻,版权所有。
而现在如果f是解密函数,那么输入的密文是什么呢?
只要看看明文态的时候输入的什么就知道了。
在明文态,对于解密电路,输入的肯定是密钥sk的每一位二进制位,以及密文c的每一位二进制位,因为是布尔电路,所以输入的数据都要化成二进制位的形式。
好了,现在在密文态,相应的把明文位变成密文就可以了,原来是一个位的地方现在变成了一个密文,那么将这些密文输入到解密电路中,结果是什么呢?是一个密文&#x