[go: up one dir, main page]

WO2011113743A2 - Method and installation for generating nondeterministic random elements - Google Patents

Method and installation for generating nondeterministic random elements Download PDF

Info

Publication number
WO2011113743A2
WO2011113743A2 PCT/EP2011/053619 EP2011053619W WO2011113743A2 WO 2011113743 A2 WO2011113743 A2 WO 2011113743A2 EP 2011053619 W EP2011053619 W EP 2011053619W WO 2011113743 A2 WO2011113743 A2 WO 2011113743A2
Authority
WO
WIPO (PCT)
Prior art keywords
error
transformation
generator
supervisor
matrix
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
PCT/EP2011/053619
Other languages
French (fr)
Other versions
WO2011113743A3 (en
Inventor
Eric Mahe
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Publication of WO2011113743A2 publication Critical patent/WO2011113743A2/en
Publication of WO2011113743A3 publication Critical patent/WO2011113743A3/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 invention relates to the field of the generation of hazards by computer means.
  • the invention relates to the field of the generation of non-deterministic hazards usable for example in applications for generating safe random numbers, games or lotteries or large-scale simulation.
  • the second approach is to collect a number of events occurring within a computer to power a entropy pool (entropy pool in English) which will later serve seed to pseudo random number generators. These events are commonly used: moving the pointing device (mouse), network activity or input / output (I / O), processor load, or noise generated by the computer sound card. Operating systems like Linux, Solaris, FreeBSD (and many others) use this approach in the form of the entropy reading contained in the "/ dev / random” file [6]. A description of the weaknesses of such an approach and possible attacks was made in 2006 [7]. It should be noted in this connection that the work of the HAVEGE project [32] seems to provide a number of answers.
  • the third approach is radically different in that it uses real sources of physical hazards connected in the form of peripherals to the computer and is the subject of a commercial offer contrary to the previous approaches.
  • the sources of physical hazards chosen by these solutions are, for example, out of phase multiple oscillators, diode or transistor junctions, cascaded oscillators or quantum optics phenomena. It is possible to find on the market these different products, including: the SG100 TRNG [8] of the Protego company, the R2000KU [9] of the ComScire company, the rw3 [10] built by Rolf Freitag or the Quantis of the company Quantum id [11].
  • Various patents or patent applications have been filed for this type of solution (such as DE 19926640, US 6,324,558, US 6,763,364, US 6,862,605, US 7,096,242, or FR 04 09138 and FR 05 52046).
  • An object of the present invention is therefore to solve the problems raised by current hazard generators, in particular the weakness of their bit rates, the vulnerability of the entropy pools, the complexity and specificity of the devices implemented, etc.
  • an aim of the invention is to make the generation of random events independent without resorting to external resources (dedicated peripherals, internet sites) or internal resources (events, interrupts) to initiate or maintain the generation of random events. and using resources (programming interfaces, hardware) standard and present on the majority of personal computers, embedded industrial equipment or portable devices (phones, tablets, netbook), to improve the cryptographic quality of the hazards generated by the impossibility of prediction of the successive states of the generator as well as the protection of the internal states of the generator against attacks.
  • the invention proposes a method for generating non-deterministic hazards by computer means, in which the operating frequency of at least a portion of said computer means is increased, at least until an error in the output means whose operating frequency has been increased is detected.
  • the method comprises the following steps:
  • the operating frequency of at least a portion of the computer resources is incremented
  • - transformation is an ergodic transformation
  • the computer means whose operating frequency is incremented comprises a working memory, and the transformation modifies the addressing of data stored in said memory;
  • the method further comprises a random generation step in which:
  • the method further comprises at least one collection cycle, during which:
  • the method further comprises the steps in which:
  • o we define a variable of randomness: o the random variable is initialized according to the random events generated during the last transformation, the step of transforming the state of the computer means being implemented as a function of the value of said random variable; and
  • the method further comprises the steps in which:
  • N o the addressing of the data is divided into N subgroups, N being a non-zero integer
  • the method further comprises the steps in which:
  • o define a threshold quantity of random numbers
  • the data to which a transformation is applied are pixel values (501 -506) forming an initial matrix, and the transformed data are pixel values forming a transformed matrix;
  • the error is detected by comparing the values of the pixels of the transformed matrix with values of the pixels of the initial matrix, said error being a color error;
  • the error is detected by performing, during the same transformation cycle, two consecutive readings of the transformed matrix in order to compare pixel values resulting from the first reading of the transformed matrix with pixel values derived from the second reading of the same matrix, said error being a difference error;
  • the method furthermore comprises, in addition, a feedback loop comprising the following steps:
  • the computer means are a graphics card, the data to which a transformation is applied being data stored in its random access memory, and in which, prior to the incrementation of the frequency, the method is initialized according to the following steps:
  • the method comprises the steps in which:
  • a standard is defined for computing resources by defining a maximum number of allowable errors for a given frequency increase
  • the invention proposes a computer system for the generation non-deterministic hazards, including:
  • a generator which is a computer means with an internal clock
  • a processor supervisor capable of interacting with said generator, the supervisor controlling the increase of the frequency of the generator's internal clock and comprises means for implementing an error detection at the output of the generator.
  • the generator is a processor-based computer means and includes means for memorizing a transformation to be implemented, the supervisor controlling the implementation of the said transformation;
  • the generator is a graphics card
  • the supervisor is a motherboard of a computer
  • the supervisor and the generator are both carried by a motherboard of a computer.
  • FIG. 1 schematically represents a conventional computer, equipped with peripherals
  • Figure 2 schematically shows a conventional graphics card
  • FIG. 3 represents an operating flow diagram of a system according to the invention
  • FIG. 4 represents the nature of the flows between the supervisor and the generator
  • FIG. 5 represents a 3200% zoom of the initial matrix loaded at the beginning of the method according to the invention by the supervisor in the video memory of the generator;
  • Fig. 6 shows histograms of RGBA color channels of the initial pixel matrix according to one embodiment of the invention
  • FIG. 7 represents histograms of RGBA color channels of the pixel matrix, highlighting the distribution of the hazards appeared after application of a detection cycle according to the invention, in the case of the embodiment of the FIG. 6 containing the hazards read by the supervisor from the video memory of the generator;
  • FIG. 8 represents a zoom of a part of the final matrix highlighting the hazards that appeared after the application of a detection cycle of the method according to the invention;
  • FIG. 9 represents histograms of RGBA color channels of the final matrix of pixels, highlighting the distribution of the hazards appeared after application of a detection cycle and a collection cycle according to the invention.
  • FIG. 10 represents histograms of the RGBA channels corresponding to the matrix of pixels after the application of ten million (10,000,000) detection cycles in accordance with the invention without overfrequency;
  • FIG. 11 details steps of the initialization of the method according to the invention.
  • Figure 12 details the steps of the detection cycle according to the invention
  • Figure 13 details steps of the collection cycle according to the invention
  • Figure 14 details steps of the generation cycle according to the invention.
  • Figure 15 details four examples of transformations that can be implemented over three cycles illustrated in Figures 12 to 14.
  • Figures 1 and following illustrate an implementation overclocking (or overdocking in English) of one or more components of a computer to create non-deterministic hazards according to the invention.
  • the working memory of a processor for example a random access memory (RAM) of the computer and / or some of its peripherals such as its card, is preferably on-frequency. graphic.
  • RAM random access memory
  • the RAM standards are developed and finalized by the Joint Electron Devices Engineering Council (JEDEC) consortium in the form of specifications describing all memory characteristics such as DDR (Double Data Rate) 2 or 3.
  • JEDEC Joint Electron Devices Engineering Council
  • Overclocking is a set of techniques designed to increase the performance of one or more components of a computer by relying on their physical tolerances, in order to achieve higher overall operating performance. These techniques are particularly the subject of sites devoted to them [15] [16], specialized tools [17] which are sometimes provided by the equipment manufacturers themselves [18] [19] [20], benchmarks (performance measures) [21] [22] [23] and official competitions [24]. These techniques are mainly aimed at two components: the processor and the RAM whose over-frequency is to be subjected to stability tests aimed at detecting the threshold beyond which the operation of the computer or device in question could be postponed. in question.
  • the RAM of the graphics card of the computer is over-frequency so as not to over-frequent the processor or the random-access memory of the computer and to guarantee the integrity and proper functioning of the computer. the present invention.
  • the RAM is a component whose operating tolerances (frequencies, voltages, temperatures) are much greater than for a processor.
  • the risk of irreparable electronic damage to RAM by increasing the frequency is extremely low.
  • the over-frequency of the processor can bring, in case of cooling fault adapted to a permanent destruction of this component. This remains true for the processor of the computer (CPU) or for a processor of the graphics card (GPU).
  • the computer resources planned for this implementation include, for example:
  • a processor capable of interacting with peripherals, in particular a graphics processor, and capable of executing a supervision program;
  • a device such as a graphics processor, having a dedicated working memory capable of increasing in frequency of functioning and able to execute a program or transformation, able to modify the state of the device.
  • the generator executes a transformation, preferably a mixing, of which each transformation cycle corresponds to a different state of the generator.
  • the supervisor measures the internal state of the generator at each generator transformation cycle. This measurement consists in finding errors contained in the data transformed by the generator.
  • the supervisor over-frequency the random access memory of the generator by incrementing the frequency of the random access memory by a determined step.
  • the generator then executes a transformation cycle for each frequency and then reads the transformed data into the generator memory.
  • the mixing transformation comprises a return cycle time to an identical state as long as possible.
  • This blending transformation can be a "baker's transformation” whose ergodicity properties have been proven [29].
  • the present invention intends that the distribution of the succession of successive states of the transformed system following a transformation T is that of all the possible states of the system s at an instant n of T (n).
  • the time of return to the identical of a set of points depends on the dimensions of the matrix which is the object of the transformation.
  • the dimensions are chosen to have a return time guaranteeing a very large number of different states.
  • the quality of ergodicity of the baker's transformation also guarantees a conservation of the properties of the probability distribution which is necessary for the uniformity of the hazards generated by the present invention.
  • the proposed method is however not limited to over-frequencying of the RAM of a graphics processor.
  • the generator may also be a motherboard adapted to over-frequency a component such as a memory bus, communication bus (PCI, PIC-E, ...), a working memory or a processor (CPU), a graphics processor (GPU) or a part of this processor (shaders).
  • a component such as a memory bus, communication bus (PCI, PIC-E, ...), a working memory or a processor (CPU), a graphics processor (GPU) or a part of this processor (shaders).
  • the data manipulated by the generator are pixel values.
  • the data may consist of a matrix of pixels containing four color channels: red (R), green (G), blue (B) and a transparency layer called alpha (A), subsequently designated by "RGBA".
  • the present invention is not limited to pixel processing but can also be applied to other types of data such as integers or floating-point numbers.
  • the supervisor then initiates at startup a matrix comprising initial pixel values according to a specific provision likely to promote the appearance of errors. These values can be systematically the same at each new initialization step since it is the indeterminacy of the hazards generated by the overfrequency that guarantees the non-predictability properties of the present invention.
  • the typology of the hazards generated by the over-frequency can be the following:
  • Temporal hazards designated by the AT sequence, characterized by the moment of appearance of the errors generated by the overfrequency.
  • the uncertainties can be measured by the time elapsed since the start of the detection phase, by the frequency associated with the appearance of the first error or by the value of a variable incremented with each increase in the frequency.
  • AS Spatial hazards, referred to as AS, characterized by the position of the errors generated by the overfrequency.
  • the measurement of these hazards corresponds to the coordinates (abscissa and ordinate) of the pixel in the matrix transformed by the generator or by its physical address.
  • Quantitative random events correspond to the difference between the reference values expected by the supervisor and those provided by the generator.
  • Hazards AT, AS or AQ are then detected by the supervisor by comparing the values of the pixels of the transformed matrix with respect to the values of the pixels of the initial matrix, ie in:
  • the supervisor qualifies each error detected as random AT, AS or AQ.
  • the supervisor carries out three different cycles in which one or more "color errors” and / or "error of differences" may be searched:
  • a first cycle aims to determine the appearance of the first color error (s) and / or the first error (s) of differences.
  • a second cycle consists of producing by the generator a number of color errors or differences exceeding a predefined threshold number.
  • a third cycle uses the pixel matrix constructed by the implementation of the first two steps to cause the generator to produce a series of bits whose random properties have successfully passed all the reference tests. ] [13] [14].
  • the matrix of pixels of dimensions X by Y transformed by the generator can be divided into four sub-matrices.
  • the transformation of the baker can be carried out indifferently on the sub-matrices:
  • This order can be dynamically changed by taking into account the hazards AT, AS or AQ, which, in the form of a logical combination of N variables (N> 1), will make it possible to modify the sequence.
  • This feedback dimension aims to amplify the non-deterministic nature of each step. However, it is not necessary for the proper execution of the invention.
  • the number of sub-matrices chosen in the implementation of the present invention may be different from four.
  • the generator performs an EXCLUSIVE OR (XOR) logic operation between the pixels of the matrix at step N and the pixels transformed at step N + 1.
  • This logical combination aims to improve the uniformity of the hazards generated by the present invention.
  • a computer 10 comprises a CPU (Central Processing Unit) 1 1 capable of communicating with a working memory 12 via a memory bus 13.
  • the working memory 12 is capable of storing the instructions executed by the central unit 11 as well as the data necessary for the implementation of the present invention.
  • the central unit also communicates with a number of peripherals (for example a keyboard 16, a mouse, etc.) via a dedicated bus 14 supporting standard interfaces such as USB (for Universal Serial Bus), SATA (for Serial). Advanced Technolgy Attachment) or AGP (for Accelerated Graphie Port) or PCI-Express (for Peripheral Component Interconnect - Express).
  • peripherals for example a keyboard 16, a mouse, etc.
  • a dedicated bus 14 supporting standard interfaces such as USB (for Universal Serial Bus), SATA (for Serial). Advanced Technolgy Attachment) or AGP (for Accelerated Graphie Port) or PCI-Express (for Peripheral Component Interconnect - Express).
  • Preferred communication interfaces are the PCI-Express [30] or AGP [31] protocols relating to the communication with the graphics card 20.
  • Storage devices such as one or more hard disks 15 make it possible to save the program implemented by the present invention. invention and, where appropriate, the hazards produced by the generator.
  • Figure 2 describes the generic architecture of an embodiment of the graphics card.
  • the graphics card 20 includes a GPU 21 (Graphics Processing Unit) capable of accelerating the execution of graphic primitives as described in the OpenGL or DirectX3D standards.
  • the graphics card also includes a working memory 22 capable of storing instructions and data.
  • the central unit 21 and the working memory 22 do not communicate via the memory bus 23. It communicates by means of a peripheral bus 423 with the computer or one or more screens 24 via the standard protocols 25 such as AGP or PCI -Express for computer 26 and DVI (for Device Visual Interface) or HDMI (for High Definiton Multimedia Interface) for display devices (eg screen). Random generation method
  • FIG. 3 describes operating steps of the method. All these steps are performed by the supervisor on the computer as described in Figure 1.
  • step 101 the supervisor initializes the operation of the generator.
  • This step aims to verify the capabilities of the generator to implement the present invention, to create a graphical context capable of executing the supervisor procedure, to set the parameters necessary for its operation, to initialize an initial matrix of pixels RGBA, to transfer it to the memory of the generator and to transfer in this same memory the program of the supervisor. The details of these different steps will be repeated in the description of FIG. 11.
  • step 101 a certain number of checks and error detections are carried out by the supervisor.
  • the supervisor In case of failure (impossibility of over-frequency, insufficient graphic characteristics, etc.), the present invention can not be implemented.
  • the method does not depend on any event and / or external data to build its own entropy and generate the hazards.
  • the initial matrix ( Figure 5) can be constantly the same for all cycles leading to the generation of hazards.
  • the method described herein therefore responds to the recommendations of the National Institute of Standards and Technology (NIST) concerning the initialization of random number generators.
  • step 102 the supervisor executes the detection cycle.
  • the objective of this cycle is the detection of the first errors resulting from the increase of the working frequency of the working memory of the generator.
  • step 102 comprises a loop consisting of the following sub-steps: initialization of variables ErrColor, ErrDifference and Incr at zero, overfrequency of the generator memory, detection of color errors for the even values of the variable Incr and error detection differences for the odd values of the variable Incr.
  • initialization of variables ErrColor, ErrDifference and Incr at zero overfrequency of the generator memory
  • detection of color errors for the even values of the variable Incr and error detection differences for the odd values of the variable Incr.
  • the alternation of the detections of the errors colors or differences has for objectives:
  • the indeterminism of the method according to the invention is due to the nature of the hazards (AT, AS, AQ) detected.
  • the order of appearance of the first error, regardless of its type (color or difference) is totally random and unpredictable.
  • the alternation between the sub-steps for detecting color and difference errors is thus unpredictable and constitutes the first step of the non-deterministic (in the form of time-type random events - AT) of the present invention.
  • the error values or their position in the pixel array are also unpredictable and constitute the second step of nondeterminism (in the form of spatial or quantitative randomness - AS or AQ) of the present invention.
  • step 102 the indeterminacy following the increase in the frequency of operation of the generator memory is highlighted in step 102.
  • the choice of values of the initial matrix determines the sensitivity of the tests used. Over-frequencying of the generator's working memory could lead to a blocking of the graphics card and its shutdown. The combination of the color and difference tests makes it possible to detect the appearance of errors at the earliest in the overfrequency step and thus to remain within the limits of the operating tolerances of this component.
  • the implementation of the method is not incompatible with the proper operation of the graphics card and can therefore operate in the context of normal operation of the computer.
  • the knowledge of the internal state of a random generator can lead a user to predict the future states and thus to question the desired cryptographic qualities. Nevertheless, the test concerning the "difference" error is carried out by two consecutive readings of the matrix of pixels of the generator. Once the first detected difference error corresponds to a given overfrequency frequency, any other reading of the generator pixel array is likely to generate the same type of "difference" errors. Thus, the internal state of the generator is thus protected from any user to know the content.
  • step 103 the supervisor executes the collection cycle.
  • Step 103 aims to improve the quality of hazards, by implementing a loop consisting of four sub-steps (see Figure 14 attached):
  • step 103 thus increases the mixing power of the transformation performed by the generator.
  • the supervisor After each reading of the array of pixels of the generator, the supervisor uses N random variables of this matrix in order to modify in a non-deterministic way the order of the transformations T1, T2, T3 or T4.
  • This embodiment is similar to a dynamic feedback loop whose course can not be predicted by any user seeking to determine, by the sequence of cycles of different transformations, the internal state of the generator.
  • the overfrequency of the generator memory and the detection of color or difference errors are performed only during steps 102 and 103.
  • step 104 the supervisor performs the generation cycle.
  • step 104 comprises a loop composed of the following sub-steps:
  • This loop ends when a set number of random events has been reached.
  • steps 102 and 103 and steps 103 and 104 it is performed at an initialization of the generator matrix in order to use the hazards collected in the previous steps and to increase the non-determinism of the implementation of the present invention. invention.
  • FIG 4 illustrates the nature of the exchanges between the generator and the supervisor through API programming interfaces (for Application Programming Interfaces).
  • APIs Preferably, three types of APIs are used:
  • APIs must provide at least two basic functions: reading the operating frequency of the video memory of the graphics card and positioning the video frequency of the graphics card to a given value.
  • the APIs used can be for example: API Nvidia, NVCIock or AMD Display Library.
  • the use of other windowing systems supporting OpenGL APIs could be envisaged, for example: the X11 system supported by all Linux or MAC-OS systems or mobile devices (telephones, PDAs, tablets) supporting OpenGL ES (iPhone from Apple or Android from Google).
  • Microsoft DirectX APIs iso-functional with respect to OpenGL APIs or CUDA APIs from Nvidia, Stream from ATI / AMD or Direct Compute from Microsoft can also be used for the implementation of of the present invention.
  • FIG. 5 illustrates a detail (23 pixels by 23 pixels) of the initial matrix such that the supervisor transfers it into the video memory of the generator.
  • Each square corresponds to a pixel whose values are:
  • the actual dimensions of the matrix are here 640 pixels by 320 pixels. The choice of these dimensions is dictated, in the context of the present invention, by several requirements:
  • the method can be implemented on any suitable matrix, for example comprising a different number of pixels, and is not limited to the use of even-sized matrices.
  • the pattern visible in the enlarged part (3200 times) of the image is retained because it is regular and repetitive, increases the sensitivity of the detection cycle, and thus reduces the risks of excessive overfrequency of the working memory of the image. supervisor.
  • FIG. 6 illustrates histograms of each color channel as they appear in Adobe's PhotoShop software.
  • the RGBA colors appear under the respective names Alpha 1, Red (R), Green (G) and Blue (B).
  • Each histogram is divided into 255 levels which represent the 28 possible values for each channel.
  • FIG. 6 highlights the fact that after the initialization step, all the values taken by the RGBA channels of the initial matrix of the generator comprise only the values zero (0, black pixel) or two hundred fifty five (255, white pixel).
  • FIG. 7 highlights random events generated after the execution of the detection cycle according to the invention.
  • the histograms are produced following the same procedure as for Figure 6.
  • the peaks that appear respectively in the channels Alpha 1 and Red and Green show the values in levels and numbers of the hazards produced as a result of the complete application of the cycle of detection. It can be seen that the Blue channel (B) is empty of any hazard.
  • This distribution of hazards is different at each execution of the detection cycle and for each graphics card used for the implementation of the present invention.
  • This dimension of variability between different materials reinforces both the non-deterministic nature of the present invention but also the difficulties that would have a user seeking to know the internal state of the graphics card being attacked, each card graphic with its own behavior.
  • FIG. 8 highlights the value of the hazards generated by the implementation of the method.
  • the matrix 801 corresponds to the matrix read by the Supervisor in the generator memory after a full cycle of detection.
  • An 803 zoom of four pixels 802 of this matrix was made so that they could be measured by the "info" tool 804 of the Photoshop software. It thus appears that the pixel 809 has the values designated at 806, the pixel 810 the values designated at 807, the pixel 811 the values designated at 805 and the pixel 812 the values designated at 808, values that are not present in the initial matrix of pixels. These only show values 0 or 255. This shows that the overfrequency process produces random events whose non-deterministic dimension is also characterized by the value taken by the different color channels of each pixel.
  • FIG. 9 illustrates the histograms, produced according to the same procedure as for FIGS. 6 and 7, corresponding to the matrix of the generator after the execution of the detection and collection cycles. It appears that the RGBA colors have all the 255 levels filled by the hazards generated during the different cycles. The lack of uniformity of the values of each of the levels is the signature of the purely non-deterministic character of the implementation of the present invention and does not question, as a result of past tests, the qualities of the hazards generated.
  • Figure 10 provides further evidence of the importance of overfrequency for the generation of non-deterministic hazards.
  • Figure 10 shows the histograms corresponding to the array of generator pixels after ten million (10,000,000) runs of the detection cycle without overfrequency. No hazards appear in the color channels. These histograms are in all respects identical to those of FIG. 6. This lack of randomness is to be compared with what has been described previously with regard to the over-frequency approach by suppliers of electronic or computer equipment. The tests that these manufacturers are passing on to their products are precisely intended to validate the tolerances of the integrated components. The execution of ten million (10,000 000) of error-free iterations is a validation of both the quality of these same materials and the possibility of the use of overfrequency for the generation of non-deterministic hazards. Detailed example of hazard generation
  • step 1102 If a graphics card could be detected, it is then proceeded to step 1102 to check the over-frequency possibilities of the working memory of the graphics card. If this is not possible, exit 1108 from the supervisor. Once this verification is done positively, the supervisor proceeds to step 1103 to create an OpenGL context to be executed by the graphics card. If this is not possible, exit 1108 from the supervisor.
  • step 1104 initializing the initial matrix with the pattern and the RGBA values described in FIG.
  • step 1105 the supervisor sets the operating parameters of the OpenGL context.
  • step 1106 the supervisor loads the previously initialized matrix at step 1104 into the generator memory and proceeds to step 1107 at the loading of the transformation program.
  • Steps 1101 and 1102 use the Overclocking APIs.
  • Step 1103 uses the Windows APIs whereas steps 1104, 1105, 1106, and 1107 use the OpenGL APIs.
  • Figure 12 describes the course of the detection cycle.
  • the supervisor initializes the variables ErrColor, ErrDifference and Incr to zero (0).
  • step 1202 the supervisor performs the test of the absence of a color error and the parity of the variable Incr.
  • the supervisor proceeds to step 1203 of overfrequency of the generator memory.
  • This value of the overfrequency step can be 500 000 Hz.
  • the working memory frequencies of the graphics cards are between 200 MHz and more than 1000 MHz for the fastest. The choice of this value equal to 0.5 MHz allows a progressivity in the overfrequency preventing the implementation of the present invention a blocking of the operation of the graphics card too high overfrequency. Combined with the sensitivity of color and difference tests, the implementation of the present invention is made with the maximum of guarantees of good operation.
  • step 1204 the supervisor performs the logical OR EXCLUSIVE (XOR) combination between the variable ErrDifference and the variable Incr.
  • the purpose of this combination is to implement the temporal hazard represented by the change in value of the variable ErrDifference. Indeed, since the order of appearance of the color errors or of the difference errors is indeterminable, the taking into account of the value of the variable ErrDifference, in the case where a difference error would already have been detected, will make it possible to modify the order of transformations of step 1205.
  • the supervisor performs at step 1205 the transformations T1, T2, T3 or T4 as a function of the value of the variable Incr modulo 4 (remainder of the division of the value of the variable Incr by 4).
  • the order is T1 ⁇ T2 ⁇ T3 ⁇ T4. In the case where the variable ErrDifference is different from zero, this order will be modified and will start the non-determinism of the implementation of the present invention from the detection step.
  • the supervisor reads the memory of the generator.
  • the supervisor performs the color error detection test.
  • the form of this test is done by comparing the values of the matrix of the generator and the values of the initial matrix.
  • the supervisor in the case of the detection of a color error, will modify the value of the ErrColor variable.
  • step 1208 is the step to which it leads directly if the test 1202 is negative.
  • step 1208 the supervisor performs the test of the absence of a difference error and the parity of the variable Incr.
  • the supervisor proceeds to step 1209 of overfrequency of the generator memory which follows the same rules as in step 1203.
  • step 1210 the supervisor performs the logical EXCLUSIVE OR (XOR) combination between the variable ErrColor and the variable Incr for reasons identical to those described for step 1204.
  • XOR EXCLUSIVE OR
  • step 1211 the supervisor performs the transformations T1, T2, T3 or T4 according to the same rules as for step 1205.
  • step 1212 the supervisor performs a double reading of the generator memory, that is to say two consecutive reads of the generator matrix without any transformation having been made.
  • step 1213 the supervisor performs the difference error detection test.
  • the form of this test is by comparing the values of the generator matrix of the first reading with the values of the generator matrix of the second reading.
  • the supervisor in the case of detecting a difference error, will modify the value of the variable ErrDifference.
  • step 1214 The supervisor then proceeds to step 1214 to perform the test on the values of the ErrColor and ErrDifference variables.
  • it may be chosen to go to step 1215 (end of the detection cycle) only when these two variables are different from zero (0), that is to say when color errors and errors tests differences are both positive.
  • the detection cycle can be stopped as soon as an error is detected by choosing a color error or a difference error. This choice could be dictated by hardware devices that can not lead to the detection of the two errors without questioning the proper functioning of these same devices. This possibility, offered by the present invention, allows greater flexibility in its implementation.
  • step 1216 which increments the value of the variable Incr of 1, making it possible to modify the parity test on this variable, before returning to the step 1202 to continue the detection cycle.
  • Steps 1203 and 1209 use Overclocking APIs while steps 1205, 1206, 1211, and 1212 use the OpenGL APIs.
  • this detection cycle could be used to test embedded memories in hardware such as computers, graphics cards or mobile phones.
  • the color error test could make it possible to validate a maximum error rate beyond which the marketing of the hardware embarking this memory could not be considered any more.
  • this method makes it possible to locate the position of the cells (or bits) which, from a given overfrequency frequency, would systematically generate color or difference errors. This location could be used to build a map of these cells that would constitute a unique identifier of the material in question. This identifier could in turn be used as security key for the encryption of messages or their signature.
  • this same method makes it possible to constitute a temporary safe of data.
  • the matrix of the generator could initialized with data to protect while leaving the memory of the generator at the frequency reached at the end of the detection cycle. Any attempt to read this data would be imprinted with errors due to overfrequency and make this data unusable.
  • the generator matrix is initialized with data to be protected at the start of the detection cycle.
  • the memorization of all the transformations carried out, their order as well as all the errors found during the detection cycle would make it possible, once saved the data of the generator at the end of the detection cycle, to encrypt this data in a unique way.
  • the use of the stored information and the inverse transformation of the baker would allow to reconstitute the data to the identical.
  • Figure 13 describes the collection cycle.
  • the supervisor reads the matrix of the generator and the copy in the Alea table of identical dimension to the matrix of the generator. This operation aims to collect the indeterminate state of this matrix, indeterminacy constituted by the unpredictable order of the transformations T1, T2, T3 or T4 as well as by the set of color and difference errors that this matrix contains at the end of the detection cycle.
  • step 1302 the supervisor initializes the generator memory with the data in the Alea table.
  • the supervisor initializes the IndexAlea variable which will act as an index in the Alea collection table during the collection cycle.
  • the filling of the Alea table will be done at the beginning of each collection cycle at an indeterminate index of the table in order to increase the indeterminacy dimension of the implementation of the present invention.
  • step 1304 the supervisor over-frequents the generator memory.
  • the value of the overfrequency step during the collection cycle is 11000 Hz. Since color and / or difference errors have already been detected during the detection cycle, the overfrequency step may be lower than the one used. during the detection cycle. This choice allows the implementation of the present invention with all the necessary precautions to not over-frequency memory of the generator beyond its proper operation.
  • step 1305 the supervisor performs the logical OR EXCLUSIVE (XOR) combination between the variable IndexAeA and the variable Incr.
  • the purpose of this logic combination is identical to that described for steps 1204 and 1210.
  • step 1306 the supervisor performs the transformations T1, T2, T3 or T4 according to the result modulo 4 of the logical combination performed in step 1305.
  • step 1307 the supervisor performs the double reading of the generator memory after execution of the transformation made in step 1306.
  • step 1308 the supervisor collects the generated random events. This collection corresponds to the same tests color errors and errors diferences made in steps 1207 and 1213. Each time one of these errors is detected, the supervisor fills the box of the Alea table with the IndexAlea index with the following values:
  • the logical combination "Alea [lndiceAlea] A " aims at logically mixing the hazards collected in the Alea table during the detection cycle with the new risks generated during the collection cycle.
  • the purpose of the "modulo 255" operation is to ensure that the values obtained fall within the range [0; 255] levels of RGBA colors as well as their uniformity.
  • the different values contained in the tab1 and tab2 arrays are quantitative type (AQ) hazards, whereas the n position index of these errors inside the arrays is of the spatial type (AS).
  • the supervisor increments the IndexAlea variable. In the case where the variable IndexAlea is greater than the size of the array Alea, the supervisor sets its value to zero (0).
  • the supervisor then performs the 1309 test to determine if the collection threshold has been reached.
  • this threshold may correspond to the number of times the IndexAlea variable is reset (0) by the supervisor, ie the number of times the Alea table has been completely filled. This threshold is at least greater than 1.
  • the supervisor proceeds to step 1311 corresponding to the incrementation of the variable Incr and returns to step 1304.
  • the supervisor ends the cycle collection to proceed to step 1401 of the generation cycle.
  • Step 1304 uses the Overclocking APIs while steps 1306 and 1307 use the OpenGL APIs.
  • the method also makes it possible to choose a statistical distribution corresponding to financial or simulation applications.
  • step 1308 it will be possible to place in the table Alea values resulting from Normal, Poisson, Student or other laws (pseudo-random number generator for example) replacing the values described above.
  • the conservation property of the baker's ergodic processing distributions makes it possible, once the values of these distributions have been entered in the Alea table, to implement the present invention in a very wide range of applications.
  • step 1308 it may be carried out "whitening" operations (whitening in English) to ensure the uniformity of the randomly generated.
  • a variant of the method consists in directly performing steps 1207, 1213 and 1308 (testing for the presence of errors color or differences) by the generator, without previously implementing steps 1206, 1212 and 1307 respectively (reading of the generator matrix).
  • steps 1207, 1213 and 1308 testing for the presence of errors color or differences
  • steps 1206, 1212 and 1307 respectively reading of the generator matrix.
  • the generator run directly the tests relating to the presence of errors in the matrix of the generator without it. it is necessary to read this matrix by the supervisor.
  • Such a choice may be dictated by performance requirements by eliminating the read time of the generator array and utilizing the processing power of the generator to perform these tests.
  • step 1401 the supervisor initializes the generator memory with the data in the Alea table.
  • This operation implements the IndexAlea and Alea [lndiceAlea] values, both of which are not determinable before running the detection and collection cycles. The goal is to start the order of transformations in the generation cycle indefinitely.
  • the supervisor performs the EXCLUSIVE OR (XOR) logical combination between the GenAlea and Incr variables to, again, increase the indeterminacy of the order of the transformations.
  • the supervisor has the generator carry out the transformations T1, T2, T3 or T4 according to the result of the logic combination modulo 4 of step 1403.
  • step 1405 the supervisor reads the generator matrix.
  • the result of this reading is put in a Results table.
  • the values inserted in the Results table are random numbers that can be used in applications that require a high degree of indeterminacy.
  • GenAlea Results [lncr].
  • the objective of this operation is to guarantee a constant indeterminacy of the order of sequence of transformations by the use of the hazards (AS and AQ) generated by the present invention.
  • step 1406 the supervisor performs the test concerning the amount of random numbers generated. If this number reaches or exceeds a threshold number requested, the supervisor stops the generation cycle, the Results table containing all the required random numbers. In the opposite case, the supervisor proceeds to step 1407 where the variable Incr is incremented by 1 and then proceeds to step 1403 to continue the generation.

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Stabilization Of Oscillater, Synchronisation, Frequency Synthesizers (AREA)
  • Image Generation (AREA)
  • Debugging And Monitoring (AREA)

