Symmetric

密鑰派生設計,避免密鑰洩露

  • October 6, 2015

我有第一個從 AES 解密(128 位密鑰)生成密鑰的函式。它seed作為輸入:

derived_key_1 = AES-DEC(key, seed)

seed並且key都是攻擊者無法更改的固定值。攻擊者知道 的價值seed。他的第一個目標是得到derived_key_1

他確實有額外的能力。他可以訪問另一個定義如下的函式:

temp_key = AES-DEC(key, chosen_seed)
derived_key_2 = AES-DEC(temp_key, seed)

其中chosen_seed由攻擊者控制。他可以觀察到derived_key_2。

假設 AES 是在硬體中實現的,並且 AES 原語本身沒有定時側通道。此外,攻擊者沒有其他物理側通道(例如,電源、EM、故障等)來觀察這兩個功能的時序。

在這個建築中是否有任何潛在的安全問題?

如果有問題,如果我seed將第二個功能更改seed_new為攻擊者仍然可見但他無法更改的功能,問題是否會消失。

我終於找到了你的要求:

針對AES的特定(有效?)相關密鑰攻擊!

對於這個答案,我稍微改變了符號:

  • AES-DEC(K,P)被轉換為 $ D_K(P) $
  • derived_key_X被轉換為 $ DK_X $
  • seed(已知)被轉換為 $ S_K $
  • chosen_seed被轉換為 $ S_C $
  • temp_key被轉換為 $ K_T $

現在答案:

AES 本身在很大程度上不受相關密鑰攻擊的影響(有一些攻擊,但我認為它們至少需要四個相關密鑰,我懷疑關係會那麼複雜)。

所以為了讓攻擊者發現 $ DK_1=D_K(S_K) $ 他需要知道 $ K $ . 沒有其他方法可以做到這一點。

現在你問是否知道 $ DK_2=D_{D_K(S_C)}(S_K) $ 確實有幫助。讓我們解構它。攻擊者可以選擇 $ S_C $ 被解密為 $ K_T=D_K(S_C) $ , 為了學習 $ K_T $ 他需要獲得對 AES 不可行的 K。現在攻擊者沒有機會知道 $ K_T $ 還有一個問題,如果 $ DK_2=D_{K_T}(S_K) $ 無論如何都對他有幫助。他無法推斷 $ K_T $ 從這個等式,因為這將是已知明文攻擊,這在 AES 上是不可行的。最後一個問題是是否有一些奇怪的關係可以幫助攻擊者發現 $ K $ 因此 $ DK_1 $ .

不,他將(也許)能夠通過嘗試一切可能的蠻力 $ S_C $ 直到 $ K_T=D_K(S_C)=K $ 這是極不可能的,因為他無法控制 $ K_T $ .

我希望這回答了你的問題。

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