EVP_RAND-JITTER7ssl
The randomness seed source evp_rand implementation
Overview
Support for deterministic random number generator seeding through the EVP_RAND API.
This software seed source produces randomness based on tiny CPU "jitter" fluctuations.
It is available when OpenSSL is compiled with enable-jitter option. When available it is listed in openssl list -random-generators and openssl info -seeds.
Identity
"JITTER" is the name for this implementation; it can be used with the EVP_RAND_fetch() function.
Supported parameters
The supported parameters are:
- "state" (
OSSL_RAND_PARAM_STATE) <integer>
- "strength" (
OSSL_RAND_PARAM_STRENGTH) <unsigned integer>
- "max_request" (
OSSL_RAND_PARAM_MAX_REQUEST) <unsigned integer>
- "fips-indicator" (
OSSL_RAND_PARAM_FIPS_APPROVED_INDICATOR) <integer> -
This parameter is available in the FIPS provider and returns 1.
These parameters work as described in "PARAMETERS" in EVP_RAND(3).
Notes
A context for the seed source can be obtained by calling:
EVP_RAND *rand = EVP_RAND_fetch(NULL, "JITTER", NULL);EVP_RAND_CTX *rctx = EVP_RAND_CTX_new(rand, NULL);
The enable-jitter option was added in OpenSSL 3.4.
By specifying the enable-fips-jitter configuration option, the FIPS provider will use an internal jitter source for its entropy. Enabling this option will cause the FIPS provider to operate in a non-compliant mode unless an entropy assessment ESV <https://csrc.nist.gov/Projects/cryptographic-module-validation-program/entropy-validations> and validation through the CMVP <https://csrc.nist.gov/projects/cryptographic-module-validation-program> are additionally conducted. This option was added in OpenSSL 3.5.
Examples
EVP_RAND *rand;EVP_RAND_CTX *seed, *rctx;unsigned char bytes[100];OSSL_PARAM params[2], *p = params;unsigned int strength = 128;/* Create and instantiate a seed source */rand = EVP_RAND_fetch(NULL, "JITTER", NULL);seed = EVP_RAND_CTX_new(rand, NULL);EVP_RAND_instantiate(seed, strength, 0, NULL, 0, NULL);EVP_RAND_free(rand);/* Feed this into a DRBG */rand = EVP_RAND_fetch(NULL, "CTR-DRBG", NULL);rctx = EVP_RAND_CTX_new(rand, seed);EVP_RAND_free(rand);/* Configure the DRBG */*p++ = OSSL_PARAM_construct_utf8_string(OSSL_DRBG_PARAM_CIPHER,SN_aes_256_ctr, 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);EVP_RAND_CTX_free(seed);
Releases
2 releases since Debian 13 (Trixie); the text changed 1 time.