US7302457B2 - Method and apparatus for providing random bits - Google Patents
Method and apparatus for providing random bits Download PDFInfo
- Publication number
- US7302457B2 US7302457B2 US10/706,181 US70618103A US7302457B2 US 7302457 B2 US7302457 B2 US 7302457B2 US 70618103 A US70618103 A US 70618103A US 7302457 B2 US7302457 B2 US 7302457B2
- Authority
- US
- United States
- Prior art keywords
- random bits
- buffer
- processor
- random
- bits
- 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.)
- Expired - Fee Related, expires
Links
Images
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
Definitions
- Random numbers are difficult to generate in a digital environment that constitutes a computer platform. With the expansion of computer networking, the need for secure network transactions is on the rise. Secure network transactions often depend on encryption algorithms. These encryption algorithms require copious amounts of random bits as they operate to provide secure network transactions. Some encryption algorithms require truly random bits in order to provide high levels of security.
- Truly random numbers are generally attainable through the use of a hardware-based random number generator embodied as a peripheral that can be accessed by a computer.
- a hardware-based random number generator typically relies on some natural phenomenon as a source of entropy.
- a hardware-based random number generator uses radioactive decay as a source of entropy.
- a hardware-based random number generator relies on thermal noise as a source of entropy.
- entropy refers to the state of disorder in a system and is considered to be one metric by which the randomness of a random number is measured.
- random bits are provided by storing a succession of random bits in a buffer.
- a quantity of bits is selected from the buffer at a source location and used as a basis of a new quantity of random bits.
- the content of the buffer is altered and the source location is advanced to the next position in the buffer.
- the source location is placed at the beginning of the buffer plus an offset when the next location is beyond the limit of the buffer.
- FIGS. 1 and 2 collectively constitute a flow diagram that depicts one example method for providing random bits
- FIG. 3 is a flow diagram that depicts one alternative illustrative method for storing a succession of random bits in a buffer
- FIG. 4 is a flow diagram that depicts yet another alternative method for storing random bits in a buffer
- FIG. 5 is a flow diagram that depicts one alternative method for altering random bits in a buffer
- FIG. 6 is a flow diagram that depicts one alternative example method for generating a new first quantity of random bits according to a selected first quantity of random bits
- FIG. 7 is a flow diagram that depicts one alternative illustrative method for providing random bits
- FIG. 8 is a flow diagram that depicts one alternative example method for receiving random bits into a buffer
- FIG. 9 is a flow diagram that depicts one alternative method for authorizing a consuming process to access a buffer having random bits stored therein;
- FIG. 10 is a flow diagram that depicts an alternative method for providing random bits to a consuming process from a buffer having random bits stored therein;
- FIG. 11 is a flow diagram that depicts yet another alternative process for providing random bits to a consuming process from a buffer
- FIG. 12 is a block diagram of one example embodiment of an apparatus for providing random bits
- FIG. 13 is a block diagram of one alternative embodiment of an input manager
- FIG. 13A is a block diagram of yet another alternative embodiment of an input manager
- FIG. 14 is a block diagram that illustrates the structure of one alternative embodiment of an output manager
- FIG. 15 is a block diagram of one alternative embodiment of an arbiter
- FIG. 16 is a block diagram that depicts one alternative example embodiment of an apparatus for providing random bits
- FIG. 17 is a data flow diagram that depicts the interaction of various elements included in one alternative embodiment of an apparatus for providing random bits
- FIG. 18 is a data flow diagram that depicts the operation of one example embodiment of an input module.
- FIG. 19 is a data flow diagram that depicts the operation of one alternative embodiment of an output module.
- FIGS. 1 and 2 collectively constitute a flow diagram that depicts one example method for providing random bits.
- random bits are provided by storing random bits in a buffer (step 5 ).
- the random bits are received from a random number generator. Any suitable random number generator may be used, including but not limited to a random number generator that relies on a hardware device for entropy (e.g. a counter or a thermal noise device).
- a quantity of random bits is then retrieved from the buffer at a source location (step 10 ). It should be noted that the act of retrieving random bits does not clear the source location in the buffer.
- the random bits in the buffer at the source location are altered (step 15 ).
- a new quantity of random bits is generated based on the first selected quantity of random bits (step 20 ).
- the source location for the buffer is then advanced to the next location in the buffer (step 25 ). In the event that the next location in the buffer is beyond the range of the buffer (step 30 ), the source location is placed at the beginning of the buffer plus an offset (step 35 ).
- the present method may be applied as a buffering mechanism between a source of random bits, often referred to as a “producer”, and a process that requires said random bits.
- the process that requires the random bits is often referred to as a “consumer”.
- the buffering mechanism provided by the present method enables a producer to produce random bits at a particular “supply” rate.
- the consumer is then able to retrieve random bits from the buffer at a particular and perhaps different “demand” rate.
- the supply rate must be at least equal to the demand rate over some period of time.
- the producer may not be capable of supplying peaks in the demand for random bits exhibited by the consumer.
- FIG. 3 is a flow diagram that depicts one alternative illustrative method for storing a succession of random bits in a buffer.
- a quantity of random bits is stored in a buffer at a destination location (step 40 ).
- the destination location is then advanced to the next location in the buffer (step 45 ).
- the destination location is placed to the beginning of the buffer plus an offset (step 55 ).
- FIG. 4 is a flow diagram that depicts yet another alternative method for storing random bits in a buffer.
- a buffer is first organized into blocks (step 60 ).
- random bits are stored into a first block in the buffer (step 65 ) at a destination location.
- the destination location is advanced to a location in a different block (step 70 ).
- the destination block is chosen so as to select a block that was least recently updated with true random bits.
- one feature of the present method is to retrieve a quantity of random bits from the buffer and to use that quantity of random bits as a basis for a new quantity of random bits.
- the quantity of random bits retrieved from the buffer and used as a basis for a new quantity of random bits typically includes all of the bits in a single block of the buffer.
- this variation of the present method provides that random bits with high entropy are placed into different (e.g. successive) blocks in the buffer. This is true even if the quantity of random bits available from a producer is not sufficient to fill an entire block. Accordingly, the random bits available from a producer are apportioned amongst different blocks in the buffer. In the event that the destination location is advanced beyond the range of the buffer (step 75 ), the destination location is placed to the beginning of the buffer plus an offset (step 80 ).
- FIG. 5 is a flow diagram that depicts one alternative method for altering random bits in a buffer. According to this variation of the present method, random bits in a buffer at a source location are altered by incrementing a digital value represented by the selected first quantity of bits in the buffer (step 85 ).
- FIG. 6 is a flow diagram that depicts one alternative example method for generating a new first quantity of random bits according to a selected first quantity of random bits.
- a one-way hash function is applied to the first quantity of random bits (step 90 ).
- a one-way hash function is only one example of a function that may be applied to the first quantity of random bits. Hence, the scope of the appended claims is not intended to be limited to this one particular alternative example method for generating a new first quantity of random bits using a first quantity of random bits received from the buffer.
- FIG. 7 is a flow diagram that depicts one alternative illustrative method for providing random bits.
- random bits are provided by receiving random bits into a buffer (step 500 ).
- a request for random bits is then received from a consuming process (step 505 ).
- the consuming process is authorized to access the buffer (step 515 ).
- Other consuming processes that may attempt to access the buffer are precluded from doing so (step 520 ).
- Random bits are then provided to the authorized consuming process (step 525 ) from the buffer.
- FIG. 8 is a flow diagram that depicts one alternative example method for receiving random bits into a buffer.
- random bits are received into a buffer by first receiving a semaphore, e.g. a “write” semaphore (step 540 ).
- a semaphore e.g. a “write” semaphore
- the present method precludes simultaneous access to the buffer by a provider process and a consumer process.
- a provider process Once a provider process has secured a semaphore, it then stores random bits into the buffer (step 545 ). Once the provider has completed storage of random bits in the buffer, it relinquishes the semaphore (step 550 ).
- FIG. 9 is a flow diagram that depicts one alternative method for authorizing a consuming process to access a buffer having random bits stored therein.
- a consuming process is authorized only when a sufficient quantity of random bits are stored in a buffer (step 560 ).
- a semaphore is provided to the consuming process (step 565 ).
- the consuming process is allowed to access the buffer in order to retrieve random bits there from.
- the authorization process dwells (step 570 ) until the consuming process returns the semaphore (step 575 ).
- the step of determining if a sufficient quantity of random bits is stored in the buffer is optional. Accordingly, this variation of the method comprises a step for providing a semaphore to the consuming process and then waiting until the consuming process returns the semaphore.
- FIG. 10 is a flow diagram that depicts an alternative method for providing random bits to a consuming process from a buffer having random bits stored therein.
- the status of the buffer is first checked to ensure that it is not empty (step 590 ). If the buffer is not empty, random bits are provided to the consuming process (step 595 ). This continues until the buffer becomes depleted (step 597 ). In the case where the buffer becomes depleted, additional random bits are received into the buffer (step 600 ). It should be noted that, according to one alternative variation of the present method, random bits are received into the buffer (step 600 ) if the buffer was originally discovered to be empty (step 590 ). According to one variation of this alternative method, the buffer becomes depleted when the quantity of random bits stored therein falls below a pre-established threshold.
- FIG. 11 is a flow diagram that depicts yet another alternative process for providing random bits to a consuming process from a buffer.
- random bits are provided to a consuming process by first allowing the consuming process to retrieve random bits from the buffer, e.g. by an authorization process (step 605 ). The consuming process is allowed to continue to retrieve random bits from the buffer until the buffer is empty (step 610 ). Once the buffer becomes empty, the consuming process is required to abate, e.g. by relinquishing a semaphore (step 615 ).
- FIG. 12 is a block diagram of one example embodiment of an apparatus for providing random bits.
- an apparatus for providing random bits comprises a buffer 110 , an input manager 100 and an output manager 125 .
- the input manager 100 is capable of receiving random bits 105 and storing the random bits in the buffer 110 .
- the output manager 125 is capable of retrieving a quantity of random bits from the buffer 110 at a source location. The retrieved quantity of random bits is altered by the output manager 125 and returned to the source location in the buffer 110 .
- the retrieved quantity of random bits retrieved from the buffer 110 by the output manager 125 is used as a basis for generating a new first quantity of bits.
- the output manager 125 is further capable of advancing the source location to the next location in the buffer 110 . In the event that the next source location is beyond the range of the buffer 110 , the output manager 125 places the source location at the beginning of the buffer 110 plus an offset.
- FIG. 13 is a block diagram of one alternative embodiment of an input manager.
- an input manager 100 comprises an input register 140 , a destination pointer 145 , an incrementation unit 180 and an input controller 200 .
- the input controller 200 loads random bits 105 into the input register 140 .
- the input controller 200 comprises a state machine that generates a load signal 201 that controls storage of random bits 105 into the input register 140 .
- the input controller 200 further includes a capability for generating a write signal 202 when the input register 140 is holding random bits. This write signal 202 may be used as an indicator that valid random bits 115 are available at the output of the input manager 100 .
- the input controller 200 increments the destination pointer 145 .
- the destination pointer 145 generates a destination address 160 that may be used to direct random bits 115 from the input manager 100 to a specific location in the buffer 110 .
- this alternative embodiment of an input manager relies on the incrementation unit 180 to increment the current value (i.e. the destination address 160 ) stored in the destination pointer 145 .
- the output of the incrementation unit 180 is loaded into the destination pointer 145 by an increment control signal 203 .
- the increment control signal 203 is generated by the input controller 200 once the write signal 202 is deasserted.
- the input controller 200 comprises a state machine that orchestrates the loading of random bits 105 into the input register 145 , the assertion of the write signal 202 and the incrementation of the destination pointer 145 .
- FIG. 13 further illustrates that one alternative embodiment of an input manager 100 comprises a destination pointer 147 that includes a block identification field 149 and an offset field 151 .
- the incrementation unit 180 operates on the block identification field 149 .
- random bits 105 are apportioned amongst blocks included in the buffer 110 wherein the buffer 110 is organized into blocks.
- incrementation of the destination pointer 145 operates on a fixed number of address bits to form a destination address 160 .
- the incrementation will “roll-over” to the beginning of the buffer 110 when the destination pointer 145 is pointing to the last location in the buffer 110 .
- FIG. 13A is a block diagram of yet another alternative embodiment of an input manager.
- the incrementation unit 180 is replaced by a least recently updated selector 181 .
- the least recently updated (LRU) selector 181 maintains a history of which block was least recently updated using the block identifier (ID) portion of the destination address 160 .
- the LRU selector 181 selects a next block ID 149 according to this history.
- FIG. 14 is a block diagram that illustrates the structure of one alternative embodiment of an output manager.
- an output manager 125 comprises an output register 220 , a value incrementation unit 240 and an output controller 270 .
- the output controller 270 comprises a state machine that generates control signals for choreographing the flow of data as further described infra.
- the output manager 125 according to one alternative embodiment, further comprises a source pointer 250 and a source address incrementer 260 .
- the output controller 270 generates a read signal 271 .
- the read signal 271 operates to retrieve random bits 120 from the buffer 110 from a particular source location as dictated by a source address 255 maintained by the source pointer 250 .
- the output controller 270 causes the output register 220 to direct the value to the incrementation unit 240 .
- the incrementation unit 240 increments the value it receives from the output register and directs an incremented value as altered random bits 121 back to the buffer 110 .
- the output controller 270 When the incremented value is available at the buffer 110 , the output controller 270 generates a write signal 272 that may be used to store the incremented value back into the buffer 110 . It should be noted that the source address 255 dictates the location at which the incremented value is rewritten back into the buffer 110 .
- the value stored in the output register 220 is transformed into output random bits 130 .
- this alternative embodiment further comprises a transformation table 230 .
- the transformation table 230 generates a new quantity of random bits 130 based on the value received from the output register 220 .
- the transformation table 230 has stored therein a one-way hash function.
- the value received from the output register 220 is used to select a particular location in the transformation table 230 . That particular location is used to store the output value according to a particular transformation function stored in the table (e.g. a one-way hash function).
- a particular transformation function stored in the table e.g. a one-way hash function
- the transformation table may be used to store any suitable transformation function and the scope of the appended claims is not intended to be limited to any particular transformation function herein described (e.g. a one-way hash function).
- the output controller 270 generates a source address update signal.
- the source update signal causes the source pointer 250 to store the next source location from the source address incrementer 260 .
- the source address incrementer 260 receives the current value in the source pointer 250 and selects a next source address.
- the source address incrementer 260 operates on a block ID portion of the source address 255 stored in the source pointer 250 .
- FIG. 12 further depicts that one alternative embodiment of an apparatus for providing random bits further comprises an arbiter 112 .
- the arbiter 112 is capable of receiving a plurality of requests 114 for random bits from a plurality of consumers of such random bits.
- the arbiter 112 upon receiving an asserted request signal, responds to a consumer for random bits by issuing a grant signal 116 .
- the arbiter 112 then signals the output manager 125 that the output manager 125 should provide random bits 130 to the consumer that was issued a grant signal 116 .
- FIG. 13 further depicts that one alternative embodiment of an input manager 100 is further capable of issuing a request signal 141 when the input manager 100 needs to store random bits in the buffer.
- the input manager comprises a buffer request unit 101 (as shown in FIG. 12 ).
- the buffer request unit 101 is embodied in a state machine that constitutes the input controller 200 included in the input manager 100 .
- the input controller 200 of this alternative embodiment will refrain from accessing the buffer 110 until it receives a grant signal 142 from the arbiter 112 .
- the input manager 100 will store additional random bits into the buffer 110 when the buffer is empty, as indicated by an “empty” signal 111 .
- the buffer 110 may become depleted if it no longer contains random bits (i.e. it is empty).
- the input manager 100 will store additional random bits into the buffer 110 when the buffer becomes depleted, as indicated by a “depleted” signal 119 .
- the buffer 110 may become depleted for wide variety of reasons.
- the buffer 110 may become depleted if the number of random bits falls below a low water mark (a pre-established threshold 117 , infra).
- FIG. 15 is a block diagram of one alternative embodiment of an arbiter.
- an arbiter 112 includes a counter 109 .
- the counter 109 receives an UP signal 102 and a DOWN signal 103 .
- the UP signal 102 is received from the input manager 100 , which according to one alternative embodiment of the input manager 100 asserts the UP signal in accordance with placing random bits 115 in the buffer 110 .
- the DOWN signal 103 is received from the output manager 125 .
- the output manager 125 asserts the DOWN signal 103 commensurate with the retrieval of random bits 120 from the buffer 110 .
- the counter 109 reflects an accurate count 107 of the quantity of random bits available in the buffer 110 .
- the arbiter 112 is capable of receiving a request from a consumer that includes a demand quantity indicator 108 .
- the arbiter 112 of this alternative embodiment further includes a comparator 143 .
- the comparator 143 compares the count indicator 107 that is indicative of the quantity of random bits available in the buffer 110 to the quantity indicator 108 received from a consumer of random bits. If there are enough bits available in the buffer 110 , the comparator generates a signal called “enough” 122 . When the “enough” signal is active and a request is pending, the arbiter 112 issues a grant signal 116 to the consumer.
- the arbiter 112 is capable of deasserting any active grant signal 116 when the buffer 110 is empty.
- the comparator 143 generates an empty signal 111 when the counter 109 indicates that the buffer 110 is empty. This signal is used by the arbitration process in order to deassert any active grant signal, as described supra.
- the comparator 143 generates a depleted signal 119 when the count 107 indicative of the quantity of random bits in the buffer 110 falls below a pre-established threshold 117 .
- the grant signal that is issued in response to a request 114 is maintained so long as the corresponding request signal 114 remains active.
- the consumer of random bits is allowed to retrieve random bits so long as it continues to require random bits.
- FIG. 14 further illustrates that, according to yet another embodiment of an output manager, the output controller 270 accesses the buffer when it receives a “granted” signal 127 from the arbiter 112 . Accordingly, access to the buffer by the output manager is regulated by the arbiter 127 . Hence, when the input manager 100 needs to replenish the buffer 110 , it requests access to the buffer 110 using the request signal 141 it generates (from the input controller 200 ).
- FIG. 16 is a block diagram that depicts one alternative example embodiment of an apparatus for providing random bits.
- an apparatus for providing random bits comprises one or more processors 320 and a memory 330 .
- the apparatus further comprises an input port 310 and an output port 315 . These elements are connected to each other by an internal data bus 305 , also included in the apparatus of the present embodiment.
- a portion of the memory 330 is set aside as a buffer region 360 , which is used to store random bits according to the teaching described infra.
- This alterative example embodiment further comprises various functional modules each of which comprises an instruction sequence that can be executed by the one or more processors 320 .
- a functional module and its corresponding instruction sequence is referred to by a process name.
- the instruction sequence that implements the process name is stored in the memory 330 .
- the reader is advised that the term “minimally causes the processor” and variants thereof is intended to serve as an open-ended enumeration of functions performed by the processor as it executes a particular functional process (i.e. instruction sequence).
- a particular functional process causes the processor to perform functions in addition to those defined in the appended claims is to be included in the scope of the claims appended hereto.
- instruction sequences that implement functional modules are stored in the memory 330 including an input module 340 and an output module 350 .
- an additional instruction sequence that implements an arbiter module 370 is also included in the memory 330 .
- the functional processes (and their corresponding instruction sequences) described thus far that enable the provision of random bits are, according to one alternative embodiment, imparted onto computer readable medium.
- Examples of such medium include, but are not limited to, random access memory, read-only memory (ROM), CD ROM, floppy disks, and magnetic tape.
- This computer readable medium which alone or in combination can constitute a stand-alone product, can be used to convert a general-purpose computing platform into a device for providing random bits according to the techniques and teachings presented herein. Accordingly, the claims appended hereto are to include such computer readable medium imparted with such instruction sequences that enable execution of the present method and all of the teachings afore described.
- FIG. 17 is a data flow diagram that depicts the interaction of various elements included in one alternative embodiment of an apparatus for providing random bits.
- random bits arrive at the input port 310 .
- the input port comprises a register for accessing data from at least one of a real time clock, an interrupt counter and a thermal noise device.
- a process which is embodied as an instruction sequence, is executed by the processor 320 , said process being the input process 340 .
- the input process 340 when executed by the processor 320 , minimally causes the processor 320 to retrieve one or more random bits from the input port 310 .
- the input module 340 when executed by the processor 320 , minimally causes the processor 320 to store a succession of random bits in the buffer region 360 in the memory 330 .
- the output module when executed by the processor 320 , minimally causes the processor 320 to select a first quantity of random bits from the buffer region 360 from a particular source location.
- the source location is managed by means of a pointer (or index) into a table.
- the output module 350 further minimally causes the processor 320 to alter the random bits at the source location and to generate a new quantity of random bits based on the original random bits retrieved from the source location.
- the processor 320 by continued execution of the output module 350 , advances the source location (e.g. by incrementing a pointer or table index). In the event that the new source location is found to be beyond the range of the buffer region 360 , then the new source location is set to the beginning of the buffer region 360 plus an offset.
- the output module 350 minimally causes the processor 320 to perform a modulus arithmetic function on the size of the buffer region 360 and the next source location to determine such offset when a wrap of the buffer region 360 is required.
- the processor 320 by further execution of the output module 350 further minimally is caused to generate a new quantity of random bits based in the selected first quantity of random bits. Accordingly, the processor 320 further minimally is caused to forward the newly generated bits to the output port 315 . According to one alternative embodiment, the output module 350 merely places the newly created random bits in an output buffer 351 .
- FIG. 18 is a data flow diagram that depicts the operation of one example embodiment of an input module.
- an input module includes a write module 420 that, when executed by the processor 320 , minimally causes the processor 320 to store a second quantity of random bits in the buffer region 360 .
- the buffer region 360 is accessed by means of a destination pointer 425 . Once the quantity of random bits is stored in the buffer region 360 , the destination pointer is advanced to the next location in the buffer region 360 . In the event that the destination pointer 425 is advanced beyond the extent of the buffer region 360 , the destination pointer 425 is set to the beginning of the buffer region 360 plus an offset.
- the write module 420 minimally causes the processor 320 to determine the offset through a modulus arithmetic operation performed on the size of the buffer region 360 and the next advanced destination address stored in the destination pointer 425 .
- the input module 340 includes an accept module 415 .
- the accept module 415 serves as an intermediate elasticity buffer (e.g. a first-in-first-out buffer) between a source of random bits and the write module 420 .
- the write module 420 causes the processor 320 to organize the buffer region 360 into blocks. After the buffer region 360 is organized into blocks, the processor 320 stores a second quantity of random bits into the buffer region 360 at a destination location and then advances the destination location to the next location in a different block in the buffer region 360 . When the next destination location in a different block is beyond the range of the buffer region 360 , continued execution of the write module 420 further minimally causes the processor 320 to place the destination address to the beginning of the buffer region 360 plus an offset.
- the write module 420 when executed by the processor 320 further minimally causes the processor 320 to advance the destination address to a different block according to a least recently updated block. Hence, as random bits are received by the input module 340 , they are apportioned amongst blocks in the buffer region 360 on a substantially uniform basis.
- FIG. 19 is a data flow diagram that depicts the operation of one alternative embodiment of an output module.
- the output module 350 includes a retrieve module 380 .
- the processor 320 minimally manages a source pointer 390 that indicates the source location from which random bits are to be retrieved from the buffer region 360 .
- the retrieve module 380 further causes the processor 320 to minimally retrieve random bits from the buffer region 360 according to the source pointer 390 .
- the processor 320 retrieves random bits, it conveys the random bits to a transformation module 405 .
- the transformation module 405 is included in one alternative example embodiment of an output module 350 .
- the transformation module 405 when executed by the processor 320 , further minimally causes the processor 320 to generate a new quantity of random numbers by application of a one-way hash function to random bits received from the retrieve module 380 .
- an increment module 400 is also included in yet another alternative embodiment of an output module 350 .
- the processor 320 as it continues to execute the retrieve module 380 , further minimally conveys the retrieved random bits and an indication of their source location to the increment module 400 .
- the increment module 400 further minimally causes the processor 320 to increment a value represented by random bits received from the retrieve module 380 and the to store the incremented value back into the buffer region 360 according to the indicated source address it also received from the retrieve module 380 .
- FIG. 17 also illustrates the operation of yet another alternative example embodiment of a bit provisioning unit.
- This alternative embodiment as already described, further comprises an arbiter module 370 that is stored in the memory 330 .
- the arbiter module 370 when executed by the processor 320 , minimally causes the processor 320 to authorize one consuming process 371 .
- the input module 340 of this alternative embodiment minimally causes the processor 320 to receive random bits from the input port 310 and to store these in the buffer region 360 included in the memory 330 .
- the output module 350 of this alternative example embodiment when executed by the processor 320 , minimally causes the processor to provide random bits to an authorized consuming process 371 while precluding non-authorized consuming processes from accessing the buffer region 360 .
- the input module 340 minimally causes the processor 320 to store random bits in the buffer 360 by minimally causing the processor 320 to receive a semaphore and then store random bits in the buffer region 360 . Accordingly, once the processor 320 is finished storing random bits in the buffer region 360 , it relinquishes the semaphore.
- This semaphore transaction processing may be visualized as a request and acknowledge sequence, as illustrated in the figure.
- the arbiter module 370 minimally causes the processor to authorize one consuming process by minimally causing the processor 320 to receive a request for random bits that includes a quantity indicator.
- the arbiter module 370 of this alternative embodiment receives signals from the input module 340 and the output module 350 .
- the processor 320 minimally tracks the quantity of random bits available in the buffer 360 by increasing a counter or decreasing the counter according to the signals received from the input module 340 and the output module 350 .
- the input module 340 when executed by the processor 320 , minimally causes the processor to generate a signal called “UP” which indicates the quantity of random bits placed into the buffer 360 .
- the output module 350 when executed by the processor 320 , minimally causes the processor to generate a signal called “DOWN”, which indicates the quantity of random bits retrieved from the buffer 360 .
- the arbiter module 370 when executed by the processor 320 , minimally causes the processor to issue a semaphore to the consuming process 371 when a sufficient quantity of random bits is available in the buffer region 360 .
- the arbiter module 370 minimally causes the processor to compare the quantity indicator included in the request for random bits received from the consuming process 371 to the quantity of random bits available in the buffer 360 as tracked by the processor 320 as it executes the arbiter module 370 .
- the arbiter module 370 minimally causes the processor 320 to authorize one consuming process by minimally causing the processor 320 to receive a request for random bits (e.g. from a consuming process 371 ) and issue a semaphore in response to the request.
- This alternative embodiment of the arbiter module 370 causes the processor 320 to dwell the arbitration process until the semaphore is received back to the consuming process 371 .
- the notion of issuing and retrieving semaphores can be visualized as a request and acknowledge process as illustrated in the figure.
- the output module 350 when executed by the processor 320 , minimally causes the processor to allow an authorized consuming process 371 to access the buffer 360 so long as the buffer 360 is not empty.
- the output module which interacts with the arbiter module 370 in order to maintain cognizance of the quantity of random bits available in the buffer region 360 , will issue a signal to the input module 340 . This signal is called “depleted”.
- the processor 320 In response to the depleted signal, the processor 320 , will execute the input module 340 that will minimally cause the processor 320 to store additional bits in the buffer 360 .
- the output module 350 will issue an “abate” signal to the consuming process 371 when the buffer 360 is empty. In response, the consuming process will relinquish any semaphore received from the arbiter module 370 .
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Information Transfer Systems (AREA)
Abstract
Description
Claims (56)
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US10/706,181 US7302457B2 (en) | 2003-11-12 | 2003-11-12 | Method and apparatus for providing random bits |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US10/706,181 US7302457B2 (en) | 2003-11-12 | 2003-11-12 | Method and apparatus for providing random bits |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| US20050102336A1 US20050102336A1 (en) | 2005-05-12 |
| US7302457B2 true US7302457B2 (en) | 2007-11-27 |
Family
ID=34552481
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US10/706,181 Expired - Fee Related US7302457B2 (en) | 2003-11-12 | 2003-11-12 | Method and apparatus for providing random bits |
Country Status (1)
| Country | Link |
|---|---|
| US (1) | US7302457B2 (en) |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20050135608A1 (en) * | 2003-12-22 | 2005-06-23 | Wachovia Corporation | Platform independent randomness accumulator for network applications |
| US20060064448A1 (en) * | 2001-11-20 | 2006-03-23 | Ip-First, Llc. | Continuous multi-buffering random number generator |
| US20070078920A1 (en) * | 2001-11-20 | 2007-04-05 | Ip-First, Llc | Microprocessor with selectively available random number generator based on self-test result |
| US20070110239A1 (en) * | 2001-11-20 | 2007-05-17 | Ip-First, Llc | Microprocessor including random number generator supporting operating system-independent multitasking operation |
Families Citing this family (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP3926374B2 (en) * | 2005-08-15 | 2007-06-06 | 株式会社ソニー・コンピュータエンタテインメント | Buffer management method and buffer management device |
| US8856198B2 (en) * | 2012-03-30 | 2014-10-07 | Freescale Semiconductor, Inc. | Random value production methods and systems |
| GB2504457A (en) * | 2012-06-06 | 2014-02-05 | Univ Bruxelles | Message authentication via distributed secret keys |
| CN113467753B (en) * | 2020-12-31 | 2022-10-04 | 易百信息技术(上海)股份有限公司 | Distributed non-repetitive random sequence generation method and system |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20040064491A1 (en) * | 2002-09-30 | 2004-04-01 | Rarick Leonard D. | Continuous random number generation method and apparatus |
| US6871206B2 (en) * | 2001-11-20 | 2005-03-22 | Ip-First, Llc | Continuous multi-buffering random number generator |
| US6968460B1 (en) * | 2001-05-10 | 2005-11-22 | Advanced Micro Devices, Inc. | Cryptographic randomness register for computer system security |
-
2003
- 2003-11-12 US US10/706,181 patent/US7302457B2/en not_active Expired - Fee Related
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6968460B1 (en) * | 2001-05-10 | 2005-11-22 | Advanced Micro Devices, Inc. | Cryptographic randomness register for computer system security |
| US6871206B2 (en) * | 2001-11-20 | 2005-03-22 | Ip-First, Llc | Continuous multi-buffering random number generator |
| US20040064491A1 (en) * | 2002-09-30 | 2004-04-01 | Rarick Leonard D. | Continuous random number generation method and apparatus |
Cited By (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20060064448A1 (en) * | 2001-11-20 | 2006-03-23 | Ip-First, Llc. | Continuous multi-buffering random number generator |
| US20070078920A1 (en) * | 2001-11-20 | 2007-04-05 | Ip-First, Llc | Microprocessor with selectively available random number generator based on self-test result |
| US20070110239A1 (en) * | 2001-11-20 | 2007-05-17 | Ip-First, Llc | Microprocessor including random number generator supporting operating system-independent multitasking operation |
| US20070118581A1 (en) * | 2001-11-20 | 2007-05-24 | Ip-First, Llc | Microprocessor with random number generator and instruction for storing random data |
| US20070118582A1 (en) * | 2001-11-20 | 2007-05-24 | Ip-First, Llc | Microprocessor with random number generator and instruction for storing random data |
| US7712105B2 (en) | 2001-11-20 | 2010-05-04 | Ip-First, Llc. | Microprocessor including random number generator supporting operating system-independent multitasking operation |
| US7818358B2 (en) | 2001-11-20 | 2010-10-19 | Ip-First, Llc | Microprocessor with random number generator and instruction for storing random data |
| US7849120B2 (en) | 2001-11-20 | 2010-12-07 | Ip-First, Llc | Microprocessor with random number generator and instruction for storing random data |
| US8296345B2 (en) | 2001-11-20 | 2012-10-23 | Ip-First, Llc | Microprocessor with selectively available random number generator based on self-test result |
| 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 |
Also Published As
| Publication number | Publication date |
|---|---|
| US20050102336A1 (en) | 2005-05-12 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN112088368B (en) | Dynamic per bank and full bank refresh | |
| US6898650B1 (en) | Queueing method supporting multiple client accesses simultaneously | |
| US9116845B2 (en) | Remote permissions provisioning for storage in a cache and device therefor | |
| EP0625753A1 (en) | Dynamically programmable bus arbiter with provisions for historical feedback | |
| KR102448999B1 (en) | Interfaces for cache and memory with multiple independent arrays | |
| US20160034406A1 (en) | Memory controller and method for controlling a memory device to process access requests issued by at least one master device | |
| EP1242875B1 (en) | System and method for unrolling loops in a trace cache | |
| JP3917839B2 (en) | Data processing apparatus, lockdown controller in data processing apparatus, and method for locking data value | |
| US20120215989A1 (en) | Memory protection in a data processing system | |
| US9851920B2 (en) | System and method for removing hash table entries | |
| US6317806B1 (en) | Static queue and index queue for storing values identifying static queue locations | |
| US3701977A (en) | General purpose digital computer | |
| US12164441B2 (en) | Method, apparatus, and system for storing memory encryption realm key IDs | |
| US7302457B2 (en) | Method and apparatus for providing random bits | |
| WO2019139854A1 (en) | Managing a set of cryptographic keys in an encrypted system | |
| US6301642B1 (en) | Shared memory bus arbitration system to improve access speed when accessing the same address set | |
| US6571332B1 (en) | Method and apparatus for combined transaction reordering and buffer management | |
| US3771140A (en) | Storage configuration comprising shift registers | |
| US8452920B1 (en) | System and method for controlling a dynamic random access memory | |
| US8001591B2 (en) | Distributed resource access protection | |
| US20030163654A1 (en) | System and method for efficient scheduling of memory | |
| US12086418B1 (en) | Memory sprinting | |
| US12197735B2 (en) | Memory sprinting | |
| JPH0540698A (en) | Main storage page managing system | |
| CN116521351B (en) | Multithreading task scheduling method and device, storage medium and processor |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| AS | Assignment |
Owner name: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P., COLORAD Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:MCCUE, RICHARD A.;CASTEJON-AMENEDO, JOSE;SIMOV, BORISLAV H.;REEL/FRAME:014706/0096 Effective date: 20031107 |
|
| STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
| FPAY | Fee payment |
Year of fee payment: 4 |
|
| FPAY | Fee payment |
Year of fee payment: 8 |
|
| AS | Assignment |
Owner name: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.;REEL/FRAME:037079/0001 Effective date: 20151027 |
|
| FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
| LAPS | Lapse for failure to pay maintenance fees |
Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
| STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
| FP | Lapsed due to failure to pay maintenance fee |
Effective date: 20191127 |