“對(duì)稱加密算法”,這是一種相對(duì)應(yīng)用得比較早的加密算法之一,其技術(shù)也是比較成熟的。
在執(zhí)行對(duì)稱加密時(shí),數(shù)據(jù)發(fā)出方將需要明文(之前的文章中有解釋)和加密密鑰一起輸入至加密算法中進(jìn)行處理,使之變成更為復(fù)雜的加密密文,之后再將密文發(fā)布出去。
如果接收密文的一方需要解讀接收到的密文,則需要使用與密文發(fā)出方一樣的加密密鑰,并通過加密的逆運(yùn)算(解密)驗(yàn)證,才能得到原始的明文數(shù)據(jù)。
在此過程中,加密和解密使用的密鑰是相同的,所以這就是“對(duì)稱加密算法”名稱的由來。
對(duì)稱加密算法有很多優(yōu)點(diǎn),比如加/解密效率較高,加密強(qiáng)度非??煽康?。
當(dāng)然,它也有著自己的缺點(diǎn),比如,若他人得到了本該只有發(fā)送方和接收方才應(yīng)該持有的加密密鑰,則意味著這種加密方式原有的安全性受到了破壞;并且不得不再設(shè)計(jì)一套新的加密密鑰。
另外,每次使用該加密算法時(shí),用戶都需要使用其他人所不知道的唯一密鑰,那么如何管理那些曾經(jīng)使用過的密鑰將至關(guān)重要,因?yàn)殡S著密鑰數(shù)量的增加,必然會(huì)導(dǎo)致存儲(chǔ)上的負(fù)擔(dān)相應(yīng)的增加。
在區(qū)塊鏈中,對(duì)稱加密算法主要有兩種形式:分組加密和序列加密。
雖然都是對(duì)稱加密算法,但是它們的不同之處在于分組加密會(huì)先將明文數(shù)據(jù)分為幾段固定長(zhǎng)度的數(shù)據(jù)塊作為基本加密單位,然后再依次對(duì)這些數(shù)據(jù)塊進(jìn)行加密。而序列加密則每次只對(duì)一個(gè)字節(jié)或字符進(jìn)行加密,且使用的密鑰也會(huì)不斷地發(fā)生變化。
在這兩種形式的對(duì)稱加密算法中,有一些比較典型的算法,比如:DES、3DES、IDEA、AES等。
下面,對(duì)這幾個(gè)加密算法進(jìn)行一個(gè)理解:
DES(Data Encryption Standard)采用的是分組加密形式,由美國(guó)的IBM公司于1972年研發(fā)成功,并于1977年成為了美國(guó)數(shù)據(jù)加密標(biāo)準(zhǔn)。DES是將明文數(shù)據(jù)按照64bits的方式進(jìn)行分組,使用長(zhǎng)度為64bits的密鑰。
雖然DES很經(jīng)典,但是對(duì)于現(xiàn)在的科技是完全可以利用現(xiàn)代的硬件設(shè)備和解密算法,通過暴力搜索的方式可以輕易得到經(jīng)過DES加密前的明文數(shù)據(jù)。
3DES(Triple),這個(gè)就很好理解了,它是將64bits長(zhǎng)的數(shù)據(jù)塊進(jìn)行3次DES加密。雖然進(jìn)行了3次加密,但是以當(dāng)下的條件,這種加密方式也被認(rèn)為不安全了。
IDEA(International Data Encryption Algorithm),這種加密算法是由中國(guó)學(xué)者朱學(xué)嘉博士和著名的密碼學(xué)家James Massey于1990年聯(lián)合提出的,之后經(jīng)過一些修改之后于1992年最后完成。IDEA參考了3DES,其明文數(shù)據(jù)塊和密文數(shù)據(jù)塊的長(zhǎng)度都是64bits,只是將密鑰的長(zhǎng)度增加到了128位。可以是在3DES上的一個(gè)升級(jí)。
AES(Advance Encryption Standard),算法是由比利時(shí)密碼學(xué)家Joan Daemon和Vincent Rijmen發(fā)明的,其最初的名字是Rijindael。這種算法也屬于分組算法,其有128bits、192bits和256bits三種長(zhǎng)度的分組。這種加密算法的優(yōu)勢(shì)就是處理速度快,并且目前尚未找到有效的破解手段。
2000年,NIST(National Institute of Standard and Technology,美國(guó)國(guó)家標(biāo)準(zhǔn)研究所)經(jīng)過層層篩選,于15個(gè)優(yōu)秀的加密算法中評(píng)出來Rijindael作為AES,標(biāo)準(zhǔn)為EPS-17。隨后,NIST取代了DES作為實(shí)現(xiàn)對(duì)稱加密算法中的最新標(biāo)準(zhǔn)。
對(duì)稱加密算法適用于大量數(shù)據(jù)的加密和解密過程,但不適用于一些需要簽名的場(chǎng)景使用,并且對(duì)稱加密還需要提前分發(fā)好密鑰,所以大部分區(qū)塊鏈系統(tǒng)中慣用的加密算法都是非對(duì)稱的。