Abstract

The invention relates to a method of generating nondeterministic random elements by computing means, in which the frequency of operation of at least part of said computing means is increased, at least until an error at the output of the means whose operating frequency has been increased is detected.

Description

PROCEDE ET INSTALLATION DE GENERATION D'ALEAS NON  METHOD AND INSTALLATION FOR GENERATING NON-ALEAS

DETERMINISTES  DETERMINISTIC

L'invention concerne le domaine de la génération d'aléas par des moyens informatiques. The invention relates to the field of the generation of hazards by computer means.

Plus précisément, l'invention concerne le domaine de la génération d'aléas non déterministes utilisables par exemple dans des applications de génération de nombres aléatoires sûrs, de jeux ou loteries ou de simulation à grande échelle.  More specifically, the invention relates to the field of the generation of non-deterministic hazards usable for example in applications for generating safe random numbers, games or lotteries or large-scale simulation.

La génération d'aléas non déterministes par des moyens informatiques se heurte au problème de fond du déterminisme incontournable du fonctionnement des ordinateurs. A. Turing [1 ] a décrit la dimension du déterminisme laplacien de la machine à états discrets qui sert depuis au fondement théorique du fonctionnement de tous les ordinateurs et de leur insensibilité aux conditions initiales qui régit tous les phénomènes physiques de notre univers. Afin de résoudre ce problème, plusieurs approches ont été suivies durant ces vingt dernières années. La première est d'aller chercher à l'extérieur de l'ordinateur une source d'aléas basés sur des phénomènes physiques non prédictibles. Des sites internet fournissent ainsi la possibilité de trouver le résultat sous forme d'une suite de bits de la collecte de ces phénomènes physiques. Les plus célèbres sont: Hotbits [2], basé sur la désintégration radioactive du Cassium-137, LavaRand [3], basé sur les images de « lampes à lave » filmées par une caméra, LavaRnd [4], basé sur le bruit d'un capteur CCD ou random.org [5], basé sur le bruit radio-atmosphérique.  The generation of non-deterministic hazards by computer means comes up against the fundamental problem of the unavoidable determinism of the functioning of computers. A. Turing [1] has described the Laplacian determinism dimension of the discrete state machine, which has since been used as a theoretical basis for the functioning of all computers and their insensitivity to the initial conditions that govern all the physical phenomena of our universe. In order to solve this problem, several approaches have been followed over the last twenty years. The first is to look outside the computer for a source of randomness based on unpredictable physical phenomena. Internet sites thus provide the possibility of finding the result in the form of a series of bits of the collection of these physical phenomena. The most famous are: Hotbits [2], based on the radioactive decay of Cassium-137, LavaRand [3], based on images of "lava lamps" filmed by a camera, LavaRnd [4], based on the noise of a CCD or random.org sensor [5], based on radio-atmospheric noise.

Toutes ces approches présentent plusieurs inconvénients majeurs dont la nécessité d'être connecté pour avoir accès aux aléas et le très faible débit (quelques centaines de bits par seconde) qu'il est possible d'obtenir de ces sources.  All these approaches have several major drawbacks, including the need to be connected to have access to hazards and the very low bit rate (a few hundred bits per second) that can be obtained from these sources.

La seconde approche consiste à collecter un certain nombre d'événements intervenant au sein d'un ordinateur afin d'alimenter un bassin d'entropie (entropie pool en anglais) qui servira par la suite de germe (seed) à des générateurs de nombres pseudo aléatoires. Parmi ces événements, sont couramment utilisés: le déplacement du périphérique de pointage (souris), l'activité réseau ou des entrées/sorties (I/O), la charge du processeur ou le bruit généré par la carte son de l'ordinateur. Les systèmes d'exploitation comme Linux, Solaris, FreeBSD (et bien d'autres) utilisent cette approche sous la forme de la lecture de l'entropie contenue dans le fichier « /dev/random » [6]. Une description des faiblesses d'une telle approche et des attaques possibles a été faite en 2006 [7]. On notera à ce propos que les travaux du projet HAVEGE [32] semblent y apporter un certain nombre de réponses. The second approach is to collect a number of events occurring within a computer to power a entropy pool (entropy pool in English) which will later serve seed to pseudo random number generators. These events are commonly used: moving the pointing device (mouse), network activity or input / output (I / O), processor load, or noise generated by the computer sound card. Operating systems like Linux, Solaris, FreeBSD (and many others) use this approach in the form of the entropy reading contained in the "/ dev / random" file [6]. A description of the weaknesses of such an approach and possible attacks was made in 2006 [7]. It should be noted in this connection that the work of the HAVEGE project [32] seems to provide a number of answers.

La troisième approche est radicalement différente en ce qu'elle fait appel à de vraies sources d'aléas physiques connectées sous forme de périphériques à l'ordinateur et fait l'objet d'une offre commerciale contrairement aux approches précédentes. Les sources d'aléas physiques choisies par ces solutions sont par exemple: oscillateurs multiples déphasés, jonctions de diodes ou de transistors, oscillateurs en cascade ou des phénomènes d'optique quantique. Il est possible de trouver sur le marché ces différents produits, dont: le SG100 TRNG [8] de la société Protego, le R2000KU [9] de la société ComScire, le rw3 [10] construit par Rolf Freitag ou le Quantis de la société id Quantique [11 ]. Différents brevets ou demandes de brevet ont été déposés concernant ce type de solutions (telles que DE 19926640, US 6,324,558, US 6,763,364; US 6,862,605, US 7,096,242, ou encore FR 04 09138 et FR 05 52046).  The third approach is radically different in that it uses real sources of physical hazards connected in the form of peripherals to the computer and is the subject of a commercial offer contrary to the previous approaches. The sources of physical hazards chosen by these solutions are, for example, out of phase multiple oscillators, diode or transistor junctions, cascaded oscillators or quantum optics phenomena. It is possible to find on the market these different products, including: the SG100 TRNG [8] of the Protego company, the R2000KU [9] of the ComScire company, the rw3 [10] built by Rolf Freitag or the Quantis of the company Quantum id [11]. Various patents or patent applications have been filed for this type of solution (such as DE 19926640, US 6,324,558, US 6,763,364, US 6,862,605, US 7,096,242, or FR 04 09138 and FR 05 52046).

Malgré les indéniables qualités (volume de bits, uniformité) des aléas fournis par ces dispositifs, un certain nombre de défauts rend ces solutions peu accessibles au plus grand nombre, notamment la nécessité d'acquérir un périphérique spécialisé, d'installer un driver spécifique, de suivre des mises à jour de la partie logicielle associée, etc. De plus, l'évolution dans le temps des sources physiques d'aléas (radioactivité, lasers, ...) ou des dispositifs relatifs à leur détection (vieillissement des capteurs) doit encore faire l'objet de recherches pour en valider la fiabilité à long terme. Despite the undeniable qualities (bit volume, uniformity) of the hazards provided by these devices, a number of faults make these solutions inaccessible to the greatest number, in particular the need to acquire a specialized device, to install a specific driver, to follow updates of the associated software part, etc. In addition, the evolution over time of physical sources of hazards (radioactivity, lasers, ...) or devices relating to their detection (aging of sensors) still needs to be researched to validate its long-term reliability.

Un but de la présente invention est donc de résoudre les problèmes soulevés par les générateurs d'aléas actuels, en particulier la faiblesse de leurs débits, la vulnérabilité des bassins d'entropie, la complexité et la spécificité des dispositifs mis en œuvre, etc. An object of the present invention is therefore to solve the problems raised by current hazard generators, in particular the weakness of their bit rates, the vulnerability of the entropy pools, the complexity and specificity of the devices implemented, etc.

