一. 簡述
常見的加密算法可以分成三類罐韩,對(duì)稱加密算法憾赁,非對(duì)稱加密算法和Hash算法。
對(duì)稱加密
指加密和解密使用相同密鑰的加密算法散吵。對(duì)稱加密算法的優(yōu)點(diǎn)在于加解密的高速度和使用長密鑰時(shí)的難破解性龙考。假設(shè)兩個(gè)用戶需要使用對(duì)稱加密方法加密然后交換數(shù)據(jù),則用戶最少需要2個(gè)密鑰并交換使用矾睦,如果企業(yè)內(nèi)用戶有n個(gè)晦款,則整個(gè)企業(yè)共需要n×(n-1) 個(gè)密鑰,密鑰的生成和分發(fā)將成為企業(yè)信息部門的惡夢枚冗。對(duì)稱加密算法的安全性取決于加密密鑰的保存情況缓溅,但要求企業(yè)中每一個(gè)持有密鑰的人都保守秘密是不可能的,他們通常會(huì)有意無意的把密鑰泄漏出去——如果一個(gè)用戶使用的密鑰被入侵者所獲得赁温,入侵者便可以讀取該用戶密鑰加密的所有文檔坛怪,如果整個(gè)企業(yè)共用一個(gè)加密密鑰,那整個(gè)企業(yè)文檔的保密性便無從談起股囊。
常見的對(duì)稱加密算法:DES袜匿、3DES、DESX稚疹、Blowfish居灯、IDEA、RC4贫堰、RC5穆壕、RC6和AES
非對(duì)稱加密
指加密和解密使用不同密鑰的加密算法,也稱為公私鑰加密其屏。假設(shè)兩個(gè)用戶要加密交換數(shù)據(jù)喇勋,雙方交換公鑰,使用時(shí)一方用對(duì)方的公鑰加密偎行,另一方即可用自己的私鑰解密川背。如果企業(yè)中有n個(gè)用戶贰拿,企業(yè)需要生成n對(duì)密鑰,并分發(fā)n個(gè)公鑰熄云。由于公鑰是可以公開的膨更,用戶只要保管好自己的私鑰即可,因此加密密鑰的分發(fā)將變得十分簡單缴允。同時(shí)荚守,由于每個(gè)用戶的私鑰是唯一的,其他用戶除了可以可以通過信息發(fā)送者的公鑰來驗(yàn)證信息的來源是否真實(shí)练般,還可以確保發(fā)送者無法否認(rèn)曾發(fā)送過該信息矗漾。非對(duì)稱加密的缺點(diǎn)是加解密速度要遠(yuǎn)遠(yuǎn)慢于對(duì)稱加密,在某些極端情況下薄料,甚至能比非對(duì)稱加密慢上1000倍敞贡。
常見的非對(duì)稱加密算法:RSA、ECC(移動(dòng)設(shè)備用)摄职、Diffie-Hellman誊役、El Gamal、DSA(數(shù)字簽名用)
Hash算法
Hash算法特別的地方在于它是一種單向算法谷市,用戶可以通過Hash算法對(duì)目標(biāo)信息生成一段特定長度的唯一的Hash值蛔垢,卻不能通過這個(gè)Hash值重新獲得目標(biāo)信息。因此Hash算法常用在不可還原的密碼存儲(chǔ)迫悠、信息完整性校驗(yàn)等啦桌。
常見的Hash算法:MD2、MD4及皂、MD5、HAVAL且改、SHA验烧、SHA-1、HMAC又跛、HMAC-MD5碍拆、HMAC-SHA1
加密算法的效能通常可以按照算法本身的復(fù)雜程度慨蓝、密鑰長度(密鑰越長越安全)感混、加解密速度等來衡量。上述的算法中礼烈,除了DES密鑰長度不夠弧满、MD2速度較慢已逐漸被淘汰外,其他算法仍在目前的加密系統(tǒng)產(chǎn)品中使用此熬。
加密算法的選擇
前面的章節(jié)已經(jīng)介紹了對(duì)稱解密算法和非對(duì)稱加密算法庭呜,有很多人疑惑:那我們在實(shí)際使用的過程中究竟該使用哪一種比較好呢滑进?
我們應(yīng)該根據(jù)自己的使用特點(diǎn)來確定,由于非對(duì)稱加密算法的運(yùn)行速度比對(duì)稱加密算法的速度慢很多募谎,當(dāng)我們需要加密大量的數(shù)據(jù)時(shí)扶关,建議采用對(duì)稱加密算法,提高加解密速度数冬。
對(duì)稱加密算法不能實(shí)現(xiàn)簽名节槐,因此簽名只能非對(duì)稱算法。
由于對(duì)稱加密算法的密鑰管理是一個(gè)復(fù)雜的過程拐纱,密鑰的管理直接決定著他的安全性铜异,因此當(dāng)數(shù)據(jù)量很小時(shí),我們可以考慮采用非對(duì)稱加密算法戳玫。
在實(shí)際的操作過程中熙掺,我們通常采用的方式是:采用非對(duì)稱加密算法管理對(duì)稱算法的密鑰,然后用對(duì)稱加密算法加密數(shù)據(jù)咕宿,這樣我們就集成了兩類加密算法的優(yōu)點(diǎn)币绩,既實(shí)現(xiàn)了加密速度快的優(yōu)點(diǎn),又實(shí)現(xiàn)了安全方便管理密鑰的優(yōu)點(diǎn)府阀。
如果在選定了加密算法后缆镣,那采用多少位的密鑰呢?一般來說试浙,密鑰越長董瞻,運(yùn)行的速度就越慢,應(yīng)該根據(jù)的我們實(shí)際需要的安全級(jí)別來選擇田巴,一般來說钠糊,RSA建議采用1024位的數(shù)字,ECC建議采用160位壹哺,AES采用128為即可抄伍。
二.加密算法介紹
對(duì)稱加密算法
對(duì)稱加密算法用來對(duì)敏感數(shù)據(jù)等信息進(jìn)行加密,常用的算法包括:
DES(Data Encryption Standard):數(shù)據(jù)加密標(biāo)準(zhǔn)管宵,速度較快截珍,適用于加密大量數(shù)據(jù)的場合。
3DES(Triple DES):是基于DES箩朴,對(duì)一塊數(shù)據(jù)用三個(gè)不同的密鑰進(jìn)行三次加密岗喉,強(qiáng)度更高。
AES(Advanced Encryption Standard):高級(jí)加密標(biāo)準(zhǔn)炸庞,是下一代的加密算法標(biāo)準(zhǔn)钱床,速度快,安全級(jí)別高燕雁;
非對(duì)稱算法
RSA:由 RSA 公司發(fā)明诞丽,是一個(gè)支持變長密鑰的公共密鑰算法鲸拥,需要加密的文件塊的長度也是可變的;
DSA(Digital Signature Algorithm):數(shù)字簽名算法僧免,是一種標(biāo)準(zhǔn)的 DSS(數(shù)字簽名標(biāo)準(zhǔn))刑赶;
ECC(Elliptic Curves Cryptography):橢圓曲線密碼編碼學(xué)。
ECC和RSA相比懂衩,在許多方面都有對(duì)絕對(duì)的優(yōu)勢撞叨,主要體現(xiàn)在以下方面:
- 抗攻擊性強(qiáng)。相同的密鑰長度浊洞,其抗攻擊性要強(qiáng)很多倍牵敷。
- 計(jì)算量小,處理速度快法希。ECC總的速度比RSA枷餐、DSA要快得多。
- 存儲(chǔ)空間占用小苫亦。ECC的密鑰尺寸和系統(tǒng)參數(shù)與RSA毛肋、DSA相比要小得多,意味著它所占的存貯空間要小得多屋剑。這對(duì)于加密算法在IC卡上的應(yīng)用具有特別重要的意義润匙。
- 帶寬要求低。當(dāng)對(duì)長消息進(jìn)行加解密時(shí)唉匾,三類密碼系統(tǒng)有相同的帶寬要求孕讳,但應(yīng)用于短消息時(shí)ECC帶寬要求卻低得多。帶寬要求低使ECC在無線網(wǎng)絡(luò)領(lǐng)域具有廣泛的應(yīng)用前景巍膘。
散列算法
散列是信息的提煉厂财,通常其長度要比信息小得多,且為一個(gè)固定長度峡懈。加密性強(qiáng)的散列一定是不可逆的蟀苛,這就意味著通過散列結(jié)果,無法推出任何部分的原始信息逮诲。任何輸入信息的變化,哪怕僅一位幽告,都將導(dǎo)致散列結(jié)果的明顯變化梅鹦,這稱之為雪崩效應(yīng)。散列還應(yīng)該是防沖突的冗锁,即找不出具有相同散列結(jié)果的兩條信息齐唆。具有這些特性的散列結(jié)果就可以用于驗(yàn)證信息是否被修改。
單向散列函數(shù)一般用于產(chǎn)生消息摘要冻河,密鑰加密等箍邮,常見的有:
- MD5(Message Digest Algorithm 5):是RSA數(shù)據(jù)安全公司開發(fā)的一種單向散列算法茉帅,非可逆,相同的明文產(chǎn)生相同的密文锭弊。
- SHA(Secure Hash Algorithm):可以對(duì)任意長度的數(shù)據(jù)運(yùn)算生成一個(gè)160位的數(shù)值堪澎;
SHA-1與MD5的比較
因?yàn)槎呔蒑D4導(dǎo)出,SHA-1和MD5彼此很相似味滞。相應(yīng)的樱蛤,他們的強(qiáng)度和其他特性也是相似,但還有以下幾點(diǎn)不同:
對(duì)強(qiáng)行供給的安全性:最顯著和最重要的區(qū)別是SHA-1摘要比MD5摘要長32 位剑鞍。使用強(qiáng)行技術(shù)昨凡,產(chǎn)生任何一個(gè)報(bào)文使其摘要等于給定報(bào)摘要的難度對(duì)MD5是2128數(shù)量級(jí)的操作,而對(duì)SHA-1則是2160數(shù)量級(jí)的操作蚁署。這樣便脊,SHA-1對(duì)強(qiáng)行攻擊有更大的強(qiáng)度。
對(duì)密碼分析的安全性:由于MD5的設(shè)計(jì)光戈,易受密碼分析的攻擊哪痰,SHA-1顯得不易受這樣的攻擊。
速度:在相同的硬件上田度,SHA-1的運(yùn)行速度比MD5慢妒御。
對(duì)稱與非對(duì)稱算法比較
以上綜述了兩種加密方法的原理,總體來說主要有下面幾個(gè)方面的不同:
在管理方面:公鑰密碼算法只需要較少的資源就可以實(shí)現(xiàn)目的镇饺,在密鑰的分配上乎莉,兩者之間相差一個(gè)指數(shù)級(jí)別(一個(gè)是n一個(gè)是n2)。所以私鑰密碼算法不適應(yīng)廣域網(wǎng)的使用奸笤,而且更重要的一點(diǎn)是它不支持?jǐn)?shù)字簽名惋啃。
在安全方面:由于公鑰密碼算法基于未解決的數(shù)學(xué)難題,在破解上幾乎不可能监右。對(duì)于私鑰密碼算法边灭,到了AES雖說從理論來說是不可能破解的,但從計(jì)算機(jī)的發(fā)展角度來看健盒。公鑰更具有優(yōu)越性绒瘦。
從速度上來看:AES的軟件實(shí)現(xiàn)速度已經(jīng)達(dá)到了每秒數(shù)兆或數(shù)十兆比特。是公鑰的100倍扣癣,如果用硬件來實(shí)現(xiàn)的話這個(gè)比值將擴(kuò)大到1000倍惰帽。
三. 加密算法的選擇
由于非對(duì)稱加密算法的運(yùn)行速度比對(duì)稱加密算法的速度慢很多,當(dāng)我們需要加密大量的數(shù)據(jù)時(shí)父虑,建議采用對(duì)稱加密算法该酗,提高加解密速度。
對(duì)稱加密算法不能實(shí)現(xiàn)簽名,因此簽名只能非對(duì)稱算法呜魄。
由于對(duì)稱加密算法的密鑰管理是一個(gè)復(fù)雜的過程悔叽,密鑰的管理直接決定著他的安全性,因此當(dāng)數(shù)據(jù)量很小時(shí)爵嗅,我們可以考慮采用非對(duì)稱加密算法娇澎。
在實(shí)際的操作過程中,我們通常采用的方式是:采用非對(duì)稱加密算法管理對(duì)稱算法的密鑰操骡,然后用對(duì)稱加密算法加密數(shù)據(jù)九火,這樣我們就集成了兩類加密算法的優(yōu)點(diǎn),既實(shí)現(xiàn)了加密速度快的優(yōu)點(diǎn)册招,又實(shí)現(xiàn)了安全方便管理密鑰的優(yōu)點(diǎn)岔激。
那采用多少位的密鑰呢? RSA建議采用1024位的數(shù)字是掰,ECC建議采用160位虑鼎,AES采用128為即可。
四. 密碼學(xué)在現(xiàn)代的應(yīng)用
保密通信:保密通信是密碼學(xué)產(chǎn)生的動(dòng)因键痛。使用公私鑰密碼體制進(jìn)行保密通信時(shí)炫彩,信息接收者只有知道對(duì)應(yīng)的密鑰才可以解密該信息。
數(shù)字簽名:數(shù)字簽名技術(shù)可以代替?zhèn)鹘y(tǒng)的手寫簽名絮短,而且從安全的角度考慮江兢,數(shù)字簽名具有很好的防偽造功能。在政府機(jī)關(guān)丁频、軍事領(lǐng)域杉允、商業(yè)領(lǐng)域有廣泛的應(yīng)用環(huán)境。
秘密共享:秘密共享技術(shù)是指將一個(gè)秘密信息利用密碼技術(shù)分拆成n個(gè)稱為共享因子的信息席里,分發(fā)給n個(gè)成員叔磷,只有k(k≤n)個(gè)合法成員的共享因子才可以恢復(fù)該秘密信息,其中任何一個(gè)或m(m≤k)個(gè)成員合作都不知道該秘密信息奖磁。利用秘密共享技術(shù)可以控制任何需要多個(gè)人共同控制的秘密信息改基、命令等。
認(rèn)證功能:在公開的信道上進(jìn)行敏感信息的傳輸咖为,采用簽名技術(shù)實(shí)現(xiàn)對(duì)消息的真實(shí)性秕狰、完整性進(jìn)行驗(yàn)證,通過驗(yàn)證公鑰證書實(shí)現(xiàn)對(duì)通信主體的身份驗(yàn)證躁染。
密鑰管理:密鑰是保密系統(tǒng)中更為脆弱而重要的環(huán)節(jié)封恰,公鑰密碼體制是解決密鑰管理工作的有力工具;利用公鑰密碼體制進(jìn)行密鑰協(xié)商和產(chǎn)生褐啡,保密通信雙方不需要事先共享秘密信息;利用公鑰密碼體制進(jìn)行密鑰分發(fā)鳖昌、保護(hù)备畦、密鑰托管低飒、密鑰恢復(fù)等。
基于公鑰密碼體制可以實(shí)現(xiàn)以上通用功能以外懂盐,還可以設(shè)計(jì)實(shí)現(xiàn)以下的系統(tǒng):安全電子商務(wù)系統(tǒng)褥赊、電子現(xiàn)金系統(tǒng)、電子選舉系統(tǒng)莉恼、電子招投標(biāo)系統(tǒng)拌喉、電子彩票系統(tǒng)等。
一. AES對(duì)稱加密:
二. 分組密碼的填充
三. 流密碼:
四. 分組密碼加密中的四種模式:
3.1 ECB模式
優(yōu)點(diǎn):
1.簡單俐银;
2.有利于并行計(jì)算尿背;
3.誤差不會(huì)被傳送;
缺點(diǎn):
1.不能隱藏明文的模式捶惜;
2.可能對(duì)明文進(jìn)行主動(dòng)攻擊田藐;
3.2 CBC模式:
優(yōu)點(diǎn):
1.不容易主動(dòng)攻擊,安全性好于ECB,適合傳輸長度長的報(bào)文,是SSL、IPSec的標(biāo)準(zhǔn)吱七。
缺點(diǎn):
1.不利于并行計(jì)算汽久;
2.誤差傳遞;
3.需要初始化向量IV
3.3 CFB模式:
優(yōu)點(diǎn):
1.隱藏了明文模式;
2.分組密碼轉(zhuǎn)化為流模式;
3.可以及時(shí)加密傳送小于分組的數(shù)據(jù);
缺點(diǎn):
1.不利于并行計(jì)算;
2.誤差傳送:一個(gè)明文單元損壞影響多個(gè)單元;
3.唯一的IV;
3.4 OFB模式:
優(yōu)點(diǎn):
1.隱藏了明文模式;
2.分組密碼轉(zhuǎn)化為流模式;
3.可以及時(shí)加密傳送小于分組的數(shù)據(jù);
缺點(diǎn):
1.不利于并行計(jì)算;
2.對(duì)明文的主動(dòng)攻擊是可能的;
3.誤差傳送:一個(gè)明文單元損壞影響多個(gè)單元;