US20050055391A1 - Random number generator - Google Patents

Random number generator Download PDF

Info

Publication number
US20050055391A1
US20050055391A1 US10/972,150 US97215004A US2005055391A1 US 20050055391 A1 US20050055391 A1 US 20050055391A1 US 97215004 A US97215004 A US 97215004A US 2005055391 A1 US2005055391 A1 US 2005055391A1
Authority
US
United States
Prior art keywords
generating
seed
mixing function
algorithm
random numbers
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.)
Abandoned
Application number
US10/972,150
Inventor
David Carlson
Gregg Bouchard
Anand Varadharajan
Derek Brasili
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cavium LLC
Original Assignee
Cavium Networks LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Cavium Networks LLC filed Critical Cavium Networks LLC
Priority to US10/972,150 priority Critical patent/US20050055391A1/en
Publication of US20050055391A1 publication Critical patent/US20050055391A1/en
Assigned to CAVIUM NETWORKS reassignment CAVIUM NETWORKS ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: BRASILI, DEREK S., VARADHARAJAN, ANAND, CARLSON, DAVID A., BOUCHARD, GREGG A.
Assigned to CAVIUM NETWORKS reassignment CAVIUM NETWORKS CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: CAVEO NETWORKS, INC.
Assigned to CAVIUM NETWORKS, INC., A DELAWARE CORPORATION reassignment CAVIUM NETWORKS, INC., A DELAWARE CORPORATION MERGER (SEE DOCUMENT FOR DETAILS). Assignors: CAVIUM NETWORKS, A CALIFORNIA CORPORATION
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/582Pseudo-random number generators

