Randomness describes outcomes or sequences without a predictable pattern under a specified probability model. In cryptography, the practical test is whether an attacker can predict generated values. Random number generators produce sequences for this purpose, but insecure generators such as linear-congruential generators must not protect secrets. section 2.0
From calculator buttons to cryptographic secrets
A calculator’s RAND button appears to decide independently, much as a magician asking for a number from 1 to 10 expects an answer they cannot guess. Cryptographic systems require the stronger engineering property that keys, initialization vectors, nonces, padding values, and salts remain unpredictable. Even a secure algorithm can fail when its random input is guessable; ECDSA, for example, can be broken when an attacker guesses only a few bytes of its signing nonce. section 2.0 section 10.2
Treat randomness as an explicit security dependency:
- Use high-quality randomness wherever cryptography generates keys, initialization vectors, HMAC inputs, signatures, padding values, or password salts. section 10.2
- Convert physical entropy into digital bits, continuously run statistical health tests against the expected noise model, and use a tested TRNG to periodically reseed a CSPRNG. section 10.2
- Inspect randomness as an engineering responsibility rather than assuming the surrounding algorithm will compensate for weak or predictable input. section 10.2
Figure 10.2 The recommended setup for using randomness for cryptographic applications: health tests should ensure the correct operation of the TRNG, which should periodically reseed a CSPRNG.
Trace the recommended path from physical entropy through health-tested random generation to periodic CSPRNG reseeding. section 10.2




