常見(jiàn)的加密算法可以分成三類(lèi)呵燕,對(duì)稱(chēng)加密算法拗军,非對(duì)稱(chēng)加密算法和Hash算法殊轴。
對(duì)稱(chēng)加密
指加密和解密使用相同密鑰的加密算法,對(duì)稱(chēng)加密算法的優(yōu)點(diǎn)在于加解密的高速度和使用長(zhǎng)密鑰時(shí)的難破解性座云,對(duì)稱(chēng)加密算法的安全性取決于加密密鑰的保存情況
舉列:假設(shè)兩個(gè)用戶需要使用對(duì)稱(chēng)加密方法加密然后交換數(shù)據(jù)疙赠,則用戶最少需要2個(gè)密鑰并交換使用,如果企業(yè)內(nèi)用戶有n個(gè)朦拖,則整個(gè)企業(yè)共需要n×(n-1) 個(gè)密鑰圃阳,密鑰的生成和分發(fā)將成為企業(yè)信息部門(mén)的惡夢(mèng)對(duì)稱(chēng)加密算法的安全性取決于加密密鑰的保存情況,但要求企業(yè)中每一個(gè)持有密鑰的人都保守秘密是不可能的璧帝。
常見(jiàn)的對(duì)稱(chēng)加密算法:DES捍岳、3DES、AES、DESX锣夹、Blowfish页徐、IDEA、RC4晕城、RC5泞坦、RC6
非對(duì)稱(chēng)加密
指加密和解密使用不同密鑰的加密算法,也稱(chēng)為公私鑰加密砖顷。
舉列:假設(shè)兩個(gè)用戶要加密交換數(shù)據(jù),雙方交換公鑰赃梧,使用時(shí)一方用對(duì)方的公鑰加密滤蝠,另一方即可用自己的私鑰解密。如果企業(yè)中有n個(gè)用戶授嘀,企業(yè)需要生成n對(duì)密鑰物咳,并分發(fā)n個(gè)公鑰。由于公鑰是可以公開(kāi)的蹄皱,用戶只要保管好自己的私鑰即可览闰,因此加密密鑰的分發(fā)將變得十分簡(jiǎn)單。同時(shí)巷折,由于每個(gè)用戶的私鑰是唯一的压鉴,其他用戶除了可以可以通過(guò)信息發(fā)送者的公鑰來(lái)驗(yàn)證信息的來(lái)源是否真實(shí),還可以確保發(fā)送者無(wú)法否認(rèn)曾發(fā)送過(guò)該信息锻拘。非對(duì)稱(chēng)加密的缺點(diǎn)是加解密速度要遠(yuǎn)遠(yuǎn)慢于對(duì)稱(chēng)加密
常見(jiàn)的非對(duì)稱(chēng)加密算法:RSA油吭、ECC橢圓曲線加密(移動(dòng)設(shè)備用)、DSA(數(shù)字簽名用)署拟、Diffie-Hellman婉宰、El Gamal
Hash算法
Hash算法特別的地方在于它是一種單向算法,用戶可以通過(guò)Hash算法對(duì)目標(biāo)信息生成一段特定長(zhǎng)度的唯一的Hash值推穷,卻不能通過(guò)這個(gè)Hash值重新獲得目標(biāo)信息心包。因此Hash算法常用在不可還原的密碼存儲(chǔ)、信息完整性校驗(yàn)等馒铃。
常見(jiàn)的Hash算法:MD2蟹腾、MD4、MD5骗露、HAVAL岭佳、SHA、SHA-1萧锉、SHA-256珊随、HMAC、HMAC-MD5、HMAC-SHA1
加密算法的選擇
根據(jù)自己的使用特點(diǎn)來(lái)確定
- 非對(duì)稱(chēng)加密算法的運(yùn)行速度比對(duì)稱(chēng)加密算法的速度慢很多叶洞,當(dāng)我們需要加密大量的數(shù)據(jù)時(shí)鲫凶,建議采用對(duì)稱(chēng)加密算法,提高加解密速度
- 對(duì)稱(chēng)加密算法不能實(shí)現(xiàn)簽名衩辟,因此簽名只能非對(duì)稱(chēng)算法
- 對(duì)稱(chēng)加密算法的密鑰管理是一個(gè)復(fù)雜的過(guò)程螟炫,密鑰的管理直接決定著他的安全性,因此當(dāng)數(shù)據(jù)量很小時(shí)艺晴,我們可以考慮采用非對(duì)稱(chēng)加密算法
- 通常采用的方式是:采用非對(duì)稱(chēng)加密算法管理對(duì)稱(chēng)算法的密鑰昼钻,然后用對(duì)稱(chēng)加密算法加密數(shù)據(jù),這樣我們就集成了兩類(lèi)加密算法的優(yōu)點(diǎn)封寞,既實(shí)現(xiàn)了加密速度快的優(yōu)點(diǎn)然评,又實(shí)現(xiàn)了安全方便管理密鑰的優(yōu)點(diǎn)
選定了加密算法后,那采用多少位的密鑰呢狈究?一般來(lái)說(shuō)碗淌,密鑰越長(zhǎng),運(yùn)行的速度就越慢抖锥,應(yīng)該根據(jù)的我們實(shí)際需要的安全級(jí)別來(lái)選擇亿眠,一般來(lái)說(shuō),RSA建議采用1024位的數(shù)字磅废,ECC建議采用160位纳像,AES采用128為即可
對(duì)稱(chēng)加密算法對(duì)比(常見(jiàn)算法):
- DES(Data Encryption Standard):數(shù)據(jù)加密標(biāo)準(zhǔn),速度較快还蹲,適用于加密大量數(shù)據(jù)的場(chǎng)合爹耗。
- 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ì)稱(chēng)算法對(duì)比(常見(jiàn)算法):
- RSA:由 RSA 公司發(fā)明诵次,是一個(gè)支持變長(zhǎng)密鑰的公共密鑰算法账蓉,需要加密的文件塊的長(zhǎng)度也是可變的;
- 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)勢(shì):
1箱玷、抗攻擊性強(qiáng)怨规。相同的密鑰長(zhǎng)度,其抗攻擊性要強(qiáng)很多倍锡足。
2波丰、計(jì)算量小,處理速度快舶得。ECC總的速度比RSA掰烟、DSA要快得多。
3沐批、ECC的密鑰尺寸和系統(tǒng)參數(shù)與RSA纫骑、DSA相比要小得多,意味著它所占的存貯空間要小得多珠插。這對(duì)于加密算法在IC卡上的應(yīng)用具有特別重要的意義惧磺。
4、帶寬要求低捻撑。當(dāng)對(duì)長(zhǎng)消息進(jìn)行加解密時(shí),三類(lèi)密碼系統(tǒng)有相同的帶寬要求缤底,但應(yīng)用于短消息時(shí)ECC帶寬要求卻低得多顾患。帶寬要求低使ECC在無(wú)線網(wǎng)絡(luò)領(lǐng)域具有廣泛的應(yīng)用前景。
hash算法:(散列算法)
hash算法中主要為散列算法:
1个唧、散列是信息的提煉江解,通常其長(zhǎng)度要比信息小得多,且為一個(gè)固定長(zhǎng)度徙歼。加密性強(qiáng)的散列一定是不可逆的犁河,這就意味著通過(guò)散列結(jié)果,無(wú)法推出任何部分的原始信息魄梯。任何輸入信息的變化桨螺,哪怕僅一位,都將導(dǎo)致散列結(jié)果的明顯變化酿秸,這稱(chēng)之為雪崩效應(yīng)灭翔。
2、散列還應(yīng)該是防沖突的辣苏,即找不出具有相同散列結(jié)果的兩條信息肝箱。具有這些特性的散列結(jié)果就可以用于驗(yàn)證信息是否被修改
3、單向散列函數(shù)一般用于產(chǎn)生消息摘要稀蟋,密鑰加密等
MD5(Message Digest Algorithm 5):是RSA數(shù)據(jù)安全公司開(kāi)發(fā)的一種單向散列算法煌张,非可逆,相同的明文產(chǎn)生相同的密文退客。
SHA(Secure Hash Algorithm):可以對(duì)任意長(zhǎng)度的數(shù)據(jù)運(yùn)算生成一個(gè)160位的數(shù)值骏融;
對(duì)密碼分析的安全性:由于MD5的設(shè)計(jì),易受密碼分析的攻擊,SHA256顯得不易受這樣的攻擊绎谦。速度:在相同的硬件上管闷,SHA的運(yùn)行速度比MD5慢。
總結(jié):
加密算法的效能通城猿Γ可以按照算法本身的復(fù)雜程度包个、密鑰長(zhǎng)度(密鑰越長(zhǎng)越安全)、加解密速度等來(lái)衡量冤留。上述的算法中碧囊,除了DES密鑰長(zhǎng)度不夠、MD2速度較慢已逐漸被淘汰外纤怒,其他算法仍在目前的加密系統(tǒng)產(chǎn)品中使用糯而。