A.2 密碼分組鏈接(CBC)工作模式的性質
A.2.1 環境
只要使用同樣的密鑰和初始值對相同的明文進行加密,CBC方式將產生相同的密文。關心這種性質的用戶需要采用某種方法來改變明文的開始、密鑰或初始值。一種可能的辦法是將一個唯一的標識符(例如一個遞增計數器)加到每個CBC消息的開始處。在對大小不能增加的記錄進行加密時可采用另一種辦法,它使用諸如初始值的某個值,這個值能從記錄中計算出來且不用知道其內容(例如它的按隨機訪問存儲方式的地址)。
A.2.2 性質
CBC方式的性質有:
a)鏈接操作使得密文分組依賴于當前的和以前的明文分組,因此對密文分組的重新安排不會導致對相應明文分組的重新安排;
A.2.3 填充要求
只有分組長度的倍數才能被加密或解密。其他長度需要被填充至分組長度邊界。如果這是不可接受的,可以按一種特殊方式來處置最后一個變量。下面給出兩個特殊處理的例子。
第一種處理一個不完整的變量(即:一個j<n位的變量Pq,其中q應大于1)的可能辦法是按下面的描述的OFB方式對它進行加密:
a)加密
Cq=Pq⊕(eK(Cq-1)~j) ·································(50)
b)解密
Pq=Cq⊕(eK(Cq-1)~j) ·································(51)
但是,如果IV不是秘密的或者與同一個密鑰一起被多次使用(見A4),那么最后的變量容易受到“選擇明文攻擊”。
第二種辦法稱作“密文竊取”。假設最后兩個明文變量為Pq-1和Pq,Pq-1是一個n位分組,Pq是一個j<n位的變量,q應大于1。
a)加密
設Cq-1為使用5.2所描述的方法由Pq-1導出的密文分組。令
Cq=eK(Sj(Cq-1|Pq)) ·································(52)
因此最后兩個密文變量是Cq-1和Cq
b)解密
首先需要對Cq進行解密,從而產生變量Pq和Cq-1的右邊n-j位:
Sj(Cq-1)|P)=dK(Cq) ·································(33)
進而得到完整的塊Cq-1,并且使用5.3所描述的方法能導出Pq-1。
A.2.4 差錯擴散
在CBC方式中,在一個密文分組中的一個或多個位差錯會影響對兩個塊(即發生差錯的塊和隨后的塊)的解密。第i個密文分組中的一個差錯對于所產生的明文有以下影響:第i個明文分組每位出錯的概率為50%。第i+1個明文分組的差錯模式與第i個密文分組相同。如果在一個不到n位的變量中出現差錯,差錯擴散取決于所選擇的特殊處理方法。在第一個例子中,被解密的較短的塊中與明文中出錯的位直接對應的那些位也會出錯。
A.2.5 塊邊界
如果解密或解密之間的塊邊界丟失了(例如由于一個位的滑動),則在重新建立正確的塊邊界之前,加密與解密之間將失去同步。如果塊邊界丟失,所有解密操作的結果都是不正確的。
推薦文章: