Random number generator

Sepherosa Ziehau sepherosa at gmail.com
Fri May 8 00:51:48 PDT 2009

On Fri, May 8, 2009 at 2:47 PM, Robin Carey <robin.carey1 at googlemail.com> wrote:
> ---------- Forwarded message ----------
> From: Robin Carey <robin.carey1 at googlemail.com>
> Date: 2009/5/8
> Subject: Random number generator
> To: submit-request at lists.dragonflybsd.org
> I had an idea about how to improve the random number generator in
> DragonFlyBSD which I would like to share.
> There is a bootstrapping problem where it is difficult to get enough
> "entropy" at boot to ensure the random number generator is fully seeded and
> completely unpredictable immediately after the system has booted.
> Currently the random number generator seeds itself from nanotime() and
> nanouptime() which introduces a small degree of entropy, but probably not
> enough to ensure the above requirement is met.
> So a possible improvement could be made by introducing more "entropy" at
> initialisation from a high resolution timer like the TSC - rdtsc() (which is
> also used in the random number generator - NANOUP_EVENT() - courtesy of
> Matthew Dillon). That is my suggestion: Use rdtsc() aswell as nanotime() and
> nanouptime() to ensure the random number generator has enough "entropy" at
> boot to ensure it is fully seeded and completely unpredictable. If this were
> done (and true) then you would not need the current ability of the random
> number generator being able to be seeded from a file - an ability which
> Matthew Dillon implemented to solve the boot-seeding problem.
> I am wondering if there are any other high resolution timers available .....

tsc probably is the highest resolution timer; it should be available
on almost all of the modern system.  HPET is a high frequency timer
(>10Mhz, but compared to tsc, it is quite low freq) and ACPI timer is
@~3Mhz.  They depends on that acpi.ko is loaded, and they are
available relatively later than tsc.

Best Regards,

Live Free or Die

More information about the Submit mailing list