WO2012136763A2 - Random number generating system based on memory start-up noise - Google Patents
Random number generating system based on memory start-up noise Download PDFInfo
- Publication number
- WO2012136763A2 WO2012136763A2 PCT/EP2012/056277 EP2012056277W WO2012136763A2 WO 2012136763 A2 WO2012136763 A2 WO 2012136763A2 EP 2012056277 W EP2012056277 W EP 2012056277W WO 2012136763 A2 WO2012136763 A2 WO 2012136763A2
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- memory
- random number
- random
- internal state
- generating system
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/588—Random number generators, i.e. based on natural stochastic processes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0866—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics
Definitions
- the invention relates to a random number generating system for generating a sequence of random numbers.
- Random number generation is used in widely differing fields, ranging from simulations, e.g., Monte Carlo methods, telecommunication systems, e.g., for selecting spread spectrum frequencies to gambling, etc. Although, the quality of the random numbers used is important for all of these fields, it takes on particular importance in the field of cryptography.
- random numbers are used for many purposes and often the security of a cryptographic system hinges on the quality of the random numbers. For example, key generation frequently employs a source of random numbers.
- Other applications of random numbers in cryptography include the generation of a nonce, generation of a challenge for use in a challenge-response protocol, as initialization vector, for example as the initialization vector for a block cipher running in CBC mode.
- a sequence of random number is preferably unpredictable. Thus an attacker cannot predict a sequence before it has been produced better than chance. Similarly, the sequence cannot be reliably reproduced. After a sequence has been produced it is not feasible to produce it again. For unpredictable sequence it is infeasible given the security demands of the application to predict what the next random bit will be, even if one has complete knowledge of the algorithm, of the hardware generating the sequence, and all of the previously generated bits.
- a true random number sequence has all of these properties, but they may also be obtained from a deterministic random number sequence if it has a suitably random seed.
- random number generator produces may be interpreted in various ways, as numbers, typically from some pre-determined range, as characters, or as bits, etc. A sequence of bits may be mapped to a sequence of numbers and vice versa.
- random bit generator is also used, and may be regarded as a random number generator which generates random integral numbers between 0 and 1. What applies to a random bit generator applies also mutatis mutandis to a random number generator and vice versa.
- Random bit generators may be divided into two classes.
- the random number generators in one class produce bits non-deterministically, where every bit of output is based on a physical process that is unpredictable; these random bit generators are commonly known as non-deterministic random bit generators (NRBGs).
- the random number generators in the other class compute bits deterministically using an algorithm; this class of RBGs is known as Deterministic Random Bit Generators (DRBGs).
- An NRBGs is also referred to as a true random number generator.
- a DRBG is also referred to as a pseudo random number generator.
- a Deterministic Random Bit Generator is typically initiated with a seed.
- a seed is a limited sequence of numbers, e.g. a string of bits used as input to a deterministic random number generator. The seed will determine all or a portion of an internal state of the generator. The entropy of the seed must be sufficient to support the security requirements of the DRBG. The seed may be obtained from a true random number generator. Deterministic Random Bit Generators are further described in NIST Special
- thermal noise in integrated circuits describes small voltage fluctuations that exist on conductors in equilibrium.
- Other sources of randomness include decay of radioactive material, quantum mechanics processes, frequency instability of free- running oscillators, etc.
- the random number generating system for generating a sequence of random numbers avoids or mitigates the above mentioned disadvantages.
- the random number generating system comprises a memory.
- the memory is writable, volatile and configured such that the memory contains an at least partially random memory content upon each powering-up of the memory.
- the random number generating system also comprises an instantiating unit configured for seeding the random number generating system with a seed dependent upon the at least partially random memory content.
- the sequence of random numbers is generated in dependence upon the seed.
- the random number generating system also comprises an over-writing unit configured for over-writing at least part of the memory with random numbers generated by the random number generating system in dependence upon the seed.
- the content of the memory is used to generate a seed. Since the sequence of random numbers is generated in dependency upon a seed, there is in principle no limit to the amount of random numbers that may be generated. Even if a random number generating scheme is used which incorporates a maximum number of random numbers that may safely be generated, then this number is typically far larger than the amount of randomness that may be obtained from one memory power-up.
- a soft-reset of a device containing the random number generating system power to the memory is not interrupted.
- the memory produces a new at least partially random memory content each time it is powered-up (e.g., during a hard reset), this effect does not occur during a soft reset where the memory is not re- powered.
- the sequence of random numbers produced by the random number generating system is not of inferior randomness.
- the random numbers produced by the random number generating system after a soft reset are not the same as the random numbers produced after a previous power-up of the memory.
- the invention has at least two advantages.
- the number of random numbers which may be derived from the memory is small, since it is restricted to a small percentage of the size of the memory.
- the number of random numbers that may be produced is not so limited, since the random numbers are derived from the memory in an indirect way using a random number generation system, e.g., using a deterministic random number generator based on a seed.
- the quality of the random numbers does not deteriorate after a soft reset, whereas in Holcomb, random numbers generated after a soft reset would be exactly equal to those generated after the preceding reset.
- the sequence of random numbers may be a sequence of bits.
- the random numbers may also be bytes, e.g. in the form of numbers in the range of 0 to 255, or words or any other suitable form.
- the numbers may also be represented as characters or the like.
- the sequence of random numbers may be placed at an output comprised in the random number generating system.
- the random number generating system may provide an API on which a next random number of the sequence may be requested upon which the random number generating system supplies it.
- the memory is writable so that it can be overwritten by random numbers. Since the memory is volatile, over-writing the memory with random numbers has no effect on the memory contents after a hard reset. After a hard reset the memory contains a new at least partially random memory content after it is powered-up.
- the memory may be a stand-alone memory, but the memory may also be part of a larger memory.
- the memory may be one or more blocks, say one 2 kb block of a larger SRAM. Another part of the larger memory may be allocated to other purposes, e.g., as temporary storage.
- over-writing unit it was not necessary for the over-writing unit to overwrite every individual location of the memory. As long as the total entropy in the overwritten memory is not lower than the security needs required by the application which uses the sequence of random numbers, overhead may be reduced by overwriting less than the full memory.
- other non-random data could be written to the memory.
- elements of an internal state of the random number generation system that need not necessarily be random, e.g., a reseed counter may be written to the memory. This allows those elements to be restored after a soft-reset. Reseed counters are discussed in the NIST standard.
- Volatile memory also known as volatile storage, is computer memory that requires power to maintain the stored information, unlike non-volatile memory which does not require a maintained power supply.
- the instantiating unit may derive the seed from multiple sources.
- the random number generating system comprises an entropy source.
- the entropy source comprises the memory.
- the instantiating unit derives the seed from the entropy source.
- the entropy source may contain other sources of entropy.
- the entropy source may contain a clock, used as entropy source.
- An entropy source is a source of unpredictable data. The entropy source need not necessarily have a uniform distribution.
- the instantiating unit may be an instantiating unit according to the NIST standard, but this is not necessary.
- the instantiating unit produces a seed for starting the generation of random numbers.
- the content of the memory upon power-up need not be fully random, nor does its distribution need to be uniform. It is preferred that the entropy of the content of the memory upon power-up is at least as large as the seed. However, if the entropy of the content of the memory upon power-up is smaller than the seed the invention will still function and the quality of the random sequence after a soft reset is still improved. There is no need for every individual element of the content, say individual bits or bytes, to be equally random; in fact some individual elements may not be random at all.
- the instantiating unit is configured for storing the seed in an internal entropy pool, typically part of an internal state.
- the entropy pool may be stored in an internal memory of the random number generating system.
- the sequence of random numbers is generated in dependence upon the internal entropy pool.
- the entropy pool may be modified as a result of generating the sequence but this is not necessary.
- the seed may be concatenated with a counter, which is hashed using a hash, preferably a cryptographically strong hash, e.g., sha-256. All or part of the output of the hash is used as part of the sequence of random numbers. It is not necessary that the content of the memory is fully random.
- the content of the memory may have smaller entropy than its theoretical Shannon maximum entropy.
- the random number generating system comprising a conditioning unit for compressing the entropy of the memory content into a string having a bit-length shorter than a bit-length of the memory content, the instantiating unit being configured for seeding the random number generating system with a seed dependent upon the string.
- the conditioning unit preferably performs a condition function.
- the conditioning unit may be part of the entropy source, but this is not necessary.
- An entropy source that either includes a conditioning function or for which conditioning is performed on the output of the entropy source is sometimes referred to as a conditioned entropy source.
- the conditioning function ensures that the conditioned entropy source provides full entropy bit strings.
- the random number generating system comprises an internal state memory for storing an internal state, and a generating unit configured for generating a random number of the sequence of random numbers from the current internal state in conjunction with deriving a new internal state from a current internal state stored in the internal state memory.
- the generating unit may be configured to apply a generating function to the internal state so as to produce random numbers of the sequence, and an updating function to update the internal state.
- the generating unit may update the internal state by writing the new internal state to the internal state memory.
- the instantiating unit is configured for writing to the internal state memory, e.g. for writing the seed.
- the instantiating unit may also perform further processing upon the seed, e.g., to extent the seed's length, and write the result of the further processing to the internal state memory.
- An internal state, including the current and new internal state has a bit length equal to or smaller than a predetermined internal state size.
- the over-writing unit is configured to over-write the part of the memory with random numbers throughout the generation of the sequence of random numbers. This has several advantages. In this embodiment, the over-writing unit does not necessarily need to receive a reset signal in case of a reset since the contents of the memory will be suitably random after a soft reset. Furthermore, even if the overwriting unit receives a reset signal in case of a soft-reset, there is no time delay caused by overwriting the memory before the soft-reset can be executed.
- the over-writing unit may be configured to write a random number within each elapse of a series of pre-determined time intervals, or after a predetermined number of cycles have occurred, say cycles of a central processor, say clock cycles.
- the over-writing unit is configured to write a random number generated by the random number generating system in dependence upon the seed to the memory each time a predetermined number of random numbers of the sequence of random numbers have been generated. For example, a random number may be written to the part of the memory upon each random number generated in the sequence.
- the over-writing unit is configured to write a random number generated by the random number generating system in dependence upon the seed to the memory after the system receives a request for a certain amount of random bytes from an application.
- the over-writing unit is configured for over-writing the memory with random numbers generated by the random number generating system in dependence upon the seed, upon the random number generating system receiving a reset signal. In particular, the over-writing unit may receive the reset signal.
- Overwriting the memory after a reset signal has been received has the advantage that overwriting may proceed faster compared in total time than incremental over-writing. For performance critical applications, it may be preferred to keep non-essential steps during normal operation reduced to a minimum, while at shutdown e.g. during a soft reset more time may be available. Overwriting during shutdown, during a soft reset, also has the advantage that it counters a potential attack on the memory made during normal operation. Alternatively, the part of the memory may be overwritten completely after deriving the seed, e.g., as part of the initialization.
- the reset signal may first be received by the random number generation system, which in turn signals the overwriting unit to start the over-writing.
- a bit-size of the at least part of the memory is at least as large as a bit-size of the seed.
- bit-size of the at least part of the memory is equal to the bit size of the seed. From an entropy point of view there would be little lost, since a fully over-written memory at most contains as much entropy as was present in the seed.
- the random number generating system comprises an internal state memory for storing an internal state, and a generating unit configured for generating a random number of the sequence of random numbers from the current internal state in conjunction with deriving a new internal state from a current internal state stored in the internal state memory, wherein the bit-size of the at least part of the memory is at least as large as a bit-size of the internal state.
- bit-size of the at least part of the memory equal to the bit-size of the internal state, has the advantage that one can more easily argue that no entropy is lost during the over-writing of the memory, since the amount of what is written back is not less than the amount of data in the internal state. At the same time, overhead is reduced to a minimum.
- the random numbers that are used to overwrite the part of the memory may be obtained from different sources.
- the random numbers generated by the random number generating system in dependence upon the seed for over- writing the at least part of the memory are part of the sequence of random numbers generated by the random number generating system.
- the random numbers generated in the sequence may be re-used for overwriting the memory, that is, a random number is both outputted for use in some application and written to memory. This would not necessarily cause re-use of those values after a soft-reset since an initialization step would follow. However, in another embodiment, some numbers in the sequences are used for overwriting the memory or for output to an application, but not both.
- the random stream that can be observed in an application is uncorrelated from the random stream that could be observed by memory inspection (if that would be possible).
- the random numbers generated by the random number generating system in dependence upon the seed for over-writing the at least part of the memory comprises intermediate data of the random number generating system which are not part of the sequence of random numbers generated by the random number generating system.
- the random number generating system comprises an internal state memory for storing an internal state and a generating unit configured for generating a random number of the sequence of random numbers from the current internal state in conjunction with deriving a new internal state from a current internal state stored in the internal state memory, wherein the generating unit is configured for deriving the new internal state from the current internal state before generating a random number of the sequence of random numbers from the current internal state, and wherein the over-writing unit is configured for over-writing the at least part of the memory with random numbers derived from the new internal state before generating a random number of the sequence of random numbers from the current internal state.
- the instantiating algorithm may be configured for copying the internal state used for over-writing back from the memory to the internal state memory upon resumption after the reset.
- the sequence of random numbers is fully dependent upon the seed. That is apart from deriving the seed, the random number generator is a deterministic random number generator. A deterministic random number generator typically has a larger throughput. In case of deriving randomness from the start-up noise in a memory, the separation between true-random generation of a seed and deterministic
- the sequence of random numbers is fully dependent upon the internal state.
- Any type of volatile, writable memory that may be configured such that a part of the memory contains an at least partially random memory content upon each powering-up of the memory may be used for the invention.
- suitable are SRAM memory, flip-flops and latches.
- a sequence of flip-flops may be read out after power-up.
- bus-keepers or a collection of bus-keepers as the memory, combined with a circuit configured for writing values to bus-keepers.
- SRAM and flip-flops are also used to produce physical unclonable functions (PUFs).
- PEFs physical unclonable functions
- a certain amount of randomness can be tolerated as long as the power-up values are sufficiently persistent across different power-ups.
- even memory can be used which is highly random after start-up.
- DRAM dynamic random access memory
- the random number generating system may be an electric random number
- a random number generating system having an electric memory. Also the instantiation unit and the over-writing unit are preferably electric.
- a random number generating system according to the invention may also be comprised in an electronic device, in particular a mobile electronic device, such as mobile phone, set-top box, computer, etc.
- a further aspect of the invention concerns a smart card comprising a random number generating system according to the invention.
- an electronic cryptographic device comprising a random number generation system according to the invention.
- the electronic cryptographic device may be configured for generating using the random number generation system according to the invention any one of a nonce, a challenge for use in a challenge-response protocol, an initialization vector, for example as the initialization vector for a block cipher running in CBC mode, a random blinding number, a cryptographic key, for example a symmetric key, a asymmetric key, a session key.
- a further aspect of the invention concerns a method of generating a sequence of random numbers.
- the method comprises powering-up of a memory, the memory being writable, volatile and configured such that a part of the memory contains an at least partially random memory content upon each powering-up, seeding with a seed dependent upon the at least partially random memory content, generating the sequence of random numbers in dependence upon the seed, over-writing at least part of the memory with random numbers generated by in dependence upon the seed.
- a random number generating system according to the invention may be
- mobile phones smart card readers, smart phones, embedded devices, RFID tags, point-of-sale terminals, VOIP phones, tablets, security modules, TPM modules, MTM modules, network routers, PCs, laptops.
- an electronic memory preferably an SRAM memory
- an instantiation unit preferably an instantiation unit
- a device for managing the memory preferably an SRAM memory, an instantiation unit, and a device for managing the memory.
- a method according to the invention may be implemented on a computer as a computer implemented method, or in dedicated hardware, or in a combination of both.
- Executable code for a method according to the invention may be stored on a computer program product.
- Examples of computer program products include memory devices, optical storage devices, integrated circuits, servers, online software, etc.
- the computer program comprises computer program code means adapted to perform all the steps of a method according to the invention when the computer program is run on a computer.
- the computer program is embodied on a computer readable medium.
- An aspect of the invention therefore concerns a device comprising a processor for executing computer software instructions and a memory.
- the memory is writable, volatile and configured such that the memory contains an at least partially random memory content upon each powering-up of the memory.
- the device comprises a further memory comprising computer software instructions configured for
- the processor may be a micro controller, e.g., an 8051 processor.
- the software may be software according to the invention.
- An aspect of the invention concerns a method of retrofitting a device comprising a processor for executing computer software instructions and a memory.
- the memory is writable, volatile and configured such that the memory contains an at least partially random memory content upon each powering-up of the memory.
- the device comprises a further memory for comprising computer software instructions.
- the method of retrofitting comprises installing software according to the invention into the further memory.
- FIGS. 1 , 2, 3, and 4 illustrate in schematic form various embodiments according to the invention
- Figure 5a shows a graphic representation of a smart card
- Figure 5b shows a schematic representation of a smart card
- Figure 6 shows a flow-chart illustrating a method according to the invention.
- Figure 7a and 7b each show a flow-chart illustrating a method according to the invention.
- Figure 1 shows a random number generating system 100.
- System 100 comprises a memory 110.
- Memory 1 10 is a writable, volatile memory and configured such that the memory contains an at least partially random memory content upon each powering-up of the memory.
- Memory 110 may be part of a larger memory, in which case memory 110 refers to the part of the memory that contains an at least partially random memory content upon each powering-up of the memory and which is used by instantiating unit
- Memory 1 10 may be a static random access memory (SRAM). SRAMs have the property that after they are powered-up, they are filled with a random pattern of on-bits and off-bits, also referred to as one and zero valued bits. Although the pattern will repeat itself to some extent if the SRAM if powered-up a next time, there are sufficient differences between subsequent power-up for the SRAM to serve as an entropy source .
- Memory 1 10 may be a collection of memory elements. Suitable volatile memory elements include a flip-flop and a latch. At start up, the memory element, such as may be included in an integrated circuit, will be filled with a random value. The random value depends on the precise variations in the production process while the memory element was manufactured. A slight alteration in the configuration of the various components that construct the memory element may alter the random value.
- a collection of memory elements may be used as memory 110.
- the behavior of the components of an SRAM relative to each other is at least slightly random. These variations are reflected, e.g., in a slightly different threshold voltage of the transistors in the memory cells of the SRAM.
- the SRAM When the SRAM is read out in an undefined state, e.g., before a write action, its output of the SRAM depends on the random configuration. SRAM cells whose transistor threshold voltages are well balanced are more likely to have a random startup behavior than cells whose threshold voltages are slightly unbalanced due to process variations.
- the memory 1 10 may be a so-called physical unclonable function (PUF).
- PEF physical unclonable function
- the content of the memory 110 after power-up could also be used to derive a unique string, e.g., through the application of helper data.
- helper data removes the presence of noise from the content of the memory contains an at least partially random memory content upon each powering-up of the memory.
- the unique string may be used as a cryptographic key. After, before, or during the derivation of the key, the original memory content, i.e., without having noise removed from it, may be used to derive a seed according to the invention.
- memory 110 could be used as a PUF and as an entropy source.
- the requirements of a PUF and of an entropy source are different though and to a certain extent contradictory.
- a PUF requires a certain degree of overlap between subsequent power-ups, whereas an entropy source requires a certain degree of difference.
- a Physical Unclonable Function is a function which is embodied as a physical system, in such a way that an output of the function for an input is obtained by offering the input to the physical system in the form of a stimulus, and mapping the behavior that occurs as a result of an interaction between the stimulus and the physical system to an output, wherein the interaction is unpredictable and depends on essentially random elements in the physical system, to such an extent, that it is unfeasible to obtain the output, without having had physical access to the physical system, and that it is unfeasible to reproduce the physical system.
- Some types of PUFs allow a wide range of different inputs, some types allow a more limited range of inputs, or may even allow only a single input. Challenging a PUF with some single challenge may also be called an 'activation' of the PUF.
- Deriving a unique string from memory 1 10 is entirely optional.
- the invention allows the use of a memory having such a high degree of randomness in its start-up content that it would not be practical or even possible to use that memory as a PUF for deriving a unique string.
- An additional advantage of the invention is the following.
- Memory of the type used for PUFs, e.g., SRAMs are subject to so called ageing. For example, if the same data pattern is stored in SRAM memory for a long time, transistor threshold voltages change due to Negative Bias Temperature Instability (NBTI) effects, which may have negative influence on the noise (i.e. reducing it).
- NBTI Negative Bias Temperature Instability
- writing back random data into memory 110 prevents the memory cells from ageing into a certain direction. This effect is improved if the overwriting extents to the entire memory 110. This effect is also and/or further improved if the overwriting continues throughout the time memory 1 10 is powered-on.
- System 100 comprises an internal state memory 154 for storing an internal state of the system 100.
- System 100 further comprises an instantiating unit 152.
- Instantiating unit 152 is configured for seeding the random number generating system with a seed dependent upon the at least partially random memory content.
- instantiating unit 152 is connected to memory 1 10 to obtain the at least partially random memory content. From the at least partially random memory content, and optionally other sources, instantiating unit 152 creates a seed.
- Instantiating unit 152 stores the seed in internal state memory 154.
- Instantiating unit 152 may be as described in the NIST standard, i.e. a function having one or more inputs for receiving random data and producing a seed, i.e., a random starting value for use as internal state.
- System 100 further comprises generating unit 156.
- Generating unit 156 is connected to internal state memory 154 for reading and writing access.
- Generating unit 156 is configured for generating a sequence of random numbers in dependence upon the internal state, e.g., as stored in internal state memory 154.
- Generating unit 156 may use an output generating algorithm to produce a new random number which is part of the sequence of random numbers from the internal state, generating unit 156 may use an internal state updating algorithm to update the internal state to a new internal state and write the new internal state to internal state memory 154.
- Generating unit 156 initially takes as input the initial state from the instantiate function. Generating unit 156 is preferably configured to generate pseudorandom bits on request. Upon receiving the request, e.g., from application 160, generating unit 156 generates the random numbers and produces a new internal state for the next request. The random numbers may alternatively be pushed, without receiving a request first. The request maybe received by other parts of the random number generation system first.
- the instantiate function used by instantiating unit 152 and generate function used by generating unit 156 may be implemented by using a hash function. An example is specified in section 10.1.1 of the NIST standard.
- figure 8 of this specification shows a graphical presentation of a possible embodiment of instantiating unit 152 and generating unit 156.
- the values "V”, "reseed counter” and “C” can be regarded as the internal state of the algorithm.
- the pseudorandom bits are the output bits of the system. Note, that the sequence of random numbers is generated in dependence upon the seed and upon the internal state.
- System 100 is connected to an application 160 via generating unit 156.
- application 160 is a key exchange protocol, say, a Diffie-Hellman protocol. During the course of a Diffie-Hellman protocol one or more random numbers are needed to execute the protocol steps.
- Application 160 receives the random numbers from generating unit 156.
- Application 160 may be any other application that requires random numbers, e.g., cryptographic applications, or other, say, a Monte Carlo simulation application.
- System 100 further comprises an over-writing unit 159.
- Overwriting unit 159 obtains random numbers depending on the seed as well. As we will show there are various options on how overwriting unit 159 exactly obtains these random numbers.
- Figure 1 shows overwriting unit 159 connected to generating unit 156 for obtaining random numbers generated by the random number generating system in dependence upon the seed.
- Overwriting unit 159 is configured to overwrite memory 1 10. Note that in case memory 110 is part of a larger memory, overwriting unit 159 need only overwrite that part of the larger memory from which instantiating unit 152 obtains random memory content. Overwriting unit 159 may also overwrite the entire larger memory.
- Overwriting unit 159 may overwrite memory 1 10 in one operation. For example, overwriting unit 159 may overwrite the memory upon receiving a reset signal. The reset signal indicates that a soft reset in is progress. Overwriting unit 159 may receive the signal from an operating system. Overwriting unit 159 may give a further signal, e.g., to the operating system upon completion of the overwriting, thus signaling that the soft reset may proceed. The use of a further signal is optional. Instead overwriting unit 159 may also take a predetermined amount of time which fits in the soft reset cycle.
- Overwriting unit 159 may also overwrite the memory upon instantiating unit 152 having derived the seed.
- instantiating unit 152 may send a seed complete signal to overwriting unit 159 and overwriting unit 159 may be configured to overwrite the part of memory 1 10 upon receiving the seed complete signal.
- Overwriting unit 159 may also spread the over-writing of memory 1 10 over a longer period.
- the over-writing unit may be configured to over-write the part of the memory with random numbers throughout the generation of the sequence of random numbers.
- Overwriting unit 159 may comprise an over-write complete flag, the flag is set if memory 110 has been entirely overwritten by overwriting unit 159 once. Overwriting unit 159 does not over-write further if the flag is set. The flag is reset upon a soft or hard reset. The over-write complete flag may be set after a predetermined number of memory locations of memory 1 10 have been overwritten. The predetermined number may correspond to the size of memory 1 10, to the size of the seed, to the size of the internal state, etc.
- One way to implement spreading of the over-writing is to write at least one random number generated by the random number generating system in dependence upon the seed each time a predetermined number of random numbers of the sequence of random numbers have been generated. For example, if the predetermined number is one, overwriting unit 159 will write a random number to memory 1 10 each time an user of system 100, e.g., application 160, asks or receives a random number of the sequence. For example, overwriting unit 159 could keep a pointer, pointing into memory 1 10. Upon a reset, soft or hard, overwriting unit 159 sets the pointer to the start of memory 110.
- overwriting unit 159 When overwriting unit 159 writes a random number to memory 1 10, he writes it to the location in memory 1 10 indicated by the pointer, and advances the pointer. When the pointer reaches the end of memory 1 10, overwriting unit 159 may set the over-write complete flag for indicating a full overwrite, overwriting unit 159 may also set the pointer back to the start of memory 1 10. Continuing the overwriting even though a full overwrite has taken place, decreases somewhat the correlation of the content of memory 1 10 after the overwriting and the seed since the content at the time of a soft reset depends on the number of requests from applications, or from how long overwriting unit 159 has been overwriting the memory.
- the over-write complete flag may be set if the difference between the pointer and the start of memory 1 10 equal the predetermined number.
- memory 1 10 is powered-up.
- memory 1 10 contains a pattern of values that is random, or at least partially so.
- the entropy measured in bits contained in memory 1 10 is at least as large as the bit-size of the seed produced by instantiating unit 152. Entropy may be estimated with various methods, for example using min-entropy.
- Instantiating unit 152 obtains the content and derives a seed. Instantiating unit 152 then stores the seed in internal state memory 154. When application 160 needs a random number it requests a number to generating unit 156. Application 160 may use an API. Generating unit 156 may also push the random numbers. Generating unit 156 derives a new random numbers of the sequence from the internal state stored in internal state memory 154. Generating unit 156 also updates the internal state.
- Overwriting unit 159 uses random numbers that are derived from the seed and overwrites memory 1 10. At some point a soft reset occurs. Internal state 154 may be deleted, e.g. zeroized. Memory 1 10 is not powered-down and up and will not contain a new random state based on physical properties of memory 1 10. However, when instantiating unit 152 starts to derive new a seed he will find a different content in memory 110 compared to the previous power-up. Internal state memory 154 will contain a different value. Even though no power-cycling occurred, and even though internal state memory 154 may have been zeroized, it behaves as if it was reseeded in case of a hard reset. If at some point system 100 has a hard reset, then memory 110 will contain a new random state based on physical properties. So any information an attacker learns from memory 1 10 while system 100 was powered down has no bearing on the content of memory 1 10 after the subsequent powering up.
- Internal state memory 154 and generating unit 156 together may produce a sequence of random numbers which is fully dependent upon the seed.
- Instantiating unit 152, internal state memory 154 and generating unit 156 may be the deterministic random bit generator (DRBG) specified in sections 8, 9 and 10 of the NIST standard.
- DRBG deterministic random bit generator
- additional entropy may be added to the internal state, during operation, for example, the precise time an application makes a request for a random number may be added.
- Overwriting unit 159 may use part of the sequence produced by generating unit 156 for overwriting. For example, every other random number produced by generating unit 156 is used by overwriting unit 159 for over-writing and the rest of the sequence for output, e.g., to application 160. Overwriting unit 159 may also use other random numbers than those of the sequence for overwriting.
- the random numbers generated by the random number generating system in dependence upon the seed for over-writing the at least part of the memory may comprise intermediate data of the random number generating system which are not part of the sequence of random numbers generated by the random number generating system.
- part of the internal state of internal state memory 154 may be used by overwriting unit 159, say the first byte.
- random numbers may be derived from internal state memory 154.
- overwriting unit 159 may hash the content of internal state memory 154.
- overwriting unit 159 concatenates a fixed string to the content of internal state memory 154 before the hashing, say the fixed byte 0x04, this ensures that the random numbers used by overwriting unit 159 for overwriting are uncorrelated from those outputted by the system.
- Overwriting unit 159 may also use a pre-computation of the next internal state or information derived thereof.
- the random number generator should reset and start outputting data that is independent of any data that has been output before.
- the random number generator should reset and start outputting data that is independent of any data that has been output before.
- System 100 may be implemented as an electronic circuit, for example as an integrated Circuit (IC) and/or as programmable logic.
- the programmable logic comprises, e.g., a field-programmable gate array (FPGA), a programmable logic device (PLD), or a digital signal processor (DSP), a microprocessor, etc.
- FPGA field-programmable gate array
- PLD programmable logic device
- DSP digital signal processor
- Figure 2 shows random number generating system 200.
- System 200 is a variant of system 100.
- System 200 has all the elements of system 100 and a few more.
- System 200 comprises a conditioning unit 120.
- Conditioning unit 120 is configured with a conditioning algorithm.
- a conditioning algorithm is a compression function that has good diffusion properties. For example it can be implemented as a cryptographic hash function, as a block cipher in CBC mode or for example as the derivation functions specified in section 10.4 of the NIST standard.
- the purpose of conditioning unit 120 is to concentrate the entropy found in memory 1 10 into a smaller string. If the entropy in the content of memory 1 10 is larger than the output size of conditioning unit 120 than the output of conditioning unit 120 has maximum entropy.
- System 200 also shows a further entropy source 112. Further entropy source 112 is optional. Further entropy source 1 12 may use the conditioning unit 120, but may also have its own conditioning unit, or none. Further entropy source 1 12 could for example be a clock, or a measurement unit, e.g., attached to a hard drive to measure seek times.
- System 200 further comprises a distinguisher 130. Instantiating unit 152 is configured with an additional input to receive a string from distinguisher 130. Distinguisher 130 produces a string to make sure that the output of system 200, if not random is at least different from other devices. This can be accomplished with a counter in distinguisher 130 which counts power-ups, or resets including soft and hard, or a serial number of the device etc. Distinguisher 130 is optional.
- the instantiate function thus acquires entropy input and may combine it with a nonce and/or a personalization string to create a seed from which the initial internal state is created.
- Instantiating unit 152 may write the seed directly to the internal state memory 154, or may derive the internal state from the seed, see the NIST standard.
- System 200 may comprise an un-instantiating unit 158.
- un-instantiating unit 158 Upon receiving a signal that the device will shut down or will go into reset, un-instantiating unit 158 deletes the internal state. For example, un-instantiating unit 158 overwrites internal state memory 154 with zeros upon receiving a reset signal.
- instantiating unit 152, internal state memory 154, generating unit 156 together form a deterministic random number generator.
- instantiating unit 152, internal state memory 154, generating unit 156 and un-instantiating unit 158 are NIST standard compliant.
- memory 1 10 as 2KB of SRAM memory, or 2KB of a larger memory.
- the seed derived from that memory's content after power-up could be chosen to be 256 bits. However, these numbers are exemplifying and depend on the embodiment and purpose of the application.
- Other useful values among many other possible choices for the size of memory 110 is 512 byte, 1 Kb, 4 Kb etc.
- Other useful values among many other possible choices for the size of the seed include 80 bit, 128 bit, 512 bit, 1024 bit, etc.
- a true random seed of at least 256 bits can be derived from SRAM startup measurements of 2KB in size.
- This true random seed may be stored in internal state memory 154, and serve as input for generating unit 156.
- Instantiating unit 152, internal state memory 154 and generating unit 156 may be a DRBG which produces a random bit stream.
- the conditioning algorithm makes sure that a completely new true random seed is generated from the SRAM startup data.
- the conditioning algorithm extracts all, or at least most of, the noise, i.e., entropy, from the PUF measurements and turns this into a full-entropy bit string of a certain size.
- An example of such a conditioning algorithm is specified in the NIST standard for use in deterministic random bit generators (DRBGs).
- memory 1 10 and further entropy source 1 12 are powered up.
- the output of memory 1 10 and further entropy source 1 12 is processed by conditioning unit 120 to extract entropy.
- Instantiating unit 152 takes the extracted entropy, and optionally takes distinguishing input from distinguisher 130 to produce a seed.
- Conditioning unit 120 and instantiating unit 152 may be integrated into a single hash application and/or into a single unit.
- conditioning step of conditioning unit 120 may be omitted in case of a soft reset.
- Figure 3 shows random number generating system 300, which another possible way of arranging the units of system 200.
- Deterministic random number generator 150 comprises instantiating unit 152, un-instantiating unit 158, internal state memory 154 and generating unit 156.
- Deterministic random number generator 150 may be a standard compliant DRBG, e.g. a NIST standard compliant DRBG.
- deterministic random number generator 150 is implemented as a black-box, say as an integrated circuit.
- Overwriting unit 159 is configured to receive random numbers from the same output, which also provides other applications, e.g., application 160, with random numbers.
- conditioning unit 120 is part of instantiating unit 152 or deterministic random number generator 150.
- the random numbers generated by the random number generating system in dependence upon the seed for over-writing the at least part of the memory are part of or derived from the sequence of random numbers generated by the random number generating system.
- Figure 4 shows random number generating system 400, yet another variant of system 200.
- System 400 comprises un-instantiating unit 410 which in turn comprises un- instantiating unit 158 and overwriting unit 159.
- Un-instantiating unit 410 is configured to receive a reset signal. Upon receiving the reset signal, un-instantiating unit 410 both overwrites memory 1 10, and internal state memory 154.
- un-instantiating unit 410 may use generating unit 156 for updating the internal state, e.g. by having it generate a random number, and then write the contents of internal state memory 154 to memory 1 10, and then delete the contents of internal state memory 154, say overwrite it with zero.
- Figure 7a shows a method of generating random numbers for the sequence and updating the internal state memory 154.
- a request for random numbers is received 710.
- the request typically indicates how many random numbers are requested. For example, a request may arrive at the random number generation system, e.g., at generation unit 156, and indicate that, say, 40 random numbers are needed.
- generation unit 156 is to generate the requested number of random numbers.
- Generation unit 156 obtains the current internal state from internal state memory 154 and applies a generation function to obtain the requested number of random numbers, say 40 numbers are generated as requested. After the numbers are generated, generation function 156 updates the internal state. To do this generation unit 156 derives 730 a new internal state from the current internal state.
- the internal state may comprise the number of random numbers that have been generated for the sequence so far. In other words the new internal state may depend on the requested number of random numbers.
- Generation unit 156 may do this by applying an updating function to the current internal state. Generation unit 156 then writes 740 the new internal state to internal state memory 154.
- the generated random numbers may be output after the updating of the internal state memory, e.g. by buffering them until after the updating.
- the generated random numbers may also be output immediately after their generation. The latter is preferred in hardware as it avoids buffering. For example, each number may be output as soon as that particular number has been generated Any mentioned way of over-writing memory 110 may be combined with this way of random number generation. For example, over-writing memory 1 10 may use the random numbers that are output. Over-writing memory 110 may be done once before generation is started, e.g. after the seed is derived, or once during shut-down before a soft-reset.
- Figure 7b shows in a flow chart an advantageous alternative to the method shown in Figure 7a.
- a request for random numbers is received 710.
- the request typically indicates how many random numbers are requested. For example, a request may arrive at the random number generation system, e.g., at generation unit 156, and indicate that, say, 40 random numbers are needed.
- generation unit 156 is to generate the requested number of random numbers.
- generation unit 156 derives 730 the new internal state from the current internal state. This is the same new internal state that would have to be derived after the generation of the random numbers in Figure 7a.
- the updating function derives the new internal state that would have to be computed after the generation of the requested number of random numbers.
- the new internal state is then used for overwriting memory 110. For example, new internal state may be written to memory 1 10. Also data depending upon the new internal state may be written to memory 1 10. For example, a hash, say sha-256, may be applied to the new internal state, the result of which is written to memory 1 10.
- Generation unit 156 may obtain the current internal state from internal state memory 154 and applies a generation function to obtain the requested number of random numbers, say 40 numbers are generated as requested.
- generation function 156 updates the internal state. This may be done by writing, the already computed new internal state to the internal state memory. This may also be done be deriving the new internal state again.
- the method of combining updating of the internal state and generation of random numbers as shown in figure 7b has the advantage that assurances can be given concerning the quality of random numbers after a soft-reset, when compared to the quality of the sequence before the soft reset. This type of assurance is considered advantageous in cryptography.
- the sequence of random numbers that is produced by method 7b is independent from soft-resets that may occur. This may be accomplished by over writing memory 110 with data from which the new internal state can be derived. For example, by writing the new internal state itself, or by writing the internal state encrypted with an encryption key, to memory 1 10. After a soft reset, instantiation unit 152 is signaled that a soft reset occurred. Instantiation unit 152 will then obtain the new internal state and write it to internal state memory 154. In this way, the sequence will continue as if no soft-reset occurred. If needed instantiation unit 152 may decrypt the data in memory 1 10 to obtain the internal state.
- the encryption key may be a fixed key stored in program memory of the device implementing the method of figure 7b.
- the encryption key is derived from the power-up contents of a volatile key memory used as PUF, say another part of a larger memory comprising memory 1 10.
- the encryption key derived from the key memory is used to encrypt the new internal state before it is written to memory 1 10.
- the key memory may be used a PUF
- the encryption key may be derived by applying helper data.
- Such key derivation methods are in itself known in the art of PUFs.
- Instantiation unit 152 may be signaled about a previous soft reset by an operating system.
- generation unit 156 may write a pre-determined string to memory 1 10, instantiation unit 152 may conclude that a soft reset occurred by detecting the presence of the pre-determined string.
- FIG. 5a shows in top-view a schematic representation of a smart card 500 according to the invention.
- the smart card comprises an integrated circuit 510 and a, typically plastic, card 505 supporting integrated circuit 510.
- the architecture of integrated circuit 510 is schematically shown in Figure 5b.
- Circuit 510 comprises a processing unit 520, e.g. a CPU, for running computer program components to execute a method according to the invention and/or implement its modules or units.
- Circuit 510 comprises a memory 522 for storing programming code, data, cryptographic keys, helper data etc. Part of memory 522 may be read-only. Part of memory 522 may be high security memory, e.g., fuses for storing security related data, e.g., keys.
- Circuit 510 comprises a physical unclonable function 524. Physical unclonable function 524 may be combined with memory 522. Circuit 210 may comprise a communication element 526, e.g., an antenna, connector pads or both. Circuit 510, memory 522, PUF 524 and communication element 526 may be connected to each other via a bus 530. The card may be arranged for contact and/or contact-less communication, using an antenna and/or connector pads respectively. The smart card may be used, e.g., in a set-top box to control access to content, in a mobile phone to control access to a telecommunication network, in a public transport system to control access to public transport, in a banking card to control access to a bank account, etc.
- memory 522 may comprise software for execution by processing unit 520. When the software is executed some of the functions of the modules of computing devices are performed.
- PUF 524 may comprise memory 1 10.
- Figure 6 illustrates a method 600 according to the invention with a flow chart.
- the method comprises powering-up of a writable, volatile memory 610,
- steps 630 and 640 may be executed, at least partially, in parallel. Moreover, a given step may not have finished completely before a next step is started.
- a method according to the invention may be executed using software, which comprises instructions for causing a processor system to perform method 600.
- Software may only include those steps taken by a particular sub-entity of the system.
- the software may be stored in a suitable storage medium, such as a hard disk, a floppy, a memory etc.
- the software may be sent as a signal along a wire, or wireless, or using a data network, e.g., the Internet.
- the software may be made available for download and/or for remote usage on a server.
- the invention also extends to computer programs, particularly computer programs on or in a carrier, adapted for putting the invention into practice.
- the program may be in the form of source code, object code, a code intermediate source and object code such as partially compiled form, or in any other form suitable for use in the implementation of the method according to the invention.
- the computer program may be comprised in an embedded processor. It will also be appreciated that such a program may have many different architectural designs. For example, a program code implementing the functionality of the method or system according to the invention may be subdivided into one or more subroutines. Many different ways to distribute the functionality among these subroutines will be apparent to the skilled person.
- the subroutines may be stored together in one executable file to form a self-contained program.
- Such an executable file may comprise computer executable instructions, for example, processor instructions and/or interpreter instructions (e.g. Java interpreter instructions).
- one or more or all of the subroutines may be stored in at least one external library file and linked with a main program either statically or dynamically, e.g. at run-time.
- the main program contains at least one call to at least one of the subroutines.
- the subroutines may comprise function calls to each other.
- An embodiment relating to a computer program product comprises computer executable instructions corresponding to each of the processing steps of at least one of the methods set forth. These instructions may be subdivided into subroutines and/or be stored in one or more files that may be linked statically or dynamically.
- Another embodiment relating to a computer program product comprises computer executable instructions corresponding to each of the means of at least one of the systems and/or products set forth. These instructions may be subdivided into subroutines and/or be stored in one or more files that may be linked statically or dynamically.
- the carrier of a computer program may be any entity or device capable of carrying the program.
- the carrier may include a storage medium, such as a ROM, for example a CD ROM or a semiconductor ROM, or a magnetic recording medium, for example a floppy disc or hard disk.
- the carrier may be a transmissible carrier such as an electrical or optical signal, which may be conveyed via electrical or optical cable or by radio or other means.
- the carrier may be constituted by such cable or other device or means.
- the carrier may be an integrated circuit in which the program is embedded, the integrated circuit being adapted for performing, or for use in the performance of, the relevant method.
- the invention may be implemented by means of hardware comprising several distinct elements, and by means of a suitably programmed computer.
- the device claim enumerating several means several of these means may be embodied by one and the same item of hardware.
- the mere fact that certain measures are recited in mutually different dependent claims does not indicate that a combination of these measures cannot be used to advantage.
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Security & Cryptography (AREA)
- Storage Device Security (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Power Sources (AREA)
Abstract
Description
Claims
Priority Applications (5)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2014503151A JP6182132B2 (en) | 2011-04-05 | 2012-04-05 | Random number generation system based on noise at memory startup |
| KR1020137029323A KR101972126B1 (en) | 2011-04-05 | 2012-04-05 | Random number generating system based on memory start-up noise |
| ES12718111T ES2530944T3 (en) | 2011-04-05 | 2012-04-05 | Random number generation system based on the boot noise of a memory |
| EP12718111.3A EP2695052B1 (en) | 2011-04-05 | 2012-04-05 | Random number generating system based on memory start-up noise |
| US14/110,009 US9383969B2 (en) | 2011-04-05 | 2012-04-05 | Random number generating system based on memory start-up noise |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201161471771P | 2011-04-05 | 2011-04-05 | |
| US61/471,771 | 2011-04-05 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| WO2012136763A2 true WO2012136763A2 (en) | 2012-10-11 |
| WO2012136763A3 WO2012136763A3 (en) | 2013-01-03 |
Family
ID=46025630
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/EP2012/056277 Ceased WO2012136763A2 (en) | 2011-04-05 | 2012-04-05 | Random number generating system based on memory start-up noise |
Country Status (6)
| Country | Link |
|---|---|
| US (1) | US9383969B2 (en) |
| EP (1) | EP2695052B1 (en) |
| JP (1) | JP6182132B2 (en) |
| KR (1) | KR101972126B1 (en) |
| ES (1) | ES2530944T3 (en) |
| WO (1) | WO2012136763A2 (en) |
Cited By (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN104838617A (en) * | 2012-12-11 | 2015-08-12 | 三菱电机株式会社 | Integrated security device and signal processing method used by integrated security device |
| EP2930610A2 (en) | 2014-04-11 | 2015-10-14 | Siemens Aktiengesellschaft | Random number generator and method for generating random numbers |
| US9449197B2 (en) | 2013-06-13 | 2016-09-20 | Global Foundries Inc. | Pooling entropy to facilitate mobile device-based true random number generation |
| CN106020771A (en) * | 2016-05-31 | 2016-10-12 | 东南大学 | Pseudorandom sequence generator based on PUF |
| CN112306457A (en) * | 2020-08-07 | 2021-02-02 | 神州融安科技(北京)有限公司 | Random number generation method and device |
| US20220385485A1 (en) * | 2021-06-01 | 2022-12-01 | Micron Technology, Inc. | Identity theft protection with no password access |
Families Citing this family (57)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8793296B2 (en) * | 2012-02-02 | 2014-07-29 | Kaohsiung Medical University | Random number generating method |
| US8861725B2 (en) * | 2012-07-10 | 2014-10-14 | Infineon Technologies Ag | Random bit stream generator with enhanced backward secrecy |
| US8879733B2 (en) | 2012-07-10 | 2014-11-04 | Infineon Technologies Ag | Random bit stream generator with guaranteed minimum period |
| US9026719B2 (en) | 2012-11-15 | 2015-05-05 | Elwha, Llc | Intelligent monitoring for computation in memory |
| US9323499B2 (en) * | 2012-11-15 | 2016-04-26 | Elwha Llc | Random number generator functions in memory |
| US9582465B2 (en) | 2012-11-15 | 2017-02-28 | Elwha Llc | Flexible processors and flexible memory |
| US8996951B2 (en) | 2012-11-15 | 2015-03-31 | Elwha, Llc | Error correction with non-volatile memory on an integrated circuit |
| US8966310B2 (en) | 2012-11-15 | 2015-02-24 | Elwha Llc | Redundancy for loss-tolerant data in non-volatile memory |
| US9442854B2 (en) | 2012-11-15 | 2016-09-13 | Elwha Llc | Memory circuitry including computational circuitry for performing supplemental functions |
| US9495544B2 (en) | 2013-06-27 | 2016-11-15 | Visa International Service Association | Secure data transmission and verification with untrusted computing devices |
| WO2015123347A1 (en) | 2014-02-11 | 2015-08-20 | Yaana Technologies, LLC | Mathod and system for metadata analysis and collection with privacy |
| US10447503B2 (en) | 2014-02-21 | 2019-10-15 | Yaana Technologies, LLC | Method and system for data flow management of user equipment in a tunneling packet data network |
| US9693263B2 (en) | 2014-02-21 | 2017-06-27 | Yaana Technologies, LLC | Method and system for data flow management of user equipment in a tunneling packet data network |
| US10334037B2 (en) | 2014-03-31 | 2019-06-25 | Yaana Technologies, Inc. | Peer-to-peer rendezvous system for minimizing third party visibility and method thereof |
| EP2940923B1 (en) * | 2014-04-28 | 2018-09-05 | Université de Genève | Method and device for optics based quantum random number generator |
| US10216484B2 (en) * | 2014-06-10 | 2019-02-26 | Texas Instruments Incorporated | Random number generation with ferroelectric random access memory |
| US10285038B2 (en) | 2014-10-10 | 2019-05-07 | Yaana Technologies, Inc. | Method and system for discovering user equipment in a network |
| US9548862B1 (en) * | 2014-11-17 | 2017-01-17 | Safelogic, Inc. | Managing entropy in computing devices for cryptographic key generation |
| US10542426B2 (en) | 2014-11-21 | 2020-01-21 | Yaana Technologies, LLC | System and method for transmitting a secure message over a signaling network |
| US9880929B2 (en) * | 2014-12-17 | 2018-01-30 | Schneider Electric It Corporation | Systems and methods for generating a unique device id |
| US10361844B2 (en) | 2015-04-20 | 2019-07-23 | Certicom Corp. | Generating cryptographic function parameters based on an observed astronomical event |
| US10375070B2 (en) | 2015-04-20 | 2019-08-06 | Certicom Corp. | Generating cryptographic function parameters from compact source code |
| US10079675B2 (en) * | 2015-04-20 | 2018-09-18 | Certicom Corp. | Generating cryptographic function parameters from a puzzle |
| WO2016176661A1 (en) | 2015-04-29 | 2016-11-03 | Yaana Technologies, Inc. | Scalable and iterative deep packet inspection for communications networks |
| JP6827032B2 (en) * | 2015-08-06 | 2021-02-10 | イントリンシツク・イー・デー・ベー・ベー | Cryptographic device with physical replication difficulty function |
| US20170142578A1 (en) * | 2015-11-13 | 2017-05-18 | Yaana Technologies Llc | System and method for providing secure and anonymous device-to-device communication |
| US10135930B2 (en) | 2015-11-13 | 2018-11-20 | Yaana Technologies Llc | System and method for discovering internet protocol (IP) network address and port translation bindings |
| JP6249421B2 (en) * | 2016-03-25 | 2017-12-20 | 三菱電機株式会社 | Distance measuring device |
| EP3258292A1 (en) * | 2016-06-17 | 2017-12-20 | Airbus DS GmbH | Technique for position calculation of a receiver under use of encrypted signals of a public regulated service |
| US10019236B2 (en) | 2016-08-11 | 2018-07-10 | Taiwan Semiconductor Manufacturing Co., Ltd. | SRAM-based true random number generator |
| US10235138B2 (en) * | 2016-09-30 | 2019-03-19 | International Business Machines Corporation | Instruction to provide true random numbers |
| US11080228B2 (en) * | 2017-03-13 | 2021-08-03 | International Business Machines Corporation | Distributed random binning featurization with hybrid two-level parallelism |
| EP3407528A1 (en) * | 2017-05-24 | 2018-11-28 | Koninklijke Philips N.V. | Cryptographic device and method |
| US10481872B2 (en) * | 2017-08-29 | 2019-11-19 | Colossio, Inc. | Cryptographically secure random number generator |
| US11175893B2 (en) * | 2017-10-17 | 2021-11-16 | Blue ArmorTechnologies, LLC | Statistical object generator |
| KR102045764B1 (en) | 2018-02-02 | 2019-11-18 | 안상욱 | Sram cell for generating true random number and sram cell arry driving circuit using the same |
| US10880101B2 (en) | 2018-04-11 | 2020-12-29 | Taiwan Semiconductor Manufacturing Co., Ltd. | Method and circuit for de-biasing PUF bits |
| US11055065B2 (en) * | 2018-04-18 | 2021-07-06 | Ememory Technology Inc. | PUF-based true random number generation system |
| US11063755B2 (en) | 2018-05-07 | 2021-07-13 | Cryptography Research, Inc. | Generating a key at a device based on a memory of the device |
| US10754619B2 (en) * | 2018-09-27 | 2020-08-25 | Intel Corporation | Self-calibrated von-neumann extractor |
| US11012425B2 (en) * | 2018-12-28 | 2021-05-18 | Micron Technology, Inc. | Replay protection nonce generation |
| US10402172B1 (en) * | 2019-02-28 | 2019-09-03 | Qrypt, Inc. | Multi-source entropy and randomness aggregation and distribution network |
| US11126404B2 (en) * | 2019-05-20 | 2021-09-21 | Nxp B.V. | Random number generator using multiple entropy sources and a method for generating random numbers |
| US20210026602A1 (en) * | 2019-07-25 | 2021-01-28 | PUFsecurity Corporation | Entropy Generator and Method of Generating Enhanced Entropy Using Truly Random Static Entropy |
| US10990317B2 (en) * | 2019-08-28 | 2021-04-27 | Micron Technology, Inc. | Memory with automatic background precondition upon powerup |
| US11532358B2 (en) | 2019-08-28 | 2022-12-20 | Micron Technology, Inc. | Memory with automatic background precondition upon powerup |
| US11968006B2 (en) * | 2019-09-30 | 2024-04-23 | Nokia Technologies Oy | Physical layer security by pseudo-random layer mapping |
| US11341064B2 (en) * | 2019-12-05 | 2022-05-24 | Realtek Singapore Private Limited | Method of protecting sensitive data in integrated circuit and integrated circuit utilizing same |
| US11604740B2 (en) * | 2020-12-01 | 2023-03-14 | Capital One Services, Llc | Obfuscating cryptographic material in memory |
| US11977856B2 (en) | 2021-01-25 | 2024-05-07 | International Business Machines Corporation | Random number generation from SRAM cells |
| US12493449B2 (en) | 2021-02-18 | 2025-12-09 | PUFsecurity Corporation | Random number generator |
| TWI811642B (en) * | 2021-03-08 | 2023-08-11 | 新唐科技股份有限公司 | Random-number generator circuit and random-number generation method |
| KR20220135750A (en) * | 2021-03-31 | 2022-10-07 | 에스케이하이닉스 주식회사 | Memory and operation method of memory |
| TWI785702B (en) * | 2021-05-07 | 2022-12-01 | 旺宏電子股份有限公司 | Storage device for generating identity code and identity code generating method |
| US11984166B2 (en) | 2021-05-07 | 2024-05-14 | Macronix International Co., Ltd. | Storage device for generating identity code and identity code generating method |
| US12255984B2 (en) | 2021-05-26 | 2025-03-18 | Micron Technology, Inc. | Data invalidation for memory |
| US12308993B2 (en) | 2021-08-24 | 2025-05-20 | Robert Bosch Gmbh | System and method for generating random numbers within a vehicle controller |
Family Cites Families (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6820203B1 (en) * | 1999-04-07 | 2004-11-16 | Sony Corporation | Security unit for use in memory card |
| GB0102840D0 (en) | 2001-02-05 | 2001-03-21 | Cambridge Silicon Radio Ltd | Generating random data |
| JP2002268874A (en) * | 2001-03-07 | 2002-09-20 | Toshiba Corp | Random number seed generation circuit, driver having the same, and SD memory card system |
| US7233965B2 (en) * | 2002-09-30 | 2007-06-19 | Sun Microsystems, Inc. | Continuous random number generation method and apparatus |
| DE10357782B3 (en) * | 2003-12-10 | 2005-05-04 | Infineon Technologies Ag | Random number generator for cryptographic applications e.g. for chip card, has intermediate condition of pseudo-random number generator stored in memory as initializing information |
| JP2006024140A (en) | 2004-07-09 | 2006-01-26 | Sony Corp | Random number generator |
| US7496616B2 (en) * | 2004-11-12 | 2009-02-24 | International Business Machines Corporation | Method, apparatus and system for resistance to side channel attacks on random number generators |
| US7676531B2 (en) * | 2005-12-22 | 2010-03-09 | Sony Computer Entertainment Inc. | Methods and apparatus for random number generation |
| JP2007234001A (en) * | 2006-01-31 | 2007-09-13 | Semiconductor Energy Lab Co Ltd | Semiconductor device |
| KR20070018986A (en) * | 2006-12-07 | 2007-02-14 | 후지쯔 가부시끼가이샤 | Random number generator, generation method, generator evaluation method and random number usage method |
| KR101374427B1 (en) * | 2008-05-23 | 2014-03-17 | 에이저 시스템즈 엘엘시 | Secure random number generator |
| JP2010266417A (en) | 2009-05-18 | 2010-11-25 | Sony Corp | Semiconductor integrated circuit, information processing apparatus, information processing method, and program |
-
2012
- 2012-04-05 WO PCT/EP2012/056277 patent/WO2012136763A2/en not_active Ceased
- 2012-04-05 JP JP2014503151A patent/JP6182132B2/en active Active
- 2012-04-05 US US14/110,009 patent/US9383969B2/en active Active
- 2012-04-05 KR KR1020137029323A patent/KR101972126B1/en active Active
- 2012-04-05 ES ES12718111T patent/ES2530944T3/en active Active
- 2012-04-05 EP EP12718111.3A patent/EP2695052B1/en active Active
Non-Patent Citations (1)
| Title |
|---|
| None |
Cited By (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN104838617A (en) * | 2012-12-11 | 2015-08-12 | 三菱电机株式会社 | Integrated security device and signal processing method used by integrated security device |
| CN104838617B (en) * | 2012-12-11 | 2018-01-02 | 三菱电机株式会社 | Integrate safety device and integrate the signal processing method used in safety device |
| US9449197B2 (en) | 2013-06-13 | 2016-09-20 | Global Foundries Inc. | Pooling entropy to facilitate mobile device-based true random number generation |
| EP2930610A2 (en) | 2014-04-11 | 2015-10-14 | Siemens Aktiengesellschaft | Random number generator and method for generating random numbers |
| DE102014206992A1 (en) | 2014-04-11 | 2015-10-15 | Siemens Aktiengesellschaft | Random number generator and method for generating random numbers |
| US9542157B2 (en) | 2014-04-11 | 2017-01-10 | Siemens Aktiengesellschaft | Random number generator and method for generating random numbers |
| CN106020771A (en) * | 2016-05-31 | 2016-10-12 | 东南大学 | Pseudorandom sequence generator based on PUF |
| CN106020771B (en) * | 2016-05-31 | 2018-07-20 | 东南大学 | A kind of pseudo-random sequence generator based on PUF |
| CN112306457A (en) * | 2020-08-07 | 2021-02-02 | 神州融安科技(北京)有限公司 | Random number generation method and device |
| US20220385485A1 (en) * | 2021-06-01 | 2022-12-01 | Micron Technology, Inc. | Identity theft protection with no password access |
Also Published As
| Publication number | Publication date |
|---|---|
| EP2695052A2 (en) | 2014-02-12 |
| JP2014510354A (en) | 2014-04-24 |
| JP6182132B2 (en) | 2017-08-16 |
| KR101972126B1 (en) | 2019-04-24 |
| US9383969B2 (en) | 2016-07-05 |
| EP2695052B1 (en) | 2014-11-26 |
| WO2012136763A3 (en) | 2013-01-03 |
| US20140040338A1 (en) | 2014-02-06 |
| ES2530944T3 (en) | 2015-03-09 |
| KR20140022869A (en) | 2014-02-25 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP2695052B1 (en) | Random number generating system based on memory start-up noise | |
| JP6692234B2 (en) | System and method for issuing security domain key management using global platform specifications | |
| CN112286493B (en) | Random number generator and method for generating random number output | |
| JP6267207B2 (en) | System for generating an encryption key from memory used as a physical non-clonal function | |
| EP2526505B1 (en) | Device and method for obtaining a cryptographic key | |
| US10341099B2 (en) | Cryptographic key generation using a stored input value and a stored count value | |
| US9798677B2 (en) | Hybrid cryptographic key derivation | |
| US11126404B2 (en) | Random number generator using multiple entropy sources and a method for generating random numbers | |
| US8681976B2 (en) | System and method for device dependent and rate limited key generation | |
| CN106688027A (en) | PUF and address dependent data encryption | |
| CN101473298A (en) | Random number generator system, method for generating random numbers | |
| Van Herrewege et al. | Secure PRNG seeding on commercial off-the-shelf microcontrollers | |
| Kietzmann et al. | Puf for the commons: Enhancing embedded security on the os level | |
| KR20220105495A (en) | Apparatus and method for modular multiplication resistant to side-channel attack | |
| CN117411634A (en) | Methods and circuits for protecting electronic devices from side channel attacks | |
| US11321475B2 (en) | Entropy data based on error correction data | |
| Roy et al. | A novel cryptosystem using cellular automata | |
| US10936757B2 (en) | Registration destination determination device, searchable encryption system, destination determination method, and computer readable medium | |
| TW202147097A (en) | Physical unclonable function based true random number generator and method for generating true random numbers | |
| US20240176897A1 (en) | Unlimited reprovisionable hardware root of trust | |
| Xi | Modeling attack resistant strong physical unclonable functions: design and applications | |
| US20150215129A1 (en) | Data encryption of a storage area | |
| Guajardo et al. | Physical unclonable functions, fpgas, and public key crypto for ip protection | |
| Brooks et al. | Hardware/Software Security Support | |
| JP2018142768A (en) | Electronic information management device, electronic information management system, electronic information management method, and electronic information management program |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 12718111 Country of ref document: EP Kind code of ref document: A2 |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 2012718111 Country of ref document: EP |
|
| ENP | Entry into the national phase |
Ref document number: 2014503151 Country of ref document: JP Kind code of ref document: A |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 14110009 Country of ref document: US |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| ENP | Entry into the national phase |
Ref document number: 20137029323 Country of ref document: KR Kind code of ref document: A |