對(duì)稱加密算法介紹
對(duì)稱加密算法是一種隱藏?cái)?shù)據(jù)含義的數(shù)據(jù)變換機(jī)制,該算法提供兩個(gè)函數(shù):數(shù)據(jù)加密和數(shù)據(jù)解密。
它們之所以稱為對(duì)稱的,是因?yàn)橄l(fā)送方和接收方必須使用相同的密鑰來加密和解密數(shù)據(jù)。
加密函數(shù)將數(shù)據(jù)和密鑰值作為輸入,生成并輸出與輸入消息大致等長(zhǎng)的隨機(jī)字節(jié)序列;解密函數(shù)與加密函數(shù)同樣重要,它以加密函數(shù)輸出的隨機(jī)字節(jié)序列和加密函數(shù)使用的密鑰作為輸入,生成原始數(shù)據(jù)。
“對(duì)稱”一詞是指,要成功地解密數(shù)據(jù),必須使用用于數(shù)據(jù)加密的密鑰值來解密。
對(duì)稱加密算法旨在保護(hù)數(shù)據(jù)的機(jī)密性。例如,如果Alice要向Bob發(fā)送一份機(jī)密文檔,可以使用電子郵件;然而電子郵件的隱私性和明信片一樣差。為防止未知方打開該文檔,Ali ce可以使用對(duì)稱加密算法和適當(dāng)?shù)拿荑€來加密數(shù)據(jù),然后通過電子郵件將其發(fā)送出去。在郵件發(fā)送至Bob的過程中任何打開郵件的人看到的只是隨機(jī)字節(jié)序列,而不是機(jī)密文檔。Bob收到加密郵件后,將數(shù)據(jù)和Alice使用的密鑰值輸入Alice使用的對(duì)稱加密算法的解密函數(shù),該函數(shù)將輸出原始數(shù)據(jù),即機(jī)密文檔。
![]() |
最簡(jiǎn)單的對(duì)稱密鑰加密算法凱撒加密算法
一種簡(jiǎn)單的對(duì)稱密鑰加密算法是旋轉(zhuǎn)加密算法,也稱為凱撒加密算法。這種算法是這樣加密數(shù)據(jù)的:將每個(gè)字母替換為其后的第n個(gè)字母。例如,如果n(廣義“密鑰值”)等于3, 那么用字母D代替字母A,用字母E代替字母B,用字母F代替字母C,依此類推。對(duì)于字母表末尾的字母,則繞回到開頭,用字母Z代替字母W,字母A代替字母X,字母B代替字母Y,字母C代 替字母Z等。
因此,當(dāng)使用密鑰值為7的旋轉(zhuǎn)加密算法來加密明文消息“WINNERS USE JAVA” 時(shí),密文為“DPUULYZ BZL QHCH”。即使沒有計(jì)算機(jī)協(xié)助,攻擊者也能輕易破解旋轉(zhuǎn)加密算 法,因?yàn)橹恍鑷L試所有可能的密鑰值(只有26種),便能破解密加密數(shù)據(jù)。
然而,也有很多經(jīng)過實(shí)踐檢驗(yàn)的對(duì)稱加密算法可供選擇,如DES、IDEA、AES(Rijndael )、Twofish和RC2等。對(duì)于對(duì)稱加密算法,和任何加密算法一樣,明智的開發(fā)人員會(huì)選擇一種經(jīng)實(shí)踐檢驗(yàn)的算法,而不是從頭開發(fā)。經(jīng)實(shí)踐檢驗(yàn)的算法都經(jīng)過大量的詳 細(xì)審查,如Rijndael和Twofish算法,有很多算法因?yàn)槁┒春腿觞c(diǎn)而被淘汰了[RSA02]。
對(duì)稱加密算法有兩種:塊加密算法和流加密算法。
塊加密算法每次加密一個(gè)數(shù)據(jù)塊(通常 為8或16字節(jié));流加密算法是相對(duì)較新的算法,通常比塊加密算法快。但塊加密算法更常用 ,這可能是由于它們已使用了較長(zhǎng)時(shí)間,可免費(fèi)使用的算法很多[RSA02]。塊加密算法的例子有DES、IDEA、AES(Rijindael)和Blowfish;流加密算法的例子有RC4和WAKE。由于與SSL 一起用于所有Web瀏覽器中,Ron Rivest的RC4是應(yīng)用最廣泛的流加密算法,但要采用該算法 必須有RSA公司的許可證。在某些模式下,塊加密算法能模擬流加密算法的行為。
高級(jí)加密標(biāo)準(zhǔn)(Advanced Encryption Standard,AES)
在對(duì)稱加密算法中,對(duì)AES應(yīng)特別予以關(guān)注,因?yàn)樗讶〈鶧ES成為美國(guó)政府認(rèn)可的對(duì)稱 加密算法標(biāo)準(zhǔn)。AES算法稱為“Rijndael”,其發(fā)明者是比利時(shí)密碼學(xué)家Joan Daemen和Vinc ent Rijmen,美國(guó)國(guó)家標(biāo)準(zhǔn)和技術(shù)研究所(NIST)從21種加密算法中將其挑選出來。
自1977年以來,DES一直都是美國(guó)聯(lián)邦政府加密敏感信息的標(biāo)準(zhǔn)方法[AES01]。但是隨著計(jì)算能力的不斷提高,DES也逐漸滑向極易攻破的危險(xiǎn)境地。1987年,美國(guó)政府啟動(dòng)了旨在標(biāo)準(zhǔn)化 加密算法的Capstone項(xiàng)目,其中還包括稱為Skipjack的算法,但由于該算法是保密的,密碼 學(xué)家不能分析其弱點(diǎn),鑒于此以及其他一些情況[RSA03]),雖然Skipjack算法最終于199 8年公開發(fā)表了,但還是未能得到廣泛普及[Schneier04]。
1997年,NIST宣布將DES的替代算法命名為AES,并將從公開參選的多種算法中甄選,任何人都可以遞交參選算法,任何算法都將公諸于眾,并將根據(jù)多種評(píng)判標(biāo)準(zhǔn)(包括運(yùn)算速度 和操作的簡(jiǎn)易度)來決出勝出者。2000年10月2日,Rijndael算法擊敗決賽對(duì)手Bruce Schne ier的Twofish算法和Ron Rivest的RC6算法脫穎而出。Rijndael是一種塊加密算法,其密鑰長(zhǎng) 度為128、192或256位,塊長(zhǎng)度為128、192或256位。
AES競(jìng)賽是計(jì)算機(jī)安全領(lǐng)域中一項(xiàng)里程碑式的活動(dòng),它體現(xiàn)了對(duì)一項(xiàng)重要概念的認(rèn)同,即 從長(zhǎng)遠(yuǎn)看,公開審查的加密算法比秘密開發(fā)的算法更加安全。











