目前,面对国防、医疗保健以及金融行业的数据安全问题,愈来愈多的应用程序开始应用于数据的处理。其实,任何一个组织都难以保证重要的数据不会被窥探,而对于公有云来讲,这个问题更为严重。算法
传统的加密方案关注的是数据存储安全。即我要给其余人发个加密的东西,或者在服务器上存一个东西,我要对数据进行加密后再发送或者存储。没有私钥的用户,不可能从加密结果中获得有关原始数据。只有拥有私钥的用户才可以正确解密,获得原始的内容。咱们注意到,这个过程当中用户是不能对加密结果作任何操做的,只能进行存储、传输。对加密结果作任何操做,都会致使解密失败。安全
同态加密是指可以在不知道密钥的状况下,对密文进行任意计算,即对于任意有效的 f 函数及明文 m,有性质 f(enc(m))=enc(f(m))。这种特殊的性质使得全同态加密有普遍的理论与实际应用,如云计算安全,密文检索,第三方代理计算安全等。2009年IBM的研究员Gentry构造出了第一个全同态加密方案,这是密码学界的一个重大突破,以后称为了一个开放性难题,被誉为“密码学的圣杯”。服务器
同态加密方案最有趣的地方在于,其关注的是数据处理安全。同态加密提供了一种对加密数据进行处理的功能。其余人能够对加密数据进行处理,可是处理过程不会泄露任何原始内容。同时,拥有密钥的用户对处理过的数据进行解密后,获得的正好是原文处理后的结果。函数
举个实际生活中的例子。有个用户买到了一大块金块,她想让工人把这块金块打形成一根金项链。可是工人在打造的过程当中有可能会偷金块,所以能不能有一种方法,让工人能够对金块进行加工,可是不能获得任何金块?有个办法能够这样作,以下图所示:测试
同态加密例子云计算
用户将金块锁在一个密闭的盒子里面,这个盒子安装了一对手套。工人能够带着手套,对盒子内部的金块进行处理。可是盒子是锁着的,因此工人不只拿不到金块,连处理过程当中掉下的任何金子都拿不到。加工完成后。用户拿回这个盒子,把锁打开,就获得了金项链。加密
这里面的对应关系是:spa
盒子:加密算法。3d
盒子上的锁:用户私钥。代理
将金块放在盒子里面而且用锁锁上:将数据用同态加密方案进行加密。
对金块的加工:应用同态特性,在没法取得数据的条件下直接对加密结果进行处理。
开锁:对结果进行解密。
金项链:通过同态算法处理后的结果。
同态加密的运算流程以下图所示:
同态加密运算流程
Alice对数据进行加密,将密文发送云环境。同时将处理数据的方法也提交服务器,这里用f表示。
云环境拿到密文后,用f函数的同态加密算法对数据进行处理,并将处理后的密文数据回传给Alice。
Alice拿到密文后对数据进行解密后获得原文通过函数f后的结果。
流程走完用户就感受变魔术同样,在对方不知道你任何信息的状况下就帮你把事情办好了。
Paillier算法,基于复合剩余类的困难问题,知足加法同态和明文数乘同态。
(一)密钥生成
(二)公钥加密
(三)私钥解密
(四)同态性质
(五)对负数的处理
2、ElGamal算法与改良
ElGamal算法,是一种非对称加密算法,基于Diffie-Hellman密钥交换算法。该算法能够应用在任意一个循环群上,在群中有的运算求解很困难,这些运算一般与求解离散对数相关,求解的困难程度决定了算法的安全性。
(一)密钥生成
(二)公钥加密
(三)私钥解密
(四)同态性质
(一)paillier算法,加法同态性质测试
(二)elgamal算法,乘法同态性质测试