Modes-of-Operation
為什麼 CTR 模式不需要屏蔽?
我一直在閱讀有關分組密碼模式的一些資訊,並且我有一個關於 CTR 的相對簡單的問題。從本質上講,我希望你們能很好地驗證我對事物的理解。
據我了解,點擊率執行以下操作:
- 獲取隨機數的第一個輸出(讓我們假設一個遞增的 int 用於我們的目的)
- 用密鑰加密隨機數。CTR 要求 key 和 nonce 的大小相同。
- 在加密的 nonce 和一部分明文之間執行一些無損操作(例如:XOR)
- 增加隨機數
- 隨意重複
這是我不明白的。CTR 應該將塊密碼轉換為流密碼,但您是否仍然需要為步驟 3 逐塊操作?
我錯過了什麼?
雖然您在生成偽隨機流時逐塊操作,但實際的加密步驟(即 XOR)是按位的,因此不需要填充消息。
例如,消息“Hello”將被處理如下(虛擬碼):
byte stream[16] = AES(Key, Nonce); byte plaintext[5] = "Hello"; byte ciphertext[5]; for i from 0 to 5: ciphertext[i] = plaintext[i] XOR stream[i];
超出消息長度的偽隨機流的剩餘字節被簡單地丟棄。