Skip to main content
1 of 2
Luis Casillas
  • 14.7k
  • 2
  • 32
  • 53

How distinct are the meanings of the terms "CSPRNG," "DRBG" and "stream cipher"?

Are there universal, consensus definitions for the following terms?

  1. Cryptographically secure pseudo-random number generator ("CSPRNG")
  2. Deterministic random bit generator ("DRBG")
  3. Stream cipher

This is primarily a question about the terminology rather than the concepts (although I do not master the concepts by any means either). My confusion arises because:

  • I recall seeing some reference (that I can't find again now) which equated CSPRNGs and stream ciphers, due to the fact that expanding a finite key to a long, secure keystream is basically the same problem as generating a long cryptographically-secure pseudo-random sequence from a short seed. So correspondingly, stream ciphers are sometimes used as PRNGs, as in for example Rust's ChaChaRng.
  • The term "DRBG" appears to be mostly used by NIST in connection with their SP 800-90A algorithms, and which stresses safety against adversaries who can observe the state at one point in time. The key concepts here, as I understand them, are forward secrecy and periodic reseeding from external entropy sources.
  • The term "CSPRNG" apparently gets used in both senses (see for example the answers to this question).
Luis Casillas
  • 14.7k
  • 2
  • 32
  • 53