Plus précisément, un but de l'invention est de rendre la génération d'aléas indépendante, sans faire appel à des ressources externes (périphériques dédiées, sites internet) ou internes (événements, interruptions) pour initialiser ou entretenir la génération d'aléas, et en utilisant des ressources (interfaces de programmation, matériels) standards et présentes sur la majorité des ordinateurs personnels, des matériels industriels embarqués ou des périphériques portables (téléphones, tablettes, netbook), afin d'améliorer la qualité cryptographique des aléas générés par l'impossibilité de prédiction des états successifs du générateur ainsi que par la protection des états internes du générateur contre des attaques. Pour cela l'invention propose un procédé de génération d'aléas non déterministes par des moyens informatiques, dans lequel on augmente la fréquence de fonctionnement d'au moins une partie desdits moyens informatiques, au moins jusqu'à ce qu'une erreur en sortie des moyens dont on a augmenté la fréquence de fonctionnement soit détectée.  More precisely, an aim of the invention is to make the generation of random events independent without resorting to external resources (dedicated peripherals, internet sites) or internal resources (events, interrupts) to initiate or maintain the generation of random events. and using resources (programming interfaces, hardware) standard and present on the majority of personal computers, embedded industrial equipment or portable devices (phones, tablets, netbook), to improve the cryptographic quality of the hazards generated by the impossibility of prediction of the successive states of the generator as well as the protection of the internal states of the generator against attacks. For this purpose, the invention proposes a method for generating non-deterministic hazards by computer means, in which the operating frequency of at least a portion of said computer means is increased, at least until an error in the output means whose operating frequency has been increased is detected.

Certains aspects préférés mais non limitatifs de l'invention sont les suivants :  Some preferred but non-limiting aspects of the invention are the following:

- le procédé comprend les étapes suivantes :  the method comprises the following steps:

o on incrémente la fréquence de fonctionnement d'au moins une partie des moyens informatiques, et  the operating frequency of at least a portion of the computer resources is incremented, and

o on met en œuvre sur les moyens informatiques dont on a augmenté la fréquence de fonctionnement une transformation qui en modifie l'état ; o we implement on computer means whose operating frequency has been increased transformation that modifies its state;

les étapes d'incrémentation et de transformation étant répétées au moins jusqu'à la détection d'une erreur en sortie des moyens dont on a incrémenté la fréquence de fonctionnement ; the incrementation and transformation steps being repeated at least until an error is detected at the output of the means whose operating frequency has been incremented;

- la transformation est une transformation ergodique ;  - transformation is an ergodic transformation;

- les moyens informatiques dont on incrémenté la fréquence de fonctionnement comportent une mémoire de travail, et la transformation modifie l'adressage de données mémorisées dans ladite mémoire ;  the computer means whose operating frequency is incremented comprises a working memory, and the transformation modifies the addressing of data stored in said memory;

- on détecte une erreur par comparaison entre des états attendus pour les données sur lesquelles on met en œuvre la transformation et des états obtenus à l'issue de la transformation pour ces données ;  an error is detected by comparison between expected states for the data on which the transformation is implemented and states obtained at the end of the transformation for these data;

- le procédé comprend en outre une étape de génération d'aléas dans laquelle on génère:  the method further comprises a random generation step in which:

o un aléa temporel en déterminant le moment d'apparition de l'erreur ; et/ou  o a temporal hazard by determining the moment of appearance of the error; and or

o un aléa spatial en déterminant les coordonnées de l'erreur ; et/ou  o a spatial hazard by determining the coordinates of the error; and or

o un aléa quantitatif en évaluant la différence entre la valeur de l'état attendu de l'erreur avec la valeur de l'état obtenu de l'erreur ;  o a quantitative hazard by evaluating the difference between the value of the expected state of the error and the value of the state obtained from the error;

- le procédé comprend en outre au moins un cycle de collecte, au cours duquel :  the method further comprises at least one collection cycle, during which:

o on détermine les aléas générés lors de la dernière transformation et  o the uncertainties generated during the last transformation and

o on transforme l'état des moyens informatiques dont on a augmenté la fréquence de fonctionnement en modifiant l'adressage des données dans la mémoire en fonction de ces aléas ;  o transforming the state of the computer resources whose operating frequency has been increased by modifying the addressing of the data in the memory according to these hazards;

- le procédé comprend en outre les étapes au cours desquelles :  the method further comprises the steps in which:

o on définit une variable d'aléas : o on initialise la variable d'aléas en fonction des aléas générés lors de la dernière transformation, l'étape de transformation de l'état des moyens informatiques étant mise en œuvre en fonction de la valeur de ladite variable d'aléas ; et o we define a variable of randomness: o the random variable is initialized according to the random events generated during the last transformation, the step of transforming the state of the computer means being implemented as a function of the value of said random variable; and

o on modifie la valeur de la variable d'aléas en fonction des aléas détectés lors de la nouvelle transformation ;  o the value of the hazard variable is modified according to the hazards detected during the new transformation;

le procédé comprend en outre les étapes au cours desquelles : the method further comprises the steps in which:

o on répartit l'adressage des données en N sous-groupes, N étant un nombre entier non nul ; et  o the addressing of the data is divided into N subgroups, N being a non-zero integer; and

o on transforme l'état des moyens informatiques dont on a augmenté la fréquence de fonctionnement en modifiant l'adressage des données dans la mémoire par sous-groupe selon un ordre qui est déterminé par la valeur de ladite variable d'aléas ;  transforming the state of the computer means whose operating frequency has been increased by modifying the addressing of the data in the memory by subgroup according to an order which is determined by the value of said random variable;

le procédé comprend en outre les étapes au cours desquelles : the method further comprises the steps in which:

o on définit un nombre seuil ;  o a threshold number is defined;

o on détermine si le nombre d'erreurs produites par l'augmentation de fréquence des moyens informatiques dépasse le nombre seuil;  o it is determined whether the number of errors produced by the increase in the frequency of the computer means exceeds the threshold number;

si le nombre seuil est atteint ou dépassé, on termine le cycle de collecte ; if the threshold number is reached or exceeded, the collection cycle is completed;

si le nombre seuil n'est pas atteint, on recommence un nouveau cycle de collecte en réitérant l'étape de transformation ; if the threshold number is not reached, a new collection cycle is repeated by repeating the transformation step;

pour cela, for that,

o on définit une quantité seuil de nombres aléatoires ;  o define a threshold quantity of random numbers;

o on initialise un tableau de résultats à partir des données transformées issues des cycles de collecte;  o a results table is initialized from the transformed data resulting from the collection cycles;

o on effectue une transformation des états des données en modifiant leur adressage; o on détecte les aléas générés par la transformation ; et o on remplit le tableau de résultats avec les aléas détectés lors de la transformation ; o a transformation of the states of the data by modifying their addressing; o the hazards generated by the transformation are detected; and o fill in the results table with the hazards detected during the transformation;

les étapes de transformation et de remplissage du tableau étant réitérées jusqu'à ce que la quantité de nombres aléatoires contenus dans le tableau atteigne ou dépasse la quantité seuil prédéfinie ; the transformation and filling steps of the array being repeated until the quantity of random numbers contained in the array reaches or exceeds the predefined threshold quantity;

- les données auxquelles on applique une transformation sont des valeurs de pixels (501 -506) formant une matrice initiale, et les données transformées sont des valeurs de pixels formant une matrice transformée ;  the data to which a transformation is applied are pixel values (501 -506) forming an initial matrix, and the transformed data are pixel values forming a transformed matrix;

- on détecte l'erreur par comparaison des valeurs des pixels de la matrice transformée avec des valeurs des pixels de la matrice initiale, ladite erreur étant une erreur de couleur ;  the error is detected by comparing the values of the pixels of the transformed matrix with values of the pixels of the initial matrix, said error being a color error;

- on détecte l'erreur en effectuant, au cours d'un même cycle de transformation, deux lectures consécutives de la matrice transformée afin de comparer des valeurs de pixels issues de la première lecture de la matrice transformée avec des valeurs de pixels issues de la deuxième lecture de la même matrice, ladite erreur étant une erreur de différences ;  the error is detected by performing, during the same transformation cycle, two consecutive readings of the transformed matrix in order to compare pixel values resulting from the first reading of the transformed matrix with pixel values derived from the second reading of the same matrix, said error being a difference error;

- le procédé comprend en outre en outre une boucle de rétroaction comprenant les étapes suivantes :  the method furthermore comprises, in addition, a feedback loop comprising the following steps:

o initialiser une variable de rétroaction ;  o initialize a feedback variable;

o déterminer si l'erreur détectée est une erreur de couleur ou une erreur de différence ;  o determine whether the detected error is a color error or a difference error;

si la valeur de la variable est paire, détecter une erreur de couleur ; if the value of the variable is even, detect a color error;

si la valeur de la variable est impaire, détecter une erreur de différences ; et if the value of the variable is odd, detect a difference error; and

o incrémenter la variable de rétroaction ;  o increment the feedback variable;

- les moyens informatiques sont une carte graphique, les données auxquelles on applique une transformation étant des données mémorisées dans sa mémoire vive, et dans lequel, préalablement à l'incrémentation de la fréquence, on initialise le procédé selon les étapes suivantes : the computer means are a graphics card, the data to which a transformation is applied being data stored in its random access memory, and in which, prior to the incrementation of the frequency, the method is initialized according to the following steps:

o détecter la carte graphique ;  o detect the graphics card;

o déterminer la capacité de sur-fréquençage de la mémoire vive de la carte graphique ;  o determine the over-frequency capacity of the RAM of the graphics card;

o créer un contexte graphique ; et  o create a graphical context; and

o initialiser la matrice initiale de pixels ; et  initializing the initial matrix of pixels; and

- le procédé comprend les étapes au cours desquelles :  the method comprises the steps in which:

o on définit un standard pour les moyens informatiques en définissant un nombre maximum d'erreurs admissibles pour une augmentation de fréquence donnée,  o a standard is defined for computing resources by defining a maximum number of allowable errors for a given frequency increase,

o on détermine si le nombre d'erreurs obtenues est supérieur ou égal à ce nombre maximum d'erreurs admissibles ; et o on détermine si les moyens informatiques sont conformes au standard  o whether the number of errors obtained is greater than or equal to this maximum number of allowable errors; and o it is determined whether the computer means comply with the standard

o on détermine les coordonnées des pixels générant systématiquement une erreur à partir d'une fréquence déterminée, et on définit un identifiant unique des moyens informatiques en construisant une cartographie de ces pixels Selon un deuxième aspect, l'invention propose un système informatique pour la génération d'aléas non déterministes, comprenant : the coordinates of the pixels that systematically generate an error from a determined frequency are determined, and a unique identifier of the computer means is defined by constructing a mapping of these pixels. According to a second aspect, the invention proposes a computer system for the generation non-deterministic hazards, including:

- un générateur, qui est un moyen informatique à horloge interne,a generator, which is a computer means with an internal clock,

- un superviseur à processeur apte à interagir avec ledit générateur, le superviseur commandant l'augmentation de la fréquence de l'horloge interne du générateur et comporte des moyens pour mettre en œuvre une détection d'erreur en sortie du générateur. a processor supervisor capable of interacting with said generator, the supervisor controlling the increase of the frequency of the generator's internal clock and comprises means for implementing an error detection at the output of the generator.

Certains aspects préférés mais non limitatifs du système selon l'invention sont les suivants :  Some preferred but non-limiting aspects of the system according to the invention are the following:

- le générateur est un moyen informatique à processeur et comporte des moyens mémorisant une transformation à mettre en œuvre, le superviseur commandant la mise en œuvre de ladite transformation ;the generator is a processor-based computer means and includes means for memorizing a transformation to be implemented, the supervisor controlling the implementation of the said transformation;

- le générateur est une carte graphique ; - the generator is a graphics card;

- le superviseur est une carte mère d'un ordinateur ; et  - the supervisor is a motherboard of a computer; and

- le superviseur et le générateur sont l'un et l'autre portés par une carte mère d'un ordinateur.  - the supervisor and the generator are both carried by a motherboard of a computer.

Un tel système permet notamment d'utiliser la puissance en constante augmentation des processeurs graphiques (GPU) pour générer de grands volumes d'aléas. D'autres caractéristiques, buts et avantages apparaîtront mieux à la lecture de la description détaillée qui va suivre, et en regard des dessins annexés donnés à titre d'exemples non limitatifs et sur lesquels :  Such a system makes it possible in particular to use the constantly increasing power of graphics processors (GPU) to generate large volumes of randomness. Other features, aims and advantages will appear better on reading the detailed description which follows, and with reference to the appended drawings given as non-limiting examples and in which:

la figure 1 représente schématiquement un ordinateur conventionnel, équipé de périphériques,  FIG. 1 schematically represents a conventional computer, equipped with peripherals,

la figure 2 représente schématiquement une carte graphique conventionnelle ;  Figure 2 schematically shows a conventional graphics card;

la figure 3 représente un organigramme de fonctionnement d'un système selon l'invention ;  FIG. 3 represents an operating flow diagram of a system according to the invention;

la figure 4 représente la nature des flux entre le superviseur et le générateur ;  FIG. 4 represents the nature of the flows between the supervisor and the generator;

la figure 5 représente un zoom à 3200% de la matrice initiale chargée au début du procédé selon l'invention par le superviseur dans la mémoire vidéo du générateur ;  FIG. 5 represents a 3200% zoom of the initial matrix loaded at the beginning of the method according to the invention by the supervisor in the video memory of the generator;

la figure 6 représente des histogrammes de canaux de couleurs RGBA de la matrice initiale de pixels selon une forme de réalisation de l'invention ;  Fig. 6 shows histograms of RGBA color channels of the initial pixel matrix according to one embodiment of the invention;

la figure 7 représente des histogrammes de canaux de couleurs RGBA de la matrice de pixels, mettant en évidence la répartition des aléas apparus après application d'un cycle de détection conforme à l'invention, dans le cas de la forme de réalisation de la figure 6 contenant les aléas lus par le superviseur à partir de la mémoire vidéo du générateur ; la figure 8 représente un zoom d'une partie de la matrice finale mettant en évidence les aléas apparus après l'application d'un cycle de détection du procédé conforme à l'invention; FIG. 7 represents histograms of RGBA color channels of the pixel matrix, highlighting the distribution of the hazards appeared after application of a detection cycle according to the invention, in the case of the embodiment of the FIG. 6 containing the hazards read by the supervisor from the video memory of the generator; FIG. 8 represents a zoom of a part of the final matrix highlighting the hazards that appeared after the application of a detection cycle of the method according to the invention;

la figure 9 représente des histogrammes de canaux de couleurs RGBA de la matrice finale de pixels, mettant en évidence la répartition des aléas apparus après application d'un cycle de détection et d'un cycle de collecte conformes à l'invention ;  FIG. 9 represents histograms of RGBA color channels of the final matrix of pixels, highlighting the distribution of the hazards appeared after application of a detection cycle and a collection cycle according to the invention;

la figure 10 représente des histogrammes des canaux RGBA correspondant à la matrice de pixels après application de dix millions (10000000) de cycles de détection conformes à l'invention sans sur- fréquençage;  FIG. 10 represents histograms of the RGBA channels corresponding to the matrix of pixels after the application of ten million (10,000,000) detection cycles in accordance with the invention without overfrequency;

la figure 11 détaille des étapes de l'initialisation du procédé selon l'invention ;  Figure 11 details steps of the initialization of the method according to the invention;

la figure 12 détaille des étapes du cycle de détection selon l'invention ; la figure 13 détaille des étapes du cycle de collecte selon l'invention; la figure 14 détaille des étapes du cycle de génération selon l'invention; et  Figure 12 details the steps of the detection cycle according to the invention; Figure 13 details steps of the collection cycle according to the invention; Figure 14 details steps of the generation cycle according to the invention; and

la figure 15 détaille quatre exemples de transformations qui pouvant être mises en œuvre au cours de trois cycle illustrés par les figures 12 à 14.  Figure 15 details four examples of transformations that can be implemented over three cycles illustrated in Figures 12 to 14.

Principes généraux General principles

Les figures 1 et suivantes illustrent une mise en œuvre du sur- fréquençage (ou overdocking en anglais) d'un ou plusieurs composants d'un ordinateur pour créer des aléas non déterministes selon l'invention.  Figures 1 and following illustrate an implementation overclocking (or overdocking in English) of one or more components of a computer to create non-deterministic hazards according to the invention.

Ces composants électroniques font l'objet de spécifications standards qui permettent aux fournisseurs de composants ainsi qu'à leurs clients d'industrialiser leur fabrication et leur assemblage.  These electronic components are subject to standard specifications that allow component suppliers and their customers to industrialize their manufacturing and assembly.

Selon une forme de réalisation, on sur-fréquence de préférence la mémoire de travail d'un processeur, par exemple une mémoire vive (RAM) de l'ordinateur et/ou certains de ses périphériques tels que sa carte graphique. According to one embodiment, the working memory of a processor, for example a random access memory (RAM) of the computer and / or some of its peripherals such as its card, is preferably on-frequency. graphic.

Les standards en matière de mémoire vive sont élaborés et finalisés par le consortium JEDEC (Joint Electron Devices Engineering Council) sous la forme de spécifications décrivant l'ensemble des caractéristiques des mémoires comme la DDR (Double Data Rate) 2 ou 3.  The RAM standards are developed and finalized by the Joint Electron Devices Engineering Council (JEDEC) consortium in the form of specifications describing all memory characteristics such as DDR (Double Data Rate) 2 or 3.

Ces spécifications font l'objet d'implémentations physiques que les industriels décrivent sous la forme de « datasheet ». Ces composants, une fois fabriqués, font l'objet de tests qui garantissent l'adéquation entre les spécifications et la finalisation de leur fabrication. Les résultats de ces tests peuvent aboutir à l'acceptation du composant fabriqué, son déclassement ou son rejet.  These specifications are the subject of physical implementations that manufacturers describe as a "datasheet". These components, once manufactured, are tested to ensure that the specifications are correct and finalized. The results of these tests may lead to the acceptance of the manufactured component, its downgrading or its rejection.

Le sur-fréquençage est un ensemble de techniques visant à augmenter les performances d'un ou plusieurs composants d'un ordinateur en s'appuyant sur leurs tolérances physiques, afin d'obtenir des performances globales de fonctionnement plus élevées. Ces techniques font notamment l'objet de sites qui leur sont consacrés [15][16], d'outils spécialisés [17] qui sont parfois fournis par les constructeurs de matériels eux-mêmes [18][19][20], de benchmarks (mesures de performances) [21][22][23] et de compétitions officielles [24]. Ces techniques visent principalement deux composants: le processeur et la mémoire vive dont le sur-fréquençage doit faire l'objet de tests de stabilité visant à détecter le seuil au-delà duquel le fonctionnement de l'ordinateur ou du périphérique en question pourrait être remis en cause.  Overclocking is a set of techniques designed to increase the performance of one or more components of a computer by relying on their physical tolerances, in order to achieve higher overall operating performance. These techniques are particularly the subject of sites devoted to them [15] [16], specialized tools [17] which are sometimes provided by the equipment manufacturers themselves [18] [19] [20], benchmarks (performance measures) [21] [22] [23] and official competitions [24]. These techniques are mainly aimed at two components: the processor and the RAM whose over-frequency is to be subjected to stability tests aimed at detecting the threshold beyond which the operation of the computer or device in question could be postponed. in question.

Les outils de tests les plus utilisés sont: Super PI (processeur)[24], Prime 95 (processeur)[25], memtest (mémoire vive)[26], OCCT (processeur+mémoire)[27], Fur Mark (carte graphique)[28]. Le support officiel du sur-fréquençage par les fournisseurs de leur propre matériel garantit donc le bon fonctionnement de l'invention dans les limites de tolérances industrielles supportées par ces mêmes constructeurs.  The most used test tools are: Super PI (processor) [24], Prime 95 (processor) [25], memtest (RAM) [26], OCCT (processor + memory) [27], Fur Mark (card graph). [28] The official support of overfrequency by the suppliers of their own hardware thus guarantees the proper functioning of the invention within the limits of industrial tolerances supported by these same manufacturers.

Ici, on utilise donc le sur-fréquençage d'un composant standard d'un ordinateur afin de créer des aléas non déterministes, -sans remettre en cause le bon fonctionnement de l'ordinateur ou du périphérique dont le composant fait l'objet du sur-fréquençage et -sans mettre en danger le composant lui-même par cette action. Here, we use the over-frequency of a standard component of a computer to create non-deterministic hazards, without questioning the good functioning of the computer or the peripheral whose component is the object of the overfrequency and without endangering the component itself by this action.

De préférence, on sur-fréquence la mémoire vive de la carte graphique de l'ordinateur, de manière à ne pas sur-fréquencer le processeur ou la mémoire vive de l'ordinateur et d'en garantir l'intégrité et le bon fonctionnement de la présente invention.  Preferably, the RAM of the graphics card of the computer is over-frequency so as not to over-frequent the processor or the random-access memory of the computer and to guarantee the integrity and proper functioning of the computer. the present invention.

