Use cases for random numbers

From Randomness for cryptography
Jump to navigation Jump to search

Requirements for and means to obtain random data for cryptography vary by use. Principal examples include:

Personal computing

  • Linux /dev/random, /dev/urandom
  • Apple's OS X (160-bit Yarrow SHA-1)
  • Other Unix-like systems
  • Windows (CryptGenRandom)
  • Mobile devices e.g. Smart phone, Tablet
    • Many good sources of randomness (accelerometer, trackpad, camera, radio)
    • Apple's iOS (160-bit Yarrow SHA-1 ??)
    • Android

Server

  • Hard drives are a potential source of entropy, but are being replaced by solid state drives (SSDs) which may not provide reliable entropy
  • Desktop peripherals (sound input, camera USB port) may be absent
  • Virtual machine instances, especially at startup
    • I/O batching and caching may eliminate most entropy from disk file access timing
    • Hypervisor should provide a random data source
    • A CPU RNG instruction would be ideal if trustworthy

Disk-less black boxes

  • Routers
  • Programmable logic controllers (PLCs)
  • Internet of Things
  • Systems on a chip (SoC)
    • ARM and SoC vendors do not typically include RNG hardware
  • Cost of adding RNG hardware is an obstacle for low price systems.
  • First boot and provisioning of security/identity keys requires good TRNG

Crypto appliances

  • Commercial TRNGs
  • Hardware Security Modules (HSM)
  • Data choke
  • Randomized instruction set cores on FPGAs
  • Authenticating camera & sensors
  • Maker movement

DSA nonces

  • special case-- arguably a bug, but a widespread problem