分組密碼工做模式的應用背景:屢次使用相同的密鑰對多個分組加密,會引起許多安全問題。爲了應對不一樣場合,於是須要開發出不一樣的工做模式來加強密碼算法的安全性。算法
一、ECB(Electronic Code Book)安全
特別適合數據較少的狀況,對於很長的信息或者具備特定結構的信息,其大量重複的信息或固定的字符開頭將給密碼分析者提供大量的已知明密文對。若明文不是完整的分組,ECB須要進行填充。函數
二、CBC(Cipher Block Chaining)加密
因爲加密算法的每次輸入和本明文組沒有固定的關係,所以就算有重複的明文組,加密後也看不出來了。爲了配合算法的須要,有一個初始向量(IV)。與ECB同樣有填充機制以保證完整的分組。spa
3、CFB(Cipher Feedback)3d
和OFB,CTR模式同樣,都可將分組密碼當作流密碼(實際是將分組大小任意縮減)使用。blog
在CFB模式中,將明文拆解成s位(通常是8位,即1字節)長的分組,明文一方面參與到對稱加密的過程中以增長複雜度,另外一方面運用A⊕B⊕B = A 這一異或運算的特色,徹底過濾掉對稱加密部分進行解密。實際上,該模式解密的原理與對稱加密算法徹底無關,於是其解密也就用不上對稱加密算法對應的解密算法。ip
以MSBs(X)表示X的最左邊s位,可將其加密和解密描述成如下式子開發
C1 = P1⊕MSBs[E(K,IV)]效率
P1 = C1⊕MSBs[E(K,IV)] = P1⊕MSBs[E(K,IV)]⊕MSBs[E(K,IV)] = P1
實際上,該模式犧牲了運算能力來換取流密碼的形式,其構造與流密碼的典型構造並不一致。
四、OFB(Output Feedback)
OFB的結構與CFB很類似,它用加密函數的輸出填充移位寄存器,而CFB是用密文單元來填充移位寄存器。其餘的不一樣是,OFB模式是對整個明文和密文分組進行運算,而不是僅對s位的子集運算,於是不至於浪費運算能力。
若明文的最後一個分組長度小於分組整長,無需填充,相似CFB作移位和丟棄操做便可。
OFB也有一個初始化向量,可是其對每一次加密運算都是惟一的,緣由是下圖虛線中的中間值Oi只依賴於K和初始向量,若初始向量不變極易被攻擊。於是須要約定或傳輸好這個初始化向量。
實際上OFB只有密鑰和初始化向量參與了對稱加密,其加密和解密描述成如下式子
Ci = Pi⊕E(K,Oi)
Pi = Ci⊕E(K,Oi)
OFB的一個優勢是因爲明文分組不參與對稱加密過程,於是密文分組上的某些錯誤不會影響到其餘密文分組的解密。
可是其缺點也正是這一特色帶來的,若攻擊者改變密文的一部分可能並不會被察覺,於是其消息完整性難以驗證。
OFB具備典型的流密碼的結構,對稱加密方法至關因而根據密鑰生成流密碼的方法。
四、CTR(Counter)
計數器使用與明文分組規模相同的長度,計數器首先被初始化位某一數值,而後隨着消息塊的增長計數器加1。加密時,計數器加密後與明文分組異或獲得密文分組,沒有連接。解密時必須知道初始計數器的值。
若明文的最後一個分組長度小於分組整長,無需填充,相似CFB作移位和丟棄操做便可。
CRT模式的優勢:
一、硬件效率高,同三種連接模式相比,CTR可以並行加密和解密。
二、軟件效率高,能夠充分利用其並行特性進行並行計算
三、因爲加密解密過程不依賴明文和密文,所以能夠作預處理以提升效率
四、能夠隨機訪問某一明文或者密文分組進行部分加密和解密
六、用於面向分組的存儲設備的XTS-AES模式
這是一種新的工做模式,描述了一種對基於扇區的設備上的數據進行加密的方法。
加密存儲的數據(也叫靜止數據)與加密傳輸數據的要求有些不一樣。
單分組的加密和解密能夠描述成
可逆證實:
C = CC⊕T = E(K1,PP)⊕T = E(K1,P⊕T)⊕T
P = PP⊕T = D(K1,CC)⊕T = D(K1,C⊕T)⊕T
= D(K1,E(K1,P⊕T))⊕T = P⊕T⊕T = P
正是因爲引入了微調參數等使得不一樣存儲位置的相同明文加密成不一樣密文。
最後那個不滿的分組處理
若最後一個分組不足長,則要對最後兩個分組使用密文竊取技術,而不是填充技術來加密和解密。
與CTR模式相同的是,XTS-AES模式適合並行執行,不一樣的是,XTS-AES模式包含一個時變值(參數i)以及一個計數器(參數j)。