Random-Number-Generator

NIST DRBG 算法的可選參數

  • October 15, 2019

當我瀏覽DRBG 的 NIST-SP-800-90Ar1規範時,我發現在文件中的所有 3 個指定結構中都提到了security_strength:Hash_DRBG、HMAC_DRBG、CTR_DRBG。但是,它們都被標記為可選:

  1. security_strength:實例化的安全強度。這個參數對於Hash_DRBG是可選的,因為它沒有被使用。

  1. security_strength:實例化的安全強度。這個參數對於HMAC_DRBG是可選的,因為它沒有被使用。

{3 沒有 df,4 有 df}。security_strength:實例化的安全強度。此參數對於CTR_DRBG是可選的。

而在之前那個丟臉的版本中,甚至都沒有提到這個參數。

包含它的理由是什麼,或者我們可以推斷出什麼?

部分答案是SP 800-90A 的 2012 版本包括第四個 DRBG 結構 Dual_EC_DRBG (§10.3.1.2),需要該security_strength參數。由於一個 DRBG 風格需要這個參數,為了有一個通用的介面,所有的 DRBG 風格都必須採用這個參數。在 Dual_EC_DRBG 中,security_strength僅用於一件事:選擇曲線。

使用security_strength10.3.1 節中的 和表 4,選擇具有安全強度的最小可用曲線security_strengthseedlen, p, a, b, n, P,的值 Q由曲線確定。

Dual_EC_DRBG在公開後被退役,可能是 NSA 的後門,但它的遺產以這種次要的方式倖存下來。

讓我無法理解的是為什麼 Dual_EC_DRBG 根據安全強度選擇曲線,而 Hash_DRBG 和 HMAC_DRBG 通過選擇散列算法進行參數化,而 CTR_DRBG 通過選擇分組密碼進行參數化。

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