同态加密

1.背景


加密的目的是保护数据的机密性。加密分为对称加密和非对称加密。对称加密是指加密和解密用的同一个密钥;而非对称加密在加密时用的是公钥,解密时用的是私钥。非对称加密体制是基于数学难问题(比如大整数分解、离散对数),加密解密操作比对称加密要慢很多。


如果对加密数据(即密文)的操作是在不可信设备(untrusteddevice)上进行的,我们希望这些设备并不知道数据的真实值(即明文),只发回给我们对密文操作后的结果,并且我们可以解密这些操作后的结果。举一个简单的例子,n个学生和1个老师通信,每个学生都有1个数据要发给老师,老师需要知道这n个数据之和,而学生们不想让老师知道每个数据的真实值。为了解决这个问题,Rivest等在1978年提出了同态加密的思想。


2.定义


同态加密[1]的定义如下:


其中,M表示明文的集合,C表示密文的集合,←表示可以从右式计算得出左式。


特别地,有


分别为加法同态、乘法同态。


所谓同态加密是指在密文空间对密文的操作等同于在明文空间对明文操作后加密(据我自己的理解)。同态加密在数据聚合(data aggregation)、隐私保护等方面有着重要的应用。


现在可以用同态加密解决前面提出的问题:每个学生可以用加法同态加密函数将各自数据加密,再将这密文发给老师;老师只需要把n个密文相加,再将相加后的结果(即密文之和)解密,即可得到n个数据之和(即明文之和)。这样就保护了n个数据不被老师所知道,而且老师也得到了n个数据之和。


3.几个概念


在[1]中,介绍了SemanticsSecuritypolynomialsecurity、nonmalleability几个概念。

(1)SemanticsSecurity指对具有一定计算能力的敌手而言,密文没提供任何有关明文的有用信息。比如,对加密操作c=E(m)c表示密文、E表示加密操作、m表示明文,敌手有可能猜到c而并不知道m

(2)polynomialsecurity定义:敌手选择两个明文,我们随机地选取其中的一个明文,并提供该明文相应的密文给敌手;敌手在多项式时间内,并不能得出我们所选取的明文是两个中的哪一个。

(3)Nonmalleability定义:敌手知道密文c’对应的明文m’与明文m的关系是困难的。


Goldwasser和Micali证明了SemanticsSecuritypolynomialsecurity等价,Bellare和Sahai证明了polynomialsecurity与nonmalleability等价。


同态加密不具有nonmalleability,加操作的deterministic同态加密方案是不安全的(理由见[1])。满足同态加密的已有方案:RSAElGmalPailliercryptosystem


4. 参考文献


[1]FontaineandGaland."ASurveyofHomomorphicEncryptionforNonspecialists".InEURASIPJournalonInformationSecurity,volume2007,pp.1-15.



你可能感兴趣的:(同态加密)