WO2015140365A1 - Method and device for generating identifiers and truly random numbers - Google Patents

Method and device for generating identifiers and truly random numbers Download PDF

Info

Publication number
WO2015140365A1
WO2015140365A1 PCT/ES2015/000038 ES2015000038W WO2015140365A1 WO 2015140365 A1 WO2015140365 A1 WO 2015140365A1 ES 2015000038 W ES2015000038 W ES 2015000038W WO 2015140365 A1 WO2015140365 A1 WO 2015140365A1
Authority
WO
WIPO (PCT)
Prior art keywords
cells
memory
bits
value
block
Prior art date
Application number
PCT/ES2015/000038
Other languages
Spanish (es)
French (fr)
Inventor
Iluminada BATURONE CASTILLO
Susana EIROA LORENZO
Miguel Ángel PRADA DELGADO
Original Assignee
Universidad De Sevilla
Consejo Superior De Investigaciones Científicas
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Universidad De Sevilla, Consejo Superior De Investigaciones Científicas filed Critical Universidad De Sevilla
Publication of WO2015140365A1 publication Critical patent/WO2015140365A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random number generators, i.e. based on natural stochastic processes

Definitions

  • the present invention aims at a method consisting of two stages: a first stage of classification of static memory cells into two disjoint assemblies according to their behavior before repeated times when they are connected to power after having been in sufficient time without power, so that the cells of one of the sets are suitable for generating identifiers (keys or secrets) and those of the other are suitable for generating truly random numbers. Thanks to this classification, in the second stage of number generation, the identifiers as well as the random numbers generated offer better performance.
  • the device for implementing the proposed method that can be performed by adding very simple circuitry to memory or by executing very simple software is also object of the invention.
  • the scientific-technical areas to which the invention can correspond are those of Cryptography, Electronic Technology, Security and Privacy.
  • Static memory cells are characterized in that they have two stable states, so that they maintain the binary data (logical value "0" or "1") that is written to them while they are powered, but they lose information if the power is interrupted. If they are fed but they are not written, the cells evolve towards one value or another in a way that is difficult to predict, model mathematically and clone physically, so it is very difficult to obtain a set of cells that behave same form. Taking advantage of these features, these cells have been used to generate truly random circuit identifiers and numbers. Static memory cells consist of cross-coupled circuits, such as latches, flip-flops, ⁇ OR doors, inverters, etc. In [Kumar2008] cells based on two cross latches are proposed to identify FPGAs.
  • a challenge-response technique is usually used with memory cells to identify the device in which the memory is included, so that the challenge is the cells to be used and the responses are the values to those that stabilize the cells when the power is connected to them [Guajardo2007] [Holcomb2009] [Kim2010] [Gebara2012]. Other methods that combine the responses of the cells have also been proposed.
  • a registration stage is always necessary in which each device is assigned an identifier, ID.
  • ID the distance (usually a Hamming distance, HD) between the ID generated by the device and those registered is calculated and the device is identified as the one whose registered ID has the shortest distance.
  • the proposal in [Holcomb2009] is to average the values at which a given set of SRAM cells are stabilized for a given number of measurements made at the nominal supply temperature and voltage and, based on the average obtained, assign each cell the most likely binary value to form with them the registered identifier.
  • the proposal in [Kim2010] is to generate an identifier as in [Holcomb2009], but not a single identifier obtained under nominal operating conditions, but to generate several identifiers for various operating conditions, mainly for various temperatures. The more IDs you register For each SRAM, one for each temperature, the better the characterization of the SRAM.
  • Cross-coupled circuits have also been used to design truly random number generators (TRNGs).
  • TRNGs truly random number generators
  • the idea is to use the initial values of the cells as a source of entropy, extracting the noise that causes a cell in a meta-stable state (which is neither of its two stable states) to evolve into one of its stable states.
  • Entropy is a mathematical measure of disorder, randomness or variability. According to the recommendations of the NIST (National Institute of Standards and Technology), the minimum entropy is the measure in the worst case of the uncertainty of a random variable, that is, it provides the maximum value that can take the probability of hitting the value of the random variable.
  • the minimum entropy of a binary source such as a memory cell, is defined as: Hmi * - -lo & G * ) where p max is the maximum of a cell's chance of taking a "0" or a '' .
  • each sequence of n bits has the following total minimum entropy:
  • Asymmetric cells are not suitable for generating randomness since their behavior can be predicted.
  • Symmetric cells are much more suitable. It has been proposed to include additional circuitry that controls the original noise level of the cells and adjusts them to operate in a meta-stability regime. Other authors have also proposed to include circuitry to evaluate the quality of random numbers as they are generated. Another option is to process the bits to improve their statistical properties.
  • the patent application [Harris2011] proposes the processing of the initialization bits generated by an error correction circuit.
  • the proposal in [Holcomb2009] is to use a compression function (in particular a PH hash function) that compresses a sequence of many more bits, the more the smaller the total minimum entropy that has been obtained.
  • the work in [Leest2012] uses a SHA-256 as hash function.
  • the patent in [N ⁇ shino2005] also proposes the use of hash melons, preferably the MD2, MD4 or MD5 algorithms.
  • the total minimum entropy values reported for SRAMs are usually low, because most cells always stabilize at the same value. For example, it is reported in [Holcomb2009] that to obtain a 128-bit number that passes the statistical tests of randomness 4096 bits are needed and in [Leest2012] it is reported that to obtain a 256-bit number, 12800 bits are required (in [Leest2012] different operating temperatures are contemplated for memory). The more bits that are necessary (because the lower the total minimum entropy), the slower the generation of random numbers.
  • Authentically random numbers are used in a multitude of encryption algorithms and secure communication protocols. In many cases, they are used as a seed to initialize algorithms for generating pseudo-random numbers, as proposed in [Leest2012]. In [Handschuh2012], random numbers are also derived from memory initialization bits in an indirect way, using a deterministic random number generator.
  • Figure 1 Flow chart illustrating the steps of the first phase of the method of the invention.
  • Figure 2 Flow chart illustrating the steps of the second phase of the method of the invention.
  • Figure 3 Percentage of cells for the 20 samples of the analyzed circuit that are always stabilized at the same value in all operating conditions when: (a) all memory cells are contemplated because the method of the invention has not been applied ( in continuous black line), (b) only the cells labeled A are contemplated when the first phase of the method of the invention is carried out once contemplating three values of supply voltage and the same temperature (in continuous gray line) and (c) Only cells labeled A are contemplated when performing the first phase of the method of the invention three times contemplating three operating temperatures and the same supply voltage (in broken lines).
  • Figure 4 Impost and genuine populations for 128-bit identifiers when the bits come from: (a) any 128 cells in memory because the method of the invention has not been applied (in continuous black line), (b) 128 labeled cells as A when performing the first phase of the method of the invention once contemplating three values of supply voltage and the same temperature (in solid gray line) and (c) 128 cells labeled as A when performing the first phase of the method of three times. the invention contemplating three operating temperatures and the same supply voltage (in dashed lines).
  • Figure 5 Minimum total entropy (in%) for the 4 samples of the circuit measured in (a) nominal conditions, (b) the worst case for conditions in which the supply voltage varies and (c) the worst case for conditions in which vary the operating temperature.
  • the total minimum entropy measured when the 2280 memory cells (without applying the method of the invention) is shown in a continuous black line, in a continuous gray line when the cells labeled B are considered when performing once the first phase of the method of the invention contemplating three values of supply voltage and the same temperature and in broken lines, when considering the cells labeled B when performing the first phase of the method of the invention three times contemplating three operating temperatures and The same supply voltage.
  • Figure 6 Block diagram of the device that implements the method of the invention.
  • Figure 7 Schematic illustrating an embodiment of the device using additional circuitry in an FPGA to perform the classification and control blocks.
  • the method proposed in the present invention aims at a new registration stage in which memory cells are classified into two disjoint sets, one suitable for generating identifiers (keys or secrets), and another suitable for generating random numbers. Thanks to this classification, in the number generation stage, the generated identifiers are more repeatable, so that they can have a smaller number of bits to achieve the same identification capabilities, keys or secrets can be generated reducing the complexity of the error correction codes and the entropy of the random numbers generated is improved. In addition, all this is achieved with the same registration stage, which can be repeated to improve the quality of the identifiers and random numbers generated in different operating conditions.
  • the method can be applied without the need for a complex and expensive experimental setup (temperature chambers or temperature forcing systems are not necessary), but simply by controlling the supply voltage.
  • the registration stage can be carried out with the memory in its application context, in a convenient and simple way. It is not necessary for the registration stage to be carried out by specialized vendors or at the factory where the memory is manufactured.
  • the device presented in this invention to implement the proposed method can be made by adding very simple circuitry to any static memory or by running very simple software.
  • the device can be authenticated without the need to store its identifier because it generates it in operation time and, at the same time, it can safely communicate its identity and any other sensitive information using the truly random numbers it generates.
  • the proposed method allows generating at least one identification number of n bits and at least a truly random number of m bits from N static memory cells, each cell having the capacity to store a bit of information, in which n can take values from 0 to Nm and m can take values from 0 to Nn.
  • the method is characterized in that it comprises a first phase in which classify the N memory cells into at least two groups labeled A and B, and a second phase in which at least one identification number of n bits is generated from n cells labeled in the first phase as A and at least a truly random number of m bits from m cells labeled in the first phase as B, where the first phase of classification is carried out at least once, so that, once the cells are classified, the generation of numbers of Identification and randomization can be carried out directly by executing the second phase without having to re-execute the first phase.
  • the first phase of the method comprises: (a) leaving the memory without power (and, therefore, its cells) for a sufficient time for all the values of the bits that could be stored to disappear,
  • step (f) compare the bit values obtained in step (e) with those saved in step (c), classifying the memory cells into two groups: the cells that always provide the same bit value and the cells that once they have provided a different bit value, (g) go to step (h) if all measurements have already been taken for the same set supply voltage value; while, in another case, return to step (d),
  • step (h) label the cells that have always provided the same bit value for all measurements made at the same voltage value as S, label the other cells as U and save the result of the classification for the analyzed voltage value, (i) go to step (j) if all the supply voltage values have already been analyzed; while, in another case, set a new supply voltage value to analyze and return to step (a),
  • FIG. 1 shows the flow chart illustrating the steps of the first phase of the method of the invention.
  • the second phase of the method in turn comprises:
  • FIG. 2 shows the flow chart illustrating the steps of the second phase of the method of the invention.
  • the method is also characterized in that when the first phase of the method is repeated, the cells that in the previous first phase were labeled with A are labeled with A and in the current first phase of the method they are re-labeled as A; the cells that in the previous first phase were labeled with B are tagged with B and in the current first phase of the method they are re-labeled as B and the rest of the cells are labeled with a C tag.
  • the first phase of the method is performed without indicating that it is a repetition, any result of possible previous classifications is deleted and the result of the current classification is stored. The repetition of the first phase of the method allows the classification to be refined considering other possible memory operating conditions.
  • SRAMs are part of many integrated circuits or electronic devices, the method of this invention focuses primarily on them, but other types of static memory cells can be used.
  • TSMC Transistor Manufacturing Company
  • the memory has not been disconnected from the rest of the circuitry. Twenty samples of the same integrated circuit have been analyzed under different operating conditions: supply voltage of 0.9Vdd, Vdd and 1.1 Vdd, with Vdd the nominal supply value; and temperatures of 5 ° C, 25 ° C and 75 ° C.
  • Figure 3 shows in a continuous black line the percentage of cells for the 20 samples of the circuit that are always stabilized at the same value in all operating conditions if the method of the invention is not applied. If the first phase of the method of the invention is applied considering the three supply voltage values (0.9Vdd, Vdd, and 1.1Vdd) at the same temperature (25 ° C in that case), the percentage of cells that are labeled as A is between 71.4% and 83.9%. The percentage of these cells for the 20 circuit samples that are always stabilized at the same value in all operating conditions (considering the rest of the temperatures) is shown in a continuous gray line in Figure 3. When considering only the cells labeled A , the percentage of them that always provides the same value has increased considerably, passing, for example in one of the samples, from 73.8%, if the method is not applied, to 90.5%, when the method is applied.
  • n cells labeled A are required. If, in the worst case, type A cells are 62.5% of the N, the order of 1.6n cells needs to be labeled at least. For example, for a 128-bit identifier, N ⁇ 205 cells are required.
  • the number of cells N analyzed in the first phase sets the maximum bit size of the identifiers that can be generated.
  • an identifier with more bits or several identifiers with fewer bits each can be generated. The latter case may be interesting to change the identifier that is generated, for example to revoke identifiers that might have been compromised.
  • Figure 4 illustrates how the application of the method of the invention improves the separation between the impostor and genuine population in identification / authentication applications.
  • the graphics correspond to 128-bit IDs.
  • the resulting populations are shown in continuous black line when any 128 cells in memory are used.
  • the resulting populations are shown in a continuous gray line when the first phase method is applied considering the three supply voltage values (0.9Vdd, Vdd, and 1.1 Vdd) at the same temperature (25 ° C) and the ID is generated with 128 cells labeled A.
  • the resulting populations are shown in dashed lines when the method is applied, applying the first phase three times considering only the nominal supply voltage value (the first time when the circuit's operating temperature was 25 ° C, subsequently repeated for 5 ° C, and again repeated for 75 ° C) and the ID is generated with 128 cells labeled A.
  • the ID of the user In identification / authentication applications, the ID of the user must be re-registered. memory if the first phase of the method is repeated.
  • the results are advantageous not only to generate IDs but also to retrieve secrets or keys.
  • Figure 4 illustrates that the maximum Hamming distance between IDs obtained in the key recovery phase and IDs registered for the same set of cells (genuine population) can reach 22% if the method is not applied, which is equivalent to the percentage of error that would have to correct the error correction code in an HDA algorithm.
  • Applying the first phase of the method once contemplating different supply voltages and the same temperature the maximum distance is reduced to 15%, which considerably simplifies the decoder of the error correction code. If the first phase of the method is carried out three times contemplating three different operating temperatures and the same supply voltage, as mentioned above, the reliability of the key generation is increased (Hamming's maximum distance is reduced up to 10% ).
  • Figure 5 shows the minimum total entropy for the 4 samples of the circuit measured in (a) nominal conditions, (b) the worst case for conditions in which the supply voltage varies and (c) the worst case for conditions in which the operating temperature varies.
  • Figure 5 shows the minimum total entropy measured when considering the cells labeled B after applying the first phase of the method of the invention considering the three values of supply voltage (0.9Vdd, Vdd, and 1.1 Vdd) at the same temperature (25 ° C in that case). The worst value obtained is increased to 7.75%. The percentage of cells that are labeled B is between 8.9% and 10%.
  • the total minimum entropy measured when considering the cells labeled B after considering the first phase of the method three times considering the nominal voltage value and the three operating temperatures of 5 ° C, 25 ° C and 75 ° is shown in broken lines. C, as previously commented. The worst value obtained from total minimum entropy increases to 16%. The percentage of cells that are labeled B is reduced, between 2.6% and 3.8%.
  • m cells labeled B are needed. If, in the worst case, type B cells are 8.9% of the N, at least 11.2m cells need to be labeled. For example, to generate a random number of 80 bits, you need N ⁇ 896 cells. If the classification has been further refined and, in the worst case, type B cells are 2.6% of the N, at least 38.5m cells need to be labeled. For example, to generate a random number of 80 bits, you need N> 3080 cells.
  • the number of N cells analyzed in the first phase sets the maximum bit size of the truly random numbers that can be generated. Normally this is not a limitation because the static memories used in today's electronic devices are high capacity. Of course, depending on the application, a random number with more bits or several random numbers with fewer bits each can be generated.
  • the first phase of the method can be carried out in any time interval in which it is not necessary to generate random identifiers or numbers. In addition, it is not a phase that has to be carried out continuously. On the other hand, the time for number generation is essentially marked by the reading time of the cells necessary to generate the n-bit identifier and the random number of m bits.
  • the memory analyzed in the experiments provided 60 bits for each word and the reading time of each word was at least 2.4 nanoseconds. In the worst case (if each cell had different access addresses) to generate a number of n bits, 2.4 nanoseconds would be needed for each bit, for example 307.2 nanoseconds for a 128-bit number. If the analyzed memory is double port, the time is reduced by half: 1.2 nanoseconds per bit in the worst case, for example 153.6 nanoseconds for a 128-bit number.
  • the method of the invention not only reduces the reading time of cells (because fewer cells need to be read) but also the time of the possible subsequent processing (for example, if a hash function is applied to obtain a completely random 128-bit seed in In all operating conditions, 942 bytes would need to be processed without applying the method, while 207 bytes would only need to be processed after applying the method with a first phase contemplating three supply voltage values, as discussed above, which would mean a reduction in the data processing of 78%).
  • the method can be implemented by means of a device that has at least two selectable modes of operation: memory cell labeling mode and number generation mode, where the number generation mode works correctly if the data mode has been previously carried out. tagged at least once.
  • Said device is characterized in that it comprises:
  • a classification block (3) which, if the mode of operation is that of labeling, analyzes which cells in memory (1) to assign the label A and to which the label B, and, if the mode of operation is that of number generation, sends the classification result to the control block (4);
  • a control block (4) that controls all other blocks to execute the steps of the method, so that: (a) it indicates to the voltage block (2) when not to feed the memory (1) and when to feed it and, in that case, set the value of the supply voltage; (b) enables the reading of the memory (1) and activates the specific signals of the reading of the memory cells; (c) indicates to the classification block (3) the mode of operation and, if the mode of operation is that of number generation, (d) uses the information stored in the labeling mode to read the bits generated by the memory cells with tag
  • Figure 6 shows the block diagram of the device that implements the method of the invention.
  • the static memory (1) is a static random access memory, SRAM.
  • the voltage block can be made using a programmable power supply available in many laboratories. However, to achieve a portable and cheap embodiment that can, for example, be included in the printed circuit board containing the memory, it is preferable that the voltage block (2) comprises:
  • the classification block (3) comprises:
  • NxP bits N bits for each one of the P voltage values analyzed
  • each bit of them N labeling one of the N memory cells analyzed, so that the bit value indicates if the cell has been labeled as S (bit value "0") or as U (bit value "1") for each voltage value, so that, in the case of analyzing a single voltage value, at a a cell labeled S is assigned the code of tag A and a cell labeled as U is assigned the code of tag B;
  • the memories or records used by the classification block can be deleted or rewritten after the labeling mode, except for the memory or records stored the 2N bits of the labels, which must be maintained to be used in the device number generation mode or in possible repetitions of the labeling.
  • control block (4) comprises:
  • the labels associated with the cells are stored in order, it is possible to know how to access the cells labeled as A to generate the identifiers and those labeled as B to generate the random numbers (it is known, for example, to which word in the memory they correspond and what bit inside the word).
  • the control block (4) receives as configuration parameters at least the number N of memory cells to be analyzed, the number P of supply voltages to be set, the number Q of Measures to be taken for each supply voltage and a REP binary signal, which indicates whether the labeling is repeated or not, and receives a start signal, INIT, which initializes all counters to zero and marks the beginning of the labeling process, so that the control block (4), for each of the voltages to be analyzed, tells the voltage block (2) not to feed the memory (1) for the necessary time, which is controlled by one of the counters of the control block; After that time, the control block (4) instructs the voltage block (2) to feed the memory (1) to the determined voltage value and activates the specific signals of the data reading in the memory (1) to read the bits to which N memory cells have been stabilized, the reading mechanism of the input signals and memory (1) depending, the timing of said reading depending on the type of memory used, and controlling one of the block counters control (4) when the reading of N cells at least
  • the control block (4) receives as configuration parameters at least the size in bits, n, of the identifier to be generated and the size in bits, m, of the random number to be generated, and receives a start signal, INIT, which initializes all the counters to zero and marks the beginning of the generation process, so that the control block (4) tells the voltage block (2) not to supply the memory (1) for the necessary time, which is controlled by one of the counters of the control block; after that time (or if the memory had already been disconnected from the power for at least that time) the control block (4) tells the voltage block (2) to feed the memory to the nominal voltage value and tells the classification block (3) to send the associated labels to the N cells, so that they are translated into access addresses to the cells of type A and B of the memory (1); using this information, the control block activates the specific signals of the data reading in the type A and B cells of the memory (1), the reading mechanism of the input signals and the memory (1) and the timing of said reading depending on the type of
  • Embodiment of the invention The functionality of the classification and control blocks can be carried out by means of software executed in a microcontroller or microprocessor for which the memory is an external memory.
  • FIG. 7 illustrates a schematic of this solution.
  • This exemplary embodiment includes a static SRAM memory, external to the FPGA, with a capacity for 2 15 words of 8 bits each, which allows parallel reading of the 8 bits.
  • the voltage block also external to the FPGA, contains a potentiometer controlled by an 11-bit signal and a switch controlled by a 1-bit signal, where the 12 control bits are provided by the control block implemented by a state machine finite (FSM) in the FPGA.
  • FSM state machine finite
  • Both the FPGA and the voltage block receive power externally through a voltage regulator while the SRAM receives power from the voltage block.
  • Everything is included in a small printed circuit board.
  • the SRAM is not part of any digital system but in other embodiments, the SRAM could be a block of a larger system and it would not be necessary to disconnect it from the system.
  • the FSM (control block) implemented in the FPGA controls, by means of the binary signal "Mode" (which takes the value indicated to the input), if the mode of operation is number generation (in which case the bits that are read from the SRAM are sent to the control block) or the mode is labeled (in which case the bits that are read are sent to the classification block).
  • the FSM (control block) controls all the write and read enable signals of the FPGA Block RAMs and all the timing of the labeling steps.
  • the FSM contains a 32-bit counter to measure the time left to the memory block without feeding. This counter has the size necessary to count at least 30 seconds at the clock frequency of the FPGA (which is 50MHz) without overflowing.
  • the FSM also contains a 5-bit counter to count the measurements, Q, which are carried out for each supply voltage value (which takes the value indicated at the input) and a 2-bit counter to count the number, P, of the voltage values to be analyzed (which takes the value indicated to the input, limited in this example of embodiment to 3 values).
  • the WFTU also controls whether the measurement taken from memory is the first of a labeling phase or not.
  • the bits that are read for the first time from the SRAM are stored in one of the FPGA Block RAMs and the bits of the successive measurements are compared with them by XOR operators (8 XOR operators in this embodiment to compare the 8 bits of a word in parallel).
  • the results (S or U labels) for the three possible supply voltage values of this example are stored in the other three Block RAMs.
  • the FSM contains a 10-bit counter to count the N memory cells to analyze (up to 2 x 10 x 8 cells, but with the limit in 6144 cells). The 10-bit counter performs the function of addressing the memory.
  • the new labels (A, B or C) obtained are compared by XOR operators with those previously stored, so that if the output of these operators indicates that there has been no change of labeling, the stored labels are maintained while if there has been change, the label C is stored.
  • This labeling control is the one that performs the sub-block called "labeling logic" within the classification block.
  • the 10-bit counter of the FSM also performs the function of addressing the memory.
  • the sub-block "tag translator" that contains the FSM checks if there is a bit in the word addressed by the counter to be used to generate an identifier or a truly random number. If so, the WFTU reads that word from the SRAM and selects the bits for the identifier or the random number based on its label. If not, the counter is incremented without that word being read.
  • a 7-bit counter counts the number of bits, n, of the identifiers and the number of bits, m, of the random numbers.
  • the bits of the truly random identifier and number are provided in series by the ID and TRN outputs, respectively.
  • the 7 bits for the n / P input bus are taken as the value of n (number generation mode) or P (labeling mode) and the 7 bits for the m / Q input bus are they take the value of m (number generation mode) or Q (labeling mode).
  • the 10 bits per input bus N allow you to choose the number of addresses that are read at most from memory, while the binary signals INIT, REP and FIN indicate, respectively, the start of processing, whether or not there is a repetition of the mode labeling and completion of processing.

Abstract

The invention relates to a method comprising two steps. The first step involves classifying the static memory cells into two discrete sets according to their behaviour towards repeatedly being connected to a power supply after having been with out a power supply for a sufficient period of time, such that the cells of one of the sets are suitable for generating identifiers (key or secret) and the cells of the other set are suitable for generating truly random numbers. Thanks to this classification, in the second step, involving the generation of numbers, the identifiers and the random numbers generated perform better. The invention also relates to a device for carrying out the method according to the invention, said method being carried out by adding very simple circuitry to the memory or running very simple software. The scientific-technical fields of the invention are those of cryptography, electronic technology, security and privacy.

Description

Título  Title
Método y dispositivo para generar identificadores y números verdaderamente aleatorios  Method and device to generate truly random identifiers and numbers
Objeto de la invención Object of the invention
La presente invención tiene por objeto un método que consta de dos etapas: una primera etapa de clasificación de las celdas de memoria estáticas en dos conjuntos disjuntos según su comportamiento ante repetidas veces en que se conectan a alimentación tras haber estado un tiempo suficiente sin alimentación, de manera que las celdas de uno de los conjuntos son adecuadas para generar identificadores (claves o secretos) y las del otro son adecuadas para generar números verdaderamente aleatorios. Gracias a esta clasificación, en la segunda etapa de generación de números, los identificadores así como los números aleatorios generados ofrecen mejores prestaciones. También es objeto de la invención el dispositivo para implementar el método propuesto que puede realizarse añadiendo circuitería muy simple a la memoria o ejecutando un software muy sencillo. Las áreas científico- técnicas a las que se puede corresponder el invento son las de Criptografía, Tecnología Electrónica, Seguridad y Privacidad.  The present invention aims at a method consisting of two stages: a first stage of classification of static memory cells into two disjoint assemblies according to their behavior before repeated times when they are connected to power after having been in sufficient time without power, so that the cells of one of the sets are suitable for generating identifiers (keys or secrets) and those of the other are suitable for generating truly random numbers. Thanks to this classification, in the second stage of number generation, the identifiers as well as the random numbers generated offer better performance. The device for implementing the proposed method that can be performed by adding very simple circuitry to memory or by executing very simple software is also object of the invention. The scientific-technical areas to which the invention can correspond are those of Cryptography, Electronic Technology, Security and Privacy.
Estado de la técnica State of the art
Las celdas de memoria estáticas se caracterizan porque poseen dos estados estables, de forma que mantienen el dato binario (valor lógico "0" ó "1") que se les escribe mientras están alimentadas, pero pierden la información si se les interrumpe la alimentación. Si se alimentan pero no se les escribe ningún dato, las celdas evolucionan hacia un valor u otro de una forma que es difícil de predecir, modelar matemáticamente y clonar físicamente, por lo que es muy difícil obtener un conjunto de celdas que se comporten de la misma forma. Aprovechando estas características, estas celdas se han empleado para generar identificadores de circuitos y números verdaderamente aleatorios. Las celdas de memoria estáticas están constituidas por circuitos acoplados en cruz, como latches, flip-flops, puertas ÑOR, inversores, etc. En [Kumar2008] se proponen celdas basadas en dos latches en cruz para identificar FPGAs. En [Maes2008] se propone el uso de flip-flops para identificar FPGAs. En [Su2008] se proponen celdas basadas en dos puertas OR en cruz para identificar circuitos integrados de aplicaciones específicas. En [Layman2004] se propone un método que emplea celdas basadas en dos inversores en cruz (las típicas que forman las memorias estáticas de acceso aleatorio, SRAMs) para identificar las obleas de circuitos integrados y/o los dados en que se divide cada oblea. Static memory cells are characterized in that they have two stable states, so that they maintain the binary data (logical value "0" or "1") that is written to them while they are powered, but they lose information if the power is interrupted. If they are fed but they are not written, the cells evolve towards one value or another in a way that is difficult to predict, model mathematically and clone physically, so it is very difficult to obtain a set of cells that behave same form. Taking advantage of these features, these cells have been used to generate truly random circuit identifiers and numbers. Static memory cells consist of cross-coupled circuits, such as latches, flip-flops, ÑOR doors, inverters, etc. In [Kumar2008] cells based on two cross latches are proposed to identify FPGAs. In [Maes2008] it proposes the use of flip-flops to identify FPGAs. In [Su2008], cells based on two OR cross doors are proposed to identify integrated circuits of specific applications. In [Layman2004] a method is proposed that uses cells based on two cross inverters (the typical ones that form the static random access memories, SRAMs) to identify the integrated circuit wafers and / or the dice into which each wafer is divided.
En aplicaciones de identificación, se suele usar una técnica reto-respuesta con las celdas de memoria para identificar el dispositivo en el que esté incluida la memoria, de modo que el reto sean las celdas que se van a emplear y las respuestas sean los valores a los que se estabilizan las celdas cuando se les conecta la alimentación [Guajardo2007] [Holcomb2009] [Kim2010] [Gebara2012]. También se han propuesto otros métodos que combinan las respuestas de las celdas. En estas aplicaciones siempre es necesaria una etapa de registro en la que a cada dispositivo se le asigna un identificador, ID. En la etapa de identificación, se calcula la distancia (normalmente una distancia de Hamming, HD) entre el ID generado por el dispositivo y los registrados y se identifica el dispositivo como aquel cuyo ID registrado presente la menor distancia. En aplicaciones de autenticación solo se registra un dispositivo, de modo que en la etapa de autenticación se calcula la distancia entre el ID generado y el registrado y si la distancia está por debajo de un umbral, el dispositivo se considera auténtico, y si no, el dispositivo se considera falso. La calidad de una técnica de identificación/autenticación se suele evaluar midiendo las razones de falso rechazo (FRR, "False Rejection Rate") y de falsa aceptación (FAR, "False Acceptance Rate") para cada valor de umbral elegido. Lo ideal es que exista al menos un valor de umbral para el que no haya dispositivos auténticos rechazados como falsos (FRR=0) y, a la vez, no haya dispositivos falsos aceptados como auténticos (FAR=0). De forma equivalente, también se representan los porcentajes de población genuina (auténtica) e impostora frente a cada valor de umbral elegido. Lo ideal es que ambas poblaciones estén claramente separadas. In identification applications, a challenge-response technique is usually used with memory cells to identify the device in which the memory is included, so that the challenge is the cells to be used and the responses are the values to those that stabilize the cells when the power is connected to them [Guajardo2007] [Holcomb2009] [Kim2010] [Gebara2012]. Other methods that combine the responses of the cells have also been proposed. In these applications a registration stage is always necessary in which each device is assigned an identifier, ID. In the identification stage, the distance (usually a Hamming distance, HD) between the ID generated by the device and those registered is calculated and the device is identified as the one whose registered ID has the shortest distance. In authentication applications only one device is registered, so in the authentication stage the distance between the generated and the registered ID is calculated and if the distance is below a threshold, the device is considered authentic, and if not, The device is considered false. The quality of an identification / authentication technique is usually assessed by measuring the reasons of false rejection (FRR, "False Rejection Rate") and false acceptance (FAR, "False Acceptance Rate") for each threshold value chosen. Ideally, there should be at least one threshold value for which there are no authentic devices rejected as false (FRR = 0) and, at the same time, there are no false devices accepted as authentic (FAR = 0). Equally, the percentages of genuine (authentic) and impostor population are also represented against each threshold value chosen. Ideally, both populations are clearly separated.
En aplicaciones de identificación/autenticación interesa que las celdas proporcionen siempre el mismo valor. Sin embargo, hay celdas que proporcionan un valor en la etapa de identificación distinto al que se les asignó en la etapa de registro. Hay celdas de memoria que presentan una tendencia clara a estabilizarse en un valor u otro y celdas que no presentan ninguna tendencia clara (su valor de inicialización es distinto cada vez que se las alimenta). En [Holcomb2009] las celdas de SRAMs se clasifican dependiendo de sus curvas de transferencia de tensión ("Voltage Transfer Curves" o VTCs) en celdas asimétricas ("skewed cells"), que presentan una probabilidad mayor para estabilizarse en un valor que en otro, y celdas simétricas ("neutral cells"), que no presentan ninguna tendencia clara a un valor u otro. Uno de los motivos por los que una celda es de un tipo u otro son las variaciones que haya habido en el proceso de fabricación de la memoria, que dan lugar a que los dos circuitos en cruz constitutivos de cada celda no sean perfectamente idénticos. Las celdas que son asimétricas por este motivo son las más adecuadas a la hora de generar identificadores pues caracterizan la naturaleza intrínseca, única e irrepetible de la memoria. Pero las variaciones en el proceso de fabricación no son el único motivo. Las memorias presentan remanencia, es decir, valores previos almacenados en las celdas pueden influir en los valores futuros a los que evolucionen las celdas si el tiempo que está la memoria apagada es corto. Aunque esta influencia se puede eliminar si el tiempo de apagado es suficiente (por ejemplo unas pocas decenas de segundos). Por otro lado, en el caso de SRAMs, se ha estudiado que el envejecimiento y el efecto NBTI (Negative Bias Temperature Instability), consecuencia de un uso prolongado de la SRAM, también provocan que una celda sea asimétrica o simétrica [Guajardo2007] [Holcomb2009]. Mucho más influyente que el motivo anterior a la hora de modificar el comportamiento de las celdas son las condiciones de operación, sobre todo la temperatura. La temperatura influye en las tensiones umbrales y en la movilidad electrón-hueco de los transistores CMOS que forman cada celda de memoria, de manera que un cambio de temperatura puede convertir una celda asimétrica en simétrica y viceversa [Kim2010] [Gebara2012]. Las variaciones en la tensión de alimentación también influyen considerablemente porque modifican el margen de ruido estático (Static Noise Margin, SNM) de las celdas, haciendo que sean más o menos susceptibles al ruido [Holcomb2009]. In identification / authentication applications, it is important that cells always provide the same value. However, there are cells that provide a value in the identification stage other than that assigned to them in the registration stage. There are memory cells that have a clear tendency to stabilize in one value or another and cells that do not have any clear tendency (their initialization value is different each time they are fed). In [Holcomb2009] SRAM cells are classified depending on their voltage transfer curves ("Voltage Transfer Curves" or VTCs) in asymmetric cells ("skewed cells"), which have a greater probability to stabilize in one value than in another, and symmetric cells ("neutral cells"), which do not present any clear tendency to one value or another. One of the reasons why a cell is of one type or another is the variations that have occurred in the memory manufacturing process, which result in the two constituent cross circuits of each cell not being perfectly identical. The cells that are asymmetric for this reason are the most appropriate when generating identifiers because they characterize the intrinsic, unique and unrepeatable nature of memory. But variations in the manufacturing process are not the only reason. The memories present remanence, that is, previous values stored in the cells can influence the future values at which the cells evolve if the time that the memory is off is short. Although this influence can be eliminated if the shutdown time is sufficient (for example a few tens of seconds). On the other hand, in the case of SRAMs, it has been studied that aging and the NBTI (Negative Bias Temperature Instability) effect, a consequence of prolonged use of SRAM, also cause a cell to be asymmetric or symmetric [Guajardo2007] [Holcomb2009 ]. Much more influential than the reason before modifying the behavior of the cells are the operating conditions, especially the temperature. The temperature influences the threshold tensions and the electron-hollow mobility of the CMOS transistors that make up each memory cell, so that a change in temperature can convert an asymmetric cell into symmetric and vice versa [Kim2010] [Gebara2012]. The variations in the supply voltage also influence considerably because they modify the static noise range (Static Noise Margin, SNM) of the cells, making them more or less susceptible to noise [Holcomb2009].
Para reducir el problema de celdas que proporcionan un valor en la etapa de identificación distinto al que se les asignó en la etapa de registro se han propuesto distintas soluciones. La propuesta en [Holcomb2009] es promediar los valores a los que se estabilizan un conjunto dado de celdas de SRAMs para un número dado de medidas realizadas a la temperatura y tensión de alimentación nominales y, en base al promedio obtenido, asignar a cada celda el valor binario más probable para formar con ellos el identificador registrado. La propuesta en [Kim2010] es generar un identificador como en [Holcomb2009], pero no un solo identificador obtenido en condiciones de operación nominales, sino generar varios identificadores para varias condiciones de operación, fundamentalmente para varias temperaturas. Cuantos más IDs se registren por cada SRAM, uno para cada temperatura, mejor será la caracterización de la SRAM. Como solución de compromiso entre buena caracterización y etapa de registro no demasiado costosa, se propone generar un 10 para la máxima temperatura de operación, otro para la mínima y otro para el valor intermedio. La propuesta en [Gebara2012] extiende el trabajo en [Kim2010] y caracteriza las celdas de memoria alimentándolas con varios valores de tensión (desde 0.2Vdd a 1.4Vdd, con Vdd el valor nominal) durante un tiempo (aproximadamente 1 microsegundo) y luego ajustando la alimentación a su valor nominal antes de leer los valores a los que se estabilizan las celdas. Se realizan varias medidas a cada valor de tensión de alimentación y para cada valor de temperatura. La información que se almacena en la etapa de registro es, no solo el ID más probable por cada temperatura, sino también la probabilidad de cada celda de estabilizarse en un valor u otro. Incluso introducen la posibilidad de no usar las celdas de memoria cuyos valores cambien en distintas condiciones de temperatura. Para medir la distancia entre el ID generado en la etapa de identificación y el ID almacenado para cada temperatura en la etapa de registro, introducen una medida de similitud que pondera la distancia entre un bit generado y otro almacenado por la probabilidad registrada para esa celda y luego fusionan los resultados obtenidos con cada ID para cada temperatura. Para implementar esta técnica, se propone un sistema que pruebe a nivel de oblea las SRAMs incluidas en los circuitos integrados. El sistema para probar las obleas debe incluir una fuente de alimentación programable mediante un computador que fije la tensión de alimentación a los diferentes valores (de 0.2Vdd a 1.4Vdd durante aproximadamente 1 microsegundo) y luego la ajuste al valor nominal. Además, es necesaria una cámara de temperatura o un sistema de forzado de temperatura también programable por el computador. Esta propuesta está dirigida a fabricantes de semiconductores o vendedores especializados de circuitos integrados. To reduce the problem of cells that provide a value in the identification stage other than that assigned to them in the registration stage, different solutions have been proposed. The proposal in [Holcomb2009] is to average the values at which a given set of SRAM cells are stabilized for a given number of measurements made at the nominal supply temperature and voltage and, based on the average obtained, assign each cell the most likely binary value to form with them the registered identifier. The proposal in [Kim2010] is to generate an identifier as in [Holcomb2009], but not a single identifier obtained under nominal operating conditions, but to generate several identifiers for various operating conditions, mainly for various temperatures. The more IDs you register For each SRAM, one for each temperature, the better the characterization of the SRAM. As a compromise between good characterization and registration stage not too expensive, it is proposed to generate a 10 for the maximum operating temperature, another for the minimum and another for the intermediate value. The proposal in [Gebara2012] extends the work in [Kim2010] and characterizes the memory cells by feeding them with various voltage values (from 0.2Vdd to 1.4Vdd, with Vdd the nominal value) for a time (approximately 1 microsecond) and then adjusting the feed to its nominal value before reading the values at which the cells are stabilized. Several measurements are made at each supply voltage value and for each temperature value. The information that is stored in the registration stage is not only the most likely ID for each temperature, but also the probability of each cell stabilizing at one value or another. They even introduce the possibility of not using memory cells whose values change in different temperature conditions. To measure the distance between the ID generated in the identification stage and the ID stored for each temperature in the registration stage, they introduce a similarity measure that weighs the distance between a generated bit and another stored by the probability recorded for that cell and then merge the results obtained with each ID for each temperature. To implement this technique, a system is proposed that tests the SRAMs included in the integrated circuits at the wafer level. The system for testing the wafers must include a programmable power supply using a computer that sets the supply voltage to the different values (from 0.2Vdd to 1.4Vdd for approximately 1 microsecond) and then adjusting it to the nominal value. In addition, a temperature chamber or a temperature forcing system is also programmable by the computer. This proposal is aimed at semiconductor manufacturers or specialized integrated circuit vendors.
En aplicaciones de construcción dinámica de claves o secretos también interesa que las celdas proporcionen siempre el mismo valor. Para reducir el problema de celdas que no lo hacen, se suelen emplear algoritmos de datos públicos (Helper Data Algorithms o HDA), de entre los cuales, el más conocido es el HDA basado en offset de código (Code Offset-based HDA) que, como las aplicaciones de identificación/autenticación, posee una etapa de registro y otra de recuperación de secreto. En la fase de registro se llevan a cabo los siguientes pasos: (a) se obtiene una respuesta, R, a partir de varios valores de inicialización de celdas de memoria, (b) se elige una palabra de código aleatoria, C, de un código corrector de errores, (c) se calcula un vector de datos públicos como W = XOR(C, R) y (d) se almacena W. En la fase de recuperación de secreto se llevan a cabo los siguientes pasos: (a) se obtiene una respuesta de la memoria de la misma forma que en la fase de registro, R' (como hay celdas que no siempre proporcionan el mismo valor, la respuesta R' no será idéntica a R, aunque sí similar), (b) se calcula C = XOR(W, R') = XOR[XOR(C, R), R'], (c) se aplica a C el algoritmo decodificador del código corrector de errores, de forma que si C es próxima a C, el decodificador recupera C y, por lo tanto, se recupera R = XOR(W, C). El resultado de una función hash aplicada sobre R puede emplearse como clave criptográfica [Guajardo2007]. El paso más costoso de estos algoritmos es el de la decodificación del código corrector de errores. La complejidad de esta decodificación se reduce si el porcentaje de celdas que proporcionan siempre el mismo valor aumenta. In applications of dynamic construction of keys or secrets, it is also important that the cells always provide the same value. To reduce the problem of cells that do not, public data algorithms (Helper Data Algorithms or HDA) are usually used, among which the best known is the code offset based HDA (Code Offset-based HDA) that , like identification / authentication applications, it has a registration and a secret recovery stage. In the registration phase the following steps are carried out: (a) an answer is obtained, R, from several initialization values of memory cells, (b) a random code word, C, is chosen from a error correction code, (c) se calculates a vector of public data such as W = XOR (C, R) and (d) W is stored. In the secret recovery phase the following steps are carried out: (a) a response is obtained from the memory of the In the same way as in the registration phase, R '(as there are cells that do not always provide the same value, the response R' will not be identical to R, although similar), (b) C = XOR (W, R ') = XOR [XOR (C, R), R'], (c) the error correction code decoding algorithm is applied to C, so that if C is close to C, the decoder recovers C and, therefore therefore, R = XOR (W, C) is recovered. The result of a hash function applied on R can be used as a cryptographic key [Guajardo2007]. The most expensive step of these algorithms is the decoding of the error correction code. The complexity of this decoding is reduced if the percentage of cells that always provide the same value increases.
Los circuitos acoplados en cruz también se han empleado para diseñar generadores de números verdaderamente aleatorios (True Random Number Generators, TRNGs). La idea es usar los valores iniciales de las celdas como fuente de entropía, extrayendo el ruido que provoca que una celda en un estado meta-estable (que no es ninguno de sus dos estados estables) evolucione hacia uno de sus estados estables. La entropía es una medida matemática del desorden, aleatoriedad o variabilidad. De acuerdo a las recomendaciones del NIST (National Institute of Standards and Technology), la entropía mínima es la medida en el peor caso de la incertidumbre de una variable aleatoria, es decir, que proporciona el máximo valor que puede tomar la probabilidad de acertar el valor de la variable aleatoria. La mínima entropía de una fuente binaria, como puede serlo una celda de memoria, se define como: Hmi*— -lo&G * ) donde pmax es la máxima de las probabilidades que presenta una celda de tomar un "0" o un ' '. Cross-coupled circuits have also been used to design truly random number generators (TRNGs). The idea is to use the initial values of the cells as a source of entropy, extracting the noise that causes a cell in a meta-stable state (which is neither of its two stable states) to evolve into one of its stable states. Entropy is a mathematical measure of disorder, randomness or variability. According to the recommendations of the NIST (National Institute of Standards and Technology), the minimum entropy is the measure in the worst case of the uncertainty of a random variable, that is, it provides the maximum value that can take the probability of hitting the value of the random variable. The minimum entropy of a binary source, such as a memory cell, is defined as: Hmi * - -lo & G * ) where p max is the maximum of a cell's chance of taking a "0" or a '' .
Suponiendo que todos los bits que proporcionan las celdas cuando se les conecta la alimentación son independientes, cada secuencia de n bits presenta la siguiente entropía mínima total:
Figure imgf000007_0001
En las aplicaciones de generación de números verdaderamente aleatorios, al contrario que en las aplicaciones de generación de identificadores o construcción dinámica de secretos, interesa que las celdas proporcionen distinto valor cada vez que se alimenten para que la entropía mínima total aumente. Las celdas asimétricas no son adecuadas para generar aleatoriedad puesto que su comportamiento se puede predecir. Son mucho más adecuadas las celdas simétricas. Se ha propuesto incluir circuitería adicional que controle el nivel de ruido original de las celdas y las ajuste para que operen en régimen de meta-estabilidad. Otros autores han propuesto incluir también circuitería para evaluar la calidad de los números aleatorios conforme se van generando. Otra opción es procesar los bits para mejorar sus propiedades estadísticas. Una solución clásica es aplicar un operador XOR o un corrector de Von Neumann. En la solicitud de patente [Harris2011] se propone el procesado de los bits de inicialización generados mediante un circuito corrector de errores. Para conseguir una secuencia de n bits verdaderamente aleatoria, la propuesta en [Holcomb2009] es emplear una función de compresión (en concreto una función hash PH) que comprima a n bits una secuencia de muchos más bits, tantos más cuanto menor sea la entropía mínima total que se haya obtenido. El trabajo en [Leest2012] emplea como función hash una SHA-256. La patente en [Níshino2005] también propone el uso de fundones hash, preferentemente los algoritmos MD2, MD4 ó MD5. Los valores de entropía mínima total reportados para memorias SRAMs suelen ser bajos, porque la mayoría de las celdas se estabiliza siempre al mismo valor. Así por ejemplo, se reporta en [Holcomb2009] que para obtener un número de 128 bits que supere las pruebas estadísticas de aleatoriedad se necesitan 4096 bits y en [Leest2012] se reporta que para obtener un número de 256 bits se necesitan 12800 bits (en [Leest2012] se contemplan distintas temperaturas de operación para la memoria). Cuantos más bits sean necesarios (porque menor sea la entropía mínima total), más lenta es la generación de los números aleatorios.
Assuming that all the bits provided by the cells when the power is connected are independent, each sequence of n bits has the following total minimum entropy:
Figure imgf000007_0001
In the applications of generation of truly random numbers, unlike in the applications of generation of identifiers or dynamic construction of secrets, it is interesting that the cells provide different value each time they are fed so that the total minimum entropy increases. Asymmetric cells are not suitable for generating randomness since their behavior can be predicted. Symmetric cells are much more suitable. It has been proposed to include additional circuitry that controls the original noise level of the cells and adjusts them to operate in a meta-stability regime. Other authors have also proposed to include circuitry to evaluate the quality of random numbers as they are generated. Another option is to process the bits to improve their statistical properties. A classic solution is to apply an XOR operator or a von Neumann concealer. The patent application [Harris2011] proposes the processing of the initialization bits generated by an error correction circuit. To achieve a truly random n-bit sequence, the proposal in [Holcomb2009] is to use a compression function (in particular a PH hash function) that compresses a sequence of many more bits, the more the smaller the total minimum entropy that has been obtained. The work in [Leest2012] uses a SHA-256 as hash function. The patent in [Níshino2005] also proposes the use of hash melons, preferably the MD2, MD4 or MD5 algorithms. The total minimum entropy values reported for SRAMs are usually low, because most cells always stabilize at the same value. For example, it is reported in [Holcomb2009] that to obtain a 128-bit number that passes the statistical tests of randomness 4096 bits are needed and in [Leest2012] it is reported that to obtain a 256-bit number, 12800 bits are required (in [Leest2012] different operating temperatures are contemplated for memory). The more bits that are necessary (because the lower the total minimum entropy), the slower the generation of random numbers.
Los números auténticamente aleatorios se usan en multitud de algoritmos de cifrado y protocolos seguros de comunicación. En muchos casos, se emplean como semilla para inicializar algoritmos de generación de números pseudo-aleatorios, como se propone en [Leest2012]. En [Handschuh2012], los números aleatorios también se derivan de los bits de inicialización de la memoria de una forma indirecta, usando un generador de números aleatorios determinista. Bibliografía Authentically random numbers are used in a multitude of encryption algorithms and secure communication protocols. In many cases, they are used as a seed to initialize algorithms for generating pseudo-random numbers, as proposed in [Leest2012]. In [Handschuh2012], random numbers are also derived from memory initialization bits in an indirect way, using a deterministic random number generator. Bibliography
[Gebara2012] F. H. Gebara, J. Kim, J. D. Schaub, and V. Strumpenl. "Temperature- profiled device fingerprint generation and authentication from power-up states of static cells". US Patent 8,219, 857 B2, July 2012.  [Gebara2012] F. H. Gebara, J. Kim, J. D. Schaub, and V. Strumpenl. "Temperature- profiled device fingerprint generation and authentication from power-up states of static cells". US Patent 8,219, 857 B2, July 2012.
[Guajardo2007] J. Guajardo, S. Kumar, G.J. Schrijen, and P. Tuyls. TPGA intrínsic PUFs and their use for IP protection". Proc. of Cryptographic Hardware and Embedded Systems (CHES), pages 63-80, 2007. [Guajardo2007] J. Guajardo, S. Kumar, G.J. Schrijen, and P. Tuyls. TPGA intrinsic PUFs and their use for IP protection ". Proc. Of Cryptographic Hardware and Embedded Systems (CHES), pages 63-80, 2007.
[Handschuh2012] H. Handschuh, G.J. Schrijen, E. Van der Sluis, "Random number generating system based on memory start-up noise", PCT/EP2012/056277, Oct. 2012.  [Handschuh2012] H. Handschuh, G.J. Schrijen, E. Van der Sluis, "Random number generating system based on memory start-up noise", PCT / EP2012 / 056277, Oct. 2012.
[Harris2011] E.B. Harris, R. Hogg, RA. Kohler, RJ. McPariand, and W.E. Werner, "Secure random number generator", US Patent Aplication US 2011/0022648 A1, January 2011. [Harris2011] E.B. Harris, R. Hogg, RA. Kohler, RJ. McPariand, and W.E. Werner, "Secure random number generator", US Patent Application US 2011/0022648 A1, January 2011.
[Holcomb2009] D.E. Holcomb, W.P. Burieson, and K. Fu. "Power-up SRAM state as an identifying fingerprint and source of true random numbers". IEEE Transactions on Computers, 58(9), pages 1198-1210, 2009.  [Holcomb2009] D.E. Holcomb, W.P. Burieson, and K. Fu. "Power-up SRAM state as an identifying fingerprint and source of true random numbers". IEEE Transactions on Computers, 58 (9), pages 1198-1210, 2009.
[Kim2010] J. Kim, J. Lee, and J.A. Abraham. "Toward reliable SRAM-based device identification". In Proc. IEEE International Conference on Computer Design (ICCD), pages 313-320, 2010.  [Kim2010] J. Kim, J. Lee, and J.A. Abraham. "Toward reliable SRAM-based device identification". In Proc. IEEE International Conference on Computer Design (ICCD), pages 313-320, 2010.
[Kumar2008] S.S. Kumar, J. Guajardo, R. Maes, G.J. Schrijenand, P. Tuyls, "The butterfly PUF protecting IP on every FPGA", in Proc. 1st IEEE Int. Workshop on Hardware-Oriented Security and Trust, HOST, 2008.  [Kumar2008] S.S. Kumar, J. Guajardo, R. Maes, G.J. Schrijenand, P. Tuyls, "The butterfly PUF protecting IP on every FPGA", in Proc. 1st IEEE Int. Workshop on Hardware-Oriented Security and Trust, HOST, 2008.
[Layman2004] P. A. Layman, S. Chaudhry, J. G. Norman, J. R. Thomson, "Electronic fíngerprinting of semiconductor integrated circuits". US Patent 6, 738,294, May 2004.  [Layman2004] P. A. Layman, S. Chaudhry, J. G. Norman, J. R. Thomson, "Electronic fi ngerprinting of semiconductor integrated circuits". US Patent 6, 738,294, May 2004.
[Leest2012] V. van der Leest, E. van der Sluis, G.J. Schrijen, P. Tuyls, and H. Handschuh. "Efficient implementation of true random number generator based on SRAM PUFs". In Cryptography and Security: From Theory to Applications, pages 300- 318. Springer, 2012.  [Leest2012] V. van der Leest, E. van der Sluis, G.J. Schrijen, P. Tuyls, and H. Handschuh. "Efficient implementation of true random number generator based on SRAM PUFs". In Cryptography and Security: From Theory to Applications, pages 300-318. Springer, 2012.
[Maes2008] R. Maes, P. Tuyls, I. Verbauwhede. "Intrínsic PUFs from Flip-flops on reconfígurable devices". In: 3rd Benelux Workshop on Information and System Security (WISSec 2008), Eindhoven, NL, page 17, 2008.  [Maes2008] R. Maes, P. Tuyls, I. Verbauwhede. "Intrinsic PUFs from Flip-flops on reconfigurable devices". In: 3rd Benelux Workshop on Information and System Security (WISSec 2008), Eindhoven, NL, page 17, 2008.
[Nishino2005] Y. Nishino, "Methods and apparatus for random number generation". US Patent 7,676,531 B2, March 2010.  [Nishino2005] Y. Nishino, "Methods and apparatus for random number generation". US Patent 7,676,531 B2, March 2010.
[Su2008] Y. Su, J. Holleman, and B. Otis, "A digital 1.6 pJ/bit chip identification circuit using process variations, " IEEE Journal of Solid-State Circuits, vol. 43, no. 1, pp. 69- 77, Jan. 2008. Descripción de las figuras [Su2008] Y. Su, J. Holleman, and B. Otis, "A digital 1.6 pJ / bit chip identification circuit using process variations," IEEE Journal of Solid-State Circuits, vol. 43, no. 1, pp. 69-77, Jan. 2008. Description of the figures
Figura 1. Diagrama de flujo que ilustra los pasos de la primera fase del método de la invención.  Figure 1. Flow chart illustrating the steps of the first phase of the method of the invention.
Figura 2: Diagrama de flujo que ilustra los pasos de la segunda fase del método de la invención.  Figure 2: Flow chart illustrating the steps of the second phase of the method of the invention.
Figura 3: Porcentaje de celdas para las 20 muestras del circuito analizado que se estabilizan siempre al mismo valor en todas las condiciones de operación cuando: (a) se contemplan todas las celdas de la memoria porque no se ha aplicado el método de la invención (en trazo negro continuo), (b) se contemplan sólo las celdas etiquetadas como A al realizar una vez la primera fase del método de la invención contemplando tres valores de tensión de alimentación y la misma temperatura (en trazo gris continuo) y (c) se contemplan sólo las celdas etiquetadas como A al realizar tres veces la primera fase del método de la invención contemplando tres temperaturas de operación y la misma tensión de alimentación (en trazo discontinuo).  Figure 3: Percentage of cells for the 20 samples of the analyzed circuit that are always stabilized at the same value in all operating conditions when: (a) all memory cells are contemplated because the method of the invention has not been applied ( in continuous black line), (b) only the cells labeled A are contemplated when the first phase of the method of the invention is carried out once contemplating three values of supply voltage and the same temperature (in continuous gray line) and (c) Only cells labeled A are contemplated when performing the first phase of the method of the invention three times contemplating three operating temperatures and the same supply voltage (in broken lines).
Figura 4: Poblaciones impostoras y genuinas para identificadores de 128 bits cuando los bits provienen de: (a) 128 celdas cualesquiera de la memoria porque no se ha aplicado el método de la invención (en trazo negro continuo), (b) 128 celdas etiquetadas como A al realizar una vez la primera fase del método de la invención contemplando tres valores de tensión de alimentación y la misma temperatura (en trazo gris continuo) y (c) 128 celdas etiquetadas como A al realizar tres veces la primera fase del método de la invención contemplando tres temperaturas de operación y la misma tensión de alimentación (en trazo discontinuo). Figure 4: Impost and genuine populations for 128-bit identifiers when the bits come from: (a) any 128 cells in memory because the method of the invention has not been applied (in continuous black line), (b) 128 labeled cells as A when performing the first phase of the method of the invention once contemplating three values of supply voltage and the same temperature (in solid gray line) and (c) 128 cells labeled as A when performing the first phase of the method of three times. the invention contemplating three operating temperatures and the same supply voltage (in dashed lines).
Figura 5: Entropía mínima total (en %) para las 4 muestras del circuito medida en (a) condiciones nominales, (b) el peor caso para condiciones en que varíe la tensión de alimentación y (c) el peor caso para condiciones en que varíe la temperatura de operación. En todas las figuras, se muestra en trazo negro continuo la entropía mínima total medida cuando se consideran las 2280 celdas de memoria (sin aplicar el método de la invención), en trazo gris continuo cuando se consideran las celdas etiquetadas como B al realizar una vez la primera fase del método de la invención contemplando tres valores de tensión de alimentación y la misma temperatura y en trazo discontinuo, cuando se consideran las celdas etiquetadas como B al realizar tres veces la primera fase del método de la invención contemplando tres temperaturas de operación y la misma tensión de alimentación. Figura 6: Diagrama de bloques del dispositivo que implementa el método de la invención. Figure 5: Minimum total entropy (in%) for the 4 samples of the circuit measured in (a) nominal conditions, (b) the worst case for conditions in which the supply voltage varies and (c) the worst case for conditions in which vary the operating temperature. In all the figures, the total minimum entropy measured when the 2280 memory cells (without applying the method of the invention) is shown in a continuous black line, in a continuous gray line when the cells labeled B are considered when performing once the first phase of the method of the invention contemplating three values of supply voltage and the same temperature and in broken lines, when considering the cells labeled B when performing the first phase of the method of the invention three times contemplating three operating temperatures and The same supply voltage. Figure 6: Block diagram of the device that implements the method of the invention.
Figura 7: Esquemático que ilustra un ejemplo de realización del dispositivo empleando circuitería adicional en una FPGA para realizar los bloques de clasificación y control.  Figure 7: Schematic illustrating an embodiment of the device using additional circuitry in an FPGA to perform the classification and control blocks.
Descripción de la invención Description of the invention
El método propuesto en la presente invención tiene por objeto una nueva etapa de registro en la que las celdas de memoria se clasifican en dos conjuntos disjuntos, uno adecuado para generar identificadores (claves o secretos), y otro adecuado para generar números aleatorios. Gracias a esta clasificación, en la etapa de generación de números, los identificadores generados son más repetibles, con lo cual, pueden tener un número de bits menor para conseguir unas mismas prestaciones de identificación, se pueden generar claves o secretos reduciendo la complejidad de los códigos correctores de errores y se mejora la entropía de los números aleatorios generados. Además, todo ello se consigue con una misma etapa de registro, que puede repetirse para mejorar la calidad de los identificadores y números aleatorios generados en distintas condiciones de operación. El método puede aplicarse sin necesidad de un complejo y costoso montaje experimental (no son necesarias cámaras de temperatura o sistemas de forzado de temperatura), sino simplemente controlando la tensión de alimentación. Como consecuencia, la etapa de registro puede realizarse con la memoria en su contexto de aplicación, de una forma cómoda y sencilla. No es necesario que la etapa de registro se realice por vendedores especializados ni en la fábrica donde se fabrique la memoria. El dispositivo que se presenta en esta invención para implementar el método propuesto puede realizarse añadiendo circuitería muy simple a cualquier memoria estática o ejecutando un software muy sencillo. El dispositivo puede autenticarse sin necesidad de almacenar su identificador porque lo genera en tiempo de operación y, a la vez, puede comunicar de forma segura su identidad y cualquier otra información sensible haciendo uso de los números verdaderamente aleatorios que genera. El método propuesto permite generar al menos un número de identificación de n bits y al menos un número verdaderamente aleatorio de m bits a partir de N celdas de memoria estáticas teniendo cada celda capacidad de almacenar un bit de información, en el cual n puede tomar valores desde 0 hasta N-m y m puede tomar valores desde 0 hasta N-n. El método se caracteriza porque comprende una primera fase en la que se clasifican las N celdas de memoria en al menos dos grupos etiquetados como A y B, y una segunda fase en la que se generan al menos un número de identificación de n bits a partir de n celdas etiquetadas en la primera fase como A y al menos un número verdaderamente aleatorio de m bits a partir de m celdas etiquetadas en la primera fase como B, donde la primera fase de clasificación se lleva a cabo al menos una vez, de forma que, una vez clasificadas las celdas, la generación de números de identificación y aleatorios se puede llevar a cabo directamente ejecutando la segunda fase sin tener que volver a ejecutar la primera fase. The method proposed in the present invention aims at a new registration stage in which memory cells are classified into two disjoint sets, one suitable for generating identifiers (keys or secrets), and another suitable for generating random numbers. Thanks to this classification, in the number generation stage, the generated identifiers are more repeatable, so that they can have a smaller number of bits to achieve the same identification capabilities, keys or secrets can be generated reducing the complexity of the error correction codes and the entropy of the random numbers generated is improved. In addition, all this is achieved with the same registration stage, which can be repeated to improve the quality of the identifiers and random numbers generated in different operating conditions. The method can be applied without the need for a complex and expensive experimental setup (temperature chambers or temperature forcing systems are not necessary), but simply by controlling the supply voltage. As a consequence, the registration stage can be carried out with the memory in its application context, in a convenient and simple way. It is not necessary for the registration stage to be carried out by specialized vendors or at the factory where the memory is manufactured. The device presented in this invention to implement the proposed method can be made by adding very simple circuitry to any static memory or by running very simple software. The device can be authenticated without the need to store its identifier because it generates it in operation time and, at the same time, it can safely communicate its identity and any other sensitive information using the truly random numbers it generates. The proposed method allows generating at least one identification number of n bits and at least a truly random number of m bits from N static memory cells, each cell having the capacity to store a bit of information, in which n can take values from 0 to Nm and m can take values from 0 to Nn. The method is characterized in that it comprises a first phase in which classify the N memory cells into at least two groups labeled A and B, and a second phase in which at least one identification number of n bits is generated from n cells labeled in the first phase as A and at least a truly random number of m bits from m cells labeled in the first phase as B, where the first phase of classification is carried out at least once, so that, once the cells are classified, the generation of numbers of Identification and randomization can be carried out directly by executing the second phase without having to re-execute the first phase.
La primera fase del método a su vez comprende: (a) dejar sin alimentación a la memoria (y, por tanto, a sus celdas) durante un tiempo suficiente para que desaparezcan todos los valores de los bits que pudieran estar almacenados, The first phase of the method, in turn, comprises: (a) leaving the memory without power (and, therefore, its cells) for a sufficient time for all the values of the bits that could be stored to disappear,
(b) conectar la memoria a una tensión de alimentación fijada y leer los valores de los bits a los que se han estabilizado N celdas de memoria sin antes haber escrito nada en ellas, (b) connect the memory to a fixed supply voltage and read the values of the bits to which N memory cells have stabilized without first writing anything to them,
(c) guardar los valores de los bits leídos de las N celdas, (c) save the values of the bits read from the N cells,
(d) dejar sin alimentación a la memoria durante el tiempo suficiente para borrar ios valores almacenados, (d) leave the memory without power for long enough to erase the stored values,
(e) alimentar de nuevo la memoria con el mismo valor de tensión y volver a leer los valores de bits de las N celdas sin antes haber escrito nada en ellas, (e) re-feed the memory with the same voltage value and reread the bit values of the N cells without first writing anything in them,
(f) comparar los valores de bits obtenidos en el paso (e) con los guardados en el paso (c), clasificando las celdas de memoria en dos grupos: las celdas que siempre proporcionan el mismo valor de bit y las celdas que alguna vez han proporcionado un valor de bit diferente, (g) ir al paso (h) si ya se han tomado todas las medidas para el mismo valor de tensión de alimentación fijado; mientras que, en otro caso, volver al paso (d), (f) compare the bit values obtained in step (e) with those saved in step (c), classifying the memory cells into two groups: the cells that always provide the same bit value and the cells that once they have provided a different bit value, (g) go to step (h) if all measurements have already been taken for the same set supply voltage value; while, in another case, return to step (d),
(h) etiquetar las celdas que siempre han proporcionado el mismo valor de bit para todas las medidas realizadas a un mismo valor de tensión como S, etiquetar las otras celdas como U y guardar el resultado de la clasificación para el valor de tensión analizada, (i) ir al paso (j) si ya se han analizado todos los valores de tensión de alimentación; mientras que, en otro caso, fijar un nuevo valor de tensión de alimentación a analizar y volver al paso (a), (h) label the cells that have always provided the same bit value for all measurements made at the same voltage value as S, label the other cells as U and save the result of the classification for the analyzed voltage value, (i) go to step (j) if all the supply voltage values have already been analyzed; while, in another case, set a new supply voltage value to analyze and return to step (a),
(j) comparar los resultados de clasificación obtenidos para los valores de tensión analizados y etiquetar las celdas de memoria que han sido etiquetadas siempre como S con todos los valores de tensión analizados con una etiqueta A y etiquetar las celdas que han sido etiquetadas siempre como U con todos los valores de tensión analizados con una etiqueta B (asignando una etiqueta C a las celdas que no se les asigna una etiqueta A ni B). La Figura 1 muestra el diagrama de flujo que ilustra los pasos de la primera fase del método de la invención. (j) compare the classification results obtained for the analyzed voltage values and label the memory cells that have always been labeled as S with all the voltage values analyzed with a label A and label the cells that have always been labeled as U with all voltage values analyzed with a B tag (assigning a C tag to cells that are not assigned a A or B tag). Figure 1 shows the flow chart illustrating the steps of the first phase of the method of the invention.
La segunda fase del método a su vez comprende: The second phase of the method in turn comprises:
(1) dejar sin alimentación a la memoria (y, por tanto, a sus celdas) durante un tiempo suficiente para que desaparezcan todos los valores de bits que pudieran estar almacenados, (1) leave the memory (and, therefore, its cells) without power for a sufficient time so that all bit values that may be stored disappear,
(2) alimentar la memoria a su valor de tensión nominal, no escribir nada en las N celdas analizadas en la primera fase y generar una secuencia de bits (cadena-A) con los valores de bits a los que se hayan estabilizado las celdas etiquetadas como A y generar otra secuencia de bits (cadena-B) con los valores de bits de las celdas etiquetadas como B, finalizando la lectura cuando al menos se tenga una cadena-A de n bits y una cadena-B de m bits, (2) feed the memory to its nominal voltage value, write nothing in the N cells analyzed in the first phase and generate a sequence of bits (A-string) with the bit values to which the labeled cells have stabilized such as A and generate another sequence of bits (B-string) with the bit values of the cells labeled B, ending the reading when at least one A-string of n bits and a B-string of m bits are available,
(3) utilizar la cadena-A para generar al menos un número de identificación digital de n bits y la cadena-B para generar al menos un número verdaderamente aleatorio de m bits. La Figura 2 muestra el diagrama de flujo que ilustra los pasos de la segunda fase del método de la invención. (3) use the A-string to generate at least one digital identification number of n bits and the B-string to generate at least a truly random number of m bits. Figure 2 shows the flow chart illustrating the steps of the second phase of the method of the invention.
En la primera fase del método se analizan P valores de tensión de alimentación (siendo P mayor o igual a 1), de los cuales al menos uno es el valor de tensión nominal (Vdd). Si en la primera fase del método se analizan varios valores de tensión de alimentación, lo conveniente es analizar el intervalo de tensiones para el que la memoria puede trabajar con normalidad, que suele ser un 10% por encima y por debajo de Vdd. Por lo tanto, lo conveniente es analizar, además de Vdd, un valor menor que el nominal Vddmin=0.9Vdcl y un valor mayor que el nominal Vddmax=1.1Vdd. Como la memoria puede trabajar con normalidad, no es necesario desconectarla del resto de circuitería a la que pudiera estar conectada. Además, si la memoria forma parte de un dispositivo electrónico que también puede trabajar con esos niveles de tensión, a todo el dispositivo se le puede aplicar el método de la invención sin problema. In the first phase of the method, P supply voltage values are analyzed (P being greater than or equal to 1), of which at least one is the nominal voltage value (Vdd). If several supply voltage values are analyzed in the first phase of the method, it is convenient to analyze the voltage range for which memory can work normally, which is usually 10% above and below Vdd. Therefore, it is convenient to analyze, in addition to Vdd, a value less than the nominal Vdd min = 0.9Vdcl and a value greater than the nominal Vdd max = 1.1Vdd. As memory can work normally, it is not necessary to disconnect it from the rest of the circuitry to which it could be connected. In addition, if the memory is part of an electronic device that can also work with these voltage levels, the method of the invention can be applied to the entire device without problem.
El método también se caracteriza porque al repetirse la primera fase del método, se etiquetan con una etiqueta A las celdas que en la anterior primera fase se etiquetaron con A y en la actual primera fase del método vuelven a etiquetarse como A; se etiquetan con una etiqueta B las celdas que en la anterior primera fase se etiquetaron con B y en la actual primera fase del método vuelven a etiquetarse como B y se etiquetan con una etiqueta C el resto de las celdas. Cuando se realiza la primera fase del método sin indicar que sea una repetición, se borra cualquier resultado de posibles clasificaciones anteriores y se almacena el resultado de la clasificación actual. La repetición de la primera fase del método permite refinar la clasificación contemplando otras posibles condiciones de operación de la memoria. The method is also characterized in that when the first phase of the method is repeated, the cells that in the previous first phase were labeled with A are labeled with A and in the current first phase of the method they are re-labeled as A; the cells that in the previous first phase were labeled with B are tagged with B and in the current first phase of the method they are re-labeled as B and the rest of the cells are labeled with a C tag. When the first phase of the method is performed without indicating that it is a repetition, any result of possible previous classifications is deleted and the result of the current classification is stored. The repetition of the first phase of the method allows the classification to be refined considering other possible memory operating conditions.
Puesto que las SRAMs forman parte de muchos circuitos integrados o dispositivos electrónicos, el método de esta invención se centra fundamentalmente en ellas, pero pueden emplearse otros tipos de celdas de memoria estáticas. Para probar las ventajas del método de la invención en aplicaciones de identificación/autenticación y generación de claves o secretos se han medido los valores a los que se estabilizan 168 celdas de memoria de una SRAM incluida en un circuito integrado de aplicaciones específicas fabricado en una tecnología de 90 nm de TSMC (Taiwan Semiconductor Manufacturing Company). La memoria no se ha desconectado del resto de la circuitería. Se han analizado 20 muestras del mismo circuito integrado en distintas condiciones de operación: tensión de alimentación de 0.9Vdd, Vdd y 1.1 Vdd, con Vdd el valor de alimentación nominal; y temperaturas de 5°C, 25°C y 75°C. Por cada condición de operación se han repetido 20 veces las medidas (con 20 veces ya se estabilizaba la clasificación resultante). La Figura 3 muestra en trazo negro continuo el porcentaje de celdas para las 20 muestras del circuito que se estabilizan siempre al mismo valor en todas las condiciones de operación si no se aplica el método de la invención. Si se aplica la primera fase del método de la invención considerando los tres valores de tensión de alimentación (0.9Vdd, Vdd, y 1.1Vdd) a la misma temperatura (25°C en ese caso), el porcentaje de celdas que se etiqueta como A se sitúa entre el 71.4% y el 83.9%. El porcentaje de esas celdas para las 20 muestras del circuito que se estabilizan siempre al mismo valor en todas las condiciones de operación (considerando el resto de temperaturas) se muestra en trazo gris continuo en la Figura 3. Al considerar sólo las celdas etiquetadas como A, el porcentaje de ellas que siempre proporciona el mismo valor ha aumentado considerablemente, pasando, por ejemplo en una de las muestras, del 73.8%, si no se aplica el método, al 90.5%, cuando se aplica el método. Since SRAMs are part of many integrated circuits or electronic devices, the method of this invention focuses primarily on them, but other types of static memory cells can be used. To test the advantages of the method of the invention in identification / authentication and key or secret generation applications, the values at which 168 memory cells of a SRAM included in an integrated circuit of specific applications manufactured in a technology have been stabilized 90 nm of TSMC (Taiwan Semiconductor Manufacturing Company). The memory has not been disconnected from the rest of the circuitry. Twenty samples of the same integrated circuit have been analyzed under different operating conditions: supply voltage of 0.9Vdd, Vdd and 1.1 Vdd, with Vdd the nominal supply value; and temperatures of 5 ° C, 25 ° C and 75 ° C. For each operating condition the measurements have been repeated 20 times (with 20 times the resulting classification was already stabilized). Figure 3 shows in a continuous black line the percentage of cells for the 20 samples of the circuit that are always stabilized at the same value in all operating conditions if the method of the invention is not applied. If the first phase of the method of the invention is applied considering the three supply voltage values (0.9Vdd, Vdd, and 1.1Vdd) at the same temperature (25 ° C in that case), the percentage of cells that are labeled as A is between 71.4% and 83.9%. The percentage of these cells for the 20 circuit samples that are always stabilized at the same value in all operating conditions (considering the rest of the temperatures) is shown in a continuous gray line in Figure 3. When considering only the cells labeled A , the percentage of them that always provides the same value has increased considerably, passing, for example in one of the samples, from 73.8%, if the method is not applied, to 90.5%, when the method is applied.
Otra prueba realizada ha sido aplicar tres veces la primera fase del método considerando sólo el valor de tensión de alimentación nominal. La primera vez se realizó cuando la temperatura de operación del circuito era de 25°C. Posteriormente se repite la primera fase del método cuando el circuito se encontraba a una temperatura de operación de 5°C, y, de nuevo se repite la primera fase del método cuando el circuito se encontraba a una temperatura de operación de 75°C. El porcentaje de celdas que se etiqueta como A se sitúa entre el 62.5% y el 73.8%. Las celdas etiquetadas como A son bastante más estables en todas las condiciones de operación. El porcentaje de esas celdas para las 20 muestras del circuito que se estabilizan siempre al mismo valor en todas las condiciones de operación (considerando el resto de tensiones de alimentación) se muestra en trazo discontinuo en la Figura 3. Al considerar sólo las celdas etiquetadas como A, el porcentaje de ellas que siempre proporciona el mismo valor ha aumentado de nuevo considerablemente, pasando, por ejemplo en una de las muestras, del 73.8%, si no se aplica el método, al 99.2%, cuando se aplica el método. Another test has been applied three times the first phase of the method considering only the nominal supply voltage value. The first time was performed when the operating temperature of the circuit was 25 ° C. Subsequently, the first phase of the method is repeated when the circuit was at an operating temperature of 5 ° C, and again the first phase of the method is repeated when the circuit was at an operating temperature of 75 ° C. The percentage of cells that are labeled as A is between 62.5% and 73.8%. Cells labeled A are much more stable in all operating conditions. The percentage of these cells for the 20 circuit samples that are always stabilized at the same value in all operating conditions (considering the rest of the supply voltages) is shown in dashed lines in Figure 3. When considering only the cells labeled as A, the percentage of them that always provide the same value has increased again considerably, passing, for example in one of the samples, from 73.8%, if the method is not applied, to 99.2%, when the method is applied.
Para generar el identificador de n bits en la segunda fase del método, se necesitan n celdas etiquetadas como A. Si, en el peor caso, las celdas tipo A son el 62.5% de las N, se necesitan etiquetar del orden de 1.6n celdas al menos. Por ejemplo, para un identificador de 128 bits, se necesita que N≥ 205 celdas. El número de celdas N analizadas en la primera fase fija el tamaño máximo en bits de los identificadores que pueden generarse. Por supuesto, según la aplicación, puede generarse un identificador con más bits o varios identificadores con menos bits cada uno. El último caso puede ser interesante para cambiar el identificador que se genera, por ejemplo para revocar identificadores que pudieran haber sido comprometidos. La Figura 4 ilustra cómo la aplicación del método de la invención mejora la separación entre la población impostora y genuina en aplicaciones de identificación/autenticación. Las gráficas corresponden a IDs de 128 bits. En trazo negro continuo se muestran las poblaciones resultantes cuando se usan 128 celdas cualesquiera de la memoria. En trazo gris continuo se muestran las poblaciones resultantes cuando se aplica el método con una primera fase considerando los tres valores de tensión de alimentación (0.9Vdd, Vdd, y 1.1 Vdd) a la misma temperatura (25°C) y el ID se genera con 128 celdas etiquetadas como A. En trazo discontinuo se muestran las poblaciones resultantes cuando se aplica el método, aplicando tres veces la primera fase considerando sólo el valor de tensión de alimentación nominal (la primera vez cuando la temperatura de operación del circuito era de 25°C, posteriormente se repite para 5°C, y, de nuevo se repite para 75°C) y el ID se genera con 128 celdas etiquetadas como A. En las aplicaciones de identificación/autenticación hay que volver a registrar el ID de la memoria si se repite la primera fase del método. Los resultados son ventajosos no sólo para generar IDs sino también para recuperar secretos o claves. Por ejemplo, la Figura 4 ilustra que la máxima distancia de Hamming entre IDs obtenidos en la fase de recuperación de clave e IDs registrados para un mismo conjunto de celdas (población genuina) puede llegar al 22% si no se aplica el método, que equivale al porcentaje de error que tendría que corregir el código corrector de errores en un algoritmo HDA. Aplicando la primera fase del método una vez contemplando diferentes tensiones de alimentación y la misma temperatura, la máxima distancia se reduce al 15%, lo que simplifica considerablemente el decodificador del código corrector de errores. Si la primera fase del método se realiza tres veces contemplando tres temperaturas de operación diferentes y la misma tensión de alimentación, según se ha comentado anteriormente, la fiabilidad de la generación de claves se incrementa (la máxima distancia de Hamming se reduce hasta el 10%). In order to generate the n-bit identifier in the second phase of the method, n cells labeled A are required. If, in the worst case, type A cells are 62.5% of the N, the order of 1.6n cells needs to be labeled at least. For example, for a 128-bit identifier, N≥ 205 cells are required. The number of cells N analyzed in the first phase sets the maximum bit size of the identifiers that can be generated. Of course, depending on the application, an identifier with more bits or several identifiers with fewer bits each can be generated. The latter case may be interesting to change the identifier that is generated, for example to revoke identifiers that might have been compromised. Figure 4 illustrates how the application of the method of the invention improves the separation between the impostor and genuine population in identification / authentication applications. The graphics correspond to 128-bit IDs. The resulting populations are shown in continuous black line when any 128 cells in memory are used. The resulting populations are shown in a continuous gray line when the first phase method is applied considering the three supply voltage values (0.9Vdd, Vdd, and 1.1 Vdd) at the same temperature (25 ° C) and the ID is generated with 128 cells labeled A. The resulting populations are shown in dashed lines when the method is applied, applying the first phase three times considering only the nominal supply voltage value (the first time when the circuit's operating temperature was 25 ° C, subsequently repeated for 5 ° C, and again repeated for 75 ° C) and the ID is generated with 128 cells labeled A. In identification / authentication applications, the ID of the user must be re-registered. memory if the first phase of the method is repeated. The results are advantageous not only to generate IDs but also to retrieve secrets or keys. For example, Figure 4 illustrates that the maximum Hamming distance between IDs obtained in the key recovery phase and IDs registered for the same set of cells (genuine population) can reach 22% if the method is not applied, which is equivalent to the percentage of error that would have to correct the error correction code in an HDA algorithm. Applying the first phase of the method once contemplating different supply voltages and the same temperature, the maximum distance is reduced to 15%, which considerably simplifies the decoder of the error correction code. If the first phase of the method is carried out three times contemplating three different operating temperatures and the same supply voltage, as mentioned above, the reliability of the key generation is increased (Hamming's maximum distance is reduced up to 10% ).
Para probar las ventajas del método de la invención para generar números verdaderamente aleatorios se han medido los valores a los que se estabilizan 2280 celdas de memoria de la misma SRAM anterior incluida en un circuito integrado de aplicaciones específicas (fabricado en la tecnología de 90 nm de TSMC). Se han analizado 4 muestras del mismo circuito integrado en distintas condiciones de operación: tensión de alimentación de 0.9Vdd, Vdd y 1.1 Vdd, con Vdd el valor de alimentación nominal; y temperaturas de 5°C, 25°C y 75°C. Por cada condición de operación se han repetido 100 veces las medidas para obtener una buena estimación de la entropía. La Figura 5 muestra la entropía mínima total para las 4 muestras del circuito medida en (a) condiciones nominales, (b) el peor caso para condiciones en que varíe la tensión de alimentación y (c) el peor caso para condiciones en que varíe la temperatura de operación. En todas las figuras, se muestra en trazo negro continuo la entropía mínima total medida cuando se consideran las 2280 celdas de memoria, sin aplicar el método de la invención. Se obtiene un peor valor del 1.7%. In order to prove the advantages of the method of the invention for generating truly random numbers, the values at which 2280 memory cells of the same previous SRAM included in an integrated circuit of specific applications have been measured (manufactured in the 90 nm technology of TSMC). Four samples of the same integrated circuit under different operating conditions have been analyzed: supply voltage of 0.9Vdd, Vdd and 1.1 Vdd, with Vdd the nominal supply value; and temperatures of 5 ° C, 25 ° C and 75 ° C. For each operating condition the measures have been repeated 100 times to obtain a good estimate of the entropy. Figure 5 shows the minimum total entropy for the 4 samples of the circuit measured in (a) nominal conditions, (b) the worst case for conditions in which the supply voltage varies and (c) the worst case for conditions in which the operating temperature varies. In all figures, the total minimum entropy measured when 2280 memory cells are considered in a continuous black line, without applying the method of the invention. A worse value of 1.7% is obtained.
En trazo gris continuo, la Figura 5 muestra la entropía mínima total medida cuando se consideran las celdas etiquetadas como B tras aplicar la primera fase del método de la invención considerando los tres valores de tensión de alimentación (0.9Vdd, Vdd, y 1.1 Vdd) a la misma temperatura (25°C en ese caso). El peor valor obtenido se incrementa hasta el 7.75%. El porcentaje de celdas que se etiqueta como B se sitúa entre 8.9% y el 10%. En trazo discontinuo se muestra la entropía mínima total medida cuando se consideran las celdas etiquetadas como B tras aplicar la primera fase del método tres veces considerando el valor de tensión nominal y las tres temperaturas de operación de 5°C, 25°C y 75°C, como se comentó anteriormente. El peor valor obtenido de entropía mínima total se incrementa hasta el 16%. El porcentaje de celdas que se etiqueta como B se reduce, situándose entre el 2.6% y el 3.8%. In continuous gray line, Figure 5 shows the minimum total entropy measured when considering the cells labeled B after applying the first phase of the method of the invention considering the three values of supply voltage (0.9Vdd, Vdd, and 1.1 Vdd) at the same temperature (25 ° C in that case). The worst value obtained is increased to 7.75%. The percentage of cells that are labeled B is between 8.9% and 10%. The total minimum entropy measured when considering the cells labeled B after considering the first phase of the method three times considering the nominal voltage value and the three operating temperatures of 5 ° C, 25 ° C and 75 ° is shown in broken lines. C, as previously commented. The worst value obtained from total minimum entropy increases to 16%. The percentage of cells that are labeled B is reduced, between 2.6% and 3.8%.
Para generar un número aleatorio de m bits, se necesitan m celdas etiquetadas como B. Si, en el peor caso, las celdas tipo B son el 8.9% de las N, se necesitan etiquetar del orden de 11.2m celdas al menos. Por ejemplo, para generar un número aleatorio de 80 bits, se necesita que N≥ 896 celdas. Si se ha refinado más la clasificación y, en el peor caso, las celdas tipo B son el 2.6% de las N, se necesitan etiquetar del orden de 38.5m celdas al menos. Por ejemplo, para generar un número aleatorio de 80 bits, se necesita que N > 3080 celdas. El número de celdas N analizadas en la primera fase fija el tamaño máximo en bits de los números verdaderamente aleatorios que pueden generarse. Normalmente esto no es una limitación porque las memorias estáticas que se emplean en los dispositivos electrónicos actuales son de elevada capacidad. Por supuesto, según la aplicación, puede generarse un número aleatorio con más bits o varios números aleatorios con menos bits cada uno. To generate a random number of m bits, m cells labeled B are needed. If, in the worst case, type B cells are 8.9% of the N, at least 11.2m cells need to be labeled. For example, to generate a random number of 80 bits, you need N≥ 896 cells. If the classification has been further refined and, in the worst case, type B cells are 2.6% of the N, at least 38.5m cells need to be labeled. For example, to generate a random number of 80 bits, you need N> 3080 cells. The number of N cells analyzed in the first phase sets the maximum bit size of the truly random numbers that can be generated. Normally this is not a limitation because the static memories used in today's electronic devices are high capacity. Of course, depending on the application, a random number with more bits or several random numbers with fewer bits each can be generated.
El tiempo que se ha elegido en los experimentos para dejar sin alimentación la memoria ha sido de 30 segundos. Si en la primera fase del método se realizan Q=20 medidas por cada P=3 tensión de alimentación, son necesarios 30x20x3=1800 segundos = 30 minutos. En cada medida hay que leer las N celdas de memoria, pero este tiempo es despreciable frente al anterior, por lo que pueden analizarse muchas celdas. La primera fase del método puede realizarse en cualquier intervalo de tiempo en el que no se necesite generar identificadores o números aleatorios. Además, no es una fase que tenga que realizarse continuamente. Por otro lado, el tiempo para generación de números viene marcado fundamentalmente por el tiempo de lectura de las celdas necesarias para generar el identificador de n bits y el número aleatorio de m bits. La memoria analizada en los experimentos proporcionaba 60 bits por cada palabra y el tiempo de lectura de cada palabra era al menos 2.4 nanosegundos. En el peor de los casos (que cada celda tuviera direcciones de acceso diferentes) para generar un número de n bits se necesitarían 2.4 nanosegundos por cada bit, por ejemplo 307.2 nanosegundos para un número de 128 bits. Si la memoria analizada es de doble puerto, el tiempo se reduce a la mitad: 1.2 nanosegundos por cada bit en el peor caso, por ejemplo 153.6 nanosegundos para un número de 128 bits. El método de la invención no solo reduce el tiempo de lectura de celdas (porque se necesitan leer menos celdas) sino también el tiempo del posible procesado posterior (por ejemplo, si se aplicara una función hash para obtener una semilla completamente aleatoria de 128 bits en todas las condiciones de operación, se necesitarían procesar 942 bytes sin aplicar el método, mientras que solo se necesitarían procesar 207 bytes tras aplicar el método con una primera fase contemplando tres valores de tensión de alimentación, como se comentó anteriormente, lo que significaría una reducción en el procesado de datos del 78%). The time that has been chosen in the experiments to leave the memory without power has been 30 seconds. If in the first phase of the method Q = 20 measurements are made for each P = 3 supply voltage, 30x20x3 = 1800 seconds = 30 minutes are necessary. In each measure the N memory cells must be read, but this time is negligible compared to the previous one, so many can be analyzed cells. The first phase of the method can be carried out in any time interval in which it is not necessary to generate random identifiers or numbers. In addition, it is not a phase that has to be carried out continuously. On the other hand, the time for number generation is essentially marked by the reading time of the cells necessary to generate the n-bit identifier and the random number of m bits. The memory analyzed in the experiments provided 60 bits for each word and the reading time of each word was at least 2.4 nanoseconds. In the worst case (if each cell had different access addresses) to generate a number of n bits, 2.4 nanoseconds would be needed for each bit, for example 307.2 nanoseconds for a 128-bit number. If the analyzed memory is double port, the time is reduced by half: 1.2 nanoseconds per bit in the worst case, for example 153.6 nanoseconds for a 128-bit number. The method of the invention not only reduces the reading time of cells (because fewer cells need to be read) but also the time of the possible subsequent processing (for example, if a hash function is applied to obtain a completely random 128-bit seed in In all operating conditions, 942 bytes would need to be processed without applying the method, while 207 bytes would only need to be processed after applying the method with a first phase contemplating three supply voltage values, as discussed above, which would mean a reduction in the data processing of 78%).
El método puede implementarse mediante un dispositivo que presenta al menos dos modos de operación seleccionares: modo de etiquetado de celdas de memoria y modo de generación de números, donde el modo de generación de números funciona correctamente si previamente se ha llevado a cabo el modo de etiquetado al menos una vez. Dicho dispositivo está caracterizado porque comprende: The method can be implemented by means of a device that has at least two selectable modes of operation: memory cell labeling mode and number generation mode, where the number generation mode works correctly if the data mode has been previously carried out. tagged at least once. Said device is characterized in that it comprises:
• una memoria estática (1), • a static memory (1),
• un bloque de tensión (2) que deja de alimentar a la memoria (1) o la alimenta a un valor de tensión determinado,  • a voltage block (2) that stops feeding the memory (1) or feeds it at a certain voltage value,
• un bloque de clasificación (3) que, si el modo de operación es el de etiquetado, analiza a qué celdas de la memoria (1) asignarles la etiqueta A y a cuáles la etiqueta B, y, si el modo de operación es el de generación de números, envía el resultado de la clasificación al bloque de control (4);  • a classification block (3) which, if the mode of operation is that of labeling, analyzes which cells in memory (1) to assign the label A and to which the label B, and, if the mode of operation is that of number generation, sends the classification result to the control block (4);
• un bloque de control (4) que controla todos los demás bloques para ejecutar los pasos del método, de modo que: (a) indica al bloque de tensión (2) cuándo no alimentar a la memoria (1) y cuándo alimentarla y, en tal caso, fija el valor de la tensión de alimentación; (b) habilita la lectura de la memoria (1) y activa las señales específicas de la lectura de las celdas de memoria; (c) indica al bloque de clasificación (3) el modo de operación y, si el modo de operación es el de generación de números, (d) emplea la información almacenada del modo de etiquetado para leer los bits generados por las celdas de memoria con etiqueta• a control block (4) that controls all other blocks to execute the steps of the method, so that: (a) it indicates to the voltage block (2) when not to feed the memory (1) and when to feed it and, in that case, set the value of the supply voltage; (b) enables the reading of the memory (1) and activates the specific signals of the reading of the memory cells; (c) indicates to the classification block (3) the mode of operation and, if the mode of operation is that of number generation, (d) uses the information stored in the labeling mode to read the bits generated by the memory cells with tag
A y generar con ellos identificadores y los bits generados por las celdas con etiqueta B y generar con ellos números aleatorios. A and generate with them identifiers and the bits generated by the cells with label B and generate with them random numbers.
La Figura 6 muestra el diagrama de bloques del dispositivo que implementa el método de la invención. Figure 6 shows the block diagram of the device that implements the method of the invention.
En una realización del dispositivo, la memoria estática (1) es una memoria estática de acceso aleatorio, SRAM. In one embodiment of the device, the static memory (1) is a static random access memory, SRAM.
El bloque de tensión puede realizarse mediante una fuente de alimentación programable de las que se dispone en muchos laboratorios. Sin embargo, para conseguir una realización portable y barata que pueda, por ejemplo, incluirse en la placa de circuito impreso que contenga la memoria, es preferible que el bloque de tensión (2) comprenda: The voltage block can be made using a programmable power supply available in many laboratories. However, to achieve a portable and cheap embodiment that can, for example, be included in the printed circuit board containing the memory, it is preferable that the voltage block (2) comprises:
• un interruptor controlado por una señal digital del bloque de control (4) que cierra o abre el interruptor para alimentar o no a la memoria (1) y • a switch controlled by a digital signal from the control block (4) that closes or opens the switch to feed or not to memory (1) and
· un potenciómetro controlado digitalmente por el bloque de control (4) para modificar el valor de la tensión que alimenta a la memoria (1), en el caso de analizar más de un valor de tensión de alimentación (en el caso de analizar solo el valor de tensión nominal no es necesario el potenciómetro). En una realización preferente del dispositivo, el bloque de clasificación (3) comprende:  · A potentiometer digitally controlled by the control block (4) to modify the value of the voltage that feeds the memory (1), in the case of analyzing more than one supply voltage value (in the case of analyzing only the nominal voltage value the potentiometer is not necessary). In a preferred embodiment of the device, the classification block (3) comprises:
• una memoria o registros para almacenar los N bits leídos de la memoria (1) en la primera medida realizada a una tensión de alimentación, borrándose los anteriormente almacenados; • a memory or registers to store the N bits read from the memory (1) in the first measurement carried out at a supply voltage, deleting the previously stored ones;
• operadores XOR destinados a comparar los bits leídos de la memoria (1) en cada medida con los bits almacenados de la primera medida realizada al mismo valor de tensión de alimentación, resultando valores lógicos "0" si los valores de los bits de ambas lecturas coinciden y valores "1" si los valores no coinciden; • operadores OR destinados a ir combinando los resultados de los operadores XOR anteriores obtenidos sobre medidas al mismo valor de tensión de alimentación, resultando un valor lógico "0" para una celda que siempre va proporcionando el mismo valor de bit en todas las medidas y un valor lógico "1" para una celda que alguna vez haya proporcionado un valor de bit diferente;• XOR operators intended to compare the bits read from memory (1) in each measurement with the bits stored from the first measurement made at the same voltage supply value, resulting in logical values "0" if the values of the bits of both readings match and "1" values if the values do not match; • OR operators intended to combine the results of previous XOR operators obtained on measurements at the same supply voltage value, resulting in a logical value "0" for a cell that always provides the same bit value in all measurements and a logical value "1" for a cell that has ever provided a different bit value;
• una memoria o registros destinados a almacenar NxP bits (N bits por cada uno de los P valores de tensión de alimentación analizados), cada bit de lós N etiquetando una de las N celdas de memoria analizadas, de modo que el valor del bit indica si la celda ha sido etiquetada como S (valor del bit "0") o como U (valor del bit "1") para cada valor de tensión, de modo que, en el caso de analizar un único valor de tensión, a una celda etiquetada como S se le asigna el código de la etiqueta A y a una celda etiquetada como U se le asigna el código de la etiqueta B; • one memory or registers destined to store NxP bits (N bits for each one of the P voltage values analyzed), each bit of them N labeling one of the N memory cells analyzed, so that the bit value indicates if the cell has been labeled as S (bit value "0") or as U (bit value "1") for each voltage value, so that, in the case of analyzing a single voltage value, at a a cell labeled S is assigned the code of tag A and a cell labeled as U is assigned the code of tag B;
• operadores ÑOR, en el caso de analizar P>1 valores de tensión de alimentación, destinados a combinar P bits de etiquetas por cada celda, de forma que si resulta un valor lógico "1", a la celda se le asigna el código de la etiqueta A;  • ÑOR operators, in the case of analyzing P> 1 supply voltage values, intended to combine P bits of tags for each cell, so that if a logical value "1" results, the cell is assigned the code of the label A;
• operadores AND, en el caso de analizar P>1 valores de tensión de alimentación, destinados a combinar P bits de etiquetas por cada celda, de forma que si resulta un valor lógico "1", a la celda se le asigna el código de la etiqueta B;  • AND operators, in the case of analyzing P> 1 supply voltage values, intended to combine P tag bits for each cell, so that if a logical value "1" results, the cell is assigned the code of the label B;
• una memoria o registros para almacenar 2N bits, en el caso de analizar P>1 valores de tensión de alimentación, cada 2 bits codificando si cada una de las N celdas de memoria analizadas posee la etiqueta A, B ó ninguna de ellas. · operadores XOR destinados a comparar las etiquetas asociadas a las N celdas obtenidas en el modo de operación de etiquetado actual con las etiquetas obtenidas en modo(s) de operación de etiquetado anteriores.  • a memory or registers to store 2N bits, in the case of analyzing P> 1 supply voltage values, every 2 bits encoding if each of the N memory cells analyzed has the label A, B or none of them. · XOR operators intended to compare the labels associated with the N cells obtained in the current labeling operation mode with the labels obtained in previous labeling operation mode (s).
Por supuesto, cualquier otra realización equivalente a la anteriormente descrita sería igualmente válida (por ejemplo, aplicando que operadores NAND de datos complementados es equivalente a operadores OR de datos sin complementar). Of course, any other embodiment equivalent to the one described above would be equally valid (for example, applying that NAND operators of supplemented data is equivalent to OR operators of non-complementary data).
Las memorias o registros empleados por el bloque de clasificación pueden borrarse o re-escribirse tras el modo de etiquetado, salvo la memoria o registros que almacenan los 2N bits de las etiquetas, que deben mantenerse para ser empleados en el modo de generación de números del dispositivo o en posibles repeticiones del etiquetado. The memories or records used by the classification block can be deleted or rewritten after the labeling mode, except for the memory or records stored the 2N bits of the labels, which must be maintained to be used in the device number generation mode or in possible repetitions of the labeling.
En una realización preferente del dispositivo, el bloque de control (4) comprende: In a preferred embodiment of the device, the control block (4) comprises:
• contadores para medir: (a) el tiempo que se deja al bloque de memoria (1) sin alimentar, (b) las medidas que se llevan a cabo por cada valor de tensión de alimentación, (c) el número de los valores de tensión a analizar, en el caso de analizar varias tensiones de alimentación, (d) las celdas de memoria que se analizan, (e) el número de bits para generar identificadores y (f) el número de bits para generar números aleatorios; • counters to measure: (a) the time that is left to the memory block (1) without feeding, (b) the measurements that are carried out for each supply voltage value, (c) the number of the values of voltage to analyze, in the case of analyzing several supply voltages, (d) the memory cells that are analyzed, (e) the number of bits to generate identifiers and (f) the number of bits to generate random numbers;
· un bloque que traduce en direcciones de acceso a la memoria (1) las etiquetas asociadas a las N celdas.  · A block that translates the labels associated with the N cells into memory access addresses (1).
Como las etiquetas asociadas a las celdas se almacenan en orden se puede saber cómo acceder a las celdas etiquetadas como A para generar los identificadores y a las etiquetadas como B para generar los números aleatorios (se sabe, por ejemplo, a qué palabra de la memoria corresponden y a qué bit dentro de la palabra). Since the labels associated with the cells are stored in order, it is possible to know how to access the cells labeled as A to generate the identifiers and those labeled as B to generate the random numbers (it is known, for example, to which word in the memory they correspond and what bit inside the word).
Al configurar en el dispositivo el modo de operación de etiquetado, el bloque de control (4) recibe como parámetros de configuración al menos el número N de celdas de memoria a analizar, el número P de tensiones de alimentación a fijar, el número Q de medidas a realizar por cada tensión de alimentación y una señal binaria REP, que indica si se repite el etiquetado o no, y recibe una señal de inicio, INIT, que inicializa a cero todos los contadores y que marca el comienzo del proceso de etiquetado, de modo que el bloque de control (4), para cada una de las tensiones a analizar, indica al bloque de tensión (2) que no alimente la memoria (1) durante el tiempo necesario, que está controlado por uno de los contadores del bloque de control; transcurrido ese tiempo, el bloque de control (4) indica al bloque de tensión (2) que alimente la memoria (1) al valor de tensión determinado y activa las señales específicas de la lectura de datos en la memoria (1) para leer los bits a los que se han estabilizado N celdas de memoria, dependiendo el mecanismo de lectura de las señales de entrada y de la memoria (1), dependiendo la temporización de dicha lectura del tipo de memoria empleada, y controlando uno de los contadores del bloque de control (4) cuándo se finaliza la lectura de N celdas al menos; además, el bloque de control (4) indica al bloque de clasificación (3) que opere en modo de etiquetado, de manera que el bloque de clasificación (3) recibe los N bits de la memoria (1), almacenando los bits correspondientes a la primera medida de cada tensión de alimentación y comparando con ellos los sucesivos N bits leídos en las sucesivas medidas, empleando operadores XOR para la comparación, y combinando con operadores OR los resultados para cada celda obtenidos de las operaciones XOR, resultando un valor lógico "0" para las celdas que siempre proporcionan el mismo valor de bit en las sucesivas medidas y un valor lógico "1" para las celdas que han cambiado alguna vez el valor de bit proporcionado en las sucesivas medidas, almacenando esos resultados en una memoria o registros de N bits asociados con la tensión de alimentación analizada; de modo que cuando el contador del bloque de control (4) que cuenta las medidas analizadas a ese valor de tensión llega al valor de cuenta Q configurado, si P=1 y REP=0 (el etiquetado no se repite), el bloque de control (4) indica al bloque de clasificación (3) que almacene en una memoria o registros de 2N bits, de forma ordenada, las N etiquetas codificadas con 2 bits de las N celdas, de forma que el bloque de clasificación (3) almacena los 2 bits que indican la etiqueta A para las celdas que siempre proporcionaron el mismo valor de bit (resultaron un valor lógico "0" tras la operación OR) y almacena los 2 bits que indican la etiqueta B para las celdas que cambiaron alguna vez el valor de bit proporcionado (resultaron un valor lógico "1" tras la operación OR); y si REP=1 y N mantiene su valor (el etiquetado se repite), el bloque de control (4) indica al bloque de clasificación (3) que compare de forma ordenada y mediante operadores XOR si cada etiqueta obtenida para cada celda es A ó B, como en etiquetados anteriores, en cuyo caso se mantienen almacenadas en la memoria o registros de 2N bits las correspondientes etiquetas A ó B, mientras que si la nueva etiqueta obtenida no es ni A ni B o no coinciden con las anteriores las nuevas etiquetas obtenidas, entonces se almacenan para esa celda 2 bits que indican la etiqueta C; mientras que si P>1 , el bloque de control (4) inicia otras Q medidas, inicializando los contadores que cuentan el número de celdas a analizar y el número de medidas a realizar, indicando al bloque de tensión (2) el siguiente valor de tensión a analizar; repitiéndose el proceso hasta que el contador del bloque de control (4) que cuenta los valores de tensión analizados llega al valor de cuenta P configurado, en cuyo caso, el bloque de control (4) indica al bloque de clasificación (3) que combine los P grupos de N bits almacenados para cada tensión de alimentación analizada mediante operadores ÑOR y AND y almacene en una memoria o registros de 2N bits, de forma ordenada, las N etiquetas codificadas con 2 bits de las N celdas, de forma que el bloque de clasificación (3), si REP=0, almacena los 2 bits que indican la etiqueta A para las celdas que siempre proporcionaron el mismo valor de bit para todas las medidas y todas las tensiones (resultaron un valor lógico "1" tras la operación OR), almacena los 2 bits que indican la etiqueta B para las celdas que cambiaron alguna vez el valor de bit proporcionado para todas las tensiones (resultaron un valor lógico "1" tras la operación AND), y almacena 2 bits que indican la etiqueta C, para el resto de las celdas, y si REP=1 y el valor de N se mantiene, el bloque de control (4) indica al bloque de clasificación (3) que compare de forma ordenada y mediante operadores XOR si cada etiqueta obtenida para cada celda es A ó B, como en etiquetados anteriores, en cuyo caso se mantienen almacenadas en la memoria o registros de 2N bits las correspondientes etiquetas A ó B, mientras que si la nueva etiqueta obtenida no es ni A ni B o no coinciden con las anteriores las nuevas etiquetas obtenidas, se almacenan para esa celda los 2 bits que indican la etiqueta C; de forma que, cuando el proceso de etiquetado ha finalizado, el bloque de control (4) lo indica mediante una señal binaria FIN. When the labeling operation mode is configured in the device, the control block (4) receives as configuration parameters at least the number N of memory cells to be analyzed, the number P of supply voltages to be set, the number Q of Measures to be taken for each supply voltage and a REP binary signal, which indicates whether the labeling is repeated or not, and receives a start signal, INIT, which initializes all counters to zero and marks the beginning of the labeling process, so that the control block (4), for each of the voltages to be analyzed, tells the voltage block (2) not to feed the memory (1) for the necessary time, which is controlled by one of the counters of the control block; After that time, the control block (4) instructs the voltage block (2) to feed the memory (1) to the determined voltage value and activates the specific signals of the data reading in the memory (1) to read the bits to which N memory cells have been stabilized, the reading mechanism of the input signals and memory (1) depending, the timing of said reading depending on the type of memory used, and controlling one of the block counters control (4) when the reading of N cells at least ends; in addition, the control block (4) tells the classification block (3) to operate in labeling mode, so that the classification block (3) receives the N bits of the memory (1), storing the bits corresponding to the first measurement of each supply voltage and comparing with them the successive N bits read in the successive measurements, using XOR operators for comparison, and combining with OR operators the results for each cell obtained from the XOR operations, resulting in a value logical "0" for cells that always provide the same bit value in successive measurements and a logical value "1" for cells that have ever changed the bit value provided in successive measurements, storing those results in memory or N-bit registers associated with the analyzed supply voltage; so that when the counter of the control block (4) that counts the measures analyzed at that voltage value reaches the configured Q value, if P = 1 and REP = 0 (the labeling is not repeated), the block of control (4) instructs the classification block (3) to store in a memory or registers of 2N bits, in an orderly manner, the N labels encoded with 2 bits of the N cells, so that the classification block (3) stores the 2 bits that indicate the A tag for the cells that always provided the same bit value (a "0" logical value resulted after the OR operation) and stores the 2 bits that indicate the B tag for the cells that ever changed the bit value provided (a logical value "1" resulted after the OR operation); and if REP = 1 and N maintains its value (the labeling is repeated), the control block (4) instructs the classification block (3) to compare in an orderly manner and by XOR operators if each label obtained for each cell is A or B, as in previous labels, in which case the corresponding labels A or B are stored in the memory or 2-bit registers, while if the new label obtained is neither A nor B or the new ones do not coincide with the new ones obtained tags, then 2 bits indicating the C tag are stored for that cell; while if P> 1, the control block (4) initiates other Q measurements, initializing the counters that count the number of cells to be analyzed and the number of measurements to be performed, indicating to the voltage block (2) the following value of tension to analyze; repeating the process until the control block counter (4) that counts the analyzed voltage values reaches the configured P value, in which case, the control block (4) tells the classification block (3) to combine the P groups of N bits stored for each supply voltage analyzed by ÑOR and AND operators and store in a memory or registers of 2N bits, in an orderly manner, the N labels encoded with 2 bits of the N cells, so that the block of classification (3), if REP = 0, it stores the 2 bits that indicate the label A for the cells that always provided the same bit value for all the measurements and all the voltages (they were a logical value "1" after the operation OR), stores the 2 bits that indicate the B label for the cells that ever changed the bit value provided for all voltages (a "1" logic value resulted after the AND operation), and stores 2 bits that indicate the tag C, for the rest of the cells, and if REP = 1 and the value of N is maintained, the control block (4) tells the classification block (3) to compare in an orderly manner and by XOR operators if each label obtained for each cell it is A or B, as in previous labels, in which case the corresponding labels A or B are stored in the memory or 2-bit registers, while if the new label obtained is neither A nor B or does not match with the previous the new labels obtained, the 2 bits that indicate the C label are stored for that cell; so that, when the labeling process is finished, the control block (4) indicates this by means of a binary signal FIN.
Al configurar en el dispositivo el modo de operación de generación de números, el bloque de control (4) recibe como parámetros de configuración al menos el tamaño en bits, n, del identificador a generar y el tamaño en bits, m, del número aleatorio a generar, y recibe una señal de inicio, INIT, que inicializa a cero todos los contadores y marca el comienzo del proceso de generación, de modo que el bloque de control (4) indica al bloque de tensión (2) que no alimente la memoria (1) durante el tiempo necesario, que está controlado por uno de los contadores del bloque de control; transcurrido ese tiempo (o bien si la memoria ya llevaba al menos ese tiempo desconectada de la alimentación) el bloque de control (4) indica al bloque de tensión (2) que alimente la memoria al valor de tensión nominal e indica al bloque de clasificación (3) que le envíe las etiquetas asociadas a las N celdas, de modo que son traducidas a direcciones de acceso a las celdas de tipo A y B de la memoria (1); empleando esa información, el bloque de control activa las señales específicas de la lectura de datos en las celdas de tipo A y B de la memoria (1), dependiendo el mecanismo de lectura de las señales de entrada y de la memoria (1) y dependiendo la temporización de dicha lectura del tipo de memoria empleada, y el bloque de control (4) concatena los bits generados por celdas etiquetadas como A en la cadena-A y los bits generados por celdas etiquetadas como B en la cadena-B; de forma que uno de los contadores del bloque de control cuenta n bits de la cadena-A, que el bloque de control los proporciona como identificador y uno de los contadores del bloque de control cuenta m bits de la cadena-B, que el bloque de control los proporciona como número verdaderamente aleatorio; de manera que, cuando el proceso de generación de números ha finalizado, el bloque de control (4) lo indica mediante una señal binaria FIN. When the number generation operation mode is configured in the device, the control block (4) receives as configuration parameters at least the size in bits, n, of the identifier to be generated and the size in bits, m, of the random number to be generated, and receives a start signal, INIT, which initializes all the counters to zero and marks the beginning of the generation process, so that the control block (4) tells the voltage block (2) not to supply the memory (1) for the necessary time, which is controlled by one of the counters of the control block; after that time (or if the memory had already been disconnected from the power for at least that time) the control block (4) tells the voltage block (2) to feed the memory to the nominal voltage value and tells the classification block (3) to send the associated labels to the N cells, so that they are translated into access addresses to the cells of type A and B of the memory (1); using this information, the control block activates the specific signals of the data reading in the type A and B cells of the memory (1), the reading mechanism of the input signals and the memory (1) and the timing of said reading depending on the type of memory used, and the control block (4) concatenates the bits generated by cells labeled A in the A-chain and the bits generated by cells labeled as B in the B-chain; so that one of the counters of the control block counts n bits of the A-string, which the control block provides as an identifier and one of the counters of the control block counts m bits of the B-string, that the block of control provides them as a truly random number; so that when the generation process of numbers has ended, the control block (4) indicates this by means of a FIN binary signal.
Modo de realización de la invención La funcionalidad de los bloques de clasificación y de control puede realizarse mediante un software ejecutado en un microcontrolador o microprocesador para el que la memoria sea una memoria externa. Embodiment of the invention The functionality of the classification and control blocks can be carried out by means of software executed in a microcontroller or microprocessor for which the memory is an external memory.
Otra posibilidad es realizar mediante circuitería adicional (hardware dedicado) los bloques de clasificación y de control. La Figura 7 ilustra un esquemático de esta solución. Los bloques de clasificación y de control se han implementado en una FPGA (Field Programmable Gate Array) XC3S50 de Xilinx, que dispone de 1728 celdas lógicas equivalentes y 72 Kbits (K=1024) de Block RAMs (4 Block RAMs de 18 Kbits cada una). Este ejemplo de realización incluye una memoria estática SRAM, externa a la FPGA, con capacidad para 215 palabras de 8 bits cada una, que permite la lectura en paralelo de los 8 bits. El bloque de tensión, también externo a la FPGA, contiene un potenciómetro controlado mediante una señal de 11 bits y un interruptor controlado mediante una señal de 1 bit, donde los 12 bits de control los proporciona el bloque de control implementado mediante una máquina de estados finitos (FSM) en la FPGA. Tanto la FPGA como el bloque de tensión reciben la alimentación externamente a través de un regulador de tensión mientras que la SRAM recibe la alimentación del bloque de tensión. Todo se incluye en una placa de circuito impreso de reducidas dimensiones. En este ejemplo de realización, la SRAM no forma parte de ningún sistema digital pero en otras realizaciones, la SRAM podría ser un bloque de un sistema mayor y no sería necesario desconectarla del sistema. Another possibility is to perform the classification and control blocks using additional circuitry (dedicated hardware). Figure 7 illustrates a schematic of this solution. The classification and control blocks have been implemented in a FPGA (Field Programmable Gate Array) XC3S50 of Xilinx, which has 1728 equivalent logical cells and 72 Kbits (K = 1024) of Block RAMs (4 Block RAMs of 18 Kbits each ). This exemplary embodiment includes a static SRAM memory, external to the FPGA, with a capacity for 2 15 words of 8 bits each, which allows parallel reading of the 8 bits. The voltage block, also external to the FPGA, contains a potentiometer controlled by an 11-bit signal and a switch controlled by a 1-bit signal, where the 12 control bits are provided by the control block implemented by a state machine finite (FSM) in the FPGA. Both the FPGA and the voltage block receive power externally through a voltage regulator while the SRAM receives power from the voltage block. Everything is included in a small printed circuit board. In this exemplary embodiment, the SRAM is not part of any digital system but in other embodiments, the SRAM could be a block of a larger system and it would not be necessary to disconnect it from the system.
La FSM (bloque de control) implementada en la FPGA controla, mediante la señal binaria "Modo" (que toma el valor que se le indique a la entrada), si el modo de operación es de generación de números (en cuyo caso los bits que se leen de la SRAM se envían al bloque de control) o el modo es de etiquetado (en cuyo caso los bits que se leen se envían al bloque de clasificación). En el modo de operación de etiquetado, la FSM (bloque de control) controla todas las señales de habilitación de escritura y lectura de las Block RAMs de la FPGA y toda la temporización de los pasos del etiquetado. La FSM contiene un contador de 32 bits para medir el tiempo que se deja al bloque de memoria sin alimentar. Este contador tiene el tamaño necesario para contar al menos 30 segundos a la frecuencia de reloj de la FPGA (que es de 50MHz) sin llegar a desbordarse. La FSM contiene también un contador de 5 bits para contar las medidas, Q, que se llevan a cabo por cada valor de tensión de alimentación (que toma el valor que se le indica a la entrada) y un contador de 2 bits para contar el número, P, de los valores de tensión a analizar (que toma el valor que se le índica a la entrada, limitado en este ejemplo de realización a 3 valores). La FSM también controla si la medida que se realiza de la memoria es la primera de una fase de etiquetado o no. Los bits que se leen por primera vez de la SRAM se almacenan en una de las Block RAMs de la FPGA y los bits de las medidas sucesivas se van comparando con ellos mediante operadores XOR (8 operadores XOR en esta realización para comparar los 8 bits de una palabra en paralelo). Los resultados (etiquetas S ó U) para los tres valores de tensión de alimentación posibles de este ejemplo se almacenan en las otras tres Block RAMs. Las etiquetas finales del proceso de etiquetado (etiquetas A, B ó C) se almacenan en la primera de las Block RAMs. Como se dejan N bits libres de esa Block RAM para guardar las primeras medidas de otros posibles etiquetados, se pueden almacenar en este ejemplo de realización las etiquetas de hasta N= 6144 celdas ocupando toda esa Block RAM. La FSM contiene un contador de 10 bits para contar las N celdas de memoria a analizar (hasta 210 x 8 celdas, pero con el límite en 6144 celdas). El contador de 10 bits realiza la función de direccionar la memoria. Si la señal REP (que toma el valor que se le marca a la entrada) indica que se repita el etiquetado y el valor de N se mantiene, las nuevas etiquetas (A, B ó C) obtenidas se comparan mediante operadores XOR con las anteriormente almacenadas, de forma que si la salida de dichos operadores indica que no ha habido cambio de etiquetado, las etiquetas almacenadas se mantienen mientras que si ha habido cambio, se almacena la etiqueta C. Este control de etiquetado es el que realiza el sub-bloque denominado "lógica de etiquetado" dentro del bloque de clasificación. The FSM (control block) implemented in the FPGA controls, by means of the binary signal "Mode" (which takes the value indicated to the input), if the mode of operation is number generation (in which case the bits that are read from the SRAM are sent to the control block) or the mode is labeled (in which case the bits that are read are sent to the classification block). In the labeling operation mode, the FSM (control block) controls all the write and read enable signals of the FPGA Block RAMs and all the timing of the labeling steps. The FSM contains a 32-bit counter to measure the time left to the memory block without feeding. This counter has the size necessary to count at least 30 seconds at the clock frequency of the FPGA (which is 50MHz) without overflowing. The FSM also contains a 5-bit counter to count the measurements, Q, which are carried out for each supply voltage value (which takes the value indicated at the input) and a 2-bit counter to count the number, P, of the voltage values to be analyzed (which takes the value indicated to the input, limited in this example of embodiment to 3 values). The WFTU also controls whether the measurement taken from memory is the first of a labeling phase or not. The bits that are read for the first time from the SRAM are stored in one of the FPGA Block RAMs and the bits of the successive measurements are compared with them by XOR operators (8 XOR operators in this embodiment to compare the 8 bits of a word in parallel). The results (S or U labels) for the three possible supply voltage values of this example are stored in the other three Block RAMs. The final labels of the labeling process (labels A, B or C) are stored in the first of the Block RAMs. Since N free bits of that Block RAM are left to store the first measurements of other possible tags, tags of up to N = 6144 cells can be stored in this embodiment, occupying all that Block RAM. The FSM contains a 10-bit counter to count the N memory cells to analyze (up to 2 x 10 x 8 cells, but with the limit in 6144 cells). The 10-bit counter performs the function of addressing the memory. If the REP signal (which takes the value that is marked to the input) indicates that the labeling is repeated and the value of N is maintained, the new labels (A, B or C) obtained are compared by XOR operators with those previously stored, so that if the output of these operators indicates that there has been no change of labeling, the stored labels are maintained while if there has been change, the label C is stored. This labeling control is the one that performs the sub-block called "labeling logic" within the classification block.
Cuando el modo seleccionado es el de generación de números, el contador de 10 bits de la FSM también realiza la función de direccionar la memoria. El sub-bloque "traductor de etiquetas" que contiene la FSM comprueba si en la palabra que direcciona el contador existe un bit que vaya a utilizarse para generar un identificador o un número verdaderamente aleatorio. En caso afirmativo, la FSM lee esa palabra de la SRAM y selecciona los bits para el identificador o el número aleatorio en función de su etiqueta. Si no fuera así, el contador se incrementa sin que se lea esa palabra. Un contador de 7 bits cuenta el número de bits, n, de los identificadores y el número de bits, m, de los números aleatorios. En este ejemplo de realización, los bits del identificador y del número verdaderamente aleatorio se proporcionan en serie por las salidas ID y TRN, respectivamente. When the mode selected is that of number generation, the 10-bit counter of the FSM also performs the function of addressing the memory. The sub-block "tag translator" that contains the FSM checks if there is a bit in the word addressed by the counter to be used to generate an identifier or a truly random number. If so, the WFTU reads that word from the SRAM and selects the bits for the identifier or the random number based on its label. If not, the counter is incremented without that word being read. A 7-bit counter counts the number of bits, n, of the identifiers and the number of bits, m, of the random numbers. In this exemplary embodiment, the bits of the truly random identifier and number are provided in series by the ID and TRN outputs, respectively.
Según el modo de operación, los 7 bits por el bus de entrada n/P se toman como valor de n (modo de generación de números) o P (modo de etiquetado) y los 7 bits por el bus de entrada m/Q se toman como valor de m (modo de generación de números) o Q (modo de etiquetado). Los 10 bits por el bus de entrada N permiten elegir el número de direcciones que se leen como máximo de la memoria, mientras que las señales binarias INIT, REP y FIN indican, respectivamente, el inicio del procesado, si hay o no repetición del modo etiquetado y la finalización del procesado. Depending on the mode of operation, the 7 bits for the n / P input bus are taken as the value of n (number generation mode) or P (labeling mode) and the 7 bits for the m / Q input bus are they take the value of m (number generation mode) or Q (labeling mode). The 10 bits per input bus N allow you to choose the number of addresses that are read at most from memory, while the binary signals INIT, REP and FIN indicate, respectively, the start of processing, whether or not there is a repetition of the mode labeling and completion of processing.

