AES GCM 模式 - 該方案的輸出是什麼?
我試圖理解該方案:
https://xilinx.github.io/Vitis_Libraries/security/2019.2/guide_L1/internals/gcm.html
在第 11 頁上,看起來 GHASH 只給出了一個值“返回 $ Y_m $ “:
https://web.cs.ucdavis.edu/~rogaway/ocb/gcm.pdf
在散列幾個後續塊之後。這對我來說毫無意義。如果我理解得很好,每個 GF128_mult(H) 都是我們輸出的一個塊,對吧?因此,流由後續塊 GF128_mult(H) 組成。我是對的還是它以不同的方式工作?從上面的方案看起來我們的結果(為流生成的所有位)只是“標籤”,這似乎不是真的。
或者也許這是它的工作原理?我們將所有輸入塊轉換為一個 128 位標籤?並將其作為加密消息發送?那麼要發送每一個數據量,我們只需要 128 位塊?我不認為它是這樣工作的,那麼就不可能解密它。
密文塊 $ k $ 通過輸出塊的逐塊異或獲得 $ k $ 帶有明文塊 $ k $
$$ happens in the middle layer of the diagram $$為了 $ k=1,2,\ldots,\textrm{len}. $ 密文使用 GF128_mult 機制連結在一起,以在最後生成單個身份驗證標籤,該標籤也被傳輸。
https://en.wikipedia.org/wiki/Galois/Counter_Mode:與普通計數器模式一樣,塊按順序編號,然後將此塊編號與初始化向量(IV)組合併使用塊密碼 E 加密,通常AES。然後將此加密的結果與明文進行異或以生成密文。與所有計數器模式一樣,這本質上是一種流密碼,因此必須為每個加密的流使用不同的 IV。
密文塊被認為是多項式的係數,然後使用有限域算法在與密鑰相關的點 H 處對其進行評估。然後對結果進行加密,生成可用於驗證數據完整性的身份驗證標籤。然後加密的文本包含 IV、密文和身份驗證標籤。