一、對稱加密?(Symmetric Key Encryption)?
對稱加密是最快速、最簡單的一種加密方式,加密(encryption)與解密(decryption)用的是同樣的密鑰(secret key)。對稱加密有很多種算法,由于它效率很高,所以被廣泛使用在很多加密協(xié)議的核心當中。自1977年美國頒布DES(Data Encryption Standard)密碼算法作為美國數(shù)據(jù)加密標準以來,對稱密碼體制迅速發(fā)展,得到了世界各國的關(guān)注和普遍應(yīng)用。對稱密碼體制從工作方式上可以分為分組加密和序列密碼兩大類。
對稱加密算法的優(yōu)點:算法公開、計算量小、加密速度快、加密效率高。
對稱加密算法的缺點:交易雙方都使用同樣鑰匙,安全性得不到保證。此外,每對用戶每次使用對稱加密算法時,都需要使用其他人不知道的惟一鑰匙,這會使得發(fā)收信雙方所擁有的鑰匙數(shù)量呈幾何級數(shù)增長,密鑰管理成為用戶的負擔。對稱加密算法在分布式網(wǎng)絡(luò)系統(tǒng)上使用較為困難,主要是因為密鑰管理困難,使用成本較高。而與公開密鑰加密算法比起來,對稱加密算法能夠提供加密和認證卻缺乏了簽名功能,使得使用范圍有所縮小。
對稱加密通常使用的是相對較小的密鑰,一般小于256 bit。因為密鑰越大,加密越強,但加密與解密的過程越慢。如果你只用1 bit來做這個密鑰,那黑客們可以先試著用0來解密,不行的話就再用1解;但如果你的密鑰有1 MB大,黑客們可能永遠也無法破解,但加密和解密的過程要花費很長的時間。密鑰的大小既要照顧到安全性,也要照顧到效率,是一個trade-off。
分組密碼:也叫塊加密(block cyphers),一次加密明文中的一個塊。是將明文按一定的位長分組,明文組經(jīng)過加密運算得到密文組,密文組經(jīng)過解密運算(加密運算的逆運算),還原成明文組,有 ECB、CBC、CFB、OFB 四種工作模式。
序列密碼:也叫流加密(stream cyphers),一次加密明文中的一個位。是指利用少量的密鑰(制亂元素)通過某種復(fù)雜的運算(密碼算法)產(chǎn)生大量的偽隨機位流,用于對明文位流的加密。解密是指用同樣的密鑰和密碼算法及與加密相同的偽隨機位流,用以還原明文位流。
常用對稱加密算法包括 DES、3DES、AES
1. DES(Data Encryption Standard):數(shù)據(jù)加密標準,速度較快,適用于加密大量數(shù)據(jù)的場合。
2. 3DES(Triple DES):是基于DES,對一塊數(shù)據(jù)用三個不同的密鑰進行三次加密,強度更高。
3. AES(Advanced Encryption Standard):高級加密標準,是下一代的加密算法標準,速度快,安全級別高,支持128、192、256、512位密鑰的加密。
算法特征
1. 加密方和解密方使用同一個密鑰。
2. 加密解密的速度比較快,適合數(shù)據(jù)比較長時的使用。
3.?密鑰傳輸?shù)倪^程不安全,且容易被破解,密鑰管理也比較麻煩。
二、非對稱加密(Asymmetric Key Encryption)
非對稱加密為數(shù)據(jù)的加密與解密提供了一個非常安全的方法,它使用了一對密鑰,公鑰(public key)和私鑰(private key)。私鑰只能由一方安全保管,不能外泄,而公鑰則可以發(fā)給任何請求它的人。非對稱加密使用這對密鑰中的一個進行加密,而解密則需要另一個密鑰。比如,你向銀行請求公鑰,銀行將公鑰發(fā)給你,你使用公鑰對消息加密,那么只有私鑰的持有人--銀行才能對你的消息解密。與對稱加密不同的是,銀行不需要將私鑰通過網(wǎng)絡(luò)發(fā)送出去,因此安全性大大提高。
非對稱加密算法的優(yōu)點:安全性更高,公鑰是公開的,秘鑰是自己保存的,不需要將私鑰給別人。
非對稱加密算法的缺點:加密和解密花費時間長、速度慢,只適合對少量數(shù)據(jù)進行加密。
對稱加密算法相比非對稱加密算法來說,加解密的效率要高得多。但是缺陷在于對于秘鑰的管理上,以及在非安全信道中通訊時,密鑰交換的安全性不能保障。所以在實際的網(wǎng)絡(luò)環(huán)境中,會將兩者混合使用。
非對稱加密算法包括?RSA、Elgamal、背包算法、Rabin、D-H、ECC(橢圓曲線加密算法),常見的有RSA、ECC。
三、分組加密的四種工作模式
1、ECB (Electronic Code Book,電子編碼本)?
ECB 模式是最簡單的加密模式,明文消息被分成固定大小的塊(分組),并且每個塊被單獨加密。每個塊的加密和解密都是獨立的,且使用相同的方法進行加密,所以可以進行并行計算,但是這種方法一旦有一個塊被破解,使用相同的方法可以解密所有的明文數(shù)據(jù),安全性比較差。適用于數(shù)據(jù)較少的情形,加密前需要把明文數(shù)據(jù)填充到塊大小的整倍數(shù)。
ECB算法優(yōu)點:
簡單、孤立,每個塊單獨運算。適合并行運算。傳輸錯誤一般只影響當前塊。
ECB算法缺點:
同明文輸出同密文,可能導(dǎo)致明文攻擊。
Encryption:

