FR3038473A1 - Procede de traitement cryptographique de donnees et programme d'ordinateur associe - Google Patents

Procede de traitement cryptographique de donnees et programme d'ordinateur associe Download PDF

Info

Publication number
FR3038473A1
FR3038473A1 FR1556175A FR1556175A FR3038473A1 FR 3038473 A1 FR3038473 A1 FR 3038473A1 FR 1556175 A FR1556175 A FR 1556175A FR 1556175 A FR1556175 A FR 1556175A FR 3038473 A1 FR3038473 A1 FR 3038473A1
Authority
FR
France
Prior art keywords
variable
iterations
value
microprocessor
iteration
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
FR1556175A
Other languages
English (en)
Other versions
FR3038473B1 (fr
Inventor
Franck Rondepierre
Christophe Giraud
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.)
Idemia France SAS
Original Assignee
Oberthur Technologies SA
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 Oberthur Technologies SA filed Critical Oberthur Technologies SA
Priority to FR1556175A priority Critical patent/FR3038473B1/fr
Publication of FR3038473A1 publication Critical patent/FR3038473A1/fr
Application granted granted Critical
Publication of FR3038473B1 publication Critical patent/FR3038473B1/fr
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/302Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • H04L2209/046Masking or blinding of operations, operands or results of the operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

Dans un procédé de traitement cryptographique de données, une clé est appliquée à une donnée (m) au moyen d'un algorithme cryptographique comprenant une pluralité d'itérations et utilisant une valeur donnée (m). Chaque itération comprend ou non, en fonction d'au moins un bit (di) de la clé, une étape de mise en œuvre d'une opération arithmétique (E28) impliquant une première variable (T) et une seconde variable (m) mémorisant la valeur donnée (m). Certaines itérations comprennent une étape de perturbation (E22) par combinaison de la première variable (T) avec un élément de perturbation (α.p). Les itérations comprenant ladite étape de perturbation (E22) forment au maximum la moitié de ladite pluralité d'itérations.

Description

