True Random Number Generators
A true random number generator (TRNG) uses a nondeterministic
source to produce randomness. Most operate by measuring unpredictable natural
processes, such as pulse detectors of ionizing radiation events, gas discharge
tubes, and leaky capacitors. Intel has developed a commercially available chip
that samples thermal noise by amplifying the voltage measured across undriven
resistors [JUN99]. A
group at Bell Labs has developed a technique that uses the variations in the
response time of raw read requests for one disk sector of a hard disk [JAKO98]. LavaRnd is an
open source project for creating truly random numbers using inexpensive cameras,
open source code, and inexpensive hardware. The system uses a saturated CCD in a
light-tight can as a chaotic source to produce the seed. Software processes the
result into truly random numbers in a variety of formats.
There are problems both with the randomness and the precision
of such numbers [BRIG79], to say nothing of the clumsy
requirement of attaching one of these devices to every system in an
internetwork. Another alternative is to dip into a published collection of
good-quality random numbers (e.g., [RAND55], [TIPP27]). However, these collections
provide a very limited source of numbers compared to the potential requirements
of a sizable network security application. Furthermore, although the numbers in
these books do indeed exhibit statistical randomness, they are predictable,
because an opponent who knows that the book is in use can obtain a copy.
Skew
A true random number generator may produce an output that is
biased in some way, such as having more ones than zeros or vice versa. Various
methods of modifying a bit stream to reduce or eliminate the bias have been
developed. These are referred to as deskewing
algorithms. One approach to deskew is to pass the bit stream through a
hash function such as MD5 or SHA-1 (described in Part Two). The hash function produces an n-bit
output from an input of arbitrary length. For deskewing, blocks of m
input bits, with m n can be passed through the hash
function.
No comments:
Post a Comment