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