FR 3012235 A1 20150424 FR 1360126 A 20131017 Procédé de sécurisation d'un jeu d'instructions exécutables et/ou d'un schéma d'adressage d'un système informatique et système correspondant Des modes de mise en oeuvre et de réalisation de l'invention concernent la sécurisation de certains aspects d'un système informatique comme par exemple la sécurisation d'un j eu d'instructions exécutables et/ou la sécurisation du schéma d'adressage utilisé au sein du système informatique, vis-à-vis des attaques par injection de faute. L'invention s' applique avantageusement mais non limitativement aux systèmes informatiques dont l'unité de traitement comporte par exemple un microcontrôleur ou un microprocesseur, embarqués par exemple, mais non limitativement, dans une carte à puce. Dans certaines applications, certaines instructions peuvent être critiques sur le plan de la sécurité, comme par exemple des instructions relatives à la vérification du code confidentiel d'une carte à puce. Et, lors d'une attaque par injection de faute, typiquement en utilisant un faisceau laser, un attaquant peut essayer de modifier un bit d'une instruction de façon à par exemple examiner le comportement de la carte et en tirer des informations sur des données secrètes. Par ailleurs, actuellement, des instructions exécutables conduisant à des actions opposées peuvent avoir des valeurs binaires proches. Par exemple, si la donnée hexadécimale 0x50 est la valeur d'une instruction du type « sauter si égal » (« jump if equal »), la valeur hexadécimale 0x51 peut être la valeur de l'instruction « sauter si non égal » (« jump if not equal »). Aussi, la modification du dernier bit de l'une de ces deux instructions, par exemple lors d'une attaque par faisceau laser, peut avoir des conséquences importantes sur la sécurité du processeur et donc de l'application. Par ailleurs, actuellement, la distribution des adresses (schéma d'adressage) des mémoires et des périphériques d'un système informatique est souvent organisée par blocs, plus ou moins regroupés par type de mémoire et par propriété. Cependant, les différentes plages d'adresses des mémoires et des périphériques peuvent avoir des similarités entre elles, ce qui peut être préjudiciable en ce qui concerne la sécurité. En effet, lorsqu'une instruction chargement de donnée (« Load ») par exemple contient l'adresse de destination de ladite donnée dans une certaine mémoire, la modification d'un bit particulier dans cette adresse peut avoir une conséquence importante et conduire à charger ladite donnée dans une autre mémoire que celle prévue initialement. Selon un mode de mise en oeuvre et de réalisation, il est proposé de sécuriser davantage le jeu d'instructions et/ou le schéma d'adressage d'un système informatique de façon, notamment lorsque ce système est embarqué dans une carte à puce, à les rendre moins sensibles aux attaques par injection de fautes. Selon un aspect, il est proposé un procédé de sécurisation d'un système informatique comportant une unité de traitement.. Le procédé selon cet aspect comprend -une génération d'un jeu de M1 mots numériques de ml bits, -une sélection parmi ledit jeu de M1 mots numériques, d'au moins un groupe de N1 mots numériques de ml bits, N1 étant inférieur à Ml, de sorte que chaque mot numérique sélectionné diffère de tous les autres mots numériques sélectionnés, d'un nombre de bits au moins égal à un entier p au moins égal à 2, ledit groupe de N1 mots numériques de ml bits formant au moins un groupe de N1 instructions numériques exécutables, et -une configuration de ladite unité de traitement pour la rendre capable d'exécuter chaque instruction dudit au moins un groupe de N1 instructions numériques exécutables. N1 peut être une puissance entière de deux, par exemple 2'1. M1 peut aussi être une puissance de deux, par exemple 2m1 avec ml supérieur à n1. Ce jeu d'instructions numériques exécutables est un jeu sécurisé et plus robuste vis-à-vis des attaques par injection de fautes, comme on le verra plus en détails ci-après. A ces N1 instructions numériques exécutables sécurisées correspondent N1 opérations exécutables par l'unité de traitement, comme par exemple des opérations du type « saut », (« jump »), « saut conditionnel » (« jump if » ou « jump if not »), « addition » (« add »). Les instructions numériques exécutables (code machine) utilisées dans un programme informatique destiné à être exécuté par l'unité de traitement appartiennent à ce jeu d'instructions exécutables sécurisées. Ce code machine est par exemple stocké dans une mémoire programme du système informatique. Ce code machine peut être élaboré directement par le programmeur à partir du jeu d'instructions sécurisées ou bien par compilation d'un texte écrit dans un langage de haut niveau (C ou C++ par exemple) dans un compilateur adapté audit jeu d'instructions sécurisées. Cela étant, lorsque l'unité de traitement est par exemple un microprocesseur, elle comporte généralement un coeur logique comportant des portes logiques et des étages de pipeline. Et ce coeur logique doit être configuré, typiquement à l'aide d'outils logiciels classiques, de façon à ce que le microprocesseur puisse effectivement réaliser chacune des N1 opérations désirées (addition, saut, saut conditionnel, soustraction, multiplication, etc....) lorsqu'il reçoit en entrée chacune des N1 instructions numériques exécutables sécurisées correspondantes. Une fois cette configuration du microprocesseur effectuée, elle est figée « en dur » et associée de façon biunivoque aux N1 instructions exécutables sécurisées. L'unité de traitement peut être aussi une machine virtuelle, par exemple un émulateur ou un interpréteur, et les N1 instructions numériques exécutables sécurisées des instructions virtuelles par exemple du type ByteCodeJava. Comme indiqué ci-avant les N1 instructions ainsi générées sont sécurisées. En effet, avec ce procédé, les N1 instructions numériques diffèrent toutes mutuellement d'un nombre de bits au moins égal à p. En d'autres termes, la distance de Hamming, qui est le nombre de bits différent entre deux instructions numériques, est ici au moins égale à p, qui est lui-même au moins égal à 2. L'homme du métier saura choisir la valeur de p et la valeur de ml en fonction de l'application choisie et du niveau de sécurité désiré. A titre d'exemple, pour un jeu de 16 instructions, il est possible de définir 16 mots numériques de 8 bits chacun dans un jeu de 28 mots numériques (m1=8), chaque mot numérique sélectionné ayant une distance de Hamming supérieure ou égale à 4 (p=4) avec tous les autres mots numériques. En d'autres termes, pour chaque instruction, il n'y a alors aucune autre instruction qui diffère de ladite instruction d'un nombre de bits inférieur à 4. Des instructions de programme stockées dans la mémoire programme et prises parmi un tel jeu d'instructions sécurisées, sont alors beaucoup plus robustes vis-à-vis des attaques par injection de faute dans la mémoire programme. En effet, il devient beaucoup plus difficile de pouvoir changer simultanément 4 bits ou plus pour pouvoir atteindre une autre instruction du jeu d'instructions sécurisées. Il est également possible de considérer que les autres mots numériques, c'est-à-dire ceux qui n'ont pas été sélectionnés car présentant une distance de Hamming inférieure à p, soient traités par l'unité de traitement comme des instructions invalides, puisqu'elle n'a pas été configurée pour une telle instruction. Et, par exemple, lorsque le processeur tente d'exécuter une telle instruction considérée comme invalide, un traitement spécifique d'invalidité peut être effectué, par exemple la délivrance d'un signal d'alerte spécifique ou un blocage de la carte lorsque l'unité de traitement est embarquée dans une telle carte. Le jeu d'instructions exécutables peut comprendre plusieurs groupes GR, de 1\11, instructions numériques, les instructions numériques d'un même groupe satisfaisant à un critère de similarité, les critères de similarité respectivement associés au groupe étant tous mutuellement différents. Ainsi par exemple, on peut regrouper dans un premier groupe les instructions ayant toutes un même nombre d'opérandes et dans un deuxième groupe des instructions relatives à des opérations d'un même type (saut, saut conditionnel, etc.). Les groupes d'instructions numériques peuvent avoir un nombre identique ou différent d'instructions. En d'autres termes pour deux groupes différents GRA et GR,, les nombres N1 et 1\11, peuvent être égaux ou différents. Ainsi, selon un mode de mise en oeuvre, ladite sélection comprend une sélection parmi le jeu de 1\41 (égal à 2m1 par exemple) mots numériques, de plusieurs groupes de 1\11, mots numériques (la somme de tous les 1\11, mots numériques étant inférieure ou égale à M1) de sorte que chaque mot sélectionné d'un groupe diffère de tous les autres mots sélectionnés du groupe d'un nombre de bits au moins égal à p, les groupes de 1\11, mots numériques formant des groupes de N1 instructions numériques exécutables. Le procédé selon ce mode de mise en oeuvre comprend alors une configuration de ladite unité de traitement pour la rendre capable d'exécuter chaque instruction desdits groupes d'instructions numériques. Dans un cas particulier chaque nombre 1\11, peut être une puissance entière de deux, par exemple 2'1. Ainsi, au sein de chaque groupe, les instructions numériques diffèrent les unes des autres d'un nombre de bits au moins égal à p. Il devient donc particulièrement difficile pour un attaquant de modifier une instruction au sein d'un groupe sans risquer de changer de groupe. Et, il n'est pas nécessaire de garantir une quelconque distance de Hamming entre deux instructions de deux groupes différents. Ainsi, selon un mode de mise en oeuvre, une instruction numérique d'au moins un rang rg d'un groupe de rang i peut différer d'un seul bit de l'instruction numérique de rang rg' du groupe de rang j, j étant différent de i. Par ailleurs rg' peut être égal à ou différent de rg. Là encore, les mots numériques n'appartenant à aucun groupe peuvent être considérés comme des instructions invalides. Selon un autre aspect, il est proposé un procédé d'élaboration d'un schéma d'adressage sécurisé au sein d'un système informatique, ledit schéma étant organisé par blocs d'adresses et comportant N2 blocs d'adresses, les mots d'adresse possédant n2 bits. Selon une caractéristique générale de cet aspect, le procédé comprend -une génération d'un jeu de 2m2 mots numériques de m2 bits, m2 étant inférieur à n2 et supérieur ou égal à 2, -une sélection parmi ledit jeu de 2m2 mots numériques de N2 mots numériques de m2 bits de sorte que chaque mot numérique sélectionné diffère de tous les autres mots numériques sélectionnés d'un nombre de bits au moins égal à un entier h supérieur ou égal à 2, -une affectation aux N2 blocs d'adresses, de mots d'adresses dont les m2 bits de poids fort sont respectivement les m2 bits des N2 mots numériques sélectionnés. M2 résulte d'un compromis entre le degré de sécurité souhaité, c'est-à-dire le nombre h, le nombre de blocs N2 et leur taille maximale. L'homme du métier saura ajuster ces paramètres en fonction de l'application souhaitée et du degré de sécurité souhaité. Ainsi, par exemple, avec des mots d'adresses de 32 bits (n2=32), une valeur m2 égale à 5, et un entier h égal à 3, il est possible de choisir N2=4 mots numériques de 5 bits affectés respectivement à 4 blocs d'adresses dont les cinq bits de poids fort sont respectivement les cinq bits des quatre mots numériques sélectionnés. On peut alors par exemple affecter un premier type de mémoire, (par exemple une mémoire flash d'amorçage) au bloc d'adresses n°1, une mémoire vive interne au bloc d'adressage n°2, une mémoire vive externe au bloc d'adresses n°3 et un ensemble de périphériques au bloc d'adresses n°4, toute autre combinaison de bits de poids fort étant considérée comme des adresses invalides. Et, d'un point de vue sécuritaire, un attaquant devra modifier ici trois bits ou plus pour espérer obtenir une adresse valide d'un autre bloc d'adresses. Lorsqu'on élabore à la fois un jeu d'instructions exécutables sécurisées et un schéma d'adressage sécurisé, les nombres p et h peuvent être identiques ou différents. De même les nombres ml et m2, n1 et n2, et N1 et N2 peuvent être respectivement identiques ou différents. Selon un mode de mise en oeuvre, l'un au moins des blocs d'adresses, par exemple celui associé à un ensemble de périphériques, peut posséder M sous-blocs d'adresses, par exemple destinés à être associés à M types de périphériques différents. Aussi, selon un mode de mise en oeuvre, le procédé comprend -une génération d'un jeu de 2r mots numériques de r bits, r étant inférieur ou égal à n2-m2, et supérieur ou égal à 2, -une sélection parmi le jeu de 2r mots numériques, de M mots numériques, de sorte que chaque mot numérique sélectionné diffère de tous les autres mots numériques sélectionnés d'un nombre de bits au moins égal à un entier s au moins égal à 2 (cet entier s peut être égal ou différent de h), et -une affectation audit l'un au moins des blocs d'adresses, de mots d'adresses dont les r bits suivants les m2 bits de poids fort sont respectivement les r bits des M mots numériques sélectionnés. Ainsi, là encore, le sous-bloc d'adresses associé à un type de périphériques diffère d'un autre sous-bloc d'adresses d'un nombre de bits au moins égal à s, et il devient là encore difficile pour un attaquant de pouvoir modifier simultanément s bits ou plus pour pouvoir espérer atteindre un autre type de périphérique. Selon un autre aspect, il est proposé une unité de traitement, destinée à être incorporée dans un système informatique, ladite unité de traitement comprenant des moyens de traitement configurés pour être capables d'exécuter chaque instruction d'un jeu d'instructions numériques exécutables de ml bits comportant au moins un groupe de N1 mots numériques de ml bits, avec 2m1 supérieur à N1, chaque mot numérique différant de tous les autres mots numériques dudit au moins un groupe d'un nombre de bits au moins égal à un entier p au moins égal à 2. N1 peut être une puissance entière de deux, par exemple 2'1 avec n1 inférieur à ml. Selon un mode de réalisation, en présence d'un autre mot numérique que ceux dudit au moins un groupe, les moyens de traitement sont configurés pour effectuer un traitement spécifique d'invalidité. Selon un mode de réalisation, les moyens de traitement sont configurés pour exécuter chaque instruction d'un jeu d'instructions numériques exécutables de ml bits comportant plusieurs groupes de mots numériques de ml bits, chaque mot numérique d'un groupe différant de tous les autres mots numériques dudit groupe d'un nombre de bits au moins égal à 2, les instructions numériques d'un même groupe satisfaisant à un critère de similarité, les critères de similarité respectivement associés aux groupes étant tous mutuellement différents. Selon un mode de réalisation, une instruction numérique d'au moins un rang rg d'un groupe de rang i peut différer d'un seul bit de l'instruction numérique de rang rg' du groupe de rang j, j étant différent de i. Selon un mode de réalisation, en présence d'un mot numérique n'appartenant à aucun groupe, les moyens de traitement sont configurés pour effectuer un traitement spécifique d'invalidité. L'unité de traitement peut être un microprocesseur ou un microcontrôleur. Selon un autre aspect, il est proposé un système informatique comprenant une unité de traitement telle que définie ci-avant et des moyens de mémoire programme destinés à stocker des instructions numériques de programme définissant un programme à exécuter par l'unité de traitement et appartenant audit jeu d'instructions exécutables. Selon un autre aspect, il est proposé un système informatique comprenant une unité de traitement, par exemple un microprocesseur ou un microcontrôleur, et des éléments adressables par des mots d'adresses de n2 bits appartenant à un schéma d'adressage par blocs d'adresses comportant N2 blocs d'adresses. Selon une caractéristique générale de cet aspect, les mots d'adresses affectés aux N2 blocs d'adresses comportent chacun un premier groupe de m2 bits de poids fort, m2 étant inférieur à n2 et supérieur ou égal à 2, chaque premier groupe d'un mot d'adresse affecté à l'un des N2 blocs différant de tous les N2-1 autres premiers groupes des autres mots d'adresse affectés aux N2-1 autres blocs d'un nombre de bits au moins égal à un entier h supérieur ou égal à 2. Selon un mode de réalisation, N2 éléments associés aux N2 blocs d'adresses comportent des éléments choisis parmi des mémoires et un ensemble de périphériques. Selon un mode de réalisation, l'un au moins des blocs d'adresses possède M sous-blocs d'adresses, et les mots d'adresses affectés audit l'un au moins des blocs d'adresses comportent chacun, à la suite du premier groupe de m2 bits de poids fort, un deuxième groupe de r bits, r étant inférieur ou égal à n2-m2 et supérieur ou égal à 2, chaque deuxième groupe d'un mot d'adresse affecté à l'un des M sous-blocs d'adresses différant de tous les M-1 autres deuxièmes groupes des autres mots d'adresses aux M-1 autres sous-blocs d'un nombre de bits au moins égal à un entier s supérieur ou égal à 2. Selon un mode de réalisation, l'élément associé audit l'un au moins des blocs est un ensemble de périphériques et les M éléments associés aux M sous-blocs d'adresses sont M types particuliers de périphériques. L'unité de traitement peut être une unité de traitement telle que définie ci-avant c'est-à-dire dont les moyens de traitement sont configurés pour exécuter un jeu d'instructions numériques exécutables sécurisées par une distance de Hamming. A cet égard, comme indiqué ci-avant, p et h peuvent êtres identiques ou différents Selon un autre aspect, il est proposé un circuit intégré incorporant une unité de traitement telle que définie ci-avant ou un système informatique tel que défini ci-avant. Un tel circuit intégré peut être incorporé par exemple dans une carte à puce. D'autres avantages et caractéristiques de l'invention apparaîtront à l'examen de la description détaillée de modes de mise en oeuvre et de réalisation, nullement limitatifs, et des dessins annexés sur lesquels : -les figures 1 à 12 illustrent schématiquement différents modes de mise en oeuvre et de réalisation des différents aspects de l' invention Sur la figure 1, la référence SYS désigne un système informatique comportant une unité de traitement UT, par exemple un microcontrôleur ou un microprocesseur, comportant des moyens de traitement MT, connectée via un bus BS à de moyens de mémoire programme MMP ainsi qu'à différentes mémoires MM1, MM2, MM3 et à différents périphériques PH1, PH2, PH3... Certains au moins de ces périphériques, par exemple les périphériques PH1 et PH2, sont des périphériques de même type, par exemple des contrôleurs, tandis que le périphérique PH3 et d'autres périphériques non représentés ici à des fins de simplification, sont des périphériques d'un autre type, par exemple des systèmes de génération d'horloge. Le système SYS peut être, comme illustré sur la figure 2, incorporé au sein d'un circuit intégré CI lui-même encarté dans une carte à puce CP. On se réfère maintenant plus particulièrement aux figures 3 à 8 pour décrire un exemple d'élaboration d'un jeu d'instructions exécutables sécurisées susceptibles d'être exécutées par l'unité de traitement UT. On suppose ici que le jeu d'instructions exécutables par l'unité de traitement comprend 2n1 instructions exécutables formées de mots de ml bits. On génère tout d'abord dans cet exemple (étape 30, figure 3), un jeu de 2m1 mots numériques de ml bits MN,. ml est choisi supérieur à nl. Puis, dans l'étape 31, on sélectionne parmi le jeu de 2m1 mots numériques MN' un groupe de 2n1 mots numériques de ml bits MNS,. Les mots MNS, sont sélectionnés de sorte que chaque mot numérique sélectionné MNS, diffère de tous les autres mots numériques sélectionnés d'un nombre de bits au moins égal à un entier p au moins égal à 2. En d'autres termes, la distance de Hamming entre deux mots numériques sélectionnés est au moins égale à p. Le jeu de 2n1 mots numériques sélectionnés MNS forme alors le groupe de 2n1 instructions exécutables INST,. Les mots numériques non sélectionnés dans le jeu de 2m1 mots numériques MN, peuvent alors être par exemple considérés comme des instructions invalides INSIV,. A partir de ces instructions exécutables INST' un programmeur pourra élaborer un programme dont les instructions numériques de programme (prises parmi ce jeu d'instructions sécurisées instructions exécutables INST,) pourront être stockées dans les moyens de mémoire programme MMP. Cela étant les moyens de traitement du microprocesseur ou du microntrôleur UT comportent généralement un coeur logique comportant des portes logiques et des étages de pipeline. Et ce coeur logique doit être configuré, typiquement à l'aide d'outils logiciels classiques, de façon à ce le microprocesseur réalise effectivement chacune des 2n1 opérations désirées (addition, saut, saut conditionnel, soustraction, multiplication, etc....) lorsqu'il reçoit en entrée chacune des 2n1 instructions numériques exécutables sécurisées correspondantes. Une fois cette configuration du microprocesseur effectuée, elle est figée « en dur » et associée de façon biunivoque aux 2n1 instructions exécutables sécurisées. L'étape 32 de la figure 3 illustre la configuration des moyens de traitement MT du microprocesseur UT pour les rendre capables d'exécuter chacune des instructions dudit jeu d'instructions numériques exécutables qui vient d'être généré. La figure 4 donne un exemple d'un jeu de 16 instructions (n=4) sélectionnées parmi un jeu de 256 mots numériques (m=8) de 8 bits chacun. Dans cet exemple, le nombre p a été choisi égal à 4. On voit donc sur la figure 4 que les 16 mots numériques sélectionnés MNS,-MNS16, correspondant aux 16 instructions de 8 bits du jeu d'instructions sont tels que chaque mot numérique sélectionné MNS, diffère des autres mots numériques sélectionnés d'un nombre de bits au moins égal à 4. Ainsi, un attaquant qui souhaite effectuer une attaque par injection de faute devra être capable de changer 4 bits d'une instruction pour espérer retrouver une instruction exécutable valide. La robustesse d'un tel jeu d'instructions exécutables vis-à-vis d'une attaque par injection de faute est donc fortement améliorée. Dans l'exemple qui vient d'être décrit, on a supposé que le jeu d'instructions exécutables ne contenait qu'un seul groupe de 2'1 instructions numériques de ml bits chacune. Cela étant, il est tout à fait possible que le jeu d'instructions exécutables comprenne plusieurs groupes GR1-GRg possédant dans cet exemple 2'1 instructions chacun. Aussi, comme illustré sur la figure 5, à partir du jeu de 2m1 mots numériques MN' on sélectionne (étape 51), compte tenu du nombre p, les différents groupes GRg de mots numériques sélectionnés. Ainsi, le groupe GR1 comprend 2'1 mots numériques sélectionnés MNS1' le groupe GR2 comprend 2'1 mots numériques sélectionnés MNS2, et le groupe de rang g comprend 2'1 mots numériques sélectionnés MNSgi. Et, à l'intérieur de chaque groupe, là encore, un mot numérique sélectionné diffère des autres mots numériques sélectionnés d'un nombre de bits au moins égal à p. Par contre, il n'est pas nécessaire qu'un mot numérique MNS11 diffère d'un mot numérique sélectionné d'un autre groupe, par exemple le mot numérique MNS21 d'un nombre de bits au moins égal à p. Les différents mots numériques sélectionnés de différents groupes forment alors respectivement les 2'1 instructions exécutables des différents groupes. Ainsi, un premier groupe GR1 est formé des 2'1 instructions exécutables INST11 correspondant aux mots numériques sélectionnés MNS11 et les 2'1 instructions INST21 du groupe GR2 correspondent aux 2'1 mots numériques sélectionnés MNS21, et ainsi de suite. Il devient alors possible de regrouper au sein d'un même groupe des instructions satisfaisant à un même critère de similarité, sachant que les critères de similarité sont différents d'un groupe à l'autre. Ainsi, on peut regrouper dans le groupe GR1 les instructions INST11 qui ont le même nombre d'opérandes tandis que l'on peut regrouper dans le groupe GR2, par exemple, les instructions INST21 qui effectuent un même type d'opérations (par exemple des sauts, des sauts conditionnels etc.). A partir de ces instructions exécutables INST11, INST21, INSTgi, un programmeur pourra élaborer un programme dont les instructions numériques de programme (prises parmi ce jeu d'instructions sécurisées instructions exécutables INST11, INST21, INSTgi) pourront être stockées dans les moyens de mémoire programme MMP. Et là encore, un attaquant qui souhaiterait remplacer une instruction appartenant à un groupe par une autre instruction appartenant à ce même groupe, devrait là encore modifier simultanément au moins p bits, par exemple 4 bits si p est égal à 4. L'étape 52 de la figure 5 illustre la configuration des moyens de traitement MT du microprocesseur UT pour les rendre capables d'exécuter chacune des instructions dudit jeu d'instructions numériques exécutables INST11, INST21, INSTgi qui vient d'être généré. Par ailleurs, s'il n'est pas possible ou s'il n'est pas souhaité de subdiviser l'intégralité du jeu de 2m1 mots numériques en groupes, il peut donc subsister des mots numériques non sélectionnés, qui n'appartiennent à aucun groupe. Dans ce cas, comme illustré sur la figure 5, et par analogie à ce qui a été décrit ci-avant, ces mots numériques non sélectionnés peuvent être considérés comme des instructions non valides INSIVJ. La figure 6 illustre un exemple de trois groupes GR1, GR2, GR3 de 16 mots numériques sélectionnés correspondant à 16 instructions, ces trois groupes coexistant dans le jeu initial de 28 mots numériques. Dans chaque groupe, chaque mot numérique sélectionné, donc chaque instruction, a une distance de Hamming supérieure ou égale à 4 avec tous les autres mots numériques sélectionnés du même groupe. Par ailleurs, on remarquera ici que pour certains au moins des rangs, le rang 1 par exemple et pour certains au moins des groupes, les groupes GR2 et GR3 par exemple, le mot numérique MNS21, diffère du mot numérique sélectionné MNS31 d'un seul bit. Une instruction modifiée par attaque par faisceau laser peut donc conduire à un changement de groupe, ce qui est perturbant pour l'attaquant. Dans cet exemple, le groupe GR1 peut être alloué aux instructions de branchement tandis que le groupe GR2 peut être alloué aux instructions ayant un opérande et le groupe 3 alloué aux instructions ayant deux opérandes. La figure 7 illustre un exemple d'algorithme permettant d'affecter un mot numérique MN parmi les 2m1 mots numériques à un groupe. Cet algorithme permet également de traiter de la génération de plusieurs groupes respectant les critères définis ci-avant. Cet algorithme peut être aisément mis en oeuvre au sein d'un microordinateur, par exemple un PC. Il ne s'agit là que d'un exemple non limitatif. Cet algorithme va balayer toutes les valeurs MN des mots numériques de 0 à 2m1-1. On affecte par ailleurs pour chaque valeur MN un paramètre référencé « tab » qui au départ est initialisé à 1 pour tous les mots numériques. A la fin de l'algorithme, l'identifiant du groupe d'un mot numérique est la valeur du paramètre associé à ce mot numérique. Si l'identifiant du groupe a une valeur égale à -1, le mot numérique correspondant n'a pas de groupe. Dans l'étape 70, on vérifie si la valeur du mot numérique MN est inférieure à 2m1. Si tel est le cas, on initialise l'identifiant du groupe « groupId » à 0 et on initialise une variable logique « Grptrouvé » à l'état faux. Dans l'étape 72, on teste si l'identifiant groupId est inférieur à 2m1 et si la variable Grptrouvé est à l'état faux. Si tel est le cas, on initialise une valeur « testVal » à 0 et une variable logique « validGroup » à l'état vrai. Dans l'étape 74, on teste si la valeur de la variable testVal est inférieure à 2m1 et si la variable logique validGroup est à l'état vrai. Si tel est le cas, on passe dans l'étape 75 dans laquelle on va tester si la valeur du paramètre associé à la variable testVal est égale à l'identifiant groupId et si la distance de Hamming entre le mot numérique en cours MN et la valeur testVal est inférieure à p. Si tel est le cas, alors on affecte la valeur « faux » à la variable validGroup (étape 76) tandis que si le résultat du test de l'étape 75 est faux, on incrémente la variable testVal de 1 (étape 77). Puis, on revient à l'étape 74. Si le résultat du test de l'étape 74 s'avère faux, on teste l'état de la variable logique validGroup (étape 78). Si cette variable est à l'état vrai, alors on passe dans l'étape 79 dans laquelle on affecte au paramètre « tab » associé au mot numérique MN, la valeur de la variable groupId et l'on affecte à la variable logique « Grptrouvé » la valeur vraie. Puis on passe dans l'étape 80 dans laquelle on incrémente de 1 la variable groupId. Par ailleurs, si à l'étape 78 validGroup a la valeur faux, on passe directement à l'étape 80. A l'issue de l'étape 80, on revient à l'étape 72. Si dans l'étape 72, le résultat du test est faux, alors on passe au mot numérique suivant (étape 81) et l'on revient à l'étape 70. Si dans l'étape 70, le résultat du test est faux, alors l'algorithme s'arrête et l'on a affecté ou non un groupe à chacun des mots numériques et, dans chacun de ces groupes, les mots numériques sélectionnés respectent la condition de la distance de Hamming au moins égale à p. La figure 8 a un extrait du résultat de l'algorithme pour 256 mots numériques avec, pour chaque mot numérique MN (ici seuls les mots numériques 0x00 à Ox3F sont représentés) le numéro du groupe dans lequel il va se situer. Il est également possible, en utilisant ce même concept d'une distance de Hamming minimale entre des mots numériques, d'élaborer, comme illustré sur la figure 9, un schéma d'adressage sécurisé au sein du système informatique SYS. Sur la figure 9, la distance de Hamming minimale est h mais on pourrait bien sûr choisir une distance de Hamming minimale h égale à p comme pour la sécurisation du jeu d'instructions exécutables décrite ci-avant. Le schéma d'adressage est ici organisé par blocs d'adresses et comporte N2 blocs d'adresses. Les mots d'adresses utilisés dans le schéma d'adressage comportent ici n2 bits, par exemple 32 bits. On choisit alors, un nombre m2 inférieur à n2 et supérieur ou égal à 2. On génère alors (étape 80) un jeu de 2m2 mots numériques de m2 bits MN,. Puis, à l'étape 81, on sélectionne parmi le jeu de 2m2 mots numériques, N2 mots numériques sélectionnés MNS, de sorte que chaque mot numérique sélectionné diffère de tous les autres mots numériques sélectionnés d'un nombre de bits au moins égal à h, l'entier h représentant la distance de Hamming minimale. On élabore ensuite (étape 82) des mots d'adresses respectivement affectés (étape 83) aux N2 blocs d'adresses. Plus précisément, les mots d'adresses MAD1, affectés au bloc d'adresses n° 1, comportent tous m2 bits de poids fort correspondant aux m2 bits du mot numérique sélectionné MNS1. Les n2-m2 bits restants permettent de définir une pluralité de mots d'adresses mais qui ont tous les mêmes bits de poids fort. De même, les mots d'adresses MADN2, affectés au bloc d'adresses n°N2 ont tous comme m2 bits de poids fort les m2 bits du mot numérique sélectionné MNSN2. On associe ensuite, à l'étape 84, les différents blocs d'adresses à N2 éléments du système informatique. Ainsi, à titre d'exemple, comme illustré sur la figure 10, si l'on choisit n2=32, m2=5 et h=3, on obtient alors seulement quatre mots numériques sélectionnés MNS,-MNS4, qui vont former quatre groupes de mots d'adresses se distinguant mutuellement par leurs bits de poids forts. Ces quatre groupes de mots d'adresses vont pouvoir être affectés à quatre blocs d'adresses associés à quatre éléments, par exemple la mémoire MM1, la mémoire MM2, la mémoire MM3 et l'ensemble des périphériques PH,. Il devient alors particulièrement difficile pour un attaquant qui souhaite procéder à une attaque par injection de faute de passer d'un bloc d'adresses à un autre car cela nécessiterait de pouvoir modifier 3 bits parmi les 5 bits de poids fort simultanément pour espérer obtenir une adresse valide d'un autre bloc. Il est tout à fait possible que l'un au moins des blocs d'adresses possède M sous-blocs d'adresses. C'est par exemple le cas pour le bloc d'adresses affecté à l'ensemble des périphériques. On peut en effet subdiviser l'ensemble des périphériques PH, en M sous-ensembles de périphériques, chaque sous-ensemble regroupant des périphériques de même type. On peut alors, de la même façon que ce qui a été décrit précédemment, sécuriser l'adressage de ces sous-blocs. Plus précisément, comme illustré sur la figure 11, on génère un jeu de 2' mots numériques de r bits, r étant inférieur ou égal à n2-m2 et supérieur ou égal à 2. On sélectionne alors (étape 111), parmi les 2' mots numériques MR' M mots numériques sélectionnés MRS, en tenant compte de la distance de Hamming minimale égale à un entier s supérieur ou égal à 2 (s représente là encore la distance de Hamming minimale et peut être choisi égal à ou différent de h). Là encore, chaque mot numérique sélectionné MRS, diffère de tous les autres mots numériques sélectionnés d'un nombre de bits au moins égal à s. On élabore ensuite (étape 112) des mots d'adresses. Plus précisément, on suppose dans cet exemple que c'est le bloc d'adresses n°4 (dont tous les mots d'adresses ont comme m2 bits de poids fort le mot numérique sélectionné MNS4) qui comporte M sous-blocs d'adresses. Dans ce cas, les mots d'adresses MADR1, affectés au premier sous-bloc d'adresses comportent, en ce qui concerne ces r bits suivant les m2 bits de poids forts, le mot numérique sélectionné MRS1. Les n2-m2- r bits restants permettent de définir plusieurs mots d'adresses MADR1, permettant d'affecter individuellement les périphériques du sous-ensemble correspondant de périphériques. De même, tous les mots d'adresses MADRM, ont comme m2 bits de poids fort, les m2 bits du mot numérique sélectionné MNS4 puis comme r bits suivants, les r bits du mot numérique sélectionné MRSM. Ces mots d'adresses affectés aux M sous-blocs d'adresses (étape 113) sont ensuite associés aux M sous-ensembles de périphériques. La sélection des différents mots numériques et leur répartition au sein d'au moins un groupe peut s'effectuer en utilisant le même algorithme que celui décrit en référence à la figure 7. Dans l'exemple décrit, et comme illustré sur la figure 12, le pointeur d'adresses PTR de 32 bits comporte donc 5 bits de poids fort permettant de différencier 4 blocs d'adresses avec une distance de Hamming minimale égale à 3 et, à l'intérieur d'un bloc d'adresses, de différencier au moins 2048 sous-blocs d'adresses sur 17 bits avec une distance de Hamming au moins égale à 4. Les 10 bits restants permettent l'adressage individuel des périphériques par exemple. REVENDICATIONS1. Procédé de sécurisation d'un système informatique comportant une unité de traitement, le procédé comprenant une génération (30) d'un jeu de M1 mots numériques (MN,) de ml bits, une sélection (31) parmi ledit jeu de M1 mots numériques d'au moins un groupe de N1 mots numériques de ml bits, avec N1 inférieur à Ml, de sorte que chaque mot numérique sélectionné (MNS,) diffère de tous les autres mots numériques sélectionnés d'un nombre de bits au moins égal à un entier p au moins égal à 2, ledit groupe de N1 mots numériques de ml bits formant au moins un groupe de N1 instructions numériques exécutables, et une configuration de ladite unité de traitement pour la rendre capable d'exécuter chaque instruction dudit au moins un groupe de N1 instructions numériques exécutables. 2. Procédé selon la revendication 1, dans lequel N1 est égal à 2'1 et M1 est égal à 2m', avec ml supérieur à nl. 3. Procédé selon la revendication 1 ou 2, dans lequel les autres mots numériques sont des instructions invalides (INSIV,). 4. Procédé selon la revendication lou 2, dans lequel le jeu d'instructions exécutables comprend plusieurs groupes d'instructions numériques, les instructions numériques d'un même groupe satisfaisant à un critère de similarité, les critères de similarité respectivement associés aux groupes étant tous mutuellement différents, et ladite sélection comprend une sélection (51) parmi le jeu de M1 mots numériques de plusieurs groupes (GR1,...GRg) de mots numériques de sorte que chaque mot sélectionné d'un groupe diffère de tous les autres mots sélectionnés du groupe d'un nombre de bits au moins égal à p, les groupes de mots numériques formant lesdits groupes d'instructions numériques, le procédé comprenant une configuration de ladite unité de traitement pour la rendre capable d'exécuter chaque instruction desdits groupes d'instructions numériques. 5. Procédé selon la revendication 4, dans lequel une instruction numérique (MNS21) d'au moins un rang d'un groupe peut différer d'unseul bit de l'instruction numérique (MNS31) de même rang ou d'un rang différent d'un autre groupe. 6. Procédé selon la revendication 4 ou 5, les mots numériques n'appartenant à aucun groupe sont des instructions invalides (INSIV,). 7. Procédé selon l'une des revendications précédentes, comprenant en outre un stockage dans des moyens de mémoire programme (MMP) du système informatique d'instructions numériques de programme définissant un programme à exécuter par l'unité de traitement et appartenant audit jeu d'instructions exécutables. 8. Procédé d'élaboration d'un schéma d'adressage sécurisé au sein d'un système informatique, ledit schéma étant organisé par blocs d'adresses et comportant N2 blocs d'adresses, les mots d'adresses possédant n2 bits, le procédé comprenant une génération (80) d'un jeu de 2m2 mots numériques (MN,) de m2 bits, m2 étant inférieur à n2 et supérieur ou égal à 2, une sélection (81) parmi ledit jeu de 2m2 mots numériques de N2 mots numériques de m2 bits de sorte que chaque mot numérique sélectionné (MNS,) diffère de tous les autres mots numériques sélectionnés d'un nombre de bits au moins égal à un entier h supérieur ou égal à 2, et une affectation (83) aux N2 blocs d'adresses de mots d'adresses dont les m2 bits de poids forts sont respectivement les m2 bits des N2 mots numériques sélectionnés. 9. Procédé selon la revendication 8, comprenant en outre pour l'un au moins des blocs d'adresses possédant M sous-blocs d'adresses, une génération (110) d'un jeu de 2' mots numériques de r bits, r étant inférieur ou égal à n2-m2 et supérieur ou égal à 2, une sélection (111) parmi ledit jeu de 2r mots numériques de M mots numériques de sorte que chaque mot numérique sélectionné diffère de tous les autres mots numériques sélectionnés d'un nombre de bits au moins égal à un entier s supérieur ou égal à 2, et une affectation (113) audit l'un au moins des blocs d'adresses de mots d'adresse dont les r bits suivant les m2 bits de poids forts sont respectivement les r bits des M mots numériques sélectionnés. 10. Unité de traitement, destinée à être incorporée dans un système informatique, ladite unité de traitement comprenant desmoyens de traitement configurés pour être capables d'exécuter chaque instruction d'un jeu d'instructions numériques exécutables de ml bits comportant au moins un groupe de N1 mots numériques de ml bits (MNS,) avec 2m1 supérieur à N1, chaque mot numérique différant de tous les autres mots numériques dudit groupe d'un nombre de bits au moins égal à un entier p au moins égal à 2. 11. Unité de traitement selon la revendication 10, dans laquelle N1 est égal à 21'' avec ml supérieur à nl. 12. Unité de traitement selon la revendication 10 ou 11, dans laquelle, en présence d'un autre mot numérique (INSIV,) que ceux dudit au moins un groupe, les moyens de traitement sont configurés pour effectuer un traitement spécifique d'invalidité. 13. Unité de traitement selon la revendication 10 ou 11, dans laquelle les moyens de traitement sont configurés pour exécuter chaque instruction d'un jeu d'instructions numériques exécutables de ml bits comportant plusieurs groupes (GR1, ...GRg) de mots numériques de ml bits, chaque mot numérique d'un groupe différant de tous les autres mots numériques dudit groupe d'un nombre de bits au moins égal à 2, les instructions numériques d'un même groupe satisfaisant à un critère de similarité, les critères de similarité respectivement associés aux groupes étant tous mutuellement différents. 14. Unité de traitement selon la revendication 13, dans laquelle une instruction numérique (MNS21) d'au moins un rang d'un groupe peut différer d'un seul bit de l'instruction numérique (MNS31) de même rang ou d'un rang différent d'un autre groupe. 15. Unité de traitement selon la revendication 13 ou 14, dans laquelle, en présence d'un mot numérique (INSIV,) n'appartenant à aucun groupe, les moyens de traitement sont configurés pour effectuer un traitement spécifique d'invalidité. 16. Unité de traitement selon l'une des revendications 10 à 15, formant un microprocesseur ou un microcontrôleur. 17. Système informatique comprenant une unité de traitement (UT) selon l'une des revendications 10 à 16 et des moyens de mémoireprogramme (MMP) destinés à stocker des instructions numériques de programme définissant un programme à exécuter par l'unité de traitement et appartenant audit jeu d'instructions exécutables. 18. Système informatique comprenant une unité de traitement (UT) et des éléments (MM1,...MM3, PH1, PH2, PH3) adressables par des mots d'adresse de n2 bits appartenant à un schéma d'adressage par blocs d'adresses comportant N2 blocs d'adresses, caractérisé en ce que les mots d'adresses (MADE, MADNJ) affectés aux N2 blocs d'adresses comportent chacun un premier groupe de m2 bits de poids forts (MNS1, ...MNSN), m2 étant inférieur à n2 et supérieur ou égal à 2, chaque premier groupe d'un mot d'adresse affecté à l'un des N2 blocs différant de tous les N2-1 autres premiers groupes des autres mots d'adresse affectés aux N2-1 autres blocs d'un nombre de bits au moins égal à un entier h supérieur ou égal à 2. 19. Système selon la revendication 18, dans lequel N2 éléments associés aux N2 blocs d'adresses comportent des éléments choisis parmi des mémoires (MM1-MM3) et un ensemble de périphériques (PH1-PH3). 20. Système selon la revendication 18 ou 19, dans lequel l'un au moins des blocs d'adresses possède M sous-blocs d'adresses, et les mots d'adresses (MADR1J-MADRNJ) affectés audit l'un au moins des blocs d'adresses comportent chacun, à la suite du premier groupe de m2 bits de poids fort, un deuxième groupe de r bits (MRS1,...MRSM), r étant inférieur ou égal à n2-m2 et supérieur ou égal à 2, chaque deuxième groupe d'un mot d'adresse affecté à l'un des M sous-blocs d'adresses différant de tous les M-1 autres deuxièmes groupes des autres mots d'adresses aux M-1 autres sous-blocs d'un nombre de bits au moins égal à un entier s supérieur ou égal à 2. 21. Système selon les revendications 19 et 20, dans lequel l'élément associé audit l'un au moins des blocs est un ensemble de périphériques (PH1-PH3) et les M éléments associés aux M sous-blocs d'adresses sont M types particuliers de périphériques. 22. Système selon l'une des revendications 18 à 21, dans lequel l'unité de traitement (UT) comprend un microcontrôleur ou un microprocesseur. 23. Système selon la revendication 22, dans lequel l'unité de traitement est une unité de traitement selon l'une des revendications à 16. 24. Circuit intégré, incorporant une unité de traitement selon l'une des revendications 10 à 16 ou un système selon l'une des revendications 17 à 23. 10 25. Carte à puce incorporant un circuit intégré selon la revendication 24.