Claims

Reivindicaciones Claims
1.- Método para generar al menos un número de identificación de n bits y al menos un número verdaderamente aleatorio de m bits a partir de N celdas de memoria estáticas teniendo cada celda capacidad de almacenar un bit de información, en el cual n puede tomar valores desde 0 hasta N-m y m puede tomar valores desde 0 hasta N-n, estando el método caracterizado porque comprende una primera fase en la que se clasifican las N celdas de memoria en al menos dos grupos etiquetados como A y B, y una segunda fase en la que se generan al menos un número de identificación de n bits a partir de n celdas etiquetadas en la primera fase como A y al menos un número verdaderamente aleatorio de m bits a partir de m celdas etiquetadas en la primera fase como B, donde la primera fase de clasificación se lleva a cabo al menos una vez, de forma que, una vez clasificadas las celdas, la generación de números de identificación y aleatorios se puede llevar a cabo directamente ejecutando la segunda fase sin tener que volver a ejecutar la primera fase; donde la primera fase del método a su vez comprende: 1.- Method to generate at least one identification number of n bits and at least a truly random number of m bits from N static memory cells, each cell having the capacity to store a bit of information, in which n can take values from 0 to Nm and m can take values from 0 to Nn, the method being characterized in that it comprises a first phase in which the N memory cells are classified into at least two groups labeled A and B, and a second phase in the that at least one identification number of n bits is generated from n cells labeled in the first phase as A and at least a truly random number of m bits from m cells labeled in the first phase as B, where the first Classification phase is carried out at least once, so that, once the cells are classified, the generation of identification and random numbers can be carried out directly by executing the second phase without having to rerun the first phase; where the first phase of the method in turn comprises:
(a) dejar sin alimentación a la memoria (y, por tanto, a sus celdas) durante un tiempo suficiente para que desaparezcan todos los valores de los bits que pudieran estar almacenados, (a) leave the memory without power (and, therefore, its cells) for a sufficient time so that all the values of the bits that could be stored disappear,
(b) conectar la memoria a una tensión de alimentación fijada y leer los valores de los bits a los que se han estabilizado N celdas de memoria sin antes haber escrito nada en ellas, (b) connect the memory to a fixed supply voltage and read the values of the bits to which N memory cells have stabilized without first writing anything to them,
(c) guardar los valores de los bits leídos de las N celdas, (c) save the values of the bits read from the N cells,
(d) dejar sin alimentación a la memoria durante el tiempo suficiente para borrar los valores almacenados, (e) alimentar de nuevo la memoria con el mismo valor de tensión y volver a leer los valores de bits de las N celdas sin antes haber escrito nada en ellas, (d) leave the memory without power for long enough to erase the stored values, (e) re-feed the memory with the same voltage value and reread the bit values of the N cells without first writing anything in them,
(f) comparar los valores de bits obtenidos en el paso (e) con los guardados en el paso (c), clasificando las celdas de memoria en dos grupos: las celdas que siempre proporcionan el mismo valor de bit y las celdas que alguna vez han proporcionado un valor de bit diferente, (g) ir al paso (h) si ya se han tomado todas las medidas para el mismo valor de tensión de alimentación fijado; mientras que, en otro caso, volver al paso (d), (f) compare the bit values obtained in step (e) with those saved in step (c), classifying the memory cells into two groups: the cells that always provide the same bit value and the cells that once have provided a different bit value, (g) go to step (h) if all measurements have already been taken for the same set supply voltage value; while, in another case, return to step (d),
(h) etiquetar las celdas que siempre han proporcionado el mismo valor de bit para todas las medidas realizadas a un mismo valor de tensión como S, etiquetar las otras celdas como U y guardar el resultado de la clasificación para el valor de tensión analizada, (h) label the cells that have always provided the same bit value for all measurements made at the same voltage value as S, label the other cells as U and save the result of the classification for the analyzed voltage value,
(i) ir al paso (j) si ya se han analizado todos los valores de tensión de alimentación; mientras que, en otro caso, fijar un nuevo valor de tensión de alimentación a analizar y volver al paso (a), (j) comparar los resultados de clasificación obtenidos para los valores de tensión analizados y etiquetar las celdas de memoria que han sido etiquetadas siempre como S con todos los valores de tensión analizados con una etiqueta A y etiquetar las celdas que han sido etiquetadas siempre como U con todos los valores de tensión analizados con una etiqueta B (asignando una etiqueta C a las celdas que no se les asigna una etiqueta A ni B); y donde la segunda fase del método a su vez comprende: (i) go to step (j) if all the supply voltage values have already been analyzed; while, in another case, set a new supply voltage value to analyze and return to step (a), (j) compare the classification results obtained for the analyzed voltage values and label the memory cells that have been labeled always as S with all the voltage values analyzed with a label A and label the cells that have always been labeled as U with all the voltage values analyzed with a label B (assigning a label C to the cells that are not assigned a label A or B); and where the second phase of the method in turn comprises:
(1) dejar sin alimentación a la memoria (y, por tanto, a sus celdas) durante un tiempo suficiente para que desaparezcan todos los valores de bits que pudieran estar almacenados, (2) alimentar la memoria a su valor de tensión nominal, no escribir nada en las N celdas analizadas en la primera fase y generar una secuencia de bits (cadena-A) con los valores de bits a los que se hayan estabilizado las celdas etiquetadas como A y generar otra secuencia de bits (cadena-B) con los valores de bits de las celdas etiquetadas como B, finalizando la lectura cuando al menos se tenga una cadena-A de n bits y una cadena-B de m bits, (1) leave the memory without power (and, therefore, its cells) for a sufficient time so that all the bit values that could be stored disappear, (2) feed the memory to its nominal voltage value, not write anything in the N cells analyzed in the first phase and generate a bit sequence (A-string) with the bit values to which the cells labeled A have stabilized and generate another bit sequence (B-string) with the bit values of the cells labeled B, ending the reading when at least one A-string of n bits and a B-string of m bits are available,
(3) utilizar la cadena-A para generar al menos un número de identificación digital de n bits y la cadena-B para generar al menos un número verdaderamente aleatorio de m bits. (3) use the A-string to generate at least one digital identification number of n bits and the B-string to generate at least a truly random number of m bits.
2. Método según la reivindicación 1 caracterizado porque en una primera fase se analizan P valores de tensión de alimentación (siendo P mayor o igual a 1), de los cuales al menos uno es el valor de tensión nominal (Vdd). 2. Method according to claim 1 characterized in that in a first phase P voltage supply values are analyzed (P being greater than or equal to 1), of which at least one is the nominal voltage value (Vdd).
3. Método según una cualquiera de las reivindicaciones 1 a 2, caracterizado porque al repetirse la primera fase del método, se etiquetan con una etiqueta A las celdas que en la anterior primera fase se etiquetaron con A y en la actual primera fase del método vuelven a etiquetarse como A; se etiquetan con una etiqueta B las celdas que en la anterior primera fase se etiquetaron con B y en la actual primera fase del método vuelven a etiquetarse como B y se etiquetan con una etiqueta C el resto de las celdas. 3. Method according to any one of claims 1 to 2, characterized in that when the first phase of the method is repeated, the cells that in the previous first phase were labeled with A are labeled and in the current first phase of the method they return to be labeled as A; the cells that in the previous first phase were labeled with B are tagged with B and in the current first phase of the method they are re-labeled as B and the rest of the cells are labeled with a C tag.
4. - Método según una cualquiera de las reivindicaciones 1 a 2, caracterizado porque al realizarse la primera fase del método sin indicar que sea una repetición, se borra cualquier resultado de posibles clasificaciones anteriores y se almacena el resultado de la clasificación actual. 4. - Method according to any one of claims 1 to 2, characterized in that when the first phase of the method is carried out without indicating that it is a repetition, any result of possible previous classifications is erased and the result of the current classification is stored.
5. Dispositivo para implementar el método según se define en las reivindicaciones 1 a 4 que presenta al menos dos modos de operación seleccionabas: modo de etiquetado de celdas de memoria y modo de generación de números, donde el modo de generación de números funciona correctamente si previamente se ha llevado a cabo el modo de etiquetado al menos una vez; estando dicho dispositivo caracterizado porque comprende: 5. Device for implementing the method as defined in claims 1 to 4 which presents at least two modes of operation you selected: memory cell labeling mode and number generation mode, where the number generation mode works correctly if previously the labeling mode has been carried out at least once; said device being characterized in that it comprises:
• una memoria estática (1), • a static memory (1),
• un bloque de tensión (2) que deja de alimentar a la memoria (1) o la alimenta a un valor de tensión determinado,  • a voltage block (2) that stops feeding the memory (1) or feeds it at a certain voltage value,
• un bloque de clasificación (3) que, si el modo de operación es el de etiquetado, analiza a qué celdas de la memoria (1) asignarles la etiqueta A y a cuáles la etiqueta B, y, si el modo de operación es el de generación de números, envía el resultado de la clasificación al bloque de control (4);  • a classification block (3) which, if the mode of operation is that of labeling, analyzes which cells in memory (1) to assign the label A and to which the label B, and, if the mode of operation is that of number generation, sends the classification result to the control block (4);
· un bloque de control (4) que controla todos los demás bloques para ejecutar los pasos del método, de modo que: (a) indica al bloque de tensión (2) cuándo no alimentar a la memoria (1) y cuándo alimentarla y, en tal caso, fija el valor de la tensión de alimentación; (b) habilita la lectura de la memoria (1) y activa las señales específicas de la lectura de las celdas de memoria; (c) indica al bloque de clasificación (3) el modo de operación y, si el modo de operación es el de generación de números, (d) emplea la información almacenada del modo de etiquetado para leer los bits generados por las celdas de memoria con etiqueta· A control block (4) that controls all other blocks to execute the steps of the method, so that: (a) it indicates to the voltage block (2) when not to feed the memory (1) and when to feed it and, in that case, set the value of the supply voltage; (b) enables the reading of the memory (1) and activates the specific signals of the reading of the memory cells; (c) indicates to the classification block (3) the mode of operation and, if the mode of operation is that of number generation, (d) uses the information stored in the labeling mode to read the bits generated by the memory cells with tag
A y generar con ellos identificadores y los bits generados por las celdas con etiqueta B y generar con ellos números aleatorios. A and generate with them identifiers and the bits generated by the cells with label B and generate with them random numbers.
6. Dispositivo según reivindicación 5 caracterizado porque la memoria estática (1) es una memoria estática de acceso aleatorio, SRAM. Device according to claim 5, characterized in that the static memory (1) is a static random access memory, SRAM.
7. Dispositivo según cualquiera de las reivindicaciones 5 a 6 caracterizado porque el bloque de tensión (2) comprende: Device according to any one of claims 5 to 6, characterized in that the voltage block (2) comprises:
• un interruptor controlado por una señal digital del bloque de control (4) que cierra o abre el interruptor para alimentar o no a la memoria (1) y • a switch controlled by a digital signal from the control block (4) that closes or opens the switch to feed or not to memory (1) and
• un potenciómetro controlado digitalmente por el bloque de control (4) para modificar el valor de la tensión que alimenta a la memoria (1), en el caso de analizar más de un valor de tensión de alimentación (en el caso de analizar solo el valor de tensión nominal no es necesario el potenciómetro).  • a potentiometer digitally controlled by the control block (4) to modify the value of the voltage that feeds the memory (1), in the case of analyzing more than one supply voltage value (in the case of analyzing only the nominal voltage value the potentiometer is not necessary).
8. Dispositivo según cualquiera de las reivindicaciones 5 a 7 caracterizado porque el bloque de clasificación (3) comprende: Device according to any one of claims 5 to 7, characterized in that the classification block (3) comprises:
• una memoria o registros para almacenar los N bits leídos de la memoria (1) en la primera medida realizada a una tensión de alimentación, borrándose los anteriormente almacenados; • a memory or registers to store the N bits read from the memory (1) in the first measurement carried out at a supply voltage, deleting the previously stored ones;
• operadores XOR destinados a comparar los bits leídos de la memoria (1) en cada medida con los bits almacenados de la primera medida realizada al mismo valor de tensión de alimentación, resultando valores lógicos "0" si los valores de los bits de ambas lecturas coinciden y valores "1" si los valores no coinciden;  • XOR operators intended to compare the bits read from memory (1) in each measurement with the bits stored from the first measurement made at the same voltage supply value, resulting in logical values "0" if the values of the bits of both readings match and "1" values if the values do not match;
• operadores OR destinados a ir combinando los resultados de los operadores XOR anteriores obtenidos sobre medidas al mismo valor de tensión de alimentación, resultando un valor lógico "0" para una celda que siempre va proporcionando el mismo valor de bit en todas las medidas y un valor lógico "1" para una celda que alguna vez haya proporcionado un valor de bit diferente;• OR operators intended to combine the results of previous XOR operators obtained on measurements at the same voltage value of feeding, resulting in a logical value "0" for a cell that always provides the same bit value in all measurements and a logical value "1" for a cell that has ever provided a different bit value;
• una memoria o registros destinados a almacenar NxP bits (N bits por cada uno de los P valores de tensión de alimentación analizados), cada bit de los N etiquetando una de las N celdas de memoria analizadas, de modo que el valor del bit indica si la celda ha sido etiquetada como S (valor del bit "0") o como U (valor del bit "1") para cada valor de tensión, de modo que, en el caso de analizar un único valor de tensión, a una celda etiquetada como S se le asigna el código de la etiqueta A y a una celda etiquetada como U se le asigna el código de la etiqueta B; • a memory or registers destined to store NxP bits (N bits for each of the P voltage values analyzed), each bit of the N labeling one of the N memory cells analyzed, so that the bit value indicates if the cell has been labeled as S (bit value "0") or as U (bit value "1") for each voltage value, so that, in the case of analyzing a single voltage value, at a a cell labeled S is assigned the code of tag A and a cell labeled as U is assigned the code of tag B;
• operadores OR, en el caso de analizar P>1 valores de tensión de alimentación, destinados a combinar P bits de etiquetas por cada celda, de forma que si resulta un valor lógico "1", a la celda se le asigna el código de la etiqueta A;  • OR operators, in the case of analyzing P> 1 supply voltage values, intended to combine P tag bits for each cell, so that if a logical value "1" results, the cell is assigned the code of the label A;
• operadores AND, en el caso de analizar P>1 valores de tensión de alimentación, destinados a combinar P bits de etiquetas por cada celda, de forma que si resulta un valor lógico "1", a la celda se le asigna el código de la etiqueta B;  • AND operators, in the case of analyzing P> 1 supply voltage values, intended to combine P tag bits for each cell, so that if a logical value "1" results, the cell is assigned the code of the label B;
· una memoria o registros para almacenar 2N bits, en el caso de analizar P>1 valores de tensión de alimentación, cada 2 bits codificando si cada una de las N celdas de memoria analizadas posee la etiqueta A, B ó ninguna de ellas. · A memory or registers to store 2N bits, in the case of analyzing P> 1 supply voltage values, every 2 bits encoding if each of the N memory cells analyzed has the label A, B or none of them.
• operadores XOR destinados a comparar las etiquetas asociadas a las N celdas obtenidas en el modo de operación de etiquetado actual con las etiquetas obtenidas en modo(s) de operación de etiquetado anteriores. • XOR operators intended to compare the labels associated with the N cells obtained in the current labeling operation mode with the labels obtained in previous labeling operation mode (s).
9. Dispositivo según cualquiera de las reivindicaciones 5 a 8 caracterizado porque el bloque de control (4) comprende: Device according to any one of claims 5 to 8, characterized in that the control block (4) comprises:
• contadores para medir: (a) el tiempo que se deja al bloque de memoria (1) sin alimentar, (b) las medidas que se llevan a cabo por cada valor de tensión de alimentación, (c) el número de los valores de tensión a analizar, en el caso de analizar varias tensiones de alimentación, (d) las celdas de memoria que se analizan, (e) el número de bits para generar identificadores y (f) el número de bits para generar números aleatorios; • un bloque que traduce en direcciones de acceso a la memoria (1) las etiquetas asociadas a las N celdas. • counters to measure: (a) the time that is left to the memory block (1) without feeding, (b) the measurements that are carried out for each supply voltage value, (c) the number of the values of voltage to analyze, in the case of analyzing several supply voltages, (d) the memory cells that are analyzed, (e) the number of bits to generate identifiers and (f) the number of bits to generate random numbers; • a block that translates the labels associated with the N cells into memory access addresses (1).
10. Dispositivo según cualquiera de las reivindicaciones 5 a 9 en el que, al configurar el modo de operación de etiquetado, el bloque de control (4) recibe como parámetros de configuración al menos el número N de celdas de memoria a analizar, el número P de tensiones de alimentación a fijar, el número Q de medidas a realizar por cada tensión de alimentación y una señal binaria REP, que indica si se repite el etiquetado o no, y recibe una señal de inicio, INIT, que inicializa a cero todos los contadores y que marca el comienzo del proceso de etiquetado, de modo que el bloque de control (4), para cada una de las tensiones a analizar, indica al bloque de tensión (2) que no alimente la memoria (1) durante el tiempo necesario, que está controlado por uno de los contadores del bloque de control; transcurrido ese tiempo, el bloque de control (4) indica al bloque de tensión (2) que alimente la memoria (1) al valor de tensión determinado y activa las señales específicas de la lectura de datos en la memoria (1) para leer los bits a los que se han estabilizado N celdas de memoria, dependiendo el mecanismo de lectura de las señales de entrada y de la memoria (1), dependiendo la temporización de dicha lectura del tipo de memoria empleada, y controlando uno de los contadores del bloque de control (4) cuándo se finaliza la lectura de N celdas al menos; además, el bloque de control (4) indica al bloque de clasificación (3) que opere en modo de etiquetado, de manera que el bloque de clasificación (3) recibe los N bits de la memoria (1), almacenando los bits correspondientes a la primera medida de cada tensión de alimentación y comparando con ellos los sucesivos N bits leídos en las sucesivas medidas, empleando operadores XOR para la comparación, y combinando con operadores OR los resultados para cada celda obtenidos de las operaciones XOR, resultando un valor lógico "0" para las celdas que siempre proporcionan el mismo valor de bit en las sucesivas medidas y un valor lógico "1" para las celdas que han cambiado alguna vez el valor de bit proporcionado en las sucesivas medidas, almacenando esos resultados en una memoria o registros de N bits asociados con la tensión de alimentación analizada; de modo que cuando el contador del bloque de control (4) que cuenta las medidas analizadas a ese valor de tensión llega al valor de cuenta Q configurado, si P=1 y REP=0 (el etiquetado no se repite), el bloque de control (4) indica al bloque de clasificación (3) que almacene en una memoria o registros de 2N bits, de forma ordenada, las N etiquetas codificadas con 2 bits de las N celdas, de forma que el bloque de clasificación (3) almacena los 2 bits que indican la etiqueta A para las celdas que siempre proporcionaron el mismo valor de bit (resultaron un valor lógico "0" tras la operación OR) y almacena los 2 bits que indican la etiqueta B para las celdas que cambiaron alguna vez el valor de bit proporcionado (resultaron un valor lógico "1" tras la operación OR); y si REP=1 y N mantiene su valor (el etiquetado se repite), el bloque de control (4) indica al bloque de clasificación (3) que compare de forma ordenada y mediante operadores XOR si cada etiqueta obtenida para cada celda es A ó B, como en etiquetados anteriores, en cuyo caso se mantienen almacenadas en la memoria o registros de 2N bits las correspondientes etiquetas A ó B, mientras que si la nueva etiqueta obtenida no es ni A ni B o no coinciden con las anteriores las nuevas etiquetas obtenidas, entonces se almacenan para esa celda 2 bits que indican la etiqueta C; mientras que si P>1 , el bloque de control (4) inicia otras Q medidas, inicializando los contadores que cuentan el número de celdas a analizar y el número de medidas a realizar, indicando al bloque de tensión (2) el siguiente valor de tensión a analizar; repitiéndose el proceso hasta que el contador del bloque de control (4) que cuenta los valores de tensión analizados llega al valor de cuenta P configurado, en cuyo caso, el bloque de control (4) indica al bloque de clasificación (3) que combine los P grupos de N bits almacenados para cada tensión de alimentación analizada mediante operadores ÑOR y AND y almacene en una memoria o registros de 2N bits, de forma ordenada, las N etiquetas codificadas con 2 bits de las N celdas, de forma que el bloque de clasificación (3), si REP=0, almacena los 2 bits que indican la etiqueta A para las celdas que siempre proporcionaron el mismo valor de bit para todas las medidas y todas las tensiones (resultaron un valor lógico "1" tras la operación ÑOR), almacena los 2 bits que indican la etiqueta B para las celdas que cambiaron alguna vez el valor de bit proporcionado para todas las tensiones (resultaron un valor lógico "1" tras la operación AND), y almacena 2 bits que indican la etiqueta C, para el resto de las celdas, y si REP=1 y el valor de N se mantiene, el bloque de control (4) indica al bloque de clasificación (3) que compare de forma ordenada y mediante operadores XOR si cada etiqueta obtenida para cada celda es A ó B, como en etiquetados anteriores, en cuyo caso se mantienen almacenadas en la memoria o registros de 2N bits las correspondientes etiquetas A ó B, mientras que si la nueva etiqueta obtenida no es ni A ni B o no coinciden con las anteriores las nuevas etiquetas obtenidas, se almacenan para esa celda los 2 bits que indican la etiqueta C; de forma que, cuando el proceso de etiquetado ha finalizado, el bloque de control (4) lo indica mediante una señal binaria FIN. 10. Device according to any of claims 5 to 9, wherein, when configuring the labeling operation mode, the control block (4) receives as configuration parameters at least the number N of memory cells to be analyzed, the number P of supply voltages to be set, the number Q of measurements to be taken for each supply voltage and a binary signal REP, which indicates whether the labeling is repeated or not, and receives a start signal, INIT, which initializes all zero the counters and which marks the beginning of the labeling process, so that the control block (4), for each of the voltages to be analyzed, tells the voltage block (2) not to feed the memory (1) during the required time, which is controlled by one of the control block counters; After that time, the control block (4) instructs the voltage block (2) to feed the memory (1) to the determined voltage value and activates the specific signals of the data reading in the memory (1) to read the bits to which N memory cells have been stabilized, the reading mechanism of the input signals and memory (1) depending, the timing of said reading depending on the type of memory used, and controlling one of the block counters control (4) when the reading of N cells at least ends; in addition, the control block (4) tells the classification block (3) to operate in labeling mode, so that the classification block (3) receives the N bits of the memory (1), storing the corresponding bits to the first measurement of each supply voltage and comparing with them the successive N bits read in the successive measurements, using XOR operators for comparison, and combining with OR operators the results for each cell obtained from the XOR operations, resulting in a logical value " 0 "for cells that always provide the same bit value in successive measurements and a logical value" 1 "for cells that have ever changed the bit value provided in successive measurements, storing those results in memory or registers N bits associated with the analyzed supply voltage; so that when the counter of the control block (4) that counts the measures analyzed at that voltage value reaches the configured Q value, if P = 1 and REP = 0 (the labeling is not repeated), the block of control (4) instructs the classification block (3) to store in a memory or registers of 2N bits, in an orderly manner, the N labels encoded with 2 bits of the N cells, so that the classification block (3) stores the 2 bits that indicate the label A for the cells that always provided the same value bit (resulted in a logical value "0" after the OR operation) and stores the 2 bits that indicate the B label for the cells that ever changed the bit value provided (resulted in a logical value "1" after the OR operation) ; and if REP = 1 and N maintains its value (the labeling is repeated), the control block (4) instructs the classification block (3) to compare in an orderly manner and by XOR operators if each label obtained for each cell is A or B, as in previous labels, in which case the corresponding labels A or B are stored in the memory or 2-bit registers, while if the new label obtained is neither A nor B or the new ones do not coincide with the new ones obtained tags, then 2 bits indicating the C tag are stored for that cell; while if P> 1, the control block (4) initiates other Q measurements, initializing the counters that count the number of cells to be analyzed and the number of measurements to be performed, indicating to the voltage block (2) the following value of tension to analyze; repeating the process until the control block counter (4) that counts the analyzed voltage values reaches the configured P value, in which case, the control block (4) tells the classification block (3) to combine the P groups of N bits stored for each supply voltage analyzed by ÑOR and AND operators and store in a memory or registers of 2N bits, in an orderly manner, the N labels encoded with 2 bits of the N cells, so that the block of classification (3), if REP = 0, it stores the 2 bits that indicate the label A for the cells that always provided the same bit value for all the measurements and all the voltages (they were a logical value "1" after the operation ÑOR), stores the 2 bits that indicate the label B for the cells that ever changed the bit value provided for all voltages (a "1" logic value resulted after the AND operation), and stores 2 bits that indicate the label C , for the rest of the cells, and if REP = 1 and the value of N is maintained, the control block (4) tells the classification block (3) to compare in an orderly manner and by XOR operators if each label obtained for each cell is A or B, as in previous labels, in which case the corresponding labels A or B are stored in the memory or 2-bit registers, while if the new label obtained is neither A nor B or does not match the previous the new labels obtained, the 2 bits that indicate the C label are stored for that cell; so that, when the labeling process is finished, the control block (4) indicates this by means of a binary signal FIN.
11. Dispositivo según cualquiera de las reivindicaciones 5 a 10 en el que, al configurar el modo de operación de generación de números, el bloque de control (4) recibe como parámetros de configuración al menos el tamaño en bits, n, del identificador a generar y el tamaño en bits, m, del número aleatorio a generar, y recibe una señal de inicio, INIT, que inicializa a cero todos los contadores y marca el comienzo del proceso de generación, de modo que el bloque de control (4) indica al bloque de tensión (2) que no alimente la memoria (1) durante el tiempo necesario, que está controlado por uno de los contadores del bloque de control; transcurrido ese tiempo (o bien si la memoria ya llevaba al menos ese tiempo desconectada de la alimentación) el bloque de control (4) indica al bloque de tensión (2) que alimente la memoria al valor de tensión nominal e indica al bloque de clasificación (3) que le envíe las etiquetas asociadas a las N celdas, de modo que son traducidas a direcciones de acceso a las celdas de tipo A y B de la memoria (1); empleando esa información, el bloque de control activa las señales específicas de la lectura de datos en las celdas de tipo A y B de la memoria (1), dependiendo el mecanismo de lectura de las señales de entrada y de la memoria (1) y dependiendo la temporización de dicha lectura del tipo de memoria empleada, y el bloque de control (4) concatena los bits generados por celdas etiquetadas como A en la cadena-A y los bits generados por celdas etiquetadas como B en la cadena-B; de forma que uno de los contadores del bloque de control cuenta n bits de la cadena-A, que el bloque de control los proporciona como identificador y uno de los contadores del bloque de control cuenta m bits de la cadena-B, que el bloque de control los proporciona como número verdaderamente aleatorio; de manera que, cuando el proceso de generación de números ha finalizado, el bloque de control (4) lo indica mediante una señal binaria FIN. Device according to any one of claims 5 to 10, in which, when configuring the number generation operation mode, the control block (4) receives as configuration parameters at least the bit size, n, of the identifier a generate and the bit size, m, of the random number to be generated, and receives a start signal, INIT, which initializes all counters to zero and marks the beginning of the generation process, so that the control block (4) instructs the voltage block (2) not to feed the memory (1) for the necessary time, which is controlled by one of the counters of the control block; after that time (or if the memory had already been disconnected from the power for at least that time) the control block (4) tells the voltage block (2) to feed the memory to the nominal voltage value and tells the classification block (3) to send the associated labels to the N cells, so that they are translated into access addresses to the cells of type A and B of the memory (1); using this information, the control block activates the specific signals of the data reading in the type A and B cells of the memory (1), the reading mechanism of the input signals and the memory (1) and the timing of said reading depending on the type of memory used, and the control block (4) concatenates the bits generated by cells labeled A in the A-chain and the bits generated by cells labeled as B in the B-chain; so that one of the counters of the control block counts n bits of the A-string, which the control block provides as an identifier and one of the counters of the control block counts m bits of the B-string, that the block of control provides them as a truly random number; so that, when the number generation process is finished, the control block (4) indicates this by means of a binary signal FIN.
PCT/ES2015/000038 2014-03-20 2015-03-19 Method and device for generating identifiers and truly random numbers WO2015140365A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
ES201400225A ES2548792B1 (en) 2014-03-20 2014-03-20 Method and device to generate truly random identifiers and numbers
ESP201400225 2014-03-20

