當局者“密”,密鑰者清

目前,面對國防、醫療保健以及金融行業的數據安全問題,越來越多的應用程序開始應用於數據的處理。其實,任何一個組織都難以保證重要的數據不會被窺探,而對於公有云來說,這個問題更爲嚴重。

傳統的加密方案關注的是數據存儲安全。即我要給其他人發個加密的東西,或者在服務器上存一個東西,我要對數據進行加密後再發送或者存儲。沒有私鑰的用戶,不可能從加密結果中得到有關原始數據。只有擁有私鑰的用戶才能夠正確解密,得到原始的內容。我們注意到,這個過程中用戶是不能對加密結果做任何操作的,只能進行存儲、傳輸。對加密結果做任何操作,都會導致解密失敗。

同態加密是指能夠在不知道密鑰的情況下,對密文進行任意計算,即對於任意有效的 f 函數及明文 m,有性質 f(enc(m))=enc(f(m))。這種特殊的性質使得全同態加密有廣泛的理論與實際應用,如雲計算安全,密文檢索,第三方代理計算安全等。2009年IBM的研究員Gentry構造出了第一個全同態加密方案,這是密碼學界的一個重大突破,之後稱爲了一個開放性難題,被譽爲“密碼學的聖盃”。

同態加密方案最有趣的地方在於,其關注的是數據處理安全。同態加密提供了一種對加密數據進行處理的功能。其他人可以對加密數據進行處理,但是處理過程不會泄露任何原始內容。同時,擁有密鑰的用戶對處理過的數據進行解密後,得到的正好是原文處理後的結果。

舉個實際生活中的例子。有個用戶買到了一大塊金塊,她想讓工人把這塊金塊打造成一根金項鍊。但是工人在打造的過程中有可能會偷金塊,因此能不能有一種方法,讓工人可以對金塊進行加工,但是不能得到任何金塊?有個辦法可以這樣做,如下圖所示:

同態加密例子

用戶將金塊鎖在一個密閉的盒子裏面,這個盒子安裝了一對手套。工人可以帶着手套,對盒子內部的金塊進行處理。但是盒子是鎖着的,所以工人不僅拿不到金塊,連處理過程中掉下的任何金子都拿不到。加工完成後。用戶拿回這個盒子,把鎖打開,就得到了金項鍊。

這裏面的對應關係是:

盒子:加密算法。

盒子上的鎖:用戶私鑰。

將金塊放在盒子裏面並且用鎖鎖上:將數據用同態加密方案進行加密。

對金塊的加工:應用同態特性,在無法取得數據的條件下直接對加密結果進行處理。

開鎖:對結果進行解密。

金項鍊:經過同態算法處理後的結果。

同態加密的運算流程如下圖所示:

同態加密運算流程

Alice對數據進行加密,將密文發送雲環境。同時將處理數據的方法也提交服務器,這裏用f表示。

雲環境拿到密文後,用f函數的同態加密算法對數據進行處理,並將處理後的密文數據回傳給Alice。

Alice拿到密文後對數據進行解密後得到原文經過函數f後的結果。

流程走完用戶就感覺變魔術一樣,在對方不知道你任何信息的情況下就幫你把事情辦好了。

一、Paillier算法

Paillier算法,基於複合剩餘類的困難問題,滿足加法同態和明文數乘同態。

(一)密鑰生成

(二)公鑰加密

(三)私鑰解密

(四)同態性質

(五)對負數的處理

二、ElGamal算法與改良

ElGamal算法,是一種非對稱加密算法,基於Diffie-Hellman密鑰交換算法。該算法可以應用在任意一個循環羣上,在羣中有的運算求解很困難,這些運算通常與求解離散對數相關,求解的困難程度決定了算法的安全性。

(一)密鑰生成

(二)公鑰加密

(三)私鑰解密

(四)同態性質

三、測試結果

(一)paillier算法,加法同態性質測試

(二)elgamal算法,乘法同態性質測試

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章