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