Publications (1)

Publication Number Publication Date
WO2015140365A1 true WO2015140365A1 (en) 2015-09-24

Family

ID=54143784

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/ES2015/000038 WO2015140365A1 (en) 2014-03-20 2015-03-19 Method and device for generating identifiers and truly random numbers

Country Status (2)

Country Link
ES (1) ES2548792B1 (en)
WO (1) WO2015140365A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023239696A1 (en) * 2022-06-07 2023-12-14 Infineon Technologies LLC System and method for generation of unique digital signature using a non-volatile memory array
US11977856B2 (en) 2021-01-25 2024-05-07 International Business Machines Corporation Random number generation from SRAM cells

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113157249B (en) * 2021-04-22 2023-09-08 北京奇艺世纪科技有限公司 Identification number generation method and device, electronic equipment and storage medium
ES2957893A1 (en) * 2022-06-24 2024-01-29 Consejo Superior Investigacion METHOD AND DEVICE FOR GENERATION OF TRULY RANDOM NUMBERS (Machine-translation by Google Translate, not legally binding)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090165086A1 (en) * 2007-12-21 2009-06-25 Spansion Llc Random number generation through use of memory cell activity
US20090326840A1 (en) * 2008-06-26 2009-12-31 International Business Machines Corporation Temperature-Profiled Device Fingerprint Generation and Authentication from Power-Up States of Static Cells
US20100293424A1 (en) * 2009-05-18 2010-11-18 Masanobu Katagi Semiconductor integrated circuit, information processing apparatus and method, and program

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090165086A1 (en) * 2007-12-21 2009-06-25 Spansion Llc Random number generation through use of memory cell activity
US20090326840A1 (en) * 2008-06-26 2009-12-31 International Business Machines Corporation Temperature-Profiled Device Fingerprint Generation and Authentication from Power-Up States of Static Cells
US20100293424A1 (en) * 2009-05-18 2010-11-18 Masanobu Katagi Semiconductor integrated circuit, information processing apparatus and method, and program

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
EIROA S ET AL.: "Reducing bit flipping problems in SRAM physical unclonable functions for chip identification.Electronics", CIRCUITS AND SYSTEMS (ICECS), 2012 19TH IEEE INTERNATIONAL CONFERENCE ON, 9 December 2012 (2012-12-09), pages 392 - 395, XP032331707, ISBN: 978-1-4673-1261-5, DOI: doi:10.1109/ICECS.2012.6463720 *
HOLCOMB D E ET AL.: "Power -Up SRAM State as an Identifying Fingerprint and Source of True Random Numbers.", IEEE TRANSACTIONS ON COMPUTERS, vol. 58, no. 9, 1 September 2009 (2009-09-01), LOS ALAMITOS, CA , US, pages 1198 - 1210, XP011266890, ISSN: 0018-9340, DOI: doi:10.1109/TC.2008.212 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11977856B2 (en) 2021-01-25 2024-05-07 International Business Machines Corporation Random number generation from SRAM cells
WO2023239696A1 (en) * 2022-06-07 2023-12-14 Infineon Technologies LLC System and method for generation of unique digital signature using a non-volatile memory array

