為什麼使用相同的 nonce (IV) 兩次會使純文字甚至密鑰的機密性失效?
我大致了解(沒有GF代數的細節)GCS/GMAC的方案:
IV將被放入Counter-0,因此初始化計數器。
眾所周知,使用 IV 兩次不僅可以顯示純文字,還可以顯示 AES-Key 本身。
我既不了解第一個也不了解第二個:
Q1:為什麼兩次使用同一個IV會失去消息的機密性?這是否意味著可以推斷明文?還是只是其中的一部分?我無法想像這怎麼可能……可以從明文中推斷出哪些資訊以及它如何/為什麼起作用?從原理上我只能看到結果 XOR(p1, p2) 可以推斷,因為上面的數據行是相同的 - 但不是 p1, p2 本身。
Q2:如何/為什麼可以通過多次使用相同的 IV 來顯示 AES-Key 本身?
請注意,我想了解為什麼以及如何進行此類攻擊;我相信這是可能的。
Q1:為什麼兩次使用同一個IV會失去消息的機密性?從原理上我只能看到結果 XOR(p1, p2) 可以推斷,因為上面的數據行是相同的 - 但不是 p1, p2 本身。
實際上,在很多情況下,知識 $ p_1 \oplus p_2 $ 可以用來恢復一個很好的猜測 $ p_1, p_2 $ . 這取決於分佈 $ p_1, p_2 $ 是從 - 如果有隨機位串,顯然不能被利用來恢復 $ p_1, p_2 $ - 另一方面,如果它們是英文 ASCII 字元串,那麼它實際上非常容易(除非你不知道哪個是 $ p_1 $ 哪個是 $ p_2 $ )
Q2:如何/為什麼可以通過多次使用相同的 IV 來顯示 AES-Key 本身?
實際上,您不會恢復 AES 密鑰本身。你可以恢復內在價值 $ H $ .
GCM 身份驗證是這樣工作的;標籤是通過將 AAD 和密文擴展為一系列 128 位值來計算的 $ x_n, x_{n-1}, …, x_1 $ 和計算:
$$ tag = x_n H^n + x_{n-1}H^{n-1} + … + x_1H^1 + E_k(nonce) $$
如果我們得到兩個用相同隨機數加密的不同消息,我們可以將兩個方程相減,得到
$$ 1 $$: $$ tag - tag’ = (x_n - x’n) H^n + (x{n-1} - x’_{n-1} ) H^{n-1} + … + (x_1 - x’_1)H^1 $$
因為密文(或 AAD)不同,這個方程中會有一些非零係數。
而且,我們知道所有的係數(與單個 GCM 情況不同,我們不知道值 $ E_k(nonce) $ ); 這是未知的已知多項式 $ H $ 學位 $ n $ ; 事實證明,在有限域中,這是可行的。
現在,知識 $ H $ 不允許我們閱讀任何密文;它允許我們做的是以保持標籤有效的方式修改密文,從而使 GCM 的完整性保證無效。
$$ 1 $$:次要符號說明:由於我們在特徵二的有限域中工作,因此操作 $ + $ 和 $ - $ 實際上是一樣的,而且傳統上總是把它寫成 $ + $ . 我把它寫成 $ - $ 讓我們在做什麼更明顯。