Random Numbers

Random numbers are used in the generation of all kinds of keys, asymmetric, stream, and symmetric. They are also used in handshaking to prevent replay attacks, and in session key creation.

These cryptographic functions however have certain requirements to the type of random numbers they can use.

Cryptographic applications typcially make use of algorithmic techniques to produce pseudorandom numbers. Such numbers are part of sequences produced to satisfy statistical randomness tests, and because of this are much more likely to be predicable.

A true random number generator is much more difficult to create, there must be some nondeterministic source of entropy to produce true randomnes. Most such applications operate by measuring unpredicable natural processes, and are being increasingly included in the hardware of modern processors.