Initialization-Vector

產生Ĵ0Ĵ0J_0對於 GCM 密碼,當連(我在)≠96連⁡(我在)≠96operatorname{len}(IV) neq 96位

  • May 21, 2018

關於不等於96位時J0的構造,我有以下疑問, $ s= 128\big\lceil \operatorname{len}(\text{IV})/128\big\rceil-\operatorname{len}(\text{IV}) $

例如,如果我的 IV 等於 1,用 Len 計算將是 8 位結果,如果我們減去, $ \operatorname{len}(IV) / 128 $ 計算結果是1減去 8 是 7,實數 1 或者它被視為 8 位字節,它會是,其餘的會是 0?

而外面的128是什麼函式,相乘?並閱讀步驟,但閱讀文件的解釋和閱讀公式讓我感到困惑。

如果 $ \operatorname{len}(\text{IV}) ≠ 96 $ ,然後讓 $ s= 128\big\lceil \operatorname{len}(\text{IV})/128 \big\rceil-\operatorname{len}(\text{IV}) $ , 然後讓 $ J_0=\operatorname{GHASH}(\text{IV}||0s+64||[\operatorname{len}(\text{IV})]64) $ .

是的,最初的 128 是乘法,它在減法之前執行。

好的,所以如果 $ \operatorname{len}(IV) = 1 $ 然後在位

$$ s= 128\big\lceil\operatorname{len}(IV)/128\big\rceil-\operatorname{len}(IV) $$將會$$ s= 128 \cdot 1 - 1 = 128 - 1 = 127 $$ 但是,如果將其編碼為單個字節,則

$$ s= 128 \cdot 1 - 8 = 128 - 8 = 120 $$. 請注意,任何介於 0 和 128 之間的 IV 大小都會讓 $ \big\lceil \operatorname{len}(IV)/128\big\rceil $ 評估為 1,因為除法結果介於 0 不包含和 1 包含之間。

IV 通常以字節數組的形式提供,因為實現通常不對位進行操作,即使規範確實以位為單位指定了算法。所以通常只提供一位是不可能的。這意味著即使它們設置為 0,一個或多個字節的最高有效位(最左邊的位)也包含在計算中。IV 作為位串處理,而不是規範中的數字。因此,讓我們假設一個字節的值00000001以位為單位。


為方案的第二部分計算 $ J_0 $ 我們有

$$ J_0=\operatorname{GHASH}H(IV||0^{s+64}||\big[\operatorname{len}(IV)\big]{64}) $$這意味著 $ \operatorname{GHASH} $ 使用 $ H $ 在一個字節 IV 上連接 $ s + 64 $ 位(184 位或 23 字節)設置為零,然後將 IV 的長度創建為 8 字節的靜態、大端無符號編碼。如果你結合欄位的大小,你會得到一個不錯的 32 字節: $ 1 + 23 + 8 = 32 $ ,它由需要 128 位 / 16 字節塊大小的 GHASH 處理得很好。 結果將是,GHASH over(十六進制,每個字節兩個字元):

01_000000_00000000 00000000_00000000 00000000_00000000 00000000_00000001 

引用自:https://crypto.stackexchange.com/questions/59396