Brevet FR2889005A1 — publié le 20070126

INTEGRITE MATERIELLE PERMANENTE DES DONNEES La présente invention se rapporte au domaine de 5 la sécurisation des données dans un composant électronique. La présente invention concerne plus particulièrement un procédé et une architecture pour la protection d'un circuit intégré matériel contre les attaques par fautes. La carte à puce, et de manière plus générale, certains composants électroniques portables, sont bien souvent utilisés comme unité de calcul et de stockage de données secrètes et/ou sensibles dans le but de sécuriser une application. L'identité, la téléphonie mobile, le payement, le transport ou encore le contrôle d'accès sont autant de domaines d'application dans lesquels la carte à puce a un rôle essentiel. Ce rôle consiste, entre autres et de manière non limitative, à une authentification du porteur de la carte et/ou de l'émetteur de la carte. La carte peut également contenir des unités qui peuvent correspondre à des points de fidélité, de l'argent (par exemple les unités téléphoniques) ou encore des tickets de métro selon l'application. La carte représente ainsi, pour certains individus et organisations malveillants, une cible de prédilection afin de frauder ou de porter atteinte à l'image de marque d'une société. La carte fait face depuis son déploiement à des menaces dont l'observation de la consommation de courant (side channel analysis) mais également depuis peu aux attaques par injection de fautes transitoires. La détection de telles attaques est relativement complexe et la réponse à ces attaques difficile à mettre en oeuvre. Les composants électroniques actuels ne garantissent pas un fonctionnement correct quelles que soient les perturbations externes. Il en résulte que le logiciel embarqué dans la carte doit se prémunir par lui-même de défaillances éventuelles du composant engendrées par une injection de faute. L'art antérieur connaît déjà des solutions pour la détection de perturbations, par exemple des glitchs (impulsion de tension) qui seraient susceptibles d'entraîner une faute dans le fonctionnement du composant électronique. Notons l'existence de solutions matérielles qui consistent en intégrer des capteurs environnementaux (de température, de fréquence horloge, de tension d'alimentation, de lumière) qui vont détecter une perturbation (une tension anormalement basse, une intensité lumineuse trop forte) afin de réagir avant de rentrer dans une zone de fonctionnement du composant jugée instable et donc à risques en terme de faute. Ces solutions sont coûteuses car nécessitent le développement de capteurs spécifiques (coût économique) et l'intégration de ceux-ci dans des circuits parfois de petite taille (coût de taille). On connaît également des solutions qui détectent l'effet de la perturbation subie, par exemple par la présence d'un bit de données modifié. On distingue, entre autres, des solutions logicielles ou matérielles de type redondance d'un processus. La redondance consiste de manière simpliste à effectuer deux fois la même opération (calcul, transmission, . ..) afin de comparer le résultat des deux actions. En mode logiciel, la redondance peut être un double calcul sur des données. En mode matériel, cette redondance peut se manifester pas la présence, par exemple, de deux registres dédoublés stockant a priori les mêmes valeurs. Si les résultats sont différents, alors il peut être raisonnablement conclu que l'une des actions s'est mal passée sûrement suite à une perturbation (faute). L'inconvénient de ces solutions réside dans le caractère ponctuel de la protection ou détection fournie et dans la perte de performance due à la répétition d'opérations. La redondance n'offre une garantie que pour l'opération qui est réalisée en double. Egalement, il existe des solutions logicielles ou matérielles de type contrôle d'intégrité. Une donnée stockée en mémoire non volatile se voit ajouté un checksum (somme de contrôle) de la donnée, cette somme permettant de détecter si la donnée est corrompue par une faute avant la vérification du checksum en cas d'incohérence entre la donnée et la somme checksum. L'ajout de données d'intégrité est répandu dans les couches logicielles, par exemple pour la transmission de données. Le checksum en hardware (matériel) tel qu'on le trouve dans l'art antérieur est mis en oeuvre uniquement au niveau d'un bloc mémoire, il prend bien souvent le nom de bit de parité . Le mot machine élémentaire (8 bits sur un composant 8-bit) est stocké sur 9 bits en mémoire, le 9ieme bit étant un bit de parité positionné de sorte que la parité du mot soit systématiquement pair/impair. Lors d'une lecture, la parité est vérifiée et le mot de 8 bits est positionné sur le bus de données. Lors d'une écriture, le mot de 8 bits positionné sur le bus de données est écrit en mémoire et le bit de parité est généré dans le même temps. Le problème est que sur le bus de données, le mot transmit ne comprend pas de données d'intégrité : il n'y a aucun moyen de vérifier que cette valeur, une fois transférée vers la mémoire, l'unité centrale de traitement CPU ou le cache, est encore correcte. Il convient de noter que dans un soucis sécurité optimal, l'idéal serait de pouvoir détecter une faute quelque soit son effet. Ce n'est malheureusement pas possible à un coût raisonnable avec les solutions de l'état de l'art précédemment exposées (redondance, checksum). De façon générale, les solutions de l'art antérieur ne permettent pas un contrôle de l'intégrité en permanence sur les données. En effet, aucune solution n'est proposée pour le contrôle de l'intégrité permanente des données au niveau matériel. Il y a donc un besoin pour la détection systématique de fautes et pour assurer l'intégrité permanente des données lors des manipulations par les éléments matériels. La présente invention entend remédier aux inconvénients de l'art antérieur en proposant un procédé de traitement des données pour la détection de fautes et une architecture matérielle prévue également à cet effet. Le procédé et l'architecture permettent de travailler sur des mots incluant des données d'intégrité de façon systématique; le nombre de bits des mots est supérieur à celui lx des données initiales X afin d'y intégrer en permanence des fonctionnalités d'intégrité Y sur toutes les étapes de traitement hardware. Le procédé selon la présente invention répond particulièrement bien aux besoins pour la détection de fautes puisqu'elle assure l'intégrité des données sur toute la chaîne de traitement et durant toute leur durée de vie tout en maintenant les performances de traitement. Chaque composant matériel est conçu de manière à travailler de manière systématique avec lx + ly bits afin de rendre la détection optimale et systématique. Cela signifie que chaque mot logiciel X est stocké en mémoire dans lx + ly cellules, que le mot logiciel X est transféré d'un module matériel à un autre avec son checksum associé sur un bus de lx + ly lignes. De la sorte, le mot logiciel est protégé quelque soit son type: adresse, data, instruction, opérande, A cet effet, l'invention concerne dans son acception la plus générale un procédé de traitement de données numériques X d'un logiciel codées sur lx bits pour la détection de faute dans un circuit électronique comprenant au moins un bus, une unité de traitement et une mémoire pour l'exécution du logiciel, le procédé comprenant. une étape de transformation des données numériques X en des données numériques Z codées sur lx + ly bits, les ly bits additionnels étant le résultat d'une fonction f d'intégrité appliquée sur lesdites données X; une étape de traitement des données numériques Z par l'ensemble des ressources matérielles du circuit, ces ressources matérielles travaillant sur des mots de lx + ly bits; au moins une étape de vérification de l'intégrité desdites données Z pendant ladite étape de traitement. 30 Dans un mode de réalisation, lesdites données numériques Z consistent en la concaténation des données X avec des données Y d'intégrité résultat de la fonction f d'intégrité appliquée sur les données X: Z = X Y = X f(X). Dans la suite est l'opérateur signifiant la concaténation de deux éléments (X et Y dans ce qui précède) Dans un autre mode de réalisation, ladite fonction f d'intégrité calcule le nombre de bits mis à 1 ou 0 dans lesdites données numériques X. Particulièrement, ladite étape de traitement des données numériques Z est réalisée par une unité de logique et d'arithmétique (ALU) et comprend: une étape de calcul d'une opération OP sur les données X des données Z, une étape de calcul de ladite opération OP sur les bits additionnels d'intégrité desdites données Z, et ladite fonction d'intégrité f est conforme à f (X1 OP X2) = f(X1) OP f (X2) . Dans un mode de réalisation, ladite étape de traitement des données numériques Z est réalisée par une unité de logique et d'arithmétique (ALU) et comprend: une première étape de contrôle de l'intégrité des données Z, une étape suivante de calcul d'une opération OP sur les données X des données numériques Z, une étape de transformation des données numériques résultats de ladite opération OP en des données numériques Z' codées sur lx + ly bits, les ly bits additionnels étant le résultat de la fonction f d'intégrité appliquée sur lesdites données résultats de ladite opération OP. 30 Particulièrement, ladite fonction f est définie par f(X) = X / 1x, où lx est la longueur en bits du mot binaire X. L'invention concerne également une architecture matérielle pour la détection de faute dans un circuit électronique, l'architecture comprenant: des moyens de transformation de données numériques X d'un logiciel codées sur x bits en des données numériques Z codées sur lx + ly bits, les ly bits additionnels étant le résultat d'une fonction f d'intégrité appliquée sur lesdites données X; des ressources matérielles comprenant au moins un bus, une unité de traitement et une mémoire pour le traitement des données numériques Z, l'ensemble desdites ressources matérielles travaillant sur des mots de lx + ly bits; des moyens de vérification de l'intégrité desdites données Z pendant ladite étape de traitement à chaque manipulation des données X. Dans un mode de réalisation, ledit bus comprend au moins un moyen de vérification de l'intégrité desdites 25 données Z transférées par ledit bus. Dans un mode de réalisation particulier, lesdites ressources matérielles comprennent au moins une mémoire qui stocke lesdites données Z sous forme de mots de taille lx + ly bits (taille du mot logiciel + taille du mot de contrôle d'intégrité). Dans un mode de réalisation, lesdites ressources matérielles comprennent au moins des registres associés à une unité centrale de traitement CPU, lesdits registres stockant les données Z sous forme de mots de 15 taille lx + ly bits, et ladite CPU réalisant séparément des opérations sur lesdites données X et les bits additionnels d'intégrité Y. Particulièrement, lesdites ressources matérielles comprennent au moins une unité de logique et d'arithmétique (ALU) calculant une opération OP séparément sur lesdites données X des données Z et sur les bits additionnels d'intégrité des données Z, et en ce que ladite fonction d'intégrité f est conforme à f (X1 OP X2) = f(X1) OP f(X2). Eventuellement, lesdites ressources matérielles comprennent au moins une unité de logique et d'arithmétique (ALU), ladite ALU: comprenant des moyens de vérification de l'intégrité desdites données Z, calculant une opération OP sur les données X des données Z, et transformant les données numériques résultats de ladite opération OP en des données numériques Z' codées sur lx + ly bits, les ly bits additionnels étant le résultat de la fonction f d'intégrité appliquée sur lesdites données résultats de ladite opération OP. Dans un mode de réalisation, ladite fonction f d'intégrité calcule le nombre de bits mis à 1 ou 0 dans ledit mot logiciel X, ou ladite fonction f est définie par f(X) = X / lx, où 1x est la longueur en bits du mot binaire X. L'invention concerne également un composant électronique, par exemple une carte à puce, comprenant l'une des architectures matérielles précédentes. On comprendra mieux l'invention à l'aide de la description, faite ciaprès à titre purement explicatif, d'un mode de réalisation de l'invention, en référence aux figures annexées. la figure 1 représente un schéma global d'un mode de réalisation de l'architecture matérielle selon la présente invention; la figure 2 représente un bloc de contrôle mis en oeuvre dans l'architecture de la figure 1; la figure 3 illustre un mode de réalisation d'une unité de logique et d'arithmétique ALU transparent pour la fonction d'intégrité ; et la figure 4 illustre un mode de réalisation moins sécurisé d'une unité de logique et d'arithmétique ALU dans lequel les informations d'intégrité sont recalculées. Dans la description qui suit, on entend par données toute information numérique qui transite, est exécutée, stockée ou traitée dans le circuit intégré, que ces données soient des variables binaires, des adresses mémoires, des instructions, ... Dans l'invention, toute donnée se voit affectée d'une somme de contrôle (checksum). De même, les termes somme de contrôle , checksum , bits de parité , données/bits d'intégrité ou encore mot de contrôle sont considérés comme synonymes et représentent des données additionnelles d'une donnée, ces données additionnelles étant déterminées en fonction de la donnée, par exemple par une fonction. Ces données d'intégrité permettent de contrôler l'intégrité d'un fichier ou d'un bloc de données et de vérifier avec plus ou moins de précision si des données ont été transmises correctement. Une méthode classique est le CRC 10 15 (Contrôle de Redondance Cyclique - Cyclical Redundancy Check). On entend par mot logiciel la suite binaire représentative d'une donnée utilisée par un logiciel, par exemple une variable, et considérée comme un tout pour un traitement particulier. Un mot logiciel peut avoir une taille de 8, 16 ou 32 bits par exemple. Dans la suite, la lettre X représente ce mot logiciel et lx la taille du mot logiciel. On entend par mot matériel ou mot machine la suite binaire utilisée par les éléments matériels du circuit électronique pour manipuler les mots logiciels lors d'une commande logicielle. Le circuit électronique comprend au moins un bus de données/adresses, une mémoire et une unité de traitement (CPU, ALU, ...) . Les mots machine peuvent avoir la même taille que les mots logiciels mais, dans la présente invention, ils ont une taille supérieure, par exemple 10, 18 ou 36 bits pour des mots logiciels de 8, 16 ou 32 bits respectivement. Les bits additionnels ou overhead sont des bits d'intégrité pour coder un checksum qui peut être un seul bit ou plusieurs bits afin d'augmenter la probabilité de détecter une faute. Dans la suite, la lettre Z désigne le mot matériel et la lettre Y les bits d'intégrité, de telle sorte que Z = X 1 Y; et lz et ly les tailles associées. Les données d'intégrité Y sont calculées à partir du mot logiciel X par une fonction f dite fonction d'intégrité de telle sorte que Y = f(X). Un exemple de fonction d'intégrité f est le nombre de bits à 1 (à 0 ) dans le mot logiciel X. Le mot logiciel X seul est considéré comme n'étant pas protégé car une modification inopportune d'un bit de celui-ci ne peut être détectée. A contrario, dans le mot machine Z = X 1 Y, le mot logiciel X est protégé puisqu'une modification de celui-ci implique une incohérence entre les données d'intégrité Y et le mot X. En référence à la figure 1, un mode de réalisation d'une architecture du circuit électronique d'un composant électronique est proposé. L'architecture matérielle présentée est étendue à des mots matériels comportant des données d'intégrité Y en plus du mot logiciel X. Quelque soit le chemin matériel emprunté ou le stockage, des données d'intégrité sont associées en permanence avec les mots logiciels. Les bus d'adresses et de données sont de taille lx + ly, les mots en mémoire utilisent des cellules mémoires de taille lx + ly, l'unité centrale de traitement (CPU) utilise des registres et des données de taille lx + ly. Des mémoires de stockage de type non volatiles NVM (Non Volatile Memory) ou ROM 10 et 11 stockent des données et des programmes informatiques sous forme de mots machine de lx + ly bits. Ces données sont enregistrées depuis un poste informatique 12 externe après une vérification des données transmises par un bloc de contrôle d'intégrité 13. Le bloc de contrôle 13 vérifie que les données transmises par le poste 12 ne comprennent pas d'incohérence. En référence à la figure 2, un exemple de réalisation d'un bloc de contrôle 13 est proposé. Le bloc de contrôle 13 reçoit en entrée un mot machine composé du mot logiciel X et des données d'intégrité Y. Le bloc de contrôle connaît la fonction d'intégrité f. Il calcule à partir de X et de f la valeur de Y a priori attendue. Cette valeur est ensuite comparée 22 à la valeur de Y reçue en entrée. Le bloc de contrôle 13 transmet alors les données X et Y en sortie si cette comparaison est positive, les données X et Y étant alors considérées comme cohérence l'une avec l'autre. De retour à la figure 1, lors de l'exécution du programme stocké dans la mémoire 11, une instruction, par exemple un bytecode dans le cas d'un langage interprété, est transmise puis mémorisée dans un registre d'instruction 14. La transmission et le stockage sont également réalisés en travaillant sur le mot machine X 1 Y. Puis un décodeur d'instruction 15 interprète l'instruction à partir du ou des mots machines Z contenu(s) dans les registres 14 et transmet les informations à des lignes de commandes après une nouvelle vérification de l'intégrité des données par un bloc de contrôle 13. Des données sous forme de mot machine X 1 Y sont également transmis sur un bus 16 de données/adresses de lx + ly bits. Ainsi le bus de données 16 transporte des données protégées par les informations d'intégrité. Afin de cloisonner chaque structure matérielle fonctionnelle (par exemple la zone mémoire morte, le bus, la mémoire RAM), un bloc de contrôle d'intégrité 13 peut être utilisé pour chaque liaison entre deux structures matérielles fonctionnelles différentes. C'est le cas entre la zone mémoire 10 et le bus de données 16: l'intégrité des données est vérifiée avant transmission sur le bus et/ou à réception depuis le bus. Des périphériques 17 et des mémoires vives de type RAM (Random Access Memory) 18 tous travaillant avec des mots machine de taille 1x + ly font également partie de l'architecture et conversent avec le bus de données 16 via un bus de contrôle d'accès 19 et un bloc de contrôle 13. Des registres généraux 20 sont également disponibles et stockent des données fournies par exemple par une unité centrale de traitement CPU dans des cellules de taille lx + ly. Ces registres 20 alimentent une unité de logique et d'arithmétique ALU 21 en données X 1 Y. Cette ALU 21 travaille sur des mots matériels X 1 Y et réalise des opérations logiques et/ou arithmétiques afin de fournir une donnée également sur lx + ly bits. La figure 3 fournit un exemple de réalisation d'une ALU 21 transparente aux données d'intégrité. On entend par transparente le fait que l'ALU 21 considère les données d'intégrité Y comme des données à part entière indépendamment de leur statut de données d'intégrité. L'unité arithmétique et logique est capable en tout ou partie de traiter des opérations sur X 1 Y afin de ne jamais avoir à recalculer les données d'intégrité Y sur un mot logiciel X non protégé. L'unité ALU 21 reçoit deux mots matériels en entrée: Z1 = X1 Y1 et Z2 = X2 1 Y2, et fournit un mot matériel Z = X 1 Y en sortie. L'ALU 21 réalise une opération OP sur les mots logiciels X1 et X2 conformément à sa fonction propre, fournissant un mot résultat X = X1 OP X2. Les données d'intégrité sont traitées de manière similaire par une opération OP' : Y = Y1 OP' Y2. Il est à noter que pour garantir l'intégrité du mot machine Z en sortie de l'ALU 21, il faut que: f (X1 OP X2) = Y1 OP' Y2 = f(X1) OP' f(X2) On choisit une opération OP identique à OP', par exemple une addition arithmétique. Le choix de la fonction f d'intégrité ne peut alors être libre, il est conditionné par f (X1 OP X2) = f(X1) OP f(X2) Par exemple, si OP est une addition arithmétique, on peut choisir f(X) = IX/81: si X est une valeur sur 8 bits, Y est une valeur sur 5 bits (donc Z est sur 13 bits). De façon générale, on peut choisir comme exemple de fonction f: f(X) = X/lx où lx est le nombre de bits (longueur) du mot X. Dans un tel mode de réalisation, les opérations sur les mots logiciels Xi et sur les données d'intégrité Yi sont réalisées en parallèle. Ainsi le circuit final est aussi rapide que dans une version où les données ne sont pas protégées par des informations d'intégrité. Par contre, la réalisation matérielle de l'unité ALU 21 (tout comme l'ensemble des éléments matériels) nécessite une plus grande quantité de silicium (proportionnelle au rapport entre X et Y) pour des performances équivalentes. En référence à la figure 4, un autre mode de réalisation de l'unité ALU 21 est proposé. L'intégrité des données Z1 et Z2 en entrée est vérifiée par deux blocs de contrôle 13. Seuls les mots logiciels X1 et X2 sont utilisés pour le calcul de X par l'opération OP. Puis un calcul des données d'intégrité Y est réalisé en appliquant la fonction f sur le mot logiciel résultat X. L'unité ALU 21 fournit ainsi un mot matériel X 1 Y complet. Un ensemble de portes matérielles peut permettre d'appliquer la fonction f au mot logiciel pour calculer les informations d'intégrité. Ce mode de réalisation est moins sécurisé car les données d'intégrité en sortie sont recalculées à partir du mot logiciel X résultat de l'opération. On a donc aucun moyen de détecter une erreur durant l'opération OP. L'unité centrale de traitement CPU (non représentée sur la figure 1) fonctionne sur le même principe que l'unité ALU 21. Les registres gérés par la CPU, les données reçues par la CPU ou fournies par la CPU conviennent pour des mots machine de taille lx + ly. Les opérations et instructions sont réalisées par la CPU soit de façon transparent pour assurer une forte protection des données logicielles, soit en recalculant les données d'intégrité en fin de traitement. REVENDICATIONS 1. Procédé de traitement de données numériques X d'un logiciel codées sur lx bits pour la détection de faute dans un circuit électronique comprenant au moins un bus, une unité de traitement et une mémoire pour l'exécution du logiciel, caractérisé en ce qu'il comprend: une étape de transformation des données numériques X en des données numériques Z codées sur lx + ly bits, les ly bits additionnels étant le résultat d'une fonction f d'intégrité appliquée sur lesdites données X; une étape de traitement des données numériques Z par l'ensemble des ressources matérielles du circuit, ces ressources matérielles travaillant sur des mots de 1x + ly bits; au moins une étape de vérification de l'intégrité desdites données Z pendant ladite étape de traitement. 2. Procédé selon la revendication 1, caractérisé en ce que lesdites données numériques Z consistent en la concaténation des données X avec des données Y d'intégrité résultat de la fonction f d'intégrité appliquée sur les données X. 3. Procédé selon la revendication 1, caractérisé en ce que ladite fonction f d'intégrité calcule le nombre de bits mis à 1 ou 0 dans lesdites 30 données numériques X. 4. Procédé selon la revendication 1, caractérisé en ce que ladite étape de traitement des 15 données numériques Z est réalisée par une unité de logique et d'arithmétique (ALU) et comprend: une étape de calcul d'une opération OP sur les données X des données Z, une étape de calcul de ladite opération OP sur les bits additionnels d'intégrité desdites données Z, et ladite fonction d'intégrité f est conforme à f (X1 OP X2) = f(X1) OP f (X2) . 5. Procédé selon la revendication 1, caractérisé en ce que ladite étape de traitement des données numériques Z est réalisée par une unité de logique et d'arithmétique (ALU) et comprend: une première étape de contrôle de l'intégrité des données Z, une étape suivante de calcul d'une opération OP sur les données X des données numériques Z, une étape de transformation des données numériques résultats de ladite opération OP en des données numériques Z' codées sur lx + ly bits, les ly bits additionnels étant le résultat de la fonction f d'intégrité appliquée sur lesdites données résultats de ladite opération OP. 6. Procédé selon la revendication 1, caractérisé en ce que ladite fonction f est définie par f (X) = X / lx, où lx est la longueur en bits du mot binaire X. 7. Architecture matérielle pour la détection de faute dans un circuit électronique, l'architecture comprenant. 20 des moyens de transformation de données numériques X d'un logiciel codées sur lx bits en des données numériques Z codées sur lx + ly bits, les ly bits additionnels étant le résultat d'une fonction f d'intégrité appliquée sur lesdites données X; des ressources matérielles comprenant au moins un bus, une unité de traitement et une mémoire pour le traitement des données numériques Z, l'ensemble desdites ressources matérielles travaillant sur des mots de lx + ly bits; des moyens de vérification de l'intégrité desdites données Z pendant ladite étape de traitement. 8. Architecture selon la revendication 7, caractérisée en ce que ledit bus comprend au moins un moyen de vérification de l'intégrité desdites données Z transférées par ledit bus. 9. Architecture selon la revendication 7, caractérisée en ce que lesdites ressources matérielles comprennent au moins une mémoire qui stocke lesdites données Z sous forme de mots de taille 1x + ly bits. 10. Architecture selon la revendication 7, caractérisée en ce que lesdites ressources matérielles comprennent au moins des registres associés à une unité centrale de traitement CPU, lesdits registres stockant les données Z sous forme de mots de taille 1x + ly bits, et ladite CPU réalisant séparément des opérations sur lesdites données X et les bits additionnels d'intégrité Y. 10 11. Architecture selon la revendication 7, caractérisée en ce que lesdites ressources matérielles comprennent au moins une unité de logique et d'arithmétique (ALU) calculant une opération OP séparément sur lesdites données X des données Z et sur les bits additionnels d'intégrité des données Z, et en ce que ladite fonction d'intégrité f est conforme à f (X1 OP X2) = f(X1) OP f(X2) 12. Architecture selon la revendication 7, 10 caractérisée en ce que lesdites ressources matérielles comprennent au moins une unité de logique et d'arithmétique (ALU), ladite ALU: comprenant des moyens de vérification de l'intégrité desdites données Z, calculant une opération OP sur les données X des données Z, et transformant les données numériques résultats de ladite opération OP en des données numériques Z' codées sur lx + ly bits, les ly bits additionnels étant le résultat de la fonction f d'intégrité appliquée sur lesdites données résultats de ladite opération OP. 13. Architecture selon la revendication 7, caractérisée en ce que ladite fonction f d'intégrité calcule le nombre de bits mis à 1 ou 0 dans ledit mot logiciel X. 14. Architecture selon la revendication 7, 30 caractérisée en ce que ladite fonction f est définie par f(X) = X / 1x, où 1x est la longueur en bits du mot binaire 20 X. 15. Composant électronique comprenant une architecture matérielle selon l'une quelconque des revendications 7 à 14. 16. Carte à puce comprenant une architecture matérielle selon l'une quelconque des revendications 7 à 14.