頻繁更新密鑰的動機
我想知道是否有任何理由定期更新用於在實時系統中進行身份驗證的加密密鑰。
如果密鑰薄弱、損壞、受損或洩露,則應更新密鑰。另一個有效的原因是弱認證方案。例如,如果使用相同的密鑰對不同長度的消息進行身份驗證,CBS-MAC 很容易發生消息偽造。如果使用相同的密鑰,則具有相同 IV 的 AES-GCM 是粗心的。
正如 Swashbuckler 指出的那樣,分組密碼會洩露資訊,因此應該更新加密密鑰。關於身份驗證,我看不到這樣的原因,因為沒有機密數據,即使對手觀察到碰撞,他也無法學習密鑰(在大多數情況下)。
因此,如果部署了強大的密碼系統,從純粹的安全形度來看,密鑰更新不會帶來任何好處。我監督什麼嗎?
更新密鑰的頻率越高,使用任何給定密鑰處理的數據就越少,因此洩漏的影響就越小。這與密鑰的目的無關:機密性、身份驗證或其他任何內容。對於數據身份驗證,更新密鑰會限制受污染數據的數量,在這種情況下,可能無法區分合法數據和虛假數據。只有通過受損密鑰認證的數據才會受到污染:通過攻擊者尚未獲得的密鑰認證的數據仍然可以信任。
如果洩漏足夠少以至於對手無法輕鬆學習下一個密鑰,那麼只有一個好處。部分洩漏的一個例子是Heartbleed之類的漏洞,它允許攻擊者觀察有限數量的記憶體內容:只有當密鑰恰好儲存在攻擊者設法訪問的地址範圍內時,它才會洩漏密鑰。Spectre和Meltdown系列的微架構側通道有時對攻擊者的攻擊範圍也有限,具體取決於記憶體佈局和可用的攻擊工具。受益於密鑰更新的另一類攻擊是當攻擊者需要物理妥協來獲取密鑰時,例如通過竊取備份磁帶。
更新密鑰的另一個原因是,在某些情況下,密鑰開始使用的時間與攻擊者能夠獲取密鑰的時間之間存在延遲。例如,如果攻擊者竊取了備份磁帶,就會出現這種情況。如果攻擊者沒有直接獲得密鑰,但在經過大量但可行的計算量後可以產生密鑰的一些資訊,例如隨機生成器狀態的部分洩漏,或者隨機以不可忽略但不足的熵為種子的生成器。
更新密鑰的另一個原因是,如果存在有限的側通道,僅允許攻擊者一次獲取少量資訊,例如,如果攻擊者需要花費一個小時來使站點的網路頻寬飽和獲取 256 位密鑰的每一位,並且每週(168 小時)更新密鑰,由於頻寬飽和,攻擊者有可能在攻擊者獲得足夠有用的位之前檢測到攻擊。如果密鑰一年只更新一次,攻擊者可以保持較低的頻寬消耗,花費幾個月的時間獲取密鑰。
對於身份驗證密鑰,在您知道密鑰已被洩露後更新密鑰通常還不夠好。您可能不會立即或根本不會發現妥協。不僅如此,即使簽名者知道,驗證者也可能永遠不會發現簽名密鑰已被洩露。例如,TLS 密鑰用於對網站進行身份驗證。如果網站遭到入侵,客戶怎麼知道?原則上,通過撤銷——但分發撤銷資訊很困難。更新密鑰通常最多會使妥協視窗比及時撤銷稍長,並且具有它實際工作的相當大的優勢。