En effet, en cas de sur-fréquençage excessif de la mémoire vive de la carte graphique, seule la partie concernant l'affichage de l'ordinateur est affectée, et nécessiterait au pire un redémarrage de l'ordinateur sans conséquence pour son intégrité.  Indeed, in case of over-excessive frequency of the RAM of the graphics card, only the part concerning the display of the computer is affected, and at worst would require a restart of the computer without impact on its integrity.

Par ailleurs, la mémoire vive est un composant dont les tolérances de fonctionnement (fréquences, voltages, températures) sont beaucoup plus grandes que pour un processeur. Les risques de dommages électroniques irrémédiables de mémoire vive par augmentation de la fréquence sont donc extrêmement faibles. A l'inverse, le sur-fréquençage du processeur peut amener, en cas de défaut de refroidissement adapté à une destruction définitive de ce composant. Ceci reste vrai pour le processeur de l'ordinateur (CPU) ou pour d'un processeur de la carte graphique (GPU).  In addition, the RAM is a component whose operating tolerances (frequencies, voltages, temperatures) are much greater than for a processor. The risk of irreparable electronic damage to RAM by increasing the frequency is extremely low. Conversely, the over-frequency of the processor can bring, in case of cooling fault adapted to a permanent destruction of this component. This remains true for the processor of the computer (CPU) or for a processor of the graphics card (GPU).

Système pour la génération d'aléas System for hazard generation

Les moyens informatiques prévus pour cette mise en œuvre comprennent par exemple:  The computer resources planned for this implementation include, for example:

· un processeur (que l'on dénommera dans la suite de cette description un superviseur), susceptible d'interagir avec des périphériques, en particulier un processeur graphique, et capable d'exécuter un programme de supervision ; et  A processor (hereinafter referred to as a supervisor), capable of interacting with peripherals, in particular a graphics processor, and capable of executing a supervision program; and

• un périphérique (que l'on dénommera dans la suite de cette description un générateur) tel qu'un processeur graphique, possédant une mémoire de travail dédiée susceptible d'augmenter en fréquence de fonctionnement et capable d'exécuter un programme ou transformation, apte à modifier l'état du périphérique. A device (hereinafter referred to as a generator), such as a graphics processor, having a dedicated working memory capable of increasing in frequency of functioning and able to execute a program or transformation, able to modify the state of the device.

Le générateur exécute une transformation, de préférence mélangeante, dont chaque cycle de transformation correspond à un état différent du générateur.  The generator executes a transformation, preferably a mixing, of which each transformation cycle corresponds to a different state of the generator.

Le superviseur effectue la mesure de l'état interne du générateur à chaque cycle de transformation du générateur. Cette mesure consiste dans la recherche d'erreurs contenues dans les données transformées par le générateur.  The supervisor measures the internal state of the generator at each generator transformation cycle. This measurement consists in finding errors contained in the data transformed by the generator.

De préférence, au cours d'un cycle de mesure donné, le superviseur sur-fréquence la mémoire vive du générateur en incrémentant la fréquence de la mémoire vive d'un pas déterminé. Il fait ensuite exécuter par le générateur un cycle de transformation pour chaque fréquence, puis lit dans la mémoire du générateur des données ayant fait l'objet de la transformation. Avantageusement, la transformation mélangeante comporte un temps de cycle de retour à un état identique le plus long possible.  Preferably, during a given measurement cycle, the supervisor over-frequency the random access memory of the generator by incrementing the frequency of the random access memory by a determined step. The generator then executes a transformation cycle for each frequency and then reads the transformed data into the generator memory. Advantageously, the mixing transformation comprises a return cycle time to an identical state as long as possible.

Cette transformation mélangeante peut être une « transformation du boulanger » dont les propriétés d'ergodicité ont été prouvées [29]. Par transformation ergodique, la présente invention entend que la répartition de la suite des états successifs du système transformé s suivant une transformation T est celle de tous les états possibles du système s à un instant n de T(n).  This blending transformation can be a "baker's transformation" whose ergodicity properties have been proven [29]. By ergodic transformation, the present invention intends that the distribution of the succession of successive states of the transformed system following a transformation T is that of all the possible states of the system s at an instant n of T (n).

Ces propriétés sont utilisées dans le cadre de la présente invention de la manière suivante:  These properties are used in the context of the present invention as follows:

- Après chaque étape de la transformation du boulanger, les coordonnées géométriques de chaque point sont modifiées, ce qui garantit un état n+1 toujours différent l'état précédant n modulo le temps de retour à l'identique.  - After each step of the baker's transformation, the geometric coordinates of each point are modified, which guarantees a state n + 1 always different from the state preceding n modulo the return time to the identical.

- Le temps de retour à l'identique d'un ensemble de points dépend des dimensions de la matrice faisant l'objet de la transformation. Dans une mise en œuvre préférée, les dimensions sont choisies pour avoir un temps de retour garantissant un très grand nombre d'états différents. - The time of return to the identical of a set of points depends on the dimensions of the matrix which is the object of the transformation. In preferred implementation, the dimensions are chosen to have a return time guaranteeing a very large number of different states.

- La qualité d'ergodicité de la transformation du boulanger garantit également une conservation des propriétés de la distribution des probabilités qui est nécessaire pour l'uniformité des aléas générés par la présente invention.  The quality of ergodicity of the baker's transformation also guarantees a conservation of the properties of the probability distribution which is necessary for the uniformity of the hazards generated by the present invention.

Le procédé proposé n'est cependant pas limité au sur-fréquençage de la mémoire vive d'un processeur graphique.  The proposed method is however not limited to over-frequencying of the RAM of a graphics processor.

Typiquement, le générateur peut également être une carte mère adaptée pour sur-fréquencer un composant tel qu'un bus mémoire, bus de communication (PCI, PIC-E, ...), une mémoire de travail ou un processeur (CPU), un processeur graphique (GPU) ou une partie de ce processeur (shaders).  Typically, the generator may also be a motherboard adapted to over-frequency a component such as a memory bus, communication bus (PCI, PIC-E, ...), a working memory or a processor (CPU), a graphics processor (GPU) or a part of this processor (shaders).

Selon une forme de réalisation préférée, les données manipulées par le générateur sont des valeurs de pixels. En particulier, les données peuvent être constituées d'une matrice de pixels contenant quatre canaux de couleurs: rouge (R), vert (G), bleu (B) et une couche de transparence appelée alpha (A), désignée par la suite par « RGBA ».  According to a preferred embodiment, the data manipulated by the generator are pixel values. In particular, the data may consist of a matrix of pixels containing four color channels: red (R), green (G), blue (B) and a transparency layer called alpha (A), subsequently designated by "RGBA".

Néanmoins, la présente invention ne se limite pas au traitement de pixels mais peut également être appliquée à d'autres types de données comme des nombres entiers ou flottants.  Nevertheless, the present invention is not limited to pixel processing but can also be applied to other types of data such as integers or floating-point numbers.

Le superviseur initialise alors au démarrage une matrice comprenant des valeurs initiales de pixels selon une disposition spécifique susceptible de favoriser l'apparition d'erreurs. Ces valeurs peuvent être systématiquement les mêmes à chaque nouvelle étape d'initialisation puisque c'est l'indéterminisme des aléas générés par le sur-fréquençage qui garantit les propriétés de non-prédictibilité de la présente invention.  The supervisor then initiates at startup a matrix comprising initial pixel values according to a specific provision likely to promote the appearance of errors. These values can be systematically the same at each new initialization step since it is the indeterminacy of the hazards generated by the overfrequency that guarantees the non-predictability properties of the present invention.

La typologie des aléas générés par le sur-fréquençage peut être la suivante:  The typology of the hazards generated by the over-frequency can be the following:

- Des aléas temporels, désignées par la suite AT, caractérisés par le moment d'apparition des erreurs générées par le sur-fréquençage. La mesure de ces aléas peut se faire par le temps écoulé depuis le démarrage de la phase de détection, par la fréquence associée à l'apparition de la première erreur ou par la valeur d'une variable incrémentée à chaque augmentation de la fréquence. Temporal hazards, designated by the AT sequence, characterized by the moment of appearance of the errors generated by the overfrequency. The These uncertainties can be measured by the time elapsed since the start of the detection phase, by the frequency associated with the appearance of the first error or by the value of a variable incremented with each increase in the frequency.

- Des aléas spatiaux, désignées par la suite AS, caractérisés par la position des erreurs générées par le sur-fréquençage. La mesure de ces aléas correspond aux coordonnées (abscisses et ordonnées) du pixel dans la matrice transformée par le générateur ou par son adresse physique.  Spatial hazards, referred to as AS, characterized by the position of the errors generated by the overfrequency. The measurement of these hazards corresponds to the coordinates (abscissa and ordinate) of the pixel in the matrix transformed by the generator or by its physical address.

- Des aléas quantitatifs, désignés par la suite AQ, correspondent à la différence entre les valeurs de référence attendues par le superviseur et celles fournies par la générateur.  Quantitative random events, referred to as AQ, correspond to the difference between the reference values expected by the supervisor and those provided by the generator.

Les aléas AT, AS ou AQ sont alors détectés par le superviseur par comparaison des valeurs des pixels de la matrice transformée par rapport aux valeurs des pixels de la matrice initiale, c'est à dire dans :  Hazards AT, AS or AQ are then detected by the supervisor by comparing the values of the pixels of the transformed matrix with respect to the values of the pixels of the initial matrix, ie in:

(1 ) L'apparition d'une ou plusieurs couleurs RGBA dans la matrice de pixel transformée par le générateur qui sont différentes de celles initialisées au démarrage du programme. Il s'agit alors d'une « erreur de couleurs » ; et  (1) The appearance of one or more RGBA colors in the pixel matrix transformed by the generator that are different from those initialized at the start of the program. It is then a "color error"; and

(2) Des couleurs RGBA qui diffèrent entre deux lectures consécutives de la matrice de pixels du générateur correspondant au même cycle de transformation. Il s'agit alors d'une « erreur de différences ».  (2) RGBA colors that differ between two consecutive reads of the generator pixel array corresponding to the same transformation cycle. It is then a "mistake of differences".

Le superviseur qualifie chaque erreur détectée en aléa AT, AS ou AQ. De préférence, le superviseur effectue trois cycles différents au cours desquels il pourra être procédé à la recherche d'une ou plusieurs « erreur de couleurs » et/ou « erreur de différences »:  The supervisor qualifies each error detected as random AT, AS or AQ. Preferably, the supervisor carries out three different cycles in which one or more "color errors" and / or "error of differences" may be searched:

- un premier cycle, dit de détection, vise à déterminer l'apparition de la ou les première(s) erreur(s) de couleurs et/ou la ou les première(s) erreur(s) de différences.  - A first cycle, called detection, aims to determine the appearance of the first color error (s) and / or the first error (s) of differences.

- un deuxième cycle, dit cycle de collecte, consiste à faire produire par le générateur un nombre d'erreurs de couleurs ou de différences dépassant un nombre seuil prédéfini. - a second cycle, called the collection cycle, consists of producing by the generator a number of color errors or differences exceeding a predefined threshold number.

- Un troisième cycle, dit cycle de génération, utilise la matrice de pixels construite par la mise en œuvre des deux premières étapes pour faire produire par le générateur une suite de bits dont les propriétés aléatoires ont passé avec succès tous les tests de références [12][13][14].  A third cycle, called the generation cycle, uses the pixel matrix constructed by the implementation of the first two steps to cause the generator to produce a series of bits whose random properties have successfully passed all the reference tests. ] [13] [14].

Ces trois étapes (ou cycles) de détection, collecte, et génération mettent en œuvre la même transformation du boulanger afin d'en utiliser au mieux les propriétés. De plus, à chacune de ces étapes, la présente invention peut utiliser les aléas mesurés pour en modifier dynamiquement le fonctionnement.  These three stages (or cycles) of detection, collection, and generation implement the same transformation of the baker in order to make the best use of the properties. In addition, at each of these steps, the present invention can use the measured hazards to dynamically modify the operation thereof.

Ainsi, par exemple, la matrice de pixels de dimensions X par Y transformée par le générateur peut être divisée en quatre sous-matrices. Selon la figure 15, la transformation du boulanger peut être effectuée indifféremment sur les sous-matrices:  Thus, for example, the matrix of pixels of dimensions X by Y transformed by the generator can be divided into four sub-matrices. According to FIG. 15, the transformation of the baker can be carried out indifferently on the sub-matrices:

- 1501 , dont les dimensions sont de X/2 par Y définies par les coordonnées ([0,0],[X/2,0]) en abscisse et ([0, Y], [X/2, Y/2]) en ordonnée et appelée par la suite «T1 »  - 1501, whose dimensions are X / 2 by Y defined by the coordinates ([0,0], [X / 2,0]) on the abscissa and ([0, Y], [X / 2, Y / 2 ]) on the y-axis and subsequently called "T1"

- 1502, dont les dimensions sont de X par Y/2 définies par les coordonnées ([0,Y/2],[X,Y/2]) en abscisse et ([0,Y],[X,Y]) en ordonnée et appelée par la suite «T2 »  - 1502, whose dimensions are X by Y / 2 defined by the coordinates ([0, Y / 2], [X, Y / 2]) on the abscissa and ([0, Y], [X, Y]) on the y-axis and subsequently called "T2"

- 1503, dont les dimensions sont de X/2 par Y définies par les coordonnées ([X/2,0],[X,0]) en abscisse et ([X/2,Y/2],[X,Y]) en ordonnée et appelée par la suite «T3 »  - 1503, whose dimensions are X / 2 by Y defined by the coordinates ([X / 2,0], [X, 0]) as abscissa and ([X / 2, Y / 2], [X, Y ]) on the y-axis and subsequently called "T3"

- 1504, dont les dimensions sont de X par Y/2 définies par les coordonnées ([0,0], [X,0]) en abscisse et ([0,Y/2],[X,Y/2]) en ordonnée et appelée par la suite « T4 »  - 1504, whose dimensions are X by Y / 2 defined by the coordinates ([0,0], [X, 0]) on the abscissa and ([0, Y / 2], [X, Y / 2]) on the y-axis and subsequently called "T4"

L'ordre logique d'enchaînement des transformations est T1 → T2→ The logical sequence order of transformations is T1 → T2 →

T3 → T4. Cet ordre peut être dynamiquement changé par la prise en compte des aléas AT, AS ou AQ, qui, sous la forme d'une combinaison logique de N variables (N > 1 ), permettra d'en modifier l'enchaînement. Cette dimension de rétroaction a pour objectif d'amplifier le caractère non-déterministe du déroulement de chaque étape. Elle n'est cependant pas nécessaire à la bonne exécution de l'invention. T3 → T4. This order can be dynamically changed by taking into account the hazards AT, AS or AQ, which, in the form of a logical combination of N variables (N> 1), will make it possible to modify the sequence. This feedback dimension aims to amplify the non-deterministic nature of each step. However, it is not necessary for the proper execution of the invention.

En variante, le nombre de sous-matrices choisi dans l'implémentation de la présente invention peut être différent de quatre.  Alternatively, the number of sub-matrices chosen in the implementation of the present invention may be different from four.

Des matrices de dimensions plus réduites permettraient d'utiliser au mieux le parallélisme présent dans les cœurs (core en anglais) des processeurs des ordinateurs ou des cartes graphiques.  Matrices of smaller dimensions would make it possible to make the best use of the parallelism present in the cores (core in English) of the processors of computers or graphics cards.

Enfin, le générateur effectue une opération logique OU EXCLUSIF ( XOR) entre les pixels de la matrice à l'étape N et les pixels transformés à l'étape N+1 . Cette combinaison logique a pour objectif d'améliorer l'uniformité des aléas générés par la présente invention.  Finally, the generator performs an EXCLUSIVE OR (XOR) logic operation between the pixels of the matrix at step N and the pixels transformed at step N + 1. This logical combination aims to improve the uniformity of the hazards generated by the present invention.

De manière plus détaillée, un ordinateur 10 comprend une unité centrale CPU (pour Central Processing Unit, en anglais) 1 1 capable de communiquer avec une mémoire de travail 12 par l'intermédiaire d'un bus mémoire 13. La mémoire de travail 12 est capable de stocker les instructions exécutées par l'unité centrale 11 ainsi que les données nécessaires à la mise en œuvre de la présente invention. In more detail, a computer 10 comprises a CPU (Central Processing Unit) 1 1 capable of communicating with a working memory 12 via a memory bus 13. The working memory 12 is capable of storing the instructions executed by the central unit 11 as well as the data necessary for the implementation of the present invention.

L'unité centrale communique également avec un certain nombre de périphériques (par exemple un clavier 16, une souris, etc.) via un bus 14 spécialisé supportant des interfaces standards tels que l'USB (pour Universal Sériai Bus), SATA (pour Sériai Advanced Technolgy Attachment) ou AGP (pour Accelerated Graphie Port) ou PCI-Express (pour Peripheral Component Interconnect - Express).  The central unit also communicates with a number of peripherals (for example a keyboard 16, a mouse, etc.) via a dedicated bus 14 supporting standard interfaces such as USB (for Universal Serial Bus), SATA (for Serial). Advanced Technolgy Attachment) or AGP (for Accelerated Graphie Port) or PCI-Express (for Peripheral Component Interconnect - Express).

Des interfaces de communication privilégiées sont les protocoles PCI- Express [30] ou AGP [31 ] concernant la communication avec la carte graphique 20. Des périphériques de stockage comme un ou plusieurs disques durs 15 permettent de sauvegarder le programme mis en œuvre par la présente invention ainsi que, le cas échéant, les aléas produits par le générateur. La figure 2 décrit l'architecture générique d'une forme de réalisation de la carte graphique. Preferred communication interfaces are the PCI-Express [30] or AGP [31] protocols relating to the communication with the graphics card 20. Storage devices such as one or more hard disks 15 make it possible to save the program implemented by the present invention. invention and, where appropriate, the hazards produced by the generator. Figure 2 describes the generic architecture of an embodiment of the graphics card.

