1. 程式人生 > >加密演算法、DES、IDEA、RSA、DSA

加密演算法、DES、IDEA、RSA、DSA

加密技術是對資訊進行編碼和解碼的技術,編碼是把原來可讀資訊(又稱明文)譯成程式碼形式(又稱密文),其逆過程就是解碼(解密)。加密技術的要點是加密演算法,加密演算法可以分為對稱加密、不對稱加密和不可逆加密三類演算法。

對稱加密演算法:對稱加密演算法是應用較早的加密演算法,技術成熟。在對稱加密演算法中,資料發信方將明文(原始資料)和加密金鑰一起經過特殊加密演算法處理後,使其變成複雜的加密密文傳送出去。收信方收到密文後,若想解讀原文,則需要使用加密用過的金鑰及相同演算法的逆演算法對密文進行解密,才能使其恢復成可讀明文。在對稱加密演算法中,使用的金鑰只有一個,發收信雙方都使用這個金鑰對資料進行加密和解密,這就要求解密方事先必須知道加密金鑰。對稱加密演算法的特點是演算法公開、計算量小、加密速度快、加密效率高。不足之處是,交易雙方都使用同樣鑰匙,安全性得不到保證。此外,每對使用者每次使用對稱加密演算法時,都需要使用其他人不知道的惟一鑰匙,這會使得發收信雙方所擁有的鑰匙數量成幾何級數增長,金鑰管理成為使用者的負擔。對稱加密演算法在分散式網路系統上使用較為困難,主要是因為金鑰管理困難,使用成本較高。在計算機專網系統中廣泛使用的對稱加密演算法有DES(Data Encryption Standard)和IDEA
等。美國國家標準局倡導的AES即將作為新標準取代DES。

不對稱加密演算法:不對稱加密演算法使用兩把完全不同但又是完全匹配的一對鑰匙—公鑰和私鑰。在使用不對稱加密演算法加密檔案時,只有使用匹配的一對公鑰和私鑰,才能完成對明文的加密和解密過程。加密明文時採用公鑰加密,解密密文時使用私鑰才能完成,而且發信方(加密者)知道收信方的公鑰,只有收信方(解密者)才是唯一知道自己私鑰的人。不對稱加密演算法的基本原理是,如果發信方想傳送只有收信方才能解讀的加密資訊,發信方必須首先知道收信方的公鑰,然後利用收信方的公鑰來加密原文;收信方收到加密密文後,使用自己的私鑰才能解密密文。顯然,採用不對稱加密演算法,收發信雙方在通訊之前,收信方必須將自己早已隨機生成的公鑰送給發信方,而自己保留私鑰。由於不對稱演算法擁有兩個金鑰,因而特別適用於分散式系統中的資料加密。廣泛應用的不對稱加密演算法有RSA
演算法和美國國家標準局提出的DSA(Digital Signature Algorithm)。以不對稱加密演算法為基礎的加密技術應用非常廣泛。

不可逆加密演算法:不可逆加密演算法的特徵是加密過程中不需要使用金鑰,輸入明文後由系統直接經過加密演算法處理成密文,這種加密後的資料是無法被解密的,只有重新輸入明文,並再次經過同樣不可逆的加密演算法處理,得到相同的加密密文並被系統重新識別後,才能真正解密。顯然,在這類加密過程中,加密是自己,解密還得是自己,而所謂解密,實際上就是重新加一次密,所應用的“密碼”也就是輸入的明文。不可逆加密演算法不存在金鑰保管和分發問題,非常適合在分散式網路系統上使用,但因加密計算複雜,工作量相當繁重,通常只在資料量有限的情形下使用,如廣泛應用在計算機系統中的口令加密,利用的就是不可逆加密演算法。近年來,隨著計算機系統性能的不斷提高,不可逆加密的應用領域正在逐漸增大。在計算機網路中應用較多不可逆加密演算法的有RSA公司發明的MD5
演算法和由美國國家標準局建議的不可逆加密標準SHS(Secure Hash Standard:安全雜亂資訊標準)等。

