天天看點

同态加密技術

最近上司安排研究下大資料的安全,計算機安全是個系統工程,分很多層面:

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倍以上),未來成熟的話,應用前景很大。