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