Brevet FR2957698A1 — publié le 20110923

L'invention concerne le domaine de la génération d'aléas par des moyens informatiques. 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. 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 Cæsium-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. 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. 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. 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. II 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). 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. 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 oeuvre, 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. Certains aspects préférés mais non limitatifs de l'invention sont les suivants : le procédé comprend les étapes suivantes : o on incrémente la fréquence de fonctionnement d'au moins une partie des moyens informatiques, et o on met en oeuvre sur les moyens informatiques dont on a augmenté la fréquence de fonctionnement une transformation qui en modifie l'état ; 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 ; la transformation est une transformation ergodique ; les moyens informatiques dont on incrémente 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 ; on détecte une erreur par comparaison entre des états attendus pour les données sur lesquelles on met en oeuvre la transformation et des états obtenus à l'issue de la transformation pour ces données ; le procédé comprend en outre une étape de génération d'aléas dans laquelle on génère: o un aléa temporel en déterminant le moment d'apparition de l'erreur ; et/ou o un aléa spatial en déterminant les coordonnées de l'erreur ; et/ou 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 ; le procédé comprend en outre au moins un cycle de collecte, au cours duquel : o on détermine les aléas générés lors de la dernière transformation et 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 ; le procédé comprend en outre les étapes au cours desquelles : 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 30 en oeuvre en fonction de la valeur de ladite variable d'aléas ; et o on modifie la valeur de la variable d'aléas en fonction des aléas détectés lors de la nouvelle transformation ; le procédé comprend en outre les étapes au cours desquelles : o on répartit l'adressage des données en N sous-groupes, N étant un nombre entier non nul ; et 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 ; le procédé comprend en outre les étapes au cours desquelles : o on définit un nombre seuil ; o on détermine si le nombre d'erreurs produites par l'augmentation de fréquence des moyens informatiques dépasse le nombre seuil; ^ si le nombre seuil est atteint ou dépassé, on termine le cycle de collecte ; ^ si le nombre seuil n'est pas atteint, on recommence un nouveau cycle de collecte en réitérant l'étape de transformation ; pour cela, o on définit une quantité seuil de nombres aléatoires ; o on initialise un tableau de résultats à partir des données transformées issues des cycles de collecte; 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 ; 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 ; 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 ; 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 ; 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 ; le procédé comprend en outre en outre une boucle de rétroaction comprenant les étapes suivantes : o initialiser une variable de rétroaction ; o déterminer si l'erreur détectée est une erreur de couleur ou une erreur de différence ; ^ si la valeur de la variable est paire, détecter une erreur de couleur ; ^ si la valeur de la variable est impaire, détecter une erreur de différences ; et o incrémenter la variable de rétroaction ; 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 : o détecter la carte graphique ; o déterminer la capacité de sur-fréquençage de la mémoire vive de la carte graphique ; o créer un contexte graphique ; et o initialiser la matrice initiale de pixels ; et le procédé comprend les étapes au cours desquelles : 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 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 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 : - un générateur, qui est un moyen informatique à horloge interne, - 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 oeuvre une détection d'erreur en sortie du générateur. Certains aspects préférés mais non limitatifs du système selon l'invention sont les suivants : le générateur est un moyen informatique à processeur et comporte des moyens mémorisant une transformation à mettre en oeuvre, le superviseur commandant la mise en oeuvre de ladite transformation ; le générateur est une carte graphique ; le superviseur est une carte mère d'un ordinateur ; et le superviseur et le générateur sont l'un et l'autre portés par une carte mère d'un ordinateur. 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 : la figure 1 représente schématiquement un ordinateur conventionnel, équipé de périphériques, la figure 2 représente schématiquement une carte graphique conventionnelle ; la figure 3 représente un organigramme de fonctionnement d'un système selon l'invention ; la figure 4 représente la nature des flux entre le superviseur et le générateur ; 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 ; 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 ; 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; 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 ; 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 surfréquençage; la figure 11 détaille des étapes de l'initialisation du procédé selon l'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 la figure 15 détaille quatre exemples de transformations qui pouvant être mises en oeuvre au cours de trois cycle illustrés par les figures 12 à 14. Principes généraux Les figures 1 et suivantes illustrent une mise en oeuvre du surfréquençage (ou overclocking en anglais) d'un ou plusieurs composants d'un ordinateur pour créer des aléas non déterministes selon l'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. 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. 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. 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. 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. 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. 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. 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. 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é. 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). Système pour la génération d'aléas Les moyens informatiques prévus pour cette mise en oeuvre comprennent par exemple: • 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 • 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. 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. 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. 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é. II 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. 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). Ces propriétés sont utilisées dans le cadre de la présente invention de la manière suivante: û 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. û 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 oeuvre préférée, les dimensions sont choisies pour avoir un temps de retour garantissant un très grand nombre d'états différents. û 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. Le procédé proposé n'est cependant pas limité au sur-fréquençage de la mémoire vive d'un processeur graphique. 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). 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 ». 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. 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. La typologie des aléas générés par le sur-fréquençage peut être la suivante: û 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. û 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. û 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. 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 : (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. II s'agit alors d'une « erreur de couleurs » ; et (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. II s'agit alors d'une « erreur de différences ». 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 »: û 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. û 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. û Un troisième cycle, dit cycle de génération, utilise la matrice de pixels construite par la mise en oeuvre 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]. Ces trois étapes (ou cycles) de détection, collecte, et génération mettent en oeuvre 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. 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: - 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 » - 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 » - 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 » - 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 » L'ordre logique d'enchaînement des transformations est Ti -* 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. En variante, le nombre de sous-matrices choisi dans l'implémentation de la présente invention peut être différent de quatre. Des matrices de dimensions plus réduites permettraient d'utiliser au mieux le parallélisme présent dans les coeurs (core en anglais) des processeurs des ordinateurs ou des cartes graphiques. 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. De manière plus détaillée, un ordinateur 10 comprend une unité centrale CPU (pour Central Processing Unit, en anglais) 11 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 oeuvre de la présente 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 Serial Bus), SATA (pour Serial Advanced Technolgy Attachment) ou AGP (pour Accelerated Graphic Port) ou PCI-Express (pour Peripheral Component Interconnect - Express). Des interfaces de communication privilégiées sont les protocoles PCIExpress [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 oeuvre 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. 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 II 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. 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 oeuvre 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. 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 oeuvre. 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. 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 oeuvre ce procédé pour constituer la dynamique de la génération des aléas. 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. 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. A l'étape 102, le superviseur exécute le cycle de détection. 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. 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: • 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 oeuvre 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. 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. L'indéterminisme du procédé selon l'invention est dû à la nature des aléas (AT, AS, AQ) détectées. 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. 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. 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. En outre, il est possible de mettre en oeuvre 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é. Bien entendu, il est également possible de partir de matrices initiales différentes à chaque implémentation du procédé. 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. La mise en oeuvre 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. 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 surfré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. A l'étape 103, le superviseur exécute le cycle de collecte. 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. 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 oeuvre une boucle composée de quatre sous-étapes (voir la figure 14 annexée): l'incrémentation d'un pas donné de la fréquence de la mémoire de travail du superviseur, le rapatriement de la matrice de pixels et la collecte de N aléas dans cette matrice, l'exécution d'un type de transformation par le superviseur en fonction des aléas collectés, la détection des erreurs « couleurs » ou « différences » et le test du dépassement d'un seuil donné. La mise en oeuvre de l'étape 103 augmente ainsi le pouvoir mélangeant de la transformation effectuée par le générateur. 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 Ti, T2, T3 ou 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. 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. A l'étape 104, le superviseur effectue le cycle de génération. Son objectif est de générer les aléas à partir de la matrice construite aux étapes 102 et 103. En référence à la figure 14, l'étape 104 comporte une boucle composée des sous-étapes suivantes: ù initialisation de la variable GenAlea avec un aléa du type spatial (AS), ù exécution par le générateur des transformations Ti, T2, T3 ou T4 en fonction de la valeur de la variable GenAlea, ù lecture de la matrice de pixels du générateur dans le tableau Résultats, ùchangement de la valeur GenAlea. Cette boucle se termine quand un nombre d'aléas déterminé a été atteint. 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 oeuvre de la présente 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). 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. De préférence, on utilise trois type d'API: • Les API Windows qui permettent au superviseur de créer un contexte OpenGL. Ce contexte comprend lui-même: 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. Le paramétrage du contexte OpenGL au sein du système de fenêtrage et de la nature de la surface de pixel à utiliser • Les API OpenGL qui vont permettre au générateur d'exécuter l'ensemble des transformations et comprenant: Le paramétrage du contexte graphique OpenGL Le paramétrage de la matrice initiale et son chargement dans le mémoire vidéo du générateur La procédure d'exécution de la 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. 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, NVClock 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 oeuvre de la présente invention. La figure 5 illustre un détail (23 pixels par 23 pixels) de la matrice 15 initiale telle que le superviseur la transfère dans la mémoire vidéo du générateur. Chaque carré correspond à un pixel dont les valeurs sont: • pour les pixels ayant la même couleur que le pixel 501: R=255, V=255, B=255, A=0 20 • pour les pixels ayant la même couleur que le pixel 502: R=O, V=255, B=255, A=0 • pour les pixels ayant la même couleur que le pixel 503: R=O, V=O, B=O, A=255 • pour les pixels ayant la même couleur que le pixel 504: R=O, V=O, 25 B=255, A=0 • pour les pixels ayant la même couleur que le pixel 505: R=255, V=O, B=255, A=0 • pour les pixels ayant la même couleur que le pixel 506: R=O, V=255, B=O, A=255 30 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: -Le temps de retour d'une matrice de points de dimensions 640 par 320 est exactement de 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. Néanmoins, le procédé peut être mis en oeuvre 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. 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. 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 (pixel blanc) permet de simplifier des tests du cycle de détection et la rapidité de mise en oeuvre du cycle de détection. 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 oeuvre 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. 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. 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). 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. 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. II est possible de constater que le canal Blue (B) est vide de tout aléa. 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 oeuvre 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. La figure 8 met en évidence la valeur des aléas générés par la mise en oeuvre 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. II 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. II 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 sur-fré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. 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. II 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 oeuvre 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. 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 surfréquençage pour la génération d'aléas non déterministes. Exemple détaillé de la génération d'aléas II 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. 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. 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. A l'étape 1105, le superviseur positionne les paramètres de 20 fonctionnement du contexte OpenGL. 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. Les étapes 1101 et 1102 sont utilisatrices des API Overclocking. 25 L'étape 1103 utilise les API Windows alors que les étapes 1104, 1105, 1106 et 1107 utilisent les API OpenGL. La figure 12 décrit le déroulement du cycle de détection. A l'étape 1201, le superviseur initialise les variables ErrCouleur, ErrDifference et Incr à zéro (0). 30 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 oeuvre 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 oeuvre de la présente invention est faite avec le maximum de garanties de bon fonctionnement. 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 oeuvre 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. Le superviseur effectue à l'étape 1205 les transformations Ti, 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 Ti -* 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 oeuvre de la présente invention dès l'étape de détection. 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. 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. 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. A l'étape 1211, le superviseur effectue les transformations Ti, T2, T3 ou T4 en suivant les mêmes règles que pour l'étape 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. 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 (tabl [n] != tab2[n]), tabl [] é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 "_ (tabl[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. 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 oeuvre. 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. 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. 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. 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 initialisé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. 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. 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 Ti, 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. A l'étape 1302, le superviseur initialise la mémoire du générateur avec les données du tableau Alea. 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: IndiceAlea=(ErrColor"ErrDifference) 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'accroitre la dimension d'indéterminisme de la mise en oeuvre de la présente 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 oeuvre de la présente invention avec toutes les précautions nécessaires permettant de ne pas surfréquencer la mémoire du générateur au-delà de son bon fonctionnement. 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 Ti, T2, T3 ou T4 en fonction du résultat modulo 4 de la combinaison logique effectuée à l'étape 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. 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: • 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[IndiceAlea]"=(tabl [n]"(n"(IndiceAlea))) modulo 255 où le symbole «"» correspond à l'opération logique OU EXCLUSIF et n est l'indice de détection de l'erreur. • 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[IndiceAlea]"=(tab2[n]"(n"(IndiceAlea))) modulo 255 où le symbole «"» correspond à l'opération logique OU EXCLUSIF et n est l'indice de détection de l'erreur. • 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[IndiceAlea]"=((tabl[n]"tab2[n])"(n"(IndiceAlea))) modulo 255 où le symbole «"» correspond à l'opération logique OU EXCLUSIF et n est l'indice de détection de l'erreur. La combinaison logique «Alea[IndiceAlea]"= » 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. 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 oeuvre la présente invention dans un cadre très large d'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. 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 oeuvre 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 oeuvre par le générateur et le superviseur est effectuée par un même et unique matériel. II est fait maintenant référence à la figure 14. A l'étape 1401, le superviseur initialise la mémoire du générateur avec les données du tableau Alea. A l'étape 1402, le superviseur initialise la variable Incr à zéro (0) et donne à la variable GenAlea la valeur suivante: GenAlea=Alea[IndiceAlea]. 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 oeuvre les valeur IndiceAlea et Alea[IndiceAlea] 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. 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 Ti, T2, T3 ou T4 en fonction du résultat de la combinaison logique modulo 4 de l'étape 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. De plus, le superviseur procède à une nouvelle initialisation de la variable GenAlea de la manière suivante: GenAlea=Résultats[Incr]. 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. 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. 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. Liste des référence citées [1] http://www.thocp.net/biographies/papers/turing_oncomputablenumbers 1936.pdf [2] https://www.fourmilab.ch/hotbits/secure_generate.html [3] http://www.lavalite.com/ [4] http://www.lavarnd.org/what/index.html [5] http://www.random.org/randomness/ [6] http://www.linuxcertif.com/man/4/random/ [7] http://www.pinkas.net/PAPERS/gprO6.pdf [8] http://www.protego.se/sglOO_en .htm [9] http://www.comscire.com/Home/ [10] http://true-random.com/ [11] http://www.idquantique.com/component/content/article/9.html [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/testu0l/tu0l.html [15] http://www.overclockers.com/ [16] http://www.overclockersclub.com/ [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 [19] http://www.evga.com/precision/ [20] http://www.gigabyte.com.tw/FileList/NewTech/old_motherboard_newte ch/Tech 20041125 PX ET5.htm [21] http://www.futuremark.com/ [22] http://www.sisoftware.co.uk/ [23] http://www.xtremesystems.com/pi/ [24] http://www.gigabyte.com.tw/News/Motherboard/News_List.aspx?New sID=1467 [25] http://www.mersenne.org/freesoft/ [26] http://www.memtest.org/ [27] http://www.ocbase.com/perestroikalindex.php [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/ [31] http://members.datafast.net.au/dit0802/specs/agp30.pdf [32] http://www.irisa.fr/caps/projects/hipsor/ REVENDICATIONS1. 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. 2. Procédé selon la revendication 1, caractérisé par les étapes suivantes : ù on incrémente la fréquence de fonctionnement d'au moins une partie des moyens informatiques (20), et ù on met en oeuvre sur les moyens informatiques (20) dont on a augmenté la fréquence de fonctionnement une transformation qui en modifie l'état ; 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. 3 .Procédé selon la revendication précédente, dans lequel la transformation est une transformation ergodique. 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). 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 oeuvre la transformation et des étatsobtenus à l'issue de la transformation pour ces données. 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 un aléa spatial (AS) en déterminant les coordonnées de l'erreur ; et/ou 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. 7. Procédé selon la revendication précédente, comprenant en outre au moins un cycle de collecte (1301-1311), au cours duquel : - 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. 8. Procédé selon la revendication précédente, comprenant en outre les étapes au cours desquelles : - on définit une variable d'aléas (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 oeuvre en fonction de la valeur de ladite variable d'aléas ; et - on modifie la valeur de la variable d'aléas en fonction des aléas détectés lors de la nouvelle transformation. 9. Procédé selon la revendication précédente, comprenant en outre les étapes au cours desquelles : - on répartit l'adressage des données en N sous-groupes, N étant unnombre entier non nul ; 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) par sous-groupe selon un ordre qui est déterminé par la valeur de ladite variable d'aléas (1205, 1211, 1306, 1406). 10. Procédé selon l'une des revendications 7 à 9, comprenant en outre les étapes au cours desquelles : ûon définit (1301) un nombre seuil ; û 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; - si le nombre seuil est atteint ou dépassé, on termine (1401) le cycle de collecte ; - si le nombre seuil n'est pas atteint (1311), on recommence un nouveau cycle de collecte en réitérant l'étape de transformation. 11. Procédé selon la revendication précédente, dans lequel : ûon définit une quantité seuil de nombres aléatoires ; û on initialise un tableau de résultats à partir des données transformées issues des cycles de collecte; û on effectue une transformation des états des données en modifiant leur adressage (1402, 1403, 1404); ûon détecte les aléas générés par la transformation (1405); et û on remplit le tableau de résultats avec les aléas détectés lors de la 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). 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. 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. 10 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 15 avec des valeurs de pixels issues de la deuxième lecture de la même matrice, ladite erreur étant une erreur de différences. 15. Procédé selon les revendications 13 et 14, comprenant en outre une boucle de rétroaction comprenant les étapes suivantes : 20 ûinitialiser une variable de rétroaction (1201) ; ûdéterminer si l'erreur détectée est une erreur de couleur ou une erreur de différence ; -si la valeur de la variable est paire (1202), détecter une erreur de couleur (1206, 1207, 1214) ; 25 -si la valeur de la variable est impaire (1208), détecter une erreur de différences (1211, 1212, 1214) ; et ûincrémenter la variable de rétroaction (1216). 16. Procédé selon l'une des revendications 12 à 15, dans lequel les 30 moyens informatiques sont une carte graphique, les données auxquelles on applique une transformation étant des données mémorisées dans sa5mémoire vive, et dans lequel, préalablement à l'incrémentation de la fréquence, on initialise le procédé selon les étapes suivantes : û détecter (1201) la carte graphique (20) ; û déterminer (1202) la capacité de sur-fréquençage de la mémoire vive (22) de la carte graphique (20) ; û créer un contexte graphique (1103) ; et û initialiser la matrice initiale de pixels (1104). 17. Procédé selon l'une des revendications précédentes, dans lequel : û 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, û on détermine si le nombre d'erreurs obtenues est supérieur ou égal à ce nombre maximum d'erreurs admissibles ; et û on détermine si les moyens informatiques (20) sont conformes au 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. 19. Système informatique (10, 20) pour la génération d'aléas non déterministes, comprenant : û un générateur (20), qui est un moyen informatique à horloge interne, û un superviseur (10) à processeur apte à interagir avec ledit générateur (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 moyenspour mettre en oeuvre une détection d'erreur en sortie du générateur (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 oeuvre, le superviseur (10) commandant la mise en oeuvre de ladite transformation. 21. Système informatique (10, 20) selon l'une des revendications 10 19ou 20, caractérisé en ce que le générateur est une carte graphique (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). 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. 15