3.1.1對稱加密的概述
對稱加密(也叫私鑰加密算法)指加密和解密使用相同密鑰的加密算法洋访。它要求發(fā)送方和接收方在安全通信之前镣陕,商定一個(gè)密鑰。對稱算法的安全性依賴于密鑰姻政,泄漏密鑰就意味著任何人都可以對他們發(fā)送或接收的消息解密呆抑,所以密鑰的保密性對通信的安全性至關(guān)重要。
對稱加密算法的優(yōu)點(diǎn)是計(jì)算量小汁展、加密速度快鹊碍、加密效率高。
不足之處是食绿,參與方需要提前持有密鑰侈咕,一旦有人泄露則系統(tǒng)安全性被破壞;另外如何在不安全通道中提前分發(fā)密鑰也是個(gè)問題器紧,密鑰管理非常困難耀销。
基于“對稱密鑰”的加密算法主要有DES、3DES(TripleDES)铲汪、AES树姨、RC2、RC4桥状、RC5和Blowfish等帽揪。本章將介紹最常用的對稱加密算法DES、3DES(TripleDES)和AES辅斟。加密過程如圖13.4所示.
圖3.1?加密解密
3.1.2DES和TripleDES算法
DES算法全稱為Data Encryption Standard转晰,即數(shù)據(jù)加密標(biāo)準(zhǔn)算法。DES是加密和解密使用相同密鑰的加密算法士飒,也叫做單密鑰算法或私鑰加密算法查邢,傳統(tǒng)密鑰算法。它是IBM公司于1975年研究成功并公開發(fā)表的酵幕。
DES算法的入口參數(shù)有三個(gè):Key扰藕、Data、Mode芳撒。
l其中Key是DES算法的工作密鑰邓深,8個(gè)字節(jié)共64位;
l?Data是要被加密或被解密的數(shù)據(jù)笔刹;
l?Mode為DES的工作方式,有兩種:加密或解密芥备。
在沒有密鑰的情況下,解密耗費(fèi)時(shí)間非常長舌菜,基本上認(rèn)為沒有可能萌壳。加密解密耗時(shí)和需要加密的文本大小成正比,這是P問題。如果知道明文和對應(yīng)的密文袱瓮,求解所用的密鑰缤骨,這是NP問題。目前還沒有NP的求解算法尺借,但是很容易得到驗(yàn)證荷憋。想得到NP的解,只能暴力破解(窮舉破解)窮舉驗(yàn)證成為對稱加密僅有的求解方式褐望,求解時(shí)間呈指數(shù)級增長。
DES算法把64位的明文輸入塊變?yōu)閿?shù)據(jù)長度為64位的密文輸出塊串前,其中8位為奇偶校驗(yàn)位瘫里,另外56位作為密碼的長度。首先荡碾,DES把輸入的64位數(shù)據(jù)塊按位重新組合谨读,并把輸出分為L0、R0兩部分坛吁,每部分各長32位劳殖,并進(jìn)行前后置換,最終由L0輸出左32位拨脉,R0輸出右32位
根據(jù)這個(gè)法則經(jīng)過16次迭代運(yùn)算后哆姻,得到L16、R16玫膀,將此作為輸入矛缨,進(jìn)行與初始置換相反的逆置換,即得到密文輸出帖旨。DES算法具有極高的安全性箕昭,到目前為止,除了用窮舉搜索法對DES算法進(jìn)行攻擊外解阅,還沒有發(fā)現(xiàn)更有效的辦法落竹。56位長密鑰的窮舉空間為2^56,這意味著如果一臺計(jì)算機(jī)的速度是每秒種檢測100萬個(gè)密鑰货抄,那么它搜索完全部密鑰就需要將近2285年的時(shí)間述召,因此DES算法是一種很可靠的加密方法。3DES密鑰是24字節(jié)蟹地,即192位二進(jìn)制桨武。
3.1.3AES加密
高級加密標(biāo)準(zhǔn)(英語:Advanced Encryption Standard,縮寫:AES)锈津,由美國國家標(biāo)準(zhǔn)與技術(shù)研究院(NIST)于2001年11月26日發(fā)布呀酸,并在2002年5月26日成為有效的標(biāo)準(zhǔn)。2006年琼梆,高級加密標(biāo)準(zhǔn)已然成為對稱密鑰加密中最流行的算法之一性誉。該算法與其他對稱密碼算法相比更安全窿吩、效率更高等特點(diǎn)。
AES使用128位错览,192位或者256位的密鑰長度(密鑰分別是:16字節(jié)纫雁、24字節(jié)、32字節(jié))倾哺,使得它比密鑰長度為56位的DES更健壯可靠轧邪。
2^64 = 18446744073709551616
2^64這個(gè)數(shù)大于全球小麥1000年的產(chǎn)量。如果1微秒驗(yàn)證一個(gè)密碼(1秒驗(yàn)證100萬個(gè))羞海,窮舉需要費(fèi)時(shí)58萬年忌愚。
2^256?約= 10 ^ 77
10^80?是當(dāng)前人類可見宇宙中所有物質(zhì)原子數(shù)目的總和。
3.1.4AES的加密模式
AES的加密模式對應(yīng)中文名稱如表所示却邓。
加密模式(英文名稱及簡寫)中文名稱
Electronic Code Book(ECB)電子密碼本模式
Cipher Block Chaining(CBC)密碼分組鏈接模式
Cipher Feedback Mode(CFB)加密反饋模式
Output Feedback Mode(OFB)輸出反饋模式
ECB:最基本的加密模式硕糊,也就是通常理解的加密,相同的明文將永遠(yuǎn)加密成相同的密文腊徙,無初始向量简十,容易受到密碼本重放攻擊,一般情況下很少用撬腾。
CBC:明文被加密前要與前面的密文進(jìn)行異或運(yùn)算后再加密螟蝙,因此只要選擇不同的初始向量,相同的密文加密后會形成不同的密文民傻,這是目前應(yīng)用最廣泛的模式胶逢。CBC加密后的密文是上下文相關(guān)的,但明文的錯(cuò)誤不會傳遞到后續(xù)分組饰潜,但如果一個(gè)分組丟失初坠,后面的分組將全部作廢(同步錯(cuò)誤)。
CFB:類似于自同步序列密碼彭雾,分組加密后碟刺,按8位分組將密文和明文進(jìn)行移位異或后得到輸出同時(shí)反饋回移位寄存器,優(yōu)點(diǎn)最小可以按字節(jié)進(jìn)行加解密薯酝,也可以是n位的半沽,CFB也是上下文相關(guān)的,CFB模式下吴菠,明文的一個(gè)錯(cuò)誤會影響后面的密文(錯(cuò)誤擴(kuò)散)者填。
OFB:將分組密碼作為同步序列密碼運(yùn)行,和CFB相似做葵,不過OFB用的是前一個(gè)n位密文輸出分組反饋回移位寄存器占哟,OFB沒有錯(cuò)誤擴(kuò)散問題。
3.1.5填充方式
進(jìn)行DES、3DES和AES三種對稱加密算法時(shí)榨乎,常采用的是PKCS5Padding填充怎燥、Zeros填充(0填充)。
1. PKCS5Padding
每個(gè)填充的字節(jié)都記錄了填充的總字節(jié)數(shù)
“a”填充后結(jié)果為:?[97 7 7 7 7 7 7 7] ??
“ab”填充后結(jié)果為:?[97 98 6 6 6 6 6 6] ??
“一a”填充后結(jié)果為:[228 184 128 97 4 4 4 4]
2. ZerosPadding
全部填充為0的字節(jié)
“a”填充后結(jié)果為:?[97 0 0 0 0 0 0 0] ?
“ab”填充后結(jié)果為:[97 98 0 0 0 0 0 0] ?
“一a”填充后結(jié)果為:[228 184 128 97 0 0 0 0]