The concept of randomness is associated with the properties of uniform distribution, statistical independence, and unpredictability of a set of numbers . The need for random numbers is met by using techniques that include hardware, software, and hybrid resources. Commonly used techniques and their limitations can be summarized as follows :
- Usage of Internal Components (clocks etc.): Clocks and similar structures used in computer systems don’t provide sufficient unpredictability. It has been observed that the results obtained with the tests on the clocks in different systems vary unexpectedly compared to the other versions.
- Usage of External Components: The content and timing of user events such as keyboard keys and mouse movement are essential in obtaining unpredictable data. It has been observed that the results obtained by tests conducted on clocks through different systems vary unexpectedly according to other versions.
- Usage of Hardware: The most critical component for powerful and portable randomness is physical hardware that allows the generation of unpredictable numbers. A good source of random numbers can be obtained with hardware added as a standard part of the system. The main problem is that it’s difficult for manufacturers to agree on the usefulness of this hardware and supporting software.
- Usage of the Complex Manipulation Fallacy: A highly complex algorithm offers misleading unpredictability in some cases. These situations arise with the traditional RNG with good statistical features or the generation of the encryption key in which the clock value of the system is used as the seed. The expected randomness cannot be achieved if there is limited seed value space or the attacker knows the system’s manipulation.
In addition to all these approaches, RNGs are commonly used to generate random numbers. This concept describes structures that generate random numbers with the same distribution property. Its quality is measured by the level of true randomness and computational requirements. A good RNG is supported by theoretical evidence, experimental results, and practical positive aspects. For this reason, in applications that require randomness, it’s necessary to determine the appropriate generator by making choices in terms of cost, efficiency, and necessity.