分組密碼和流密碼
分組密碼:每次只能處理特定bit長度的一塊數據的密碼算法,這里的“一塊”就是分組(block)。
?? ?? ?? AES的分組長度必須是128bit,秘鑰長度可以是128bit,192bit,256bit。
流密碼:對數據流進行連續處理的一類密碼算法。流密碼一般以1bit,8bit,32bit等為單位進行加密解密。
模式
ECB(Electronic CodeBook)電子密碼本模式:
解釋:明文分組直接加密成密文分組。
特點:明文和密文分組一一對應,相同的明文轉換的密文也是相同的。攻擊者不用破譯密文通過交換密文順序就能操作明文。
優點:簡單,快速,支持并行計算(加密解密)。
缺點:1、明文的重復排列會影響密文。
???2、通過增刪改的密文分組可以操作明文 。
???3、某一密文分組bit序列錯誤,對應解密后明文出錯。
???4、不能抵御重放攻擊。
不推薦使用!!!
CBC(Cipher Block Chaining)密文分組鏈接模式:
解釋:明文分組與前一個密文分組進行XOR運算,再進行加密。第一個明文分組不存在前一個密文分組,所以對第一個明文分組加密時要產生一個與分組長度相同的隨機數即初始化向量(Initialization Vector)。
特點:1、明文分組在加密之前會與前一個密文分組進行XOR,因此即使兩個明文分組的內容相同,加密后的密文分組不一定相同。
???2、假如某一個密文分組受到破壞(通信過程中bit序列發生錯誤或者磁盤損壞讀取數據時發生錯誤但是長度不變),它只會影響兩個明文分組的數據,即其對應的明文分組和下一個明文分組。
???3、通信過程中或者磁盤損壞讀取數據發生密文bit丟失,此時密文長度受到影響。例如,某一密文分組發生bit丟失,其后面的密文分組數據向前移動導致丟失bit的密文分組及其后面的所有密文分組都無法解密成正確的明文。
優點:1、明文的重復不會反應在密文中。
???2、支持并行運算(解密)。
???3、根據其特點能夠解密任意密文分組。
缺點:1、某一分組密文錯誤會影響其對應的明文及后一個明文解密。
???2、某一分組密文bit缺失會影響其對應明文和之后所有明文解密。
???3、不支持并行運算(加密)。
推薦使用,SSL/TSL協議使用加密模式。
CFB(Cipher FeedBack)密文反饋模式:
解釋:前一個密文分組進行加密后再與下一個明文進行XOR。第一個明文分組不存在前一個密文分組,所以對第一個明文分組加密時要產生一個與分組長度相同的隨機數即初始化向量(Initialization Vector)。
特點:1、明文分組和密文分組沒有通過加密算法直接加密。
???2、只需要知道某一密文分組的前一個密文分組,就能對這個密文分組進行解密。
優點:1、不需要填充。
???2、支持并行計算(解密)。
???3、能解密任意密文分組。
缺點:1、對某一明文分組XOR的數據來至它之前的明文分組層層加密,不支持并行計算(加密)。
???2、尤其解密特點可知,不能抵御重放攻擊。
???3、某一密文分組bit錯誤,影響它的明文解密和后一個分組的明文解密。
???4、某一密文分組bit丟失,影響它的明文解密和后面所有分組的解密。
推薦使用
OFB(Output FeedBack)輸出反饋模式:
解釋:密碼算法的輸出是密碼算法的輸入。第一次使用密碼算法加密時需要一個初始化向量(Initialization Vector)。
特點:1、加密算法的輸入是加密算法的前一個輸出。
???2、和CFB模式相同明文和密文分組只有XOR運算。
???3、明文和密文分組沒有參與到加密運算,只需要根據分組的數量提前生成每個分組對應的秘鑰進行XOR。可以快速完成加密。
優點:1、不需要填充。
???2、可事先準備好加密解密需要的秘鑰。
???3、加密解密結構相同,操作過程相反。
???4、某一密文分組bit錯誤,只影響明文相應的bit。
缺點:1、不支持并行運算。
???2、主動攻擊者反轉某一密文分組的某些bit,明文分組中相應bit也會被反轉。
推薦使用
CTR(CounTeR)計數器模式:
解釋:通過對逐次累加的計數器進行加密,再和明文分組XOR。
計數器:每次加密都會生成一個不同的nonce值作為計數器的初始值,再加上分組序號就構成“計數器的值”。
例如:分組長度為128bit。前8個字節是nonce值,后8個字節是分組序號。
明文分組1的計數器(初始值):66 1F 98 AB A5 BF 8C 4B 00 00 00 00 00 00 00 01
明文分組2的計數器:66 1F 98 AB A5 BF 8C 4B 00 00 00 00 00 00 00 02
。。。
特點:1、加密解密結構相同。程序易實現。
???2、加密解密需要的計數器的值可以由nonce+分組序號直接計算得出,所以支持并行計算,效率高。
優點:1、不需要填充。
???2、可事先準備好加密解密需要的秘鑰。
???3、加密解密結構相同,操作過程相反。
???4、某一密文分組bit錯誤,只影響明文相應的bit。
???5、支持并行計算。
缺點:主動攻擊者反轉某一密文分組的某些bit,明文分組中相應bit也會被反轉。
推薦使用
總結自《圖解密碼技術》