Also Published As

Publication number Publication date
ES2548792B1 (en) 2016-07-28
ES2548792A1 (en) 2015-10-20

Similar Documents

Publication Publication Date Title
US11729005B2 (en) Apparatus and method for processing authentication information
Rührmair et al. PUFs at a glance
US11856116B2 (en) Method and apparatus for protecting embedded software
Karpinskyy et al. 8.7 Physically unclonable function for secure key generation with a key error rate of 2E-38 in 45nm smart-card chips
US10218517B2 (en) Methods for generating reliable responses in physical unclonable functions (PUFs) and methods for designing strong PUFs
Keller et al. Dynamic memory-based physically unclonable function for the generation of unique identifiers and true random numbers
US11190365B2 (en) Method and apparatus for PUF generator characterization
US20170010864A1 (en) Entropy source with magneto-resistive element for random number generator
US20150109022A1 (en) Semiconductor chip and method for generating digital value using process variation
ES2548792B1 (en) Method and device to generate truly random identifiers and numbers
CN107844715B (en) Semiconductor device and security system
Jia et al. Extracting robust keys from NAND flash physical unclonable functions
Ye et al. OPUF: Obfuscation logic based physical unclonable function
Roelke et al. Attacking an SRAM-based PUF through wearout
Tehranipoor et al. Investigation of DRAM PUFs reliability under device accelerated aging effects
Hosey et al. Advanced analysis of cell stability for reliable SRAM PUFs
JP5831203B2 (en) Individual information generation apparatus, encryption apparatus, authentication system, and individual information generation method
Mispan et al. A survey on the susceptibility of PUFs to invasive, semi-invasive and noninvasive attacks: challenges and opportunities for future directions
Liu et al. 36.3 A modeling attack resilient strong PUF with feedback-SPN structure having< 0.73% bit error rate through in-cell hot-carrier injection burn-in
CN113539334A (en) Measurement mechanism for physically unclonable functions
CN116170161B (en) Physical unclonable function circuit based on ferroelectric transistor array and application thereof
US11962693B2 (en) Integrated circuit (IC) signatures with random number generator and one-time programmable device
Santana-Andreo et al. A DRV-based bit selection method for SRAM PUF key generation and its impact on ECCs
US20200184113A1 (en) Side channel attack protection
CN113535123A (en) Physically unclonable function with precharge by bit line

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: 15764995

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: 15764995

Country of ref document: EP

Kind code of ref document: A1