常見的加密算法主要有三種:對(duì)稱加密算法、非對(duì)稱加密算法和數(shù)字摘要算法。
特別說(shuō)明,對(duì)于加密算法的無(wú)法破解,是指其在空間和時(shí)間上不具備實(shí)現(xiàn)的條件。如某個(gè)加密算法,采用暴擊攻擊,在現(xiàn)有的計(jì)算資源條件下,需要花費(fèi)50年時(shí)間,那么就可以認(rèn)為其無(wú)法破解。
一、常見加密算法
1、對(duì)稱加密算法
對(duì)稱加密算法也叫共享密鑰加密算法、單密鑰加密算法。采用單密鑰的加密方法,同一個(gè)密鑰可以同時(shí)用作信息的加密和解密,即解密算法為加密算法的逆算法。因此在知道了加密算法后也就知道了解密算法。
衡量對(duì)稱加密算法優(yōu)劣的取決于其密鑰的長(zhǎng)度。密鑰越長(zhǎng),破解需要測(cè)試的密鑰就越多,破解這種算法的難度就越大。其安全性取決于是否有未經(jīng)授權(quán)的人獲得了對(duì)稱密鑰。
對(duì)稱加密算法主要有:
DES:基于使用56位密鑰的對(duì)稱算法,速度較快,適用于加密大量數(shù)據(jù)的場(chǎng)合。但是目前DES已經(jīng)不是一種安全的加密方法,主要因?yàn)樗褂玫?6位密鑰過短。
3DES算法:三重?cái)?shù)據(jù)加密算法,基于DES,對(duì)一塊數(shù)據(jù)用三個(gè)不同的密鑰進(jìn)行三次加密,強(qiáng)度更高,解決因計(jì)算機(jī)運(yùn)算能力的增強(qiáng),DES容易被暴力破解的問題。
AES算法:又稱Rijndael加密法,用來(lái)替代DES,速度快,安全級(jí)別高,支持128、192、256、512位密鑰的加密。
RC5算法:是一種因簡(jiǎn)潔著稱的對(duì)稱分組加密算法,它是參數(shù)可變的分組密碼算法,三個(gè)可變的參數(shù)是:分組大小、密鑰大小和加密輪數(shù)。在此算法中使用了三種運(yùn)算:異或、加和循環(huán)。
IDEA算法:是在DES算法的基礎(chǔ)上發(fā)展出來(lái)的,類似于三重DES,主要彌補(bǔ)DES密鑰太短等缺點(diǎn)。IDEA的密鑰為128位。
Blowfish算法:一個(gè)64位分組及可變密鑰長(zhǎng)度的對(duì)稱密鑰分組密碼算法,可用來(lái)加密64比特長(zhǎng)度的字符串,該算法具有加密速度快、緊湊、密鑰長(zhǎng)度可變、可免費(fèi)使用等特點(diǎn),并且當(dāng)前為止沒有發(fā)現(xiàn)有效地破解方法。
2、非對(duì)稱加密算法
非對(duì)稱加密算法又叫公開密鑰算法。采用的是公鑰和私鑰相結(jié)合的加密方法。公鑰和私鑰是兩個(gè)完全不同的密鑰,一個(gè)用于加密,一個(gè)用于解密。同時(shí)這兩個(gè)密鑰在數(shù)學(xué)上是關(guān)聯(lián)的。即解密算法不是加密算法的逆算法,因此在知道了加密算法后也無(wú)法知道解密算法,保證了安全性。
在非對(duì)稱加密算法中通過公鑰加密的數(shù)據(jù),只能通過私鑰解開。通過私鑰加密的數(shù)據(jù),只能通過公鑰解開。其主要局限在于,這種加密形式的速度相對(duì)較低,通常僅在關(guān)鍵時(shí)刻才使用該算法。
非對(duì)稱加密算法主要有:
●RSA算法:對(duì)極大整數(shù)做因數(shù)分解的難度決定了RSA算法的可靠性,到目前為止,世界上還沒有任何可靠的攻擊RSA算法的方式。只要其鑰匙的長(zhǎng)度足夠長(zhǎng),用RSA加密的信息實(shí)際上是不能被解破的。
●Rabin算法:基于費(fèi)馬小定理的大素?cái)?shù)檢測(cè)算法。
●El Gamal算法:是一個(gè)基于迪菲-赫爾曼密鑰交換的非對(duì)稱加密算法。其安全性依賴于計(jì)算有限域上離散對(duì)數(shù)這一難題
●橢圓曲線算法(ECC):是一種基于橢圓曲線數(shù)學(xué)的公開密鑰加密算法。橢圓曲線算法是代替RSA的強(qiáng)有力的競(jìng)爭(zhēng)者,有如下特點(diǎn):安全性能更高,如160位ECC與1024位RSA、DSA有相同的安全強(qiáng)度;計(jì)算量小,處理速度快,在私鑰的處理速度上遠(yuǎn)比RSA快得多;存儲(chǔ)空間占用小,ECC的密鑰尺寸和系統(tǒng)參數(shù)與RSA相比要小得多,所以占用的存儲(chǔ)空間小得多;帶寬要求低,使得ECC具有廣泛的應(yīng)用前景。
3、數(shù)字摘要算法
又稱哈希算法、散列算法,是一種單向算法,它通過對(duì)數(shù)據(jù)內(nèi)容進(jìn)行散列得到一個(gè)固定長(zhǎng)度的密文信息(信息是任意長(zhǎng)度,而摘要是定長(zhǎng))。即用戶可以通過哈希算法對(duì)目標(biāo)信息生成一段特定長(zhǎng)度的唯一的Hash值,卻不能通過這個(gè)Hash值重新獲得目標(biāo)信息。該算法不可逆。
數(shù)字摘要算法不可逆,是因?yàn)樵谟?jì)算過程中原文的部分信息是丟失了的,所以無(wú)法從一個(gè)Hash值推導(dǎo)出原值的(舉個(gè)不一定恰當(dāng)?shù)睦樱?+9,我們可以推導(dǎo)出結(jié)果是10,但是卻無(wú)法從10推導(dǎo)出原文為1+9,因?yàn)椴糠中畔⒌膩G失,導(dǎo)致還有其它的可能性,比如2+8,3+7……)。理論上一個(gè)Hash值是可能對(duì)應(yīng)無(wú)數(shù)多個(gè)原文的,算法把無(wú)限的映射成有限,因此可能會(huì)有碰撞(兩個(gè)不同的信息,算出的摘要相同)。但是在現(xiàn)實(shí)中,由于原文的長(zhǎng)度有限,所以想要出現(xiàn)兩段原文對(duì)應(yīng)同一個(gè)Hash值的是及其困難的,即幾乎不會(huì)出現(xiàn)碰撞的情況,這就使得該算法得以在現(xiàn)實(shí)中可以應(yīng)用。
數(shù)字摘要算法主要有:
●MD5:一種被廣泛使用的密碼散列函數(shù),可以產(chǎn)生出一個(gè)128位的散列值,用于確保信息傳輸完整一致。王小云教授采用碰撞算法驗(yàn)證了MD5可以被加以破解,對(duì)于需要高度安全性的數(shù)據(jù),專家一般建議改用其他算法,如SHA-2。
●SHA-1:SHA-1可以生成一個(gè)被稱為消息摘要的160位散列值,散列值通常的呈現(xiàn)形式為40個(gè)十六進(jìn)制數(shù)。SHA-1已經(jīng)不再視為可抵御有充足資金、充足計(jì)算資源的攻擊者。自2010年以來(lái),許多組織建議用來(lái)SHA-2或SHA-3替換SHA1。
●SHA-2:是一種密碼散列函數(shù)算法標(biāo)準(zhǔn),其輸出長(zhǎng)度可取224位、256位、384位、512位,分別對(duì)應(yīng)SHA-224、SHA-256、SHA-384、SHA-512。目前SHA-2算是安全的加密算法。
●SHA-3:基于Keccak算法,是與SHA-2不同的設(shè)計(jì)方式,可避免已有的攻擊方式,而且能夠提供SHA-2不具備的一些性能。
二、特點(diǎn)
1、對(duì)稱加密算法
●加密和解密使用相同的秘鑰,容易被破解
●速度比非對(duì)稱加密算法快
●數(shù)據(jù)傳輸?shù)倪^程不安全
2、非對(duì)稱加密算法
●保密性比較好,消除了用戶交換秘鑰的需要
●算法強(qiáng)度復(fù)雜,安全性比較強(qiáng)
●速度慢于對(duì)稱加密算法
3、數(shù)字摘要算法
●信息是任意長(zhǎng)度,摘要是定長(zhǎng)的
●摘要算法是防沖突的,即找不出摘要結(jié)果相同的兩條信息
●摘要結(jié)果是不可逆的,即無(wú)法通過摘要還原出相應(yīng)的原始內(nèi)容
三、適用場(chǎng)景
1、對(duì)稱加密算法
●無(wú)需進(jìn)行密鑰交換的場(chǎng)景,如內(nèi)部系統(tǒng),事先就可以直接確定密鑰
●防止明文傳輸數(shù)據(jù)被竊取的
●加解密速度快,適合數(shù)據(jù)內(nèi)容比較大的加密場(chǎng)景
2、非對(duì)稱加密算法
●適用于需要密鑰交換的場(chǎng)景,如互聯(lián)網(wǎng)應(yīng)用,無(wú)法事先約定密鑰
●與對(duì)稱加密算法結(jié)合。利用非對(duì)稱加密算法安全性較好的特點(diǎn),傳遞對(duì)稱加密算法的密鑰。利用對(duì)稱加密算法加解密速度快的特點(diǎn),進(jìn)行數(shù)據(jù)內(nèi)容比較大的加密場(chǎng)景的加密。如HTTPS。
3、數(shù)字摘要算法
●下載文件時(shí),文件的完整性校驗(yàn)
●接口交互時(shí),交互數(shù)據(jù)的完整性校驗(yàn)
●數(shù)字證書的指紋生成算法
●密碼的正確性校驗(yàn),即只需要驗(yàn)證密碼的摘要是否相同即可確認(rèn)密碼是否相同,同時(shí)也保證讓密碼以密文保存,無(wú)法被可逆破解