為什麼批量加密密鑰和常用密鑰需要更短的生命週期?
在 NIST 標準 ( NIST SP800-57 ) 中,經常使用的批量數據加密密鑰和其他密鑰材料的壽命很短。引自(第 5.3.6 節,第 6.b. 點):
推薦用於在短時間內加密大量數據(例如,用於鏈路加密)的發起者使用期約為一天或一周。用於加密少量數據的加密密鑰可能具有長達兩年的原始使用期限。
此外,更一般地說,在 Sec。5.3.1。影響加密週期的因素,它在第五條中指出:
數據流量或交易數量;
我確實理解,直覺地說,一個鍵用於操作的次數越多,該操作中有關該鍵的“資訊”就越多。但我想不出它背後更具體的理由。由於這種考慮是相當通用的(似乎不是基於特定鍵類型的屬性)。我想知道是否有任何通用/理論框架來描述使用密鑰如何降低其保密性的“可靠性”?
大多數對稱加密技術使用 $ \text{IV} $ . 一個重要的特點是, $ {key, IV} $ pair 絕不能重複使用。
這 $ \text{IV} $ 每次使用都是隨機生成的,一些密碼模式(例如:GCM)將其分解為 nonce 的一部分,counter 的一部分。例如:對於 128 位 $ \text{IV} $ ,nonce 是 96 位,計數器是剩餘的 32 位。
計數器通常開始於 $ 0 $ 對於每個數據,並為每個塊遞增。所以我們只關心nonce。
給定一個 96 位隨機數,生日悖論告訴我們,隨機數重用的機率是 $ 2^{32} $ 用途大約是 $ 2^{-32} $ . 這 $ 2^{32} $ NIST 推薦重用機率。
到達 $ 2^{32} $ 在一周內使用,我們需要執行大約 $ 7000 $ 每秒的操作。這不是一個離譜的數字,鏈路級加密可以輕鬆處理這個問題。
因此,在大量使用對稱密鑰的情況下,我們希望確保將使用次數限制在遠低於 nonce 重用機率的範圍內。考慮到上述範例的安全邊際,我們可能會選擇一天作為合理的生命週期。
所有分組密碼都會洩露資訊。加密的數據越多,洩露的數據就越多。雖然@Marc 指出重複使用 IV 是個問題,但即使在不可能重複使用 IV 的情況下使用單個密鑰/IV 加密單個非常大的流(例如,正確實施的 CTR 模式)也會洩漏數據。長期以來,人們一直認為 CTR 模式與 CBC 模式沒有相同的限制,因此與 CBC 模式相比,使用它可以安全地加密更多數據。然而,最近的研究表明情況並非如此,CTR 模式應該被視為與 CBC 模式一樣有漏洞。見https://eprint.iacr.org/2018/159.pdf