我們如何在 CTR 模式下計算 IV+1?
這可能是一個非常簡單的問題,但我在任何地方都沒有找到有關此的資訊。我的問題是關於 CTR 模式:當它說 $ IV+1 $ … 我們如何進行此操作?
例如,如果我有 IV 值
69dda8455c7dd4254bf353b773304eec
(十六進制編碼),結果會是什麼 $ IV+1 $ ?我認為我們必須考慮 $ IV $ 作為一個十六進制數並添加 $ 1 $ 十六進制數(通常,添加 $ L $ 十六進制數),但我不確定。我希望有人可以幫助我理解這一點。
這方面的參考資料是NIST SP800-38A,尤其是其附錄 B。
基本上,我們將 IV 視為分組密碼寬度的二進制值(DES 為 64 位,AES 為 128 位),並在其上加 1,除了一個細節:在某些應用程序指定的等級上沒有進位,定義可以用單個 IV 加密的最大塊數;如果超過了這個限制,我們就有麻煩了(就像我們重複使用了 One Time Pad)。
AES 的一種可能設置是以 128 位字大小的一半畫線,“限制”為 $ 2^{64} $ 128 位塊。那是 $ 2^{68} $ 字節,或 256 Exbibyte,或 295 Exabyte,或略高於 4900 萬個 6 - TB硬碟(撰寫本文時市售的最大硬碟);搬運這些集裝箱需要大約 1400 個雙尺寸(40’)集裝箱,每個集裝箱重 28 噸。
其他 64 個最高有效位可用作會話編號。如果我們隨機抽取這樣的會話編號,每秒一個,持續十年,兩個會話編號相等的機率是 1/370(我們有一個小問題)。
增加完整的 128 位並從隨機的 128 位值開始也很好。
在任何實際情況下:之後的 IV $ \texttt{69dda8455c7dd4254bf353b773304eec} $ 將會 $ \texttt{69dda8455c7dd4254bf353b773304eed} $ -如果一切都使用大端約定來表達!
更新:也可以定義非標準方法來增加 IV。具有低硬體成本的方法是從初始非平穩狀態循環最大長度的 LFSR,這可以在單個時鐘延遲內使用 1 個或 3 個 XOR 門(取決於度數是否允許三項式)來實現,而不是一些寬加法器,可能帶有一些高時鐘率的超前進位。