La carte graphique 20 comprend une unité centrale GPU 21 (pour Graphics Processing Unit) capable d'accélérer l'exécution de primitives graphiques telles que décrites dans les standards OpenGL ou DirectX3D. La carte graphique comprend également une mémoire de travail 22 capable de stocker des instructions et des données. L'unité centrale 21 et la mémoire de travail 22 communiquent pas l'intermédiaire du bus mémoire 23. Elle communique au moyen d'un bus périphérique 423 avec l'ordinateur ou un ou plusieurs écrans 24 via les protocoles standards 25 comme AGP ou PCI-Express pour l'ordinateur 26 et DVI (pour Device Visual Interface) ou HDMI (pour High Definiton Multimedia Interface) pour les dispositifs d'affichage (par exemple l'écran). Procédé de génération d'aléas  The graphics card 20 includes a GPU 21 (Graphics Processing Unit) capable of accelerating the execution of graphic primitives as described in the OpenGL or DirectX3D standards. The graphics card also includes a working memory 22 capable of storing instructions and data. The central unit 21 and the working memory 22 do not communicate via the memory bus 23. It communicates by means of a peripheral bus 423 with the computer or one or more screens 24 via the standard protocols 25 such as AGP or PCI -Express for computer 26 and DVI (for Device Visual Interface) or HDMI (for High Definiton Multimedia Interface) for display devices (eg screen). Random generation method

Il est fait maintenant référence à la figure 3 qui décrit des étapes de fonctionnement du procédé. Toutes ces étapes sont exécutées par le superviseur sur l'ordinateur tel que décrit par la figure 1 .  Reference is now made to FIG. 3, which describes operating steps of the method. All these steps are performed by the supervisor on the computer as described in Figure 1.

A l'étape 101 , le superviseur initialise le fonctionnement du générateur. Cette étape a pour buts de vérifier les capacités du générateur pour mettre en œuvre la présente invention, de créer un contexte graphique capable d'exécuter la procédure du superviseur, de positionner les paramètres nécessaires à son fonctionnement, d'initialiser une matrice initiale de pixels RGBA, de la transférer dans la mémoire du générateur et de transférer dans cette même mémoire le programme du superviseur. Le détail des ces différentes étapes sera repris lors de la description de la figure 11 .  In step 101, the supervisor initializes the operation of the generator. This step aims to verify the capabilities of the generator to implement the present invention, to create a graphical context capable of executing the supervisor procedure, to set the parameters necessary for its operation, to initialize an initial matrix of pixels RGBA, to transfer it to the memory of the generator and to transfer in this same memory the program of the supervisor. The details of these different steps will be repeated in the description of FIG. 11.

Lors du déroulement de l'étape 101 , un certain nombre de contrôles et de détections d'erreurs est effectué par le superviseur. En cas d'échec (impossibilité de sur-fréquençage, caractéristiques graphiques insuffisantes, etc.), la présente invention ne pourra être mise en œuvre. Avantageusement, le procédé ne dépend d'aucun événement et/ou données externes pour construire sa propre entropie et générer les aléas. La matrice initiale (Figure 5) peut être constamment la même pour tous les cycles aboutissant à la génération d'aléas. During the course of step 101, a certain number of checks and error detections are carried out by the supervisor. In case of failure (impossibility of over-frequency, insufficient graphic characteristics, etc.), the present invention can not be implemented. Advantageously, the method does not depend on any event and / or external data to build its own entropy and generate the hazards. The initial matrix (Figure 5) can be constantly the same for all cycles leading to the generation of hazards.

II n'est donc plus nécessaire de passer par l'étape de la recherche de germes (seeds en anglais) initiaux, qui représente souvent la partie la plus sensible des attaques cryptographiques des générateurs de nombres aléatoires (RNG). Le procédé ne dépend pas non plus des interruptions produites par un système d'exploitation sous lequel est mis en œuvre ce procédé pour constituer la dynamique de la génération des aléas.  It is therefore no longer necessary to go through the step of searching for initial seeds, which often represents the most sensitive part of the cryptographic attacks of random number generators (RNGs). The process also does not depend on the interruptions produced by an operating system under which this method is implemented to constitute the dynamics of the generation of hazards.

Son autonomie totale vis-à-vis de périphériques externes est également une garantie contre le type d'attaque visant à jouer sur la qualité des données des bassins d'entropie pour calculer la suite des aléas générés par d'autres types d'approche.  Its total autonomy vis-à-vis external devices is also a guarantee against the type of attack aimed at playing on the quality of entropy pools data to calculate the sequence of hazards generated by other types of approach.

Le procédé décrit ici répond donc aux recommandations du NIST (pour National Institute of Standards and Technology) concernant l'initialisation des générateurs de nombres aléatoires.  The method described herein therefore responds to the recommendations of the National Institute of Standards and Technology (NIST) concerning the initialization of random number generators.

A l'étape 102, le superviseur exécute le cycle de détection.  In step 102, the supervisor executes the detection cycle.

L'objectif de ce cycle est la détection des premières erreurs consécutives à l'augmentation de la fréquence de fonctionnement de la mémoire de travail du générateur.  The objective of this cycle is the detection of the first errors resulting from the increase of the working frequency of the working memory of the generator.

En référence à la figure 12, l'étape 102 comporte une boucle composée des sous-étapes suivantes: initialisation de variables ErrCouleur, ErrDifférence et Incr à zéro, sur-fréquençage de la mémoire du générateur, détection des erreurs couleurs pour les valeurs paires de la variable Incr et détection des erreurs différences pour les valeurs impaires de la variable Incr. L'alternance des détections des erreurs couleurs ou différences a pour objectifs:  With reference to FIG. 12, step 102 comprises a loop consisting of the following sub-steps: initialization of variables ErrColor, ErrDifference and Incr at zero, overfrequency of the generator memory, detection of color errors for the even values of the variable Incr and error detection differences for the odd values of the variable Incr. The alternation of the detections of the errors colors or differences has for objectives:

• de dissocier la détection des erreurs et de permettre l'adaptation de la présente invention à une très large gamme de matériels • de permettre la mise en œuvre des aléas temporels (AT) dans le déroulement de cette étape. Une fois la détection d'un type d'erreur (couleurs ou différences) achevée, seule la détection de l'autre type d'erreur est par la suite effectuée. • to dissociate the detection of errors and to allow the adaptation of the present invention to a very wide range of materials • to allow the implementation of temporal hazards (AT) in the course of this step. Once the detection of an error type (colors or differences) has been completed, only the detection of the other type of error is subsequently performed.

Le déroulement des sous-étapes de cette boucle suivent donc une approche déterministe. Tant qu'aucune erreur n'a été détectée, le contenu de la matrice de pixels du générateur est en effet parfaitement déterminé par le nombre de fois que la boucle aura été effectuée. La simple connaissance de la transformation utilisée par le système permettrait, en fonction du nombre d'itérations, de reconstruire à l'identique la matrice de pixel du générateur.  The course of the substeps of this loop therefore follow a deterministic approach. As long as no error has been detected, the content of the pixel matrix of the generator is in fact perfectly determined by the number of times that the loop has been performed. The simple knowledge of the transformation used by the system would allow, as a function of the number of iterations, to reconstruct identically the pixel matrix of the generator.

L'indéterminisme du procédé selon l'invention est dû à la nature des aléas (AT, AS, AQ) détectées.  The indeterminism of the method according to the invention is due to the nature of the hazards (AT, AS, AQ) detected.

Premièrement, l'ordre d'apparition de la première erreur, quel que soit son type (couleur ou différence) est totalement aléatoire et imprévisible. L'alternance entre les sous-étapes de détection des erreurs couleurs et différences est ainsi non prédictible et constitue le premier échelon du non déterministe (sous la forme d'aléas du type temporel - AT) de la présente invention.  First, the order of appearance of the first error, regardless of its type (color or difference) is totally random and unpredictable. The alternation between the sub-steps for detecting color and difference errors is thus unpredictable and constitutes the first step of the non-deterministic (in the form of time-type random events - AT) of the present invention.

