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