簡(jiǎn)介
密碼學(xué)中,分組(block)密碼的工作模式(mode of operation)允許使用同一個(gè)分組密碼密鑰對(duì)多于一塊的數(shù)據(jù)進(jìn)行加密,并保證其安全性。
分組密碼自身只能加密長(zhǎng)度等于密碼分組長(zhǎng)度的單塊數(shù)據(jù),若要加密變長(zhǎng)數(shù)據(jù),則數(shù)據(jù)必須先被劃分為一些單獨(dú)的密碼塊。通常而言,最后一塊數(shù)據(jù)也需要使用合適填充方式將數(shù)據(jù)擴(kuò)展到匹配密碼塊大小的長(zhǎng)度。
工作模式總論
-
ECB模式(Electronic codebook)電子密碼本模式
- 優(yōu)點(diǎn)
- 由于每塊數(shù)據(jù)的加密是獨(dú)立的因此加密和解密都可以并行計(jì)算
- 缺點(diǎn)
- 同樣的平文塊會(huì)被加密成相同的密文塊;因此,它不能很好的隱藏?cái)?shù)據(jù)模式
- 不是很適合對(duì)流數(shù)據(jù)進(jìn)行加密
- 消息必須被填充到塊大小的整數(shù)倍
- 優(yōu)點(diǎn)
-
CBC模式(Cipher-block chaining)密碼塊鏈接
- 優(yōu)點(diǎn)
- CBC模式相比ECB有更高的保密性
- 解密可以并行進(jìn)行
- 缺點(diǎn)
- 對(duì)每個(gè)數(shù)據(jù)塊的加密依賴與前一個(gè)數(shù)據(jù)塊的加密所以加密無(wú)法并行
- 不是很適合對(duì)流數(shù)據(jù)進(jìn)行加密
- 消息必須被填充到塊大小的整數(shù)倍
- 優(yōu)點(diǎn)
-
CFB模式(Cipher feedback)密文反饋模式
- 優(yōu)點(diǎn)
- 非常適合對(duì)流數(shù)據(jù)進(jìn)行加密,消息無(wú)需填充
- 解密可以并行計(jì)算
- 將塊密碼變?yōu)樽酝降牧髅艽a
- 缺點(diǎn)
- 加密過(guò)程不能并行化
- 優(yōu)點(diǎn)
-
OFB模式(Output feedback)輸出反饋模式
- 優(yōu)點(diǎn)
- 只需要使用塊密碼進(jìn)行加密操作,且消息無(wú)需進(jìn)行填充
- 將塊密碼變成同步的流密碼,不用一直使用一個(gè)密鑰換
- 加密解密可以進(jìn)行一定程度的并行(需要先初始化密鑰)
- 缺點(diǎn)
- 加密過(guò)程不能完全并行化
- 解密也可以完全并行計(jì)算
- 優(yōu)點(diǎn)
-
CTR模式(Counter mode)整數(shù)計(jì)數(shù)模式
- 優(yōu)點(diǎn)
- 加解密都可以并行化
- 缺點(diǎn)
- 沒(méi)有真正見(jiàn)到使用,估計(jì)counter的實(shí)現(xiàn)要求一致性
- 優(yōu)點(diǎn)
具體介紹
概念
- 向量IV:在分組加密模式中有些時(shí)候需要初始化向量,來(lái)增加擾動(dòng):在區(qū)塊加密中,初始化向量的長(zhǎng)度通常就等于一個(gè)區(qū)塊的大小
- 密文的長(zhǎng)多和加密前明文的長(zhǎng)度(加上補(bǔ)位的長(zhǎng)度)是相等的,是指密文16進(jìn)制話前哈
- 補(bǔ)位方式有多種
?ECB模式
加密
需要加密的消息按照塊密碼的塊大小被分為數(shù)個(gè)塊,并對(duì)每個(gè)塊進(jìn)行獨(dú)立加密。
每個(gè)塊的大小取決于密鑰的大小,這樣的話就會(huì)產(chǎn)生補(bǔ)位的需求。
解密:可以并行執(zhí)行
?CBC模式
1976年,IBM發(fā)明了密碼分組鏈接(CBC,Cipher-block chaining)模式[14]。在CBC模式中,每個(gè)平文塊先與前一個(gè)密文塊進(jìn)行異或后,再進(jìn)行加密。在這種方法中,每個(gè)密文塊都依賴于它前面的所有平文塊。同時(shí),為了保證每條消息的唯一性,在第一個(gè)塊中需要使用初始化向量。
加密
加密過(guò)程是串行的,無(wú)法被并行化,而且消息必須被填充到塊大小的整數(shù)倍
在加密時(shí),平文中的微小改變會(huì)導(dǎo)致其后的全部密文塊發(fā)生改變
解密:只是相鄰的兩個(gè)塊有依賴,所以可以并行解密
?CFB模式
密文反饋(CFB,Cipher feedback)模式類似于CBC,可以將塊密碼變?yōu)樽酝降牧髅艽a;工作過(guò)程亦非常相似,CFB的解密過(guò)程幾乎就是顛倒的CBC的加密過(guò)程
加密:加密過(guò)程是串行化的。
FB擁有一些CBC所不具備的特性,這些特性與OFB和CTR的流模式相似:只需要使用塊密碼進(jìn)行加密操作,且消息無(wú)需進(jìn)行填充
解密:解密的過(guò)程:也是相鄰的加密快有依賴,所以可以并行計(jì)算
?OFB模式
輸出反饋模式(Output feedback, OFB)可以將塊密碼變成同步的流密碼。它產(chǎn)生密鑰流的塊,然后將其與平文塊進(jìn)行異或,得到密文。與其它流密碼一樣,密文中一個(gè)位的翻轉(zhuǎn)會(huì)使平文中同樣位置的位也產(chǎn)生翻轉(zhuǎn)。這種特性使得許多錯(cuò)誤校正碼,例如奇偶校驗(yàn)位,即使在加密前計(jì)算而在加密后進(jìn)行校驗(yàn)也可以得出正確結(jié)果。
加密:密鑰只是和key和iv有關(guān)系,無(wú)法直接進(jìn)行并行化處理,但是可以先對(duì)IV處理,然后將平文進(jìn)行并行化異或處理
解密:也是有限狀態(tài)的并行,同加密
?CTR模式
CTR模式(Counter mode,CM)也被稱為ICM模式(Integer Counter Mode,整數(shù)計(jì)數(shù)模式)和SIC模式(Segmented Integer Counter)。與OFB相似,CTR將塊密碼變?yōu)榱髅艽a。它通過(guò)遞增一個(gè)加密計(jì)數(shù)器以產(chǎn)生連續(xù)的密鑰流,其中,計(jì)數(shù)器可以是任意保證長(zhǎng)時(shí)間不產(chǎn)生重復(fù)輸出的函數(shù),但使用一個(gè)普通的計(jì)數(shù)器是最簡(jiǎn)單和最常見(jiàn)的做法
加密
解密
感覺(jué)這個(gè)模式需要定義加密計(jì)數(shù)器的規(guī)則,相對(duì)來(lái)說(shuō)比較麻煩,實(shí)例中見(jiàn)的比較少。