Reference Guide

Secure Operation of Crypto-C ME 45
RSA BSAFE Crypto-C Micro Edition 4.1.4 Security Policy Level 1
with Level 2 Roles, Services and Authentication
2.6 Deterministic Random Number Generator
In all modes of operation, Crypto-C ME provides the CTR DRBG as the default
deterministic random number generator (DRNG).
Users can choose to use an approved DRNG other than the default, including the
HMAC DRBG implementations, when creating a cryptographic object and setting this
object against the operation requiring random number generation (for example, key
generation).
Crypto-C ME also includes a non-approved NDRNG (Entropy) used to generate seed
material for the DRNGs.
2.6.1 DRNG Seeding
In the FIPS 140-2 validated library, Crypto-C ME implements DRNGs that can be
called to generate random data. The quality of the random data output from these
DRNGs depends on the quality of the supplied seeding (entropy). Crypto-C ME
provides internal entropy collection, for example, from high precision timers, where
possible. On platforms with limited internal sources of entropy, it is strongly
recommended to collect entropy from external sources.
Additional entropy sources can be added to an application either by:
Replacing internal entropy by calling
R_CR_set_info() with
R_CR_INFO_ID_RAND_ENT_CB and the parameters for an application-defined
entropy collection callback function.
Adding to internal entropy by calling
R_CR_entropy_resource_init() to
initialize an entropy resource structure and then adding this to the library context
by calling
R_LIB_CTX_add_resource().
For more information about these functions, see the RSA BSAFE Crypto-C Micro
Edition Developers Guide.
Note: If entropy from external sources is added to an application using
R_CR_set_info() with R_CR_INFO_ID_RAND_ENT_CB or
R_CR_entropy_resource_init(), no assurances are made about the
minimum strength of generated keys.
For more information about seeding DRNGs, see “Randomness Requirements for
Security” in RFC 4086 and SP 800-90A Rev. 1.