Definitions

  • the present invention is related to the field of semiconductor circuits.
  • the present invention is related to an apparatus for generating random numbers.
  • Random number generation is critical to cryptographic systems.
  • Symmetric ciphers such as data encryption standard (DES) require a randomly selected encryption key.
  • Public-key algorithms like RSA, Diffie-Hellman, and DSA require randomly generated key pairs.
  • SSL secure sockets layer
  • a random number generator Because of the widespread use of random numbers in cryptography, a random number generator must be robust enough so that even if the design of the random number generator is known, the random number generated by the random number generator cannot be predicted.
  • a random number generator comprises an entropy generator to generate a seed that is then input into a mixing function (e.g., SHA-1, MD5 etc.).
  • a mixing function e.g., SHA-1, MD5 etc.
  • a large number of random number generators actually utilize a deterministic process, i.e., a process whose outcome is predictable, to generate an output from an initial seed. This is true in the case of most software embodiments of random number generators.
  • Such random number generators, (also called pseudo random number generators) can be easily compromised, particularly if the seed of the pseudo random number generator can be predicted.
  • a true random number generator uses a non-deterministic source, such as, thermal or shot noise associated with a resistor, atmospheric noise, nuclear decay, or some such unpredictable natural process to generate a seed.
  • Some random number generators use a natural process, i.e. the thermal or shot noise present when electrons flow through a resistor, to generate a seed.
  • the RNGs of these circuits use analog circuitry that may include at least an operation amplifier and a voltage control oscillator to generate the seed.
  • the use of analog circuits in the design of a RNG makes production of the RNG difficult. For example, due to the high voltage gain needed to amplify the thermal or shot noise, the output of the operation amplifier could become permanently saturated rendering the RNG useless.
  • RNGs use a low frequency clocked circuit to sample the output of a linear feedback shift register (LFSR), wherein the LFSR is driven by a higher frequency free running ring oscillator with a random variation in the frequency to generate random numbers. Due to the use of a low frequency clocked circuit to sample a higher frequency free running oscillator to generate random numbers, a failure of the free running oscillator is difficult to detect (i.e., one needs to monitor the output of the LFSR to determine if a predictable pattern is present). Moreover, RNGs that employ this design usually do not scale well as it is not obvious how to increase the amount of entropy i.e., the random binary bits generated.
  • LFSR linear feedback shift register
  • FIG. 1 illustrates a block diagram of one embodiment of a random number generator.
  • FIG. 2 illustrates one embodiment of an oscillator used in the entropy generator.
  • FIG. 3 illustrates one embodiment of an oscillator comprising a pair of differential amplifiers used in the entropy generator.
  • FIG. 4 illustrates a block diagram implementation of a mixing function or mixing algorithm.
  • FIG. 5 is a flow diagram illustrating the operation of a random number generator according to one embodiment of the invention.
  • a random number generator that comprises an entropy generator and a mixing function.
  • the entropy generator generates random binary bits (entropy bits) that may be used as a random number.
  • the entropy bits output from the entropy generator may be used as a seed in a mixing function to generate a robust random number.
  • the entropy generator described herein may be used with any mixing function, and the mixing function described may be used with any entropy generator.
  • the embodiments described herein are not related or limited to any particular hardware technology. Rather, the embodiments described may be constructed using various technologies (e.g., bi-polar technology, complimentary-metal-oxide-semiconductors (cmos) technology, etc.) in accordance with the teachings described herein. Similarly, it may prove advantageous to construct a specialized apparatus to perform the teachings described herein by way of discrete components, or by way of an integrated circuit that uses one or more integrated circuit die that may be interconnected. Lastly, repeated usage of the phrase “in one embodiment” does not necessarily refer to the same embodiment, although it may.
  • FIG. 1 illustrates a block diagram of one embodiment of a RNG.
  • RNG 100 comprises an entropy generator 101 and a mixing function 152 .
  • Entropy generator 101 comprises a set of one or more oscillators 105 A- 105 N. Each oscillator in the set of oscillators generates a random frequency binary output signal. Thus, if any oscillator in the set of oscillators fails, the integrity of the RNG is not severely compromised.
  • each oscillator in the set of oscillators is coupled to a corresponding sampling device 110 A- 110 N.
  • Each sampling device synchronously samples each oscillator output.
  • Each sampling device is a flip-flop (e.g., a S-R, T, J-K, or D flip-flop) that latches a random bit generated by the corresponding oscillator.
  • the sampling device may be formed using combinational logic gates.
  • the output of each sampling device 110 A- 110 N is coupled to one input (e.g., input A) of a different gate of a set of two-input gates 120 A- 120 M.
  • Each gate in the set of two-input gates is an exclusive OR gate.
  • input A of the set of two-input gates 120 A- 120 M is connected to a sampling device (see gates 120 A, C, and M respectively connected to sampling devices 110 A, B, and N), to the output 140 of LFSR element 130 P to form a feedback tap (e.g., gate 120 B), or may be held low (i.e., a logic 0).
  • LFSR 130 is comprised of a set of shift register elements 130 A- 130 P.
  • Each shift register element may be a flip-flop (e.g., a S-R, T, J-K, or D flip-flop).
  • the input B of the set of gates 120 A- 120 M may be connected to the output of a shift register element (e.g., gates 120 B,C, and M respectively connected to the output of shift register elements 130 A, B, and C), or may be held low (i.e., logic 0 as long as input A of the same gate is not held to a logic 0).
  • the input B of a gate may be connected to the output 140 of LFSR element 130 P while input A of the gate is connected to a sampling device (e.g., gate 120 A).
  • the input B of a gate may be connected to the output 140 of LFSR element 130 P (e.g., gate 120 A) while input A of the gate may be held low (not shown).
  • the output of each of the gates 120 A- 120 M is coupled to the input of a different one of shift register elements 130 A-P (see the output of gates 120 A and C respectively connected to the input of shift register elements 130 A and C).
  • the dashed lines in FIG. 1 represent that one or more other gates and shift register elements may be present (see dashed lines between the gate 120 B and shift register element 130 B, and between the gate 120 M and shift register element 130 P).
  • a polynomial (e.g., polynomial x 128 +x 29 +x 27 +x 2 +1) with few terms is chosen in the design of the LFSR so that few feedback taps are used in the design of entropy generator 101 .
  • the use of fewer feedback taps implies that fewer gates are used in the implementation of the LFSR.
  • the sampling devices are connected to the two-input gates in an arbitrary manner.
  • a RNG with 64 oscillators 105 A- 105 N and ( 128 ) shift register elements 130 A- 130 P is used.
  • N oscillators
  • K bit random number
  • each oscillator generates (J) bits of entropy per clock cycle for (L) clock cycles
  • a fixed frequency clock 170 drives the shift register elements 130 A- 130 P.
  • a second fixed frequency clock 175 drives the sampling devices 110 A- 110 N
  • the same fixed frequency clock 170 may be used to drive sampling devices 110 A- 110 N.
  • the fixed frequency clocks have frequencies that are lower than the nominal frequency of the oscillators.
  • FIG. 2 illustrates one embodiment of an oscillator used in entropy generator 101 .
  • Oscillator 105 A comprises a series of cascaded inverters (e.g., inverters 200 A- 200 N) wherein the input of one inverter is connected to the output of the preceding inverter, and the output from the rightmost inverter 200 N is fed back into the input of the leftmost inverter 200 A.
  • Each oscillator is designed to have a large jitter due to noise in the semiconductor junctions of the inverters. Therefore, physically small transistors are used in the design of the differential amplifiers. Due to the small physical size of the transistors used in the oscillator design, less power is consumed and the amount of jitter at the oscillator output increases.
  • each oscillator 105 A- 105 N uses more inverters and/or different numbers of inverters in different ones of the oscillators 105 A- 105 N (e.g., a different odd number of inverters, or wherein the number of inverters is a prime number).
  • each oscillator is tuned to the same nominal frequency. However, due to the random noise in the circuit the output of each oscillator fluctuates randomly. While in one embodiment each oscillator is tuned to the same nominal frequency, in alternative embodiments the oscillators are tuned to different nominal frequencies.
  • the oscillators are implemented as in FIG. 2 , alternative embodiments could implement one or more of the oscillators using different circuitry (e.g., a tank circuit).
  • FIG. 3 illustrates one embodiment of an oscillator comprising a pair of differential amplifiers used in entropy generator 101 .
  • the oscillator 105 A illustrated in FIG. 3 comprises a pair of differential amplifiers 305 and 310 .
  • Each differential amplifier has an inverting input and a non-inverting input, and an inverting output and a non-inverting output.
  • the inverting output of differential amplifier 305 is connected to the inverting input of differential amplifier 310 .
  • the non-inverting output of differential amplifier 305 is connected to the non-inverting input of differential amplifier 310 .
  • differential amplifier 305 is connected to the non-inverting output of differential amplifier 310
  • non-inverting input of differential amplifier 305 is connected to the inverting output of differential amplifier 310
  • the output for oscillator 105 A is across terminals 315 and 320 of differential amplifier 310 .
  • Each differential amplifier oscillator is designed to have a large jitter caused by the noise in the semiconductor junctions of the inverters. Therefore, physically small transistors are used in the design of the differential amplifiers. Due to the small physical size of the transistors less power is consumed and the amount of jitter at the oscillator output increases.
  • the entropy bits generated by the LFSR may be sequentially clocked by clock 170 into a shift-register buffer (not shown).
  • 128 entropy bits are sequentially clocked from the output 140 of the LFSR into a shift-register buffer to form a random number.
  • the random number stored in the shift register buffer may be used as a seed in a mixing function (described later) to generate a robust random number.
  • the entropy bits stored in the shift-register buffer may be used as a random number by itself without inserting the same as a seed into a mixing function.
  • the output from each shift register element 130 A-P is coupled directly to mixing function 152 via bus 151 .
  • bus 151 eliminates the need for a shift-register buffer and speeds up the data input into the mixing function. In one embodiment, only 4 clock cycles may be used to input the 128 entropy bits into the mixing function.
  • the entropy bits input as a seed into mixing function 152 may be used as a random number by itself without inserting the same as a seed into a mixing function.
  • connection of the sampling devices 110 A-N to different ones of the gates 120 A-M is implementation dependent.
  • FIG. 1 shows the first gate 120 A connected to the first sampling device 110 A
  • the first gate 1 20 A may be connected to a later one of sampling devices 110 B-N.
  • FIG. 1 indicates that there is a different number of gates 120 A-M as compared to sampling devices 110 A-N
  • alternative embodiments may have the same number of sampling devices and gates, and every one of the gates 120 A-M is connected to a different one of the sampling devices 110 A-N.
  • FIG. 1 shows the first gate 120 A connected to the first sampling device 110 A
  • the first gate 1 20 A may be connected to a later one of sampling devices 110 B-N.
  • FIG. 1 indicates that there is a different number of gates 120 A-M as compared to sampling devices 110 A-N
  • alternative embodiments may have the same number of sampling devices and gates, and every one of the gates 120 A-M is connected to a different one of the sampling devices 110 A-N.
  • two or more LFSRs may be cascaded to generate entropy bits that are input into the mixing function via bus 151 .
  • FIG. 1 illustrates a single LFSR connected to bus 151
  • alternative embodiments may have two or more LFSRs connected to bus 151 (e.g., such LFSRs could use the same sampling devices outputs, but support a different polynomial; alternatively, such LFSRs could have their own oscillators and sampling devices; etc.).
  • the output 140 of one LFSR may be used to drive the clock inputs of each shift register element of the next LFSR.
  • the entropy generator 101 comprises predominantly digital circuits and has few analog components making components such as the oscillators 105 A- 105 N easier to design.
  • the entropy generator 101 has no single failure point because multiple oscillators are used in the design.
  • the entropy generator is scalable. If more entropy bits are needed the number of oscillators in the circuit are simply increased.
  • FIG. 4 illustrates a block diagram implementation of a mixing function or mixing algorithm.
  • the entropy bits generated by entropy generator 101 may be inserted into a mixing function or a mixing algorithm, (e.g., the SHA-1 or the MD5 algorithm) to destroy any residual statistical structure of the random number.
  • the mixing function or algorithm may be implemented in hardware, (e.g., by a SSL/IPsec Processor manufactured by Caveo Networks of Cambridge, Mass.) software, or a combination of hardware and software.
  • the mixing function is implemented using a modified SHA-1 algorithm.
  • SHA-1 A detailed specification of the SHA-1 algorithm may be found at the U.S. department of commerce's Federal Information Processing Standards Publication (FIPS) 180-1).
  • FIPS Federal Information Processing Standards Publication
  • the 128 entropy bits obtained from entropy generator 101 are segmented (e.g., into 4 segments of 32 bits each), and each segment is duplicated one or more times, concatenated, and padded as described in the SHA-1 specification to form a 512-bit input that is the seed 405 for function logic 400 that implements the SHA-1 algorithm.
  • the 160-bit digest (i.e., the hash result 153) that is obtained represents a robust random number. While in one embodiment, the entire 160-bit hash result is used as a robust random number, in alternate embodiments a portion of the hash result 153 (e.g., 64 bits) may be used as a robust random number.
  • the SHA-1 algorithm specification Prior to obtaining the robust random number 153 , the SHA-1 algorithm specification (see FIPS publication 180-1) requires that the buffer containing particular words (i.e., the ⁇ H i ⁇ words) be initialized with a particular set of initialization words. After processing the 512-bit number through the SHA-1 algorithm, the buffer that originally contained the initialized ⁇ H i ⁇ words, now contain the robust random number 153 . Thus, according to the SHA-1 specification, for each new robust random number 153 generated, the ⁇ H i ⁇ words must be initialized.
  • the buffer that originally contained the ⁇ H i ⁇ words contain the robust random number after processing the SHA-1 algorithm
  • the ⁇ H i ⁇ words are not initialized as required by the SHA-1 specification, but rather, the contents of the buffer that contain the robust random number 153 are left undisturbed from the previous calculation.
  • the ⁇ H i ⁇ words are initialized, at T 2 the first robust random number is obtained, and from T 3 onwards, for subsequent robust random number calculations, the ⁇ H i ⁇ are not initialized.
  • the buffer containing the ⁇ H i ⁇ words are not initialized with the particular set of initialization words required by the SHA-1 specification, but rather, the buffer containing the ⁇ H i ⁇ words is initialized with a randomly selected set of initialization words (e.g., with the entropy bits generated by entropy generator 101 ).
  • FIG. 5 is a flow diagram illustrating the operation of a random number generator according to one embodiment of the invention.
  • a plurality of oscillators with high jitter generate binary bits in a random manner.
  • the bits generated by the plurality of oscillators with high jitter are sampled (i.e., latched by sampling devices).
  • the latched random bits are input into a LFSR (i.e., by a fixed frequency clock).
  • the output from each shift register element in the LFSR may be used as a random number.
  • the output from the LFSR is input (e.g., via bus 151 ) into a mixing function or algorithm, (e.g., a mixing function that implements the SHA-1 algorithm) to obtain a robust random number.
  • a mixing function or algorithm e.g., a mixing function that implements the SHA-1 algorithm

Abstract

A random number generator comprising an entropy generator and a mixing function. The mixing function to read a seed from the entropy generator, to modify the seed, to insert the modified seed into a mixing function, to initialize a set of input variables used in the mixing function to generate a robust random number, and to generate subsequent robust random numbers using the mixing function without re-initializing any of the set of input variables.

Description

    CROSS-REFERENCE TO RELATED APPLICATIONS
  • This application is divisional of application Ser. No. 09/938,166, filed on Aug. 23, 2001.
  • BACKGROUND
  • 1. Field of the Invention
  • The present invention is related to the field of semiconductor circuits. In particular, the present invention is related to an apparatus for generating random numbers.
  • 2. Description of the Related Art
  • Random number generation is critical to cryptographic systems. Symmetric ciphers such as data encryption standard (DES) require a randomly selected encryption key. Public-key algorithms like RSA, Diffie-Hellman, and DSA require randomly generated key pairs. Furthermore, the secure sockets layer (SSL) and other cryptographic protocols use random challenges in the authentication process to foil attacks.
  • Because of the widespread use of random numbers in cryptography, a random number generator must be robust enough so that even if the design of the random number generator is known, the random number generated by the random number generator cannot be predicted. Typically, a random number generator comprises an entropy generator to generate a seed that is then input into a mixing function (e.g., SHA-1, MD5 etc.). However, a large number of random number generators, actually utilize a deterministic process, i.e., a process whose outcome is predictable, to generate an output from an initial seed. This is true in the case of most software embodiments of random number generators. Such random number generators, (also called pseudo random number generators) can be easily compromised, particularly if the seed of the pseudo random number generator can be predicted.
  • Therefore, a seed generated by a true random number generator is essential for the proper functioning of a pseudo random number generator. A true random number generator (RNG) uses a non-deterministic source, such as, thermal or shot noise associated with a resistor, atmospheric noise, nuclear decay, or some such unpredictable natural process to generate a seed. Some random number generators use a natural process, i.e. the thermal or shot noise present when electrons flow through a resistor, to generate a seed. However, the RNGs of these circuits use analog circuitry that may include at least an operation amplifier and a voltage control oscillator to generate the seed. The use of analog circuits in the design of a RNG makes production of the RNG difficult. For example, due to the high voltage gain needed to amplify the thermal or shot noise, the output of the operation amplifier could become permanently saturated rendering the RNG useless.
  • Other RNGs use a low frequency clocked circuit to sample the output of a linear feedback shift register (LFSR), wherein the LFSR is driven by a higher frequency free running ring oscillator with a random variation in the frequency to generate random numbers. Due to the use of a low frequency clocked circuit to sample a higher frequency free running oscillator to generate random numbers, a failure of the free running oscillator is difficult to detect (i.e., one needs to monitor the output of the LFSR to determine if a predictable pattern is present). Moreover, RNGs that employ this design usually do not scale well as it is not obvious how to increase the amount of entropy i.e., the random binary bits generated.
  • BRIEF SUMMARY OF THE DRAWINGS
  • Examples of the present invention are illustrated in the accompanying drawings. The accompanying drawings, however, do not limit the scope of the present invention. Similar references in the drawings indicate similar elements.
  • FIG. 1 illustrates a block diagram of one embodiment of a random number generator.
  • FIG. 2 illustrates one embodiment of an oscillator used in the entropy generator.
  • FIG. 3 illustrates one embodiment of an oscillator comprising a pair of differential amplifiers used in the entropy generator.
  • FIG. 4 illustrates a block diagram implementation of a mixing function or mixing algorithm.
  • FIG. 5 is a flow diagram illustrating the operation of a random number generator according to one embodiment of the invention.
  • DETAILED DESCRIPTION
  • Described is a random number generator that comprises an entropy generator and a mixing function. In one embodiment, the entropy generator generates random binary bits (entropy bits) that may be used as a random number. In alternate embodiments, the entropy bits output from the entropy generator may be used as a seed in a mixing function to generate a robust random number. The entropy generator described herein may be used with any mixing function, and the mixing function described may be used with any entropy generator.
  • In the following description numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, to one of ordinary skill in the art that the present invention may be practiced without these specific details. In other instances, well-known architectures, steps, and techniques have not been shown to avoid obscuring the present invention.
  • In addition, it should be understood that the embodiments described herein are not related or limited to any particular hardware technology. Rather, the embodiments described may be constructed using various technologies (e.g., bi-polar technology, complimentary-metal-oxide-semiconductors (cmos) technology, etc.) in accordance with the teachings described herein. Similarly, it may prove advantageous to construct a specialized apparatus to perform the teachings described herein by way of discrete components, or by way of an integrated circuit that uses one or more integrated circuit die that may be interconnected. Lastly, repeated usage of the phrase “in one embodiment” does not necessarily refer to the same embodiment, although it may.
  • FIG. 1 illustrates a block diagram of one embodiment of a RNG. As illustrated in FIG. 1, RNG 100 comprises an entropy generator 101 and a mixing function 152. Entropy generator 101 comprises a set of one or more oscillators 105A-105N. Each oscillator in the set of oscillators generates a random frequency binary output signal. Thus, if any oscillator in the set of oscillators fails, the integrity of the RNG is not severely compromised.
  • In one embodiment, the output of each oscillator in the set of oscillators is coupled to a corresponding sampling device 110A-110N. Each sampling device synchronously samples each oscillator output. Each sampling device is a flip-flop (e.g., a S-R, T, J-K, or D flip-flop) that latches a random bit generated by the corresponding oscillator. In alternate embodiments, the sampling device may be formed using combinational logic gates. The output of each sampling device 110A-110N is coupled to one input (e.g., input A) of a different gate of a set of two-input gates 120A-120M. Each gate in the set of two-input gates is an exclusive OR gate. Thus, input A of the set of two-input gates 120A-120M is connected to a sampling device (see gates 120 A, C, and M respectively connected to sampling devices 110A, B, and N), to the output 140 of LFSR element 130P to form a feedback tap (e.g., gate 120B), or may be held low (i.e., a logic 0).
  • LFSR 130 is comprised of a set of shift register elements 130A-130P. Each shift register element may be a flip-flop (e.g., a S-R, T, J-K, or D flip-flop). The input B of the set of gates 120A-120M may be connected to the output of a shift register element (e.g., gates 120B,C, and M respectively connected to the output of shift register elements 130A, B, and C), or may be held low (i.e., logic 0 as long as input A of the same gate is not held to a logic 0). In one embodiment, the input B of a gate may be connected to the output 140 of LFSR element 130P while input A of the gate is connected to a sampling device (e.g., gate 120A). Alternately, the input B of a gate may be connected to the output 140 of LFSR element 130P (e.g., gate 120A) while input A of the gate may be held low (not shown). The output of each of the gates 120A-120M is coupled to the input of a different one of shift register elements 130A-P (see the output of gates 120A and C respectively connected to the input of shift register elements 130A and C). The dashed lines in FIG. 1 represent that one or more other gates and shift register elements may be present (see dashed lines between the gate 120B and shift register element 130B, and between the gate 120M and shift register element 130P).
  • In one embodiment, a polynomial (e.g., polynomial x128+x29+x27+x2+1) with few terms is chosen in the design of the LFSR so that few feedback taps are used in the design of entropy generator 101. The use of fewer feedback taps implies that fewer gates are used in the implementation of the LFSR. In one embodiment, after the output 140 of shift register element 130P is connected to the selected two-input gates to implement the polynomial, the sampling devices are connected to the two-input gates in an arbitrary manner.
  • In one embodiment, in order to generate a 64 bit random number, a RNG with 64 oscillators 105A-105N and (128) shift register elements 130A-130 P is used. However, one skilled in the art will appreciate that if (N) oscillators are used to generate a (K) bit random number wherein each oscillator generates (J) bits of entropy per clock cycle for (L) clock cycles, then N×J×L≧K.
  • In the LFSR 130 of FIG. 1, a fixed frequency clock 170 drives the shift register elements 130A-130P. Although, a second fixed frequency clock 175 drives the sampling devices 110A-110N, the same fixed frequency clock 170 may be used to drive sampling devices 110A-110N. In one embodiment, the fixed frequency clocks have frequencies that are lower than the nominal frequency of the oscillators.
  • FIG. 2 illustrates one embodiment of an oscillator used in entropy generator 101. Oscillator 105A comprises a series of cascaded inverters (e.g., inverters 200A-200N) wherein the input of one inverter is connected to the output of the preceding inverter, and the output from the rightmost inverter 200N is fed back into the input of the leftmost inverter 200A. Each oscillator is designed to have a large jitter due to noise in the semiconductor junctions of the inverters. Therefore, physically small transistors are used in the design of the differential amplifiers. Due to the small physical size of the transistors used in the oscillator design, less power is consumed and the amount of jitter at the oscillator output increases.
  • While in one embodiment three inverters are used in the design of each oscillator 105A-105N, alternative embodiments use more inverters and/or different numbers of inverters in different ones of the oscillators 105A-105N (e.g., a different odd number of inverters, or wherein the number of inverters is a prime number). In one embodiment, each oscillator is tuned to the same nominal frequency. However, due to the random noise in the circuit the output of each oscillator fluctuates randomly. While in one embodiment each oscillator is tuned to the same nominal frequency, in alternative embodiments the oscillators are tuned to different nominal frequencies. In addition, while one embodiment is illustrated where the oscillators are implemented as in FIG. 2, alternative embodiments could implement one or more of the oscillators using different circuitry (e.g., a tank circuit).
  • FIG. 3 illustrates one embodiment of an oscillator comprising a pair of differential amplifiers used in entropy generator 101. The oscillator 105A illustrated in FIG. 3 comprises a pair of differential amplifiers 305 and 310. Each differential amplifier has an inverting input and a non-inverting input, and an inverting output and a non-inverting output. The inverting output of differential amplifier 305 is connected to the inverting input of differential amplifier 310. The non-inverting output of differential amplifier 305 is connected to the non-inverting input of differential amplifier 310. However, the inverting input of differential amplifier 305 is connected to the non-inverting output of differential amplifier 310, and the non-inverting input of differential amplifier 305 is connected to the inverting output of differential amplifier 310. In one embodiment, the output for oscillator 105A is across terminals 315 and 320 of differential amplifier 310.
  • Each differential amplifier oscillator is designed to have a large jitter caused by the noise in the semiconductor junctions of the inverters. Therefore, physically small transistors are used in the design of the differential amplifiers. Due to the small physical size of the transistors less power is consumed and the amount of jitter at the oscillator output increases.
  • Returning to FIG. 1, the entropy bits generated by the LFSR may be sequentially clocked by clock 170 into a shift-register buffer (not shown). In one embodiment, 128 entropy bits are sequentially clocked from the output 140 of the LFSR into a shift-register buffer to form a random number. The random number stored in the shift register buffer may be used as a seed in a mixing function (described later) to generate a robust random number. Alternately, the entropy bits stored in the shift-register buffer may be used as a random number by itself without inserting the same as a seed into a mixing function.
  • In one embodiment, the output from each shift register element 130A-P is coupled directly to mixing function 152 via bus 151. The use of bus 151 eliminates the need for a shift-register buffer and speeds up the data input into the mixing function. In one embodiment, only 4 clock cycles may be used to input the 128 entropy bits into the mixing function. The entropy bits input as a seed into mixing function 152 may be used as a random number by itself without inserting the same as a seed into a mixing function.
  • Thus, it should be understood that the connection of the sampling devices 110A-N to different ones of the gates 120A-M is implementation dependent. For example, while FIG. 1 shows the first gate 120A connected to the first sampling device 110A, in alternative embodiments the first gate 1 20A may be connected to a later one of sampling devices 110B-N. As another example, while FIG. 1 indicates that there is a different number of gates 120A-M as compared to sampling devices 110A-N, alternative embodiments may have the same number of sampling devices and gates, and every one of the gates 120A-M is connected to a different one of the sampling devices 110A-N. As another example, while FIG. 1 indicates that there is a different number of gates 120A-M as compared to shift register elements 130A-P (there is not a gate between every shift register element, but the output of one shift register element may be directly connected to the input of the next shift register element in the LFSR), alternative embodiments may have a gate between every shift register element.
  • In alternate embodiments, two or more LFSRs may be cascaded to generate entropy bits that are input into the mixing function via bus 151. Thus, while FIG. 1 illustrates a single LFSR connected to bus 151, alternative embodiments may have two or more LFSRs connected to bus 151 (e.g., such LFSRs could use the same sampling devices outputs, but support a different polynomial; alternatively, such LFSRs could have their own oscillators and sampling devices; etc.). In the cascaded embodiment, the output 140 of one LFSR may be used to drive the clock inputs of each shift register element of the next LFSR.
  • As can be seen, the entropy generator 101 comprises predominantly digital circuits and has few analog components making components such as the oscillators 105A-105N easier to design. The entropy generator 101 has no single failure point because multiple oscillators are used in the design. Moreover, the entropy generator is scalable. If more entropy bits are needed the number of oscillators in the circuit are simply increased.
  • FIG. 4 illustrates a block diagram implementation of a mixing function or mixing algorithm. The entropy bits generated by entropy generator 101 may be inserted into a mixing function or a mixing algorithm, (e.g., the SHA-1 or the MD5 algorithm) to destroy any residual statistical structure of the random number. The mixing function or algorithm may be implemented in hardware, (e.g., by a SSL/IPsec Processor manufactured by Caveo Networks of Cambridge, Mass.) software, or a combination of hardware and software.
  • In one embodiment, the mixing function is implemented using a modified SHA-1 algorithm. (A detailed specification of the SHA-1 algorithm may be found at the U.S. department of commerce's Federal Information Processing Standards Publication (FIPS) 180-1). In 405, the 128 entropy bits obtained from entropy generator 101 are segmented (e.g., into 4 segments of 32 bits each), and each segment is duplicated one or more times, concatenated, and padded as described in the SHA-1 specification to form a 512-bit input that is the seed 405 for function logic 400 that implements the SHA-1 algorithm.
  • After processing the 512-bit number through the SHA-1 algorithm, (e.g., using function logic 400) the 160-bit digest (i.e., the hash result 153) that is obtained represents a robust random number. While in one embodiment, the entire 160-bit hash result is used as a robust random number, in alternate embodiments a portion of the hash result 153 (e.g., 64 bits) may be used as a robust random number.
  • Prior to obtaining the robust random number 153, the SHA-1 algorithm specification (see FIPS publication 180-1) requires that the buffer containing particular words (i.e., the {Hi} words) be initialized with a particular set of initialization words. After processing the 512-bit number through the SHA-1 algorithm, the buffer that originally contained the initialized {Hi} words, now contain the robust random number 153. Thus, according to the SHA-1 specification, for each new robust random number 153 generated, the {Hi} words must be initialized.
  • In one embodiment, since the buffer that originally contained the {Hi} words contain the robust random number after processing the SHA-1 algorithm, for subsequent robust random number calculations the {Hi} words are not initialized as required by the SHA-1 specification, but rather, the contents of the buffer that contain the robust random number 153 are left undisturbed from the previous calculation. Thus as illustrated in FIG. 4, at T1 the {Hi} words are initialized, at T2 the first robust random number is obtained, and from T3 onwards, for subsequent robust random number calculations, the {Hi} are not initialized. Moreover, even for the initial robust random number calculation (i.e., at T1) the buffer containing the {Hi} words are not initialized with the particular set of initialization words required by the SHA-1 specification, but rather, the buffer containing the {Hi} words is initialized with a randomly selected set of initialization words (e.g., with the entropy bits generated by entropy generator 101).
  • For subsequent robust random number calculations, all or part of the previous robust random number obtained (i.e., the hash result 153) is used to initialize the {Hi} words when the next robust random number is generated. The new entropy bits from bus 151 are duplicated, concatenated and padded as described above to form a 512-bit number that is input into the SHA-1 algorithm. By not initializing the {Hi} words for each robust random number calculation, the design of the hardware circuit that implements the mixing function is simplified, resulting in a saving in processing time. Furthermore, a feedback line that would otherwise feed back the last random number generated by the mixing function, to form at least part of the next 512-bit input for the next robust random number calculation is eliminated.
  • FIG. 5 is a flow diagram illustrating the operation of a random number generator according to one embodiment of the invention. As illustrated in FIG. 5, at 505, a plurality of oscillators with high jitter generate binary bits in a random manner. At 510, the bits generated by the plurality of oscillators with high jitter are sampled (i.e., latched by sampling devices). At 515, the latched random bits are input into a LFSR (i.e., by a fixed frequency clock). In one embodiment, the output from each shift register element in the LFSR may be used as a random number. At 520, the output from the LFSR is input (e.g., via bus 151) into a mixing function or algorithm, (e.g., a mixing function that implements the SHA-1 algorithm) to obtain a robust random number.
  • Thus a method and apparatus have been disclosed for generating a random number. While there has been illustrated and described what are presently considered to be example embodiments of the present invention, it will be understood by those skilled in the art that various other modifications may be made, and equivalents may be substituted, without departing from the true scope of the invention. Additionally, many modifications may be made to adapt a particular situation to the teachings of the present invention without departing from the central inventive concept described herein. Therefore, it is intended that the present invention not be limited to the particular embodiments disclosed, but that the invention include all embodiments falling within the scope of the appended claims.

Claims (27)

1. A method for generating robust random numbers using a mixing function comprising:
reading a seed from an entropy generator;
modifying the seed;
inserting the modified seed into the mixing function;
initializing a set of input variable used in the mixing function;
generating a robust random number using the mixing function; and
generating subsequent robust random numbers using the mixing function without re-initializing any of the set of input variables.
2. A method as in claim 1, wherein said modifying the seed comprises:
duplicating a portion of the seed at least once;
concatenating the duplicated portions; and
padding the concatenated duplicated portions with a binary string to obtain a 512-bit modified seed.
3. A method as in claim 1, wherein the mixing function is the SHA-1 algorithm.
4. A method as in claim 3, wherein the initializing the set of input variables comprises setting the set of input variables to values other than those specified by the SHA-1 algorithm.
5. A method as in claim 3, wherein the initializing the set of input variables comprises providing one or more random initialization words for the values.
6. A method as in claim 1, wherein the initializing the set of input variables comprises setting the set of input variables with one or more random initialization words.
7. A method as in claim 1, wherein the mixing function is the MD5 algorithm.
8. A method as in claim 1, wherein the seed comprises 128 bits.
9. A method as in claim 1, wherein the generating subsequent robust random numbers comprises basing the set of input variables used in the mixing function on a previously generated robust random number.
10. A method as in claim 1, wherein the mixing function destroys residual statistical structure of the seed.
11. A method as in claim 1, wherein the generating subsequent random numbers comprises repeating the reading, modifying, inserting, and the generating a robust random number.
12. A method as in claim 1, wherein the generating a robust random number comprises generating a plurality of robust random numbers based on a bit digest output from the mixing function.
13. An apparatus comprising:
a processor to read a seed from an entropy generator, to modify the seed, to insert the modified seed into a mixing function, to initialize a set of input variables used in the mixing function, to generate a robust random number using the mixing function, and to generate subsequent robust random numbers using the mixing function without re-initializing any of the set of input variables.
14. A apparatus as in claim 13, wherein to modify the seed comprises:
the processor to duplicate a portion of the seed at least once;
the processor to concatenate the duplicated portions; and
the processor to pad the concatenated duplicated portions with a binary string to obtain a 512-bit modified seed.
15. The apparatus as in claim 13 wherein the mixing function is the SHA-1 algorithm.
16. The apparatus as in claim 13, wherein the seed comprises 128 bits.
17. A method as in claim 13, wherein to generate subsequent robust random numbers comprises basing the set of input variables used in the mixing function on a previously generated robust random number.
18. A method for generating robust random numbers using a SHA-1 algorithm, the method comprising:
generating entropy bits;
generating a seed for the SHA-1 algorithm based at least in part on the entropy bits;
initializing the SHA-1 algorithm with other than the particular set of the initialization words specified for the SHA-1 algorithm;
destroying residual statistical structure of the seed with the SHA-1 algorithm to generate a bit digest; and
generating one or more robust random numbers based on the bit digest.
19. A method as in claim 18, repeating the generating entropy bits, generating the seed, destroying, and generating one or more robust random numbers without reinitializing the SHA-1 algorithm.
20. A method as in claim 19, wherein the repeating includes basing the set of input variables used in the mixing function on a previously generated robust random number.
21. A method as in claim 18, wherein the initializing comprises initializing the SHA-1 algorithm with a random initialization word.
22. A method for generating robust random numbers using a mixing function comprising:
generating entropy bits;
initializing the mixing function with a random initialization word;
generating a seed for the mixing function at least in part from the entropy bits;
destroying residual statistical structure of the seed with the mixing function to generate a bit digest, and
generating one or more robust random numbers based on the bit digest.
23. A method as in claim 22, further comprising repeating the generating entropy bits, generating the seed, destroying, and generating one or more robust random numbers without repeating the initializing.
24. A method as in claim 22, wherein the mixing function is the SHA-1 algorithm.
25. A method for generating random numbers using a mixing function having a set of input variables for which is specified initialization words, the method comprising:
generating entropy bits;
generating a seed based at least in part from the entropy bits;
applying the mixing function to the seed to generate one or more robust random numbers;
repeating the generating entropy bits, generating the seed, and generating one or more random numbers using as the set of input variables values based on the result of said applying the mixing function, rather than the specified initialization words.
26. A method of claim 25, further comprising initializing the set of input variables with random initialization words.
27. A method as in claim 25, wherein the mixing function is the SHA-1 algorithm.
US10/972,150 2001-08-23 2004-10-22 Random number generator Abandoned US20050055391A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US10/972,150 US20050055391A1 (en) 2001-08-23 2004-10-22 Random number generator

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/938,166 US6954770B1 (en) 2001-08-23 2001-08-23 Random number generator
US10/972,150 US20050055391A1 (en) 2001-08-23 2004-10-22 Random number generator

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US09/938,166 Division US6954770B1 (en) 2001-08-23 2001-08-23 Random number generator

Publications (1)

Publication Number Publication Date
US20050055391A1 true US20050055391A1 (en) 2005-03-10

Family

ID=34227130

Family Applications (2)

Application Number Title Priority Date Filing Date
US09/938,166 Expired - Lifetime US6954770B1 (en) 2001-08-23 2001-08-23 Random number generator
US10/972,150 Abandoned US20050055391A1 (en) 2001-08-23 2004-10-22 Random number generator

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US09/938,166 Expired - Lifetime US6954770B1 (en) 2001-08-23 2001-08-23 Random number generator

Country Status (1)

Country Link
US (2) US6954770B1 (en)

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040039762A1 (en) * 2002-08-21 2004-02-26 Koninklijke Philips Electronics N.V. Entropy estimation and decimation for improving the randomness of true random number generation
US20050135608A1 (en) * 2003-12-22 2005-06-23 Wachovia Corporation Platform independent randomness accumulator for network applications
US20060126842A1 (en) * 2004-12-01 2006-06-15 Pitney Bowes Incorporated Method and system for generation of cryptographic keys and the like
US20070043798A1 (en) * 2005-08-16 2007-02-22 Boerstler David W Random number generator
US20070140485A1 (en) * 2004-02-26 2007-06-21 Giovanni Ghigo Method and circuit for generating random numbers, and computer program product therefor
WO2008141819A2 (en) * 2007-05-22 2008-11-27 Atmel Germany Gmbh Apparatus and method for generating a random number
US20090160610A1 (en) * 2007-12-19 2009-06-25 Doddamane Krishna S Pseudorandom number generator
US20120123693A1 (en) * 2005-07-22 2012-05-17 Psigenics Corporation Device and method for responding to influences of mind
US20120281827A1 (en) * 2003-08-15 2012-11-08 Broadcom Corporation Pseudo-random Number Generation Based on Periodic Sampling of One or More Linear Feedback Shift Registers
US20140237011A1 (en) * 2013-02-19 2014-08-21 Raytheon Company Random number generator for generating truly random numbers
US20180275963A1 (en) * 2016-11-22 2018-09-27 Korea Internet & Security Agency Random ip generation method and apparatus
US10235138B2 (en) 2016-09-30 2019-03-19 International Business Machines Corporation Instruction to provide true random numbers
EP3460651A1 (en) * 2017-09-25 2019-03-27 The Boeing Company Systems and methods for facilitating truly random bit generation
EP3503463A1 (en) * 2017-12-22 2019-06-26 The Boeing Company Systems and methods implementing countermeasures to phase tracking attacks on ring oscillator based entropy sources
US20210026603A1 (en) * 2019-07-25 2021-01-28 PUFsecurity Corporation Random Number Generator and Method of Generating Output Random Number
US10924263B2 (en) 2017-09-25 2021-02-16 The Boeing Company Systems and methods for facilitating iterative key generation and data encryption and decryption
US10965456B2 (en) 2017-09-25 2021-03-30 The Boeing Company Systems and methods for facilitating data encryption and decryption and erasing of associated information
WO2024035427A1 (en) * 2022-08-08 2024-02-15 Siemens Industry Software Inc. Ring-generator-based true random number generator for hardware root of trust

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7587439B1 (en) * 2001-08-31 2009-09-08 Intergrated Device Technology, Inc. Method and apparatus for generating a random bit stream in true random number generator fashion
EP1420542A1 (en) * 2002-11-12 2004-05-19 STMicroelectronics S.r.l. Method and apparatus of generating a chaos-based pseudo-random sequence
US20060294312A1 (en) * 2004-05-27 2006-12-28 Silverbrook Research Pty Ltd Generation sequences
US7757086B2 (en) * 2004-05-27 2010-07-13 Silverbrook Research Pty Ltd Key transportation
US7328956B2 (en) * 2004-05-27 2008-02-12 Silverbrook Research Pty Ltd Printer comprising a printhead and at least two printer controllers connected to a common input of the printhead
US7549718B2 (en) * 2004-05-27 2009-06-23 Silverbrook Research Pty Ltd Printhead module having operation controllable on basis of thermal sensors
US7484831B2 (en) * 2004-05-27 2009-02-03 Silverbrook Research Pty Ltd Printhead module having horizontally grouped firing order
US7735944B2 (en) 2004-05-27 2010-06-15 Silverbrook Research Pty Ltd Printer comprising two printhead modules and at least two printer controllers
US7427117B2 (en) * 2004-05-27 2008-09-23 Silverbrook Research Pty Ltd Method of expelling ink from nozzles in groups, alternately, starting at outside nozzles of each group
US7904488B2 (en) 2004-07-21 2011-03-08 Rockwell Automation Technologies, Inc. Time stamp methods for unified plant model
US8756521B1 (en) 2004-09-30 2014-06-17 Rockwell Automation Technologies, Inc. Systems and methods for automatic visualization configuration
US7634522B1 (en) * 2004-11-30 2009-12-15 Novell, Inc. Random number generation
US7590868B2 (en) * 2005-02-09 2009-09-15 Hewlett-Packard Development Company, L.P. Method and apparatus for managing encrypted data on a computer readable medium
US7676281B2 (en) 2005-05-13 2010-03-09 Rockwell Automation Technologies, Inc. Distributed database in an industrial automation environment
US8799800B2 (en) 2005-05-13 2014-08-05 Rockwell Automation Technologies, Inc. Automatic user interface generation
US7809683B2 (en) 2005-05-13 2010-10-05 Rockwell Automation Technologies, Inc. Library that includes modifiable industrial automation objects
US7650405B2 (en) 2005-05-13 2010-01-19 Rockwell Automation Technologies, Inc. Tracking and tracing across process boundaries in an industrial automation environment
US7672737B2 (en) 2005-05-13 2010-03-02 Rockwell Automation Technologies, Inc. Hierarchically structured data model for utilization in industrial automation environments
US7881812B2 (en) 2005-09-29 2011-02-01 Rockwell Automation Technologies, Inc. Editing and configuring device
US7548789B2 (en) 2005-09-29 2009-06-16 Rockwell Automation Technologies, Inc. Editing lifecycle and deployment of objects in an industrial automation environment
US7660638B2 (en) 2005-09-30 2010-02-09 Rockwell Automation Technologies, Inc. Business process execution engine
US8484250B2 (en) 2005-09-30 2013-07-09 Rockwell Automation Technologies, Inc. Data federation with industrial control systems
US7734590B2 (en) 2005-09-30 2010-06-08 Rockwell Automation Technologies, Inc. Incremental association of metadata to production data
US8275680B2 (en) 2005-09-30 2012-09-25 Rockwell Automation Technologies, Inc. Enabling transactional mechanisms in an automated controller system
US7801628B2 (en) 2005-09-30 2010-09-21 Rockwell Automation Technologies, Inc. Industrial operator interfaces interacting with higher-level business workflow
FR2899352B1 (en) * 2006-03-29 2008-06-20 Eads Secure Networks Soc Par A RANDOM NUMBER GENERATOR
US9026638B2 (en) * 2007-02-05 2015-05-05 Novell, Inc. Stealth entropy collection
US7962539B2 (en) * 2007-04-30 2011-06-14 International Business Machines Corporation System, method and device of generating a random value
US8099449B1 (en) 2007-10-04 2012-01-17 Xilinx, Inc. Method of and circuit for generating a random number using a multiplier oscillation
US8131789B2 (en) * 2008-03-28 2012-03-06 Atmel Corporation True random number generator
US9335971B1 (en) * 2009-02-27 2016-05-10 Calamp Corp. High entropy random bit source
US20100281088A1 (en) * 2009-04-29 2010-11-04 Psigenics Corporation Integrated true random number generator
US8161329B2 (en) * 2009-11-11 2012-04-17 International Business Machines Corporation Generating random sequences based on stochastic generative model having multiple random variates
US20110169580A1 (en) * 2010-01-08 2011-07-14 James Dodrill Inverting gate with maximized thermal noise in random number genertion
US8984533B2 (en) 2010-04-15 2015-03-17 Rockwell Automation Technologies, Inc. Systems and methods for conducting communications among components of multidomain industrial automation system
US8484401B2 (en) 2010-04-15 2013-07-09 Rockwell Automation Technologies, Inc. Systems and methods for conducting communications among components of multidomain industrial automation system
US9392072B2 (en) 2010-04-15 2016-07-12 Rockwell Automation Technologies, Inc. Systems and methods for conducting communications among components of multidomain industrial automation system
US8971536B2 (en) * 2011-07-21 2015-03-03 Vixs Systems, Inc. Balanced entropy random number generator
US8832167B2 (en) * 2011-07-21 2014-09-09 Vixs Systems, Inc. Random number generator
US9129060B2 (en) 2011-10-13 2015-09-08 Cavium, Inc. QoS based dynamic execution engine selection
US9128769B2 (en) 2011-10-13 2015-09-08 Cavium, Inc. Processor with dedicated virtual functions and dynamic assignment of functional resources
KR101987141B1 (en) * 2013-03-04 2019-10-01 삼성전자주식회사 Random number generator
DE102013204274A1 (en) * 2013-03-12 2014-09-18 Robert Bosch Gmbh Method for detecting a correlation
US9454653B1 (en) 2014-05-14 2016-09-27 Brian Penny Technologies for enhancing computer security
US10057250B2 (en) 2013-05-14 2018-08-21 Kara Partners Llc Technologies for enhancing computer security
US10594687B2 (en) 2013-05-14 2020-03-17 Kara Partners Llc Technologies for enhancing computer security
WO2014200326A1 (en) 2013-06-11 2014-12-18 Mimos Berhad Device and method for outputting random data
US10721172B2 (en) 2018-07-06 2020-07-21 Marvell Asia Pte, Ltd. Limiting backpressure with bad actors
US11907684B2 (en) 2021-02-16 2024-02-20 Cassy Holdings Llc High clock-efficiency random number generation system and method

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4905176A (en) * 1988-10-28 1990-02-27 International Business Machines Corporation Random number generator circuit
US5005200A (en) * 1988-02-12 1991-04-02 Fischer Addison M Public key/signature cryptosystem with enhanced digital signature certification
US5706218A (en) * 1996-05-15 1998-01-06 Intel Corporation Random number generator
US5778069A (en) * 1996-04-10 1998-07-07 Microsoft Corporation Non-biased pseudo random number generator
US6061819A (en) * 1997-12-29 2000-05-09 Hewlett-Packard Company Generation of reproducible random initial states in RTL simulators
US6253223B1 (en) * 1999-06-08 2001-06-26 General Instrument Corporation Robust random number generator

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6240432B1 (en) * 1998-12-28 2001-05-29 Vanguard International Semiconductor Corporation Enhanced random number generator
US6480072B1 (en) * 2000-04-18 2002-11-12 Advanced Micro Devices, Inc. Method and apparatus for generating random numbers

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5005200A (en) * 1988-02-12 1991-04-02 Fischer Addison M Public key/signature cryptosystem with enhanced digital signature certification
US4905176A (en) * 1988-10-28 1990-02-27 International Business Machines Corporation Random number generator circuit
US5778069A (en) * 1996-04-10 1998-07-07 Microsoft Corporation Non-biased pseudo random number generator
US5706218A (en) * 1996-05-15 1998-01-06 Intel Corporation Random number generator
US6061702A (en) * 1996-05-15 2000-05-09 Intel Corporation Random number generator
US6061819A (en) * 1997-12-29 2000-05-09 Hewlett-Packard Company Generation of reproducible random initial states in RTL simulators
US6253223B1 (en) * 1999-06-08 2001-06-26 General Instrument Corporation Robust random number generator

Cited By (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040039762A1 (en) * 2002-08-21 2004-02-26 Koninklijke Philips Electronics N.V. Entropy estimation and decimation for improving the randomness of true random number generation
US7047262B2 (en) * 2002-08-21 2006-05-16 Koninklijke Philips Electronics N.V. Entropy estimation and decimation for improving the randomness of true random number generation
US20120281827A1 (en) * 2003-08-15 2012-11-08 Broadcom Corporation Pseudo-random Number Generation Based on Periodic Sampling of One or More Linear Feedback Shift Registers
US8831216B2 (en) * 2003-08-15 2014-09-09 Broadcom Corporation Pseudo-random number generation based on periodic sampling of one or more linear feedback shift registers
US20050135608A1 (en) * 2003-12-22 2005-06-23 Wachovia Corporation Platform independent randomness accumulator for network applications
US7546327B2 (en) * 2003-12-22 2009-06-09 Wells Fargo Bank, N.A. Platform independent randomness accumulator for network applications
US8166086B2 (en) * 2004-02-26 2012-04-24 Telecom Italia S.P.A. Method and circuit for generating random numbers, and computer program product therefor
US20070140485A1 (en) * 2004-02-26 2007-06-21 Giovanni Ghigo Method and circuit for generating random numbers, and computer program product therefor
US7359509B2 (en) * 2004-12-01 2008-04-15 Pitney Bowes Inc. Method and system for generation of cryptographic keys and the like
US20060126842A1 (en) * 2004-12-01 2006-06-15 Pitney Bowes Incorporated Method and system for generation of cryptographic keys and the like
US8423297B2 (en) * 2005-07-22 2013-04-16 Psigenics Corporation Device and method for responding to influences of mind
US20120123693A1 (en) * 2005-07-22 2012-05-17 Psigenics Corporation Device and method for responding to influences of mind
US20070043798A1 (en) * 2005-08-16 2007-02-22 Boerstler David W Random number generator
US7890561B2 (en) * 2005-08-16 2011-02-15 International Business Machines Corporation Random number generator
DE112008000057B4 (en) * 2007-05-22 2013-11-14 Atmel Corp. Apparatus and method for generating a random number
US8244786B2 (en) 2007-05-22 2012-08-14 Atmel Corporation Device and method for generating a random number
WO2008141819A3 (en) * 2007-05-22 2009-04-16 Atmel Germany Gmbh Apparatus and method for generating a random number
US20090006513A1 (en) * 2007-05-22 2009-01-01 Martin Fischer Device and method for generating a random number
WO2008141819A2 (en) * 2007-05-22 2008-11-27 Atmel Germany Gmbh Apparatus and method for generating a random number
US20090160610A1 (en) * 2007-12-19 2009-06-25 Doddamane Krishna S Pseudorandom number generator
US20140237011A1 (en) * 2013-02-19 2014-08-21 Raytheon Company Random number generator for generating truly random numbers
US9058228B2 (en) * 2013-02-19 2015-06-16 Raytheon Company Random number generator for generating truly random numbers
US10235138B2 (en) 2016-09-30 2019-03-19 International Business Machines Corporation Instruction to provide true random numbers
US20180275963A1 (en) * 2016-11-22 2018-09-27 Korea Internet & Security Agency Random ip generation method and apparatus
US10628127B2 (en) * 2016-11-22 2020-04-21 Korea Internet & Security Agency Random IP generation method and apparatus
US20190095269A1 (en) 2017-09-25 2019-03-28 The Boeing Company Systems and methods for facilitating truly random bit generation
EP3460651A1 (en) * 2017-09-25 2019-03-27 The Boeing Company Systems and methods for facilitating truly random bit generation
US10860403B2 (en) 2017-09-25 2020-12-08 The Boeing Company Systems and methods for facilitating truly random bit generation
US10924263B2 (en) 2017-09-25 2021-02-16 The Boeing Company Systems and methods for facilitating iterative key generation and data encryption and decryption
US10965456B2 (en) 2017-09-25 2021-03-30 The Boeing Company Systems and methods for facilitating data encryption and decryption and erasing of associated information
EP3503463A1 (en) * 2017-12-22 2019-06-26 The Boeing Company Systems and methods implementing countermeasures to phase tracking attacks on ring oscillator based entropy sources
CN110059487A (en) * 2017-12-22 2019-07-26 波音公司 For providing the system and method for safety in computer systems
US11646867B2 (en) 2017-12-22 2023-05-09 The Boeing Company Systems and methods implementing countermeasures to phase tracking attacks on ring oscillator based entropy sources
US20210026603A1 (en) * 2019-07-25 2021-01-28 PUFsecurity Corporation Random Number Generator and Method of Generating Output Random Number
CN112286493A (en) * 2019-07-25 2021-01-29 熵码科技股份有限公司 Random number generator and method for generating random number output
US11876899B2 (en) * 2019-07-25 2024-01-16 PUFsecurity Corporation Random number generator and method of generating output random number
WO2024035427A1 (en) * 2022-08-08 2024-02-15 Siemens Industry Software Inc. Ring-generator-based true random number generator for hardware root of trust

Also Published As

Publication number Publication date
US6954770B1 (en) 2005-10-11

Similar Documents

Publication Publication Date Title
US6954770B1 (en) Random number generator
Golic New methods for digital generation and postprocessing of random data
US6253223B1 (en) Robust random number generator
JP6714735B2 (en) Random code generator
JP5248328B2 (en) Equipment security based on signal generators
US8150900B2 (en) Random number generation based on logic circuits with feedback
US8265272B2 (en) Method and an apparatus to generate pseudo random bits for a cryptographic key
JP2006139756A (en) Random number generator and method for generating random number
EP3709157B1 (en) Random number generator
US10503476B2 (en) Self-timed random number generator
US8781117B2 (en) Generating pseudo random bits from polynomials
EP3577642B1 (en) Methods and devices for protecting data
JP3696209B2 (en) Seed generation circuit, random number generation circuit, semiconductor integrated circuit, IC card and information terminal device
JP5312318B2 (en) Method and device for generating pseudo-random strings
US20090327381A1 (en) True random number generator
JP2003318883A (en) Key generation device, encrypting/decrypting device and data receiver
Yakut et al. Secure and efficient hybrid random number generator based on sponge constructions for cryptographic applications
US10140096B1 (en) Preventing ring oscillator phase-lock
Kanso Clock-controlled generators
KR20050064096A (en) Apparatus and method for generating random number using digital logic
Rubio et al. The Use of Linear Hybrid Cellular Automata as Pseudo Random Bit Generators in Cryptography.
Garipcan et al. FPGA modeling of a novel fully-synthesizable and secure TRNG based on key-dependent s-box
Yu et al. On designing PUF-based TRNGs with known answer tests
Tripathi et al. The shortest register with non-linear update for generating a given finite or periodic sequence
Li et al. An algorithm for constructing a minimal register with non-linear update generating a given sequence

Legal Events

Date Code Title Description
AS Assignment

Owner name: CAVIUM NETWORKS, CALIFORNIA

Free format text: CHANGE OF NAME;ASSIGNOR:CAVEO NETWORKS, INC.;REEL/FRAME:018893/0162

Effective date: 20010815

Owner name: CAVIUM NETWORKS, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:CARLSON, DAVID A.;BOUCHARD, GREGG A.;VARADHARAJAN, ANAND;AND OTHERS;REEL/FRAME:018893/0707;SIGNING DATES FROM 20010927 TO 20011008

AS Assignment

Owner name: CAVIUM NETWORKS, INC., A DELAWARE CORPORATION,CALI

Free format text: MERGER;ASSIGNOR:CAVIUM NETWORKS, A CALIFORNIA CORPORATION;REEL/FRAME:018898/0730

Effective date: 20070206

Owner name: CAVIUM NETWORKS, INC., A DELAWARE CORPORATION, CAL

Free format text: MERGER;ASSIGNOR:CAVIUM NETWORKS, A CALIFORNIA CORPORATION;REEL/FRAME:018898/0730

Effective date: 20070206

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION