Implementation

如何計算加密週期?

  • August 14, 2013

NIST 特別出版物 800-57將加密週期定義為

特定密鑰被授權供合法實體使用的時間跨度,或給定係統的密鑰將保持有效的時間跨度。適當定義的加密週期:

  1. 限制可用於密碼分析的給定密鑰保護的資訊量,
  2. 如果單個密鑰被洩露,則限制暴露量,
  3. 將特定算法的使用限制在其估計的有效壽命內,
  4. 限制嘗試滲透保護密鑰免遭未經授權洩露的物理、程序和邏輯訪問機制的時間
  5. 限制因疏忽向未經授權的實體披露密鑰材料而可能損害資訊的期限,以及
  6. 限制計算密集型密碼分析攻擊的可用時間(在不需要長期密鑰保護的應用程序中)。

該標準繼續描述影響加密週期的風險因素:

影響暴露風險的因素包括:

  1. 加密機制的強度(例如,算法、密鑰長度、塊大小和操作模式),
  2. 機制的實施(例如,FIPS 140-2 4 級實施,或個人電腦上的軟體實施),
  3. 操作環境(例如,安全的受限訪問設施、開放式辦公環境或可公開訪問的終端),
  4. 資訊流量或交易數量,
  5. 數據的安全壽命,
  6. 安全功能(例如,數據加密、數字簽名、密鑰生成或派生、密鑰保護),
  7. 重新鍵入方法(例如,鍵盤輸入、在人類無法直接訪問密鑰資訊的情況下使用密鑰載入設備重新鍵入、在 PKI 內遠端重新鍵入),
  8. 密鑰更新或密鑰派生過程,
  9. 網路中共享公共密鑰的節點數,
  10. 密鑰的副本數量和這些副本的分佈,以及
  11. 對資訊的威脅(例如,資訊受到保護的對象,以及他們感知到的發動攻擊的技術能力和財務資源)。

然後,它繼續列出可能影響加密週期的其他因素,例如暴露的後果、密鑰是用於通信還是儲存,以及密鑰撤銷和替換的成本。

例如,對於對稱密鑰包裝密鑰,該標準建議:

用於在短時間內加密大量密鑰的對稱密鑰包裝密鑰的建議創建者使用期限約為一天或一周。如果要在密鑰封裝密鑰下加密的密鑰數量相對較少,則密鑰封裝密鑰的發起方使用期限可能長達一個月。在密鑰僅用於單個消息或通信會話的情況下,加密週期將被限制為單個通信會話。除後者外,建議收件人使用期限最長為發起方使用期限結束後 3 年。

我的具體問題是什麼構成上述建議中的“非常大量的密鑰”和“相對較少的密鑰”?更一般地說,考慮到上面列出的所有風險因素,是否有一個標準公式來計算最佳加密週期?

作為一個具體範例,請考慮以下場景: 1. 保護由 CBC 模式的 AES-256 和基於 SHA-256 的 HMAC 組成 2. 每月向製造商頒發 100,000 個具有此保護的密鑰,用於消費者單元的個性化 3. 機率妥協的可能性被認為是“低的” 4. 利用妥協的能力被認為是“困難的” 5. 然而,確認妥協將需要將受影響的消費者單位召回其原廠

沒有通用的方法來計算“加密週期”。通常,該算法應指定您需要更改密鑰的頻率,以達到針對密碼分析攻擊的所需安全級別。

例如,CBC 模式下的 AES 在您加密任何接近 $ 2^{64} $ 具有相同密鑰的塊,因此您應該在此之前很久就更改密鑰。對於大多數實際應用程序,您無需擔心這一點,因此一個很好的近似值是:您無需擔心更改密鑰。

如果您擔心對密鑰洩露攻擊的抵抗力,您需要自己計算需要多久更改一次密鑰才能滿足您在該領域的目標,並將風險降低到您可以接受的水平。這是算法無關的,但高度特定於領域,所以我也不知道有什麼通用方法。

為了獲得更好的答案,我建議重新詢問有關特定密碼算法和特定應用場景的問題,我們可以為您提供建議。


在您的特定情況下:我將假設這些設備在消費者手中;每個設備都有不同的密鑰;並且如果設備中的密鑰被洩露,只有擁有該密鑰的消費者會受到損害,但不會造成更廣泛的損害。如果這些假設不成立,我們可能需要了解有關應用程序的更多資訊。

基於這些假設,可能沒有強烈需要更改 AES 密鑰。在保護通信安全時,通常的做法是為每個連接/會話生成一個新的 AES 密鑰(例如,這就是 TLS 的工作方式),但這主要是因為它很容易做到。CBC 確實對您可以使用單個密鑰安全加密的數據量設置了一些限制:如果您加密 $ n $ 塊,那麼大約有一個 $ n^2/2^{129} $ 有關數據洩露的部分資訊的可能性。因此,如果您確保加密不超過 $ 2^{50} $ 數據塊( $ 2^{57} $ 字節數據)在任何一個 AES 密鑰下,那麼只有大約一個 $ 1/2^{29} $ 有一點資訊洩露的機會。即使您運送的設備數量眾多,這仍然是一個非常低的風險,因此可能是可以接受的。(似乎任何消費設備都不太可能加密超過 $ 2^{57} $ 字節數據。)簡而言之,您基本上可以忽略密碼分析攻擊的可能性。

對於密鑰洩露攻擊,您需要自行評估。我的猜測是密鑰洩露攻擊的風險很小。如果每個消費者都擁有自己的設備,並且該設備中的密鑰不允許他們訪問任何其他資訊,那麼他們可能沒有太多動力嘗試破壞自己的設備,因此這種密鑰的可能性-妥協似乎很小。如果他們的密鑰不能被用來對其他任何人造成傷害,那麼這種密鑰洩露的影響似乎很小。如果設備易手,我能想到的唯一重大風險是,如果設備易手,新所有者可能會發現自己可以訪問用於加密前所有者數據的密鑰. 如果這聽起來有問題,

一般來說,選擇加密週期實際上是關於風險管理。您會查看與密鑰暴露相關的所有風險(密碼分析、密鑰洩露等)。如果風險是不可接受的,那麼您會尋找能夠降低關鍵暴露可能性或降低關鍵暴露影響的緩解措施。在您的工具庫中,經常更改密鑰是您可以考慮的一種緩解措施。

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