Stream-Cipher

術語“CSPRNG”、“DRBG”和“流密碼”的含義有多不同?

  • May 2, 2016

以下術語是否有通用的、一致的定義?

  1. 加密安全偽隨機數生成器(“CSPRNG”)
  2. 確定性隨機位發生器(“DRBG”)
  3. 流密碼

這主要是關於術語而不是概念的問題(儘管我也不以任何方式掌握這些概念)。我的困惑出現是因為:

  • 我記得看到一些將 CSPRNG 和流密碼等同起來的參考資料(我現在找不到了),因為將有限密鑰擴展為長的、安全的密鑰流與生成長的加密安全偽密鑰基本上是相同的問題- 來自短種子的隨機序列。因此,相應地,流密碼有時用作 PRNG,例如Rust 的ChaChaRng.
  • NIST 似乎主要將“DRBG”一詞與他們的 SP 800-90A 算法結合使用,並強調對可以在某個時間點觀察狀態的對手的安全性。據我了解,這裡的關鍵概念是前向保密和從外部熵源定期重新播種。
  • “CSPRNG”一詞顯然在兩種意義上都有使用(例如,參見這個問題的答案)。

這些定義並不都是通用的,並且有相當多的重疊。

  • 最清晰的定義是PRG,它是(同步)流密碼模型。PRG 將一個秘密值映射到一個長而隨機的密鑰流,因此攻擊者無法通過知道密鑰流的其他部分來預測密鑰流的任何部分。要獲得準確的定義,您可以查看Katz 和 Lindell中的定義(我的副本中為 3.15)或在其他一些教科書中找到等效的定義。

當然,大多數現代流密碼並不真正適合 PRG 模型(即使它們是同步的)。他們使用 IV/nonce,允許多次使用同一個密鑰。

  • NIST 將DRBG定義為:

    • 生成統計上隨機且獨立的位序列
    • 以一種確定的方式
    • 來自種子(可能還有其他輸入)。 

這聽起來很像 PRG,除了其他輸入,但他們也提到了對熵源的訪問。這很模糊,他們還說:

DRBG 通常稱為偽隨機數(或位)生成器。

很明顯有重疊。

  • CSPRNG基本上是隨機數生成的一個包羅萬象的術語,它在某種意義上是加密安全的。我不知道你會就它的含義達成共識。(就我個人而言,我需要諸如重新播種和前向保密之類的東西,同時也許還定義了一種將位序列映射為隨機數的方法,但這些並不是普遍假設的。)

還有一些方法可以將其中一種轉換為另一種,例如您提到的流密碼-> RNG,因為它們畢竟需要相似的屬性,如果不完全相同的話。

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