Symmetric

在不同的明文上重複使用相同的密鑰

  • November 27, 2014

對稱加密:一遍又一遍地使用相同的密鑰是否會引入漏洞?

意思是,如果我每天發送一條用相同密鑰加密的不同明文,攻擊者最終能否推斷出密鑰?(在多長時間內?)

這在很大程度上取決於您使用的加密形式和模式。

對於在偽流模式(如 CTR 或 GCM)中使用的任何流密碼或分組密碼,即使重用密鑰/IV 對一次也是絕對致命的。永遠不要對它們使用靜態密鑰,如果這樣做,永遠不要重用 IV。它們嚴格一次性使用通過特定會話的密鑰交換算法協商的密鑰。

對於 CBC 等模式,即使您不小心再次使用了相同的 IV,重用密鑰也不是什麼大問題。重複使用相同的密鑰/IV 將使攻擊者確定兩條消息是否具有共同的前綴,但不會固有地洩漏導緻密鑰或明文洩露的資訊。

因此,如果您使用臨時密鑰相信您的隨機數生成器是安全且強大的,那麼 CTR 或流模式的優勢非常引人注目,尤其是在速度/並行化是一個問題的情況下。如果其中任何一個都不是這種情況,例如預共享密鑰或沒有良好的熵源,或者您沒有從流密碼特徵中受益,那麼像 CBC 之類的東西就是要走的路。

簡而言之,是的,密鑰重用最終會導致對一個非常大的數據集的持久且專注的攻擊者越來越容易受到攻擊。

根據您使用的加密方法,細節很快就會變得非常複雜。我相信在具有隨機 IV 的標準 AES CBC 實現中,建議在 2 64字節數據後更改密鑰。在 CTR 模式下,它接近 2 92字節的數據。

實際上,對於許多應用程序,您不必擔心太多,因為 2 64字節約為 18,450,000 TB。根據具體情況,這可能會大大超過應用程序的生命週期。

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