FR3007552A1 - Procede securise de comparaison de deux operandes et dispositif correspondant - Google Patents

Procede securise de comparaison de deux operandes et dispositif correspondant Download PDF

Info

Publication number
FR3007552A1
FR3007552A1 FR1355992A FR1355992A FR3007552A1 FR 3007552 A1 FR3007552 A1 FR 3007552A1 FR 1355992 A FR1355992 A FR 1355992A FR 1355992 A FR1355992 A FR 1355992A FR 3007552 A1 FR3007552 A1 FR 3007552A1
Authority
FR
France
Prior art keywords
bits
words
comparison
bit
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR1355992A
Other languages
English (en)
Other versions
FR3007552B1 (fr
Inventor
Pierre Guillemin
Yannick Teglia
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
STMicroelectronics Rousset SAS
Original Assignee
STMicroelectronics Rousset SAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by STMicroelectronics Rousset SAS filed Critical STMicroelectronics Rousset SAS
Priority to FR1355992A priority Critical patent/FR3007552B1/fr
Priority to US14/303,284 priority patent/US9501277B2/en
Publication of FR3007552A1 publication Critical patent/FR3007552A1/fr
Application granted granted Critical
Publication of FR3007552B1 publication Critical patent/FR3007552B1/fr
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/02Comparing digital values
    • G06F7/026Magnitude comparison, i.e. determining the relative order of operands based on their numerical value, e.g. window comparator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7219Countermeasures against side channel or fault attacks
    • G06F2207/7271Fault verification, e.g. comparing two values which should be the same, unless a computational fault occurred

Abstract

Les deux opérandes initiaux ayant chacun b bits, le procédé comprend un premier traitement de comparaison (100) du premier opérande initial (CA) par rapport au deuxième opérande initial (CB) utilisant au moins un opérateur de comparaison (F32) de façon à obtenir un premier mot de résultat final ayant p bits, p étant inférieur à b, un deuxième traitement de comparaison (200) du deuxième opérande initial par rapport au premier opérande initial utilisant ledit au moins un opérateur de comparaison de façon à obtenir un deuxième mot de résultat final ayant p bits, et un traitement de vérification des valeurs des bits des deux mots de résultats finaux par rapport à une partie au moins de r combinaisons de valeurs de référence prises parmi les 22p combinaisons possibles de valeurs de ces deux mots de résultats finaux, ces r combinaisons de référence, r étant inférieur à 22p, étant représentatives d'un résultat valide de comparaison des deux opérandes incluant une égalité, une relation d'infériorité et une relation de supériorité entre les deux opérandes.

Description

Procédé sécurisé de comparaison de deux opérandes et dispositif correspondant L'invention concerne la comparaison de deux opérandes, notamment mais non exclusivement la comparaison de deux opérandes sensibles tels que ceux pouvant être utilisés dans des algorithmes de cryptage/décryptage mis en oeuvre par exemple dans des dispositifs sécurisés tels que des cartes à puce. Les procédés de comparaison habituellement utilisés prévoient d'effectuer une différence entre les deux opérandes à comparer et de délivrer une information binaire « 0 » ou « 1 » représentative d'une égalité ou d'une non égalité entre les deux opérandes.
Il existe cependant un besoin dans certaines applications cryptographiques, de pouvoir effectuer une comparaison sécurisée de deux opérandes qui puisse indiquer si les deux opérandes sont égaux ou si l'un est supérieur ou inférieur à l'autre. Selon un mode de mise en oeuvre, il est donc proposé un procédé permettant de fournir une indication de comparaison incluant une relation d'égalité, d'infériorité relative ou de supériorité relative des deux opérandes. Parmi les attaques qui peuvent être perpétrées par un attaquant souhaitant découvrir des données sensibles mises en oeuvre dans un algorithme cryptographique, on peut citer les attaques par injection de fautes qui consistent à tenter de modifier, par exemple au moyen d'un faisceau laser, des bits contenus par exemple dans un registre et à en observer les conséquences sur le déroulement du procédé cryptographique et/ou des données intermédiaires et/ou de sortie de façon à essayer d'obtenir des informations sur des données sensibles, par exemple des clés. Et, selon un mode de mise en oeuvre, il est également proposé un procédé de comparaison de deux opérandes qui présente une bonne robustesse vis-à-vis de ces attaques par injection de fautes.
Selon un mode de mise en oeuvre, il est encore proposé un procédé de comparaison de deux opérandes qui est mis en oeuvre de façon temporellement uniforme, c'est-à-dire qui opère à temps constant avec des étapes similaires quel que soit le résultat de la comparaison, quelles que soient les valeurs des opérandes et que la comparaison soit valide ou considérée comme non valide. Selon un aspect, il est proposé un procédé sécurisé de comparaison de deux opérandes initiaux ayant chacun b bits, b étant généralement très élevé, par exemple de l'ordre de plusieurs centaines ou de plusieurs milliers. Le procédé selon cet aspect comprend un premier traitement de comparaison du premier opérande initial par rapport au deuxième opérande initial utilisant au moins un opérateur de comparaison, par exemple un opérateur différence, de façon à obtenir un premier mot de résultat final ayant p bits, p étant inférieur à b. A titre d'exemple, p peut être égal à 4. Le procédé comprend également un deuxième traitement de comparaison du deuxième opérande initial par rapport au premier opérande initial utilisant ledit au moins un opérateur de comparaison, de façon à obtenir un deuxième mot de résultat final ayant p bits. Ainsi, à titre d'exemple, le premier traitement de comparaison peut effectuer une différence A-B où A et B désignent les deux opérandes initiaux tandis que le deuxième traitement de comparaison effectue la différence B-A.
Parmi les 22P combinaisons possibles de valeurs de ces deux mots de résultat finaux, seules r combinaisons de valeurs, dénommées « combinaison de valeurs de référence », avec r étant inférieur à 22P, sont représentatives d'un résultat valide de comparaison des deux opérandes qui inclut une égalité, une relation d'infériorité et une relation de supériorité entre les deux opérandes. Ainsi, non seulement les deux traitements de comparaison permettent de déterminer si les deux opérandes sont égaux ou si l'un des opérandes est plus petit que l'autre ou plus grand que l'autre, mais encore ils créent une redondance d'informations qui conduit à des combinaisons de valeurs de référence représentatives d'une comparaison valide et du résultat proprement dit, et à des combinaisons représentatives d'une comparaison non valide. Et le nombre r est généralement supérieur à trois.
Le procédé selon cet aspect comprend également un traitement de vérification des valeurs des bits des deux mots de résultats finaux par rapport à une partie au moins de ces r combinaisons de valeurs de référence. Cette redondance d'informations conduisant à l'obtention de combinaisons de valeurs valides et à d'autres non valides, va contribuer à la robustesse du procédé vis-à-vis des attaques par injection de fautes. Le ou les opérateurs de comparaison utilisés peuvent être tout opérateur permettant d'effectuer une comparaison relative entre deux opérandes. On peut notamment, à titre d'exemple non limitatif, effectuer une différence, une division, ou encore une réduction modulaire. Bien qu'il soit possible de comparer les valeurs des bits des deux mots de résultats finaux par rapport à l'ensemble des r combinaisons de référence, il s'avère, quel que soit l'opérateur de comparaison utilisé, que les r combinaisons de valeurs de référence comprennent en fait des sous-combinaisons de valeurs de référence faisant intervenir certains au moins des 2p bits. Ces bits sont en fait des bits dits « significatifs », les autres bits des combinaisons de valeurs de référence pouvant prendre n'importe quelle autre valeur. Et, le traitement de vérification comporte alors avantageusement une vérification de la présence ou de l'absence de l'une de ces sous-combinaisons de valeurs de référence dans les valeurs des bits des deux mots de résultats finaux.
Cela étant, il est particulièrement avantageux, notamment pour une simplicité de mise en oeuvre du procédé, notamment au sein d'une carte à puce, et pour éviter d'avoir à effectuer un test effectif bit à bit par exemple entre les valeurs des bits des mots de résultats finaux et les sous-combinaisons de valeurs de référence, d'élaborer, à partir de ces sous-combinaisons de valeurs de référence, des adresses de référence d'un moyen de stockage, par exemple une mémoire. Ainsi, selon un mode de mise en oeuvre, chaque adresse de référence comporte : -lorsqu'une sous-combinaison de valeurs de référence ne fait intervenir que q bits (bits significatifs), q étant inférieur à 2p, les q bits de la sous-combinaison de valeurs de référence complétés par 2p-q bits de référence ayant chacune une même valeur de référence, par exemple la valeur 0 (puisque la valeur de ces 2p-q bits non significatifs est sans importance), et -ladite sous-combinaison de valeurs de référence lorsque celle-ci fait intervenir 2p bits. On stocke alors avantageusement dans ledit moyen de mémoire à chacun desdites adresses de référence, une indication représentative de la validité de la comparaison et du résultat de la comparaison. Aussi, selon un mode de mise en oeuvre, le traitement de vérification comprend-il également une transformation des deux mots de résultats finaux en une information d'adresse. Et, d'une façon analogue à la formation des adresses de référence, cette information d'adresse est : -lorsque les mots de résultats finaux contiennent une sous-combinaison de valeurs de référence ne faisant intervenir que q bits, ladite sous-combinaison de valeurs de référence complétée par 2p-q autres bits ayant ladite valeur de référence, par exemple 0, et -ladite sous-combinaison de valeurs de référence lorsque les 2p bits des mots de résultats finaux forment cette sous-combinaison de valeurs de référence. On effectue alors un adressage du moyen de mémoire avec ladite information d'adresse.
Et, lorsque cette information d'adresse correspond effectivement à une adresse de référence, on reçoit en retour l'indication représentative d'une part de la validité de la comparaison, et d'autre part, le résultat de la comparaison (égalité, infériorité ou supériorité).
Bien qu'il soit possible de détecter une comparaison non valide au niveau de la présence de combinaisons de bits non valides, (par exemple des combinaisons 01-01) il est particulièrement avantageux, notamment pour le caractère d'uniformité temporelle de la mise en oeuvre du procédé, d'utiliser l'information d'adresse correspondante. Et, lorsque l'information d'adresse ne correspond pas à une adresse de référence, il y a alors émission d'une indication représentative d'une non-validité de la comparaison. En pratique, notamment lorsque les nombres de bits des opérandes initiaux sont importants, chaque traitement de comparaison utilise, selon un mode de mise en oeuvre, une séquence de plusieurs opérateurs de comparaison, un opérateur de comparaison courant de la séquence opérant sur deux opérandes courants de façon à obtenir deux mots de résultats courants de taille réduite par rapport à la taille des opérandes courants, le premier opérateur de comparaison de la séquence opérant sur les deux opérandes initiaux, le dernier opérateur de comparaison de la séquence fournissant les deux mots de résultats finaux, et les deux opérandes courants étant les deux mots de résultat précédents.
Et, selon un mode de mise en oeuvre, chaque opérateur de comparaison opère sur des paires de mots homologues de leurs deux opérandes correspondants et encode le résultat de la première comparaison relative d'une paire de mots sur un bit formant un bit de l'un des deux mots de résultat correspondants, et encode le résultat de la deuxième comparaison relative de ladite paire de mots sur un bit formant un bit de l'autre des deux mots de résultat correspondants. C'est notamment le cas lorsque chaque opérateur de comparaison est la retenue d'un opérateur différence, la retenue de la différence d'une paire de mots étant encodée sur un bit.
Une adresse de référence peut avantageusement comprendre deux mots d'adresse de référence et les configurations suivantes sont alors possibles, quel que soit le type d'opérateur de comparaison utilisé : -les bits des deux mots d'adresse de référence sont tous égaux, par exemple égaux à 0, -l'un des mots d'adresse de référence ne contient qu'un seul bit dit significatif égal à 1 suivi de bits ayant tous ladite valeur de référence, par exemple 0, tandis que l'autre mot d'adresse de référence ne contient qu'un seul bit dit significatif égal à 0, suivi de bits ayant tous ladite valeur de référence, par exemple 0, -l'un des mots d'adresse de référence ne contient qu'un seul bit dit significatif égal à 1 précédé de bits ayant tous ladite valeur de référence tandis que l'autre mot d'adresse de référence ne contient qu'un seul bit dit significatif égal à 0 précédé de bits ayant tous ladite valeur de référence, -l'un des mots d'adresse de référence ne contient qu'un seul bit significatif égal à 1 précédé d'un ou de plusieurs bits significatifs égaux à 0 et suivis de bits ayant tous la valeur de référence tandis que l'autre mot d'adresse de référence contient des bits significatifs égaux à 0 suivis de bits ayant tous ladite valeur de référence. Mais, quelles que soient les configurations, les bits significatifs sont des bits de même rang dans les deux mots d'adresse de référence. Selon un mode de mise en oeuvre, la transformation des deux mots de résultats finaux dans l'information d'adresse peut être particulièrement simple. Plus précisément, elle comprend une détection dans chacun des mots de résultats finaux de la présence ou de l'absence d'un bit égal à 1 et, en présence d'un bit égal à 1 dans un seul des mots de résultats finaux, un remplacement dans ce mot de résultat final, des bits suivant le bit égal à 1 par des bits ayant ladite valeur de référence et un remplacement des bits homologues de l'autre mot de résultat final par des bits ayant ladite valeur de référence, de façon à former deux mots d'adresse. Par contre, en présence de bits égaux dans les deux mots de résultats finaux, on ne modifie par alors les mots de résultats finaux, ceux-ci formant alors directement les deux mots d'adresse.
Lorsqu'on détecte dans chacun des mots de résultats finaux la présence ou l'absence d'un bit égal à 1 (ce qui correspond en fait à une comparaison non valide), on transforme alors également les deux mots de résultats finaux en une information d'adresse en remplaçant dans chaque mot de résultat final les bits suivant le bit égal à 1 par des bits ayant ladite valeur de référence. Ceci conduit donc dans ce cas à avoir une information d'adresse formée de deux mots d'adresse qui va être aiguillée vers un endroit de la mémoire dans laquelle est stockée une indication représentative d'une non-validité de la comparaison. Selon un autre aspect, il est proposé un circuit intégré comprenant des moyens de traitement configurés pour mettre en oeuvre le procédé tel que défini ci-avant. Un dispositif, par exemple une carte à puce, peut incorpore un tel circuit intégré.
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 à 11 illustrent schématiquement des modes de mise en oeuvre du procédé selon l'invention, et - La figure 12 illustre schématiquement un mode de réalisation d'un dispositif incorporant un circuit intégré selon l' invention. Sur la figure 1, la référence CA désigne un premier opérande initial et la référence CB désigne un deuxième opérande initial. Le premier opérande CA comporte ici n mots CA' avec i variant de 1 à n, n étant par exemple égal à 32. Chaque mot CA' comporte m bits, par exemple 32 bits La structure de l'opérande CB est analogue à la structure de l'opérande CA c'est-à-dire qu'il comporte n mots CB' de m bits chacun. Il va maintenant être décrit différents modes de mise en oeuvre d'un procédé permettant d'effectuer une comparaison sécurisée entre ces deux opérandes initiaux.
Comme illustré sur la figure 1, on effectue sur chaque paire de mots homologues CA', CUI/ un premier traitement élémentaire de comparaison 100 à l'aide d'un opérateur de comparaison F32 permettant de comparer CB par rapport à CA.
On effectue également sur chaque paire de mots homologue des deux opérandes un deuxième traitement élémentaire de comparaison 101, avec le même opérateur de comparaison F32 de façon cette fois-ci à comparer l'opérande CA par rapport à l'opérande CB. Le traitement élémentaire de comparaison 100 permet d'obtenir un premier mot de résultat intermédiaire 1RA ayant ici n bits tandis que le deuxième traitement élémentaire 101 permet d'obtenir un deuxième mot de résultat intermédiaire 1RB ayant également n bits. Comme illustré sur la figure 2, l'opérateur F32 est un opérateur qui opère sur les m (m=32) bits de chaque mot des deux opérandes et qui est en fait la retenue c de la différence entre deux mots homologues des deux opérandes. Plus précisément, pour chaque paire de mots homologues le traitement élémentaire de comparaison 100 calcule la retenue de la différence CB'-CA' tandis que le traitement élémentaire de comparaison 101 calcule la retenue de la différence CA'-CB'. Cette retenue, obtenue par le traitement élémentaire 100 forme le bit 1RA1 du mot intermédiaire 1RA et la retenue issue du traitement élémentaire de comparaison 101 forme le bit 1RB' du mot intermédiaire de résultat 1RB.
Par ailleurs, on choisit ici de coder la retenue sur un bit qui, en ce qui concerne le bit 1RA1, est égale à 1 si CA' est supérieur à CB', et à 0 si CA' est inférieur à CB' OU si ces deux mots sont égaux. En ce qui concerne le bit 1RB', il est égal à 1 si CA est inférieur à CB' et égal à 0 si CA' est supérieur à CB' OU si ces deux mots sont égaux. On voit donc que le résultat intermédiaire de la comparaison de deux mots homologues des deux opérandes est ici codé sur deux bits et parmi les quatre combinaisons possibles, seules trois sont valides et représentatives du résultat de la comparaison, tandis que la quatrième, en l'espèce la combinaison « 11 », représente une comparaison non-valide. Les deux traitements de comparaison relative des deux opérandes initiaux se poursuivent (figure 3) en considérant cette fois- ci les deux mots de résultat intermédiaires 1RA et 1RB comme des opérandes. Ces deux nouveaux opérandes ont cette fois-ci bits chacun (n=32 ici). Et, d'une façon analogue à ce qui a été décrit en référence à la figure 1 et à la figure 2, chaque opérande 1RA et 1RB peut être décomposé en plusieurs mots, ici quatre octets. Et, on applique sur les octets homologues de deux opérandes le même opérateur que celui utilisé à la figure 1 mais opérant cette fois-ci sur huit bits, au cours de deux nouveaux traitements élémentaires 200 et 201 de façon à obtenir deux nouveaux mots de résultat 2RA et 2RB comportant chacun p bits (ici p=4). La codification des bits 2RA' du mot de résultat 2RA et des bits 2RB' du mot de résultat 2RB sont illustrés sur la figure 4 et est analogue à ce qui a été décrit en référence à la figure 2. En fonction notamment de la taille des opérandes initiaux, il peut être envisagé de poursuivre cette dichotomie et de continuer à appliquer des opérateurs de comparaison sur des tailles d'opérandes de plus en plus réduites. Cela étant, dans l'exemple décrit ici, on suppose que les deux mots de résultat 2RA et 2RB sont des mots de résultat finaux comprenant chacun p bits (ici p=4). Comme on l'a vu précédemment, certaines combinaisons de bits ne sont pas représentatives d'une comparaison valide. Ainsi au final, parmi les 22P combinaisons de valeurs possibles définies par les 2p bits des deux mots de résultat finaux 2RA et 2RB, seules r combinaisons, avec r inférieur à 22P, sont représentatives d'une comparaison valide. Ainsi, comme illustré sur la figure 5, il est prévu d'une façon générale, de vérifier (étape 50) les valeurs des bits des deux mots de résultat finaux 2RA et 2RB par rapport aux r combinaisons de valeurs valides CMBR. Et, dans le cas où l'on retrouve parmi ces 2p bits des deux mots de résultat finaux, l'une de ces combinaisons de référence, alors on délivre une indication IdVj (étape 51, branche « oui ») indiquant d'une part que la comparaison est une comparaison valide et fournissant d'autre part le résultat de la comparaison. Si par contre (étape 51, branche « non ») on ne retrouve aucune des combinaisons de référence dans les bits des deux mots de résultat finaux, alors on délivre une indication IdnV indiquant que la comparaison est non-valide. Cela étant, il s'avère, quel que soit l'opérateur de comparaison utilisé, que les combinaisons de valeurs de référence CMBR présentent des sous-combinaisons de valeurs SCMBR qui sont communes à certaines de ces combinaisons de référence. Certaines de ces sous- combinaisons de valeurs de référence SCMBR ne font ainsi intervenir que q bits, q étant inférieur à 2p. Aussi, il peut être prévu, dans un mode de mise en oeuvre illustré sur la figure 6, de n'effectuer la vérification des valeurs des 2p bits des deux mots de résultat finaux 2RA et 2RB que par rapport à ces sous-combinaisons de valeurs de référence SCMBR. La figure 7 illustre un exemple de ces sous-combinaisons de valeurs de référence pour deux mots MTA et MTB ayant chacun 4 bits, bal-ba4 et bbl-bb4.
Les combinaisons de valeurs de référence CMBR1, représentatives d'un opérande initial CA plus grand que l'opérande initial CB sont, comme illustré sur la figure 7, toutes les combinaisons de valeurs possédant les bits significatifs ayant les valeurs entourées en tiretés. Les bits non significatifs, marqués d'un X, peuvent prendre n'importe quelle valeur. En conséquence, on voit que l'on peut identifier parmi les combinaisons de référence CMBR1, les quatre sous-combinaisons de valeurs de référence SCMBR1 comportant les bits significatifs entourés en tiretés, c'est-à-dire : bal =1 bb1=0 bal=0 ba2=1 bb1=0 bb2=0 bal=0 ba2=0 ba3=1 bb1=0 bb2=0 bb3=0 bal=0 ba2=0 ba3=0 ba4=1 bb1=0 bb2=0 bb3=0 bb4=0.
De même, les combinaisons de référence CMBR2 sont celles représentatives d'un opérande initial CA inférieur à l'opérande initial CB. Et, là encore, on peut identifier parmi ces combinaisons de valeurs de référence CMBR2 quatre sous-combinaisons de valeurs de référence SCMBR2 comportant les bits significatifs entourés en tiretés, c'est-à- dire : bal =0 bb1=1 bal=0 ba2=0 bb1=0 bb2=1 bal=0 ba2=0 ba3=0 bb1=0 bb2=0 bb3=1 bal=0 ba2=0 ba3=0 ba4=0 bb1=0 bb2=0 bb3=0 bb4=1.
Enfin, une seule combinaison de valeurs de référence CMBR3 est représentative d'un résultat de comparaison valide signifiant une égalité entre les deux opérandes initiaux. Cette combinaison de valeurs de référence est celle pour laquelle tous les bits bal-ba4, bbl-bb4 des deux mots sont égaux, par exemple à 0 compte tenu du codage utilisé.
Et, bien entendu, dans ce cas-là, la combinaison de référence CMBR3 est identique à la sous-combinaison de référence SCMBR3. Au lieu d'utiliser directement les combinaisons de valeurs de référence ou les sous-combinaisons de valeurs de référence pour les comparer bit à bit aux valeurs des mots de résultat finaux, il est particulièrement avantageux, comme illustré sur la figure 8, d'élaborer (étape 80) des adresses de référence ADRF à partir des sous-combinaisons de référence SCMBR1-SCMBR3. Plus précisément, chaque adresse de référence comporte ici deux mots d'adresse de référence MFA et MFB (figure 9).
Et, d'une façon générale, lorsqu'une sous-combinaison de valeurs de référence ne contient que q bits (q étant inférieur à 2p), on complète les bits de la sous-combinaison de référence correspondante par des bits ayant tous une même valeur de référence, en l'espèce la valeur 0.
Ceci est illustré sur la figure 9 sur laquelle les zones entourées par des tiretés correspondent aux sous-combinaisons de valeurs de référence. Il en résulte donc plusieurs configurations possibles pour ces adresses de référence. Plus précisément, soit les bits des deux mots d'adresses sont tous égaux, ici à 0, (mots d'adresse de référence MFA3 et MFB3) et ceci correspond alors à une adresse de référence associée à une égalité entre les deux opérandes initiaux.
Une autre possibilité est que l'un des mots d'adresse de référence (par exemple le mot d'adresse de référence MFA10) ne contienne qu'un seul bit significatif égal à 1 suivi de bits ayant tous ladite valeur de référence (en l'espèce 0) tandis que l'autre mot d'adresse de référence MFB10 ne contient qu'un seul bit significatif égal à 0 suivi de bits ayant tous ladite valeur de référence. Il est également possible que l'un des mots d'adresse de référence MFA13 ne contienne qu'un seul bit significatif égal à 1 précédé de bits significatifs égaux à 0 et que l'autre mot d'adresse de référence MFB13 ne contienne que des bits significatifs égaux à O.
Enfin, il est également possible, comme c'est par exemple le cas pour les mots d'adresse de référence MFAll et MFB11, que l'un des mots d'adresse de référence ne contienne qu'un seul bit significatif égal à 1 précédé d'un ou de plusieurs bits significatifs égaux à 0 et suivis de bits ayant tous ladite valeur de référence tandis que l'autre mot d'adresse de référence contient des bits significatifs égaux à 0 suivis de bits ayant tous ladite valeur de référence. Mais, quoi qu'il en soit, les bits significatifs sont des bits de même rang dans les mots d'adresse de référence. Comme illustré sur la figure 10, les deux mots d'adresse de référence définissent par exemple en langage C, une adresse permettant d'adresser un moyen de mémoire MM contenant pour chacune des adresses de référence, une indication de validité IdVj.
Plus précisément, dans cet exemple, les mots d'adresse de référence MFA1 et MFB1 définissent respectivement les adresses 0x80, 0x40, 0x20 et 0x10. A chacune de ces adresses est stockée l'indication IdV1 qui signifie que le résultat de la comparaison est valide et que l'opérande initial CA est plus grand que l'opérande initial CB. De même, les mots d'adresse MFA2 et MFB2 définissent les quatre adresses en langage C suivantes : 0x08, 0x04, 0x02 et 0x01. A chacune de ces adresses est stockée dans la mémoire MM l'indication IdV2 signifiant que le résultat de la comparaison est valide et que l'opérande initial CA est plus petit que l'opérande initial CB. Enfin, les deux mots d'adresses de référence MFA3 et MFB3 définissent l'adresse 0x00.
A cette adresse est stockée dans la mémoire MM l'indication IdV3 qui signifie que le résultat de la comparaison est valide et qu'il y a égalité entre les deux opérandes initiaux. Bien qu'il soit possible de détecter déjà au niveau des bits une combinaison ou une sous-combinaison de valeurs non-valide, il est toutefois préférable, dans le but d'uniformiser le procédé et de le rendre moins sensible notamment aux attaques temporelles, de prévoir, comme illustré sur la figure 10, de stocker dans la mémoire MM à toutes les autres adresses, l'indication IdnV représentative d'une comparaison non-valide.
Et, de façon à exploiter cet adressage de la mémoire MM dans le traitement de vérification des bits des mots de résultat finaux, il est avantageux, comme illustré sur la figure 11, de transformer (étape 110) les deux mots de résultat finaux 2RA et 2RB en une information d'adresse INFD formée de deux mots d'adresse MDA, MDB. A cet égard, la transformation 110 peut comprendre avantageusement une détection dans chacun des mots de résultat finaux de la présence ou de l'absence d'un bit égal à 1. Et, en présence d'un bit égal à 1 dans un seul des mots de résultat finaux ou bien dans les deux mots de résultat finaux, on remplace dans ce mot de résultat final ou dans les deux mots de résultat finaux, les bits suivant le bit égal à 1 par des bits ayant la valeur de référence, en l'espèce la valeur O. Et on effectue un remplacement des bits homologues de l'autre mot de résultat final par des bits ayant ladite valeur de référence. Bien entendu, en présence de bits égaux (par exemple à 0) dans les deux mots de résultat finaux, on ne modifie pas ces mots de résultat finaux car ceux-ci forment alors déjà les deux mots d'adresse. On adresse ensuite (étape 111) la mémoire MM avec l'information d'adresse INFD et on reçoit en retour (étape 112) soit une indication IdVj avec j valant 1, 2 ou 3, soit l'indication IdnV. On remarque dans cet exemple que les 2p bits (2p=8) des deux mots de résultats finaux permettent de définir 256 combinaisons de valeurs possibles. Cependant, au final, seules neuf combinaisons de valeurs, représentées ici par les neuf adresses de référence sont représentatives d'une comparaison valide et parmi ces neuf combinaisons, quatre sont représentatives d'une relation d'infériorité entre les deux opérandes, quatre autres sont représentatives d'une relation de supériorité et une seule est représentative d'une relation d'égalité entre les deux opérandes initiaux. Ainsi, il n'y a dans cet exemple que 4% de « bonnes valeurs » par rapport au contenu total de la mémoire MM. En conséquence, un attaquant qui essaierait, par injection de faute, de modifier un bit dans l'un des deux opérandes initiaux par exemple, aurait de très fortes chances d'aboutir à une comparaison non-valide. Par ailleurs, on a vu que, au cours du traitement, la valeur de certains bits était sans importance. En conséquence, même si l'attaquant modifie la valeur d'un bit non significatif de l'un des mots de résultats finaux représentatifs d'une comparaison valide, ceci sera sans effet sur le résultat et l'attaquant ne pourra donc rien en déduire. Le procédé qui vient d'être décrit peut être mis en oeuvre au sein de moyens de traitement MT d'un circuit intégré CI d'une carte à puce DIS (figure 12).
Ces moyens de traitement peuvent comprendre un ou des modules logiciels réalisés au sein d'un microcontrôleur et/ou des circuits logiques et des opérateurs (soustracteurs par exemple) associés à des registres.
Les différents mots des opérandes initiaux peuvent être stockés dans le même ordre dans des positions correspondantes des registres. Cela étant, afin de rendre encore plus difficile une attaque, il serait possible de stocker de façon aléatoire les différents mots des opérandes dans les différentes positions des registres. Cependant, même dans ce cas, il convient de comparer deux mots homologues des deux opérandes même si ces deux mots homologues n'occupent pas des positions homologues dans les registres. La gestion du comportement du dispositif en présence d'une indication IdnV (comparaison non valide) dépend des applications.
Ainsi par exemple des moyens de contrôle peuvent en présence d'une telle indication bloquer le fonctionnement du circuit intégré. L'invention n'est pas limitée aux modes de mise en oeuvre et de réalisation qui viennent d'être décrits mais en embrasse toutes les variantes.
Il serait ainsi tout à fait envisageable de changer d'opérateur à chaque étape de dichotomie c'est-à-dire par exemple utiliser tout d'abord un opérateur différence, puis un opérateur division, puis à nouveau un opérateur différence...

Claims (15)

  1. REVENDICATIONS1. Procédé de comparaison sécurisée de deux opérandes initiaux ayant chacun b bits, comprenant un premier traitement de comparaison (100,101) du premier opérande initial (CA) par rapport au deuxième opérande initial (CB) utilisant au moins un opérateur de comparaison (F32) de façon à obtenir un premier mot de résultat final (2RA) ayant p bits, p étant inférieur à b, un deuxième traitement de comparaison (200,201) du deuxième opérande initial par rapport au premier opérande initial utilisant ledit au moins un opérateur de comparaison de façon à obtenir un deuxième mot de résultat final (2RB) ayant p bits, et un traitement de vérification (50) des valeurs des bits des deux mots de résultats finaux par rapport à une partie au moins de r combinaisons de valeurs de référence (CMBR) prises parmi les 22P combinaisons possibles de valeurs de ces deux mots de résultats finaux, ces r combinaisons de référence, r étant inférieur à 22P, étant représentatives d'un résultat valide de comparaison des deux opérandes incluant une égalité, une relation d'infériorité et une relation de supériorité entre les deux opérandes.
  2. 2. Procédé selon la revendication 1, dans lequel les r combinaisons de valeurs de référence (CMBR) comprennent des sous-combinaisons de valeurs de référence (SCMBR) faisant intervenir certains au moins des 2p bits, et ledit traitement de vérification (50) comporte une vérification de la présence ou de l'absence de l'une de ces sous-combinaisons de valeurs de référence dans les valeurs des bits des deux mots de résultats finaux.
  3. 3. Procédé selon la revendication 2, comprenant une élaboration (80) d'adresses de référence (ADRF) d'un moyen de stockage (MM) à partir des sous-combinaisons de valeurs de référence, chaque adresse de référence comportant : lorsqu'une sous-combinaison de valeurs de référence ne fait intervenir que q bits, q étant inférieur à 2p, les q bits de ladite sous-combinaison de valeurs de référence complétés par 2p-q bits de référence ayant chacun une même valeur de référence, et ladite sous-combinaison de valeurs de référence lorsque celle-ci fait intervenir 2p bits, et un stockage dans ledit moyen de mémoire (MM) à chacune desdites adresses de référence d'une indication (IdVj) représentative de la validité de la comparaison et du résultat de la comparaison.
  4. 4. Procédé selon la revendication 3, dans lequel le traitement de vérification comprend une transformation (110) des deux mots de résultats finaux (2RA, 2RB) en une information d'adresse (INFD), cette information d'adresse étant : lorsque les mots de résultats finaux contiennent une sous-combinaison de valeurs de référence ne faisant intervenir que q bits, ladite sous-combinaison de valeurs de référence complétée par 2p-q autres bits ayant ladite valeur de référence, et ladite sous-combinaison de valeurs de référence lorsque les 2p bits des mots de résultats finaux forment cette sous-combinaison de valeurs de référence, et un adressage (111) du moyen de mémoire (MM) avec ladite information d'adresse (INFD).
  5. 5. Procédé selon la revendication 4, comprenant lorsque l'information d'adresse (INFD) ne correspond pas à une adresse de référence, une émission d'une indication (IdnV) représentative d'une non validité de la comparaison.
  6. 6. Procédé selon l'une des revendications précédentes, dans lequel chaque traitement de comparaison (100, 101) utilise une séquence de plusieurs opérateurs de comparaison, un opérateur de comparaison courant de la séquence opérant sur deux opérandes courants de façon à obtenir deux mots de résultats courants de taille réduite par rapport à la taille des opérandes courants, le premier opérateur de comparaison (F32) de la séquence opérant sur les deux opérandes initiaux, le dernier opérateur de comparaison (F8) de la séquence fournissant les deux mots de résultats finaux, et les deux opérandes courants sont les mots de résultats précédents.
  7. 7. Procédé selon l'une des revendications précédentes, dans lequel chaque opérateur de comparaison opère sur des paires de mots homologues (CA', CB1) de leurs deux opérandes correspondants et encode le résultat de la première comparaison d'une paire de mots sur un bit formant un bit (2RA1) de l'un des deux mots de résultats correspondants et encode le résultat de la deuxième comparaison de ladite paire de mots sur un bit formant un bit (2RB ) de l'autre des deux mots de résultats correspondants.
  8. 8. Procédé selon la revendication 7 prise en combinaison avec l'une des revendications 3 à 5, dans lequel une adresse de référence (ADRF) comprend deux mots d'adresse de référence (MFA, MFB), et soit les bits des deux mots d'adresses de référence sont tous égaux, soit l'un des mots d'adresse de référence ne contient qu'un seul bit dit significatif égal à un suivi de bits ayant tous ladite valeur de référence tandis que l'autre mot d'adresse de référence ne contient qu'un seul bit dit significatif égal à zéro suivi de bits ayant tous ladite valeur de référence, soit l'un des mots d'adresse de référence ne contient qu'un seul bit dit significatif égal à un précédé de bits ayant tous ladite valeur de référence tandis que l'autre mot d'adresse de référence ne contient qu'un seul bit dit significatif égal à zéro précédé de bits ayant tous ladite valeur de référence, soit l'un des mots d'adresse de référence ne contient qu'un seul bit significatif égal à un précédé d'un ou plusieurs bits significatifs égaux à zéro et suivi de bits ayant tous ladite valeur de référence tandis que l'autre mot d'adresse de référence contient des bits significatifs égaux à zéro suivi de bits ayant tous ladite valeur de référence, les bits significatifs étant des bits de même rang dans les deux mots d'adresses de référence.
  9. 9. Procédé selon la revendication 8 prise en combinaison avec la revendication 4 ou 5, dans lequel la transformation (110) des deux mots de résultats finaux en information d'adresse (INFD) comprendune détection dans chacun des mots de résultats finaux de la présence ou de l'absence d'un bit égal à un, et au moins en présence d'un bit égal à un dans un seul des mots de résultats finaux, un remplacement dans ce mot de résultat final des bits suivant le bit égal à un par des bits ayant ladite valeur de référence (VR) et un remplacement des bits homologues de l'autre mot de résultat final par des bits ayant ladite valeur de référence, de façon à former deux mots d'adresse, et en présence de bits égaux dans les deux mots de résultats finaux, une non modification des mots de résultats finaux, ceux-ci formant alors les deux mots d'adresse.
  10. 10. Procédé selon la revendication 9, dans lequel la transformation (110) des deux mots de résultats finaux en information d'adresse (INFD) comprend une détection dans chacun des mots de résultats finaux de la présence ou de l'absence d'un bit égal à un, et en présence d'un bit égal à un dans chacun des mots de résultats finaux, un remplacement dans chaque de mot de résultat final des bits suivant le bit égal à un par des bits ayant ladite valeur de référence.
  11. 11. Procédé selon l'une des revendications précédentes, dans lequel chaque opérateur de comparaison comprend un opérateur différence.
  12. 12. Procédé selon les revendications 7 et 11, dans lequel chaque opérateur de comparaison est la retenue d'une différence entre une paire de mots.
  13. 13. Circuit intégré comprenant des moyens de traitement (MT) configurés pour mettre en oeuvre le procédé selon l'une des revendications 1 à 12.
  14. 14. Dispositif incorporant un circuit intégré (CI) selon la revendication 13.
  15. 15. Dispositif selon la revendication 14 formant une carte à puce.
FR1355992A 2013-06-24 2013-06-24 Procede securise de comparaison de deux operandes et dispositif correspondant Expired - Fee Related FR3007552B1 (fr)

Priority Applications (2)

Application Number Priority Date Filing Date Title
FR1355992A FR3007552B1 (fr) 2013-06-24 2013-06-24 Procede securise de comparaison de deux operandes et dispositif correspondant
US14/303,284 US9501277B2 (en) 2013-06-24 2014-06-12 Secured comparison method of two operands and corresponding device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR1355992A FR3007552B1 (fr) 2013-06-24 2013-06-24 Procede securise de comparaison de deux operandes et dispositif correspondant

Publications (2)

Publication Number Publication Date
FR3007552A1 true FR3007552A1 (fr) 2014-12-26
FR3007552B1 FR3007552B1 (fr) 2016-10-28

Family

ID=49713127

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1355992A Expired - Fee Related FR3007552B1 (fr) 2013-06-24 2013-06-24 Procede securise de comparaison de deux operandes et dispositif correspondant

Country Status (2)

Country Link
US (1) US9501277B2 (fr)
FR (1) FR3007552B1 (fr)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016181062A1 (fr) * 2015-05-13 2016-11-17 Inside Secure Procede de securisation d'une comparaison de donnees lors de l'execution d'un programme

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3007552B1 (fr) * 2013-06-24 2016-10-28 Stmicroelectronics Rousset Procede securise de comparaison de deux operandes et dispositif correspondant
DE102013108073B4 (de) * 2013-07-29 2019-12-19 Infineon Technologies Ag Datenverarbeitungsanordnung und verfahren zur datenverarbeitung

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4225849A (en) * 1978-05-01 1980-09-30 Fujitsu Limited N-Bit magnitude comparator of free design
US6772187B1 (en) * 2000-06-01 2004-08-03 Sun Microsystems, Inc. Parallel greater than analysis method and apparatus
US20050210093A1 (en) * 2004-03-22 2005-09-22 Arm Limited Data processing apparatus and method for comparing floating point operands

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5931943A (en) * 1997-10-21 1999-08-03 Advanced Micro Devices, Inc. Floating point NaN comparison
US7242414B1 (en) * 1999-07-30 2007-07-10 Mips Technologies, Inc. Processor having a compare extension of an instruction set architecture
US7133890B2 (en) * 2001-05-25 2006-11-07 Sun Microsystems, Inc. Total order comparator unit for comparing values of two floating point operands
FR3007552B1 (fr) * 2013-06-24 2016-10-28 Stmicroelectronics Rousset Procede securise de comparaison de deux operandes et dispositif correspondant

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4225849A (en) * 1978-05-01 1980-09-30 Fujitsu Limited N-Bit magnitude comparator of free design
US6772187B1 (en) * 2000-06-01 2004-08-03 Sun Microsystems, Inc. Parallel greater than analysis method and apparatus
US20050210093A1 (en) * 2004-03-22 2005-09-22 Arm Limited Data processing apparatus and method for comparing floating point operands

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016181062A1 (fr) * 2015-05-13 2016-11-17 Inside Secure Procede de securisation d'une comparaison de donnees lors de l'execution d'un programme
FR3036203A1 (fr) * 2015-05-13 2016-11-18 Inside Secure Procede de securisation d’une comparaison de donnees lors de l’execution d’un programme

Also Published As

Publication number Publication date
US20140379770A1 (en) 2014-12-25
FR3007552B1 (fr) 2016-10-28
US9501277B2 (en) 2016-11-22

Similar Documents

Publication Publication Date Title
EP1570648B1 (fr) Méthode de sécurisation des mises à jour de logiciels
EP2795831B1 (fr) Identification biometrique utilisant des filtres et par calcul multi partiesecurise
EP0402210B1 (fr) Procédé pour vérifier l'intégrité d'un logiciel ou de données, et système pour la mise en oeuvre de ce procédé
CA2735405A1 (fr) Procede de determination d'une pseudo-identite a partir de caracteristiques de minuties et dispositif associe
FR2933216A1 (fr) Procede et systeme de validation d'une succession d'evenements vecus par un dispositif
EP2215768A2 (fr) Procede et dispositifs de protection d'un microcircuit contre des attaques visant a decouvrir une donnee secrete
FR2829331A1 (fr) Procede de securisation d'une quantite secrete
FR3033965A1 (fr)
EP1596283A1 (fr) Protection d'un branchement dans un programme
EP1055203B1 (fr) Protocole de controle d'acces entre une cle et une serrure electronique
FR3018934A1 (fr) Procede d'enrolement de donnees dans une base pour la protection desdites donnees
EP2166696B1 (fr) Protection de l'intégrité de données chiffrées en utilisant un état intermédiare de chiffrement pour générer une signature
FR3031641A1 (fr) Procede d'identification d'une entite
FR3007552A1 (fr) Procede securise de comparaison de deux operandes et dispositif correspondant
EP1122909B1 (fr) Procédé d'exécution d'un protocole cryptographique entre deux entités électroniques.
EP1159797A1 (fr) Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle secrete
FR3004051A1 (fr) Procede et dispositif de tatouage d'une sequence d'images, procede et dispositif d'authentification d'une sequence d'images tatouees et programme d'ordinateur correspondant.
EP2315388B1 (fr) Procédé sécurisé de calcul cryptographique et composant électronique correspondant.
CA2867241C (fr) Procede de cryptage d'une pluralite de donnees en un ensemble securise
EP3470999B1 (fr) Sécurisation d'instructions de branchement conditionnel composé dans un programme informatique en code intermédiaire
Hwang et al. Hologram authentication based on a secure watermarking algorithm using cellular automata
FR2935058A1 (fr) Outil de verification informatique
FR2785477A1 (fr) Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle secrete
Wang et al. A framework for deep neural network multiuser authorization based on channel pruning
EP3545448A1 (fr) Procédé d'insertion de données à la volée dans une base de données tatouées et dispositif associé

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 4

PLFP Fee payment

Year of fee payment: 5

PLFP Fee payment

Year of fee payment: 6

PLFP Fee payment

Year of fee payment: 7

PLFP Fee payment

Year of fee payment: 8

ST Notification of lapse

Effective date: 20220205