DEA(Data Encryption Algorithm、DES)資料加密演算法:是一種對稱加密演算法,很可能是使用最廣泛的金鑰系統,特別是在保護金融資料的安全中,最初開發的DEA是嵌入硬體中的。通常,自動取款機(Automated Teller Machine,ATM)都使用DEA。它出自IBM的研究工作,IBM也曾對它擁有幾年的專利權,但是在1983年已到期後,處於公有範圍中,允許在特定條件下可以免除專利使用費而使用。1977年被美國政府正式採納。
DES演算法的安全性: 一.安全性比較高的一種演算法,目前只有一種方法可以破解該演算法,那就是窮舉法. 二.採用64位金鑰技術,實際只有56位有效,8位用來校驗的.譬如,有這樣的一臺PC機器,它能每秒計算一百萬次,那麼256位空間它要窮舉的時間為2285年.所以這種演算法還是比較安全的一種演算法.

TripleDES: 該演算法被用來解決使用 DES 技術的 56 位時金鑰日益減弱的強度,其方法是:使用兩個獨立金鑰對明文執行 DES 演算法三次,從而得到 112 位有效金鑰強度。TripleDES 有時稱為 DESede(表示加密、解密和加密這三個階段)。

IDEA 國際資料加密演算法:是旅居瑞士中國青年學者來學家和著名密碼專家J.Massey於1990年提出的。它在1990年正式公佈並在以後得到增強。這種演算法是在DES演算法的基礎上發展出來的,類似於三重DES,和DES一樣IDEA也是屬於對稱金鑰演算法。發展IDEA也是因為感到DES具有金鑰太短等缺點,已經過時。IDEA的金鑰為128位,這麼長的金鑰在今後若干年內應該是安全的。

RSA公鑰加密演算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美國麻省理工學院)開發的。RSA取名來自開發他們三者的名字。RSA是目前最有影響力的公鑰加密演算法,它能夠抵抗到目前為止已知的所有密碼攻擊,已被ISO推薦為公鑰資料加密標準。RSA演算法基於一個十分簡單的數論事實:將兩個大素數相乘十分容易,但那時想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密金鑰。 為提高保密強度,RSA金鑰至少為500位長,一般推薦使用1024位。這就使加密的計算量很大。為減少計算量,在傳送資訊時,常採用傳統加密方法與公開金鑰加密方法相結合的方式,即資訊採用改進的DES或IDEA對話金鑰加密,然後使用RSA金鑰加密對話金鑰和資訊摘要。對方收到資訊後,用不同的金鑰解密並可核對資訊摘要。RSA演算法是第一個能同時用於加密和數字簽名的演算法,也易於理解和操作。

RSA 加密演算法的缺點: 1)產生金鑰很麻煩,受到素數產生技術的限制,因而難以做到一次一密。 2)安全性,RSA的安全性依賴於大數的因子分解,但並沒有從理論上證明破譯RSA的難度與大數分解難度等價,而且密碼學界多數人士傾向於因子分解不是NPC問題。 3)速度太慢,由於RSA 的分組長度太大,為保證安全性,n 至少也要 600 bitx以上,使運算代價很高,尤其是速度較慢,較對稱密碼演算法慢幾個數量級;且隨著大數分解技術的發展,這個長度還在增加,不利於資料格式的標準化。

DSA(Digital Signature Algorithm):被美國國家標準局用來做DSS資料簽名標準(Digital Signature Standard)。DSA是基於整數有限域離散對數難題的,其安全性與RSA相比差不多。DSA的一個重要特點是兩個素數公開,這樣,當使用別人的p和q時,即使不知道私鑰,你也能確認它們是否是隨機產生的,還是作了手腳。RSA演算法卻做不到。DSA只是一種演算法,和RSA不同之處在於它不能用作加密和解密,也不能進行金鑰交換,只用於簽名,它比RSA要快很多.