Domaine technique auquel se rapporte l'invention
La présente invention concerne le domaine de la cryptographie.
Elle concerne plus particulièrement un procédé de traitement cryptographique de données et un programme d’ordinateur associé. L’invention s’applique particulièrement avantageusement dans le cas où un algorithme cryptographique utilise une exponentiation modulaire réalisée sous forme atomique.
Arriere-plan technologique
On connaît des procédés de traitement cryptographique de données, dans lesquels une clé (par exemple secrète) est appliquée à une donnée (par exemple un message) au moyen d’un algorithme cryptographique.
Un tel algorithme cryptographique est par exemple un algorithme de type RSA : dans ce type d’algorithme cryptographique, la clé comprend un exposant et un module et on applique l’exposant au message par exponentiation modulaire, modulo le module précité.
Pour effectuer un tel calcul en pratique, l’algorithme cryptographique est fréquemment réalisé au moyen d’une pluralité d’itérations et d’une valeur donnée (égale par exemple à la valeur représentant le message).
Dans ce type de solution, on prévoit que chaque itération comprenne ou non, en fonction d’au moins un bit de la clé secrète, une étape de mise en oeuvre d’une opération arithmétique impliquant une première variable et une seconde variable mémorisant la valeur donnée. Dans le cas d’un algorithme cryptographique basé sur une exponentiation modulaire (tel qu’un algorithme de type RSA), cette opération arithmétique est la multiplication.
Il a toutefois été remarqué qu’une attaque, dite attaque horizontale, était possible contre ce type de solution du fait que la même valeur est utilisée dans l’opération arithmétique précisément pour les itérations où le bit de la clé secrète a une certaine valeur (par exemple 1 ).
En effet, la consommation électrique liée à la mise en oeuvre de cette opération (avec la même valeur) étant semblable d’une itération à l’autre, il est possible de détecter des corrélations dans la consommation électrique de certaines itérations et d’en déduire quels bits de l’exposant valent 1.
Afin de rendre impossible l’établissement d’une telle corrélation, il a été proposé que chaque itération comprenne une étape de perturbation par combinaison de la première variable avec un élément de perturbation, comme dans l’article "ROSETTA for Single Trace Analysis - Recovery Of Secret Exponent by Triangular Trace Analysis”, de C. Clavier, B. Feix, G. Gagnerot, C.Giraud, M. Rousselet and V. Verneuil, in Progress in Cryptology - INDOCRYPT 2012, volume 7668 of LNCS, pages 140-155. Springer, 2012.
Objet de l’invention
Dans ce contexte, la présente invention propose un procédé de traitement cryptographique de données, dans lequel une clé est appliquée à une donnée au moyen d’un algorithme cryptographique comprenant une pluralité d’itérations et utilisant une valeur donnée, chaque itération comprenant ou non, en fonction d’au moins un bit de la clé, une étape de mise en œuvre d’une opération arithmétique impliquant une première variable et une seconde variable mémorisant la valeur donnée, dans lequel certaines itérations comprennent une étape de perturbation par combinaison de la première variable avec un élément de perturbation, caractérisé en ce que les itérations comprenant ladite étape de perturbation forment au maximum la moitié de ladite pluralité d’itérations.
La contremesure n’est ainsi appliquée qu’à un nombre limité d’itérations, ce qui diminue son coût calculatoire. En utilisant une étape de perturbation dans une proportion suffisante d’itérations, on empêche toutefois un attaquant de découvrir l’intégralité de la clé par observation d’éventuelles corrélations entre les différentes itérations.
Selon une première possibilité de réalisation (qui correspond au premier exemple décrit plus loin en référence à la figure 2), chaque itération comprend une application, au moyen de l’opération arithmétique, de la première variable à elle-même. Lorsque l’opération arithmétique est une multiplication, ce type de mise en œuvre prévoit donc que la première variable est systématiquement mise au carré (en utilisant toutefois l’opération arithmétique de multiplication) à chaque itération.
Selon une seconde possibilité de réalisation (qui correspond notamment aux second et troisième exemples décrits plus loin, respectivement en référence aux figures 3 et 4), chaque itération comprend sélectivement, en fonction dudit au moins un bit, ladite mise en œuvre de l’opération arithmétique ou une application, au moyen de l’opération arithmétique, de la première variable à elle-même. C’est notamment le cas lorsqu’une exponentiation modulaire est réalisée sous forme atomique, c’est-à-dire en mettant en œuvre précisément une multiplication à chaque itération : c’est alors le second opérande de la multiplication qui varie en fonction dudit au moins un bit (le premier opérande étant ici la première variable). Ce second opérande peut être la première variable (ce qui permet une mise au carré de celle-ci), une autre variable (préalablement initialisée avec ladite valeur donnée, ici la valeur du message reçu), voire une autre variable encore (préalablement initialisée, dans le cas du troisième exemple décrit plus loin en référence à la figure 3, avec le cube de la valeur du message reçu).
En pratique, l’étape de perturbation est par exemple mise en œuvre une unique fois pour un nombre prédéterminé d’itérations (ce nombre prédéterminé étant de manière générale supérieur à 2). En variante, l’étape de perturbation peut être mise en œuvre une unique fois pour un nombre prédéterminé de bits de la clé, ce qui permet également de diminuer la proportion d’itérations comprenant une étape de perturbation.
Quoiqu’il en soit, le nombre prédéterminé précité est typiquement compris entre 2 et 12
Dans le cas vu ci-dessus où la première variable est appliquée à elle-même (en pratique, multipliée par elle-même) à chaque itération, le nombre prédéterminé peut être compris entre 2 et 4.
Dans le cas où une mise en œuvre atomique est utilisée, le nombre prédéterminé peut être compris entre 6 et 12. L’algorithme cryptographique implique par exemple une exponentiation modulaire (comme dans le cas d’un algorithme cryptographique de type RSA) ; l’opération arithmétique peut alors être une multiplication. L’invention propose également un programme d’ordinateur comprenant des instructions exécutables par un processeur et adaptées à mettre en œuvre un procédé tel que présenté ci-dessus lorsque ces instructions sont exécutées par le processeur.
Description detaillee d’un exemple de réalisation
La description qui va suivre en regard des dessins annexés, donnés à titre d’exemples non limitatifs, fera bien comprendre en quoi consiste l’invention et comment elle peut être réalisée.
Sur les dessins annexés : - la figure 1 représente schématiquement les éléments principaux d’une entité électronique au sein de laquelle est mise en œuvre l’invention ; - la figure 2 représente un premier exemple de procédé dans lequel l’entité électronique applique un algorithme cryptographique à un message reçu ; - la figure 3 représente un second exemple de procédé dans lequel l’entité électronique applique un algorithme cryptographique à un message reçu ; et - la figure 4 représente un troisième exemple de procédé dans lequel l’entité électronique applique un algorithme cryptographique à un message reçu.
La figure 1 représente schématiquement les éléments principaux d’une entité électronique 1 au sein de laquelle est mise en œuvre l’invention. Cette entité électronique est par exemple une carte à microcircuit, par exemple une carte à circuit intégré universelle (ou UICC pour "Universal Integrated Circuit Card"). En variante, il pourrait s’agir d’un élément sécurisé (ou SE pour "Secure Elément") -par exemple un microcontrôleur sécurisé, d’un dispositif électronique portatif (ou "hand-held electronic device" selon l’appellation anglo-saxonne) - par exemple un terminal de communication ou un passeport électronique, ou d’un ordinateur. L’entité électronique 1 comprend un microprocesseur 2, une mémoire vive 4 et une mémoire non-volatile réinscriptible 6 (par exemple de type EEPROM pour "Electrically Erasable and Programmable Read-Only Memory"). L’entité électronique 1 pourrait éventuellement comprendre en outre une mémoire morte. La mémoire vive 4 et la mémoire non-volatile réinscriptible 6 (ainsi que le cas échéant la mémoire morte) sont chacune liées au microprocesseur 2 de sorte que le microprocesseur 2 peut lire ou écrire des données dans chacune de ces mémoires.
Une de ces mémoires, par exemple la mémoire non-volatile réinscriptible 6, mémorise des instructions de programme d’ordinateur qui permettent la mise en œuvre de l’un au moins des procédés décrits ci-dessous en référence aux figures 2 à 4 lorsque ces instructions sont exécutées par le microprocesseur 2.
Les mémoires 4, 6 stockent également des données représentatives de valeurs utilisées lors de la mise en œuvre des procédés décrits ci-dessous. Par exemple, la mémoire non-volatile réinscriptible 6 mémorise une clé (par exemple une clé privée ou une clé publique) formée d’un exposant d et d’un module p.
La mémoire non-volatile réinscriptible peut également mémoriser un nombre n définissant, comme expliqué ci-après, la proportion d’itérations pour lesquelles une étape de perturbation est appliquée. En variante, l’application d’une étape de perturbation à certaines itérations seulement pourrait toutefois découler d’une programmation particulière des programmes susmentionnés, sans utilisation d’une variable mémorisée telle que le nombre n mentionné ci-dessus.
La mémoire vive 4 mémorise par ailleurs, par exemple au sein de variables, des données traitées au cours des procédés décrits ci-dessous, notamment, comme expliqué plus bas, un message m et une variable k mémorisant une valeur aléatoire. L’entité électronique 1 comprend en outre une interface de communication 8 avec des dispositifs électroniques externes. Dans le cas décrit ici où l’entité électronique 1 est une carte à microcircuit, l’interface de communication 8 comprend par exemple des contacts affleurant sur une face de la carte à microcircuit. En variante, l’interface de communication 8 pourrait être réalisée par un module de communication sans contact. De manière générale, l’interface de communication 8 peut être un module de communication (filaire ou sans fil) avec une autre entité électronique.
Le microprocesseur 2 peut ainsi recevoir des données (par exemple un message m) de l’autre entité électronique via l’interface de communication 8 et émettre des données, par exemple un résultat d’application d’un algorithme cryptographique au message m, à l’autre entité électronique via l’interface de communication 8.
Dans les exemples qui suivent, l’algorithme cryptographique appliqué est de type RSA et vise donc l’exponentiation modulaire du message m par l’exposant d, en utilisant le module p, soit le calcul de : md mod p.
Un tel algorithme cryptographique peut être un algorithme de chiffrement ou de vérification de signature (la clé formée par l’exposant d et le module p étant alors une clé publique), ou bien un algorithme de déchiffrement ou de signature (la clé formée par l’exposant d et le module p étant alors une clé privée). L’algorithme cryptographique pourrait toutefois être d’un autre type, par exemple un autre algorithme cryptographique basé sur le problème du logarithme discret tel que l’algorithme de signature numérique sur courbe elliptique ECDSA (pour "Elliptic Curve Digital Signature Algorithm"). Dans le cas d’un algorithme cryptographique utilisant une courbe elliptique, l’opération arithmétique concernée est une addition de points de la courbe elliptique (au lieu d’une multiplication modulaire dans l’exemple décrit ci-dessous). On peut également être amené à mettre en œuvre dans ce cas un procédé comprenant, pour chacune d’une pluralité d’itérations, une mise en œuvre de cette opération cryptographique ; un tel procédé est par exemple un procédé de doublement et d’addition (ou "Double and Add' selon l’appellation anglo-saxonne). Un tel procédé peut, comme les procédés décrits ci-dessous, être réalisé sous forme atomique et être l’objet d’attaques horizontales telles que présentées en introduction.
On peut ainsi dans ce cas également appliquer une étape de perturbation à certaines itérations seulement, comme décrit ci-dessous pour un algorithme RSA. Dans le cas d’un algorithme sur courbe elliptique, l’étape de perturbation peut comprendre l’ajout d’une valeur p (comme décrit ci-dessous dans un autre cadre) à chacune des coordonnées du point de la courbe traité (les itérations suivantes étant réalisées sans réduction modulo p) ; en variante et dans le cas d’une représentation en coordonnées projectives, l’étape de perturbation peut comprendre une multiplication par une constante (en jouant sur la classe d’équivalence pour ne pas obtenir d’effet sur le résultat final).
La figure 2 représente, sous forme de logigramme, un premier exemple de procédé conforme aux enseignements de l’invention, dans lequel l’entité électronique 1 applique un algorithme cryptographique à un message reçu m.
Dans cet exemple, l’exposant d comprend I bits et sa décomposition binaire est de la forme (1 ,d|.2,... ,d0), dO étant le bit de poids le plus faible.
Le procédé de la figure 2 débute à l’étape E10 par la réception du message m par l’entité électronique 1 (précisément par le microprocesseur 2), via l’interface de communication 8. L’entité électronique 1 (c’est-à-dire par exemple le microprocesseur 2, ou en variante un crypto-processeur distinct) peut éventuellement alors procéder (étape E12) à la génération d’une valeur aléatoire k (c’est-à-dire précisément à la mémorisation dans une variable k d’un nombre obtenu par tirage aléatoire ou pseudo-aléatoire). En variante, le procédé pourrait se poursuivre directement à l’étape E16 décrite ci-après.
Lorsqu’une valeur aléatoire k est générée à l’étape E12, le message m peut être masqué par ajout à la variable m (qui mémorise le message) d’un nombre k.p égal au produit de la valeur aléatoire k et du module p.
Puisque les étapes qui suivent (ici dans le cadre d’un algorithme de type RSA) effectue des calculs d’arithmétique modulaire modulo p, l’ajout du nombre k.p à l’étape E12 n’aura aucune conséquence sur le résultat de l’algorithme cryptographique ; toutefois, grâce à l’utilisation de la valeur aléatoire k, les nombres manipulés seront différents d’une mise en œuvre de l’algorithme cryptographique à l’autre, ce qui permet de lutter contre certaines attaques par canal auxiliaire (ou SCA pour "Side-Charmel Attacks").
Le procédé se poursuit à l’étape E16 par l’initialisation d’une variable T avec la valeur de la variable m (c’est-à-dire par exemple en pratique en recopiant, dans la variable T, la valeur mémorisée dans la variable m représentative du message reçu, éventuellement masqué par l’étape E14).
Une variable d’indice i est par ailleurs initialisée à l’étape E18 à la valeur I-2 (où I représente comme indiqué ci-dessus le nombre de bits de l’exposant d).
Le procédé de la figure 2 entre alors dans une boucle qui permet de mettre en œuvre une pluralité d’itérations (ici 1-1 itérations), chaque itération correspondant aux étapes E20 à E32 décrites ci-dessous.
Le microprocesseur 2 détermine à l’étape E20 si le nombre prédéterminé n (mentionné plus haut) divise la valeur courante de la variable d’indice i.
En cas de résultat négatif à l’étape E20, le procédé se poursuit directement à l’étape E24.
En cas de résultat positif à l’étape E20 (c’est-à-dire si n divise i), le microprocesseur 2 procède à l’étape E22 en ajoutant à la variable T le module p (ou un multiplie du module p) : la variable T est modifiée en y ajoutant ct.p (avec a un nombre entier non-nul, généralement petit, a ayant typiquement une valeur qui s’écrit en binaire sur 32 bits maximum). L’étape E22 permet de perturber la valeur de la variable T (ici par combinaison avec la valeur de perturbation ot.p au moyen d’une addition) ; cette valeur sera ainsi complètement différente de celle manipulée aux précédentes itérations et un attaquant ne pourra donc pas observer de corrélation entre les différentes itérations. On comprend en effet qu’une étape de perturbation entraîne une modification de la valeur de la variable perturbée, sans incidence toutefois sur le résultat final. L’utilisation du test de l’étape E20 permet toutefois de ne mettre en œuvre cette étape de perturbation que pour une itération sur n itérations, ce qui allège le coût calculatoire de la contremesure. Selon les applications, n peut valoir par exemple 2, 3 ou 4, comme expliqué plus bas.
On remarque par ailleurs (comme déjà indiqué à propos de l’étape E14) que cette perturbation n’aura pas d’effet sur le résultat du calcul puisqu’une réduction modulo p est appliquée (voir ci-dessous l’étape E34) avant émission du résultat.
Dans tous les cas, le procédé se poursuit à l’étape E24 à laquelle le microprocesseur 2 applique à la variable T une multiplication modulaire par elle-même. Cette opération permet une mise au carré (modulaire) de la variable T ; on utilise toutefois une opération de multiplication afin de rendre plus difficile pour un attaquant la distinction entre la présente étape E24 et l’étape E28 décrite plus bas.
On remarque par aillleurs que la multiplication modulaire de l’étape E24 est réalisée modulo β.ρ, avec β un entier supérieur à a, de manière à ne pas annuler l’effet de la perturbation de l’étape E22. En variante, on pourrait utiliser (à la place de la réduction modulo β.ρ) une réduction modulo p partielle (le résultat y de l’application d’une telle réduction modulo p partielle et le résultat x de l’application d’une réduction modulo p vérifiant : x = q.p + y avec p<y<M, où q est un entier et M est une borne supérieure, par exemple une puissance de 2).
Le microprocesseur 2 détermine alors à l’étape E26 si le bit dj d’indice i de l’exposant d vaut 1.
En cas de résultat négatif à l’étape E26 (c’est-à-dire si dj=0), le microprocesseur 2 mémorise dans une variable leurre S le résultat de l’application d’une multiplication modulaire (réalisée modulo β.ρ) de la variable T par la variable m (étape E29). Cette étape permet de simuler pour un attaquant l’étape E28 décrite ci-dessous. Le procédé se poursuit ensuite à l’étape E30.
En cas de résultat positif à l’étape E26 (c’est-à-dire si di=1), le procédé se poursuit à l’étape E28, à laquelle le microprocesseur 2 applique à la variable T une multiplication modulaire par la variable m. Comme indiqué pour l’étape E24, cette multiplication modulaire est réalisée modulo β.ρ.
Dans les deux cas, le procédé se poursuit à l’étape E30, à laquelle le microprocesseur 2 décrémente d’une unité la variable d’indice i.
Le microprocesseur 2 détermine alors à l’étape E32 si l’indice i est positif (ou nul).
En cas de résultat positif à l’étape E32, le procédé boucle à l’étape E20 pour mise en œuvre d’une nouvelle itération.
En cas de résultat négatif à l’étape E32, le procédé se poursuit à l’étape E34, à laquelle le microprocesseur 2 applique à la variable T une réduction modulaire modulo le module p.
La variable T contient ainsi la valeur recherchée, à savoir md mod p.
Le microprocesseur 2 émet donc à l’étape E36 la variable T via l’interface de communication 8, en tant que résultat de l’application, au message reçu à l’étape E10, de l’algorithme cryptographique.
Grâce à la mise en œuvre d’une étape de perturbation (étape E22 décrite ci-dessus) toutes les n itérations (n pouvant valoir par exemple 2, 3 ou 4), un attaquant ne pourra pas découvrir tous les bits de l’exposant d au moyen d’une attaque horizontale, mais une partie seulement de ces bits, ce qui est suffisant pour garantir un niveau correct de sécurité dans certaines applications. On pourra se référer à ce propos à l’article "An Attack on RSA Given a Small Fraction of the Private Key Bits" de D. Boneh, G. Durfee et Y. Frankel, ASIACRYPT’98, LNCS 1514, pp. 25-34, 1998.
La figure 3 représente, sous forme de logigramme, un second exemple de procédé conforme aux enseignements de l’invention, dans lequel l’entité électronique 1 applique un algorithme cryptographique à un message reçu m.
Dans cet exemple, l’exposant d comprend I bits et sa décomposition binaire est de la forme (1 ,d|.2,... ,d0), comme pour l’exemple de la figure 2.
Le procédé de la figure 3 débute à l’étape E40 par la réception du message m par l’entité électronique 1 (précisément par le microprocesseur 2), via l’interface de communication 8. L’entité électronique 1 (c’est-à-dire par exemple le microprocesseur 2) peut éventuellement alors procéder à l’étape E42 à la génération d’une valeur aléatoire k.
Le message reçu à l’étape E40 peut ainsi être masqué par ajout à la variable m (qui mémorise ce message) d’un nombre k.p égal au produit de la valeur aléatoire k et du module p.
Comme déjà expliqué plus haut, puisque l’algorithme cryptographique utilise l’arithmétique modulaire modulo p, l’ajout du nombre k.p à l’étape E42 n’aura aucune conséquence sur le résultat de l’algorithme cryptographique, mais les nombres manipulés seront différents d’une mise en œuvre de l’algorithme cryptographique à l’autre.
Le procédé se poursuit à l’étape E46 par l’initialisation de plusieurs variables : une variable R0 et une variable Ri sont chacune initialisées à la valeur de la variable m ; une variable d’indice i est quant à elle initialisée à la valeur I-2 (où I représente comme précédemment le nombre de bits de l’exposant d). Enfin, une variable binaire s est initialisée à la valeur nulle.
Le procédé de la figure 3 entre alors dans une boucle qui permet de mettre en œuvre une pluralité d’itérations (ici 1-1 itérations), chaque itération correspondant aux étapes E48 à E60 décrites ci-dessous.
Le microprocesseur 2 recopie à l’étape E48 la variable Rdi.s dans une variable R (avec écrasement de la valeur précédente). Autrement dit, si le bit dj de l’exposant d et la valeur courante de la variable binaire s valent (tous deux) 1, le microprocesseur 2 écrit à cette étape la valeur de la variable Ri (inchangée au cours des itérations) dans la variable R. En revanche, si le bit d, ou la valeur courante de la variable binaire s vaut 0, le microprocesseur 2 écrit à cette étape la valeur courante de la variable R0 dans la variable R.
Le microprocesseur 2 met alors à jour (étape E50) la valeur de la variable binaire s en combinant, au moyen d’une opération de "ou exclusif' (ou XOR), la valeur courante de la variable binaire s et le bit dj (d’indice i courant) de l’exposant d.
Le microprocesseur 2 détermine à l’étape E52 si le nombre prédéterminé n (mentionné plus haut) divise la valeur courante de la variable d’indice i.
En cas de résultat négatif à l’étape E52, le procédé se poursuit directement à l’étape E56.
En cas de résultat positif à l’étape E52 (c’est-à-dire si n divise i), le microprocesseur 2 procède à l’étape E54 en ajoutant à la variable R0 le module p (ou un multiple du module p) : la variable R0 est modifiée en y ajoutant a.p (avec a un nombre entier non-nul, généralement petit, comme pour l’exemple de la figure 2). L’étape E54 permet de perturber la valeur de la variable R0 (ici par combinaison avec la valeur de perturbation a.p au moyen d’une addition) ; cette valeur sera ainsi complètement différente de celle manipulée aux précédentes itérations et un attaquant ne pourra donc pas observer de corrélation entre les différentes itérations. L’utilisation du test de l’étape E52 permet toutefois de ne mettre en œuvre cette étape de perturbation que pour certaines itérations (le nombre d’itérations concernées étant d’autant plus faible que le nombre prédéterminé n est grand), ce qui allège le coût calculatoire de la contremesure. Selon les applications, on choisit par exemple n entre 2 et 10.
On remarque par ailleurs comme expliqué plus haut que cette perturbation n’aura pas d’effet sur le résultat du calcul puisqu’une réduction modulo p est appliquée (voir ci-dessous l’étape E62) avant émission du résultat.
Dans tous les cas, le procédé se poursuit à l’étape E56 à laquelle le microprocesseur 2 applique à la variable R0 une multiplication modulaire par la variable R (telle qu’elle a été fixée lors du dernier passage à l’étape E48). Comme indiqué pour l’étape E24, cette multiplication modulaire est réalisée modulo β.ρ afin de ne pas perdre (le cas échéant) le bénéfice de la perturbation de l’étape E54.
Comme expliqué précédemment, la variable R peut contenir une valeur identique à celle de la variable R0 (auquel cas la multiplication permet d’effectuer une mise au carré de cette valeur) ou une valeur identique à celle de la variable R-i, qui contient une valeur inchangée (égale ici à la valeur du message reçu à l’étape E40 puis masqué à l’étape E44) quelle que soit l'itération concernée.
Le microprocesseur 2 met alors à jour la variable d’indice i en lui soustrayant la valeur complémentaire de la valeur mémorisée dans la variable s. Autrement dit, si s vaut 1, la variable d’indice i est inchangée, tandis que si s vaut 0, la variable d’indice i est décrémentée (d’une unité).
Le microprocesseur 2 détermine alors à l’étape E62 si la valeur de la variable d’indice i est toujours positive ou nulle.
En cas de résultat positif à l’étape E62, le procédé se poursuit à l’étape E48 pour mise en œuvre d’une nouvelle itération.
En cas de résultat négatif à l’étape E62 (c’est-à-dire lorsque la dernière itération a été traitée et que la variable d’indice i vaut -1 du fait de sa décrémentation à l’étape E58), le procédé se poursuit à l’étape E62 à laquelle le microprocesseur 2 applique à la variable R0 une réduction modulaire modulo le module p.
Le microprocesseur 2 peut alors émettre à l’étape E64 la variable R0 via l’interface de communication 8, en tant que résultat de l’application, au message reçu à l’étape E40, de l’algorithme cryptographique.
La figure 4 représente, sous forme de logigramme, un troisième exemple de procédé conforme aux enseignements de l’invention, dans lequel l’entité électronique 1 applique un algorithme cryptographique à un message reçu m.
Dans cet exemple, l’exposant d comprend I bits et sa décomposition binaire est de la forme (dM,d|_2,... ,d0).
Le procédé de la figure 4 débute à l’étape E70 par la réception du message m par l’entité électronique 1 (précisément par le microprocesseur 2), via l’interface de communication 8.
Le microprocesseur 2 initie alors plusieurs variables à l’étape E72 : une variable R0 est initialisée à la valeur 1, une variable R-ι est initialisée à la valeur du message reçu m et une variable R2 est initialisée avec le cube modulaire de la valeur du message reçu m (soit m3 = m.m.m mod p).
Le microprocesseur 2 initialise d’autres variables à l’étape E74 : une variable d’indice i est initialisée à la valeur 1-1 (où I représente comme précédemment le nombre de bits de l’exposant d) et une variable binaire s est initialisée à 1. On fixe par ailleurs le bit d_i à la valeur nulle.
Le microprocesseur 2 initialise enfin un compteur j à la valeur nulle à l’étape E76. Comme cela apparaîtra clairement dans la suite, ce compteur j dénombre les itérations effectuées et permet de mettre en œuvre une étape de perturbation (étape E84 décrite ci-dessous) toutes les n itérations.
Le procédé de la figure 3 entre alors dans une boucle qui permet de mettre en œuvre une pluralité d’itérations (ici I itérations), chaque itération correspondant aux étapes E78 à E92 décrites ci-dessous.
Le microprocesseur 2 remplace tout d’abord à l’étape E78 la valeur courante d’une variable k par la valeur s.(k+1), où s est le complémentaire de s. On remarque que la valeur courante de k n’est pas définie lors de la première mise en œuvre de l’étape E78, mais qu’elle sera de toute façon remplacée par la valeur nulle puisque la variable s a été initialisée à 1 à l’étape E74 (et que s vaut donc toujours 0 lors du premier passage à l’étape E78).
Le microprocesseur 2 met ensuite à jour la variable s (étape E80) en lui appliquant successivement, par des opérations de "ou exclusif' (ou XOR) : - le bit dj (d’indice courant i) de l’exposant d ; - la valeur [du &amp; (k mod 2)], où dn est le bit d’indice (i-1) de l’exposant d et &amp; est l’opérateur logique ET.
Pour des explications complémentaires sur la mise en œuvre atomique des procédés d’exponentiation modulaire, on pourra se référer par exemple à l’article "Low-Cost Solutions for Preventing Simple Side-Channel Analysis: Side-Channel Atomicity", de B. Chevallier-Marnes, M. Ciet et M. Joye, Cryptology ePrint Archive, 2003/237.
Le microprocesseur 2 détermine alors si le nombre prédéterminé n divise la valeur courante du compteur j.
Dans la négative, le procédé se poursuit directement à l’étape E86 décrite plus bas.
Dans l’affirmative, le microprocesseur 2 procède à l’étape E84 en ajoutant à la variable R0 le module p (ou un multiple du module p) : la variable R0 est modifiée en y ajoutant cs.p (avec a un nombre entier non-nul, généralement petit, comme pour les exemples des figures 2 et 3). L’étape E84 permet de perturber la valeur de la variable R0 (ici par combinaison avec la valeur de perturbation a.p au moyen d’une addition) ; cette valeur sera ainsi complètement différente de celle manipulée aux précédentes itérations et un attaquant ne pourra donc pas observer de corrélation entre les différentes itérations. L’utilisation du test de l’étape E82 permet toutefois de ne mettre en œuvre cette étape de perturbation que pour une itération sur n itérations, ce qui allège le coût calculatoire de la contremesure. Selon les applications, on peut choisir n entre 6 et 12, par exemple n = 11.
On remarque par ailleurs comme déjà expliqué dans le cadre des autres exemples que cette perturbation n’aura pas d’effet sur le résultat du calcul puisqu’une réduction modulo p est appliquée (voir ci-dessous l’étape E94) avant émission du résultat.
Dans tous les cas, le procédé se poursuit à l’étape E86 à laquelle le microprocesseur 2 applique à la variable R0 une multiplication modulaire par la variable Rks. Comme indiqué pour l’étape E24, cette multiplication modulaire est réalisée modulo β.ρ afin de conserver le bénéfice de la perturbation de l’étape E84.
On remarque que la variable effectivement utilisée dans la multiplication dépend des valeurs des variables k et s, et donc notamment des bits dj, dj_i de l’exposant d (du fait de la manière dont est mise à jour la variable s à l’étape E80 décrite plus haut).
En pratique, la variable Rk s peut être : - soit la variable R0 (lorsque k = 0 ou s = 0), auquel cas la multiplication permet d’effectuer une mise au carré de cette variable, - soit la variable R-ι, qui contient une valeur inchangée (égale ici à la valeur du message reçu à l’étape E40) quelle que soit l'itération concernée, - soit la variable R2, qui contient également une valeur inchangée quelle que soit l’itération concernée.
Une fois la multiplication de l’étape E86 effectuée, le microprocesseur 2 incrémente le compteur j (d’une unité) à l’étape E88.
Le microprocesseur 2 met par ailleurs à jour la variable d’indice i (étape E90) en lui soustrayant d’une part la valeur k.s et d’autre part la valeur complémentaire du bit d, d’indice courant (avant mise à jour) i de l’exposant d.
Le microprocesseur 2 détermine alors à l’étape E92 si la valeur de la variable d’indice i est toujours positive ou nulle.
En cas de résultat positif à l’étape E92, le procédé se poursuit à l’étape E78 pour mise en œuvre d’une nouvelle itération.
En cas de résultat négatif à l’étape E92 (c’est-à-dire lorsque la dernière itération a été traitée et que la variable d’indice i est strictement négative du fait de sa diminution à l’étape E90), le procédé se poursuit à l’étape E94 à laquelle le microprocesseur 2 applique à la variable R0 une réduction modulaire modulo le module p.
Le microprocesseur 2 peut alors émettre à l’étape E96 la variable R0 via l’interface de communication 8, en tant que résultat de l’application, au message reçu à l’étape E70, de l’algorithme cryptographique.
Afin d’évaluer la valeur du nombre prédéterminé n que l’on peut utiliser dans une application donnée, on peut étudier les séquences possibles d’opérations effectuées (lors de l’étape E86 pour le mode de réalisation de la figure 4) et les informations qu’un attaquant peut en déduire (en l’absence de perturbation, réalisée à l’étape E84 pour le mode de réalisation de la figure 4).
En prenant en tant qu’exemple le cas de la figure 4, si on note "S" l’opération de l’étape E86 lorsque Rks = Ro, "1" l’opération de l’étape E86 lorsque Rk.s = Ri et "3" l’opération de l’étape E86 lorsque Rks = R2, on peut vérifier en pratique que la séquence des opérations est formée de la répétition des mots (ou motifs) suivants : S, SS1, S1S, SS3 (sans d’ailleurs que les séquences SS1S1S et SS1SS3 ne puissent apparaître).
Par exemple, lorsque 4 bits à traiter de l’exposant d valent (en représentation binaire) : (1101), le procédé de la figure 4 produit la séquence suivante d’opérations (lors des différents passages à l’étape E86) : SS3SS1.
Pour une valeur donnée du nombre prédéterminé n, on peut ainsi lister toutes les séquences de n opérations envisageables et déterminer, parmi toutes ces séquences possibles, celles qui permettent à un attaquant de détecter une corrélation entre deux opérations manipulant une donnée identique (soit, dans le cas de la figure 4, deux opérations de type qui utilisent toutes deux la valeur m, ou deux opérations de type "3" qui utilisent toutes deux la valeur m3).
On rappelle à cet égard que, comme proposé ci-dessus, l’étape de perturbation n’est effectuée que toutes les n itérations et qu’un attaquant pourra donc observer une corrélation dans une séquence de n opérations (aucune perturbation n’intervenant lors de la mise en œuvre des n itérations correspondant à ces n opérations).
Par exemple, la séquence SS3SS1 évoquée ci-dessus ne permet à l’attaquant d’établir aucune corrélation. En revanche, une séquence du type SS1SS1 peut permettre à un attaquant d’établir une corrélation (du fait que les deux opérations de type "T sont des multiplications par Ri et impliquent la valeur m du message reçu).
Après avoir listé toutes les séquences envisageables et celles qui permettent à un attaquant de détecter une corrélation (et par conséquent 1 bit de l’exposant d), on peut en déduire le nombre d’attaques qu’un attaquant devrait statistiquement mettre en œuvre pour obtenir tous les bits de l’exposant d et vérifier ainsi si le niveau de sécurité obtenu (du fait notamment de l’utilisation du nombre n précité) est suffisant pour l’application visée.

Claims (10)

  1. REVENDICATIONS
    1. Procédé de traitement cryptographique de données, dans lequel une clé (d) est appliquée à une donnée (m) au moyen d’un algorithme cryptographique comprenant une pluralité d’itérations et utilisant une valeur donnée (m), chaque itération comprenant ou non, en fonction d’au moins un bit (d,) de la clé (d), une étape de mise en œuvre d’une opération arithmétique (E28 ; E56 ; E86) impliquant une première variable (T ; R0) et une seconde variable (m ; R ; R-i) mémorisant la valeur donnée (m), dans lequel certaines itérations comprennent une étape de perturbation (E22 ; E54 ; E84) par combinaison de la première variable (T ; R0) avec un élément de perturbation (a.p), caractérisé en ce que les itérations comprenant ladite étape de perturbation (E22 ; E54 ; E84) forment au maximum la moitié de ladite pluralité d’itérations.
  2. 2. Procédé selon la revendication 1, dans lequel chaque itération comprend une application (E24), au moyen de l’opération arithmétique, de la première variable à elle-même.
  3. 3. Procédé selon la revendication 1, dans lequel chaque itération comprend sélectivement, en fonction dudit au moins un bit (dj), ladite mise en œuvre de l’opération arithmétique ou une application, au moyen de l’opération arithmétique, de la première variable à elle-même.
  4. 4. Procédé selon l’une des revendications 1 à 3, dans lequel l’étape de perturbation (E22 ; E84) est mise en œuvre une unique fois pour un nombre prédéterminé (n) d’itérations.
  5. 5. Procédé selon l’une des revendications 1 à 3, dans lequel l’étape de perturbation (E54) est mise en œuvre une unique fois pour un nombre prédéterminé (n) de bits de la clé (d).
  6. 6. Procédé selon la revendication 4 ou 5, dans lequel le nombre prédéterminé (n) est compris entre 2 et 12.
  7. 7. Procédé selon la revendication 4 prise dans la dépendance de la revendication 2, dans lequel le nombre prédéterminé (n) est compris entre 2 et 4.
  8. 8. Procédé selon la revendication 4 prise dans la dépendance de la revendication 3, dans lequel le nombre prédéterminé (n) est compris entre 6 et 12.
  9. 9. Procédé selon l’une des revendications 1 à 8, dans lequel l’algorithme cryptographique implique une exponentiation modulaire et dans lequel l’opération arithmétique est une multiplication.
  10. 10. Programme d’ordinateur comprenant des instructions exécutables par un processeur et adaptées à mettre en œuvre un procédé selon l’une des revendications 1 à 9 lorsque ces instructions sont exécutées par le processeur.
FR1556175A 2015-06-30 2015-06-30 Procede de traitement cryptographique de donnees et programme d'ordinateur associe Active FR3038473B1 (fr)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR1556175A FR3038473B1 (fr) 2015-06-30 2015-06-30 Procede de traitement cryptographique de donnees et programme d'ordinateur associe

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR1556175A FR3038473B1 (fr) 2015-06-30 2015-06-30 Procede de traitement cryptographique de donnees et programme d'ordinateur associe

Publications (2)

Publication Number Publication Date
FR3038473A1 true FR3038473A1 (fr) 2017-01-06
FR3038473B1 FR3038473B1 (fr) 2017-08-11

Family

ID=54608660

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1556175A Active FR3038473B1 (fr) 2015-06-30 2015-06-30 Procede de traitement cryptographique de donnees et programme d'ordinateur associe

Country Status (1)

Country Link
FR (1) FR3038473B1 (fr)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6839847B1 (en) * 1998-11-30 2005-01-04 Hitachi, Ltd. Information processing equipment and IC card
US20130016828A1 (en) * 2011-07-13 2013-01-17 Stmicroelectronics (Rousset) Sas Protection of a modular exponentiation calculation by multiplication by a random quantity

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6839847B1 (en) * 1998-11-30 2005-01-04 Hitachi, Ltd. Information processing equipment and IC card
US20130016828A1 (en) * 2011-07-13 2013-01-17 Stmicroelectronics (Rousset) Sas Protection of a modular exponentiation calculation by multiplication by a random quantity

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"Correct System Design", vol. 7668, 1 January 2012, SPRINGER INTERNATIONAL PUBLISHING, Cham, ISBN: 978-3-642-23953-3, ISSN: 0302-9743, article CHRISTOPHE CLAVIER ET AL: "ROSETTA for Single Trace Analysis", pages: 140 - 155, XP055269090, 032548, DOI: 10.1007/978-3-642-34931-7_9 *

Also Published As

Publication number Publication date
FR3038473B1 (fr) 2017-08-11

Similar Documents

Publication Publication Date Title
EP2256987B1 (fr) Protection d&#39;une génération de nombres premiers pour algorithme RSA
EP2296086B1 (fr) Protection d&#39;une génération de nombres premiers contre des attaques par canaux cachés
EP1423937A2 (fr) Procede de securisation d&#39;une quantite secrete
WO2002063821A1 (fr) Procede de cryptage securise et composant utilisant un tel procede de cryptage
FR2788650A1 (fr) Procede cryptographique a cles publique et privee
EP1804161B1 (fr) Détection de perturbation dans un calcul cryptographique
EP3117555A1 (fr) Procédé de contremesure pour un composant électronique mettant en oeuvre un algorithme de cryptographie sur une courbe elliptique
EP3300292B1 (fr) Procédé de chiffrement ou de déchiffrement protégé contre des attaques par canaux cachés
WO2000059157A1 (fr) Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle publique de type courbe elliptique
EP1895404B1 (fr) Brouillage d&#39;un calcul effectué selon un algorithme RSA-CRT
EP2166696A1 (fr) Protection de l&#39;intégrité de données chiffrées en utilisant un état intermédiare de chiffrement pour générer une signature
EP1904921A1 (fr) Procede cryptographique pour la mise en oeuvre securisee d&#39;une exponentiation et composant associe
EP1493078B8 (fr) Procédé cryptographique protégé contre les attaques de type à canal caché
WO2006070092A1 (fr) Procede de traitement de donnees et dispositif associe
EP1804160A1 (fr) Protection d&#39;un calcul cryptographique effectué par un circuit intégré
EP1829279A2 (fr) Procede et dispositif d&#39;execution d&#39;un calcul cryptographique
EP3502899A1 (fr) Procédé de détermination d&#39;une somme d&#39;intégrité, programme d&#39;ordinateur et entité électronique associés
FR3038473A1 (fr) Procede de traitement cryptographique de donnees et programme d&#39;ordinateur associe
FR3004042A1 (fr) Procedes de generation et d&#39;utilisation de cles cryptographiques privees pour le rsa-crt ou les variantes du rsa-crt
EP3579491A1 (fr) Procédé de détermination d&#39;inverse modulaire et dispositif de traitement cryptographique associé
WO2024083849A1 (fr) Encodage en boite blanche
FR3118510A1 (fr) Procede et module electronique de calcul d&#39;une quantite cryptographique avec multiplications sans retenue, procede et dispositif electronique de traitement d&#39;une donnee et programme d&#39;ordinateur associes
FR3045253A1 (fr) Procede et dispositif de traitement cryptographique
FR3086483A1 (fr) Procede de production d&#39;un code d&#39;authentification et dispositif de traitement cryptographique associe
FR2843507A1 (fr) Procede securise de realisation parallele d&#39;une exponentiation modulaire, procede cryptographique et circuit de calcul associes

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLSC Publication of the preliminary search report

Effective date: 20170106

PLFP Fee payment

Year of fee payment: 3

PLFP Fee payment

Year of fee payment: 4

PLFP Fee payment

Year of fee payment: 6

CA Change of address

Effective date: 20200826

CJ Change in legal form

Effective date: 20200826

PLFP Fee payment

Year of fee payment: 7

PLFP Fee payment

Year of fee payment: 8

PLFP Fee payment

Year of fee payment: 9