目前,面對國防、醫療保健以及金融行業的數據安全問題,愈來愈多的應用程序開始應用於數據的處理。其實,任何一個組織都難以保證重要的數據不會被窺探,而對於公有云來講,這個問題更爲嚴重。算法
傳統的加密方案關注的是數據存儲安全。即我要給其餘人發個加密的東西,或者在服務器上存一個東西,我要對數據進行加密後再發送或者存儲。沒有私鑰的用戶,不可能從加密結果中獲得有關原始數據。只有擁有私鑰的用戶纔可以正確解密,獲得原始的內容。咱們注意到,這個過程當中用戶是不能對加密結果作任何操做的,只能進行存儲、傳輸。對加密結果作任何操做,都會致使解密失敗。安全
同態加密是指可以在不知道密鑰的狀況下,對密文進行任意計算,即對於任意有效的 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算法,乘法同態性質測試