Use cases for random numbers
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