WO2014007583A1 - Apparatus and method for enhancing performance of fpga-based true random number generator - Google Patents
Apparatus and method for enhancing performance of fpga-based true random number generator Download PDFInfo
- Publication number
- WO2014007583A1 WO2014007583A1 PCT/KR2013/006008 KR2013006008W WO2014007583A1 WO 2014007583 A1 WO2014007583 A1 WO 2014007583A1 KR 2013006008 W KR2013006008 W KR 2013006008W WO 2014007583 A1 WO2014007583 A1 WO 2014007583A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- output
- path
- counter
- value
- fpga
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Ceased
Links
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
- G06F7/588—Random number generators, i.e. based on natural stochastic processes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
-
- 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/1733—Controllable logic circuits
- H03K19/1737—Controllable logic circuits using multiplexers
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K23/00—Pulse counters comprising counting chains; Frequency dividers comprising counting chains
- H03K23/004—Counters counting in a non-natural counting order, e.g. random counters
Definitions
- the present invention relates to a random number generator, and in particular, when generating a random bit sequence using a field-programmable gate array (FPGA), an FPGA-based true random number generator for improving random characteristics and increasing throughput
- FPGA field-programmable gate array
- the present invention relates to an apparatus and a method for improving performance.
- Random numbers are an essential element in encryption and are used in generating secret values, generating public keys in public key infrastructure (PKI), creating digital signatures, or in authentication protocols.
- PKI public key infrastructure
- there are two methods for generating random a method of generating pseudorandom numbers similar to a random number, and a method of generating a true randon number that generates a true random value that is unpredictable and unreproducible. do.
- pseudo-random number is not enough to be used in a similar form to random numbers in a non-encryption general application program, but care should be taken when used in encryption.
- pseudorandom numbers are only numbers that are similar to random numbers and are predictable and reproducible, which can be a serious vulnerability when used in encryption. Therefore, in order for a random number to be used for encryption, it must be generated from a true random number generator (TRNG).
- TRNG true random number generator
- the true random number generator can also be implemented using a field-programmable gate array (FPGA).
- FPGAs can be developed quickly and are frequently used due to their ease of use.
- FPGAs there are many ways to implement a true random number generator using an FPGA, but a ring-oscillator that forms loops using an odd number of inverters and samples the loop output at a specific point in time. The way is typical.
- FIG. 1 is a circuit diagram showing the abstract architecture of the LUT that may be to produce two to three output via the three input signals, the structure of the LUT such as that shown in Figure 1, 2 that can store one bit according to the value in the three space in the input signal I 1, I 2, I 3, and structure for selecting and outputting each bit, is to implement a number of logic gates through which.
- FIG. 2 is a block diagram illustrating a delay-adjustable buffer utilizing the structure of FIG. 1, and a value '0101 0101' should be set in the SRAM of the LUT.
- the output O becomes '0' or '1' by the I 1 value regardless of I 2 and I 3 .
- I 2 and I 3 do not affect the output value, but determine the path through which the value selected by I 1 is delivered to the output (O), which is the delay from the input I 1 to the output (O). Is the element that changes.
- the total number of paths determined by I 2 and I 3 is four.
- Recently developed FPGA chips also include LUTs with six inputs.
- I L The input value with the longest delay of the path
- I S the input value with the shortest delay
- the inputs are I L and I S , the largest delay difference can be obtained. If a plurality of them are connected in series as shown in FIG.
- the LUT is fabricated using the same transistor-level cell for constructing the LUT. Therefore, the change according to the position of the LUT in the chip is small and the chip in the semiconductor die is small. Depending on the location, the effect is small. Therefore, the characteristics of the delay according to the input value tend to be similar in almost all cells.
- FIG. 4 is a diagram illustrating a true random number generator implemented using the PDB described above.
- a PDB is serially connected to the D input and the CLK input path of FF to configure a path, respectively. If the number of PDBs arranged in two paths is the same and the paths are routed identically, the same clock signal is applied to both paths at the same time. Therefore, in the FF, which signal comes in due to the minute difference between the upper path and the lower path. In some cases, the output of FF may be zero or 1. If the rising edge of the clock reaches the upper path first, the output of FF will be 1, and if it reaches the lower path first, the output will be zero.
- FIGS. 5A and 5B are diagrams for describing a metastabillty that may occur in the FF.
- a binary counter and a decoder are necessary elements for PI-Control.
- the binary counter is a counter that increments if the output of FF is 1 and decrements if it is zero. In the ideal case, when the value of the counter is 0, the upper path and the lower path have the same length, and thus, the state becomes pseudo stable.
- the increased counter value acts as an error of pseudo-stable state, and again increases the delay of the upper path or decreases the delay of the lower path so that the counter value decreases.
- the control is to turn to the stable state.
- control is performed to reduce the delay of the upper path or increase the delay of the lower path to return to the pseudo-stable state. By doing this, you maintain a stable state.
- the form of the counter and the form of the decoder may exist in various ways and are not specific.
- the pseudo stable state occurs at the counter value other than 0, and the pseudo stable state is maintained through PI-Control.
- the counter value continues to increase and decrease at the counter value, and rises and falls at the counter value in the specified range.
- the present invention has been made to solve the above problems, when generating a random bit sequence using a field-programmable gate array (FPGA), FPGA for improving the random characteristics and increase the throughput (throughput)
- FPGA field-programmable gate array
- An object of the present invention is to provide an apparatus and method for improving the performance of a true random number generator.
- Another object of the present invention is to ensure randomness by minimizing the number of outputs deflected and outputted in the present invention, unlike the technique used in the existing true random number generator, which prevents the output of the outputs deflected and outputted. To provide an apparatus and method for improving the performance of an FPGA-based true random number generator.
- a feature of the apparatus for improving the performance of an FPGA-based true random number generator capable of guaranteeing randomness according to the present invention for achieving the above object is the input of the data pin path and clock pin path of the flip-flop.
- the TRNG module includes a flip-flop (FF) for outputting a random value, a PDB path unit for controlling delay times of the data pin path and the clock pin path of the flip-flop, and an output of the flip-flop.
- the binary counter outputs a counter value that increases or decreases depending on whether it is 1 or 0, and the delay of the data pin path and the clock pin path is controlled by the feedback control from the counter value output from the binary counter. It characterized in that it comprises a decoder for adjusting the delay in the same direction.
- the TRNG output control unit includes a memory for storing a history of a current state and an output according to the state of the TRNG module, a memory for storing a history of a random sequence output for a counter value of the binary counter, An address predictor that predicts what the next counter value is by checking the counter value of the binary counter and the random output value of the current flip-flop, and the history of the corresponding counter value output from the address predictor.
- Hamming weight calculator that analyzes how evenly the counter values are distributed, and down counter initializer that allocates time slots that can be used by counter values output from binary counters using information analyzed by Hamming weight calculator. And a time slot allocated from the down counter initializer as an initial value. It characterized in that the input received comprises a down counter, and a comparator to zero when the output from the down counter value of 0 is to update the counter value of the binary counter for every clock each time decrement the value by one.
- the TRNG output controller receives a counter value output from a binary counter and outputs a row enable signal of a memory so that a value can be stored in a storage of a corresponding memory whenever an output is output from a flip-flop for random output. And a mux outputting the row enable decoder and a history of the counter value predicted by the address predictor 210 to the hamming weight calculator.
- the memory is configured as a storage space of the cache memory, so that the history of the output can be stored for some states, the history is stored in the memory using only some information of each state, and this value is restored using only the state partial information. It is characterized by recovering.
- a method for improving performance of an FPGA-based true random number generator capable of guaranteeing randomness is characterized by (A) data pin path and clock pin path of flip-flop. Injecting clock signals and simultaneously injecting clock signals, and controlling delay times of the respective paths through feedback to output random sequences which are metastable according to the time difference between the signals reaching each pin; (B) storing the state information of the output random sequence, and controlling the time to maintain the quasi-stable state of the output of the random sequence output through it.
- step (A) the TOP path and the BOTTOM path provided using a PDB are disposed on a flip-flop (FF), and the output of the flip-flop is increased to 1, and decreased to 0.
- FF flip-flop
- the step (B) comprises the steps of storing a history of the random sequence output for the counter value, checking the current counter value and the current random output value to predict what the next counter value is; Selecting and outputting the history of the predicted counter value, and analyzing how much the counter value is evenly distributed based on the history of the counter value outputted, and outputting the counter value by using the analyzed information Allocating a usable time slot, receiving the allocated time slot as an initial value, decreasing the value by one for each clock, and updating the counter value when the reduced value reaches zero. It is done.
- the ratio of 1 in the output is high, which means that the delay of the TOP path is relatively shorter than that of the BOTTOM path, so that the delay of the TOP path is longer or the BOTTOM path is longer. It is characterized in that the control in the direction in which the delay is shortened.
- the analyzing may include detecting how many 1s of N bits are selected from the Hamming weights for which the selected history value is calculated, and analyzing that the Hamming weights are similarly stable as the Hamming weights are closer to N / 2. It is done.
- an apparatus and method for improving performance of an FPGA-based true random number generator according to the present invention have the following effects.
- the edge counter appears. Since the pattern is irregular, it is also absorbed by the elements constituting random and can continue to output in this case, and sufficient randomness is ensured even without a filter, thereby eliminating the decrease in throughput caused by filtering the edge counter value. can do.
- 1 is a circuit diagram showing the structure of a LUT by abstraction that can be generated by the 23 output through the third input signal
- FIG. 2 is a diagram illustrating a delay adjustable buffer utilizing the structure of FIG. 1.
- FIG. 2 is a diagram illustrating a delay adjustable buffer utilizing the structure of FIG. 1.
- FIG. 3 is a diagram illustrating the structure of FIG. 2 by connecting M PDBs in series;
- FIG. 4 is a block diagram showing a true random number generator implemented using the PDB described above
- 5A and 5B are diagrams for explaining the metastable state (metastabillty) that may occur in the FF
- FIG. 6 is a block diagram showing a configuration for improving performance of an FPGA-based true random number generator according to an embodiment of the present invention.
- FIG. 7 is a circuit diagram showing in detail the structure of the PDB path portion of FIG.
- FIG. 8 is a diagram showing the structure of a PDB path part of FIG. 1 using LUT3;
- FIG. 9 is a diagram showing the structure of LUT3 of FIG. 8
- 10A and 10B are graphs showing a method of proposing a probability of outputting 1 for each counter and a conventional method
- 11A and 11B are graphs showing how many times each counter appeared in the total distribution
- 12A and 12B are graphs showing the change in the counter value according to the period
- FIG. 6 is a block diagram showing a configuration for improving performance of an FPGA-based true random number generator according to an embodiment of the present invention.
- a true random number generator is a TRNG module 100 for generating a random sequence using a physical data base (PDB) and a PI control, and a stream and a current counter value output from the TRNG module 100.
- PDB physical data base
- PI PI control
- a stream and a current counter value output from the TRNG module 100 Stored, and based on the TRNG output control unit 200 for controlling the output of the TRNG module 100.
- the TRNG module 100 configures a PDB path unit 110 that provides a TOP path and a BOTTOM path using a PDB, and a flip-flop (FF) at the next stage of the PDB path unit 110 ( 120).
- a flip-flop FF
- the output of the FF 120 is 1, the output is increased. If the output of the FF 120 is 0, the binary counter 140 outputs a counter value, and the counter value is output from the binary counter 140.
- the decoder 130 is configured to adjust the delay of the TOP path and the BOTTOM path of the PDB path unit 110.
- the TRNG output control unit 200 stores a history of the random sequence outputted with respect to the counter value of the binary counter 140 and whenever an output is output from the FF 120 for random output.
- a row enable decoder 240 for receiving a counter value output from the binary counter 140 and outputting a low enable signal of the memory 250 to store a value in a storage of the corresponding memory 250;
- the address predictor 210 predicts what the next counter value is by checking the counter value of the binary counter 140 and the random output value of the current FF 120, and the counter value predicted by the address predictor 210.
- Hamming weight to check the history of the MUX (260) to select and output the history of the corresponding counter value output through the mux 260, and analyzes how evenly distributed the counter value based on this Output (hamming weight calculator) 270 and a down counter initializer 280 that allocates a time slot that can be used by the counter value output from the binary counter 140 using information analyzed by the hamming weight calculator 270.
- a down counter 230 that receives a time slot allocated from the down counter initializer 280 as an initial value and decreases the value by one every clock, and when the value output from the down counter 230 becomes 0,
- a zero comparator 220 for activating the EN signal to update the counter value of the binary counter 140.
- FIG. 7 is a circuit diagram illustrating in detail the structure of the PDB path unit of FIG. 1.
- FIG. 7 is a circuit diagram illustrating in detail the structure of the PDB path unit of FIG. 1.
- the PDB path unit 110 connects a plurality of PDBs 111 in series to form a TOP path 112 at an upper level and a BOTTOM path 113 at a lower level.
- the delay paths 112 and 113 of the PBD may adjust the delay of the entire path by the delay control signals 116 of the respective PDBs 111.
- Each of the delay control signals 116 is collectively used as a control signal 114 of the TOP path 112 and a control signal 115 of the BOTTOM path 113, which is connected to the decoder 130 and is connected to the TOP path 112.
- the delay of the BOTTOM path 113 are controlled from the decoder 130.
- FIG. 8 is an embodiment showing the structure of the PDB path portion of FIG. 1 using the LUT3
- FIG. 9 is an embodiment showing the structural diagram of the LUT3 of FIG.
- LUT3 is a 3-input LUT (Look Up Table) provided by an FPGA chip.
- the LUT is one of the basic building blocks of an FPGA, and is used to construct combinational circuits required for the chip configuration. Using this, it is possible to create a buffer with adjustable delay.
- LUT3 the structural principle of LUT3 is described. If the LUTs have X inputs 111-1, 111-2, and 111-3, LUTX has 2 X SRAM storage spaces 111-6. . This value is output to the output O (111-4) through the mux (111-5) of the X stage. At this time, if the value of the SRAM storage space 111-6 is set to '1010 1010' and the inputs I 1 (111-1), I 2 (111-2), and I 3 (111-3) are adjusted, The value at each SRAM address can be output via output O111-4. At this time, whether the output is 0 or 1 is determined by the input I 1 111-1, and the I 2 111-2 and I 3 (111-3) do not affect the output value.
- the flip-flop (FF) 120 is a general D flip-flop.
- the input of the D pin is connected to the TOP path 112 of the PDB path unit 110
- the input of the CLK pin is connected to the BOTTOM path 113.
- the input pins of the TOP path 112 and the BOTTOM path 113 of the PDB path unit 110 are tied together, and the clock signal is supplied through the pin.
- the lengths of the TOP path 112 and the BOTTOM path 113 are substantially the same, it can be said that the time when the rising edge of the clock arrives at the FF 120 is almost the same. If the FF 120 uses the rising edge of the clock, the output of the FF 120 becomes 1 when the rising edge is first input through the TOP path 112, and in the opposite case, the output becomes 0. Becomes
- the binary counter 140 increases / decreases the value according to the output of the FF 120. If the output of the FF 120 is 1, the value of the counter is increased and vice versa.
- the value of the counter can be used separately from the sign bit, can represent negative numbers in the form of two's complement, and the implementation is not limited.
- the negative representation method affects the design of the decoder 130. In general, in the hardware implementation, it is easier to implement the decoder 130 by having a sign bit.
- the decoder 130 adjusts the delay of the TOP path 112 and the BOTTOM path 113 in the PDB path unit 110 based on the counter value, which includes the sign bit, from the binary counter 140. It converts into a signal that can be. If the value of the counter is increased in the positive direction, this means that the ratio of 1 of the output is high, which means that the delay of the TOP path 112 is relatively short compared to the BOTTOM path 113, and thus the A signal for controlling the PDBs 111 is output in a direction in which the delay is longer or the delay of the BOTTOM path 113 is short. On the contrary, the control signal is output in a direction in which the delay of the TOP path 112 is shortened or the delay of the BOTTOM path 113 is long.
- the memory 250 is composed of N ⁇ M flip-flops 252 to store the history.
- N is the history number of outputs stored for each counter
- M is the number of counters.
- M should be composed of 2 C pieces. In this case, however, more storage is needed than necessary.
- the present invention proposes a storage space in the form of a cache memory. The actual number of storage spaces required is sufficient for the range of values to change after convergence.
- Each flip-flop 252 is grouped by N and used as a storage 251 corresponding to each counter. This part consists of a right shifter type storage in FIG. 6, and when a value is input to the leftmost FF 251, the stored values are shifted one bit to the right and the rightmost The value is discarded. In this way, you can remember the output history for each counter.
- the address predictor 210 predicts the value of the next binary counter 140 by using the output value of the current FF 120 and the counter value of the binary counter 140. This may consist of logic that is already being used to determine the next counter value inside the binary counter 140. Therefore, the address predictor 210 may use logic inside the binary counter 140 or may configure and use separate logic as shown in FIG. 6. In addition, the address predictor 210 is a part necessary to retrieve the counter of the counter to be changed from the stored output history to allocate a time slot to the counter value to be changed next.
- the address predicted by the address predictor 210 is used to extract one of the P counter values again using only LSB log 2 P bits, which are supplied to the N mux 260 under the memory 250. It is used to select one of the P outputs.
- the selected history value is supplied to a hamming weight calculator 270 to calculate a hamming weight.
- the hamming weight is a measure of how many 1 of the N bits are present. Thus, the closer the Hamming weight is to N / 2, the more likely it is to be metastable.
- the down counter initializer 280 decodes the hamming weight by the number of time slots allocated to the next counter using this characteristic. That is, if the Hamming weight is close to N / 2, it converts to a large time slot, otherwise it converts a small value. The converted value is supplied to the down counter 230, which is decremented every clock.
- the zero comparator 220 determines whether the value of the down counter 230 is 0 as a simple comparator, and activates an enable signal to the binary counter 140 only when the counter is updated.
- the present invention provides an FPGA-based true random number generation apparatus for improving random characteristics and increasing throughput. Performance improvement can be provided, and the experimental result can be confirmed as follows.
- FIG. 10A illustrates a method for proposing a probability of outputting 1 for each counter
- FIG. 10B is a graph showing a probability of outputting 1 for each counter with respect to the conventional method.
- the frequency of outputting 0 is high, or when the probability is close to 1, 1 is output. It means that it is a high frequency counter value.
- FIG. 11A is a graph showing how many times each counter appeared in the total distribution when the proposed method was applied
- FIG. 11B is a graph showing how many times each counter appeared in the total distribution when the existing method was applied. It is a graph expressed as a ratio.
- the counters having a probability between 0.4 and 0.6 can be arranged to about 118, 120, and 121. Looking at the appearance probability of these counters in Figure 11b, it can be seen that the distribution is approximately between 0.15 ⁇ 0.25. The sum of these is about 0.6.
- the counters having a probability distributed between 0.4 and 0.6 may be defined as 434, 437, and 438.
- the counters have an appearance ratio of approximately 0.15, 0.25, and 0.35, respectively. have. Their sum is about 0.75, and the ratio of the random number is higher than the existing method.
- FIG. 12A and 12B are graphs showing a change in counter value over time
- FIG. 12A is a graph showing a counter change in the conventional method
- FIG. 12B is a graph showing a counter change in the present invention.
- inventions of the present invention can be written as a program that can be executed on a computer. That is, the various steps included in the method according to the invention can be stored on a computer readable recording medium.
- the media may include magnetic storage media (e.g., ROM, floppy disk, hard disk, etc.), optical read media (e.g., CD-ROM, DVD), digital storage media (e.g., USB memory, memory card (SD, CF, MS, XD), etc.) and carrier waves (eg, transmission over the Internet).
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computer Hardware Design (AREA)
- Logic Circuits (AREA)
Description
본 발명은 난수 생성기에 관한 것으로, 특히 FPGA(Field-Programmable Gate Array)를 이용하여 랜덤한 비트 시퀀스를 생성할 때, 랜덤 특성을 향상시키고, 처리량(throughput)을 늘리기 위한 FPGA 기반된 진정한 난수 생성 장치의 성능 향상을 위한 장치 및 방법에 관한 것이다.The present invention relates to a random number generator, and in particular, when generating a random bit sequence using a field-programmable gate array (FPGA), an FPGA-based true random number generator for improving random characteristics and increasing throughput The present invention relates to an apparatus and a method for improving performance.
랜덤 숫자는 암호화에 있어 필수적인 요소로서, 비밀 값을 생성하거나 PKI(Public Key Infrastructure)에 있어 공개키를 생성하거나, 디지털 서명을 작성할 때, 혹은 인증 프로토콜 등에서 사용되고 있다. 이때, 랜덤을 생성하는 방법에는 랜덤 숫자와 유사한 형태의 의사난수(pseudorandom) 숫자를 생성하는 방법과, 예측 불가능하며 재현 불가능한 진정한 랜덤 값을 생성하는 진정한 난수(true randon number)를 생성하는 방법이 존재한다.Random numbers are an essential element in encryption and are used in generating secret values, generating public keys in public key infrastructure (PKI), creating digital signatures, or in authentication protocols. In this case, there are two methods for generating random: a method of generating pseudorandom numbers similar to a random number, and a method of generating a true randon number that generates a true random value that is unpredictable and unreproducible. do.
상기 의사난수는 암호화가 아닌 일반 응용 프로그램에서는 랜덤 숫자와 유사한 형태로 사용하기에 부족함이 없지만, 암호화에서 사용될 대는 주의가 필요하다. 즉, 의사난수는 어디까지나 랜덤 숫자와 비슷한 형태의 수자일 뿐이며, 예측 가능하며 재현 가능하기 때문에 암호화에 사용될 경우 심각한 취약점이 될 수 있다. 따라서 랜덤 숫자가 암호화에 사용되기 위해서는 반드시 진정한 난수 생성기(True Random Number Generator : TRNG)로부터 생성될 필요가 있다.The pseudo-random number is not enough to be used in a similar form to random numbers in a non-encryption general application program, but care should be taken when used in encryption. In other words, pseudorandom numbers are only numbers that are similar to random numbers and are predictable and reproducible, which can be a serious vulnerability when used in encryption. Therefore, in order for a random number to be used for encryption, it must be generated from a true random number generator (TRNG).
상기 진정한 난수 생성기(TRNG)는 FPGA(Field-Programmable Gate Array)를 이용해서도 구현되기도 하는데, FPGA는 빠른 시간에 개발이 가능하며, 사용의 편의성으로 인해 많이 사용되고 있다. 특히, FPGA를 이용하여 진정한 난수 생성기를 구현하는 방법에는 여러 가지가 있지만, 홀수개의 인버터(inverter)를 이용하여 루프를 형성하고 특정 시점에서의 루프 출력을 샘플해서 사용하는 링 오실레이터(Ring-Oscillator) 방식이 대표적인 방식이다.The true random number generator (TRNG) can also be implemented using a field-programmable gate array (FPGA). FPGAs can be developed quickly and are frequently used due to their ease of use. In particular, there are many ways to implement a true random number generator using an FPGA, but a ring-oscillator that forms loops using an odd number of inverters and samples the loop output at a specific point in time. The way is typical.
이와 다르게, D 플립플롭(Flip-Flop : FF)의 설정시간(setup time)과 보류시간(hold time) 특성으로 인해 발생하는 유사안정상태(metastabillty)를 이용하는 방법이 등장하였다. 이는 D 플립플롭의 D 핀과 CLK 핀에 동시에 클럭 신호를 인가하여, 두 개의 핀에 거의 동시에 같은 신호가 인가되게 하여, 두 신호가 도착하는 미세한 차이에 의해 출력되는 값이 결정되게 하는 방법이다.In contrast, a method of using a metastabillty caused by the setup time and hold time characteristics of the D flip-flop (FF) has emerged. This is a method of applying a clock signal to the D pin and the CLK pin of the D flip-flop at the same time, so that the same signal is applied to the two pins almost simultaneously, so that the output value is determined by the minute difference between the two signals.
최근에 제안된 방법 중에는 FPGA 칩의 내부에 있는 LUT(Look Up Table)를 활용하여 딜레이를 조절 가능한 버퍼(혹은 인버터)로 사용하는 방법이 제안되었다. Among the recently proposed methods, a method of using a delay as an adjustable buffer (or inverter) using a look up table (LUT) inside an FPGA chip has been proposed.
도 1 은 3개의 입력신호를 통해 23개의 출력을 생성해 낼 수 있는 LUT의 구조를 추상화하여 보여주고 있는 회로도로서, 도 1에서 도시하고 있는 것과 같이 LUT의 구조는 1비트를 저장할 수 있는 23개의 저장 공간에 있는 값을 입력 신호 I1, I2, I3에 따라 각 비트를 선택하여 출력하는 구조이며, 이를 통해 다양한 로직 게이트를 구현할 수 있도록 되어 있다.1 is a circuit diagram showing the abstract architecture of the LUT that may be to produce two to three output via the three input signals, the structure of the LUT such as that shown in Figure 1, 2 that can store one bit according to the value in the three space in the input signal I 1, I 2, I 3, and structure for selecting and outputting each bit, is to implement a number of logic gates through which.
도 2 는 도 1의 구조를 활용한 딜레이 조절 가능한 버퍼를 나타낸 구성도로서, LUT의 SRAM에는 ‘0101 0101’ 이란 값이 세팅되어 있어야 한다. 그리고 I1 입력은 버퍼의 입력에 해당되는 부분이 되면, I2 및 I3와 관계없이 I1 값에 의해 출력(O)은 ‘0’이 되거나 ‘1’이 된다. 이때 I2 및 I3는 출력 값에는 영향을 미치지 않지만, I1에 의해 선택된 값이 어느 경로를 통해 출력(O)으로 전달될지를 결정하게 되며, 이는 입력 I1으로부터 출력(O)까지의 딜레이를 변하게 하는 요소가 된다.FIG. 2 is a block diagram illustrating a delay-adjustable buffer utilizing the structure of FIG. 1, and a value '0101 0101' should be set in the SRAM of the LUT. When the I 1 input becomes a portion corresponding to the input of the buffer, the output O becomes '0' or '1' by the I 1 value regardless of I 2 and I 3 . I 2 and I 3 do not affect the output value, but determine the path through which the value selected by I 1 is delivered to the output (O), which is the delay from the input I 1 to the output (O). Is the element that changes.
I2와 I3에 의해 결정되는 경로의 수는 총 4 가지이다. 최근에 개발되는 FPGA 칩들은 입력의 수가 6 개인 LUT를 포함하기도 한다. N 개의 입력 신호를 가지는 LUT를 LUTN 이라고 표시하며, LUTN의 경우 PDB로 구현할 시에 2N-1 개의 경로를 가지게 된다. I1을 제외한 신호로 만들 수 있는 경로 컨트롤 신호를 I로 표기하기로 하며, I=(I2,I3,...,IN)으로 나타낸다. 이 경로 중 가장 긴 딜레이를 가질 때의 입력 값을 IL 이라고 표시하며, 가장 짧은 딜레이를 가질 때의 입력 값을 IS 라고 한다. 입력이 IL과 IS일 때 가장 큰 딜레이 차이를 얻을 수 있으며, 이를 도 3과 같이 직렬로 여러 개를 연결하면 입력 신호에 따라 큰 딜레이 차를 만들 수 있다.The total number of paths determined by I 2 and I 3 is four. Recently developed FPGA chips also include LUTs with six inputs. An LUT with N input signal LUT indicated as N, and if N is the LUT have the 2 N-1 of paths at the time of implementation by PDB. The path control signal, which can be made of signals other than I 1 , is designated as I, and I = (I 2 , I 3 , ..., I N ). The input value with the longest delay of the path is denoted as I L , and the input value with the shortest delay is called I S. When the inputs are I L and I S , the largest delay difference can be obtained. If a plurality of them are connected in series as shown in FIG.
일반적으로 FPGA 칩에서 LUT를 구현함에 있어 LUT를 구성하기 위한 동일한 트랜지스터 레벨의 셀을 이용하여 제작되며, 따라서 칩 내부에서 LUT의 위치에 따른 변화는 적은 편이며, 반도체 다이(die) 내에서의 칩 위치에 따라서도 그 영향이 적은 편이다. 따라서 입력 값에 따른 딜레이에 대한 특성은 거의 모든 셀에서 유사하게 나타나는 경향이 있다.In general, in the implementation of a LUT in an FPGA chip, the LUT is fabricated using the same transistor-level cell for constructing the LUT. Therefore, the change according to the position of the LUT in the chip is small and the chip in the semiconductor die is small. Depending on the location, the effect is small. Therefore, the characteristics of the delay according to the input value tend to be similar in almost all cells.
도 4 는 위에서 설명한 PDB를 이용하여 구현한 진정한 난수 생성기를 나타낸 구성도이다. 도 4와 같이, FF의 D 입력과 CLK 입력 경로에 PDB를 직렬로 연결하여 각각 경로를 구성한다. 그리고 두 개의 경로에 배치된 PDB의 수가 같고, 경로를 동일하게 라우팅 하였다면, 두 경로에 거의 동시에 같은 클럭 신호가 인가되므로, 해당 FF에서는 상위 경로와 하위 경로의 미세한 차이에 의해 어떤 신호가 먼저 들어오느냐에 따라 FF의 출력이 0(zero)이 될 수도 있으며 1이 될 수도 있다. 만약 클럭의 상승에지(rising edge)가 상위 경로에 먼저 도착하였다면, FF의 출력은 1이 될 것이며, 하위 경로에 먼저 도착하였다면 출력은 0이 될 것이다. 4 is a diagram illustrating a true random number generator implemented using the PDB described above. As shown in FIG. 4, a PDB is serially connected to the D input and the CLK input path of FF to configure a path, respectively. If the number of PDBs arranged in two paths is the same and the paths are routed identically, the same clock signal is applied to both paths at the same time. Therefore, in the FF, which signal comes in due to the minute difference between the upper path and the lower path. In some cases, the output of FF may be zero or 1. If the rising edge of the clock reaches the upper path first, the output of FF will be 1, and if it reaches the lower path first, the output will be zero.
도 5a 및 도 5b는 FF에서 발생할 수 있는 유사안정상태(metastabillty)에 대하여 설명하기 위한 구성도이다. 도 5a 및 도 5b와 같은 특성을 이용하여 FF을 유사안정상태로 만들면 랜덤한 비트 출력을 얻을 수 있다. 도 4에서 2진 계수기(Binary Counter)와 디코더(Decoder)는 PI-Control을 위해서 필요한 요소들이다. 2진 계수기는 FF의 출력이 1이면 증가되며, 0이면 감소되는 카운터이다. 이상적인 경우에는 카운터의 값이 0일 때 상위 경로와 하위 경로의 길이가 같기 때문에 유사안정상태가 된다. 만약 여기에서 카운터 값이 증가한다면, 증가한 카운터 값은 유사안정상태의 에러(error)로 작용하게 되며, 다시 카운터의 값이 감소하도록 상위 경로의 딜레이를 증가시키거나 하위 경로의 딜레이를 감소시켜 다시 유사안정상태로 돌리는 쪽으로 제어를 하게 된다. 또한 카운터 값이 유사안정상태에서 감소할 경우에는 상위 경로의 딜레이를 감소시키거나, 하위 경로의 딜레이를 증가시켜 다시 유사안정상태로 돌리도록 제어를 하게 된다. 이렇게 함으로써, 꾸준히 유사안정상태를 유지하도록 한다. 이때, 카운터의 형태와 디코더의 형태는 다양한 방법이 존재할 수 있으며 특정하지 않는다.5A and 5B are diagrams for describing a metastabillty that may occur in the FF. By using the characteristics as shown in FIGS. 5A and 5B to make the FF pseudo-stable, a random bit output can be obtained. In FIG. 4, a binary counter and a decoder are necessary elements for PI-Control. The binary counter is a counter that increments if the output of FF is 1 and decrements if it is zero. In the ideal case, when the value of the counter is 0, the upper path and the lower path have the same length, and thus, the state becomes pseudo stable. If the counter value is increased here, the increased counter value acts as an error of pseudo-stable state, and again increases the delay of the upper path or decreases the delay of the lower path so that the counter value decreases. The control is to turn to the stable state. In addition, when the counter value decreases in the pseudo-stable state, control is performed to reduce the delay of the upper path or increase the delay of the lower path to return to the pseudo-stable state. By doing this, you maintain a stable state. At this time, the form of the counter and the form of the decoder may exist in various ways and are not specific.
그러나 위 회로의 동작시 실제는 상위 경로와 하위 경로가 정확히 같지 않기 때문에 0이 아닌 다른 카운터 값에서 유사안정상태가 발생하며, 계속해서 PI-Control을 통해 유사안정상태를 유지하기 때문에, 유사안정상태의 카운터 값에서 증가 및 감소를 계속하며, 특정 범위의 카운터 값에서 오르락 내리락 하는 현상을 보인다.However, in the operation of the above circuit, since the upper path and the lower path are not exactly the same, the pseudo stable state occurs at the counter value other than 0, and the pseudo stable state is maintained through PI-Control. The counter value continues to increase and decrease at the counter value, and rises and falls at the counter value in the specified range.
이처럼, 기존에 제안된 PDB 및 PI-Control에 의한 FPGA기반 TRNG의 경우, PI-Control의 특성으로 인하여 앞서 설명한대로 특정 카운터 범위에서 오르락 내리락 하면서 유사안정상태를 유지한다. 이에 따라 카운터가 증감하는 범위의 가장자리 값에서는 유사안정상태의 값이 아닌 항상 고정된 값이 출력되는 문제점이 발생되게 된다. 예컨대, 카운터의 최대값에서는 항상 1을 출력하는 경향이 있으며, 최소값에서는 항상 0을 출력하는 경향이 있다. 따라서 일반적인 경우에는 이런 비-유사안정상태(non-metastable)의 출력으로 인해 얻고자 하는 랜덤 시퀀스의 획득이 어려우며, 이러한 비-유사안정상태의 출력을 제거하기 위한 필터를 사용하게 된다. 그러나 이러한 필터를 사용하게 되면, 출력 중 일부 시퀀스를 사용할 수 없게 되므로, 전체적인 처리량을 줄어들게 하며, TRNG이 효율을 떨어지게 만들게 되는 문제점이 있다.As described above, in the case of the FPGA-based TRNG proposed by the PDB and PI-Control, the similar stability is maintained by going up and down in the specific counter range as described above due to the characteristics of the PI-Control. As a result, a problem arises that a fixed value is always output at the edge value of the range where the counter increases or decreases, rather than the value of the pseudo stable state. For example, the maximum value of the counter tends to always output 1, and the minimum value tends to always output 0. Therefore, in a general case, it is difficult to obtain a random sequence to be obtained due to the output of the non-metastable state, and a filter for removing the output of the non-stable state is used. However, when such a filter is used, some sequences of the output cannot be used, which reduces the overall throughput and makes the TRNG inefficient.
따라서 본 발명은 상기와 같은 문제점을 해결하기 위해 안출한 것으로서, FPGA(Field-Programmable Gate Array)를 이용하여 랜덤한 비트 시퀀스를 생성할 때, 랜덤 특성을 향상시키고, 처리량(throughput)을 늘리기 위한 FPGA 기반된 진정한 난수 생성 장치의 성능 향상을 위한 장치 및 방법을 제공하는데 그 목적이 있다.Accordingly, the present invention has been made to solve the above problems, when generating a random bit sequence using a field-programmable gate array (FPGA), FPGA for improving the random characteristics and increase the throughput (throughput) An object of the present invention is to provide an apparatus and method for improving the performance of a true random number generator.
본 발명의 다른 목적은 필터 없이도 TRNG가 유사안정상태(metastable)에 오랫동안 머물도록하여 충분한 랜덤성(randomness)을 보장할 수 있는 FPGA 기반된 진정한 난수 생성기의 성능 향상을 위한 장치 및 방법을 제공하는데 있다.It is another object of the present invention to provide an apparatus and method for improving the performance of an FPGA-based true random number generator that can guarantee sufficient randomness by allowing a TRNG to remain in a metastable state for a long time without a filter. .
본 발명의 또 다른 목적은 기존 진정한 난수 생성기에서 사용되는 기법의 경우 편향되어 출력되는 값을 출력되지 못하게 제거하는 것과 달리, 본 발명에서는 편향되어 출력되는 회수를 최소로 하여 랜덤성(randomness)을 보장할 수 있는 FPGA 기반된 진정한 난수 생성기의 성능 향상을 위한 장치 및 방법을 제공하는데 있다.Another object of the present invention is to ensure randomness by minimizing the number of outputs deflected and outputted in the present invention, unlike the technique used in the existing true random number generator, which prevents the output of the outputs deflected and outputted. To provide an apparatus and method for improving the performance of an FPGA-based true random number generator.
상기와 같은 목적을 달성하기 위한 본 발명에 따른 랜덤성(randomness)을 보장할 수 있는 FPGA 기반된 진정한 난수 생성기의 성능 향상을 위한 장치의 특징은 플립플롭의 데이터 핀 경로와 클럭 핀 경로의 입력을 묶어서, 동시에 클럭신호를 주입하고, 각 경로의 지연시간을 피드백을 통해 제어하여 각각의 핀에 해당 신호가 도달하는 시간차에 의해 유사안정상태(metastable)한 랜덤 시퀀스를 생성하는 TRNG 모듈과, 상기 TRNG 모듈에서 출력되는 상태 정보를 저장하고, 이를 통해 TRNG 모듈의 출력을 유사안정상태(metastable)를 유지할 수 있는 시간을 제어하는 TRNG 출력 제어부를 포함하여 구성되는데 있다.A feature of the apparatus for improving the performance of an FPGA-based true random number generator capable of guaranteeing randomness according to the present invention for achieving the above object is the input of the data pin path and clock pin path of the flip-flop. A TRNG module for injecting clock signals at the same time and controlling the delay time of each path through feedback to generate a random sequence that is metastable according to the time difference of the corresponding signal reaching each pin; and the TRNG It includes a TRNG output control unit that stores the state information output from the module, and controls the time it is possible to maintain the quasi-stable state (metastable) output of the TRNG module through this.
바람직하게 상기 TRNG 모듈은 랜덤 값을 출력하는 플립플롭(Flip-Flop : FF)과, 상기 플립플롭의 데이터 핀 경로와 클럭 핀 경로의 지연시간을 제어하는 PDB 경로부와, 상기 플립플롭의 출력이 1인지, 0인지에 따라 증가 또는 감소하는 카운터 값을 출력하는 2진 계수기(Binary Counter)와, 상기 2진 계수기에서 출력되는 카운터 값으로부터 피드 백 제어를 통해 데이터 핀 경로와 클럭 핀 경로의 딜레이가 같아지는 방향으로 딜레이를 조절하는 디코더를 포함하여 구성되는 것을 특징으로 하는 한다.Preferably, the TRNG module includes a flip-flop (FF) for outputting a random value, a PDB path unit for controlling delay times of the data pin path and the clock pin path of the flip-flop, and an output of the flip-flop. The binary counter outputs a counter value that increases or decreases depending on whether it is 1 or 0, and the delay of the data pin path and the clock pin path is controlled by the feedback control from the counter value output from the binary counter. It characterized in that it comprises a decoder for adjusting the delay in the same direction.
바람직하게 상기 TRNG 출력 제어부는 상기 TRNG 모듈의 현재 상태와 상태에 따른 출력에 대한 히스토리를 저장하는 메모리와, 상기 2진 계수기의 카운터 값에 대해 출력된 랜덤 시퀀스의 히스토리를 저장하기 위한 메모리와, 현재의 2진 계수기의 카운터 값과 현재 플립플롭의 랜덤 출력 값을 확인하여 다음 카운터 값이 어떤 값인지를 예측하는 주소 예측기와, 상기 주소 예측기에서 출력되는 해당 카운터 값의 히스토리를 확인하고, 이를 바탕으로 카운터 값이 얼마다 골고루 분포되어 있는지를 분석하는 해밍 웨이트 산출부와, 해밍 웨이트 산출부에서 분석된 정보를 이용하여 2진 계수기에서 출력되는 카운터 값이 사용할 수 있는 타임 슬롯을 배당하는 다운 카운터 이니셜라이저와, 상기 다운 카운터 이니셜라이저로부터 배당되는 타임 슬롯을 초기값으로 입력받아 매 클럭마다 값을 하나씩 감소시키는 다운 카운터와, 상기 다운 카운터에서 출력되는 값이 0이 되면 2진 계수기의 카운터 값을 갱신하는 제로 비교기를 포함하여 구성되는 것을 특징으로 한다.Preferably, the TRNG output control unit includes a memory for storing a history of a current state and an output according to the state of the TRNG module, a memory for storing a history of a random sequence output for a counter value of the binary counter, An address predictor that predicts what the next counter value is by checking the counter value of the binary counter and the random output value of the current flip-flop, and the history of the corresponding counter value output from the address predictor. Hamming weight calculator that analyzes how evenly the counter values are distributed, and down counter initializer that allocates time slots that can be used by counter values output from binary counters using information analyzed by Hamming weight calculator. And a time slot allocated from the down counter initializer as an initial value. It characterized in that the input received comprises a down counter, and a comparator to zero when the output from the down counter value of 0 is to update the counter value of the binary counter for every clock each time decrement the value by one.
바람직하게 상기 TRNG 출력 제어부는 랜덤 출력을 위한 플립플롭에서 출력이 나올 때마다 2진 계수기에서 출력되는 카운터 값을 함께 입력받아 해당 메모리의 저장소에 값을 저장할 수 있도록 메모리의 로우 인에이블 신호를 출력하는 로우 인에이블 디코더와, 주소 예측기(210)에서 예측된 카운터 값의 히스토리를 선택하여 해밍 웨이트 산출부로 출력하는 먹스를 더 포함하여 구성되는 것을 특징으로 한다.Preferably, the TRNG output controller receives a counter value output from a binary counter and outputs a row enable signal of a memory so that a value can be stored in a storage of a corresponding memory whenever an output is output from a flip-flop for random output. And a mux outputting the row enable decoder and a history of the counter value predicted by the
바람직하게 상기 메모리는 캐쉬 메모리의 저장 공간으로 구성되어, 일부 상태에 대하여 출력 히스토리를 저장할 수 있도록, 각 상태의 일부 정보만을 이용하여 메모리에 히스토리를 저장하고, 상태 일부 정보만을 이용하여 이 값을 다시 회수하는 것을 특징으로 한다.Preferably, the memory is configured as a storage space of the cache memory, so that the history of the output can be stored for some states, the history is stored in the memory using only some information of each state, and this value is restored using only the state partial information. It is characterized by recovering.
상기와 같은 목적을 달성하기 위한 본 발명에 따른 랜덤성(randomness)을 보장할 수 있는 FPGA 기반된 진정한 난수 생성기의 성능 향상을 위한 방법의 특징은 (A) 플립플롭의 데이터 핀 경로와 클럭 핀 경로의 입력을 묶어서, 동시에 클럭신호를 주입하고, 각 경로의 지연시간을 피드백을 통해 제어하여 각각의 핀에 해당 신호가 도달하는 시간차에 의해 유사안정상태(metastable)한 랜덤 시퀀스를 출력하는 단계와, (B) 상기 출력되는 랜덤 시퀀스의 상태 정보를 저장하고, 이를 통해 출력되는 랜덤 시퀀스의 출력을 유사안정상태(metastable)를 유지할 수 있는 시간을 제어하는 단계를 포함하여 이루어지는데 있다.In order to achieve the above object, a method for improving performance of an FPGA-based true random number generator capable of guaranteeing randomness according to the present invention is characterized by (A) data pin path and clock pin path of flip-flop. Injecting clock signals and simultaneously injecting clock signals, and controlling delay times of the respective paths through feedback to output random sequences which are metastable according to the time difference between the signals reaching each pin; (B) storing the state information of the output random sequence, and controlling the time to maintain the quasi-stable state of the output of the random sequence output through it.
바람직하게 상기 (A) 단계는 PDB를 이용하여 제공되는 TOP 경로와 BOTTOM 경로를 플립플롭(Flip-Flop : FF)에 배치하는 단계와, 상기 플립플롭의 출력이 1이면 증가되고, 0이면 감소되는 카운터 값을 출력하는 단계와, 상기 출력되는 카운터 값을 바탕으로 TOP 경로와 BOTTOM 경로의 딜레이를 조절하여 각각의 핀에 해당 신호가 도달하는 시간차에 의해 유사안정상태(metastable)한 랜덤 시퀀스를 출력하는 단계를 포함하여 이루어지는 것을 특징으로 한다.Preferably, in step (A), the TOP path and the BOTTOM path provided using a PDB are disposed on a flip-flop (FF), and the output of the flip-flop is increased to 1, and decreased to 0. Outputting a counter value, and outputting a pseudostable random sequence based on a time difference at which a corresponding signal reaches each pin by adjusting a delay between a TOP path and a BOTTOM path based on the output counter value. Characterized in that comprises a step.
바람직하게 상기 (B) 단계는 카운터 값에 대해 출력된 랜덤 시퀀스의 히스토리를 저장하는 단계와, 현재의 카운터 값과 현재의 랜덤 출력 값을 확인하여 다음 카운터 값이 어떤 값인지를 예측하는 단계와, 상기 예측된 카운터 값의 히스토리를 선택하여 출력하고, 출력되는 해당 카운터 값의 히스토리를 바탕으로 카운터 값이 얼마다 골고루 분포되어 있는지를 분석하는 단계와, 상기 분석된 정보를 이용하여 출력되는 카운터 값이 사용할 수 있는 타임 슬롯을 배당하는 단계와, 상기 배당되는 타임 슬롯을 초기값으로 입력받아 매 클럭마다 값을 하나씩 감소시키고, 감소되는 값이 0이 되면 카운터 값을 갱신하는 단계를 포함하여 이루어지는 것을 특징으로 한다.Preferably, the step (B) comprises the steps of storing a history of the random sequence output for the counter value, checking the current counter value and the current random output value to predict what the next counter value is; Selecting and outputting the history of the predicted counter value, and analyzing how much the counter value is evenly distributed based on the history of the counter value outputted, and outputting the counter value by using the analyzed information Allocating a usable time slot, receiving the allocated time slot as an initial value, decreasing the value by one for each clock, and updating the counter value when the reduced value reaches zero. It is done.
바람직하게 상기 카운터의 값이 양의 방향으로 커지면 출력 중 1의 비율이 높음을 의미하고, 이는 TOP 경로의 딜레이가 상대적으로 BOTTOM 경로에 비해 짧음을 의미하므로, TOP 경로의 딜레이가 길어지거나 BOTTOM 경로의 딜레이가 짧아지는 방향으로 제어하는 것을 특징으로 한다.Preferably, when the value of the counter increases in a positive direction, the ratio of 1 in the output is high, which means that the delay of the TOP path is relatively shorter than that of the BOTTOM path, so that the delay of the TOP path is longer or the BOTTOM path is longer. It is characterized in that the control in the direction in which the delay is shortened.
바람직하게 상기 분석하는 단계는 선택된 히스토리 값 산출되는 해밍 웨이트가 N개의 비트 중 1이 몇 개가 있는지를 검출하고, 해밍 웨이트가 N/2개에 가까울수록 유사안정상태(metastable)인 것을 분석하는 것을 특징으로 한다.Preferably, the analyzing may include detecting how many 1s of N bits are selected from the Hamming weights for which the selected history value is calculated, and analyzing that the Hamming weights are similarly stable as the Hamming weights are closer to N / 2. It is done.
이상에서 설명한 바와 같은 본 발명에 따른 FPGA 기반된 진정한 난수 생성기의 성능 향상을 위한 장치 및 방법은 다음과 같은 효과가 있다.As described above, an apparatus and method for improving performance of an FPGA-based true random number generator according to the present invention have the following effects.
기존 난수 생성 방법의 경우 카운터 변화 추이가 매우 규칙적이고 가장자리에 있는 카운터가 등장할 경우, 이를 랜덤성을 파괴하는 요소로 인식하여 이 경우에는 출력을 하지 않았으나, 본 발명의 경우 가장 자리 카운터가 등장하는 패턴이 불규칙적이기 때문에, 이 역시 랜덤을 구성하는 요소로 흡수하여 이 경우에도 계속하여 출력을 할 수 있어, 필터 없이도 충분한 랜덤성이 보장되므로, 가장 자리 카운터 값을 필터링 함으로써 발생하는 처리량의 저하를 제거할 수 있다.In the conventional random number generation method, when the counter change trend is very regular and the counter at the edge appears, it is recognized as a factor that destroys randomness, and in this case, the output is not output. However, in the present invention, the edge counter appears. Since the pattern is irregular, it is also absorbed by the elements constituting random and can continue to output in this case, and sufficient randomness is ensured even without a filter, thereby eliminating the decrease in throughput caused by filtering the edge counter value. can do.
도 1 은 3개의 입력신호를 통해 23개의 출력을 생성해 낼 수 있는 LUT의 구조를 추상화하여 보여주고 있는 회로도1 is a circuit diagram showing the structure of a LUT by abstraction that can be generated by the 23 output through the third input signal
도 2 는 도 1의 구조를 활용한 딜레이 조절 가능한 버퍼를 나타낸 구성도FIG. 2 is a diagram illustrating a delay adjustable buffer utilizing the structure of FIG. 1. FIG.
도 3 은 도 2의 구조를 M개의 PDB를 직렬로 연결하여 나타낸 구성도3 is a diagram illustrating the structure of FIG. 2 by connecting M PDBs in series;
도 4 는 위에서 설명한 PDB를 이용하여 구현한 진정한 난수 생성기를 나타낸 구성도4 is a block diagram showing a true random number generator implemented using the PDB described above
도 5a 및 도 5b는 FF에서 발생할 수 있는 유사안정상태(metastabillty)에 대하여 설명하기 위한 구성도5A and 5B are diagrams for explaining the metastable state (metastabillty) that may occur in the FF
도 6 은 본 발명의 실시예에 따른 FPGA 기반된 진정한 난수 생성기의 성능 향상을 위한 구성을 나타낸 블록도6 is a block diagram showing a configuration for improving performance of an FPGA-based true random number generator according to an embodiment of the present invention.
도 7 은 도 1의 PDB 경로부의 구조를 상세히 나타낸 회로도7 is a circuit diagram showing in detail the structure of the PDB path portion of FIG.
도 8 은 도 1의 PDB 경로부의 구조를 LUT3을 이용하여 나타낸 실시예8 is a diagram showing the structure of a PDB path part of FIG. 1 using LUT3;
도 9 는 도 8의 LUT3의 구조도를 나타낸 실시예9 is a diagram showing the structure of LUT3 of FIG. 8
도 10a 및 도 10b는 각 카운터별로 1이 출력되는 확률을 제안한 방법과 기존의 방법에 대하여 나타낸 그래프10A and 10B are graphs showing a method of proposing a probability of outputting 1 for each counter and a conventional method
도 11a 및 도 11b는 전체 분포 중에서 각 카운터가 몇 번 등장했는지를 비율로 나타낸 그래프11A and 11B are graphs showing how many times each counter appeared in the total distribution
도 12a 및 도 12b는 기간에 따른 카운터 값의 변화 추이를 나타낸 그래프12A and 12B are graphs showing the change in the counter value according to the period
본 발명의 다른 목적, 특성 및 이점들은 첨부한 도면을 참조한 실시예들의 상세한 설명을 통해 명백해질 것이다.Other objects, features and advantages of the present invention will become apparent from the following detailed description of embodiments with reference to the accompanying drawings.
본 발명에 따른 FPGA 기반된 진정한 난수 생성기의 성능 향상을 위한 장치 및 방법의 바람직한 실시예에 대하여 첨부한 도면을 참조하여 설명하면 다음과 같다. 그러나 본 발명은 이하에서 개시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예는 본 발명의 개시가 완전하도록하며 통상의 지식을 가진자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이다. 따라서 본 명세서에 기재된 실시예와 도면에 도시된 구성은 본 발명의 가장 바람직한 일 실시예에 불과할 뿐이고 본 발명의 기술적 사상을 모두 대변하는 것은 아니므로, 본 출원시점에 있어서 이들을 대체할 수 있는 다양한 균등물과 변형예들이 있을 수 있음을 이해하여야 한다.A preferred embodiment of the apparatus and method for improving performance of an FPGA-based true random number generator according to the present invention will be described with reference to the accompanying drawings. However, the present invention is not limited to the embodiments disclosed below, but can be implemented in various different forms, only the embodiments to complete the disclosure of the present invention and complete the scope of the invention to those skilled in the art. It is provided to inform you. Therefore, the embodiments described in the specification and the drawings shown in the drawings are only the most preferred embodiments of the present invention and do not represent all of the technical idea of the present invention, various equivalents that may be substituted for them at the time of the present application It should be understood that there may be water and variations.
도 6 은 본 발명의 실시예에 따른 FPGA 기반된 진정한 난수 생성기의 성능 향상을 위한 구성을 나타낸 블록도이다.6 is a block diagram showing a configuration for improving performance of an FPGA-based true random number generator according to an embodiment of the present invention.
도 6과 같이, 진정한 난수 생성기(TRNG)는 PDB(Physical Data Base)와 PI 컨트롤을 이용해 랜덤 시퀀스를 생성하는 TRNG 모듈(100)과, TRNG 모듈(100)에서 출력되는 스트림과 현재의 카운터 값을 저장하고, 이를 바탕으로 TRNG 모듈(100)의 출력을 제어하는 TRNG 출력 제어부(200)로 구성된다.As shown in FIG. 6, a true random number generator (TRNG) is a
상기 TRNG 모듈(100)은 PDB를 이용하여 TOP 경로와 BOTTOM 경로를 제공하는 PDB 경로부(110)를 구성하고, 상기 PDB 경로부(110)의 다음 단에는 플립플롭(Flip-Flop : FF)(120)을 배치한다. 그리고 상기 FF(120)의 출력이 1이면 증가되고, 0이면 감소되는 카운터 값을 출력하는 2진 계수기(Binary Counter)(140)와, 2진 계수기(140)에서 출력되는 카운터 값을 바탕으로 하여 PDB 경로부(110)의 TOP 경로와 BOTTOM 경로의 딜레이를 조절하는 디코더(130)로 구성된다. The
상기 TRNG 출력 제어부(200)는 상기 2진 계수기(140)의 카운터 값에 대해 출력된 랜덤 시퀀스의 히스토리를 저장하기 위한 메모리(250)와, 랜덤 출력을 위한 FF(120)에서 출력이 나올 때마다 2진 계수기(140)에서 출력되는 카운터 값을 함께 입력받아 해당 메모리(250)의 저장소에 값을 저장할 수 있도록 메모리(250)의 로우 인에이블 신호를 출력하는 로우 인에이블 디코더(240)와, 현재의 2진 계수기(140)의 카운터 값과 현재 FF(120)의 랜덤 출력 값을 확인하여 다음 카운터 값이 어떤 값인지를 예측하는 주소 예측기(210)와, 주소 예측기(210)에서 예측된 카운터 값의 히스토리를 선택하여 출력하는 먹스(MUX)(260)와, 먹스(260)를 통해 출력되는 해당 카운터 값의 히스토리를 확인하고, 이를 바탕으로 카운터 값이 얼마다 골고루 분포되어 있는지를 분석하는 해밍 웨이트 산출부(hamming weight calculator)(270)와, 해밍 웨이트 산출부(270)에서 분석된 정보를 이용하여 2진 계수기(140)에서 출력되는 카운터 값이 사용할 수 있는 타임 슬롯을 배당하는 다운 카운터 이니셜라이저(280)와, 다운 카운터 이니셜라이저(280)로부터 배당되는 타임 슬롯을 초기값으로 입력받아 매 클럭마다 값을 하나씩 감소시키는 다운 카운터(230)와, 다운 카운터(230)에서 출력되는 값이 0이 되면 인에이블(EN) 신호를 활성화하여 2진 계수기(140)의 카운터 값을 갱신하는 제로 비교기(220)로 구성된다.The TRNG
도 7 은 도 1의 PDB 경로부의 구조를 상세히 나타낸 회로도이다.FIG. 7 is a circuit diagram illustrating in detail the structure of the PDB path unit of FIG. 1. FIG.
도 7과 같이, PDB 경로부(110)는 PDB(111)를 여러 개 직렬로 연결하여 상위에 TOP 경로(112)를 구성하고, 하위에 BOTTOM 경로(113)를 구성한다. 그리고 PBD의 딜레이 경로(112)(113)는 각각의 PDB(111)의 딜레이 조절 신호(116)에 의해 전체 경로의 딜레이를 조절할 수 있다. 상기 각각의 딜레이 조절 신호(116)는 묶어서 TOP 경로(112)의 컨트롤 신호(114)와 BOTTOM 경로(113)의 컨트롤 신호(115)로 사용되며, 이는 디코더(130)에 연결되어 TOP 경로(112)와 BOTTOM 경로(113)의 딜레이는 디코더(130)로부터 컨트롤되게 된다.As shown in FIG. 7, the
도 8 은 도 1의 PDB 경로부의 구조를 LUT3을 이용하여 나타낸 실시예이고, 도 9 는 도 8의 LUT3의 구조도를 나타낸 실시예이다.FIG. 8 is an embodiment showing the structure of the PDB path portion of FIG. 1 using the LUT3, and FIG. 9 is an embodiment showing the structural diagram of the LUT3 of FIG.
도 8과 같이, LUT3은 FPGA 칩에서 제공하는 3-input LUT(Look Up Table)이다. LUT는 FPGA를 구성하는 기본요소 중 하나이며, 칩의 구성에 필요한 조합 회로를 구성하기 위해 활용된다. 이를 활용하면 딜레이 조절이 가능한 버퍼를 만드는 것이 가능하다. As shown in FIG. 8, LUT3 is a 3-input LUT (Look Up Table) provided by an FPGA chip. The LUT is one of the basic building blocks of an FPGA, and is used to construct combinational circuits required for the chip configuration. Using this, it is possible to create a buffer with adjustable delay.
도 9를 참조하여 LUT3의 구조적 원리를 설명하면, LUT의 입력이 X개(111-1, 111-2, 111-3)라고 하면, LUTX는 2X개의 SRAM 저장공간(111-6)을 가진다. 이 값은 X 단계의 먹스(111-5)를 통해 출력 O(111-4)로 출력이 된다. 이때, SRAM 저장공간(111-6)의 값을 ‘1010 1010’으로 설정을 하고, 입력 I1(111-1), I2(111-2), 그리고 I3(111-3)를 조절하면, 각각의 SRAM 주소에 있는 값을 출력 O(111-4)를 통해 출력할 수 있다. 이때, 출력이 0이 될지 1이 될지는 입력 I1(111-1)을 통해서 결정되며, I2(111-2)와 I3(111-3)는 출력되는 값에는 영향을 미치지 않는다. 즉, 입력 I1(111-1)이 0이면 출력은 0이되고, 1이면 출력은 1이 되므로 버퍼와 같은 형태가 된다. 다만, 입력 I2(111-2)와 I3(111-3)는 출력 값에는 영향을 미치지 못하더라도, 각 SRAM에서 출력된 값이 출력되는 경로를 다르게 하는 요인이 된다. I2(111-2), I3(111-3)에 의해 결정되는 경로는 거의 같은 길이를 가진다 해도, 물리적으로 미세한 차이의 경로차가 발생하기 마련이며, 이는 버퍼의 입력으로부터 출력에 이르기 까지 값이 통과하는 시간에 영향을 줄 수 있다. 이를 심볼화하여 나타낸 것이 도 8이다. 이러한 딜레이를 조절 가능한 버퍼를 도 8과 같이 형상화 할 수 있다.Referring to FIG. 9, the structural principle of LUT3 is described. If the LUTs have X inputs 111-1, 111-2, and 111-3, LUTX has 2 X SRAM storage spaces 111-6. . This value is output to the output O (111-4) through the mux (111-5) of the X stage. At this time, if the value of the SRAM storage space 111-6 is set to '1010 1010' and the inputs I 1 (111-1), I 2 (111-2), and I 3 (111-3) are adjusted, The value at each SRAM address can be output via output O111-4. At this time, whether the output is 0 or 1 is determined by the input I 1 111-1, and the I 2 111-2 and I 3 (111-3) do not affect the output value. That is, if the input I 1 (111-1) is 0, the output is 0, and if it is 1, the output is 1, so that it is in the form of a buffer. However, although the inputs I 2 (111-2) and I 3 (111-3) do not affect the output value, the input I 2 (111-2) and the I 3 (111-3) cause a different path for outputting the value output from each SRAM. Even though the paths determined by I 2 (111-2) and I 3 (111-3) have almost the same length, physically minute differences in paths occur, which are values from the input to the output of the buffer. This can affect the time it passes. This symbolized is shown in FIG. A buffer capable of adjusting such a delay can be shaped as shown in FIG. 8.
상기 플립플롭(FF)(120)은 일반적인 D 플립플롭이다. 이때, D핀의 입력은 PDB 경로부(110)의 TOP 경로(112)가 연결되며, CLK핀의 입력은 BOTTOM 경로(113)가 연결된다. 그리고 PDB 경로부(110)의 TOP 경로(112)와 BOTTOM 경로(113)의 입력 핀은 함께 묶이며, 이 핀을 통해 클럭 신호를 공급받게 된다. 또한 TOP 경로(112)와 BOTTOM 경로(113)의 길이가 거의 같다면, FF(120)에 클럭의 상승에지가 도착하는 시간은 거의 같다고 할 수 있다. 클럭의 상승에지에서 값이 변화하는 FF(120)을 사용한다고 하면, 상승에지가 TOP 경로(112)를 통해 먼저 입력된 경우에는 FF(120)의 출력은 1이 되며, 반대의 경우 출력은 0이 된다.The flip-flop (FF) 120 is a general D flip-flop. At this time, the input of the D pin is connected to the
상기 2진 계수기(140)는 FF(120)의 출력에 따라 값이 증/감 한다. 만약 FF(120)의 출력이 1일 경우 카운터의 값은 증가하며, 반대의 경우 감소한다. 카운터의 값은 부호 비트를 따로 두어 사용할 수도 있으며, 2의 보수 형태로 음수를 표현할 수도 있으며, 구현에 제한을 두지 않는다. 음수 표현 방법은 디코더(130)의 설계에 영향을 미치며, 일반적으로 하드웨어로 구현 시에는 부호 비트를 두는 것이 디코더(130)를 구현하기에 수월함이 있다.The
상기 디코더(130)는 2진 계수기(140)로부터 전달된 카운터(부호 비트가 있는 경우 이 역시 포함) 값을 PDB 경로부(110)내의 TOP 경로(112)와 BOTTOM 경로(113)의 딜레이를 조절할 수 있는 신호로 변환하는 일을 한다. 카운터의 값이 양의 방향으로 커지면 이는 출력 중 1의 비율이 높음을 의미하고, 이는 TOP 경로(112)의 딜레이가 상대적으로 BOTTOM 경로(113)에 비해 짧음을 의미하므로, TOP 경로(112)의 딜레이가 길어지거나 BOTTOM 경로(113)의 딜레이가 짧아지는 방향으로 PDB(111)들을 제어할 수 있는 신호를 출력한다. 반대의 경우 TOP 경로(112)의 딜레이가 짧아지거나, BOTTOM 경로(113)의 딜레이가 길어지는 방향으로 제어신호를 출력한다.The
상기 메모리(250)는 N x M의 플립플롭(252)으로 구성되어 히스토리를 저장한다. 이때 N은 각 카운터당 저장되는 출력의 히스토리 개수이며, M은 카운터의 개수이다. 2진 계수기(140)의 부호를 포함한 카운터의 비트 길이를 C 비트라고 하였을 때, M은 2C개로 구성되어야 한다. 하지만 이 경우 저장 장소가 필요 이상으로 많이 필요하게 된다. 하지만, 실제 TRNG를 구하면, 카운터의 값이 PI 제어에 의해 특정 값으로 수렴하고 난 뒤에 해당 값의 특정 범위를 오르락내리락 하는 것을 반복하기 때문에, 그렇게 많은 저장공간이 필요하지 않는다는 점을 발견하였다. 따라서 본 발명에서는 캐쉬 메모리 형태의 저장공간을 제안한다. 실제 필요한 저장공간의 개수는 수렴 이후 값이 변하는 범위의 크기면 충분한다. 이 크기를 P라고 하였을 때, M을 P로 설정하고, 로우 인에이블 디코더(240)는 2진 계수기(140)에서 출력되는 카운터 값 중 LSB(Least Significant Bit) log2P 개만을 입력으로 받아 해당되는 주소에 히스토리를 저장한다. TRNG의 동작 초기에는 주로 카운터가 초기값으로부터 수렴치까지 꾸준히 증가하는 추세를 보이므로, 캐쉬 형태의 저장공간으로 인해 잘못된 히스토리가 저장될 수도 있지만, 일단 수렴한 이후로는 해당 변화 범위 내에서 제대로 된 정보로 다시 갱신되므로, 이는 큰 문제 사항이 되지 않는다. 각 플립플롭(252)은 N개씩 묶어 각 카운터에 해당하는 저장소(251)로 사용하게 된다. 이 부분은 도 6에서 오른쪽 쉬프터(right shifter) 형태의 저장소로 구성이 되며, 가장 왼쪽 FF(251)에 값이 입력되면, 원래 저장되어 있던 값들이 오른쪽으로 한 비트씩 이동이 일어나고 가장 오른쪽에 있는 값은 버려지는 형태이다. 이런 식으로 각 카운터에 대한 출력 히스토리를 기억할 수 있다.The
상기 주소 예측기(210)는 현재의 FF(120)의 출력 값과 2진 계수기(140)의 카운터 값을 이용해 다음 2진 계수기(140)의 값이 어떤 값이 될지를 예측하는 일을 한다. 이는 이미 2진 계수기(140) 내부에서 다음 카운터 값을 결정하기 위해 사용되고 있는 로직으로 구성될 수 있다. 따라서 주소 예측기(210)는 2진 계수기(140) 내부의 로직을 사용하거나, 도 6과 같이 별도의 로직을 구성하여 사용할 수 있다. 또한 주소 예측기(210)는 다음 변경될 카운터 값에 타임 슬롯(time slot)을 할당하기 위해 저장된 출력 히스토리 중에서 다음 변경될 카운터의 것을 가져오기 위해서 필요한 부분이다.The
상기 주소 예측기(210)를 통해 예상된 주소는 LSB log2P 비트만을 이용하여 다시 P개의 카운터 값 중 하나를 추출하는데 사용되며, 이는 메모리(250) 아래에 있는 N개의 먹스(260)로 공급되어 P개의 출력 중 하나를 선택하는데 사용된다. 그리고 선택된 히스토리 값은 해밍 웨이트 산출부(hamming weight calculator)(270)로 공급하여 해밍 웨이트를 산출한다. 상기 해밍 웨이트는 N개의 비트 중 1이 몇 개가 있는지를 나타내는 척도이다. 따라서 해밍 웨이트가 N/2개에 가까울수록 유사안정상태(metastable)인 셈이다. The address predicted by the
상기 다운 카운터 이니셜라이저(280)는 이러한 특성을 이용하여 해밍 웨이트를 다음 카운터에 배당한 타임 슬롯의 개수로 디코딩을 한다. 즉, 해밍 웨이트가 N/2에 가까우면 큰 타임 슬롯으로 변환하고, 그렇지 않을 경우 작은 값을 변환한다. 변환된 값은 다운 카운터(230)에 공급되며, 이 값은 매 클럭마다 줄어들게 된다. The down
상기 제로 비교기(220)는 단순 비교기로서 다운 카운터(230)의 값이 0인지를 판단하여, 0일 경우에만 2진 계수기(140)에 인에이블 신호를 활성화하여 카운터가 갱신되게 된다.The zero
이와 같이 구성됨에 따라, 본 발명은 FPGA(Field-Programmable Gate Array)를 이용하여 랜덤한 비트 시퀀스를 생성할 때, 랜덤 특성을 향상시키고, 처리량(throughput)을 늘리기 위한 FPGA 기반된 진정한 난수 생성 장치의 성능 향상을 제공할 수 있게 되며, 이를 실험결과를 통해 다음과 같이 확인할 수 있다.As such, when the random bit sequence is generated by using a field-programmable gate array (FPGA), the present invention provides an FPGA-based true random number generation apparatus for improving random characteristics and increasing throughput. Performance improvement can be provided, and the experimental result can be confirmed as follows.
도 10a는 각 카운터별로 1이 출력되는 확률을 제안한 방법을, 도 10b는 각 카운터별로 1이 출력되는 확률을 기존의 방법에 대하여 나타낸 그래프이다. 도 10a 및 도 10b에서 확률이 0.5에 가까울수록 유사안정상태(metastable)로 출력을 내는 카운터가 되는 것이며, 확률이 0에 가까우면 0을 출력하는 빈도가 높거나, 1에 가까우면 1을 출력하는 빈도가 높은 카운터 값임을 의미한다. 그리고 도 11a는 제안한 방법을 적용하였을 때, 전체 분포 중에서 각 카운터가 몇 번 등장했는지를 비율로 나타낸 그래프이고, 도 11b는 기존의 방법을 적용하였을 때, 전체 분포 중에서 각 카운터가 몇 번 등장했는지를 비율로 나타낸 그래프이다.FIG. 10A illustrates a method for proposing a probability of outputting 1 for each counter, and FIG. 10B is a graph showing a probability of outputting 1 for each counter with respect to the conventional method. In FIGS. 10A and 10B, the closer the probability is to 0.5, the more output the counter is in a metastable state. When the probability is close to 0, the frequency of outputting 0 is high, or when the probability is close to 1, 1 is output. It means that it is a high frequency counter value. FIG. 11A is a graph showing how many times each counter appeared in the total distribution when the proposed method was applied, and FIG. 11B is a graph showing how many times each counter appeared in the total distribution when the existing method was applied. It is a graph expressed as a ratio.
도면을 살펴보면, 도 10b와 같이 기존의 방법의 경우 확률이 0.4~0.6 사이에 있는 카운터는 118, 120, 121 정도로 정리할 수 있다. 이들 카운터의 등장 확률을 도 11b에서 살펴보면, 대략 0.15~0.25 사이에서 분포되어 있음을 확인할 수 있다. 대략 이들의 합은 0.6 정도 된다.Referring to the drawing, in the case of the conventional method, as shown in FIG. 10B, the counters having a probability between 0.4 and 0.6 can be arranged to about 118, 120, and 121. Looking at the appearance probability of these counters in Figure 11b, it can be seen that the distribution is approximately between 0.15 ~ 0.25. The sum of these is about 0.6.
한편, 도 10a와 같이 본 발명의 경우 확률이 0.4~0.6 사이에 분포하고 있는 카운터는 434, 437, 438로 정의할 수 있으며, 도 11a에서 살펴보면, 각각 대략 0.15, 0.25, 0.35의 등장 비율을 보이고 있다. 이들의 합은 대략 0.75 정도로 기존 방법보다 랜덤한 수의 비율이 높음을 확인할 수 있다.Meanwhile, in the case of the present invention as shown in FIG. 10A, the counters having a probability distributed between 0.4 and 0.6 may be defined as 434, 437, and 438. Referring to FIG. 11A, the counters have an appearance ratio of approximately 0.15, 0.25, and 0.35, respectively. have. Their sum is about 0.75, and the ratio of the random number is higher than the existing method.
도 12a 및 도 12b는 기간에 따른 카운터 값의 변화 추이를 나타낸 그래프로서, 도 12a는 기존 방법의 카운터 변화 추이를 나타낸 그래프이고, 도 12b는 본 발명의 카운터 변화 추이를 나타낸 그래프이다.12A and 12B are graphs showing a change in counter value over time, FIG. 12A is a graph showing a counter change in the conventional method, and FIG. 12B is a graph showing a counter change in the present invention.
도 12a를 살펴보면, 카운터가 매우 규칙적으로 112~125 사이의 구간을 오르락 내리락 하는 것을 살필 수 있으며, 도 12b를 살펴보면, 출력이 438 주변으로 집중되어 있으며, 434 주변에서도 간헐적으로 집중해서 출력되고 있음을 확인할 수 있다. 또한 출력 범위의 가장자리(430과 441) 카운터 출력 빈도가 기존 방법에 비해 훨씬 적다는 것을 그래프를 통해서 확인할 수 있다. 무엇보다 중요한 것은 기존 방법의 경우 카운터 변화 추이가 매우 규칙적이고 가장자리에 있는 카운터가 등장할 경우 이를 랜덤성을 파괴하는 요소로 인식하여 이 경우에는 출력을 하지 않는 다는 점이다. 그러나 제안 방법에서는 가장 자리 카운터가 등장하는 패턴이 불규칙적이기 때문에, 이 역시 랜덤을 구성하는 요소로 흡수하여, 이 경우에도 계속하여 출력을 할 수 있으므로, 가장 자리 카운터 값을 필터링 함으로써 발생하는 처리량의 저하가 없게 된다.Looking at Figure 12a, you can see that the counter is going up and down the section between 112 and 125 very regularly, and looking at Figure 12b, the output is concentrated around 438, and is intermittently concentrated around 434 You can check it. In addition, it can be seen from the graph that the frequency of output of the
한편, 본 발명의 실시예는 컴퓨터에서 실행될 수 있는 프로그램으로 작성가능하다. 즉, 본 발명에 따른 방법에 포함된 여러 단계들은 컴퓨터로 읽을 수 있는 기록매체에 저장될 수 있다. 상기 매체는 마그네틱 저장매체(예: 롬, 플로피 디스크, 하드 디스크 등), 광학적 판독매체(예: CD-ROM, DVD), 디지털 저장매체(예: USB 메모리, 메모리 카드(SD, CF, MS, XD) 등) 및 캐리어 웨이브(예: 인터넷을 통한 전송)와 같은 기록매체를 포함한다.Meanwhile, embodiments of the present invention can be written as a program that can be executed on a computer. That is, the various steps included in the method according to the invention can be stored on a computer readable recording medium. The media may include magnetic storage media (e.g., ROM, floppy disk, hard disk, etc.), optical read media (e.g., CD-ROM, DVD), digital storage media (e.g., USB memory, memory card (SD, CF, MS, XD), etc.) and carrier waves (eg, transmission over the Internet).
상기에서 설명한 본 발명의 기술적 사상은 바람직한 실시예에서 구체적으로 기술되었으나, 상기한 실시예는 그 설명을 위한 것이며 그 제한을 위한 것이 아님을 주의하여야 한다. 또한, 본 발명의 기술적 분야의 통상의 지식을 가진자라면 본 발명의 기술적 사상의 범위 내에서 다양한 실시예가 가능함을 이해할 수 있을 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다. Although the technical spirit of the present invention described above has been described in detail in a preferred embodiment, it should be noted that the above-described embodiment is for the purpose of description and not of limitation. In addition, those skilled in the art will understand that various embodiments are possible within the scope of the technical idea of the present invention. Therefore, the true technical protection scope of the present invention will be defined by the technical spirit of the appended claims.
Claims (16)
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020120073464A KR101406941B1 (en) | 2012-07-05 | 2012-07-05 | Apparatus and method for enhancing FPGA-based true random number generator and computer-readable recording medium with program therefor |
| KR10-2012-0073464 | 2012-07-05 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2014007583A1 true WO2014007583A1 (en) | 2014-01-09 |
Family
ID=49882271
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/KR2013/006008 Ceased WO2014007583A1 (en) | 2012-07-05 | 2013-07-05 | Apparatus and method for enhancing performance of fpga-based true random number generator |
Country Status (2)
| Country | Link |
|---|---|
| KR (1) | KR101406941B1 (en) |
| WO (1) | WO2014007583A1 (en) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11544039B2 (en) | 2020-10-19 | 2023-01-03 | Cisco Technology, Inc. | Random number generator |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP7331734B2 (en) * | 2020-03-02 | 2023-08-23 | トヨタ自動車株式会社 | Information provision method, information provision system, and terminal |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20100281088A1 (en) * | 2009-04-29 | 2010-11-04 | Psigenics Corporation | Integrated true random number generator |
| US8131789B2 (en) * | 2008-03-28 | 2012-03-06 | Atmel Corporation | True random number generator |
| KR101127961B1 (en) * | 2006-12-01 | 2012-04-12 | 한국전자통신연구원 | Real water generator using oscillator sampling method |
| 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 |
-
2012
- 2012-07-05 KR KR1020120073464A patent/KR101406941B1/en not_active Expired - Fee Related
-
2013
- 2013-07-05 WO PCT/KR2013/006008 patent/WO2014007583A1/en not_active Ceased
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| 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 |
| KR101127961B1 (en) * | 2006-12-01 | 2012-04-12 | 한국전자통신연구원 | Real water generator using oscillator sampling method |
| US8131789B2 (en) * | 2008-03-28 | 2012-03-06 | Atmel Corporation | True random number generator |
| US20100281088A1 (en) * | 2009-04-29 | 2010-11-04 | Psigenics Corporation | Integrated true random number generator |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11544039B2 (en) | 2020-10-19 | 2023-01-03 | Cisco Technology, Inc. | Random number generator |
Also Published As
| Publication number | Publication date |
|---|---|
| KR101406941B1 (en) | 2014-06-27 |
| KR20140006467A (en) | 2014-01-16 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP7339976B2 (en) | Methods, electronic devices, computer readable storage media, corresponding chips and computer programs for testing chips | |
| US10545865B2 (en) | Systems and methods for implementing low-latency lookup circuits using sparse hash functions | |
| US20110050279A1 (en) | Lightweight secure physically unclonable functions | |
| JP5831202B2 (en) | Individual information generation apparatus and individual information generation method | |
| CN112272084B (en) | Anti-attack and self-checking characteristic key generation system and method based on composite PUF | |
| US11411749B2 (en) | System and method for performing netlist obfuscation for a semiconductor device | |
| WO2015102359A1 (en) | Apparatus and method for generating random digital value | |
| Zhang et al. | Evaluating the Optimized Implementations of SNOW3G and ZUC on FPGA | |
| US11586418B2 (en) | Random number generator, random number generating circuit, and random number generating method | |
| CN106919860B (en) | Circuit for implementing a physically unclonable function and corresponding operating method | |
| CN104615950B (en) | The circuit design method and detection method of minimum hardware Trojan horse can be detected | |
| US8044833B2 (en) | High speed serializer | |
| CN104636686B (en) | The circuit design method and the detection method to hardware Trojan horse of raising hardware Trojan horse detection resolution based on gated clock | |
| CN104636687B (en) | Improve the circuit design method and hardware Trojan horse detection method of hardware Trojan horse detection resolution | |
| US20170060866A1 (en) | Building of a hash table | |
| WO2014007583A1 (en) | Apparatus and method for enhancing performance of fpga-based true random number generator | |
| US11868511B2 (en) | Digital fingerprint generator and method for generating digital fingerprint | |
| CN109284637B (en) | Integrated circuit based on logic encryption and encryption method thereof | |
| Bernard et al. | Implementation of Ring‐Oscillators‐Based Physical Unclonable Functions with Independent Bits in the Response | |
| CN117010032B (en) | Automatically read and clear SRAM physical unclonable function circuits and devices | |
| Klimushyn et al. | Crypto-resistant methods and random number generators in internet of things (iot) devices | |
| CN117081751A (en) | High-reliability quantitative response arbiter type PUF structure | |
| CN111106816A (en) | Method for providing a reference clock | |
| CN112084539B (en) | Multifunctional physical unclonable function device based on mixed Boolean network | |
| US10027345B2 (en) | Wall encoding and decoding |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 13812551 Country of ref document: EP Kind code of ref document: A1 |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 13812551 Country of ref document: EP Kind code of ref document: A1 |