Hmac

擴展 AES-GCM 初始化向量

  • September 1, 2020

我們都知道,加密原語的應用程序喜歡不考慮隨機數和初始化向量的管理,並且通常更喜歡將它們設置為隨機值。當 IV 太短時,這有時會導致問題。

例如,在AES-GCM中,IV 的可變部分只有 64 位。如果對於每條消息我們隨機選擇 IV,我們將在一個 $ 2^{32} $ 消息;根據協議,這非常不安全。


現在推出我們自己的加密貨幣的一種hacky方法如下:

具有擴展 IV 的 AES-GCM

首先,我們將停止使用 AES-GCM 構造的正常 IV 部分。相反,對於每條消息,我們將像這樣破壞密鑰:

$$ K’ = \text{KDF}(K || \text{nonce}) $$

在哪裡 $ K $ 是原始密鑰, $ K’ $ 是新密鑰,並且 $ \text{nonce} $ 是一個很長的隨機數(比如 256 位)並且為每次加密隨機生成; $ \text{KDF} $ 假定是一個正確的域分隔 PRF,它返回一個新的 256 位值。

現在我們使用 AES256-GCM 和新密鑰加密我們的消息。如前所述,我們將 IV 設置為某種恆定值。我們傳送 $ \text{nonce} $ 連同密文。


我希望如此,因為碰撞是可能的 $ K’ $ , 這個結構只有 $ \text{len}(K’) = 128 $ 一點安全感。但是,我發現很難推斷它的安全性。主要問題:

該方案是否可以用作 AES128-GCM 的替代方案,但具有隨機隨機數(類似於 XSalsa20Poly1305)

我的意思是假設!我實際上不會像那樣建造這樣的建築。我認為這沒有任何意義。


編輯: 正如 Poncho 顯示的那樣,這個方案顯然不能防止隨機誤用。我的問題措辭很糟糕。我更新了它。

好吧,假設一切都是正確的域分離,隨機數總是隨機生成用於加密查詢,並且你的 KDF 表現得像一個完全隨機的函式,第一步是限制隨機數重複的機率。生日界限告訴我們,這種情況最多發生 $$ q^2/2^{256},, $$ 在哪裡 $ q $ 是加密/解密查詢的數量。所以讓我們排除這種情況,並轉向這種情況永遠不會發生的情況。

接下來是鍵衝突事件。同樣,一個簡單的生日界限給了我們最多的機率 $$ q^2/2^{256} $$ 有重複的派生密鑰。

現在我們這裡實際上是一個多使用者 GCM 實例,其中始終使用相同的 nonce。也就是說,您最多可以 $ q $ GCM 的獨立實例,並且要破壞該方案,只需破壞這些實例中的任何一個即可。(嚴格來說,多使用者設置讓您可以更自由地選擇每個使用者可以使用多少個查詢,而在這裡您限制為每個使用者 1 個(加密)查詢。)

Hoang、Tessaro 和 Thiruvengadam在理想密碼模型中 方便地分析了 GCM 的多使用者安全性,這在定理 3.1 中告訴我們$$ \begin{align*} \mathbf{Adv}_{\mathtt{CAU}[H,E]}^{\text{mu-ae}} \le &\frac{d(p+q) + n(q + \sigma + p)}{2^k} + \frac{\sigma(2B + cn + 3)}{2^n} \& + \frac{2q+1}{2^{2n}} + \frac{\sigma(\sigma + ncd) + 2pq}{2^{k+n}},. \end{align*} $$ 這裡我們可以設置 $ n = 128 $ , $ k = 256 $ , $ d = q $ ( $ d $ 是跨使用者的隨機數重複次數;由於隨機數是固定的,這等於查詢的數量), $ c $ 是微分機率的界 $ H $ (對於 GHASH,可以設置為 $ B/2^n $ ), $ B $ 是以塊為單位的最大消息大小, $ \sigma $ 是跨查詢的總塊數(可以由 $ qB $ ), 和 $ p \le 2^{n-2} $ 是離線 AES 評估的數量(即密鑰的暴力破解)。

所以,粗略地說,只要你的消息足夠短(以保持 $ O\left(\frac{qB^2}{2^{128}}\right) $ term down),查詢總數仍遠低於 $ 2^{128} $ (保留條款 $ 2q^2/2^{256} $ 和 $ O\left(\frac{q^2 + pq}{2^{256}}\right) $ 下),正如你所建議的,這個方案應該保持安全。

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