加密技術挑戰
⑴ 數據加密標準的DES挑戰賽
從1997年開始,RSA公司發起了一個稱作「向DES挑戰」的競技賽。在首屆挑戰賽上,羅克·維瑟用了96天時間破解了用DES加密的一段信息。
1999年12月22日,RSA公司發起「第三屆DES挑戰賽(DES Challenge III)」。2000年1月19日,由電子邊疆基金會組織研製的25萬美元的DES解密機以22.5小時的戰績,成功地破解了DES加密演算法。DES已逐漸完成了它的歷史使命。
⑵ 加密技術06-加密總結
對稱密碼是一種用相同的密鑰進行加密和解密的技術,用於確保消息的機密性。在對稱密碼的演算法方面,目前主要使用的是 AES。盡管對稱密碼能夠確保消息的機密性,但需要解決將解密密鑰配送給接受者的密鑰配送問題。
主要演算法
DES
數據加密標准(英語:Data Encryption Standard,縮寫為 DES)是一種對稱密鑰加密塊密碼演算法,1976年被美國聯邦政府的國家標准局確定為聯邦資料處理標准(FIPS),隨後在國際上廣泛流傳開來。它基於使用56位密鑰的對稱演算法。
DES現在已經不是一種安全的加密方法,主要因為它使用的56位密鑰過短。
原理請參考: 加密技術01-對稱加密-DES原理
3DES
三重數據加密演算法(英語:Triple Data Encryption Algorithm,縮寫為TDEA,Triple DEA),或稱3DES(Triple DES),是一種對稱密鑰加密塊密碼,相當於是對每個數據塊應用三次DES演算法。由於計算機運算能力的增強,原版DES由於密鑰長度過低容易被暴力破解;3DES即是設計用來提供一種相對簡單的方法,即通過增加DES的密鑰長度來避免類似的攻擊,而不是設計一種全新的塊密碼演算法。
注意:有3個獨立密鑰的3DES的密鑰安全性為168位,但由於中途相遇攻擊(知道明文和密文),它的有效安全性僅為112位。
3DES使用「密鑰包」,其包含3個DES密鑰,K1,K2和K3,均為56位(除去奇偶校驗位)。
密文 = E k3 (D k2 (E k1 (明文)))
而解密則為其反過程:
明文 = D k3 (E k2 (D k1 (密文)))
AES
AES 全稱 Advanced Encryption Standard(高級加密標准)。它的出現主要是為了取代 DES 加密演算法的,因為 DES 演算法的密鑰長度是 56 位,因此演算法的理論安全強度是 56 位。於是 1997 年 1 月 2 號,美國國家標准技術研究所宣布希望徵集高級加密標准,用以取代 DES。AES 也得到了全世界很多密碼工作者的響應,先後有很多人提交了自己設計的演算法。最終有5個候選演算法進入最後一輪:Rijndael,Serpent,Twofish,RC6 和 MARS。最終經過安全性分析、軟硬體性能評估等嚴格的步驟,Rijndael 演算法獲勝。
AES 密碼與分組密碼 Rijndael 基本上完全一致,Rijndael 分組大小和密鑰大小都可以為 128 位、192 位和 256 位。然而 AES 只要求分組大小為 128 位,因此只有分組長度為 128 位的 Rijndael 才稱為 AES 演算法。
本文 AES 默認是分組長度為 128 位的 Rijndael 演算法
原理請參考: 加密技術02-對稱加密-AES原理
演算法對比
公鑰密碼是一種用不同的密鑰進行加密和解密的技術,和對稱密碼一樣用於確保消息的機密性。使用最廣泛的一種公鑰密碼演算法是 RAS。和對稱密碼相比,公鑰密碼的速度非常慢,因此一般都會和對稱密碼一起組成混合密碼系統來使用。公鑰密碼能夠解決對稱密碼中的密鑰交換問題,但存在通過中間人攻擊被偽裝的風險,因此需要對帶有數字簽名的公鑰進行認證。
公鑰密碼學的概念是為了解決對稱密碼學中最困難的兩個問題而提出
應用場景
幾個誤解
主要演算法
Diffie–Hellman 密鑰交換
迪菲-赫爾曼密鑰交換(英語:Diffie–Hellman key exchange,縮寫為D-H) 是一種安全協議。它可以讓雙方在完全沒有對方任何預先信息的條件下通過不安全信道創建起一個密鑰。這個密鑰可以在後續的通訊中作為對稱密鑰來加密通訊內容。公鑰交換的概念最早由瑞夫·墨克(Ralph C. Merkle)提出,而這個密鑰交換方法,由惠特菲爾德·迪菲(Bailey Whitfield Diffie)和馬丁·赫爾曼(Martin Edward Hellman)在1976年發表,也是在公開文獻中發布的第一個非對稱方案。
Diffie–Hellman 演算法的有效性是建立在計算離散對數很困難的基礎上。簡單地說,我們可如下定義離散對數。首先定義素數 p 的本原跟。素數 p 的本原根是一個整數,且其冪可以產生 1 到 p-1 之間所有整數,也就是說若 a 是素數 p 的本原根,則
a mod p, a 2 mod p,..., a p-1 mod p 各不相同,它是整數 1 到 p-1 的一個置換。
對任意整數 b 和素數 p 的本原跟 a,我們可以找到唯一的指數 i 使得
b ≡ a i (mod p) 其中 0 <= i <= p-1
其中 a, b, p 這些是公開的,i 是私有的,破解難度就是計算 i 的難度。
Elgamal
1985年,T.Elgamal 提出了一種基於離散對數的公開密鑰體制,一種與 Diffie-Hellman 密鑰分配體制密切相關。Elgamal 密碼體系應用於一些技術標准中,如數字簽名標准(DSS) 和 S/MIME 電子郵件標准。
基本原理就是利用 Diffie–Hellman 進行密鑰交換,假設交換的密鑰為 K,然後用 K 對要發送的消息 M,進行加密處理。
所以 Elgamal 的安全系數取決於 Diffie–Hellman 密鑰交換。
另外 Elgamal 加密後消息發送的長度會增加一倍。
RSA
MIT 的羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)在 1977 年提出並於 1978 年首次發表的演算法。RSA 是最早滿足要求的公鑰演算法之一,自誕生日起就成為被廣泛接受且被實現的通用的公鑰加密方法。
RSA 演算法的有效性主要依據是大數因式分解是很困難的。
原理請參考: 加密技術03-非對稱加密-RSA原理
ECC
大多數使用公鑰密碼學進行加密和數字簽名的產品和標准都使用 RSA 演算法。我們知道,為了保證 RSA 使用的安全性,最近這些年來密鑰的位數一直在增加,這對使用 RSA 的應用是很重的負擔,對進行大量安全交易的電子商務更是如此。近來,出現的一種具有強大競爭力的橢圓曲線密碼學(ECC)對 RSA 提出了挑戰。在標准化過程中,如關於公鑰密碼學的 IEEE P1363 標准中,人們也已考慮了 ECC。
與 RSA 相比,ECC 的主要誘人之處在於,它可以使用比 RSA 短得多的密鑰得到相同安全性,因此可以減少處理負荷。
ECC 比 RSA 或 Diffie-Hellman 原理復雜很多,本文就不多闡述了。
演算法對比
公鑰密碼體制的應用
密碼分析所需計算量( NIST SP-800-57 )
註:L=公鑰的大小,N=私鑰的大小
散列函數是一種將長消息轉換為短散列值的技術,用於確保消息的完整性。在散列演算法方面,SHA-1 曾被廣泛使用,但由於人們已經發現了一些針對該演算法理論上可行的攻擊方式,因此該演算法不應再被用於新的用途。今後我們應該主要使用的演算法包括目前已經在廣泛使用的 SHA-2,以及具有全新結構的 SHA-3 演算法。散列函數可以單獨使用,也可以作為消息認證、數字簽名以及偽隨機數生成器等技術的組成元素來使用。
主要應用
主要演算法
MD5
MD5消息摘要演算法(英語:MD5 Message-Digest Algorithm),一種被廣泛使用的密碼散列函數,可以產生出一個 128 位( 16 位元組,被表示為 32 位十六進制數字)的散列值(hash value),用於確保信息傳輸完整一致。MD5 由美國密碼學家羅納德·李維斯特(Ronald Linn Rivest)設計,於 1992 年公開,用以取代 MD4 演算法。這套演算法的程序在 RFC 1321 中被加以規范。
2009年,中國科學院的謝濤和馮登國僅用了 2 20.96 的碰撞演算法復雜度,破解了MD5的碰撞抵抗,該攻擊在普通計算機上運行只需要數秒鍾。2011年,RFC 6151 禁止MD5用作密鑰散列消息認證碼。
原理請參考: 加密技術04-哈希演算法-MD5原理
SHA-1
SHA-1(英語:Secure Hash Algorithm 1,中文名:安全散列演算法1)是一種密碼散列函數,美國國家安全局設計,並由美國國家標准技術研究所(NIST)發布為聯邦資料處理標准(FIPS)。SHA-1可以生成一個被稱為消息摘要的160位(20位元組)散列值,散列值通常的呈現形式為40個十六進制數。
2005年,密碼分析人員發現了對SHA-1的有效攻擊方法,這表明該演算法可能不夠安全,不能繼續使用,自2010年以來,許多組織建議用SHA-2或SHA-3來替換SHA-1。Microsoft、Google以及Mozilla都宣布,它們旗下的瀏覽器將在2017年停止接受使用SHA-1演算法簽名的SSL證書。
2017年2月23日,CWI Amsterdam與Google宣布了一個成功的SHA-1碰撞攻擊,發布了兩份內容不同但SHA-1散列值相同的PDF文件作為概念證明。
2020年,針對SHA-1的選擇前綴沖突攻擊已經實際可行。建議盡可能用SHA-2或SHA-3取代SHA-1。
原理請參考: 加密技術05-哈希演算法-SHA系列原理
SHA-2
SHA-2,名稱來自於安全散列演算法2(英語:Secure Hash Algorithm 2)的縮寫,一種密碼散列函數演算法標准,由美國國家安全局研發,由美國國家標准與技術研究院(NIST)在2001年發布。屬於SHA演算法之一,是SHA-1的後繼者。其下又可再分為六個不同的演算法標准,包括了:SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256。
SHA-2 系列的演算法主要思路和 SHA-1 基本一致
原理請參考: 加密技術05-哈希演算法-SHA系列原理
SHA-3
SHA-3 第三代安全散列演算法(Secure Hash Algorithm 3),之前名為 Keccak 演算法。
Keccak 是一個加密散列演算法,由 Guido Bertoni,Joan Daemen,Michaël Peeters,以及 Gilles Van Assche 在 RadioGatún 上設計。
2012年10月2日,Keccak 被選為 NIST 散列函數競賽的勝利者。SHA-2 目前沒有出現明顯的弱點。由於對 MD5、SHA-0 和 SHA-1 出現成功的破解,NIST 感覺需要一個與之前演算法不同的,可替換的加密散列演算法,也就是現在的 SHA-3。
SHA-3 在2015年8月5日由 NIST 通過 FIPS 202 正式發表。
原理請參考: 加密技術05-哈希演算法-SHA系列原理
演算法對比
⑶ 信息加密技術的加密技術分析
加密就是通過密碼算術對數據進行轉化,使之成為沒有正確密鑰任何人都無法讀懂的報文。而這些以無法讀懂的形式出現的數據一般被稱為密文。為了讀懂報文,密文必須重新轉變為它的最初形式--明文。而含有用來以數學方式轉換報文的雙重密碼就是密鑰。在這種情況下即使一則信息被截獲並閱讀,這則信息也是毫無利用價值的。而實現這種轉化的演算法標准,據不完全統計,到現在為止已經有近200多種。在這里,主要介紹幾種重要的標准。按照國際上通行的慣例,將這近200種方法按照雙方收發的密鑰是否相同的標准劃分為兩大類:一種是常規演算法(也叫私鑰加密演算法或對稱加密演算法),其特徵是收信方和發信方使用相同的密鑰,即加密密鑰和解密密鑰是相同或等價的。比較著名的常規密碼演算法有:美國的DES及其各種變形,比如3DES、GDES、New DES和DES的前身Lucifer; 歐洲的IDEA;日本的FEAL N、LOKI?91、Skipjack、RC4、RC5以及以代換密碼和轉輪密碼為代表的古典密碼等。在眾多的常規密碼中影響最大的是DES密碼,而最近美國NIST(國家標准與技術研究所)推出的AES將有取代DES的趨勢,後文將作出詳細的分析。常規密碼的優點是有很強的保密強度,且經受住時間的檢驗和攻擊,但其密鑰必須通過安全的途徑傳送。因此,其密鑰管理成為系統安全的重要因素。另外一種是公鑰加密演算法(也叫非對稱加密演算法)。其特徵是收信方和發信方使用的密鑰互不相同,而且幾乎不可能從加密密鑰推導解密密鑰。比較著名的公鑰密碼演算法有:RSA、背包密碼、McEliece密碼、Diffe Hellman、Rabin、Ong Fiat Shamir、零知識證明的演算法、橢圓曲線、EIGamal演算法等等⑷。最有影響的公鑰密碼演算法是RSA,它能抵抗到目前為止已知的所有密碼攻擊,而最近勢頭正勁的ECC演算法正有取代RSA的趨勢。公鑰密碼的優點是可以適應網路的開放性要求,且密鑰管理問題也較為簡單,尤其可方便的實現數字簽名和驗證。但其演算法復雜,加密數據的速率較低。盡管如此,隨著現代電子技術和密碼技術的發展,公鑰密碼演算法將是一種很有前途的網路安全加密體制。這兩種演算法各有其短處和長處,在下面將作出詳細的分析。 在私鑰加密演算法中,信息的接受者和發送者都使用相同的密鑰,所以雙方的密鑰都處於保密的狀態,因為私鑰的保密性必須基於密鑰的保密性,而非演算法上。這在硬體上增加了私鑰加密演算法的安全性。但同時我們也看到這也增加了一個挑戰:收發雙方都必須為自己的密鑰負責,這種情況在兩者在地理上分離顯得尤為重要。私鑰演算法還面臨這一個更大的困難,那就是對私鑰的管理和分發十分的困難和復雜,而且所需的費用十分的龐大。比如說,一個n個用戶的網路就需要派發n(n-1)/2個私鑰,特別是對於一些大型的並且廣域的網路來說,其管理是一個十分困難的過程,正因為這些因素從而決定了私鑰演算法的使用范圍。而且,私鑰加密演算法不支持數字簽名,這對遠距離的傳輸來說也是一個障礙。另一個影響私鑰的保密性的因素是演算法的復雜性。現今為止,國際上比較通行的是DES、3DES以及最近推廣的AES。
數據加密標准(Data Encryption Standard)是IBM公司1977年為美國政府研製的一種演算法。DES是以56 位密鑰為基礎的密碼塊加密技術。它的加密過程一般如下:
① 一次性把64位明文塊打亂置換。
② 把64位明文塊拆成兩個32位塊;
③ 用機密DES密鑰把每個32位塊打亂位置16次;
④ 使用初始置換的逆置換。
但在實際應用中,DES的保密性受到了很大的挑戰,1999年1月,EFF和分散網路用不到一天的時間,破譯了56位的DES加密信息。DES的統治地位受到了嚴重的影響,為此,美國推出DES的改進版本-- 三重加密(triple Data Encryption Standard)即在使用過程中,收發雙方都用三把密鑰進行加解密,無疑這種3*56式的加密方法大大提升了密碼的安全性,按現在的計算機的運算速度,這種破解幾乎是不可能的。但是我們在為數據提供強有力的安全保護的同時,也要化更多的時間來對信息進行三次加密和對每個密層進行解密。同時在這種前提下,使用這種密鑰的雙發都必須擁有3個密鑰,如果丟失了其中任何一把,其餘兩把都成了無用的密鑰。這樣私鑰的數量一下又提升了3倍,這顯然不是我們想看到的。於是美國國家標准與技術研究所推出了一個新的保密措施來保護金融交易。高級加密標准(Advanced Encryption Standard)美國國家技術標准委員會(NIST)在2000年10月選定了比利時的研究成果Rijndael作為AES的基礎。Rijndael是經過三年漫長的過程,最終從進入候選的五種方案中挑選出來的。
AES內部有更簡潔精確的數學演算法,而加密數據只需一次通過。AES被設計成高速,堅固的安全性能,而且能夠支持各種小型設備。AES與3DES相比,不僅是安全性能有重大差別,使用性能和資源有效利用上也有很大差別。雖然到現在為止,我還不了解AES的具體演算法但是從下表可以看出其與3DES的巨大優越性。
還有一些其他的一些演算法,如美國國家安全局使用的飛魚(Skipjack)演算法,不過它的演算法細節始終都是保密的,所以外人都無從得知其細節類容;一些私人組織開發的取代DES的方案:RC2、RC4、RC5等。 面對在執行過程中如何使用和分享密鑰及保持其機密性等問題,1975年Whitefield Diffe和Marti Hellman提出了公開的密鑰密碼技術的概念,被稱為Diffie-Hellman技術。從此公鑰加密演算法便產生了。
由於採取了公共密鑰,密鑰的管理和分發就變得簡單多了,對於一個n個用戶的網路來說,只需要2n個密鑰便可達到密度。同時使得公鑰加密法的保密性全部集中在及其復雜的數學問題上,它的安全性因而也得到了保證。但是在實際運用中,公共密鑰加密演算法並沒有完全的取代私鑰加密演算法。其重要的原因是它的實現速度遠遠趕不上私鑰加密演算法。又因為它的安全性,所以常常用來加密一些重要的文件。自公鑰加密問世以來,學者們提出了許多種公鑰加密方法,它們的安全性都是基於復雜的數學難題。根據所基於的數學難題來分類,有以下三類系統目前被認為是安全和有效的:大整數因子分解系統(代表性的有RSA)、橢圓曲線離散對數系統(ECC)和離散對數系統 (代表性的有DSA),下面就作出較為詳細的敘述。
RSA演算法是由羅納多·瑞維斯特(Rivet)、艾迪·夏彌爾(Shamir)和里奧納多·艾德拉曼(Adelman)聯合推出的,RAS演算法由此而得名。它的安全性是基於大整數素因子分解的困難性,而大整數因子分解問題是數學上的著名難題,至今沒有有效的方法予以解決,因此可以確保RSA演算法的安全性。RSA系統是公鑰系統的最具有典型意義的方法,大多數使用公鑰密碼進行加密和數字簽名的產品和標准使用的都是RSA演算法。它得具體演算法如下:
① 找兩個非常大的質數,越大越安全。把這兩個質數叫做P和Q。
② 找一個能滿足下列條件得數字E:
A. 是一個奇數。
B. 小於P×Q。
C. 與(P-1)×(Q-1)互質,只是指E和該方程的計算結果沒有相同的質數因子。
③ 計算出數值D,滿足下面性質:((D×E)-1)能被(P-1)×(Q-1)整除。
公開密鑰對是(P×Q,E)。
私人密鑰是D。
公開密鑰是E。
解密函數是:
假設T是明文,C是密文。
加密函數用公開密鑰E和模P×Q;
加密信息=(TE)模P×Q。
解密函數用私人密鑰D和模P×Q;
解密信息=(CD)模P×Q。
橢圓曲線加密技術(ECC)是建立在單向函數(橢圓曲線離散對數)得基礎上,由於它比RAS使用得離散對數要復雜得多。而且該單向函數比RSA得要難,所以與RSA相比,它有如下幾個優點:
安全性能更高 加密演算法的安全性能一般通過該演算法的抗攻擊強度來反映。ECC和其他幾種公鑰系統相比,其抗攻擊性具有絕對的優勢。如160位 ECC與1024位 RSA有相同的安全強度。而210位 ECC則與2048bit RSA具有相同的安全強度。
計算量小,處理速度快 雖然在RSA中可以通過選取較小的公鑰(可以小到3)的方法提高公鑰處理速度,即提高加密和簽名驗證的速度,使其在加密和簽名驗證速度上與ECC有可比性,但在私鑰的處理速度上(解密和簽名),ECC遠比RSA、DSA快得多。因此ECC總的速度比RSA、DSA要快得多。
存儲空間佔用小 ECC的密鑰尺寸和系統參數與RSA、DSA相比要小得多,意味著它所佔的存貯空間要小得多。這對於加密演算法在IC卡上的應用具有特別重要的意義。
帶寬要求低 當對長消息進行加解密時,三類密碼系統有相同的帶寬要求,但應用於短消息時ECC帶寬要求卻低得多。而公鑰加密系統多用於短消息,例如用於數字簽名和用於對對稱系統的會話密鑰傳遞。帶寬要求低使ECC在無線網路領域具有廣泛的應用前景。
ECC的這些特點使它必將取代RSA,成為通用的公鑰加密演算法。比如SET協議的制定者已把它作為下一代SET協議中預設的公鑰密碼演算法。