保形加密演算法
❶ 信息加密技術的加密技術分析
加密就是通過密碼算術對數據進行轉化,使之成為沒有正確密鑰任何人都無法讀懂的報文。而這些以無法讀懂的形式出現的數據一般被稱為密文。為了讀懂報文,密文必須重新轉變為它的最初形式--明文。而含有用來以數學方式轉換報文的雙重密碼就是密鑰。在這種情況下即使一則信息被截獲並閱讀,這則信息也是毫無利用價值的。而實現這種轉化的演算法標准,據不完全統計,到現在為止已經有近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協議中預設的公鑰密碼演算法。
❷ 802.11i標准使用什麼加密演算法進行數據加密
一種數據加密演算法,用於提供等同於有線區域網的保護能力。它的安全技術源自於名為RC4的rsa數據加密技術,是無線區域網WLAN的必要的安全防護層。目前常見的是64位wep加密和128位wep加密。wpa(WiFiProtectedAccess
,WiFi網路安全存取)。wpa協議是一種保護無線網路(WiFi)安全的系統,它是在前一代有線等效加密(wep)的基礎上產生的,解決了前任wep的缺陷問題,它使用tkip(臨時密鑰完整性)協議,是ieee
802.11i標准中的過渡方案
。其中wpa-PSK主要面向個人用戶。
wpa2,即wpa加密的升級版。它是WiFi聯盟驗證過的ieee 802.11i標準的認證形式,wpa2實現了802.11i的強制性元素,特別是Michael演算法被公認徹底安全的ccmp(計數器模式密碼塊鏈消息完整碼協議)訊息認證碼所取代、而RC4加密演算法也被aes(高級加密)所取代。
wpa-PSK+wpa2-PSK。從字面便可以看出,很明顯,最後一種是兩種加密演算法的組合,可以說是強強聯手。wpa-PSK 也叫做 wpa-Personal(wpa個人)。wpa-PSK使用tkip加密方法把無線設備和接入點聯系起來.wpa2-PSK使用aes加密方法把無線設備和接入點聯系起來。
1、聊勝於無的wep
wep作為一種老式的加密手段,它的特點是使用一個靜態的密鑰來加密所有的通信
,這就意味著,網管人員如果想更新密鑰,必須親自訪問每台主機,並且其所採用的RC4的rsa數據加密技術具有可預測性,對於入侵者來說很容易截取和破解加密密鑰,使用戶的安全防護形同虛設,因此如非迫不得已,不建議選擇此種安全模式。
2、升級後的WPA
繼WEP之後,人們將期望轉向了其升級後的WPA,與之前WEP的靜態密鑰不同,WPA需要不斷的轉換密鑰。WPA採用有效的密鑰分發機制,可以跨越不同廠商的無線網卡實現應用。它作為WEP的升級版,在安全的防護上比WEP更為周密,主要體現在身份認證、加密機制和數據包檢查等方面,而且它還提升了無線網路的管理能力。
3、追求,永無止境:WPA2
WPA2是WiFi聯盟驗證過的ieee 802.11i標準的認證形式,WPA2實現了802.11i的強制性元素,特別是Michael演算法被公認徹底安全的ccmp(計數器模式密碼塊鏈消息完整碼協議)訊息認證碼所取代、而RC4加密演算法也被AES所取代。
目前WPA2加密方式的安全防護能力非常出色,只要用戶的無線網路設備均能夠支持WPA2加密,那麼恭喜你,你的無線網路處於一個非常安全的境地。
❸ 無線路由器中 WEP wpa wpa2 這三種加密方式有什麼區別
區別:
1、加密技術
WEP:RC4的RSA數據加密技術
WPA:RC4的RSA數據加密技術
WPA2:AES加密演算法
2、安全性
WEP:使用一個靜態的密鑰來加密所有的通信,那麼如果網管人員想更新密鑰,就得親自訪問每台主機
WPA:與之前WEP的靜態密鑰不同,WPA需要不斷的轉換密鑰。WPA採用有效的密鑰分發機制
WPA2:實現了802.11i的強制性元素,特別是Michael演算法被公認徹底安全的CCMP(計數器模式密碼塊鏈消息完整碼協議)訊息認證碼所取代
(3)保形加密演算法擴展閱讀
無線網路中已存在好幾種加密技術,由於安全性能的不同,無線設備的不同技術支持,支持的加密技術也不同, 一般常見的有:WEP、WPA/WPA2、WPA-PSK/WPA2-PSK
在802.11i頒布之後,Wi-Fi聯盟推出了WPA2,它支持AES(高級加密演算法),因此它需要新的硬體支持,它使用CCMP(計數器模式密碼塊鏈消息完整碼協議)。
在WPA/WPA2中,PTK的生成依賴PMK,而PMK獲的有兩種方式,一個是PSK的形式就是預共享密鑰,在這種方式中PMK=PSK,而另一種方式中,需要認證伺服器和站點進行協商來產生PMK。
❹ 有哪些加密方法比較經典或者說說加密的歷史.
加密之所以安全,絕非因不知道加密解密演算法方法,而是加密的密鑰是絕對的隱藏,流行的RSA和AES加密演算法都是完全公開的,一方取得已加密的數據,就算知道加密演算法也好,若沒有加密的密鑰,也不能打開被加密保護的信息。
加密作為保障數據安全的一種方式,它不是才有的,它產生的歷史相當久遠,它是起源於要追溯於公元前2000年(幾個世紀了),雖然它不是我們所講的加密技術(甚至不叫加密),但作為一種加密的概念,確實早在幾個世紀前就誕生了。
當時埃及人是最先使用特別的象形文字作為信息編碼的,隨著時間推移,巴比倫、美索不達米亞和希臘文明都開始使用一些方法來保護他們的書面信息。
近期加密技術主要應用於軍事領域,如美國獨立戰爭、美國內戰和兩次世界大戰。最廣為人知的編碼機器是German Enigma機,在第二次世界大戰中德國人利用它創建了加密信息。此後,由於Alan Turing和Ultra計劃以及其他人的努力,終於對德國人的密碼進行了破解。
(4)保形加密演算法擴展閱讀:
相關標准
最早、最著名的保密密鑰或對稱密鑰加密演算法DES(Data Encryption Standard)是由IBM公司在70年代發展起來的,並經政府的加密標准篩選後,於1976年11月被美國政府採用,DES隨後被美國國家標准局和美國國家標准協會(American National Standard Institute,ANSI)承認。
DES使用56位密鑰對64位的數據塊進行加密,並對64位的數據塊進行16輪編碼。與每輪編碼時,一個48位的"每輪"密鑰值由56位的完整密鑰得出來。
DES用軟體進行解碼需用很長時間,而用硬體解碼速度非常快。幸運的是,當時大多數黑客並沒有足夠的設備製造出這種硬體設備。
在1977年,人們估計要耗資兩千萬美元才能建成一個專門計算機用於DES的解密,而且需要12個小時的破解才能得到結果。當時DES被認為是一種十分強大的加密方法。
❺ 誰知道DES加密演算法的原理
數據加密演算法 數據加密演算法DES 數據加密演算法(Data Encryption Algorithm,DEA)的數據加密標准(Data Encryption Standard,DES)是規范的描述,它出自 IBM 的研究工作,並在 1997 年被美國政府正式採納。它很可能是使用最廣泛的秘鑰系統,特別是在保護金融數據的安全中,最初開發的 DES 是嵌入硬 件中的。通常,自動取款機(Automated Teller Machine,ATM)都使用 DES。 DES 使用一個 56 位的密鑰以及附加的 8 位奇偶校驗位,產生最大 64 位的分組大小。這是一個迭代的分組密碼,使用稱為 Feistel 的技術,其中將加密的文本塊分成兩半。使用子密鑰對其中一半應用循環功能,然後將輸出與另一半進行「異或」運算;接著交換這兩半,這一過程會繼續下去,但最後一個循環不交換。DES 使用 16 個循環。 攻擊DES 的主要形式被稱為蠻力的或徹底密鑰搜索,即重復嘗試各種密鑰直到有一個符合為止。如果 DES 使用 56 位的密鑰,則可能的密鑰數量是 2 的 56 次方個。隨著計算機系統能力的不斷發展,DES 的安全性比它剛出現時會弱得多,然而從非關鍵性質的實際出發,仍可以認為它是足夠的。不過 ,DES 現在僅用於舊系統的鑒定,而更多地選擇新的加密標准 — 高級加密標准(Advanced Encryption Standard,AES)。 DES 的常見變體是三重 DES,使用 168 位的密鑰對資料進行三次加密的一種機制;它通常(但非始終)提供極其強大的安全性。如果三個 56 位的子元素都相同,則三重 DES 向後兼容 DES。 IBM 曾對 DES 擁有幾年的專利權,但是在 1983 年已到期,並且處於公有范圍中,允許在特定條件下可以免除專利使用費而使用。
❻ 對稱加密演算法的加密演算法主要有哪些
1、3DES演算法
3DES(即Triple DES)是DES向AES過渡的加密演算法(1999年,NIST將3-DES指定為過渡的加密標准),加密演算法,其具體實現如下:設Ek()和Dk()代表DES演算法的加密和解密過程,K代表DES演算法使用的密鑰,M代表明文,C代表密文,這樣:
3DES加密過程為:C=Ek3(Dk2(Ek1(M)))
3DES解密過程為:M=Dk1(EK2(Dk3(C)))
2、Blowfish演算法
BlowFish演算法用來加密64Bit長度的字元串。
BlowFish演算法使用兩個「盒」——unsignedlongpbox[18]和unsignedlongsbox[4,256]。
BlowFish演算法中,有一個核心加密函數:BF_En(後文詳細介紹)。該函數輸入64位信息,運算後,以64位密文的形式輸出。用BlowFish演算法加密信息,需要兩個過程:密鑰預處理和信息加密。
分別說明如下:
密鑰預處理:
BlowFish演算法的源密鑰——pbox和sbox是固定的。我們要加密一個信息,需要自己選擇一個key,用這個key對pbox和sbox進行變換,得到下一步信息加密所要用的key_pbox和key_sbox。具體的變化演算法如下:
1)用sbox填充key_sbox
2)用自己選擇的key8個一組地去異或pbox,用異或的結果填充key_pbox。key可以循環使用。
比如說:選的key是"abcdefghijklmn"。則異或過程為:
key_pbox[0]=pbox[0]abcdefgh;
key_pbox[1]=pbox[1]ijklmnab;
…………
…………
如此循環,直到key_pbox填充完畢。
3)用BF_En加密一個全0的64位信息,用輸出的結果替換key_pbox[0]和key_pbox[1],i=0;
4)用BF_En加密替換後的key_pbox,key_pbox[i+1],用輸出替代key_pbox[i+2]和key_pbox[i+3];
5)i+2,繼續第4步,直到key_pbox全部被替換;
6)用key_pbox[16]和key_pbox[17]做首次輸入(相當於上面的全0的輸入),用類似的方法,替換key_sbox信息加密。
信息加密就是用函數把待加密信息x分成32位的兩部分:xL,xRBF_En對輸入信息進行變換。
3、RC5演算法
RC5是種比較新的演算法,Rivest設計了RC5的一種特殊的實現方式,因此RC5演算法有一個面向字的結構:RC5-w/r/b,這里w是字長其值可以是16、32或64對於不同的字長明文和密文塊的分組長度為2w位,r是加密輪數,b是密鑰位元組長度。
(6)保形加密演算法擴展閱讀:
普遍而言,有3個獨立密鑰的3DES(密鑰選項1)的密鑰長度為168位(三個56位的DES密鑰),但由於中途相遇攻擊,它的有效安全性僅為112位。密鑰選項2將密鑰長度縮短到了112位,但該選項對特定的選擇明文攻擊和已知明文攻擊的強度較弱,因此NIST認定它只有80位的安全性。
對密鑰選項1的已知最佳攻擊需要約2組已知明文,2部,2次DES加密以及2位內存(該論文提到了時間和內存的其它分配方案)。
這在現在是不現實的,因此NIST認為密鑰選項1可以使用到2030年。若攻擊者試圖在一些可能的(而不是全部的)密鑰中找到正確的,有一種在內存效率上較高的攻擊方法可以用每個密鑰對應的少數選擇明文和約2次加密操作找到2個目標密鑰中的一個。
❼ 什麼是 保序加密
保序加密是在2004年提出的加密,但是那隻是曇花一現,很快就被破解了。
原理就是
if x1>x2
then f(x1)>f(x2)
但是這個用二分查找演算法,很快就可以破解。
❽ 誰幫我介紹下加密對稱演算法
A.對稱加密技術 a. 描述 對稱演算法(symmetric algorithm),有時又叫傳統密碼演算法,就是加密密鑰能夠從解密密鑰中推算出來,同時解密密鑰也可以從加密密鑰中推算出來。而在大多數的對稱演算法中,加密密鑰和解密密鑰是相同的。所以也稱這種加密演算法為秘密密鑰演算法或單密鑰演算法。它要求發送方和接收方在安全通信之前,商定一個密鑰。對稱演算法的安全性依賴於密鑰,泄漏密鑰就意味著任何人都可以對他們發送或接收的消息解密,所以密鑰的保密性對通信性至關重要。 b.特點分析 對稱加密的優點在於演算法實現後的效率高、速度快。 對稱加密的缺點在於密鑰的管理過於復雜。如果任何一對發送方和接收方都有他們各自商議的密鑰的話,那麼很明顯,假設有N個用戶進行對稱加密通信,如果按照上述方法,則他們要產生N(N-1)把密鑰,每一個用戶要記住或保留N-1把密鑰,當N很大時,記住是不可能的,而保留起來又會引起密鑰泄漏可能性的增加。常用的對稱加密演算法有DES,DEA等。 B.非對稱加密技術 a.描述 非對稱加密(dissymmetrical encryption),有時又叫公開密鑰演算法(public key algorithm)。這種加密演算法是這樣設計的:用作加密的密鑰不同於用作解密的密鑰,而且解密密鑰不能根據加密密鑰計算出來(至少在合理假定的長時間內)。之所以又叫做公開密鑰演算法是由於加密密鑰可以公開,即陌生人可以得到它並用來加密信息,但只有用相應的解密密鑰才能解密信息。在這種加密演算法中,加密密鑰被叫做公開密鑰(public key),而解密密鑰被叫做私有密鑰(private key)。 b.特點分析 非對稱加密的缺點在於演算法實現後的效率低、速度慢。 非對稱加密的優點在於用戶不必記憶大量的提前商定好的密鑰,因為發送方和接收方事先根本不必商定密鑰,發放方只要可以得到可靠的接收方的公開密鑰就可以給他發送信息了,而且即使雙方根本互不相識。但為了保證可靠性,非對稱加密演算法需要一種與之相配合使用的公開密鑰管理機制,這種公開密鑰管理機制還要解決其他一些公開密鑰所帶來的問題。常用的非對稱加密演算法有RSA等。 (3) 關於密碼技術 密碼技術包括加密技術和密碼分析技術,也即加密和解密技術兩個方面。在一個新的加密演算法的研發需要有相應的數學理論證明,證明這個演算法的安全性有多高,同時還要從密碼分析的角度對這個演算法進行安全證明,說明這個演算法對於所知的分析方法來說是有防範作用的。 三、對稱加密演算法分析 對稱加密演算法的分類 對稱加密演算法可以分成兩類:一類為序列演算法(stream algorithm):一次只對明文中單個位(有時為位元組)加密或解密運算。另一類為分組演算法(block algorithm):一次明文的一組固定長度的位元組加密或解密運算。 現代計算機密碼演算法一般採用的都是分組演算法,而且一般分組的長度為64位,之所以如此是由於這個長度大到足以防止分析破譯,但又小到足以方便使用。 1.DES加密演算法 (Data Encryption Standard )
(1) 演算法簡介
1973 年 5 月 15 日,美國國家標准局 (NBS) 在「聯邦注冊」上發布了一條通知,徵求密碼演算法,用於在傳輸和存儲期間保護數據。IBM 提交了一個候選演算法,它是 IBM 內部開發的,名為 LUCIFER。在美國國家安全局 (NSA) 的「指導」下完成了演算法評估之後,在 1977 年 7 月 15 日,NBS 採納了 LUCIFER 演算法的修正版作為新的數據加密標准。
原先規定使用10年,但由於新的加密標准還沒有完成,所以DES演算法及其的變形演算法一直廣泛的應用於信息加密方面。 (2) 演算法描述 (包括加密和解密)
Feistel結構(畫圖說明)。
DES 的工作方式:可怕的細節
DES 將消息分成 64 位(即 16 個十六進制數)一組進行加密。DES 使用「密鑰」進行加密,從符號的角度來看,「密鑰」的長度是 16 個十六進制數(或 64 位)。但是,由於某些原因(可能是因為 NSA 給 NBS 的「指引」),DES 演算法中每逢第 8 位就被忽略。這造成密鑰的實際大小變成 56 位。編碼系統對「強行」或「野蠻」攻擊的抵抗力與其密鑰空間或者系統可能有多少密鑰有直接關系。使用的位數越多轉換出的密鑰也越多。密鑰越多,就意味著強行攻擊中計算密鑰空間中可能的密鑰范圍所需的時間就越長。從總長度中切除 8 位就會在很大程度上限制了密鑰空間,這樣系統就更容易受到破壞。
DES 是塊加密演算法。這表示它處理特定大小的純文本塊(通常是 64 位),然後返回相同大小的密碼塊。這樣,64 位(每位不是 0 就是 1)有 264 種可能排列,DES 將生成其中的一種排列。每個 64 位的塊都被分成 L、R 左右兩塊,每塊 32 位。
DES 演算法使用以下步驟:
1. 創建 16 個子密鑰,每個長度是 48 位。根據指定的順序或「表」置換 64 位的密鑰。如果表中的第一項是 "27",這表示原始密鑰 K 中的第 27 位將變成置換後的密鑰 K+ 的第一位。如果表的第二項是 36,則這表示原始密鑰中的第 36 位將變成置換後密鑰的第二位,以此類推。這是一個線性替換方法,它創建了一種線性排列。置換後的密鑰中只出現了原始密鑰中的 56 位。
2. 接著,將這個密鑰分成左右兩半,C0 和 D0,每一半 28 位。定義了 C0 和 D0 之後,創建 16 個 Cn 和 Dn 塊,其中 1<=n<=16。每一對 Cn 和 Dn 塊都通過使用標識「左移位」的表分別從前一對 Cn-1 和 Dn-1 形成,n = 1, 2, ..., 16,而「左移位」表說明了要對哪一位進行操作。在所有情況下,單一左移位表示這些位輪流向左移動一個位置。在一次左移位之後,28 個位置中的這些位分別是以前的第 2、3……28 位。
通過將另一個置換表應用於每一個 CnDn 連接對,從而形成密鑰 Kn,1<=n<=16。每一對有 56 位,而置換表只使用其中的 48 位,因為每逢第 8 位都將被忽略。
3. 編碼每個 64 位的數據塊。
64 位的消息數據 M 有一個初始置換 IP。這將根據置換表重新排列這些位,置換表中的項按這些位的初始順序描述了它們新的排列。我們以前見過這種線性表結構。
使用函數 f 來生成一個 32 位的塊,函數 f 對兩個塊進行操作,一個是 32 位的數據塊,一個是 48 位的密鑰 Kn,連續迭代 16 次,其中 1<=n<=16。用 + 表示 XOR 加法(逐位相加,模除 2)。然後,n 從 1 到 16,計算 Ln = Rn-1 Rn = Ln-1 + f(Rn-1,Kn)。即在每次迭代中,我們用前一結果的右邊 32 位,並使它們成為當前步驟中的左邊 32 位。對於當前步驟中的右邊 32 位,我們用演算法 f XOR 前一步驟中的左邊 32 位。
要計算 f,首先將每一塊 Rn-1 從 32 位擴展到 48 位。可以使用選擇表來重復 Rn-1 中的一些位來完成這一操作。這個選擇表的使用就成了函數 f。因此 f(Rn-1) 的輸入塊是 32 位,輸出塊是 48 位。f 的輸出是 48 位,寫成 8 塊,每塊 6 位,這是通過根據已知表按順序選擇輸入中的位來實現的。
我們已經使用選擇表將 Rn-1 從 32 位擴展成 48 位,並將結果 XOR 密鑰 Kn。現在有 48 位,或者是 8 組,每組 6 位。每組中的 6 位現在將經歷一次變換,該變換是演算法的核心部分:在叫做「S 盒」的表中,我們將這些位當作地址使用。每組 6 位在不同的 S 盒中表示不同的地址。該地址中是一個 4 位數字,它將替換原來的 6 位。最終結果是 8 組,每組 6 位變換成 8 組,每組 4 位(S 盒的 4 位輸出),總共 32 位。
f 計算的最後階段是對 S 盒輸出執行置換 P,以得到 f 的最終值。f 的形式是 f = P(S1(B1)S2(B2)...S8(B8))。置換 P 根據 32 位輸入,在以上的過程中通過置換輸入塊中的位,生成 32 位輸出。
解密只是加密的逆過程,使用以上相同的步驟,但要逆轉應用子密鑰的順序。DES 演算法是可逆的
(2) 演算法的安全性分析
在知道一些明文和密文分組的條件下,從理論上講很容易知道對DES進行一次窮舉攻擊的復雜程度:密鑰的長度是56位,所以會有 種的可能的密鑰。
在1993年的一年一度的世界密碼大會上,加拿大北方電信公司貝爾實驗室的 Michael Wiener 描述了如何構造一台專用的機器破譯DES,該機器利用一種每秒能搜索5000萬個密鑰的專用晶元。而且此機器的擴展性很好,投入的經費越多則效率越高。用100萬美元構造的機器平均3.5小時就可以破譯密碼。
如果不用專用的機器,破譯DES也有其他的方法。在1994年的世界密碼大會上,M.Matsui 提出一種攻克DES的新方法--"線性密碼分析"法。它可使用平均 個明文及其密文,在12台HP9000/735工作站上用此方法的軟體實現,花費50天時間完成對DES的攻擊。
如前所述DES作為加密演算法的標准已經二十多年了,可以說是一個很老的演算法,而在新的加密演算法的國際標准出現之前,許多DES的加固性改進演算法仍有實用價值,在本文的3.4節詳細的描述,同時考慮的以上所述DES的安全性已受到了威脅。
(4) 演算法的變體 三重DES(TDEA),使用3個密鑰,執行3次DES演算法:
加密:C = Ek3[Dk2[Ek1[P]]] 解密:P = Dk1[Ek2[Dk3[C]]]
特點:安全性得到增強,但是速度變慢。
2.AES
自 20 世紀 70 年代以來一直廣泛使用的「數據加密標准」(DES) 日益顯出衰老的痕跡,而一種新的演算法 -- Rijndael -- 正順利地逐漸變成新標准。這里,Larry Loeb 詳細說明了每一種演算法,並提供了關於為什麼會發生這種變化的內幕信息。
DES 演算法是全世界最廣泛使用的加密演算法。最近,就在 2000 年 10 月,它在其初期就取得的硬體方面的優勢已經阻礙了其發展,作為政府加密技術的基礎,它已由「高級加密標准」(AES) 中包含的另一種加密演算法代替了。AES 是指定的標准密碼系統,未來將由政府和銀行業用戶使用。AES 用來實際編碼數據的加密演算法與以前的 DES 標准不同。我們將討論這是如何發生的,以及 AES 中的 Rijndael 演算法是如何取代 DES 的演算法的。
「高級加密標准」成就
但直到 1997 年,美國國家標准技術局 (NIST) 才開始打著 AES 項目的旗幟徵集其接任者。1997 年 4 月的一個 AES 研討會宣布了以下 AES 成就的最初目標:
• 可供政府和商業使用的功能強大的加密演算法
• 支持標准密碼本方式
• 要明顯比 DES 3 有效
• 密鑰大小可變,這樣就可在必要時增加安全性
• 以公正和公開的方式進行選擇
• 可以公開定義
• 可以公開評估
AES 的草案中最低可接受要求和評估標準是:
A.1 AES 應該可以公開定義。
A.2 AES 應該是對稱的塊密碼。
A.3 AES 應該設計成密鑰長度可以根據需要增加。
A.4 AES 應該可以在硬體和軟體中實現。
A.5 AES 應該 a) 可免費獲得。
A.6 將根據以下要素評價符合上述要求的演算法:
1. 安全性(密碼分析所需的努力)
2. 計算效率
3. 內存需求
4. 硬體和軟體可適用性
5. 簡易性
6. 靈活性
7. 許可證需求(見上面的 A5)
Rijndael:AES 演算法獲勝者
1998年8月20日NIST召開了第一次AES侯選會議,並公布了15個AES侯選演算法。經過一年的考察,MARS,RC6,Rijndael,Serpent,Twofish共5種演算法通過了第二輪的選拔。2000 年 10 月,NIST 選擇 Rijndael(發音為 "Rhine dale")作為 AES 演算法。它目前還不會代替 DES 3 成為政府日常加密的方法,因為它還須通過測試過程,「使用者」將在該測試過程後發表他們的看法。但相信它可以順利過關。
Rijndael 是帶有可變塊長和可變密鑰長度的迭代塊密碼。塊長和密鑰長度可以分別指定成 128、192 或 256 位。
Rijndael 中的某些操作是在位元組級上定義的,位元組表示有限欄位 GF(28) 中的元素,一個位元組中有 8 位。其它操作都根據 4 位元組字定義。
加法照例對應於位元組級的簡單逐位 EXOR。
在多項式表示中,GF(28) 的乘法對應於多項式乘法模除階數為 8 的不可約分二進制多項式。(如果一個多項式除了 1 和它本身之外沒有其它約數,則稱它為不可約分的。)對於 Rijndael,這個多項式叫做 m(x),其中:m(x) = (x8 + x4 + x3 + x + 1) 或者十六進製表示為 '11B'。其結果是一個階數低於 8 的二進制多項式。不像加法,它沒有位元組級的簡單操作。
不使用 Feistel 結構!
在大多數加密演算法中,輪回變換都使用著名的 Feistel 結構。在這個結構中,中間 State 的位部分通常不做更改調換到另一個位置。(這種線性結構的示例是我們在 DES 部分中討論的那些表,即使用固定表的形式交換位。)Rijndael 的輪回變換不使用這個古老的 Feistel 結構。輪回變換由三個不同的可逆一致變換組成,叫做層。(「一致」在這里表示以類似方法處理 State 中的位。)
線性混合層保證了在多個輪回後的高度擴散。非線性層使用 S 盒的並行應用,該應用程序有期望的(因此是最佳的)最差非線性特性。S 盒是非線性的。依我看來,這就 DES 和 Rijndael 之間的密鑰概念差異。密鑰加法層是對中間 State 的輪回密鑰 (Round Key) 的簡單 EXOR,如以下所注。
Rijndael演算法
加密演算法
Rijndael演算法是一個由可變數據塊長和可變密鑰長的迭代分組加密演算法,數據塊長和密鑰長可分別為128,192或256比特。
數據塊要經過多次數據變換操作,每一次變換操作產生一個中間結果,這個中間結果叫做狀態。狀態可表示為二維位元組數組,它有4行,Nb列,且Nb等於數據塊長除32。如表2-3所示。
a0,0 a0,1 a0,2 a0,3 a0,4 a0,5
a1,0 a1,1 a1,2 a1,3 a1,4 a1,5
a2,0 a2,1 a2,2 a2,3 a2,4 a2,5
a3,0 a3,1 a3,2 a3,3 a3,4 a3,5
數據塊按a0,0 , a1,0 , a2,0 , a3,0 , a0,1 , a1,1 , a2,1 , a3,1 , a0,2…的順序映射為狀態中的位元組。在加密操作結束時,密文按同樣的順序從狀態中抽取。
密鑰也可類似地表示為二維位元組數組,它有4行,Nk列,且Nk等於密鑰塊長除32。演算法變換的圈數Nr由Nb和Nk共同決定,具體值列在表2-4中。
表3-2 Nb和Nk決定的Nr的值
Nr Nb = 4 Nb = 6 Nb = 8
Nk = 4 10 12 14
Nk = 6 12 12 14
Nk = 8 14 14 14
3.2.1圈變換
加密演算法的圈變換由4個不同的變換組成,定義成:
Round(State,RoundKey)
{
ByteSub(State);
ShiftRow(State);
MixColumn(State);
AddRoundKey(State,RoundKey); (EXORing a Round Key to the State)
}
加密演算法的最後一圈變換與上面的略有不同,定義如下:
FinalRound(State,RoundKey)
{
ByteSub(State);
ShiftRow(State);
AddRoundKey(State,RoundKey);
}
ByteSub變換
ByteSub變換是作用在狀態中每個位元組上的一種非線形位元組變換。這個S盒子是可逆的且由以下兩部分組成:
把位元組的值用它的乘法逆替代,其中『00』的逆就是它自己。
經(1)處理後的位元組值進行如下定義的仿射變換:
y0 1 1 1 1 1 0 0 0 x0 0
y1 0 1 1 1 1 1 0 0 x1 1
y2 0 0 1 1 1 1 1 0 x2 1
y3 0 0 0 1 1 1 1 1 x3 0
y4 = 1 0 0 0 1 1 1 1 x4 + 0
y5 1 1 0 0 0 1 1 1 x5 0
y6 1 1 1 0 0 0 1 1 x6 1
y7 1 1 1 1 0 0 0 1 x7 1
ShiftRow變換
在ShiftRow變換中,狀態的後3行以不同的移位值循環右移,行1移C1位元組,行2移C2位元組,行3移C3位元組。
移位值C1,C2和C3與加密塊長Nb有關,具體列在表2-5中:
表3-3 不同塊長的移位值
Nb C1 C2 C3
4 1 2 3
MixColumn變換
在MixColumn變換中,把狀態中的每一列看作GF(28)上的多項式與一固定多項式c(x)相乘然後模多項式x4+1,其中c(x)為:
c(x) =『03』x3 + 『01』x2 + 『01』x + 『02』
圈密鑰加法
在這個操作中,圈密鑰被簡單地使用異或操作按位應用到狀態中。圈密鑰通過密鑰編製得到,圈密鑰長等於數據塊長Nb。
在這個表示法中,「函數」(Round, ByteSub, ShiftRow,...) 對那些被提供指針 (State, RoundKey) 的數組進行操作。ByteSub 變換是非線性位元組交換,各自作用於每個 State 位元組上。在 ShiftRow 中,State 的行按不同的偏移量循環移位。在 MixColumn 中,將 State 的列視為 GF(28) 多項式,然後乘以固定多項式 c( x ) 並模除 x4 + 1,其中 c( x ) = '03' x3 + '01' x2+ '01' x + '02'。這個多項式與 x4 + 1 互質,因此是可逆的。
輪回密鑰通過密鑰計劃方式從密碼密鑰 (Cipher Key) 派生而出。它有兩個組件:密鑰擴展 (Key Expansion) 和輪回密鑰選擇 (Round Key Selection)。輪回密鑰的總位數等於塊長度乘以輪回次數加 1(例如,塊長度等於 128 位,10 次輪回,那麼就需要 1408 個輪回密鑰位)。
密碼密鑰擴充成擴展密鑰 (Expanded Key)。輪回密鑰是通過以下方法從這個擴展密鑰中派生的:第一個輪回密鑰由前 Nb(Nb = 塊長度)個字組成,第二個由接著的 Nb 個字組成,以此類推。
加密演算法由以下部分組成:初始輪回密鑰加法、Nr-1 個輪回和最後一個輪回。在偽 C 代碼中:
Rijndael(State,CipherKey)
{
KeyExpansion(CipherKey,ExpandedKey);
AddRoundKey(State,ExpandedKey);
For( i=1 ; i<Nr ; i++ ) Round(State,ExpandedKey + Nb*i);
FinalRound(State,ExpandedKey + Nb*Nr).
}
如果已經預先執行了密鑰擴展,則可以根據擴展密鑰指定加密演算法。
Rijndael(State,ExpandedKey)
{
AddRoundKey(State,ExpandedKey);
For( i=1 ; i<Nr ; i++ ) Round(State,ExpandedKey + Nb*i);
FinalRound(State,ExpandedKey + Nb*Nr);
}
由於 Rijndael 是可逆的,解密過程只是顛倒上述的步驟。
最後,開發者將仔細考慮如何集成這種安全性進展,使之成為繼 Rijndael 之後又一個得到廣泛使用的加密演算法。AES 將很快應一般商業團體的要求取代 DES 成為標准,而該領域的發展進步無疑將追隨其後。
3.IDEA加密演算法 (1) 演算法簡介 IDEA演算法是International Data Encryption Algorithmic 的縮寫,意為國際數據加密演算法。是由中國學者朱學嘉博士和著名密碼學家James Massey 於1990年聯合提出的,當時被叫作PES(Proposed Encryption Standard)演算法,後為了加強抵抗差分密碼分,經修改於1992年最後完成,並命名為IDEA演算法。 (2) 演算法描述 這個部分參見論文上的圖 (3) 演算法的安全性分析 安全性:IDEA的密鑰長度是128位,比DES長了2倍多。所以如果用窮舉強行攻擊的話, 么,為了獲得密鑰需要 次搜索,如果可以設計一種每秒能搜索十億把密鑰的晶元,並且 採用十億個晶元來並行處理的話,也要用上 年。而對於其他攻擊方式來說,由於此演算法 比較的新,在設計時已經考慮到了如差分攻擊等密碼分析的威脅,所以還未有關於有誰 發現了能比較成功的攻擊IDEA方法的結果。從這點來看,IDEA還是很安全的。
4.總結
幾種演算法的性能對比
演算法 密鑰長度 分組長度 循環次數
DES 56 64 16
三重DES 112、168 64 48
AES 128、192、256 128 10、12、14
IDEA 128 64 8
速度:在200MHz的奔騰機上的對比。
C++ DJGP(++pgcc101)
AES 30.2Mbps 68.275Mbps
DES(RSAREF) 10.6Mbps 16.7Mbps
3DES 4.4Mbps 7.3Mbps
Celeron 1GHz的機器上AES的速度,加密內存中的數據
128bits密鑰:
C/C++ (Mbps) 匯編(Mbps)
Linux 2.4.7 93 170
Windows2K 107 154
256bits密鑰:
C/C++ (Mbps) 匯編(Mbps)
Linux 2.4.7 76 148
Windows2K 92 135
安全性
1990年以來,特製的"DES Cracker"的機器可在幾個小時內找出一個DES密鑰。換句話說,通過測試所有可能的密鑰值,此硬體可以確定用於加密信息的是哪個密鑰。假設一台一秒內可找出DES密鑰的機器(如,每秒試255個密鑰),如果用它來找出128-bit AES的密鑰,大約需要149萬億年。
四、對稱加密應用 在保密通信中的應用。(保密電話) 附加內容
安全哈希演算法(SHA)
由NIST開發出來的。
此演算法以最大長度不超過264位的消息為輸入,生成160位的消息摘要輸出。主要步驟:
1. 附加填充位
2. 附加長度
3. 初始化MD緩沖區,為160位的數據
A=67452301
B=EFCDAB89
C=89BADCFE
D=10325476
E=C3D2E1F0
4. 處理512位消息塊,將緩沖虛數據和消息塊共同計算出下一個輸出
5. 輸出160位摘要
此外還有其他哈希演算法,如MD5(128位摘要),RIPEMD-160(160位摘要)等。