加密正迅速成為開發人員的首選解決方案,無論你遇到什么樣的數據隱私或安全性方面的問題。你是否害怕將信用卡信息填入網絡表單?別擔心。我們正在使用加密。你不確定網站是否真實可靠?不怕,加密能幫到你。好消息是,加密算法在某些時候確實有效。數學提供了保護措施,使人們免遭竊聽,數學還建立了信任的堅實基礎。
但是所有的看似靈丹妙藥的方法都有其局限性,人們無法確定這些局限體現在哪里,這就是加密的棘手之處。數學令人望而生畏,我們只有目瞪口呆的份兒。加密所涉及的計算過于復雜,復雜得令人毫無頭緒,只好相信這一切管用。
最后,我們用加密所能做的最好的事情就是管理預期目標并形成一定的認知。我們不能沒有加密,但我們不能假定這就像開燈熄燈那樣容易或可靠。
因此,當你尋找解決信息架構中棘手問題的解決方案時,請記住12個涉及到加密的不可告人的秘密。
我們并不懂加密
加密的大部分功能都依賴于這樣一個事實,即我們對逆轉加密所涉及的數學知之甚少。我們知道如何計算函數,但不知道如何對其進行逆向計算。我們可以不斷地對大數進行乘法運算,但無法計算對數。換句話說,我們只知道這是不可逆的。當一群聰明人都無法弄清楚如何做逆向計算時,那真的是沒戲了,只能束手無策并接受各種算法。我們最大的能耐也不過如此。最常見的加密算法之所以得到部署,是基于這樣一個事實,即還沒有人公然想出任何攻擊方法。
別把估算太當一回事
有些數學家已經發現了用來攻擊知名加密函數的基本算法,但是這些算法太慢了,無法用真實密鑰破解加密。算法僅適用于較小的數字,問題越復雜,算法越慢。這一切令人瞠目結舌的估算結果都是由算法得出來的,即要花費天文數字般漫長的時間才能破解。這聽起來令人放心,但這就好比一個高爾夫球新手說要練習天文數字般漫長的時間才有可能一桿進洞。對初學者來說也許是這樣,但對經常一桿進洞的職業選手來說則不然。在加密領域,我們不過都是些胡亂估算的新手。
證明并不能以偏概全
有些及其敬業的科學家和數學家都在努力為自己的算法提供“證明”。這些經過嚴格審查的一系列邏輯步驟有助于我們了解加密算法的強度,但這與數據的安全保障無關。證明只能揭示一部分洞見,總有一些未知事物隱藏在暗處。在大多數情況下(一次性密碼本除外),證明并不能涵蓋一切,而是依賴于一些假設,即某些問題到底有多困難。這在過去可能是成立的,但不能為未來打包票。
我們無法衡量強度
安全技術銷售團隊喜歡兜售“銀行級”這樣的術語,或摻入1024位這樣的數字,但實際情況是,我們沒有計算算法強度的好辦法,只能靠猜。2048位加密的強度是1024位的兩倍嗎?或者兩者的差別十分巨大?
研究才剛剛觸及皮毛。有些攻擊僅對一小部分報文(message)有效,攻擊機會非常渺茫。另一些攻擊則敞開了一切可能性。我們可以研究這些攻擊在實驗室中是如何工作的,但很難推而廣之研究它們是如何對數據產生威脅的。
計算的未來是一個謎
沒有人知道量子計算機是否有足夠的力量來解決重要的問題,但我們知道人們正不遺余力地公布這方面的進展。我們還知道,如果量子機器出現,有些加密算法將破解加密。很多加密科學家正在努力打造能夠抵抗量子計算機的新算法,但沒有人真正知道量子計算機的能力有多強大。量子計算機是否僅限于已知的算法?或者有人會找到另一種用量子計算機來破解所有新算法的方法。
加密數據并非安全數據
有時,加密十分牢靠。它將數據鎖在數學保險庫中,然后,不知何故,密鑰丟失了。備份加密數據很容易,但備份密鑰和密碼卻很難。如果你太謹小慎微,你最終很可能無法訪問數據。如果你意外身亡,很可能沒人能弄清密碼或丟失密鑰是什么。加密數據與安全數據不是一回事兒。加密數據其實很脆弱。
加密很容易,密鑰管理卻很難
有些加密標準是值得信賴的,因為它們是歷經千辛萬苦開發出來的。從開源庫中獲取一個加密標準并且確信加密是安全,這并不難。
然而,難點就在于,在需要密鑰的人之間分發密鑰。AES這樣的對稱加密系統要求密鑰通過安全通道單獨傳輸,但如果我們已經有安全通道,我們就不需要加密了。如果我們提前規劃好,我們通常可以將合適的密鑰交給合適的人保管。
公鑰系統使人們很容易在沒有提前會面的情況下建立安全路徑,但它們也不是沒有問題。你怎么知道你正在對某個人使用正確的公鑰?證書頒發機構是否值得信賴?人們仍需對系統放膽一試。
支持代碼是很脆弱的
密鑰分發并不是使加密開發人員噩夢連連的唯一方面。算法的很多部分都有可能泄漏信息,有時是故意泄露的。例如,將隨機數與報文混合是很常見的,但找到這些隨機數可能很棘手。有些所謂的隨機數生成器是有缺陷的,根本算不上隨機,而且由于它們是可預測的,人們可用其來猜測密鑰并破解報文。光有加密算法是不夠的。
共享硬件是很危險的
最近,由于云端成本低廉且十分靈活,有越來越多的代碼在云中運行。沒有人知道與你共享機器的鄰居在做什么,這就是問題所在。有很多漏洞可以讓一個軟件窺視同一臺計算機上另一個軟件所占用的內存。操作系統開發人員試圖阻止這樣的軟件,但新漏洞頻頻出現,如RowHammer等。這就好像云中的機器會遭到數十種可能的攻擊,而我們才剛剛開始意識到問題的嚴重性。
被黑的硬件是很難檢測到的
你見過芯片上的晶體管嗎?你確定它們已經忠于你,忠于軟件開發人員?有些聰明的黑客對某一芯片進行逆向工程并發現內有乾坤,即里面有一個由隨機字節串觸發的全能模式(god mode),非常隱秘且沒有任何記錄。到底是誰將這個模式植入芯片的?并沒有人出來邀功領賞。
數字簽名不過是轉移責任
一些最好的數字簽名算法,其背后的數學具有欺騙性并使人放松警惕。只有私鑰的所有者才能執行產生合法數字簽名的計算。這聽起來比手寫簽名要可信得多,因為連小學生都可以在不合格的試卷上偽造父母的簽名。
但真的是這樣嗎?私鑰不受人們的約束。數字簽名只能由有權使用私鑰的人生成。這個人可能是合法的所有者,或可能是某個黑入計算機或直接偷窺密碼或植入鍵盤記錄器或發現了獲取密鑰的方法的人。如果你的密鑰保存在計算機里,而且你的計算機接入了網絡,那么這可能是世界上任何一個同樣接入了網絡的人。
科學家正在努力打造安全的硬件和強大的解決方案,但他們充其量也只是使攻擊者沒那么容易發動攻擊。但即使是普普通通的弱點也能輕松地顛覆精妙絕倫的數學。
有人保持沉默
有些數學家和密碼學專家喜歡公開談論加密技術。而另一些數學家和密碼學專家則沉默不語。我們甚至不知道究竟有多少人對此保持沉默。
社會掌握了那么多代碼和密碼方面的知識,這簡直是一個奇跡。但是,我們使用加密技術的次數越多,對所有弱點保持沉默的動機就越大。當白花花的銀子和真正的秘密流經由加密武裝的互聯網管道時,掌握任何一個漏洞都價值連城。換句話說,我們使用加密越頻繁,秘密就越深藏不露,越不可告人。