密文竊取
密文竊取(CTS)是密碼學中使用分組密碼操作模式的通用方法,該操作模式允許處理不能均勻分割成塊的消息,而不會延長密文,代價是略為複雜。
一般特性
編輯密文竊取是一種使用塊密碼對明文進行加密的技術,但不將信息填充為塊大小的倍數,因此密文與明文大小相同。
它通過改變信息最後兩個區塊的處理過程來實現這一目的。除最後兩個區塊外,其他所有區塊的處理都保持不變,但倒數第二個區塊的部分密文會被 "竊取",以填充最後一個明文區塊。然後照常加密經過填充的最後一個區塊。
最後兩個區塊的最終密文由部分倒數第二個區塊(省略 "竊取 "部分)和完整的最後一個區塊組成,大小與原始明文相同。
解密時需要先解密最後一個區塊,然後將竊取的密文還原到倒數第二個區塊,然後再像往常一樣解密。
原則上,可以使用任何面向區塊的區塊密碼操作模式,但類似流密碼的模式已經可以應用於任意長度的信息,而無需填充,因此它們無法從這項技術中受益。與密文竊取相結合的常見操作模式是電子密碼本(ECB)和密碼塊鏈(CBC)。
ECB 模式的密文竊取要求明文長度超過一個區塊。一種可行的變通方法是,當明文長度為一個或更少時,使用類似流密碼的塊密碼操作模式,如 CTR、CFB 或 OFB 模式。
CBC 模式的密文竊取並不一定要求明文長度超過一個區塊。在明文長度為一個區塊或更短的情況下,初始化向量(IV)可以充當密碼文本的前一個區塊。在這種情況下,必須向接收方發送修改後的 IV。如果發送方在發送密文時不能自由選擇 IV(例如,IV 是一個派生或預先確定的值),則可能無法做到這一點,在這種情況下,CBC 模式的密文竊取只能發生在明文長度超過一個區塊的情況下。
要對未知長度的數據進行 CTS 加密或解密,必須延遲處理(和緩衝)最近的兩個數據塊,以便在數據流結束時對其進行適當處理。
密文格式
編輯有幾種不同的方式來排列密文以便傳輸。不同排列方式的密文位元數都相同,只是傳輸順序不同,因此選擇不影響安全性,純粹是為了方便實現。
這裏的編號取自Dworkin所描述的。第三種最流行,由Daemen和Schneier描述;Meyer描述了相關但不兼容的方案(關於位排序和密鑰使用)。
CS1
編輯安排密文傳輸最顯而易見的方式,不外乎是縮短倒數第二塊,後面接着完整的最後一塊。但這對接收者來說不方便,原因有二:
- 在任何情況下,接收方都必須首先解密最後一塊,並且
- 這導致最後一塊沒有按照自然邊界對齊,並將硬件複雜化。
這樣做的好處是,如果最後的明文塊恰好是塊大小的倍數,密文就與原始操作模式相同,避免了密文竊取。
CS2
編輯通常,更方便的方式是交換最後兩塊密文塊,因此密文結尾先是完整的最後一塊,然後是截斷的倒數第二塊。密文塊就會自然對齊。
為了保持與非竊取模式的兼容性,CS2隻在竊取密文的數量非零時交換,即原始消息不是塊大小的倍數。
這保持了自然的對齊,以及與非竊取模式的兼容性,但是需要以不同的方式處理對齊和不對齊消息大小的情況。
CS3
編輯最流行的替代方案是無條件交換最後兩塊密文塊。下面描述了使用該方案的順序。
竊取密文模式描述CS3
編輯為了加密或解密數據,對除最後兩個數據塊外的所有數據塊使用標準分組密碼操作模式。
下面的步驟描述了如何處理明文的最後兩個塊,即Pn-1和Pn,其中Pn-1的長度等於以位表示的密碼的塊大小B;最後一個塊的長度Pn是百萬位元(Mbit);k是正在使用的密鑰。M可以範圍從1到B,所以Pn可能是一個完整的塊。CBC模式描述還使用了就在有關塊Cn-2之前的密文塊,如果明文適合在兩個塊內,則該密文塊實際上可能是IV。
對於這描述,使用以下函數和操作符:
- Head(data,a):返回「data」字串第一位。
- Tail(data,a):返回「data」字串最後一位。
- Encrypt(k,data):在「data」字串用加密模式的底層塊密碼,用密鑰k。
- Decrypt(k,data):在「data」字串的解密模式用基礎塊密碼,用密鑰k。
- XOR或運算。等價於不用進位的按位加法。
- | |:與運算符。合併運算符兩邊的字串。
- 0^a:一串0位元的字串。
ECB密文竊取
編輯ECB模式的密文竊取在前兩塊內引入了塊間依賴關係,改變後兩塊的錯誤傳播行為。
Ecb加密步驟(見圖)
編輯參考文獻
編輯- Schneier, Bruce. Applied Cryptography 2nd. John Wiley & Sons, Inc. 1995: 191, 195. ISBN 0-471-12845-7.
- Meyer, Carl H.; Matyas, Stephen M. Cryptography: A New Dimension in Computer Data Security. John Wiley & Sons, Inc. 1982: 77–85. ISBN 0-471-04892-5.
- R. Baldwin; r. Rivest (1996年10月)。 R. Baldwin; R. Rivest. The RC5, RC5-CBC, RC5-CBC-Pad, and RC5-CTS Algorithms. October 1996. RFC 2040.
- Dworkin, Morris, Recommendation for Block Cipher Modes of Operation: Three Variants of Ciphertext Stealing for CBC Mode (PDF), US National Institute of Standards and Technology (NIST), October 2011 [2018-12-02], Addendum to NIST Special Pub 800-38A, (原始內容存檔 (PDF)於2021-02-25)