https://ujm.hal.science/ujm-01334142Fischer, ViktorViktorFischerLHC - Laboratoire Hubert Curien - IOGS - Institut d'Optique Graduate School - UJM - Université Jean Monnet - Saint-Étienne - CNRS - Centre National de la Recherche ScientifiqueHaddad, PatrickPatrickHaddadLHC - Laboratoire Hubert Curien - IOGS - Institut d'Optique Graduate School - UJM - Université Jean Monnet - Saint-Étienne - CNRS - Centre National de la Recherche ScientifiqueST-ROUSSET - STMicroelectronics [Rousset]Random Number Generators for CryptographyHAL CCSD2016[INFO.INFO-ES] Computer Science [cs]/Embedded Systems[INFO.INFO-CR] Computer Science [cs]/Cryptography and Security [cs.CR]Bochard, NathalieFarhana Sheikh, Leonel Sousa2016-06-20 14:49:482023-03-24 14:53:022016-06-20 14:49:48enBook sections1Random number generators (RNGs) are computational or physical functions generating a sequence of bits or symbols (e.g. groups of bits - numbers) that do not feature any pattern - generated bits or symbols (numbers) are independent and uniformly distributed. Random number generators have many applications in modern technologies. They are widely used in cryptography, but also in Monte Carlo simulations of complex systems, as noise generators in telecommunication systems, in games, slot machines, etc. Many methods of generating random numbers exist, starting from ancient methods using dice and coin flipping, sophisticated methods using quantum mechanics, up to modern principles that can be implemented in electronic systems and in particular in logic devices.Random numbers are crucial in cryptography: they are used as confidential keys, padding data, initialization vectors, nonces in challenge-response protocols, but also as random masks in side channel attack countermeasures. Since the era of Kerckhoff, the confidentiality of data is based on encryption keys: it is supposed that cryptographic algorithm is known to the adversary and that confidentiality is guaranteed only by a confidential key unknown to him.It is interesting to note that one of the simplest and the most secure encryption techniques called one time pad is entirely based on a direct use of random numbers. It can be proved that the one time pad cannot be broken if used correctly, i.e. if each of the generated random sequences is used only once. However, this information-theoretic guarantee only holds if these sequences come from a high quality random source with high entropy.Compared to other application areas, except for good statistical quality and knowledge of the distribution of generated random numbers, cryptography applications have strong security requirements - random number generators must be cryptographically secure. Cryptographically secure random number generators must generate random numbers that have good statistical quality and the generated sequences must not be predictable and manipulable.In cryptographic applications, for security reasons, cryptographic keys and other security critical data must be generated inside cryptographic modules and in particular inside semiconductor devices if the cryptographic module is implemented as a cryptographic system on a chip (e.g. in smartcards). For this reason, we will deal only with generators that can be implemented inside digital devices.