1、對稱加密存在的問題
(1)當需要加密的明文長度超過分組長度是,如何加密
(2)用對稱加密進行通信時,還會出現密鑰的配送問題,即如何將密鑰安全地發送給接收者
2、五組分組模式
(1)爲什麼分組
被加密的數據可能很大,需要對數據進行迭代的加密,所以用對數據進行分組。
(2)明文分組與密文分組
密文分組的長度與明文分組一致
(3)具體分組方式
1)ECB:Electronic Coding Book,電子密碼本模式(已經不使用了)
2)CBC:Cypher Block Chaining,密文分組鏈接模式(常用的)
3)CFB:Cypher FeedBack,密文反饋模式(不建議使用,建議使用CTR)
4)OFB:Output FeedBack,輸出反饋模式(不建議使用,建議使用CTR)
5)CTR:Count ,計數器模式(常用的)
(4)ECB模式
ECB模式是最簡單的加密模式,明文消息被分成固定大小的快(分組),餅並且每個塊被單獨加密。每個塊的加密和解密都是獨立的,且使用相同的方法進行加密,所以可以進行並行計算,但是這種方法一旦有個塊被破解,使用相同的方法可以解密所以的明文數據。
特點:
1)效率高
2)安全性比較差
3)適用於數據較少的情形,加密前需要把明文數據填充到塊大小的整數倍
4)分組大小需要根據加密算法確定。
(5)CBC模式(先異或,再加密)
基礎補充
異或操作(XOR):規則爲相同爲0,不同爲1
異或加密(加解密的算法相同)
利用對一組數據進行兩次異或操作,回到最初的狀態。
CBC模式
CBC模式中每一個分組要先和前一個分組加密後的數據進行異或操作,然後再進行加密。這樣每個密文塊依賴該塊之前的所有明文塊,爲了保持每條消息都具有唯一性,第一個數據塊進行加密之前需要用初始向量進行異或操作。CBC模式是一種最常用的加密模式,它主要的確定是加密是連續的,不能進行並行處理,並且與ECB一樣消息塊必須填充到塊大小的整數倍。
特點
1)數據分組根據算法而定;
2)需要提供初始化向量,要求長度必須與分組長度相同
3)每一個密文都是下一次加密操作的輸入
4)不能進行並行加密,可以進行並行解密
5)加密強度高
6)如果數據切割之後不滿足需求,需要對數據進行填充
ECB與CBC模式的比較
(6)CFB模式(先加密在異或)
CFB模式中,前一個分組的密文加密後和當前分組的明文XOR異或操縱生產當前分組的密文。
所謂反饋,這裏指的就是返回輸入端的意思,及前一個密文分組會被送回到密碼算法的輸入端。
CFB模式的解密和CBC模式的加密在流程上其實是非常相似的
CBC模式與CFB模式比較
注意:明文本身涉及到加密的分組模式都需要對明文進行填充,如果對初始向量進行加密則不需要填充。
特點:
1)分組長度取決於加密算法
2)需要初始化向量,長度必須與明文分組相同
3)先對密文進行加密,然後再與明文分組進行異或
4)由於沒有直接對明文分組進行加密,所以不需要填充
注意:解密的時候,是對初始向量進行加密操作,這樣才能得到相同的數據
(6)OFB模式
在OFB模式中,密碼算法的輸出會反饋到密碼算法的輸入中,即上一個分組密碼算法的輸出是當前分組密碼算法的輸出。
OFB模式並不是通過密碼算法對明文直接進行加密的,而是通過將“分文分組”和“密碼算法輸出”進行異或來產生“密文分組”的。在這點上OFB模式和CFB模式非常相似。
特點
1)分組取決於加密算法
2)不斷對初始向量的輸出進行加密,而得到數據來源
3)不需要進行數據填充
(7)CTR模式
CTR模式是一種通過將逐次累加的計數器進行加密來生成密鑰流的流密碼。
CTR模式中,每個分組對應一個逐次累加的計數器,並通過對計數器進行加密來生產密鑰流。也就是說,最終的密文分組是通過將計數器加密的得到的比特序列,與明文分組進行XOR而得到的。
計數器的生成方法
每次加密是都會產生一個不同的值來作爲計數器的初始值。當分組長度爲128比特(16字節)時,計數器的初始值可能是想下面這樣的形式。
其中前8個字節爲隨機數,這個值在每次加密是必須都是不同的,後8個字節爲分組序列號,這個部分是會逐次累加的。在加密的過程中,計數器的值會產生如下變化。
按照上述生成方法,可以保證計數器的值每次都不同。由於計數器的值每次都不同,因此每個分組中獎計數器進行加密所得到的密鑰流也是不同的。也是說,這種方法就是用分組密碼來模擬生成隨機的比特序列。
OFB模式與CTR模式對比
OFB模式是將加密的輸出反饋到輸入,而CTR模式則是將計數器的值用作輸入。
CTR模式的特點
CTR模式的加密和解密使用了完全相同的結構,因此在程序實現上比較容易。這一特點和同爲流密碼的OFB模式是一樣的。
此外,CTR模式中可以以任意序列對分組進行加密和解密,因此在加密和解密時需要用到的“計算器”的值可以有隨機數和分組序列號直接計算出來。這一性質是OFB模式所不具備的。
能夠以任意順序處理分組,就意味着能夠實現並行計算。在支持並行計算的系統中,CTR模式的速度是非常快的。
1)分組長度取決於加密算法
2)不需要填充
3)可以並行加密和並行解密,推薦使用