Decryption:

2、CBC (Cipher Block Chaining, 密碼分組鏈接)
CBC 模式中每一個分組要先和前一個分組加密后的數(shù)據(jù)進行XOR異或操作,然后再進行加密。這樣每個密文塊依賴該塊之前的所有明文塊,為了保持每條消息都具有唯一性,第一個數(shù)據(jù)塊進行加密之前需要用初始化向量IV進行異或操作。CBC模式是一種最常用的加密模式,它主要缺點是加密是連續(xù)的,不能并行處理,并且與ECB一樣消息塊必須填充到塊大小的整倍數(shù)。?
CBC算法優(yōu)點:
串行化運算,相同明文不同密文。
CBC算法缺點:
需要初始向量。
Encryption:

Decryption:

3、CFB (Cipher Feedback, 密碼反饋)
CFB 模式和CBC模式比較相似,前一個分組的密文加密后和當前分組的明文XOR異或操作生成當前分組的密文。CFB模式的解密和CBC模式的加密在流程上其實是非常相似的。
CFB算法優(yōu)點:
同明文不同密文,分組密鑰轉(zhuǎn)換為流密碼。
CFB算法缺點:
串行運算不利并行,傳輸錯誤可能導(dǎo)致后續(xù)傳輸塊錯誤。
Encryption:

Decryption:

4、OFB (Output Feedback, 輸出反饋)
OFB 模式將分組密碼轉(zhuǎn)換為同步流密碼,也就是說可以根據(jù)明文長度先獨立生成相應(yīng)長度的流密碼。通過流程圖可以看出,OFB和CFB非常相似,CFB是前一個分組的密文加密后XOR當前分組明文,OFB是前一個分組與前一個明文塊異或之前的流密碼XOR當前分組明文。由于異或操作的對稱性,OFB模式的解密和加密完全一樣的流程。?
OFB算法優(yōu)點:
同明文不同密文,分組密鑰轉(zhuǎn)換為流密碼。
OFB算法缺點:
串行運算不利并行,傳輸錯誤可能導(dǎo)致后續(xù)傳輸塊錯誤。
Encryption:

Decryption:
