現(xiàn)如今,常用的加密算法不外乎私鑰加密方法和公鑰加密方法。私鑰加密方法可以用來保護關(guān)鍵/敏感數(shù)據(jù)。密鑰密文只需一把鑰匙(由通信雙方共享)破解,因此被稱為對稱性密碼設(shè)計學。
1949 年,貝爾實驗室的 Claude Shannon 公布了私鑰加密方法的基本理論。數(shù)十年來的演化已經(jīng)孕育出了很多高質(zhì)量的私鑰加密算法。然而,直到 1975 年,一個名為 DES 的強大私鑰加密方法才得到了廣泛使用。
公鑰/非對稱性密碼設(shè)計學誕生于 20 世紀 70 年代中期。公鑰加密方法需要用到一對密鑰,分別是對外公開的公鑰和相對應(yīng)的由個人持有的私鑰。例如,接收方可以創(chuàng)建一對密鑰,并將公鑰分享給任何想要向 ta 發(fā)送密文的人。發(fā)送方可以使用公鑰加密發(fā)送給接收方的信件,接收方可以用私鑰來解密。
加密算法的強大程度取決于三個主要因素:
基礎(chǔ)設(shè)施 —— 如果相關(guān)密碼設(shè)計主要由軟件實現(xiàn),那么底層基礎(chǔ)將是最薄弱的環(huán)節(jié)。如果你總是會加密某些信息,那么對黑客來說,最好的做法是黑進你的電腦,在信息被加密前將其偷到手。相比破解密鑰來說,入侵系統(tǒng)或者使用病毒感染系統(tǒng)要容易得多。很多情況下,破解密鑰最簡單的方法是竊聽用戶,并在密鑰被傳入加密程序時進行攔截。
密鑰長度—— 在密碼設(shè)計學中,密鑰長度很重要。如果攻擊者無法安裝按鍵監(jiān)視器(keystroke monitor),那么破解密文的最佳方法就是通過不斷的試錯來暴力破解。實用的加密算法必須將密鑰長度設(shè)定得足夠長,來杜絕暴力破解的可能性。但是,隨著電腦運算速度一年比一年快,密鑰長度的安全閾值也需要一直提高。 專家們承認,小于等于 64 位的密鑰,包括 DES 密鑰在內(nèi),都很容易被暴力破解。在 1999 年,電子前線基金會(Electronic Frontier Foundation)資助開發(fā)了一種叫做 “Deep Crack” 的設(shè)備,可以在三天以內(nèi)破解一個 DES 加密密鑰。所以現(xiàn)在加密算法的密鑰長度一般都在 100 位以上,少數(shù)算法支持 256 位的密鑰。
算法質(zhì)量 —— 算法質(zhì)量本身是很難評價的,基于一個現(xiàn)有算法去構(gòu)造一個看似可行的算法是很容易的,但只有經(jīng)驗老道的專家仔細檢查才能發(fā)現(xiàn)其中的微妙漏洞。算法中的漏洞會產(chǎn)生 “捷徑”,讓攻擊者可以在暴力搜索攻擊時候跳過大批密鑰。舉個例子,流行的壓縮程序 PKZIP 以前繼承了一個定制的的加密功能,使用 64 位的密鑰。理論上來說,應(yīng)該要 264 嘗試才能試完所有的密鑰。但實際上,有捷徑可走,所以攻擊 PKZIP 加密算法只需 227 次嘗試就能破解密文。發(fā)現(xiàn)這樣漏洞的唯一辦法就是嘗試破解算法,一般來說就是使用對付其它算法的技巧。只有在經(jīng)過這樣的分析和攻擊之后,算法的質(zhì)量才會展現(xiàn)出來,所以,還沒有找出這樣的漏洞,并不代表這個算法永遠不被發(fā)現(xiàn)有漏洞。
算法的類型
DES —— DES 已經(jīng)經(jīng)受住了時間的考驗,多來年出版的研究都證明了其質(zhì)量。經(jīng)過四分之一世紀的研究之后,研究員也只能找出一些猜測式的攻擊方法,而且實用性還不如暴力破解。DES 算法的唯一真實弱點就是它過短的密鑰長度(56 位)。
三重 DES —— 使用 112 位或者 168 位的密鑰連續(xù)三次使用 DES 算法。最終這個算法會比其它有類似強度的算法慢得多,而且,因為計算機還是強大到了能破解這個算法,這一方法已經(jīng)過時了。
AES —— 高級加密標準(AES)支持三種密鑰大小,128 位的、192 位的和 256 位的,而數(shù)據(jù)則按 128 位為一個組?,F(xiàn)在 AES 被當成標準,全世界都在使用。
Rijndael 密碼表
DES 是明確設(shè)計為內(nèi)置在硬件中的,從沒考慮過怎么讓它在軟件層面實現(xiàn)。后來,NIST 評估了執(zhí)行效率和存儲需求,保證 AES 能在 C 語言和 Java 語言中工作,既能在工作站中運行,也能在資源更有限的環(huán)境比如嵌入式 ARM 處理器和智能卡中運行。
雖然荷蘭研究院 Vincent Rijman 和 Joan Daemen 發(fā)明的 Rijndael 算法贏得了 NIST 精算,但所有進入 AES 決賽的算法相對比 DES 和 DES 的替代品都顯現(xiàn)出了巨大的進步。所有這些算法都是分組加密(block cipher)算法并且支持 128 位乃至更大的密鑰;沒有一種算法有嚴重的漏洞;最終選擇其實是密碼設(shè)計強度和性能的權(quán)衡。
AES 基于一種叫做 “置換-排列” 的設(shè)計原理,在計算中既有置換,又有排列,無論在軟件層還是硬件層,計算起來都很快。不像其前輩 DES,AES 不使用費斯托密碼(Feistel)原理,AES 是 Rijndael 密碼的一種變種,使用固定的 128 位大小作為輸入,而且支持 128 位、192 位 和 256 位的臨界維數(shù)(critical dimension)。相反,Rijndael 設(shè)計規(guī)范僅指定了輸入組和密鑰的大小都是 32 的倍數(shù),最小是 128 位,最大是 256 位。
AES 在一個 4×4 的字節(jié)矩陣上操作,這些舉證叫做 “狀態(tài)”。但是 Rijndael 算法的某些版本的輸入組更大,因此矩陣更大。大部分 AES 計算都是在一個特定的有限域內(nèi)完成的。
AES 算法所用的密鑰大小會相應(yīng)決定轉(zhuǎn)換操作的重復(fù)輪數(shù)。對應(yīng)關(guān)系如下:
128 位密鑰對應(yīng) 10 輪重復(fù)
192 位密鑰對應(yīng) 12 輪重復(fù)
256 位密鑰對應(yīng) 14 輪重復(fù)
每一輪都包含幾個處理步驟,而每個步驟都包含 4 個相似大不同的階段,其中包括取決于加密密鑰本身的一個結(jié)算。在解密的時候,需要用同一把密鑰來反向重復(fù)操作、將密文恢復(fù)成原文。
量子密碼學
上面這個圖示說明了量子密鑰分發(fā)方案(BB84 協(xié)議),它實現(xiàn)了一種包含量子力學的密碼學協(xié)議,能夠保證安全通信。它讓通信雙方可以生成一個共享的隨機密鑰(是個對稱密鑰),這個密鑰只有他們雙方才知道,因此可以用于加解密消息。量子力學是一組描述組成宇宙的光子、電子和其它粒子運動規(guī)律的科學定律。
業(yè)界一直在盡最大努力尋找能夠抵抗黑客攻擊的最高安全手段,而新一代的密碼設(shè)計學已經(jīng)從數(shù)學轉(zhuǎn)向物理學。量子力學科學家已經(jīng)進入密碼學的世界了,這些科學家希望利用量子力學的原理來發(fā)送無法被黑的消息。這就是 “量子密碼學” 的大概,它是在過去這幾十年里才成長起來的。
量子密碼學將自己的根扎在量子物理學中。組成我們這個宇宙的基本粒子具有內(nèi)在的不確定性,可能同時存在于此處或彼處,也可以有不止一種狀態(tài)。只有在撞上一個物體或者被測量時,它們才會顯現(xiàn)出運動現(xiàn)象。
密碼設(shè)計學是信息安全的一個迷人領(lǐng)域,也是最復(fù)雜的學科之一。不過,我們從簡單的凱撒密碼和波利比烏斯密碼介紹到多輪加密的 DES 和 AES 算法,相信讀者會覺得理解起密碼算法的概念來不那么復(fù)雜了。
-
AES
+關(guān)注
關(guān)注
0文章
100瀏覽量
33189 -
DES
+關(guān)注
關(guān)注
0文章
64瀏覽量
48182 -
加密算法
+關(guān)注
關(guān)注
0文章
210瀏覽量
25522
發(fā)布評論請先 登錄
相關(guān)推薦
評論