Gcm

使用相同的多少錢HHH對於所有消息都會削弱 GCM?

  • May 3, 2016

使用相同的 MAC 密鑰 GCM 削弱了多少 $ H = E_K(0^*) $ 對於所有使用相同密鑰的消息(這是 GCM 實際所做的),而不是使用 $ E_K(N||0_{32}) $ (每條消息都不同)?

在理想的密碼模型下,任何值的選擇都不會降低安全性 $ H = E_K(d) $ 對於已知值 $ d $ ,只要沒有一個被加密以生成加密流的計數器值等於 $ d $ . 這就是“理想密碼”的意思:你沒有關於 $ E_K(x) $ 對於任何 $ x $ 您還沒有嘗試使用相同的密鑰進行加密,這適用於所有此類 $ x $ ; 沒有一個比其他任何一個更好或更差。使用 $ d = N||0_{32} $ 代替 $ d = 0_{128} $ 因此不會使 GCM 變得更弱。據我們所知,它也不會讓它變得更強大,因為讓它“更強大”需要我們知道 GCM 中的一些弱點,正如它現在所定義的那樣;我們不知道有這樣的弱點。

現在,使用 $ H = E_K(0_{128}) $ 有一些實施的好處。也就是說,假設您想要 GCM 的恆定時間實現,因此沒有任何地址取決於數據或密鑰的記憶體訪問(這是為了避免通過記憶體未命中的邊通道攻擊)。在現代 PC 上,您會想要使用專門的操作碼,但在稍微不那麼現代的 x86 CPU 或非 x86 架構(例如 ARM)上,您不一定可以使用這些設施。乘法的經典實現 $ GF(2^{128}) $ 要麼非常慢,要麼使用依賴於數據的表查找,這不是恆定時間的。常數時間乘法 $ H $ 可以在內容依賴於的表的幫助下相對有效地實現(大約​​ 14 cpb ) $ H $ ——但這是在沒有生成這些表的成本的情況下計算的。如果 $ H $ 僅取決於鍵,而不是 IV,則可以將表作為鍵調度的一部分生成,如果使用相同的鍵處理許多消息,則成本要低得多。

因此,具有 IV 依賴 $ H $ 不知道會增加(或減少)安全性,但在某些情況下可能意味著更大的 CPU 成本。這是一個很好的理由有一個固定的 $ H $ ,這取決於密鑰而不是 IV。


常數時間乘法 $ GF(2^{128}) $ 也可以通過其他方式完成,但這是另一回事。一種是使用加法傅里葉變換,它在廣義位切片中產生顯著的性能,但僅在可以並行處理許多塊並且具有較大固定成本的情況下。另一種方法是對操作數使用整數乘法,清除大多數位以為進位騰出空間;如果手頭的架構提供恆定時間有效的乘法,這可能是值得的。這種架構的一個例子是非常低功耗的 ARM Cortex M0+,其中加法和乘法具有相同的成本(每個 1 個週期)。

即便如此,有 IV 依賴 $ H $ 仍然意味著每條消息都有一些額外的工作,因為無法共享該處理。

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