EVP_RAND-HASH-DRBG
名稱
EVP_RAND-HASH-DRBG - HASH DRBG EVP_RAND 實作
說明
透過 EVP_RAND API 支援雜湊確定性亂數位元產生器。
身分
「HASH-DRBG」是此實作的名稱;它可與 EVP_RAND_fetch() 函式搭配使用。
支援的參數
支援的參數為
- 「狀態」(OSSL_RAND_PARAM_STATE) <整數>
- 「強度」(OSSL_RAND_PARAM_STRENGTH) <無符號整數>
- 「最大要求」(OSSL_RAND_PARAM_MAX_REQUEST) <無符號整數>
- 「重新播種要求」(OSSL_DRBG_PARAM_RESEED_REQUESTS) <無符號整數>
- 「重新播種時間間隔」(OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL) <整數>
- 「最小熵長度」(OSSL_DRBG_PARAM_MIN_ENTROPYLEN) <無符號整數>
- 「最大熵長度」(OSSL_DRBG_PARAM_MAX_ENTROPYLEN) <無符號整數>
- 「最小亂數長度」(OSSL_DRBG_PARAM_MIN_NONCELEN) <無符號整數>
- 「最大亂數長度」(OSSL_DRBG_PARAM_MAX_NONCELEN) <無符號整數>
- 「最大個人化長度」(OSSL_DRBG_PARAM_MAX_PERSLEN) <無符號整數>
- 「最大附加資料長度」(OSSL_DRBG_PARAM_MAX_ADINLEN) <無符號整數>
- 「重新播種計數器」(OSSL_DRBG_PARAM_RESEED_COUNTER) <無符號整數>
- 「屬性」(OSSL_DRBG_PARAM_PROPERTIES) <UTF8 字串>
- 「摘要」(OSSL_DRBG_PARAM_DIGEST) <UTF8 字串>
-
這些參數的運作方式如 EVP_RAND(3) 中的「參數」 所述。
注意事項
當使用 -no_drbg_truncated_digests 選項安裝 FIPS 提供者時,僅允許使用下列摘要(根據 FIPS 140-3 IG D.R)
- SHA-1
- SHA2-256
- SHA2-512
- SHA3-256
- SHA3-512
可透過呼叫取得 HASH DRBG 的內容
EVP_RAND *rand = EVP_RAND_fetch(NULL, "HASH-DRBG", NULL);
EVP_RAND_CTX *rctx = EVP_RAND_CTX_new(rand, NULL);
範例
EVP_RAND *rand;
EVP_RAND_CTX *rctx;
unsigned char bytes[100];
OSSL_PARAM params[2], *p = params;
unsigned int strength = 128;
rand = EVP_RAND_fetch(NULL, "HASH-DRBG", NULL);
rctx = EVP_RAND_CTX_new(rand, NULL);
EVP_RAND_free(rand);
*p++ = OSSL_PARAM_construct_utf8_string(OSSL_DRBG_PARAM_DIGEST, SN_sha512, 0);
*p = OSSL_PARAM_construct_end();
EVP_RAND_instantiate(rctx, strength, 0, NULL, 0, params);
EVP_RAND_generate(rctx, bytes, sizeof(bytes), strength, 0, NULL, 0);
EVP_RAND_CTX_free(rctx);
遵循
NIST SP 800-90A 和 SP 800-90B
另請參閱
EVP_RAND(3)、EVP_RAND(3) 中的「參數」、openssl-fipsinstall(1)
歷史記錄
OpenSSL 3.1.1 在 fipsinstall 中新增了 -no_drbg_truncated_digests 選項,它限制使用 FIPS 提供者時允許的摘要。有關詳細資訊,請參閱 FIPS 140-3 IG D.R。
版權
版權所有 2020-2023 OpenSSL 專案作者。保留所有權利。
授權於 Apache 授權條款 2.0(「授權條款」)。您不得使用此檔案,除非符合授權條款。您可以在原始程式碼散佈中的 LICENSE 檔案中取得一份副本,或於 https://www.openssl.org/source/license.html 取得。