对称加密、非对称加密和散列算法
一、什么是對稱加密技術?
對稱加密采用了對稱密碼編碼技術,它的特點是文件加密和解密使用相同的密鑰。信息接收雙方都需事先知道密匙和加解密算法,且其密匙是相同的,之后便是對數據進行加解密了。對稱加密算法用來對敏感數據等信息進行加密。對稱加密算法使用起來簡單快捷,密鑰較短,且破譯困難。除了數據加密標準(DESData Encryption Standard),另一個對稱密鑰加密系統是國際數據加密算法(IDEA),它比DES的加密性好,而且對計算機功能要求也沒有那么高。
1??優點:
算法公開、計算量小、加密速度快、加密效率高
2??缺點:
在數據傳送前,發送方和接收方必須商定好秘鑰,然后使雙方都能保存好秘鑰。其次如果一方的秘鑰被泄露,那么加密信息也就不安全了。另外,每組用戶每次使用對稱加密算法時,都需要使用其他人不知道的唯一秘鑰,這會使得收、發雙方所擁有的鑰匙數量巨大,密鑰管理成為雙方的負擔。
常見的對稱加密算法有: DES、3DES、AES、Blowfish、IDEA、RC4、RC5、RC6
1??DES 加密算法是 IBM 公司于 1975 年研究成功并公開發表的。DES 算法的入口參數有三個:Key、Data、Mode。其中 Key 為 8 個字節共 64 位,是 DES 算法的工作密鑰;Data 也為 8 個字節 64 位,是要被加密或被解密的數據。數據加密標準,速度較快,適用于加密大量數據的場合。
2??3DES(Triple DES)是三重數據加密算法(TDEA)密碼的通稱。它相當于是對每個數據塊應用三次 DES 加密算法。由于計算機運算能力的增強,原版 DES 密碼的密鑰長度變得容易被暴力破解;3DES 通過增加 DES 的密鑰長度來避免類似的攻擊,而不是設計一種全新的塊密碼算法。
3??AES:又稱 Rijndael 加密法,是美國聯邦政府采用的一種區塊加密標準。用來替代原先的 DES。目前已然成為對稱密鑰加密中的算法之一。高級加密標準,是下一代的加密算法標準,速度快,安全級別高。
4??RC2 是由密碼學家 Ron Rivest 設計的一種傳統對稱分組加密算法,它可作為 DES 算法的建議替代算法。它的輸入和輸出都是 64 比特。密鑰的長度是從 1 字節到 128 字節可變。
5??RC4 加密算法是大名鼎鼎的 RSA 三人組中的頭號人物 Ronald Rivest 在 1987 年設計的密鑰長度可變的流加密算法簇。由于 RC4 核心部分的 S-box 長度可為任意,該算法的速度可以達到 DES 加密的 10 倍左右,且具有很高級別的非線性。
6??RC5 分組密碼算法是 1994 由麻薩諸塞技術研究所的 Ronald L. Rivest 教授發明的,并由 RSA 實驗室分析。它是參數可變的分組密碼算法,三個可變的參數是:分組大小、密鑰大小和加密輪數。在 RC5 算法中使用了三種運算:異或、加和循環。
二、對稱加密算法在電子商務交易過程中存在的問題
1??要求提供一條安全的渠道使通訊雙方在首次通訊時協商一個共同的密鑰。直接的面對面協商可能是不現實而且難于實施的,所以雙方可能需要借助于郵件和電話等其它相對不夠安全的手段來進行協商。
2??密鑰的數目難于管理。因為對于每一個合作者都需要使用不同的密鑰,很難適應開放社會中大量的信息交流。
3??對稱加密算法一般不能提供信息完整性的鑒別。它無法驗證發送者和接受者的身份。
4??對稱密鑰的管理和分發工作是一件具有潛在危險的和繁瑣的過程。對稱加密是基于共同保守秘密來實現的,采用對稱加密技術的貿易雙方必須保證采用的是相同的密鑰,保證彼此密鑰的交換是安全可靠的,同時還要設定防止密鑰泄密和更改密鑰的程序。
假設兩個用戶需要使用對稱加密方法加密然后交換數據,則用戶最少需要 2 個密鑰并交換使用。如果企業內用戶有 n 個,則整個企業共需要 n×(n-1) 個密鑰,密鑰的生成和分發將成為企業信息部門的惡夢。
三、什么是非對稱加密技術非對稱加密的典型應用是數字簽名。
與對稱加密算法不同,非對稱加密算法需要兩個密鑰:公開密鑰(public key)和私有密鑰(private key)。公開密鑰與私有密鑰是一對,如果用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密;如果用私有密鑰對數據進行加密,那么只有用對應的公開密鑰才能解密。因為加密和解密使用的是兩個不同的密鑰,所以這種算法叫作非對稱加密算法。
非對稱加密算法實現機密信息交換的基本過程是:甲方生成一對密鑰并將其中的一把作為公用密鑰向其它方公開;得到該公用密鑰的乙方使用該密鑰對機密信息進行加密后再發送給甲方;甲方再用自己保存的另一把專用密鑰對加密后的信息進行解密。甲方只能用其專用密鑰解密由其公用密鑰加密后的任何信息。另一方面,甲方可以使用乙方的公鑰對機密信息進行簽名后再發送給乙方;乙方再用自己的私匙對數據進行驗簽。
1??A要向B發送信息,A和B都要產生一對用于加密和解密的公鑰和私鑰。
2??A的私鑰保密,A的公鑰告訴B;B的私鑰保密,B的公鑰告訴A。
3??A要給B發送信息時,A用B的公鑰加密信息,因為A知道B的公鑰。
4??A將用B的公鑰加密過的消息發給B。
5??B收到消息后,B用自己的私鑰解密A的消息。其他所有收到這個報文的人都無法解密,因為只有B才有B的私鑰。
四、非對稱密碼體制的特點
1??算法強度復雜
2??安全性高:安全性依賴于算法與密鑰。但是由于其算法復雜,而使得加解密速度沒有對稱加解密的速度快。對稱加密體制中只有一種密鑰,并且是非公開的,如果要解密就得讓對方知道密鑰。所以保證其安全性就是保證密鑰的安全;而非對稱加密體制有兩種密鑰,其中一個是公開的,這樣就可以不需要像對稱加密那樣傳輸對方的密鑰了。這樣安全性就大了很多。
3??非對稱加密算法的保密性比較好,它消除了最終用戶交換密鑰的需要。
常見的非對稱加密算法有:RSA、ECC(橢圓曲線加密算法,移動設備用)、Diffie-Hellman、Elgamal、DSA(數字簽名用)、背包算法、Rabin
RSA:由 RSA 公司發明,是一個支持變長密鑰的公共密鑰算法,需要加密的文件塊的長度也是可變的。RSA 在國外早已進入實用階段,已研制出多種高速的 RSA 的專用芯片。
ECC(Elliptic Curves Cryptography):橢圓曲線密碼編碼學。ECC 和 RSA 相比,具有多方面的絕對優勢,主要有:抗攻擊性強。相同的密鑰長度,其抗攻擊性要強很多倍。計算量小,處理速度快。ECC 總的速度比 RSA、DSA 要快得多。存儲空間占用小。ECC 的密鑰尺寸和系統參數與 RSA、DSA 相比要小得多,意味著它所占的存貯空間要小得多。這對于加密算法在 IC 卡上的應用具有特別重要的意義。帶寬要求低。當對長消息進行加解密時,三類密碼系統有相同的帶寬要求,但應用于短消息時 ECC 帶寬要求卻低得多。帶寬要求低使 ECC 在無線網絡領域具有廣泛的應用前景。
DSA(Digital Signature Algorithm):數字簽名算法,是一種標準的 DSS(數字簽名標準),嚴格來說不算加密算法。
五、Hash 算法(摘要算法)
散列算法,又稱哈希函數,是一種單向加密算法。在信息安全技術中,經常需要驗證消息的完整性,散列(Hash)函數提供了這一服務,它對不同長度的輸入消息,產生固定長度的輸出。這個固定長度的輸出稱為原輸入消息的“散列”或“消息摘要(Message digest)”。散列算法不算加密算法,因為其結果不可逆,用戶通過 hash 算法對目標信息生成一段特定長度的唯一 hash 值,卻不能通過這個 hash 值重新獲得目標信息。既然是不可逆的,那么當然不是用來加密的,而是簽名。因此 Hash 算法常用在不可還原的密碼存儲、信息完整性校驗等。
用途:主要用于驗證,防止信息被修改。具體用途如:文件校驗、數字簽名、鑒權協議
常見的 Hash 算法有MD2、MD4、MD5、HAVAL、SHA。
MD5:一種不可逆的加密算法,目前是最牢靠的加密算法之一。暫無能夠逆運算的程序,它對應任何字符串都可以加密成一段唯一的固定長度的代碼。
SHA1:是由 NISTNSA 設計為同 DSA 一起使用的,它對長度小于 264 的輸入,產生長度為 160bit 的散列值,因此抗窮舉(brute-force)性更好。SHA-1 設計時和 MD4 原理相同,并且模仿了該算法。SHA-1 是由美國標準技術局(NIST)頒布的國家標準,是一種應用最為廣泛的 Hash 函數算法,也是目前最先進的加密技術,被政府部門和私營業主用來處理敏感的信息。SHA-1 基于 MD5,MD5 又基于 MD4
HMAC:是密鑰相關的哈希運算消息認證碼(Hash-based Message Authentication Code),HMAC 運算利用哈希算法,以一個密鑰和一個消息為輸入,生成一個消息摘要作為輸出。也就是說 HMAC 是需要一個密鑰的。所以,HMAC_SHA1 也是需要一個密鑰的,而 SHA1 不需要。
六、Base64 只能算是一個編碼算法
Base64 其實不是安全領域下的加解密算法,只能算是一個編碼算法,通常用于把二進制數據編碼為可寫的字符形式的數據,對數據內容進行編碼來適合傳輸(可以對 img 圖像編碼用于傳輸)。這是一種可逆的編碼方式。編碼后的數據是一個字符串,其中包含的字符為:A-Z、a-z、0-9、+、/,共 64 個字符(26 + 26 + 10 + 1 + 1 = 64,其實是 65 個字符,“=” 是填充字符。Base64 要求把每三個 8 Bit 的字節轉換為四個 6 Bit 的字節(38 = 46 = 24),然后把 6 Bit 再添兩位高位 0,組成四個 8 Bit 的字節,也就是說,轉換后的字符串理論上將要比原來的長 1/3。原文的字節最后不夠 3 個的地方用 0 來補足,轉換時 Base64 編碼用 “=” 號來代替。這就是為什么有些 Base64 編碼會以一個或兩個等號結束的原因,中間是不可能出現等號的,但等號最多只有兩個。其實不用 “=” 也不耽誤解碼,之所以用,可能是考慮到多段編碼后的 Base64 字符串拼起來也不會引起混淆。)
Base64 編碼是從二進制到字符的過程,像一些中文字符用不同的編碼轉為二進制時,產生的二進制是不一樣的,所以最終產生的 Base64 字符也不一樣。例如“上網”對應 utf-8 格式的 Base64 編碼是“5LiK572R”, 對應 GB2312 格式的 Base64 編碼是“yc/N+A==”。
標準的 Base64 并不適合直接放在 URL 里傳輸,因為 URL 編碼器會把標準 Base64 中的“/”和“+”字符變為形如“%XX”的形式,而這些“%”號在存入數據庫時還需要再進行轉換,因為 ANSI SQL 中已將“%”號用作通配符。
為解決此問題,可采用一種用于 URL 的改進 Base64 編碼,它不在末尾填充“=”號,并將標準 Base64 中的“+”和“/”分別改成了“-”和“_”,這樣就免去了在 URL 編解碼和數據庫存儲時所要作的轉換,避免了編碼信息長度在此過程中的增加,并統一了數據庫、表單等處對象標識符的格式。
另有一種用于正則表達式的改進 Base64 變種,它將“+”和“/”改成了“!”和“-”,因為“+”,“*”以及前面在 IRCu 中用到的“[”和“]”在正則表達式中都可能具有特殊含義。
此外還有一些變種,它們將“+/”改為“-”或“.”(用作編程語言中的標識符名稱)或“.-”(用于XML中的Nmtoken)甚至“_:”(用于XML中的Name)。
七、總結
加密算法是可逆的,用來對敏感數據進行保護。散列算法(簽名算法、哈希算法)是不可逆的,主要用于身份驗證。
對稱加密算法使用同一個密匙加密和解密,速度快,適合給大量數據加密。對稱加密客戶端和服務端使用同一個密匙,存在被抓包破解的風險。
非對稱加密算法使用公鑰加密,私鑰解密,私鑰簽名,公鑰驗簽。安全性比對稱加密高,但速度較慢。非對稱加密使用兩個密匙,服務端和客戶端密匙不一樣,私鑰放在服務端,黑客一般是拿不到的,安全性高。
Base64 不是安全領域下的加解密算法,只是一個編碼算法,通常用于把二進制數據編碼為可寫的字符形式的數據,特別適合在 http,mime 協議下的網絡快速傳輸數據。UTF-8 和 GBK 中文的 Base64 編碼結果是不同的。采用 Base64 編碼不僅比較簡短,同時也具有不可讀性,即所編碼的數據不會被人用肉眼所直接看到,但這種方式很初級,很簡單。Base64 可以對圖片文件進行編碼傳輸。
https 廣泛用于萬維網上安全敏感的通訊,例如交易支付方面。它的主要作用可以分為兩種:一種是建立一個信息安全通道,來保證數據傳輸的安全;另一種就是確認網站的真實性。
大量數據加密建議采用對稱加密算法,提高加解密速度;小量的機密數據,可以采用非對稱加密算法。在實際的操作過程中,通常采用的方式是:采用非對稱加密算法管理對稱算法的密鑰,然后用對稱加密算法加密數據,這樣就集成了兩類加密算法的優點,既實現了加密速度快的優點,又實現了安全方便管理密鑰的優點。
MD5 標準密鑰長度 128 位(128 位是指二進制位。二進制太長,所以一般都改寫成 16 進制,每一位 16 進制數可以代替 4 位二進制數,所以 128 位二進制數寫成 16 進制就變成了 128/4=32位。16 位加密就是從 32 位 MD5 散列中把中間 16 位提取出來);sha1 標準密鑰長度 160 位(比 MD5 摘要長 32 位),Base64 轉換后的字符串理論上將要比原來的長 1/3。
總結
以上是生活随笔為你收集整理的对称加密、非对称加密和散列算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蛮力法(Brute Force)
- 下一篇: Simplicity Studio开发环