Encryption
在 AES CTR 模式下,每個塊的 IV 或初始計數器如何在內部增加?
我正在研究英特爾 AES-NI 庫,因為 AES 函式是使用低級彙編指令編碼的。我看不到在 CTR 模式下 IV 或初始計數器如何增加。一般來說,對於每個 128 位塊(假設我們使用 AES_CTR_128),IV 或初始計數器如何自行增加?它會增加一個值還是其他值?
整個區塊由一個 $ n $ 比特隨機數和一個 $ 128-n $ 位計數器。通常 $ n=64 $ . nonce 需要足夠大,以便 key 下的每條消息都可以有一個唯一的,並且計數器需要足夠大,以便每個消息塊都可以有唯一的計數器值。
通常,計數器初始化為 0,然後為每個塊增加 1。但是,這不是強制性的,我認為除了它是最簡單、最清晰的方法之外,沒有任何理由做出這種選擇。只要選擇不會導致計數器重複所需的消息長度,任何初始化值和遞增函式都是有效的。(即使是 FIPS 驗證過程也允許實現 CTR 模式的送出選擇其實現使用的初始值和遞增函式。)