同態加密技術

 

2016-03-12 朱潔 hadoop技術學習

最近領導安排研究下大數據的安全,計算機安全是個系統工程,分很多層面:

1)硬件安全

2)應用軟件安全

3)操作系統安全

4)數據庫系統安全

5)網絡安全技術

 

涉及到具體的技術又有

1)密碼技術

2)計算機病毒&防範

3)防火牆技術

4)黑客的攻擊和防範

等等。

 

大數據技術除了傳統的系統級別,軟件級別的安全外,我覺得要重點關注數據的安全和隱私。

數據安全有一個很有意思的加密方法,這種方法叫同態同態加密。

 

同態加密是指2009年,IBM公司的克雷格·金特里(Craig Gentry)發表了一篇文章,公佈了一項關於密碼學的全新發現:一項真正的突破。他發現,對加密的數據進行處理得到一個輸出,將這一輸出進行解密,其結果與用同一方法處理未加密的原始數據得到的輸出結果是一樣的。這聽起來就像是不知道問題也能給出問題的答案一樣。

 

記加密操作爲 E,明文爲 m,加密得 e,即 e = E(m),m = E'(e)。已知針對明文有操作 f,針對 E 可構造 F,使得 F(e) = E(f(m)),這樣 E 就是一個針對 f 的同態加密算法。

 

假設 f 是個很複雜的操作,有了同態加密,我們就可以把加密得到的 e 交給第三方,第三方進行操作 F,我們拿回 F(e) 後,一解密,就得到了 f(m)。第三方替我們幹了活,對 m 卻仍一無所知,——多麼融洽的關係啊。

 

找到這樣的 E 並不容易,單純從數學角度看,E(x) = x,就是同態的,但是可惜沒有加密效果,說了等於白說。RSA 算法對於乘法操作是同態的,對應的操作 F 也是乘法,對別的比如加法就無法構造出對應的 F;而 Paillier 算法則是對加法同態的。如果一種加密算法,對於乘法和加法都能找到對應的操作,就稱其爲全同態加密算法。目前還沒有真正可用的全同態加密算法,雖然 Craig Gentry 已經前進了一大步。

 

考慮一個匿名投票系統,投票方、計票方、宣佈方三權分立,採用公鑰加密,只有宣佈方擁有私鑰。投票方將加密的票送到計票方,計票方利用同態特性進行操作 F,得到彙總的結果,宣佈方拿到該結果後解密之,即得總票數。宣佈方不知道單獨每張票的情況,從而實現了匿名;計票方解不出票面信息,於是可以防止計票方從中作梗。選擇對加法同態的加密算法:投誰的票給誰記“1”,不投計“0”;也可選擇對乘法同態的算法:投誰的票給誰記“N”,不投計“1”。大致原理如上所述,實現起來還有其它一些難點:1. 贊成/反對票加密出來的結果應該多種多樣,以防計票方胡亂推測;2. 能在不解密的情況下對票的有效性進行校驗,不能允許一個人一下子投 10000 票。

 

全同態加密的意義對於允許任意複雜的 f,都能構造出相應的 F。這樣,就能得到一些匪夷所思的應用:我能解決你的問題,即使我並不知道你的問題。

 

當前同態加密最主要的問題是不太成熟,效率損失太大(損失10倍以上),未來成熟的話,應用前景很大。

 

 
 

微信掃一掃
關注該公衆號

 

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