Deuxièmement, les valeurs des erreurs ou leur position dans la matrice de pixels sont également imprévisibles et constituent le deuxième échelon du non déterminisme (sous la forme d'aléas du type spatial ou quantitatif - AS ou AQ) de la présente invention.  Second, the error values or their position in the pixel array are also unpredictable and constitute the second step of nondeterminism (in the form of spatial or quantitative randomness - AS or AQ) of the present invention.

Ainsi, on met ici en évidence à l'étape 102 l'indéterminisme consécutif à l'augmentation de la fréquence de fonctionnement de la mémoire du générateur.  Thus, the indeterminacy following the increase in the frequency of operation of the generator memory is highlighted in step 102.

En outre, il est possible de mettre en œuvre le procédé à partir d'une même matrice initiale, dans la mesure où ce sont les erreurs générées lors des transformations de la matrice qui permettent d'obtenir des aléas, indépendamment des valeurs initiales de pixels de la matrice, ce qui démontre encore davantage le caractère non-déterminisme du procédé.In addition, it is possible to implement the method from the same initial matrix, insofar as it is the errors generated during the transformations of the matrix that make it possible to obtain random events, independently of the initial values of pixels. of the matrix, which further demonstrates the non-determinism of the process.

Bien entendu, il est également possible de partir de matrices initiales différentes à chaque implémentation du procédé. Of course, it is also possible to start from different initial matrices for each implementation of the method.

Cependant, le choix des valeurs de la matrice initiale détermine la sensibilité des tests employés. Le sur-fréquençage de la mémoire de travail du générateur pourrait aboutir à un blocage de la carte graphique et son arrêt de fonctionnement. La combinaison des tests couleur et différence permet de détecter l'apparition d'erreurs au plus tôt dans l'étape de sur-fréquençage et donc de rester dans le cadre des tolérances de fonctionnement de ce composant.  However, the choice of values of the initial matrix determines the sensitivity of the tests used. Over-frequencying of the generator's working memory could lead to a blocking of the graphics card and its shutdown. The combination of the color and difference tests makes it possible to detect the appearance of errors at the earliest in the overfrequency step and thus to remain within the limits of the operating tolerances of this component.

La mise en œuvre du procédé n'est donc pas incompatible avec le bon fonctionnement de la carte graphique et peut donc s'opérer dans le cadre d'un fonctionnement normal de l'ordinateur.  The implementation of the method is not incompatible with the proper operation of the graphics card and can therefore operate in the context of normal operation of the computer.

Par ailleurs, la connaissance de l'état interne d'un générateur d'aléas peut amener un utilisateur à prédire les états futurs et donc à remettre en cause les qualités cryptographiques recherchées. Néanmoins, le test concernant l'erreur « différence » s'effectue par deux lectures consécutives de la matrice de pixels du générateur. Une fois la première erreur différence détectée correspondant à une fréquence donnée de sur- fréquençage, toute autre lecture de la matrice de pixels du générateur est susceptible de générer le même type d'erreurs « différence ». Ainsi, l'état interne du générateur se trouve donc protégé de tout utilisateur visant à en connaître le contenu.  Moreover, the knowledge of the internal state of a random generator can lead a user to predict the future states and thus to question the desired cryptographic qualities. Nevertheless, the test concerning the "difference" error is carried out by two consecutive readings of the matrix of pixels of the generator. Once the first detected difference error corresponds to a given overfrequency frequency, any other reading of the generator pixel array is likely to generate the same type of "difference" errors. Thus, the internal state of the generator is thus protected from any user to know the content.

A l'étape 103, le superviseur exécute le cycle de collecte.  In step 103, the supervisor executes the collection cycle.

Son objectif est à la fois d'amplifier les erreurs détectées lors de la phase 102, et de procéder à une augmentation du mélange de la transformation effectuée par le générateur.  Its objective is both to amplify the errors detected during phase 102, and to increase the mixing of the transformation carried out by the generator.

En effet, malgré l'indéterminisme des erreurs détectées durant l'étape 102, les valeurs que ces erreurs peuvent prendre appartiennent à un intervalle trop réduit pour générer des aléas de qualité. L'étape 103 a donc pour objectif d'améliorer la qualité des aléas, en mettant en œuvre une boucle composée de quatre sous-étapes (voir la figure 14 annexée): Indeed, despite the indeterminacy of the errors detected during step 102, the values that these errors may take belong to an interval too small to generate quality hazards. Step 103 therefore aims to improve the quality of hazards, by implementing a loop consisting of four sub-steps (see Figure 14 attached):

l'incrémentation d'un pas donné de la fréquence de la mémoire de travail du superviseur,  incrementing a given step of the frequency of the supervisor's working memory,

le rapatriement de la matrice de pixels et la collecte de N aléas dans cette matrice,  the repatriation of the matrix of pixels and the collection of N hazards in this matrix,

l'exécution d'un type de transformation par le superviseur en fonction des aléas collectés,  the execution of a type of transformation by the supervisor according to the risks collected,

la détection des erreurs « couleurs » ou « différences » et le test du dépassement d'un seuil donné.  the detection of "color" or "difference" errors and the test of exceeding a given threshold.

La mise en œuvre de l'étape 103 augmente ainsi le pouvoir mélangeant de la transformation effectuée par le générateur.  The implementation of step 103 thus increases the mixing power of the transformation performed by the generator.

A la suite de chaque lecture de la matrice de pixels du générateur, le superviseur utilise N aléas de cette matrice afin de modifier de manière non déterministe l'ordre des transformations T1 , T2, T3 ou T4.  After each reading of the array of pixels of the generator, the supervisor uses N random variables of this matrix in order to modify in a non-deterministic way the order of the transformations T1, T2, T3 or T4.

Ce mode de réalisation s'apparente à une boucle de rétroaction dynamique dont le déroulement ne peut être prédit par aucun utilisateur cherchant à déterminer, par l'enchaînement des cycles des différentes transformations, l'état interne du générateur.  This embodiment is similar to a dynamic feedback loop whose course can not be predicted by any user seeking to determine, by the sequence of cycles of different transformations, the internal state of the generator.

Dans une réalisation préférée, le sur-fréquençage de la mémoire du générateur ainsi que la détection des erreurs couleurs ou différences ne sont effectués que durant les étapes 102 et 103.  In a preferred embodiment, the overfrequency of the generator memory and the detection of color or difference errors are performed only during steps 102 and 103.

A l'étape 104, le superviseur effectue le cycle de génération.  In step 104, the supervisor performs the generation cycle.

Son objectif est de générer les aléas à partir de la matrice construite aux étapes 102 et 103.  Its purpose is to generate hazards from the matrix constructed in steps 102 and 103.

En référence à la figure 14, l'étape 104 comporte une boucle composée des sous-étapes suivantes:  With reference to FIG. 14, step 104 comprises a loop composed of the following sub-steps:

-initialisation de la variable GenAlea avec un aléa du type spatial -initialization of the variable GenAlea with a random of the spatial type

(AS), (AS)

-exécution par le générateur des transformations T1 , T2, T3 ou T4 en fonction de la valeur de la variable GenAlea,  execution by the generator of the transformations T1, T2, T3 or T4 as a function of the value of the GenAlea variable,

-lecture de la matrice de pixels du générateur dans le tableau Résultats, -Reading the generator pixel array in the array Results,

-changement de la valeur GenAlea.  -changing the GenAlea value.

Cette boucle se termine quand un nombre d'aléas déterminé a été atteint.  This loop ends when a set number of random events has been reached.

Entre les étapes 102 et 103 et les étapes 103 et 104, il est effectué à une initialisation de la matrice du générateur afin d'utiliser les aléas collectés aux étapes précédentes et d'augmenter le non-déterminisme de la mise en œuvre de la présente invention.  Between steps 102 and 103 and steps 103 and 104, it is performed at an initialization of the generator matrix in order to use the hazards collected in the previous steps and to increase the non-determinism of the implementation of the present invention. invention.

La figure 4 illustre la nature des échanges entre le générateur et le superviseur au travers d'interfaces de programmation API (pour Application Programming Interfaces).  Figure 4 illustrates the nature of the exchanges between the generator and the supervisor through API programming interfaces (for Application Programming Interfaces).

L'utilisation de ces API a pour but que le superviseur crée les conditions nécessaires et suffisantes pour que l'exécution de la procédure du générateur soit optimale sur la carte graphique.  The purpose of using these APIs is for the supervisor to create the necessary and sufficient conditions for the execution of the generator procedure to be optimal on the graphics card.

De préférence, on utilise trois type d'API:  Preferably, three types of APIs are used:

• Les API Windows qui permettent au superviseur de créer un contexte OpenGL. Ce contexte comprend lui-même:  • Windows APIs that allow the supervisor to create an OpenGL context. This context itself includes:

La création et le paramétrage d'une fenêtre (Windows) supportée par le système de fenêtrage du système d'exploitation et capable de supporter la création du contexte OpenGL.  The creation and configuration of a window (Windows) supported by the operating system windowing system and able to support the creation of the OpenGL context.

Le paramétrage du contexte OpenGL au sein du système de fenêtrage et de la nature de la surface de pixel à utiliser  The setting of the OpenGL context within the windowing system and the nature of the pixel surface to use

• Les API OpenGL qui vont permettre au générateur d'exécuter l'ensemble des transformations et comprenant:  • The OpenGL APIs that will allow the generator to execute all the transformations and including:

Le paramétrage du contexte graphique OpenGL  Setting the OpenGL Graphical Context

Le paramétrage de la matrice initiale et son chargement dans le mémoire vidéo du générateur  The setting of the initial matrix and its loading in the video memory of the generator

La procédure d'exécution de la transformation  The procedure for executing the transformation

La procédure de lecture de la matrice de pixel transformée · Les API Overclocking qui permettent le sur-fréquençage de la mémoire vidéo du générateur. The procedure for reading the transformed pixel matrix · Overclocking APIs that allow overclocking of the video memory of the generator.

Ces API doivent fournir au minimum deux fonctionnalités de base: lecture de la fréquence de fonctionnement de la mémoire vidéo de la carte graphique et positionnement de la fréquence vidéo de la carte graphique à une valeur donnée. Des les API utilisées peuvent être par exemple: les API Nvidia, NVCIock ou AMD Display Library. Dans une variante de la présente invention, l'utilisation d'autres systèmes de fenêtrage supportant les API OpenGL pourrait être envisagée comme par exemple: le système X11 supporté par tous les systèmes Linux ou MAC-OS ou les périphériques mobiles (téléphones, PDA, tablettes) supportant OpenGL ES (iPhone de la société Apple ou Android de la société Google). L'utilisation des API DirectX de la société Microsoft, iso-fonctionnelles vis à vis des API OpenGL ou les API CUDA de la société Nvidia, Stream de la société ATI/AMD ou Direct Compute de la société Microsoft sont également utilisables pour la mise en œuvre de la présente invention.  These APIs must provide at least two basic functions: reading the operating frequency of the video memory of the graphics card and positioning the video frequency of the graphics card to a given value. The APIs used can be for example: API Nvidia, NVCIock or AMD Display Library. In a variant of the present invention, the use of other windowing systems supporting OpenGL APIs could be envisaged, for example: the X11 system supported by all Linux or MAC-OS systems or mobile devices (telephones, PDAs, tablets) supporting OpenGL ES (iPhone from Apple or Android from Google). The use of Microsoft DirectX APIs, iso-functional with respect to OpenGL APIs or CUDA APIs from Nvidia, Stream from ATI / AMD or Direct Compute from Microsoft can also be used for the implementation of of the present invention.

La figure 5 illustre un détail (23 pixels par 23 pixels) de la matrice initiale telle que le superviseur la transfère dans la mémoire vidéo du générateur.  FIG. 5 illustrates a detail (23 pixels by 23 pixels) of the initial matrix such that the supervisor transfers it into the video memory of the generator.

Chaque carré correspond à un pixel dont les valeurs sont:  Each square corresponds to a pixel whose values are:

• pour les pixels ayant la même couleur que le pixel 501 : R=255, V=255, B=255, A=0  For pixels having the same color as pixel 501: R = 255, V = 255, B = 255, A = 0

• pour les pixels ayant la même couleur que le pixel 502: R=0, V=255, B=255, A=0  For pixels having the same color as pixel 502: R = 0, V = 255, B = 255, A = 0

· pour les pixels ayant la même couleur que le pixel 503: R=0, V=0, B=0, A=255  · For pixels having the same color as pixel 503: R = 0, V = 0, B = 0, A = 255

• pour les pixels ayant la même couleur que le pixel 504: R=0, V=0, B=255, A=0  • for the pixels having the same color as the pixel 504: R = 0, V = 0, B = 255, A = 0

• pour les pixels ayant la même couleur que le pixel 505: R=255, V=0, B=255, A=0  • for the pixels having the same color as the pixel 505: R = 255, V = 0, B = 255, A = 0

• pour les pixels ayant la même couleur que le pixel 506: R=0, V=255, B=0, A=255 • for the pixels having the same color as the pixel 506: R = 0, V = 255, B = 0, A = 255

Les dimensions réelles de la matrice sont ici de 640 pixels par 320 pixels. Le choix de ces dimensions est dicté, dans le cadre de la présente invention, par plusieurs exigences:  The actual dimensions of the matrix are here 640 pixels by 320 pixels. The choice of these dimensions is dictated, in the context of the present invention, by several requirements:

-Le temps de retour d'une matrice de points de dimensions 640 par 320 est exactement de -The return time of a dot matrix of dimensions 640 by 320 is exactly

27873734249601531218081261179123119152374672476617970212 70339426065706228849261868945902223159327454950336975627 57566248658243955951319824075156833445766472523202334180 88960729326256844295251248435412655167225253433296277943 4432000, soit un chiffre de 2766 bits. La dimension d'un tel nombre met hors de portée des calculs actuels la possibilité d'énumérer tous les états internes du générateur par des attaques dites de « force brute ». -La transformation du boulanger utilisée par la présente invention fonctionne préférentiellement pour des matrices de points de dimension paire. Ce choix a été retenu car il évite, comme cela est le cas de dimensions impaires, de faire un test en cours de transformation, test coûteux en termes de performances. 27873734249601531218081261179123119152374672476617970212 70339426065706228849261868945902223159327454950336975627 57566248658243955951319824075156833445766472523202334180 88960729326256844295251248435412655167225253433296277943 4432000, a figure of 2766 bits. The size of such a number puts out of reach of the current calculations the possibility to enumerate all the internal states of the generator by attacks called "brute force". The transformation of the baker used by the present invention preferably operates for matrices of even-sized dots. This choice was chosen because it avoids, as is the case of odd dimensions, to make a test during transformation, expensive test in terms of performance.

Néanmoins, le procédé peut être mis en œuvre sur toute matrice appropriée, par exemple comprenant un nombre différent de pixels, et n'est pas limitée à l'utilisation de matrices de dimension paire.  Nevertheless, the method can be implemented on any suitable matrix, for example comprising a different number of pixels, and is not limited to the use of even-sized matrices.

Le motif visible dans la partie agrandie (3200 fois) de l'image est retenu car il est régulier et répétitif, augmente la sensibilité du cycle de détection, et réduit donc les risques d'un sur-fréquençage excessif de la mémoire de travail du superviseur.  The pattern visible in the enlarged part (3200 times) of the image is retained because it is regular and repetitive, increases the sensitivity of the detection cycle, and thus reduces the risks of excessive overfrequency of the working memory of the image. supervisor.

De même, le choix d'initialiser la matrice initiale de pixels avec uniquement des valeurs RGBA respectivement de 0 (pixel noir) et de 255 Similarly, the choice to initialize the initial matrix of pixels with only RGBA values of 0 (black pixel) and 255 respectively

(pixel blanc) permet de simplifier des tests du cycle de détection et la rapidité de mise en œuvre du cycle de détection. (white pixel) makes it possible to simplify tests of the detection cycle and the speed of implementation of the detection cycle.

D'autres choix, tant des dimensions de la matrice initiale de pixel que des valeurs de départ de ces même pixels, produisent des résultats quantitativement différents de la mise en œuvre décrite dans ce document mais aboutissent également, dans des conditions plus variées pouvant amener le blocage du fonctionnement de la carte graphique, à la production d'aléas non déterministes par sur-fréquence. Other choices, both of the dimensions of the initial pixel matrix and of the starting values of these same pixels, produce results. quantitatively different from the implementation described in this document but also result, under more varied conditions that can lead to the blocking of the operation of the graphics card, to the production of non-deterministic hazards by over-frequency.

La figure 6 illustre des histogrammes de chaque canal de couleur tels qu'ils apparaissent dans le logiciel PhotoShop de la société Adobe. Les couleurs RGBA apparaissent sous les dénominations respectives d'Alpha 1 , Red (R), Green (G) et Blue (B). Chaque histogramme est divisé en 255 niveaux qui représentent les 28 valeurs possibles pour chaque canal. Figure 6 illustrates histograms of each color channel as they appear in Adobe's PhotoShop software. The RGBA colors appear under the respective names Alpha 1, Red (R), Green (G) and Blue (B). Each histogram is divided into 255 levels which represent the 28 possible values for each channel.

La figure 6 met en évidence, le fait qu'après l'étape d'initialisation, l'ensemble des valeurs prises par les canaux RGBA de la matrice initiale du générateur ne comprend que les valeurs zéro (0, pixel noir) ou deux cent cinquante cinq (255, pixel blanc).  FIG. 6 highlights the fact that after the initialization step, all the values taken by the RGBA channels of the initial matrix of the generator comprise only the values zero (0, black pixel) or two hundred fifty five (255, white pixel).

La figure 7 met en évidence des aléas générés après l'exécution du cycle de détection selon l'invention.  FIG. 7 highlights random events generated after the execution of the detection cycle according to the invention.

Les histogrammes sont produits suivant la même procédure que pour la figure 6. Les pics qui apparaissent respectivement dans les canaux Alpha 1 et Red et Green montrent les valeurs en niveaux et en nombres des aléas produits à la suite de l'application complète du cycle de détection. Il est possible de constater que le canal Blue (B) est vide de tout aléa.  The histograms are produced following the same procedure as for Figure 6. The peaks that appear respectively in the channels Alpha 1 and Red and Green show the values in levels and numbers of the hazards produced as a result of the complete application of the cycle of detection. It can be seen that the Blue channel (B) is empty of any hazard.

Cette répartition des aléas est différente à chaque exécution du cycle de détection ainsi que pour chaque carte graphique utilisée pour la mise en œuvre de la présente invention. Cette dimension de variabilité entre différents matériels renforce à la fois le caractère non déterministe de la présente invention mais aussi les difficultés qu'aurait un utilisateur cherchant à connaître l'état interne de la carte graphique faisant l'objet d'une attaque, chaque carte graphique possédant son propre comportement.  This distribution of hazards is different at each execution of the detection cycle and for each graphics card used for the implementation of the present invention. This dimension of variability between different materials reinforces both the non-deterministic nature of the present invention but also the difficulties that would have a user seeking to know the internal state of the graphics card being attacked, each card graphic with its own behavior.

La figure 8 met en évidence la valeur des aléas générés par la mise en œuvre du procédé. La matrice 801 correspond à la matrice lue par le superviseur dans la mémoire du générateur après un cycle complet de détection. Il a été procédé à un zoom 803 de quatre pixels 802 de cette matrice afin que ceux-ci soient mesurés par l'outil « info » 804 du logiciel Photoshop. Il apparaît ainsi que le pixel 809 a les valeurs désignées en 806, le pixel 810 les valeurs désignées en 807, le pixel 811 les valeurs désignées en 805 et le pixel 812 les valeurs désignées en 808, valeurs non présentes dans la matrice initiale de pixels qui ne comportaient que des valeurs 0 ou 255. Ceci met en évidence que le procédé de surfréquence produit des aléas dont la dimension non déterministe est également caractérisée par la valeur prise par les différents canaux couleurs de chaque pixel. Figure 8 highlights the value of the hazards generated by the implementation of the method. The matrix 801 corresponds to the matrix read by the Supervisor in the generator memory after a full cycle of detection. An 803 zoom of four pixels 802 of this matrix was made so that they could be measured by the "info" tool 804 of the Photoshop software. It thus appears that the pixel 809 has the values designated at 806, the pixel 810 the values designated at 807, the pixel 811 the values designated at 805 and the pixel 812 the values designated at 808, values that are not present in the initial matrix of pixels. These only show values 0 or 255. This shows that the overfrequency process produces random events whose non-deterministic dimension is also characterized by the value taken by the different color channels of each pixel.

La figure 9 illustre les histogrammes, produits suivant la même procédure que pour les figures 6 et 7, correspondant à la matrice du générateur après l'exécution des cycles de détection et de collecte. Il apparaît que les couleurs RGBA ont l'ensemble des 255 niveaux remplis par les aléas générés au cours des différents cycles. L'absence d'uniformité des valeurs de chacun des niveaux est la signature du caractère purement non déterministe de la mise en œuvre de la présente invention et ne remet par en cause, suite aux tests passés, les qualités des aléas générés.  FIG. 9 illustrates the histograms, produced according to the same procedure as for FIGS. 6 and 7, corresponding to the matrix of the generator after the execution of the detection and collection cycles. It appears that the RGBA colors have all the 255 levels filled by the hazards generated during the different cycles. The lack of uniformity of the values of each of the levels is the signature of the purely non-deterministic character of the implementation of the present invention and does not question, as a result of past tests, the qualities of the hazards generated.

La figure 10 apporte une preuve supplémentaire de l'importance du sur-fréquençage pour la génération d'aléas non déterministes. La figure 10 montre les histogrammes correspondant à la matrice de pixels du générateur après dix millions (10 000 000) d'exécutions du cycle de détection sans sur-fréquençage. Aucun aléa n'apparaît dans les canaux de couleur. Ces histogrammes sont en tous points identiques à ceux de la figure 6. Cette absence d'aléas est à rapprocher à ce qui a été décrit précédemment concernant l'approche du sur-fréquençage par les fournisseurs de matériels électroniques ou informatique. Les tests que ces industriels font passer à leurs produits ont justement pour but de valider les tolérances des composants intégrés. L'exécution de dix million (10 000 000) d'itérations sans production d'erreurs est une validation à la fois de la qualité des ces mêmes matériels et de la possibilité de l'utilisation du sur- fréquençage pour la génération d'aléas non déterministes. Exemple détaillé de la génération d'aléas Figure 10 provides further evidence of the importance of overfrequency for the generation of non-deterministic hazards. Figure 10 shows the histograms corresponding to the array of generator pixels after ten million (10,000,000) runs of the detection cycle without overfrequency. No hazards appear in the color channels. These histograms are in all respects identical to those of FIG. 6. This lack of randomness is to be compared with what has been described previously with regard to the over-frequency approach by suppliers of electronic or computer equipment. The tests that these manufacturers are passing on to their products are precisely intended to validate the tolerances of the integrated components. The execution of ten million (10,000 000) of error-free iterations is a validation of both the quality of these same materials and the possibility of the use of overfrequency for the generation of non-deterministic hazards. Detailed example of hazard generation

Il est fait maintenant référence à la figure 11 pour décrire la partie initialisation effectuée par le superviseur. Celle-ci commence par l'étape 1101 consistant à détecter la présence d'une carte graphique telle que décrite à la figure 2 et connectée à un ordinateur correspondant à la figure 1 . En cas de réponse négative, il y a une impossibilité de continuer le procédé et il est procédé à la sortie 1108 du superviseur.  Reference is now made to Figure 11 to describe the initialization portion performed by the supervisor. This begins with step 1101 of detecting the presence of a graphics card as described in Figure 2 and connected to a computer corresponding to Figure 1. In case of a negative response, there is an impossibility to continue the process and it is proceeded to the exit 1108 of the supervisor.

Si une carte graphique a pu être détectée, il est ensuite procédé à l'étape 1102 de vérification des possibilités de sur-fréquençage de la mémoire de travail de la carte graphique. En cas d'impossibilité, il est procédé à la sortie 1108 du superviseur. Une fois cette vérification effectuée positivement, le superviseur passe à l'étape 1103 pour créer un contexte OpenGL devant être exécuté par la carte graphique. En cas d'impossibilité, il est procédé à la sortie 1108 du superviseur.  If a graphics card could be detected, it is then proceeded to step 1102 to check the over-frequency possibilities of the working memory of the graphics card. If this is not possible, exit 1108 from the supervisor. Once this verification is done positively, the supervisor proceeds to step 1103 to create an OpenGL context to be executed by the graphics card. If this is not possible, exit 1108 from the supervisor.

Une fois le contexte OpenGL créé, le superviseur passe à l'étape 1104 d'initialisation la matrice initiale avec le motif et les valeurs RGBA décrits à la figure 5.  Once the OpenGL context has been created, the supervisor proceeds to step 1104 of initializing the initial matrix with the pattern and the RGBA values described in FIG.

A l'étape 1105, le superviseur positionne les paramètres de fonctionnement du contexte OpenGL.  In step 1105, the supervisor sets the operating parameters of the OpenGL context.

A l'étape 1106, le superviseur charge la matrice précédemment initialisée à l'étape 1104 dans la mémoire du générateur et procède à l'étape 1107 au chargement du programme de transformation.  In step 1106, the supervisor loads the previously initialized matrix at step 1104 into the generator memory and proceeds to step 1107 at the loading of the transformation program.

Les étapes 1101 et 1102 sont utilisatrices des API Overclocking. L'étape 1103 utilise les API Windows alors que les étapes 1104, 1105, 1106 et 1107 utilisent les API OpenGL.  Steps 1101 and 1102 use the Overclocking APIs. Step 1103 uses the Windows APIs whereas steps 1104, 1105, 1106, and 1107 use the OpenGL APIs.

La figure 12 décrit le déroulement du cycle de détection. A l'étape Figure 12 describes the course of the detection cycle. At the stage

1201 , le superviseur initialise les variables ErrCouleur, ErrDifference et Incr à zéro (0). 1201, the supervisor initializes the variables ErrColor, ErrDifference and Incr to zero (0).

A l'étape 1202, le superviseur effectue le test de l'absence d'une erreur couleur et de la parité de la variable Incr. En cas de test positif (ErrCouleur égal à zéro (0 ) et Incr pair), le superviseur passe à l'étape 1203 de sur-fréquençage de la mémoire du générateur. Cette valeur du pas de sur-fréquençage peut être de 500 000 Hz. Les fréquences de mémoires de travail des cartes graphiques se situent entre 200 MHz et plus de 1000 MHz pour les plus rapides. Le choix de cette valeur égale à 0.5 MHz permet une progressivité dans le sur-fréquençage mettant à l'abri la mise en œuvre de la présente invention d'un blocage du fonctionnement de la carte graphique par sur-fréquençage trop élevé. Combinée à la sensibilité des tests couleurs et différences, la mise en œuvre de la présente invention est faite avec le maximum de garanties de bon fonctionnement.  In step 1202, the supervisor performs the test of the absence of a color error and the parity of the variable Incr. In the case of a positive test (ErrColor equal to zero (0) and Incr even), the supervisor proceeds to step 1203 of overfrequency of the generator memory. This value of the overfrequency step can be 500 000 Hz. The working memory frequencies of the graphics cards are between 200 MHz and more than 1000 MHz for the fastest. The choice of this value equal to 0.5 MHz allows a progressivity in the overfrequency preventing the implementation of the present invention a blocking of the operation of the graphics card too high overfrequency. Combined with the sensitivity of color and difference tests, the implementation of the present invention is made with the maximum of guarantees of good operation.

A l'étape 1204, le superviseur effectue la combinaison logique OU EXCLUSIF (XOR) entre la variable ErrDifference et la variable Incr. Le but de cette combinaison est de mettre en œuvre l'aléa temporel représenté par le changement de valeur de la variable ErrDifference. En effet, étant donné que l'ordre d'apparition des erreurs couleurs ou des erreurs différences est indéterminable, la prise en compte de la valeur de la variable ErrDifference, dans le cas ou une erreur différences aurait été déjà détectée, permettra de modifier l'ordre des transformations de l'étape 1205.  In step 1204, the supervisor performs the logical OR EXCLUSIVE (XOR) combination between the variable ErrDifference and the variable Incr. The purpose of this combination is to implement the temporal hazard represented by the change in value of the variable ErrDifference. Indeed, since the order of appearance of the color errors or of the difference errors is indeterminable, the taking into account of the value of the variable ErrDifference, in the case where a difference error would already have been detected, will make it possible to modify the order of transformations of step 1205.

Le superviseur effectue à l'étape 1205 les transformations T1 , T2, T3 ou T4 en fonction de la valeur de la variable Incr modulo 4 (reste de la division de la valeur de la variable Incr par 4). Tant que la variable ErrDifference est égale à zéro, l'ordre est T1 → T2→ T3→ T4. Dans le cas ou la variable ErrDifference est différente de zéro, cet ordre se trouvera modifié et permettra de démarrer le non déterminisme de la mise en œuvre de la présente invention dès l'étape de détection.  The supervisor performs at step 1205 the transformations T1, T2, T3 or T4 as a function of the value of the variable Incr modulo 4 (remainder of the division of the value of the variable Incr by 4). As long as the variable ErrDifference is equal to zero, the order is T1 → T2 → T3 → T4. In the case where the variable ErrDifference is different from zero, this order will be modified and will start the non-determinism of the implementation of the present invention from the detection step.

A l'étape 1206, le superviseur effectue la lecture de la mémoire du générateur. A l'étape 1207, le superviseur effectue le test de détection des erreurs couleurs. Dans une implémentation préférée, la forme de ce test se fait par comparaison entre les valeurs de la matrice du générateur et les valeurs de la matrice initiale. Ce test peut se représenter sous la forme algorithmique suivante: if (pix[n] != 0 && pix[n] != 255), pix[] étant le tableau résultat de la lecture de la matrice du générateur, n l'indice dans ce tableau et les valeurs 0 (zéro) ou 255 (deux cent cinquante cinq) les valeurs initialisées à l'étape 1104. Toujours à l'étape 1207, le superviseur, dans le cas de la détection d'une erreur couleurs, modifiera la valeur de la variable ErrCouleur. Dans une implémentation préférée, cette modification pourra prendre la forme de la combinaison logique suivante: ErrCouleur Λ= pix[n]An, où le symbole « Λ » correspond à l'opération logique OU EXCLUSIF, l'objectif de cette combinaison étant de donner une valeur à la variable ErrCouleur directement liée à l'apparition de l'aléa correspondant à l'apparition de la première erreur couleurs. At step 1206, the supervisor reads the memory of the generator. In step 1207, the supervisor performs the color error detection test. In a preferred implementation, the form of this test is done by comparing the values of the matrix of the generator and the values of the initial matrix. This test can be represented in the following algorithmic form: if (pix [n]! = 0 && pix [n]! = 255), where pix [] is the result table of the reading of the generator matrix, n the index in this table and the values 0 (zero) or 255 (two hundred and fifty five) the values initialized in step 1104. Also in step 1207, the supervisor, in the case of the detection of a color error, will modify the value of the ErrColor variable. In a preferred implementation, this change may take the form of the following logical combination: ErrColor Λ = pix [n] A n, where the symbol " Λ " corresponds to the logical OR EXCLUSIVE operation, the purpose of this combination being to give a value to the variable ErrCouleur directly related to the occurrence of the hazard corresponding to the appearance of the first color error.

Le superviseur passe ensuite à l'étape 1208 qui est l'étape à laquelle il aboutit directement si le test 1202 est négatif. A l'étape 1208, le superviseur effectue le test de l'absence d'une erreur différences et de la parité de la variable Incr. En cas de test positif (ErrDifference égal à zéro (0) et Incr impair), le superviseur passe à l'étape 1209 de sur-fréquençage de la mémoire du générateur qui suit les mêmes règles que l'étape 1203.  The supervisor then proceeds to step 1208 which is the step to which it leads directly if the test 1202 is negative. In step 1208, the supervisor performs the test of the absence of a difference error and the parity of the variable Incr. In the case of a positive test (ErrDifference equal to zero (0) and odd Incr), the supervisor proceeds to step 1209 of overfrequency of the generator memory which follows the same rules as in step 1203.

A l'étape 1210, le superviseur effectue la combinaison logique OU EXCLUSIF (XOR) entre la variable ErrCouleur et la variable Incr pour des raisons identiques à celles décrites pour l'étape 1204.  In step 1210, the supervisor performs the logical EXCLUSIVE OR (XOR) combination between the variable ErrColor and the variable Incr for reasons identical to those described for step 1204.

A l'étape 1211 , le superviseur effectue les transformations T1 , T2, T3 ou T4 en suivant les mêmes règles que pour l'étape 1205.  In step 1211, the supervisor performs the transformations T1, T2, T3 or T4 according to the same rules as for step 1205.

A l'étape 1212, le superviseur effectue une double lecture de la mémoire du générateur, c'est-à-dire deux lectures consécutives de la matrice du générateur sans qu'aucune transformation n'ait été opérée.  In step 1212, the supervisor performs a double reading of the generator memory, that is to say two consecutive reads of the generator matrix without any transformation having been made.

A l'étape 1213, le superviseur effectue le test de détection des erreurs différences. Dans une implémentation préférée, la forme de ce test se fait par comparaison entre les valeurs de la matrice du générateur de la première lecture et les valeurs de la matrice du générateur de la deuxième lecture. Ce test peut se représenter sous la forme algorithmique suivante: if (tab1 [n] != tab2[n]), tab1 [] étant le tableau résultat de la première lecture de la matrice du générateur, tab2[] étant le tableau résultat de la deuxième lecture de la matrice du générateur et n l'indice dans ces tableaux. Toujours à l'étape 1213, le superviseur, dans le cas de la détection d'une erreur différences, modifiera la valeur de la variable ErrDifference. Dans une implémentation préférée, cette modification pourra prendre la forme de la combinaison logique suivante: ErrDifference Λ= (tab1 [n]Atab2[n])An, où le symbole « Λ » correspond à l'opération logique OU EXCLUSIF, l'objectif de cette combinaison étant de donner une valeur à la variable ErrDifference directement liée à l'apparition de l'aléa correspondant à l'apparition de la première erreur différences. In step 1213, the supervisor performs the difference error detection test. In a preferred implementation, the form of this test is by comparing the values of the generator matrix of the first reading with the values of the generator matrix of the second reading. This test can be represented in the following algorithmic form: if (tab1 [n]! = Tab2 [n]), where tab1 [] is the result table of the first reading of the generator matrix, where tab2 [] is the result table of the second reading of the generator matrix and n the index in these tables. Still at step 1213, the supervisor, in the case of detecting a difference error, will modify the value of the variable ErrDifference. In a preferred implementation, this modification can take the form of the following logical combination: ErrDifference Λ = (tab1 [n] A tab2 [n]) A n, where the symbol " Λ " corresponds to the logical OR EXCLUSIVE operation, The purpose of this combination is to give a value to the variable ErrDifference directly related to the occurrence of the hazard corresponding to the appearance of the first error differences.

Le superviseur passe ensuite à l'étape 1214 pour effectuer le test portant sur les valeurs des variables ErrCouleur et ErrDifference. Dans une forme de réalisation, il pourra être choisi de ne passer à l'étape 1215 (fin du cycle de détection) que quand ces deux variables sont différentes de zéro (0), c'est à dire quand les tests erreurs couleurs et erreurs différences sont tous les deux positifs. En variante, l'arrêt du cycle de détection pourra être effectué dès la détection d'une erreur en faisant le choix d'une erreur couleur ou d'une erreur différences. Ce choix pourrait être dicté par des dispositifs matériels ne permettant pas d'aboutir à la détection des deux erreurs sans remettre en cause le bon fonctionnement de ces mêmes dispositifs. Cette possibilité, offerte par la présente invention, permet une plus grande souplesse dans sa mise en œuvre.  The supervisor then proceeds to step 1214 to perform the test on the values of the ErrColor and ErrDifference variables. In one embodiment, it may be chosen to go to step 1215 (end of the detection cycle) only when these two variables are different from zero (0), that is to say when color errors and errors tests differences are both positive. In a variant, the detection cycle can be stopped as soon as an error is detected by choosing a color error or a difference error. This choice could be dictated by hardware devices that can not lead to the detection of the two errors without questioning the proper functioning of these same devices. This possibility, offered by the present invention, allows greater flexibility in its implementation.

Dans le cas contraire (test de l'étape 1214 négatif), le superviseur passe à l'étape 1216 qui incrémente la valeur de la variable Incr de 1 , permettant de modifier le test de parité sur cette variable, avant de retourner à l'étape 1202 pour continuer le cycle de détection. Les étapes 1203 et 1209 utilisent les API Overclocking alors que les étapes 1205, 1206,1211 et 1212 utilisent les API OpenGL. In the opposite case (test of step 1214 negative), the supervisor proceeds to step 1216 which increments the value of the variable Incr of 1, making it possible to modify the parity test on this variable, before returning to the step 1202 to continue the detection cycle. Steps 1203 and 1209 use Overclocking APIs while steps 1205, 1206, 1211, and 1212 use the OpenGL APIs.

Selon une forme de réalisation, ce cycle de détection pourrait être utilisé pour tester les mémoires embarquées dans des matériels tels que les ordinateurs, les cartes graphiques ou les téléphones portables. Le test erreur couleur pourrait permettre de valider un taux maximal d'erreurs au delà duquel la commercialisation du matériel embarquant cette mémoire ne pourrait plus être envisagée.  According to one embodiment, this detection cycle could be used to test embedded memories in hardware such as computers, graphics cards or mobile phones. The color error test could make it possible to validate a maximum error rate beyond which the marketing of the hardware embarking this memory could not be considered any more.

En variante, ce procédé permet de localiser la position des cellules (ou bits) qui, à partir d'une fréquence donnée de sur-fréquençage, généreraient systématiquement des erreurs couleurs ou différences. Cette localisation pourrait permettre de construire une cartographie de ces cellules qui constituerait un identifiant unique du matériel en question. Cet identifiant pourrait être à son tour utilisé comme clé de sécurité permettant le chiffrage de messages ou leur signature.  In a variant, this method makes it possible to locate the position of the cells (or bits) which, from a given overfrequency frequency, would systematically generate color or difference errors. This location could be used to build a map of these cells that would constitute a unique identifier of the material in question. This identifier could in turn be used as security key for the encryption of messages or their signature.

Dans une autre variante, ce même procédé permet de constituer un coffre-fort temporaire de données. Une fois le cycle complet (erreur couleurs et erreurs différences) de détection effectué, la matrice du générateur pourrait initial isée avec des données à protéger tout en laissant la mémoire du générateur à la fréquence atteinte à la fin du cycle de détection. Toute tentative de lecture de ces données serait empreinte des erreurs dues au sur-fréquençage et rendrait ces données inutilisables.  In another variant, this same method makes it possible to constitute a temporary safe of data. Once the complete cycle (error colors and errors differences) of detection made, the matrix of the generator could initialized with data to protect while leaving the memory of the generator at the frequency reached at the end of the detection cycle. Any attempt to read this data would be imprinted with errors due to overfrequency and make this data unusable.

Dans une autre variante, la matrice du générateur est initialisée avec des données à protéger au démarrage du cycle de détection. La mémorisation de toutes les transformations effectuées, leur ordre ainsi que l'ensemble des erreurs trouvées pendant le cycle de détection permettrait, une fois sauvegardées les données du générateur à la fin du cycle de détection, de chiffrer ces données de manière unique. L'utilisation des informations mémorisées et de la transformation inverse du boulanger permettrait de reconstituer les données à l'identique.  In another variant, the generator matrix is initialized with data to be protected at the start of the detection cycle. The memorization of all the transformations carried out, their order as well as all the errors found during the detection cycle would make it possible, once saved the data of the generator at the end of the detection cycle, to encrypt this data in a unique way. The use of the stored information and the inverse transformation of the baker would allow to reconstitute the data to the identical.

La figure 13 décrit le cycle de collecte. A l'étape 1301 , le superviseur effectue la lecture de la matrice du générateur et la copie dans le tableau Alea de dimension identique à la matrice du générateur. Cette opération a pour objectif de collecter l'état indéterminé de cette matrice, indétermination constituée par l'ordre imprévisible des transformations T1 , T2, T3 ou T4 ainsi que par l'ensemble des erreurs couleurs et différences que cette matrice contient à la fin du cycle de détection. Figure 13 describes the collection cycle. In step 1301, the supervisor reads the matrix of the generator and the copy in the Alea table of identical dimension to the matrix of the generator. This operation aims to collect the indeterminate state of this matrix, indeterminacy constituted by the unpredictable order of the transformations T1, T2, T3 or T4 as well as by the set of color and difference errors that this matrix contains at the end of the detection cycle.

A l'étape 1302, le superviseur initialise la mémoire du générateur avec les données du tableau Alea.  In step 1302, the supervisor initializes the generator memory with the data in the Alea table.

A l'étape 1303, le superviseur initialise la variable IndiceAlea qui fera office d'indice dans le tableau Alea de collecte des aléas durant le cycle de collecte. Dans une forme de réalisation, l'initialisation de la variable IndiceAlea se fait par la combinaison logique suivante: lndiceAlea=(ErrColorAErrDifference) modulo (taille de la matrice). Cette combinaison a pour objectif d'utiliser les aléas AS et AT collectés dans les variables ErrColor et ErrDifference durant le cycle de détection. Ainsi, le remplissage du tableau Alea s'effectuera au début de chaque cycle de collecte à un indice indéterminé du tableau afin d'accroître la dimension d'indéterminisme de la mise en œuvre de la présente invention. At step 1303, the supervisor initializes the IndexAlea variable which will act as an index in the Alea collection table during the collection cycle. In one embodiment, the initialization of the IndexAlea variable is done by the following logical combination: lndiceAlea = (ErrColor A ErrDifference) modulo (matrix size). The purpose of this combination is to use the AS and AT hazards collected in the ErrColor and ErrDifference variables during the detection cycle. Thus, the filling of the Alea table will be done at the beginning of each collection cycle at an indeterminate index of the table in order to increase the indeterminacy dimension of the implementation of the present invention.

A l'étape 1304, le superviseur effectue le sur-fréquençage de la mémoire du générateur. La valeur du pas de sur-fréquençage durant le cycle de collecte est de 11000 Hz. Etant donné que des erreurs couleurs et/ou différences ont été déjà détectées durant le cycle de détection, le pas de sur-fréquençage peut être inférieur à celui utilisé pendant le cycle de détection. Ce choix permet la mise en œuvre de la présente invention avec toutes les précautions nécessaires permettant de ne pas sur- fréquencer la mémoire du générateur au-delà de son bon fonctionnement.  In step 1304, the supervisor over-frequents the generator memory. The value of the overfrequency step during the collection cycle is 11000 Hz. Since color and / or difference errors have already been detected during the detection cycle, the overfrequency step may be lower than the one used. during the detection cycle. This choice allows the implementation of the present invention with all the necessary precautions to not over-frequency memory of the generator beyond its proper operation.

A l'étape 1305, le superviseur effectue la combinaison logique OU EXCLUSIF (XOR) entre la variable IndiceAlea et la variable Incr. L'objectif de cette combinaison logique est identique à celui décrit pour les étapes 1204 et 1210. A l'étape 1306, le superviseur effectue les transformations T1 , T2, T3 ou T4 en fonction du résultat modulo 4 de la combinaison logique effectuée à l'étape 1305. In step 1305, the supervisor performs the logical OR EXCLUSIVE (XOR) combination between the variable IndexAeA and the variable Incr. The purpose of this logic combination is identical to that described for steps 1204 and 1210. In step 1306, the supervisor performs the transformations T1, T2, T3 or T4 according to the result modulo 4 of the logical combination performed in step 1305.

A l'étape 1307, le superviseur effectue la double lecture de la mémoire du générateur après exécution de la transformation faite à l'étape 1306.  In step 1307, the supervisor performs the double reading of the generator memory after execution of the transformation made in step 1306.

A l'étape 1308, le superviseur effectue la collecte des aléas générés. Cette collecte correspond aux mêmes tests erreurs couleurs et erreurs diférences effectués aux étapes 1207 et 1213. A chaque détection d'une de ces erreurs, le superviseur remplit la case du tableau Alea à l'indice IndiceAlea avec les valeurs suivantes:  In step 1308, the supervisor collects the generated random events. This collection corresponds to the same tests color errors and errors diferences made in steps 1207 and 1213. Each time one of these errors is detected, the supervisor fills the box of the Alea table with the IndexAlea index with the following values:

• Dans le cas d'une erreur couleur dans le tableau tab1 résultant de la première lecture effectuée à l'étape 1307, la valeur donnée au tableau Alea est Alea[lndiceAlea]A=(tab1 [n]A(nA(lndiceAlea))) modulo 255 où le symbole « Λ » correspond à l'opération logique OU EXCLUSIF et n est l'indice de détection de l'erreur. • In the case of a color error in table tab1 resulting from the first reading performed in step 1307, the value given in the table Alea is Alea [lndiceAlea] A = (tab1 [n] A (n A (lndiceAlea) )) modulo 255 where the symbol " Λ " corresponds to the logical operation EXCLUSIVE OR and n is the index of detection of the error.

• Dans le cas d'une erreur couleur dans le tableau tab2 résultant de la deuxième lecture effectuée à l'étape 1307, la valeur donnée au tableau Alea est Alea[lndiceAlea]A=(tab2[n]A(nA(lndiceAlea))) modulo 255 où le symbole « A » correspond à l'opération logique OU EXCLUSIF et n est l'indice de détection de l'erreur. • In the case of a color error in table tab2 resulting from the second reading carried out at step 1307, the value given in the table Alea is Alea [lndiceAlea] A = (tab2 [n] A (n A (lndiceAlea) )) modulo 255 where the symbol " A " corresponds to the logical OR EXCLUSIVE operation and n is the index of detection of the error.

• Dans le cas d'une erreur différences entre les tableaux tab1 et tab2 résultant des deux lectures effectuées à l'étape 1307, la valeur donnée au tableau Alea est Alea[lndiceAlea]A=((tab1 [n]Atab2[n])A(nA(lndiceAlea))) modulo 255 où le symbole « A » correspond à l'opération logique OU EXCLUSIF et n est l'indice de détection de l'erreur. In the case of an error between the tab1 and tab2 arrays resulting from the two readings performed in step 1307, the value given in the Alea array is Alea [lndiceAlea] A = ((tab1 [n] A tab2 [n] ) A (n A (lndiceAlea))) mod 255 where the symbol "A" corresponds to the logical XOR operation and n is the error detection index.

La combinaison logique « Alea[lndiceAlea]A= » a pour objectif de mélanger logiquement les aléas collectés dans le tableau Alea pendant le cycle de détection avec les nouveaux aléas générés pendant le cycle de collecte. L'opération « modulo 255 » a pour objectif de garantir que les valeurs obtenues entrent dans l'intervalle [0 ; 255] des niveaux de couleurs RGBA ainsi que leur uniformité. Les différentes valeurs contenues dans les tableaux tab1 et tab2 sont des aléas du type quantitatifs (AQ), alors que l'indice n de position de ces erreurs à l'intérieur des tableaux est du type spatial (AS). A chaque détection d'aléas, le superviseur procède à l'incrémentation de la variable IndiceAlea. Dans le cas où la variable IndiceAlea est supérieure à la taille du tableau Alea, le superviseur met sa valeur à zéro (0). Le superviseur effectue par la suite le test 1309 afin de déterminer si le seuil de collecte a été atteint. Ce seuil peut par exemple correspondre au nombre de fois où la variable IndiceAlea est remise à zéro (0) par le superviseur, c'est à dire le nombre de fois où le tableau Alea aura été entièrement rempli. Ce seuil est au minimum supérieur à 1 . Dans le cas où ce test est négatif, le superviseur passe à l'étape 1311 correspondant à l'incrémentation de la variable Incr et retourne à l'étape 1304. Dans le cas contraire (le seuil a été atteint) le superviseur termine le cycle de collecte pour passer à l'étape 1401 du cycle de génération. L'étape 1304 utilise les API Overclocking alors que les étapes 1306 et 1307 utilisent les API OpenGL. The logical combination "Alea [lndiceAlea] A =" aims at logically mixing the hazards collected in the Alea table during the detection cycle with the new risks generated during the collection cycle. The purpose of the "modulo 255" operation is to ensure that the values obtained fall within the range [0; 255] levels of RGBA colors as well as their uniformity. The different values contained in the tab1 and tab2 arrays are quantitative type (AQ) hazards, whereas the n position index of these errors inside the arrays is of the spatial type (AS). At each randomness detection, the supervisor increments the IndexAlea variable. In the case where the variable IndexAlea is greater than the size of the array Alea, the supervisor sets its value to zero (0). The supervisor then performs the 1309 test to determine if the collection threshold has been reached. For example, this threshold may correspond to the number of times the IndexAlea variable is reset (0) by the supervisor, ie the number of times the Alea table has been completely filled. This threshold is at least greater than 1. In the case where this test is negative, the supervisor proceeds to step 1311 corresponding to the incrementation of the variable Incr and returns to step 1304. In the opposite case (the threshold has been reached) the supervisor ends the cycle collection to proceed to step 1401 of the generation cycle. Step 1304 uses the Overclocking APIs while steps 1306 and 1307 use the OpenGL APIs.

En variante, le procédé permet également de choisir une distribution statistique correspondant à des applications de finances ou de simulation. A l'étape 1308, il pourra être placé dans le tableau Aléa des valeurs résultant de lois Normale, de Poisson, de Student ou autres (générateur de nombres pseudo-aléatoires par exemple) en remplacement des valeurs décrites précédemment. La propriété de conservation des distributions de la transformation ergodique du boulanger permet, une fois les valeurs de ces distributions rentrées dans le tableau Alea, de mettre en œuvre la présente invention dans un cadre très large d'applications.  In a variant, the method also makes it possible to choose a statistical distribution corresponding to financial or simulation applications. At step 1308, it will be possible to place in the table Alea values resulting from Normal, Poisson, Student or other laws (pseudo-random number generator for example) replacing the values described above. The conservation property of the baker's ergodic processing distributions makes it possible, once the values of these distributions have been entered in the Alea table, to implement the present invention in a very wide range of applications.

Dans une autre variante et toujours à l'étape 1308, il pourra être procédé à des opérations de « blanchiment » (whitening en anglais) afin de garantir l'uniformité des aléas générés.  In another variant and still in step 1308, it may be carried out "whitening" operations (whitening in English) to ensure the uniformity of the randomly generated.

On remarquera qu'une variante du procédé consiste faire effectuer directement les étapes 1207, 1213 et 1308 (test de la présence d'erreurs couleur ou différences) par le générateur, sans mettre en œuvre préalablement les étapes 1206, 1212 et 1307 respectivement (lecture de la matrice du générateur). En effet, par l'utilisation de langages de programmation tels que GLSL, HLSL, Cg, CUDA ou OpenCL, il est possible faire exécuter directement par le générateur les test portant sur la présence d'erreurs dans la matrice du générateur sans qu'il soit nécessaire d'effectuer la lecture de cette matrice par le superviseur. Un tel choix peut être dicté par des impératifs de performances en éliminant le temps de lecture de la matrice du générateur et utilisant la puissance de traitement du générateur pour effectuer ces tests. Cependant, des erreurs logiques de fonctionnement des programmes exécutés par le générateur peuvent survenir, erreurs dues au sur-fréquençage de la mémoire de travail du générateur et remettre en cause la fiabilité de détections de ces mêmes erreurs. Ceci reste vrai dans la cas où l'intégralité des étapes de la présente invention mises en œuvre par le générateur et le superviseur est effectuée par un même et unique matériel. It will be noted that a variant of the method consists in directly performing steps 1207, 1213 and 1308 (testing for the presence of errors color or differences) by the generator, without previously implementing steps 1206, 1212 and 1307 respectively (reading of the generator matrix). Indeed, by the use of programming languages such as GLSL, HLSL, Cg, CUDA or OpenCL, it is possible to have the generator run directly the tests relating to the presence of errors in the matrix of the generator without it. it is necessary to read this matrix by the supervisor. Such a choice may be dictated by performance requirements by eliminating the read time of the generator array and utilizing the processing power of the generator to perform these tests. However, logical errors of operation of the programs executed by the generator can occur, errors due to over-frequency of the working memory of the generator and to question the reliability of detections of these same errors. This remains true in the case where the entirety of the steps of the present invention implemented by the generator and the supervisor is performed by the same and unique hardware.

Il est fait maintenant référence à la figure 14.  Reference is now made to Figure 14.

A l'étape 1401 , le superviseur initialise la mémoire du générateur avec les données du tableau Alea.  In step 1401, the supervisor initializes the generator memory with the data in the Alea table.

A l'étape 1402, le superviseur initialise la variable Incr à zéro (0) et donne à la variable GenAlea la valeur suivante: GenAlea=Alea[lndiceAlea]. Cette opération permet d'utiliser la dernière valeur prise par la variable IndiceAlea pour aller chercher une valeur dans le tableau Alea. Cette opération met en œuvre les valeur IndiceAlea et Alea[lndiceAlea] qui sont toutes les deux non déterminables avant l'exécution des cycles de détection et de collecte. L'objectif est de démarrer l'ordre des transformations dans le cycle de génération de manière indéterminée.  At step 1402, the supervisor initializes the Incr variable to zero (0) and sets the GenAlea variable to GenAlea = Alea [lndiceAlea]. This operation makes it possible to use the last value taken by the IndexAlea variable to fetch a value from the Alea table. This operation implements the IndexAlea and Alea [lndiceAlea] values, both of which are not determinable before running the detection and collection cycles. The goal is to start the order of transformations in the generation cycle indefinitely.

A l'étape 1403, le superviseur effectue la combinaison logique OU EXCLUSIF (XOR) entre les variables GenAlea et Incr afin, à nouveau, d'augmenter l'indéterminisme de l'ordre des transformations. A l'étape 1404, le superviseur fait effectuer par le générateur les transformations T1 , T2, T3 ou T4 en fonction du résultat de la combinaison logique modulo 4 de l'étape 1403. At step 1403, the supervisor performs the EXCLUSIVE OR (XOR) logical combination between the GenAlea and Incr variables to, again, increase the indeterminacy of the order of the transformations. In step 1404, the supervisor has the generator carry out the transformations T1, T2, T3 or T4 according to the result of the logic combination modulo 4 of step 1403.

A l'étape 1405, le superviseur effectue la lecture de la matrice du générateur. Le résultat de cette lecture est mis dans un tableau Résultats. Les valeurs ainsi insérées dans le tableau Résultats sont des nombres aléatoires pouvant être utilisés dans des applications ayant besoin d'un fort degré d'indéterminisme.  In step 1405, the supervisor reads the generator matrix. The result of this reading is put in a Results table. The values inserted in the Results table are random numbers that can be used in applications that require a high degree of indeterminacy.

De plus, le superviseur procède à une nouvelle initialisation de la variable GenAlea de la manière suivante: GenAlea=Résultats[lncr]. L'objectif est de cette opération est de garantir un constant indéterminisme de l'ordre d'enchaînement des transformations par l'utilisation des aléas (AS et AQ) générés par la présente invention.  In addition, the supervisor re-initializes the GenAlea variable as follows: GenAlea = Results [lncr]. The objective of this operation is to guarantee a constant indeterminacy of the order of sequence of transformations by the use of the hazards (AS and AQ) generated by the present invention.

A l'étape 1406, le superviseur effectue le test concernant la quantité de nombres aléatoires générés. Si ce nombre atteint ou dépasse un nombre seuil demandé, le superviseur arrête le cycle de génération, le tableau Résultats contenant l'ensemble des nombres aléatoires requis. Dans le cas contraire, le superviseur passe à l'étape 1407 où la variable Incr sera incrémentée de 1 et passe ensuite à l'étape 1403 afin de continuer la génération.  In step 1406, the supervisor performs the test concerning the amount of random numbers generated. If this number reaches or exceeds a threshold number requested, the supervisor stops the generation cycle, the Results table containing all the required random numbers. In the opposite case, the supervisor proceeds to step 1407 where the variable Incr is incremented by 1 and then proceeds to step 1403 to continue the generation.

On notera qu'il est possible de ne pas procéder au sur-fréquençage de la mémoire du générateur pendant le cycle de génération. Note that it is possible not to over-frequencyize the memory of the generator during the generation cycle.

Liste des référence citées List of references cited

[I ] http://www.thocp.net/biographies/papers/turing_oncomputablenumbers _1936.pdf  [I] http://www.thocp.net/biographies/papers/turing_oncomputablenumbers _1936.pdf

[2] https://www.fourmilab.ch/hotbits/secure_generate.html  [2] https://www.fourmilab.ch/hotbits/secure_generate.html

[3] http://www.lavalite.com/ [3] http://www.lavalite.com/

[4] http://www.lavarnd.org/what/index.html  [4] http://www.lavarnd.org/what/index.html

[5] http://www.random.org/randomness/ [5] http://www.random.org/randomness/

[6] http://www.linuxcertif.eom/man/4/random/ [6] http: //www.linuxcertif.eom/man/4/random/

[7] http://www.pinkas.net/PAPERS/gpr06.pdf [7] http://www.pinkas.net/PAPERS/gpr06.pdf

[8] http://www.protego.se/sg100_en.htm [8] http://www.protego.se/sg100_en.htm

[9] http://www.comscire.com/Home/ [9] http://www.comscire.com/Home/

[10] http://true-random.com/ [10] http://true-random.com/

[I I ] http://www.idquantique.eom/component/content/article/9.html  [I I] http: //www.idquantique.eom/component/content/article/9.html

[12] http://www.stat.fsu.edu/pub/diehard/ [12] http://www.stat.fsu.edu/pub/diehard/

[13] http://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html [14] http://www.iro.umontreal.ca/~simardr/testu01/tu01 .html [13] http://csrc.nist.gov/groups/ST/toolkit/rng/documentation_software.html [14] http://www.iro.umontreal.ca/~simardr/testu01/tu01 .html

[15] http://www.overclockers.com/ [15] http://www.overclockers.com/

[16] http://www.overclockersclub.com/ [16] http://www.overclockersclub.com/

[17] http://www.ocinside.de/go_e. html?http://www.ocinside.de/html/links/oc soft_links.html  [17] http://www.ocinside.de/go_e. html? http: //www.ocinside.de/html/links/oc soft_links.html

[18] http://www.nvidia.com/object/ntune_5.05.54.00.html  [18] http://www.nvidia.com/object/ntune_5.05.54.00.html

[19] http://www.evga.com/precision/ [19] http://www.evga.com/precision/

[20] http://www.gigabyte.com.tw/FileList/NewTech/old_motherboard_newte ch/Tech_20041125_PX_ET5.htm  [20] http://www.gigabyte.com.tw/FileList/NewTech/old_motherboard_newte ch / Tech_20041125_PX_ET5.htm

[21 ] http://www.futuremark.com/ [21] http://www.futuremark.com/

[22] http://www.sisoftware.co.uk/ [22] http://www.sisoftware.co.uk/

[23] http://www.xtremesystems.com/pi/ [23] http://www.xtremesystems.com/pi/

[24] http://www.gigabyte.com.tw/News/Motherboard/News_List.aspx7New slD=1467  [24] http://www.gigabyte.com.tw/News/Motherboard/News_List.aspx7New SLD = 1467

[25] http://www.mersenne.org/freesoft/ [25] http://www.mersenne.org/freesoft/

[26] http://www.memtest.org/ [27] http://www.ocbase.com/perestroika/index.php [26] http://www.memtest.org/ [27] http://www.ocbase.com/perestroika/index.php

[28] http://www.ozone3d.net/benchmarks/fur/ [28] http://www.ozone3d.net/benchmarks/fur/

[29] http://www.dma.ens.fr/culturemath/maths/pdf/algebre/chaosq.pdf [30] http://www.pcisig.com/specifications/pcix_20/ [29] http://www.dma.ens.fr/culturemath/maths/pdf/algebre/chaosq.pdf [30] http://www.pcisig.com/specifications/pcix_20/

[31 ] http://members.datafast.net.au/dft0802/specs/agp30.pdf [31] http://members.datafast.net.au/dft0802/specs/agp30.pdf

[32] http://www.irisa.fr/caps/projects/hipsor/ [32] http://www.irisa.fr/caps/projects/hipsor/

Claims

REVENDICATIONS 1 . Procédé de génération d'aléas non déterministes par des moyens informatiques, caractérisé en ce qu'on augmente la fréquence de fonctionnement d'au moins une partie desdits moyens informatiques, au moins jusqu'à ce qu'une erreur en sortie des moyens dont on a augmenté la fréquence de fonctionnement soit détectée. 1. Method for generating non-deterministic hazards by computer means, characterized in that the operating frequency of at least a portion of said computer means is increased, at least until an error at the output of the means of which one has increased the operating frequency be detected. 2. Procédé selon la revendication 1 , caractérisé par les étapes suivantes : 2. Method according to claim 1, characterized by the following steps: -on incrémente la fréquence de fonctionnement d'au moins une partie des moyens informatiques (20), et  the operating frequency of at least a portion of the computer means (20) is incremented, and -on met en œuvre sur les moyens informatiques (20) dont on a augmenté la fréquence de fonctionnement une transformation qui en modifie l'état ;  it implements on the computer means (20) whose operating frequency has been increased a transformation which modifies its state; les étapes d'incrémentation et de transformation étant répétées au moins jusqu'à la détection d'une erreur (102) en sortie des moyens (20) dont on a incrémenté la fréquence de fonctionnement. the steps of incrementation and transformation being repeated at least until an error (102) is detected at the output of the means (20) whose operating frequency has been incremented. 3 .Procédé selon la revendication précédente, dans lequel la transformation est une transformation ergodique. 3. The method according to the preceding claim, wherein the transformation is an ergodic transformation. 4. Procédé selon l'une des revendications 2 ou 3, caractérisé en ce que les moyens informatiques (20) dont on incrémente la fréquence de fonctionnement comportent une mémoire de travail (22), et en ce que la transformation modifie l'adressage de données mémorisées dans ladite mémoire (22). 4. Method according to one of claims 2 or 3, characterized in that the computer means (20) whose operating frequency is incremented comprise a working memory (22), and in that the transformation modifies the addressing of data stored in said memory (22). 5. Procédé selon la revendication 4, caractérisé en ce qu'on détecte (102) une erreur par comparaison entre des états attendus pour les données sur lesquelles on met en œuvre la transformation et des états obtenus à l'issue de la transformation pour ces données. 5. Method according to claim 4, characterized in that one detects (102) an error by comparison between expected states for the data on which the transformation is implemented and states obtained at the end of the transformation for these data. 6. Procédé selon la revendication précédente, comprenant en outre une étape de génération d'aléas (AS, AT, AQ) dans laquelle on génère: - un aléa temporel (AT) en déterminant le moment d'apparition de l'erreur ; et/ou 6. Method according to the preceding claim, further comprising a random generation step (AS, AT, AQ) in which is generated: - a temporal hazard (AT) by determining the time of occurrence of the error; and or - un aléa spatial (AS) en déterminant les coordonnées de l'erreur ; et/ou  a spatial hazard (AS) by determining the coordinates of the error; and or - un aléa quantitatif (AQ) en évaluant la différence entre la valeur de l'état attendu de l'erreur avec la valeur de l'état obtenu de l'erreur.  a quantitative hazard (AQ) by evaluating the difference between the value of the expected state of the error and the value of the state obtained from the error. 7. Procédé selon la revendication précédente, comprenant en outre au moins un cycle de collecte (1301 -1311 ), au cours duquel : 7. Method according to the preceding claim, further comprising at least one collection cycle (1301 -1311), during which: -on détermine les aléas générés lors de la dernière transformation et -on transforme l'état des moyens informatiques (20) dont on a augmenté la fréquence de fonctionnement en modifiant l'adressage des données dans la mémoire (22) en fonction de ces aléas.  the contingencies generated during the last transformation are determined and the state of the computer means (20) whose operating frequency has been increased by modifying the addressing of the data in the memory (22) according to these hazards; . 8. Procédé selon la revendication précédente, comprenant en outre les étapes au cours desquelles : 8. Method according to the preceding claim, further comprising the steps in which: -on définit une variable d'aléas (GenAlea) ;  we define a random variable (GenAlea); -on initialise la variable d'aléas en fonction des aléas générés lors de la dernière transformation, l'étape de transformation de l'état des moyens informatiques (20) étant mise en œuvre en fonction de la valeur de ladite variable d'aléas ; et  the variable of randomness is initialized as a function of the random events generated during the last transformation, the step of transforming the state of the computer means (20) being implemented as a function of the value of said random variable; and -on modifie la valeur de la variable d'aléas en fonction des aléas détectés lors de la nouvelle transformation.  the value of the hazard variable is modified as a function of the hazards detected during the new transformation. 9. Procédé selon la revendication précédente, comprenant en outre les étapes au cours desquelles : 9. Method according to the preceding claim, further comprising the steps in which: - on répartit l'adressage des données en N sous-groupes, N étant un nombre entier non nul ; et - the data addressing is divided into N subgroups, N being one nonzero integer; and - on transforme l'état des moyens informatiques (20) dont on a augmenté la fréquence de fonctionnement en modifiant l'adressage des données dans la mémoire (22) par sous-groupe selon un ordre qui est déterminé par la valeur de ladite variable d'aléas (1205, 1211 , the state of the computer means (20) whose operating frequency has been increased by modifying the addressing of the data in the memory (22) by a subgroup according to an order which is determined by the value of said variable d hazards (1205, 1211, 1306, 1406). 1306, 1406). 10. Procédé selon l'une des revendications 7 à 9, comprenant en outre les étapes au cours desquelles : The method of one of claims 7 to 9, further comprising the steps of: -on définit (1301 ) un nombre seuil ;  defining (1301) a threshold number; -on détermine (1309) si le nombre d'erreurs produites par l'augmentation de fréquence des moyens informatiques (20) dépasse le nombre seuil;  determining (1309) whether the number of errors produced by the frequency increase of the computing means (20) exceeds the threshold number; -si le nombre seuil est atteint ou dépassé, on termine (1401 ) le cycle de collecte ;  if the threshold number is reached or exceeded, the collection cycle is terminated (1401); -si le nombre seuil n'est pas atteint (1311 ), on recommence un nouveau cycle de collecte en réitérant l'étape de transformation.  if the threshold number is not reached (1311), a new collection cycle is repeated by repeating the transformation step. 11 . Procédé selon la revendication précédente, dans lequel : 11. Method according to the preceding claim, wherein: -on définit une quantité seuil de nombres aléatoires ;  a threshold quantity of random numbers is defined; -on initialise un tableau de résultats à partir des données transformées issues des cycles de collecte;  a results table is initialized from the transformed data resulting from the collection cycles; -on effectue une transformation des états des données en modifiant leur adressage (1402, 1403, 1404);  the data states are transformed by modifying their addressing (1402, 1403, 1404); -on détecte les aléas générés par la transformation (1405); et  the irregularities generated by the transformation (1405) are detected; and -on remplit le tableau de résultats avec les aléas détectés lors de la transformation ;  -complete the results table with the hazards detected during the transformation; les étapes de transformation (1403) et de remplissage du tableau étant réitérées jusqu'à ce que la quantité de nombres aléatoires contenus dans le tableau atteigne ou dépasse la quantité seuil prédéfinie (1406). the transforming (1403) and padding steps of the array being repeated until the amount of random numbers contained in the array reaches or exceeds the predefined threshold quantity (1406). 12. Procédé selon l'une des revendications 4 à 11 , dans lequel les données auxquelles on applique une transformation sont des valeurs de pixels (501 -506) formant une matrice initiale, et les données transformées sont des valeurs de pixels formant une matrice transformée. The method according to one of claims 4 to 11, wherein the data to which a transformation is applied are pixel values (501 -506) forming an initial matrix, and the transformed data are pixel values forming a transformed matrix. . 13. Procédé selon la revendication 12, dans lequel on détecte l'erreur par comparaison des valeurs des pixels de la matrice transformée avec des valeurs des pixels (501 -506) de la matrice initiale, ladite erreur étant une erreur de couleur. 13. The method of claim 12, wherein the error is detected by comparing the values of the pixels of the transformed matrix with values of the pixels (501 -506) of the initial matrix, said error being a color error. 14 Procédé selon la revendication 12 ou 13, dans lequel on détecte l'erreur en effectuant, au cours d'un même cycle de transformation, deux lectures consécutives de la matrice transformée afin de comparer des valeurs de pixels issues de la première lecture de la matrice transformée avec des valeurs de pixels issues de la deuxième lecture de la même matrice, ladite erreur étant une erreur de différences. The method of claim 12 or 13, wherein the error is detected by performing, during the same transformation cycle, two consecutive reads of the transformed matrix in order to compare pixel values from the first reading of the matrix transformed with pixel values from the second reading of the same matrix, said error being a difference error. 15. Procédé selon les revendications 13 et 14, comprenant en outre une boucle de rétroaction comprenant les étapes suivantes : The method of claims 13 and 14, further comprising a feedback loop comprising the steps of: -initialiser une variable de rétroaction (1201 ) ;  -initialize a feedback variable (1201); -déterminer si l'erreur détectée est une erreur de couleur ou une erreur de différence ;  -determine whether the detected error is a color error or a difference error; -si la valeur de la variable est paire (1202), détecter une erreur de couleur (1206, 1207, 1214) ;  if the value of the variable is even (1202), detecting a color error (1206, 1207, 1214); -si la valeur de la variable est impaire (1208), détecter une erreur de différences (1211 , 1212, 1214) ; et  if the value of the variable is odd (1208), detecting an error of differences (1211, 1212, 1214); and -incrémenter la variable de rétroaction (1216).  -Increment the feedback variable (1216). 16. Procédé selon l'une des revendications 12 à 15, dans lequel les moyens informatiques sont une carte graphique, les données auxquelles on applique une transformation étant des données mémorisées dans sa mémoire vive, et dans lequel, préalablement à l'incrémentation de la fréquence, on initialise le procédé selon les étapes suivantes : 16. Method according to one of claims 12 to 15, wherein the computer means are a graphics card, the data to which a transformation is applied being data stored in its memory. RAM, and in which, prior to the incrementation of the frequency, the method is initialized according to the following steps: -détecter (1201 ) la carte graphique (20) ;  detecting (1201) the graphics card (20); -déterminer (1202) la capacité de sur-fréquençage de la mémoire vive (22) de la carte graphique (20) ;  -determine (1202) the over-frequency capacity of the random access memory (22) of the graphics card (20); -créer un contexte graphique (1103) ; et  -create a graphical context (1103); and -initialiser la matrice initiale de pixels (1104).  initializing the initial matrix of pixels (1104). 17. Procédé selon l'une des revendications précédentes, dans lequel : 17. Method according to one of the preceding claims, wherein: -on définit un standard pour les moyens informatiques en définissant un nombre maximum d'erreurs admissibles pour une augmentation de fréquence donnée,  a standard is defined for the computer means by defining a maximum number of acceptable errors for a given frequency increase, -on détermine si le nombre d'erreurs obtenues est supérieur ou égal à ce nombre maximum d'erreurs admissibles ; et  it is determined whether the number of errors obtained is greater than or equal to this maximum number of admissible errors; and -on détermine si les moyens informatiques (20) sont conformes au standard.  it is determined whether the computer means (20) comply with the standard. 18. Procédé selon l'une des revendications 12 à 16, dans lequel on détermine les coordonnées des pixels générant systématiquement une erreur à partir d'une fréquence déterminée, et on définit un identifiant unique des moyens informatiques en construisant une cartographie de ces pixels. 18. The method as claimed in one of claims 12 to 16, wherein the coordinates of the pixels systematically generating an error are determined from a determined frequency, and a unique identifier of the computer means is defined by constructing a mapping of these pixels. 19. Système informatique (10, 20) pour la génération d'aléas non déterministes, comprenant : 19. Computer system (10, 20) for the generation of non-deterministic hazards, comprising: -un générateur (20), qui est un moyen informatique à horloge interne, -un superviseur (10) à processeur apte à interagir avec ledit générateur (20),  a generator (20), which is an internal clock computing means, a processor supervisor (10) adapted to interact with said generator (20), caractérisé en ce que le superviseur (10) commande l'augmentation de la fréquence de l'horloge interne du générateur (20) et comporte des moyens pour mettre en œuvre une détection d'erreur en sortie du générateur (20). characterized in that the supervisor (10) controls the increase of the frequency of the internal clock of the generator (20) and comprises means to implement an error detection at the output of the generator (20). 20. Système informatique (10, 20) selon la revendication 19, caractérisé en ce que le générateur (20) est un moyen informatique à processeur et comporte des moyens (22) mémorisant une transformation à mettre en œuvre, le superviseur (10) commandant la mise en œuvre de ladite transformation. 20. Computer system (10, 20) according to claim 19, characterized in that the generator (20) is a processor computer means and comprises means (22) storing a transformation to be implemented, the supervisor (10) controlling the implementation of said transformation. 21 . Système informatique (10, 20) selon l'une des revendications 19ou 20, caractérisé en ce que le générateur est une carte graphique (20). 21. Computer system (10, 20) according to one of claims 19 or 20, characterized in that the generator is a graphics card (20). 22. Système informatique (10, 20) selon l'une des revendications 19 à 21 , caractérisé en ce que le superviseur est une carte mère d'un ordinateur (10). 22. Computer system (10, 20) according to one of claims 19 to 21, characterized in that the supervisor is a motherboard of a computer (10). 23. Système informatique (10, 20) selon l'une des revendications 19 ou 20, dans lequel le superviseur et le générateur sont l'un et l'autre portés par une carte mère d'un ordinateur. 23. Computer system (10, 20) according to one of claims 19 or 20, wherein the supervisor and the generator are both carried by a motherboard of a computer.
PCT/EP2011/053619 2010-03-16 2011-03-10 Method and installation for generating nondeterministic random elements Ceased WO2011113743A2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1051853 2010-03-16
FR1051853A FR2957698B1 (en) 2010-03-16 2010-03-16 METHOD AND INSTALLATION FOR GENERATING NON-DETERMINISTIC ALEAS

Publications (2)

Publication Number Publication Date
WO2011113743A2 true WO2011113743A2 (en) 2011-09-22
WO2011113743A3 WO2011113743A3 (en) 2011-12-01

Family

ID=43014366

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2011/053619 Ceased WO2011113743A2 (en) 2010-03-16 2011-03-10 Method and installation for generating nondeterministic random elements

Country Status (2)

Country Link
FR (1) FR2957698B1 (en)
WO (1) WO2011113743A2 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR552046A (en) 1921-10-05 1923-04-19 Motion transmission
DE19926640A1 (en) 1999-06-11 2000-12-21 Rolf Freitag Generation of true random signal numbers involves using combined digital randomly generated signals
US6324558B1 (en) 1995-02-14 2001-11-27 Scott A. Wilber Random number generator and generation method
US6862605B2 (en) 2001-08-15 2005-03-01 Scott A. Wilber True random number generator and entropy calculation device and method

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1081591A3 (en) * 1999-09-01 2005-07-20 International Business Machines Corporation Random number generator
US7502815B1 (en) * 2004-02-20 2009-03-10 Xilinx, Inc. True random number generator and method of generating true random numbers

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR552046A (en) 1921-10-05 1923-04-19 Motion transmission
US6324558B1 (en) 1995-02-14 2001-11-27 Scott A. Wilber Random number generator and generation method
US6763364B1 (en) 1995-02-14 2004-07-13 Scott A. Wilber Random number generator and generation method
US7096242B2 (en) 1995-02-14 2006-08-22 Wilber Scott A Random number generator and generation method
DE19926640A1 (en) 1999-06-11 2000-12-21 Rolf Freitag Generation of true random signal numbers involves using combined digital randomly generated signals
US6862605B2 (en) 2001-08-15 2005-03-01 Scott A. Wilber True random number generator and entropy calculation device and method

Also Published As

Publication number Publication date
WO2011113743A3 (en) 2011-12-01
FR2957698B1 (en) 2012-04-27
FR2957698A1 (en) 2011-09-23

Similar Documents

Publication Publication Date Title
EP2215768B1 (en) Method and devices for protecting a microcircuit from attacks for obtaining secret data
US9990180B2 (en) Stochastic processing
FR2984553A1 (en) METHOD AND DEVICE FOR DETECTING FAULTS
US10331411B2 (en) Systems and methods for generating random numbers using physical variations present in material samples
EP2656268A1 (en) Protection of applets against hidden-channel analyses
CN114564171B (en) True random number generation method, device, electronic equipment, storage medium and system
FR3069993A1 (en) DEVICES AND METHODS FOR MASKING RSA ENCRYPTION OPERATIONS
WO2011113743A2 (en) Method and installation for generating nondeterministic random elements
WO2003042812A2 (en) Securing a pseudo-random generator
WO2015032921A1 (en) Method of managing consistency of caches
US9344277B2 (en) Mass serialization analytics
EP4057169A1 (en) Method for executing a binary code of a computer program by a microprocessor
Maldonado et al. A novel hybrid mechanism for generation of pseudo-random sequences for data protection purposes
US20230315392A1 (en) Software-based entropy source based on race conditions
US20230315916A1 (en) Software-based entropy source based on rowhammer dram vulnerability
CN118519614B (en) Random number generation method, device, electronic equipment and storage medium
CN111640051A (en) Image processing method and device
FR3088452A1 (en) METHOD FOR VERIFYING INTEGRITY OF A PAIR OF CRYPTOGRAPHIC KEYS AND CRYPTOGRAPHIC DEVICE
FR3048086A1 (en) METHOD FOR TESTING THE RESISTANCE OF A CIRCUIT TO AUXILIARY CHANNEL ANALYSIS
CN119094118A (en) A key accelerator based on true random number generator and its working method
Sivertsen Modeling and Design of SRAM-Based Physical Unclonable Function
Durai et al. Real Time Implementation of QFT-PUF Architecture for Data Secure System-on-Chip
Jurnečka Randomness extractors in Mobile Devices
FR3114668A1 (en) System on a chip for cryptography applications including a monotonic counter and associated implementation method
FR3048096A1 (en) METHOD FOR PROTECTING A CIRCUIT AGAINST AUXILIARY CHANNEL ANALYSIS

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

Country of ref document: EP

Kind code of ref document: A2

NENP Non-entry into the national phase in:

Ref country code: DE

122 Ep: pct app. not ent. europ. phase

Ref document number: 11711055

Country of ref document: EP

Kind code of ref document: A2