Jump to content
Wikipedia The Free Encyclopedia

Non-physical true random number generator

From Wikipedia, the free encyclopedia
Type of random number generator

A non-physical true random number generator (NPTRNG),[1] also known as a non-physical nondeterministic random bit generator is a generator of unpredictable random numbers without the use of dedicated hardware entropy source.[2] NPTRNG uses a non-physical noise source that obtains entropy from system data, like outputs of application programming interface functions, residual information in the random access memory, system time or human input (e.g., mouse movements and keystrokes)[3] [1] in the hope that that data may contain elements that are truly random, or at least not known to or controllable by others.[citation needed ] A typical NPTRNG is implemented as software running on a computer.[1] The NPTRNGs are frequently found in the kernels of the popular operating systems [4] that are expected to run on any generic CPU.

Reliability

[edit ]

An NPTRNG is inherently less trustworthy than its physical random number generator counterpart, as the non-physical noise sources require specific conditions to work, thus the entropy estimates require major assumptions about the external environment and skills of an attacker.[5]

Typical attacks include:[6]

  • vulnerability to an adversary with system access (just like any software-based TRNG);
  • an attacker connecting a predictable source of events (for example, a mouse simulator);
  • operating in an environment where the assumptions about the system behavior no longer hold true (for example, in a virtual machine).

A more sophisticated attack in 2007 breached the forward secrecy of the NPTRNG in Windows 2000 by exploiting few implementation flaws.[7]

Implementations

[edit ]

The design of an NPTRNG is traditional for TRNGs: a noise source is followed by a postprocessing randomness extractor and, optionally, with a pseudorandom number generator (PRNG) seeded by the true random bits. For example, in Linux, the /dev/random requires true random seed (and thus can block when it needs to collect more entropy, e.g., at boot time), while /dev/urandom will always provide more bits and is non-blocking.[8] [9]

As of 2025, the Linux NPTRNG implementation extracted the entropy from:[10] [11]

  • the interrupts, mixing CPU cycle counter, kernel timer value, IRQ number, and instruction pointer of the interrupted instruction into a "fast pool" of entropy;
  • the random-time I/O (events from keyboard, mouse, and disk), mixing the kernel timer value, cycle counter, device-specific information into the "input pool".

At the time, testing in virtualized environments had shown that there existed a boot-time "entropy hole" (reset vulnerability) when the early (u)random outputs were catastrophically non-random, but in general the system provided enough uncertainty to thwart an attacker.[12]

Alam et al. had proposed using hardware performance counters as a source of entropy.[13] [14]

References

[edit ]

Sources

[edit ]


Stub icon

This computing article is a stub. You can help Wikipedia by expanding it.

AltStyle によって変換されたページ (->オリジナル) /