FR3010210A1 - Protection d'un calcul contre des attaques par canaux caches - Google Patents

Protection d'un calcul contre des attaques par canaux caches Download PDF

Info

Publication number
FR3010210A1
FR3010210A1 FR1358271A FR1358271A FR3010210A1 FR 3010210 A1 FR3010210 A1 FR 3010210A1 FR 1358271 A FR1358271 A FR 1358271A FR 1358271 A FR1358271 A FR 1358271A FR 3010210 A1 FR3010210 A1 FR 3010210A1
Authority
FR
France
Prior art keywords
variable
bit
drift
calculation
random number
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
FR1358271A
Other languages
English (en)
Other versions
FR3010210B1 (fr
Inventor
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 FR1358271A priority Critical patent/FR3010210B1/fr
Priority to US14/470,861 priority patent/US9544130B2/en
Publication of FR3010210A1 publication Critical patent/FR3010210A1/fr
Priority to US15/354,016 priority patent/US10263768B2/en
Application granted granted Critical
Publication of FR3010210B1 publication Critical patent/FR3010210B1/fr
Expired - Fee Related 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • 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/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • 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

Landscapes

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

Abstract

L'invention concerne un procédé de protection d'un algorithme de chiffrement exécutant des opérations (42, 43, 44, 45, 46, 45', 46') en boucle sur des bits (ki) d'une première quantité (k) et sur une première variable (T) initialisée par une deuxième quantité (P), dans lequel, pour chaque bit de la première quantité, un nombre aléatoire (r) est ajouté à l'état de ce bit pour mettre à jour une deuxième variable (drift) maintenue entre deux seuils (-X, X).

Description

B12684 - 13-R0-0342FR01 1 PROTECTION D'UN CALCUL CONTRE DES ATTAQUES PAR CANAUX CACHÉS Domaine La présente description concerne de façon générale les circuits électroniques et, plus particulièrement, les circuits réalisant des calculs de chiffrement. La présente description concerne plus particulièrement la protection d'un calcul exécuté par un circuit électronique contre des attaques par canaux cachés. Exposé de l'art antérieur On connaît de nombreuses techniques de protection de 10 calcul de chiffrement contre des attaques par canaux cachés. Ces techniques utilisent typiquement un ou plusieurs nombres aléatoires pour masquer les quantités manipulées par le calcul. Qu'il s'agisse de calculs basés sur des courbes elliptiques, faisant appel à des opérations d'addition et de 15 doublement, ou de calculs d'exponentiation modulaire basés sur une technique dite de carré-multiplication, une difficulté réside dans l'élimination de la perturbation introduite par le nombre aléatoire afin de restituer le résultat. Résumé 20 Un mode de réalisation de la présente description vise à proposer une technique de protection d'un calcul exécuté par B12684 - 13-R0-0342FR01 2 un circuit électronique qui pallie tout ou partie des inconvénients des solutions usuelles. Un autre mode de réalisation vise à proposer une technique compatible avec des opérations de doublement-addition 5 sur courbes elliptiques ou de multiplication-élévation au carré pour des calculs d'exponentiation modulaire. Un autre mode de réalisation vise une solution plus particulièrement adaptée aux attaques par canaux cachés. Ainsi, un mode de réalisation prévoit un procédé de 10 protection d'un algorithme de chiffrement exécutant des opérations en boucle sur des bits d'une première quantité et sur une première variable initialisée par une deuxième quantité, dans lequel, pour chaque bit de la première quantité, un nombre aléatoire est ajouté à l'état de ce bit pour mettre à jour une 15 deuxième variable maintenue entre deux seuils. Selon un mode de réalisation, pour chaque bit de la première quantité, la deuxième variable est mise à jour par : sa valeur majorée du nombre aléatoire et minorée de l'état du bit si le résultat de ce calcul est compris entre 20 lesdits deux seuils ; ou le nombre aléatoire minoré de l'état du bit concerné dans le cas contraire. Selon un mode de réalisation, ladite deuxième variable est utilisée dans l'une des opérations réalisées pour chaque bit 25 de la première quantité. Selon un mode de réalisation, pour chaque bit de la première quantité, la première variable est mise à jour par : le résultat d'un calcul prenant en compte la deuxième quantité et le nombre aléatoire si la deuxième variable, majorée 30 du nombre aléatoire et minorée de l'état du bit concerné est comprise entre lesdits deux seuils ; ou le résultat d'un calcul prenant en outre en compte ladite deuxième variable dans le cas contraire. Selon un mode de réalisation, ledit calcul comporte 35 une somme et un produit.
B12684 - 13-R0-0342FR01 3 Selon un mode de réalisation, ledit calcul comporte un produit et une exponentiation. Selon un mode de réalisation, le nombre aléatoire est tiré pour chaque bit de la première quantité.
Selon un mode de réalisation, en fin de calcul, la première variable est mise à jour par un calcul prenant en compte ladite deuxième variable et la deuxième quantité. Selon un mode de réalisation, la deuxième variable est au plus sur 8 bits.
Selon un mode de réalisation, lesdites opérations comprennent une addition et un doublement, ladite deuxième variable étant prise en compte lors de l'étape d'addition. Selon un mode de réalisation, le procédé est appliqué à une multiplication d'un point d'une courbe elliptique par un 15 scalaire, ledit scalaire représentant la première quantité et ledit point représentant la deuxième quantité. Selon un mode de réalisation, lesdites opérations comprennent une élévation au carré et une multiplication, ladite deuxième variable étant prise en compte dans l'étape de 20 multiplication. Selon un mode de réalisation, le procédé est appliqué à une exponentiation modulaire de la deuxième quantité, la première quantité représentant l'exposant. Un mode de réalisation prévoit également un circuit 25 électronique adapté à la mise en oeuvre du procédé. Brève description des dessins Ces caractéristiques et avantages, ainsi que d'autres, seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non limitatif en 30 relation avec les figures jointes parmi lesquelles : la figure 1 est une représentation très schématique sous forme de blocs d'un exemple de circuit électronique du type auquel s'appliquent les modes de réalisation qui vont être décrits ; B12684 - 13-R0-0342FR01 4 la figure 2 illustre un exemple de protection usuelle d'une multiplication sur courbe elliptique ; la figure 3 illustre un exemple de protection usuelle d'une exponentiation modulaire ; la figure 4 représente, de façon schématique et sous forme de blocs, un mode de réalisation du procédé de protection d'une multiplication sur courbe elliptique ; et la figure 5 représente, de façon schématique et sous forme de blocs, un mode de réalisation du procédé de protection 10 d'une exponentiation modulaire. Description détaillée De mêmes éléments ont été désignés par de mêmes références aux différentes figures. Par souci de clarté, seuls les étapes et les éléments utiles à la compréhension des modes 15 de réalisation qui vont être décrits ont été illustrés et seront détaillés. En particulier, la nature des quantités manipulées par les différents calculs n'a pas été détaillée, les modes de réalisation décrits étant compatibles avec les natures usuelles de tels nombres. De plus, l'origine des nombres à soumettre aux 20 calculs qui vont être décrits ainsi que la destination des résultats, plus particulièrement dans des applications de chiffrement, n'a pas non plus été détaillée, les modes de réalisation décrits étant là encore compatibles avec les origines et destinations usuelles de tels nombres. 25 La figure 1 représente, de façon très schématique et sous forme de blocs, un exemple de circuit électronique 1 du type auquel s'appliquent les modes de réalisation qui vont être décrits. Un tel circuit vise des applications cryptographiques et comporte généralement une unité de traitement 12 (CPU) 30 susceptible de communiquer, par un ou plusieurs bus 13 d'adresses, de données et de commandes, avec différents éléments parmi lesquels au moins un élément d'entrée/sortie 14 (I/O), de communication avec l'extérieur du circuit 1, un ou plusieurs circuits de mémoire volatile 15 (MEM), un ou plusieurs circuits 35 de mémoire non volatile 16 (NVM) et une ou plusieurs fonctions B12684 - 13-R0-0342FR01 symbolisées par des blocs 17, (FCT) dépendant de l'application du circuit. Bien que l'on fasse référence ci-dessus à un circuit électronique, on comprendra que les modes de réalisation qui vont être décrits s'appliquent à une réalisation matérielle par 5 une machine d'états en logique câblée ou à une réalisation logicielle dont des instructions sont exécutées par l'unité de traitement 12. Dans des applications de chiffrement, on réalise généralement des calculs sur des nombres de taille importante (de quelques centaines à quelques milliers de bits) et les algorithmes de chiffrement les plus courants auxquels se rapporte la présente description comprennent soit une exponentiation modulaire (typiquement l'algorithme RSA) soit une multiplication d'un point d'une courbe elliptique par un scalaire. L'exposant dans le cas de l'exponentiation modulaire où le nombre scalaire dans le cas de la multiplication sur courbe elliptique, constitue généralement une quantité dite secrète qui ne doit pas être rendue accessible à des circuits ou utilisateurs non autorisés.
Afin de protéger les quantités secrètes contre des attaques par canaux cachés dans des calculs de chiffrement, on utilise généralement des nombres aléatoires. La figure 2 représente, de façon schématique, un exemple usuel de protection par nombre aléatoire d'un calcul de multiplication d'un point P d'une courbe elliptique par un scalaire k. Dans l'exemple de la figure 2, on suppose que les calculs sont effectués modulo un nombre entier n qui représente la taille des nombres manipulés. On commence par calculer (bloc 21, +) la somme du nombre k représentant généralement la quantité secrète avec un nombre aléatoire r. La taille du nombre aléatoire correspond généralement au moins à celle de la clé k dans la mesure où la taille de ce nombre conditionne la sécurité, c'est-à-dire le nombre de bits masqués. Dans l'exemple de la figure 2, on suppose des quantités k et r sur n bits.
B12684 - 13-R0-0342FR01 6 Le nombre k+r obtenu est alors utilisé dans un calcul dit d'addition/doublement (Add/Doub) d'une quantité P que l'on souhaite chiffrer. Cette quantité P représente un point d'une courbe elliptique. Une variable de calcul T est initialisée avec 5 la valeur du point P. Puis, pour chaque bit (k+r)i du nombre k+r, on effectue un doublement du contenu de la variable T (bloc 23, T = 2T) suivi, pour les bits (k+r)i du nombre k+r valant 1, d'une opération d'addition du point P à la variable T (T = T+(k+r)i.P). 10 Une fois tous les bits du nombre k+r traités, on élimine la contribution du nombre aléatoire r en effectuant une dernière opération (bloc 25, T=T-r.P) de soustraction de la quantité r.P au résultat intermédiaire. La variable T contient alors le résultat k.P mod(n). 15 Le plus souvent, pour protéger le calcul contre des attaques dites horizontales, typiquement des attaques directes d'analyse de la consommation (attaques dites SPA pour Single Power Analysis), on effectue le même nombre d'étapes de calcul quel que soit l'état du bit du nombre k+r. Cela conduit 20 généralement à utiliser une variable supplémentaire ne participant pas au résultat final. La protection opérée par l'algorithme décrit en relation avec la figure 2 impose, pour démasquer la quantité calculée en fin de calcul, d'effectuer une multiplication 25 additionnelle par un scalaire (produit r.P) de façon à pouvoir la soustraire du résultat obtenu. La figure 3 illustre un exemple usuel de calcul d'exponentiation modulaire mettant en oeuvre un nombre aléatoire r pour masquer les calculs exploitant une quantité secrète d. 30 Comme dans le cas précédent, on commence (bloc 31) par sommer la quantité d qui représente l'exposant de l'exponentiation modulaire à un nombre aléatoire r, de façon à obtenir une valeur d+r. Là encore, le nombre (par exemple n) de bits du nombre aléatoire r correspond au moins au nombre de bits de la 35 valeur d de façon à obtenir une protection efficace.
B12684 - 13-R0-0342FR01 7 Pour chaque bit (d+r)i du nombre d+r, on effectue ensuite une opération dite de carré/multiplication (Square Multiply). On initialise une variable T par le message M à soumettre à l'exponentiation modulaire. Puis, on multiplie le contenu de la variable T par lui-même (élévation au carré). Ensuite, pour tous les bits (d+r)i de la valeur d+r valant 1, on met à jour la variable message M. Une T en multipliant son contenu par le fois tous les bits de l'exposant traités, on supprime la contribution du nombre aléatoire en effectuant une opération (bloc 35, T=T/Mr) où le résultat intermédiaire T est divisé par la valeur M exposant r. On obtient alors, dans la variable T, le résultat Md mod(n). Comme dans le cas de la figure 2, lorsque les bits de 15 l'exposant (valeur d+r) sont à zéro, on effectue généralement une opération non utile pour le calcul de façon à protéger celui-ci contre des attaques de type SPA. Comme pour un calcul d'addition/doublement, l'introduction d'un nombre aléatoire de la taille de la quantité à 20 protéger engendre, en fin d'opération, un calcul coûteux en termes de ressources (temps ou capacité du circuit). Selon un mode de réalisation, on prévoit de tirer profit du fait que les calculs s'effectuent en boucle pour les différents bits de la quantité à protéger pour maintenir la 25 dérive introduite par le nombre aléatoire dans une plage inférieure au nombre de bits de la quantité à protéger. Plus particulièrement, on prévoit de définir une fenêtre (en nombre de bits) dans laquelle la dérive est limitée. La figure 4 représente, de façon très schématique et 30 sous forme de blocs, un mode de réalisation appliqué à la multiplication d'un point P d'une courbe elliptique par un scalaire k, par la technique d'addition/doublement. On initialise (bloc 41, T=P ; drift=0 ; i=0) différentes variables utilisées dans le calcul. Par exemple, une 35 variable T est destinée à contenir un résultat intermédiaire et B12684 - 13-R0-0342FR01 8 est initialisée avec la valeur P du point de la courbe elliptique, une valeur de dérive drift servant au masquage du calcul est initialisée à 0. Un index du bit courant i est initialisé, par exemple à 0 pour commencer le calcul de droite à gauche (du bit de poids fort au bit de poids faible) mais peut en variante être initialisé à n représentant le nombre de bits de la quantité k pour un calcul de gauche à droite. On suppose arbitrairement un calcul modulo n, mais le modulo pourra être différent de la taille de la quantité k.
Pour chaque bit ki de la quantité k, on effectue (bloc 42, T = 2T) une opération de doublement du contenu de la variable T. Puis, on tire un nombre aléatoire r (bloc 43), -X' r x') que l'on sélectionne pour être compris entre deux valeurs -X' et X'. En pratique, la limite X' correspond au nombre de bits sur lequel est tiré le nombre aléatoire. On effectue alors un test (bloc 44, -X drift+r-ki X ?) sur la somme du contenu de la variable drift, du nombre aléatoire r, diminué de l'état (1 ou 0) du bit courant ki du nombre k.
Si (sortie N du bloc 44) le résultat excède la plage autorisée (-X à X), on met à jour la variable T par une opération (bloc 45, T = T +/- (r-drift.P)) d'addition ou de soustraction (selon le sens dans lequel la limite est dépassée) de la quantité r-drift.P. Puis, la variable drift prend la valeur r-ki (bloc 46, drift = r-ki). Dans le cas contraire (sortie Y du bloc 44), on met à jour la variable T (bloc 45', T = T + r.P) en lui ajoutant le produit de la quantité r par la valeur P. Puis, on ajoute la quantité r-ki à la variable drift (bloc 46', drift = drift+r-ki). En variante, l'ordre des étapes 45 et 46 (45' et 46') peut être modifié. Dans ce cas, la variable T est mise à jour avec la valeur T+drift.P quel que soit l'état du bit ki. La variable drift, qui prend en compte un aléa et 35 l'état du bit courant, est toujours contenue dans la fenêtre B12684 - 13-R0-0342FR01 9 définie par le nombre X. De plus, le calcul d'addition est bien protégé par la quantité aléatoire. La limite X' du tirage aléatoire est, de préférence, identique à la limite X autorisée pour la dérive drift. Pour le cas où l'on choisit des limites X et X' différentes, on veillera à choisir la limite X' du tirage aléatoire inférieure à la limite X de la dérive, afin d'éviter un dépassement trop fréquent de la plage de valeurs testée au bloc 44. Les étapes 42 à 46 sont reproduites tant que tous les bits de la valeur k n'ont pas été traités (test 47, i=n ?). Tant qu'il reste un bit à traiter (sortie N du bloc 47), on passe au bit suivant (bloc 48, i=i+1) et on revient en entrée du bloc 42. Une fois que tous les bits ont été traités (sortie Y du bloc 48), il ne reste plus qu'a annuler la dernière contribution du nombre aléatoire (bloc 49, T = T-drift.P) pour obtenir le résultat final dans la variable T (k.P mod(n)). On voit que la multiplication drift.P qu'il faut réaliser pour supprimer la contribution du nombre aléatoire ne concerne qu'un nombre de taille réduite qui vaut au maximum X.
Ainsi, il n'est plus question de sélectionner un nombre aléatoire r ayant la taille de la quantité k. En effet, comme le nombre aléatoire est introduit au niveau du bit pris en compte dans les boucles de calcul, un nombre aléatoire sur un bit suffit (valeurs 0, 1).
De préférence, on choisira un nombre aléatoire r sur quelques bits, typiquement entre 3 et 8 bits, ce qui représente jusqu'à 256 valeurs possibles pour le nombre aléatoire et offre une sécurité de masquage satisfaisante. Le processus décrit en relation avec la figure 4 assure un masquage contre des attaques par canaux cachés, par exemple de type DPA, analyse de signature electromagnétique, etc. De plus, il offre également une protection contre les attaques dites horizontales (par exemple de type SPA). En effet, le nombre d'opérations réalisées est identique quel que soit l'état du bit de la quantité secrète.
B12684 - 13-R0-0342FR01 10 De préférence, afin d'économiser le temps de calcul, les différentes valeurs susceptibles d'être prises par la quantité drift.P (bloc 45) sont précalculées. Ainsi, comme l'illustre le bloc 40 en figure 4, on précalcule plusieurs 5 produits Z.P pour toute valeur possible de Z compris entre -X et X. Cet ensemble de valeurs précalculées est ensuite exploité par le bloc 45 en fonction de la valeur drift qui est forcément comprise dans la plage définie par la valeur X. On voit que le nombre de valeurs devant être précalculées est relativement 10 limité. Pour un calcul sur courbe elliptique et une fenêtre de 3 bits, on calcule les valeurs -8P à 8P. Sachant que 0.P est un point à l'infini défini par convention, cela fait 17 valeurs à stocker, mais seulement 15 à calculer (P étant connu). Le choix de la taille de la fenêtre dépend des 15 capacités de calcul et de mémorisation du circuit. Par ailleurs, le niveau de sécurité devient paramétrable dans l'algorithme. En effet, la valeur X peut être définie en fonction du niveau de sécurité souhaité. Ainsi, on peut utiliser une même cellule de calcul cryptographique avec 20 des niveaux de sécurité différents selon les quantités manipulées. La figure 5 représente un mode de réalisation appliqué à une exponentiation modulaire. On retrouve la plupart des étapes décrites en relation 25 avec la figure 4 aux différences près : que les étapes 50, 51 et 59, correspondant aux étapes 40, 41 et 49, prennent en compte la valeur M (modulo n) à soumettre à l'exponentiation modulaire (par exemple, le message à chiffrer) au lieu du point P ; 30 que l'étape 42 est remplacée par une étape 52 d'élévation au carré (bloc 52, T = T.T) ; que les étapes 54, 56 et 56', correspondant aux étapes 44, 46 et 46', prennent en compte les n bits di de l'exposant d au lieu des bits ki du scalaire k ; B12684 - 13-R0-0342FR01 11 qu'aux étapes 55 (T = T.M(r-drift)), 55' (T = T.Mr) et 59 (T = T/Mdrift), correspondant aux étapes 45, 45' et 49, le produit du point P est remplacé par une exponentiation de la valeur M, l'addition (+) est remplacée par une multiplication (.), la soustraction (-) est remplacée par une division (/). De préférence, le nombre aléatoire r est tiré à chaque tour (à chaque bit de la quantité secrète). Toutefois, dans un mode de réalisation simplifié (apportant une protection moindre), on pourra prévoir d'utiliser un même nombre aléatoire r pour tout le calcul. On voit qu'aux étapes 45, 46, 45', 46', 55, 56, 55', 56', le calcul diffère selon l'état du bit de la quantité secrète. Par conséquent, le calcul exécuté est bien conforme avec une addition/doublement sur courbe elliptique ou un carré/multiplication pour l'exponentiation modulaire. Divers modes de réalisation ont été décrits. Diverses variantes et modifications apparaîtront à l'homme de l'art. En particulier, bien que les modes de réalisation aient été décrits en relation avec une multiplication sur courbe elliptique et une exponentiation modulaire, ils s'appliquent plus généralement quelle que soit la forme de l'algorithme utilisé pourvu qu'il comporte une addition/doublement ou un carré/multiplication selon les bits d'un des opérandes. En particulier, on pourra utiliser, dans le cadre de l'exponentiation modulaire, une représentation dite de Montgomery. De plus, la mise en oeuvre pratique des modes de réalisation qui ont été décrits est à la portée de l'homme de métier à partir des indications fonctionnelles données ci-dessus et en utilisant des outils en eux-mêmes usuels.

Claims (14)

  1. REVENDICATIONS1. Procédé de protection d'un algorithme de chiffrement exécutant des opérations (42, 43, 44, 45, 46, 45', 46' ; 52, 43, 54, 55, 55', 56, 56') en boucle sur des bits (ki ; di) d'une première quantité (k ; d) et sur une première variable (T) initialisée par une deuxième quantité (P ; M), dans lequel, pour chaque bit de la première quantité, un nombre aléatoire (r) est ajouté à l'état de ce bit pour mettre à jour une deuxième variable (drift) maintenue entre deux seuils (-X, X).
  2. 2. Procédé selon la revendication 1, comportant, pour chaque bit (ki ; di) de la première quantité (k ; d), la mise à jour de la deuxième variable (drift) par : sa valeur majorée du nombre aléatoire et minorée de l'état du bit si le résultat de ce calcul est compris entre lesdits deux seuils ; ou le nombre aléatoire (r) minoré de l'état du bit concerné dans le cas contraire.
  3. 3. Procédé selon la revendication 2, dans lequel ladite deuxième variable (drift) est utilisée dans l'une des opérations réalisées pour chaque bit de la première quantité (k ; d).
  4. 4. Procédé selon l'une quelconque des revendications 1 à 3, comportant, pour chaque bit (ki ; di) de la première quantité (k ; d), la mise à jour de la première variable (T) par : le résultat d'un calcul prenant en compte la deuxième quantité (P ; M) et le nombre aléatoire (r) si la deuxième variable (drift), majorée du nombre aléatoire et minorée de l'état du bit concerné est comprise entre lesdits deux seuils ; ou le résultat d'un calcul prenant en outre en compte ladite deuxième variable (drift) dans le cas contraire.
  5. 5. Procédé selon la revendication 4, dans lequel ledit calcul comporte une somme et un produit.B12684 - 13-R0-0342FR01 13
  6. 6. Procédé selon la revendication 4, dans lequel ledit calcul comporte un produit et une exponentiation.
  7. 7. Procédé selon l'une quelconque des revendications 1 à 6, dans lequel le nombre aléatoire (r) est tiré pour chaque 5 bit de la première quantité (k ; d).
  8. 8. Procédé selon l'une quelconque des revendications 1 à 5, dans lequel, en fin de calcul, la première variable (T) est mise à jour par un calcul prenant en compte ladite deuxième variable (drift) et la deuxième quantité (P ; M). 10
  9. 9. Procédé selon l'une quelconque des revendications 1 à 8, dans lequel la deuxième variable est au plus sur 8 bits.
  10. 10. Procédé selon la revendication 3 ou l'une quelconque des revendications 4 à 9 dans leur rattachement à la revendication 3, dans lequel lesdites opérations comprennent une 15 addition et un doublement, ladite deuxième variable (drift) étant prise en compte lors de l'étape d'addition (45).
  11. 11. Procédé selon la revendication 10, appliqué à une multiplication d'un point d'une courbe elliptique par un scalaire, ledit scalaire (k) représentant la première quantité 20 et ledit point (P) représentant la deuxième quantité.
  12. 12. Procédé selon la revendication 3 ou l'une quelconque des revendications 4 à 9 dans leur rattachement à la revendication 3, dans lequel lesdites opérations comprennent une élévation au carré et une multiplication, ladite deuxième 25 variable (drift) étant prise en compte dans l'étape de multiplication (55).
  13. 13. Procédé selon la revendication 12, appliqué à une exponentiation modulaire de la deuxième quantité (M), la première quantité représentant l'exposant (d). 30
  14. 14. Circuit électronique adapté à la mise en oeuvre du procédé selon l'une quelconque des revendications précédentes.
FR1358271A 2013-08-29 2013-08-29 Protection d'un calcul contre des attaques par canaux caches Expired - Fee Related FR3010210B1 (fr)

Priority Applications (3)

Application Number Priority Date Filing Date Title
FR1358271A FR3010210B1 (fr) 2013-08-29 2013-08-29 Protection d'un calcul contre des attaques par canaux caches
US14/470,861 US9544130B2 (en) 2013-08-29 2014-08-27 Protection of a calculation against side-channel attacks
US15/354,016 US10263768B2 (en) 2013-08-29 2016-11-17 Protection of a calculation against side-channel attacks

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR1358271A FR3010210B1 (fr) 2013-08-29 2013-08-29 Protection d'un calcul contre des attaques par canaux caches

Publications (2)

Publication Number Publication Date
FR3010210A1 true FR3010210A1 (fr) 2015-03-06
FR3010210B1 FR3010210B1 (fr) 2017-01-13

Family

ID=49998349

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1358271A Expired - Fee Related FR3010210B1 (fr) 2013-08-29 2013-08-29 Protection d'un calcul contre des attaques par canaux caches

Country Status (2)

Country Link
US (2) US9544130B2 (fr)
FR (1) FR3010210B1 (fr)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9813232B2 (en) * 2015-03-17 2017-11-07 Cypress Semiconductor Corporation Device and method for resisting non-invasive attacks
US10063569B2 (en) * 2015-03-24 2018-08-28 Intel Corporation Custom protection against side channel attacks
FR3055437A1 (fr) 2016-08-23 2018-03-02 Stmicroelectronics (Rousset) Sas Protection d'un calcul d'exponentiation modulaire
FR3055436A1 (fr) * 2016-08-23 2018-03-02 Stmicroelectronics (Rousset) Sas Protection d'un calcul modulaire
FR3069671A1 (fr) * 2017-07-25 2019-02-01 Stmicroelectronics (Rousset) Sas Protection d'un calcul iteratif contre des attaques horizontales
FR3069993B1 (fr) * 2017-08-07 2020-09-18 Maxim Integrated Products Dispositifs et procedes de masquage d'operations de chiffrement rsa
EP3579492A1 (fr) 2018-06-08 2019-12-11 STMicroelectronics (Rousset) SAS Protection d'un calcul itératif
EP3579493A1 (fr) 2018-06-08 2019-12-11 STMicroelectronics (Rousset) SAS Protection d'un calcul itératif
US10284860B1 (en) 2018-07-02 2019-05-07 Tencent America LLC Method and apparatus for video coding
FR3094522B1 (fr) 2019-03-29 2021-11-19 St Microelectronics Rousset Protection d’un calcul itératif
CN110717201B (zh) * 2019-09-12 2021-06-11 华中科技大学 一种抗简单功耗分析攻击的高斯采样电路
CN113076090B (zh) * 2021-04-23 2022-07-05 中国人民解放军国防科技大学 一种面向边信道安全防护的循环语句执行方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4471164A (en) * 1981-10-13 1984-09-11 At&T Bell Laboratories Stream cipher operation using public key cryptosystem
WO2012090288A1 (fr) * 2010-12-27 2012-07-05 富士通株式会社 Dispositif de traitement cryptographique, procédé de traitement cryptographique et programme associé
FR2977954A1 (fr) * 2011-07-13 2013-01-18 St Microelectronics Rousset Protection d'un calcul sur courbe elliptique

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7587044B2 (en) * 1998-01-02 2009-09-08 Cryptography Research, Inc. Differential power analysis method and apparatus
IL139935A (en) * 1998-06-03 2005-06-19 Cryptography Res Inc Des and other cryptographic processes with leak minimization for smartcards and other cryptosystems
US7599491B2 (en) * 1999-01-11 2009-10-06 Certicom Corp. Method for strengthening the implementation of ECDSA against power analysis
EP1548687B1 (fr) * 2002-12-18 2013-01-09 Fujitsu Limited Chiffrement a courbe elliptique inviolable utilisant une cle secrete
DE10304451B3 (de) * 2003-02-04 2004-09-02 Infineon Technologies Ag Modulare Exponentiation mit randomisiertem Exponenten
AU2003304629A1 (en) * 2003-07-22 2005-02-04 Fujitsu Limited Tamper-resistant encryption using individual key
US7602907B2 (en) * 2005-07-01 2009-10-13 Microsoft Corporation Elliptic curve point multiplication
EP1840732A1 (fr) * 2006-03-31 2007-10-03 Axalto SA Protection contre les attaques latérales de la chaîne
US7864951B2 (en) * 2006-07-10 2011-01-04 King Fahd University Of Petroleum And Minerals Scalar multiplication method with inherent countermeasures
US9400636B2 (en) * 2011-02-11 2016-07-26 Infineon Technologies Ag Apparatus and method for calculating a result in a scalar multiplication
US9819727B2 (en) * 2013-02-28 2017-11-14 Amazon Technologies, Inc. Computing infrastructure for configurable-quality random data
US20180287793A1 (en) * 2017-03-31 2018-10-04 Intel Corporation Random number generation with unstable bit states of non-volatile memory

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4471164A (en) * 1981-10-13 1984-09-11 At&T Bell Laboratories Stream cipher operation using public key cryptosystem
WO2012090288A1 (fr) * 2010-12-27 2012-07-05 富士通株式会社 Dispositif de traitement cryptographique, procédé de traitement cryptographique et programme associé
US20140016772A1 (en) * 2010-12-27 2014-01-16 Fujitsu Limited Encrypting device, encrypting method, and recording medium
FR2977954A1 (fr) * 2011-07-13 2013-01-18 St Microelectronics Rousset Protection d'un calcul sur courbe elliptique

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
CARLOS MORENO ET AL: "SPA-resistant binary exponentiation with optimal execution time", JOURNAL OF CRYPTOGRAPHIC ENGINEERING, vol. 1, no. 2, 9 May 2011 (2011-05-09), pages 87 - 99, XP055114471, ISSN: 2190-8508, DOI: 10.1007/s13389-011-0008-9 *

Also Published As

Publication number Publication date
US10263768B2 (en) 2019-04-16
FR3010210B1 (fr) 2017-01-13
US9544130B2 (en) 2017-01-10
US20150063561A1 (en) 2015-03-05
US20170070341A1 (en) 2017-03-09

Similar Documents

Publication Publication Date Title
FR3010210A1 (fr) Protection d'un calcul contre des attaques par canaux caches
FR3001315A1 (fr) Procede de cryptographie comprenant une operation de multiplication par un scalaire ou une exponentiation
EP1166494B1 (fr) Procedes de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle publique de type courbe elliptique
EP1358732B2 (fr) Procede de cryptage securise et composant utilisant un tel procede de cryptage
FR2977953A1 (fr) Protection d'un calcul d'exponentiation modulaire par addition d'une quantite aleatoire
FR2977952A1 (fr) Protection d'un calcul d'exponentiation modulaire par multiplication par une quantite aleatoire
EP3287891B1 (fr) Protection d'un calcul modulaire
FR2946207A1 (fr) Protection d'une generation de nombres premiers pour algorithme rsa
EP3287892B1 (fr) Protection d'un calcul d'exponentiation modulaire
FR2809893A1 (fr) Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle publique sur courbe elliptique
WO2015121324A1 (fr) Procédé de contremesure pour un composant électronique mettant en oeuvre un algorithme de cryptographie sur une courbe elliptique
WO2000059157A1 (fr) Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle publique de type courbe elliptique
EP2983083B1 (fr) Procede de cryptographie sur courbe elliptique comprenant une detection d'erreur
EP1804161A1 (fr) Détection de perturbation dans un calcul cryptographique
FR2888690A1 (fr) Procede cryptographique pour la mise en oeuvre securisee d'une exponentiation et composant associe
EP3435585B1 (fr) Protection d'un calcul itératif contre des attaques horizontales
EP1804160A1 (fr) Protection d'un calcul cryptographique effectué par un circuit intégré
WO2014096363A1 (fr) Generateur de sequences chaotiques
FR2969875A1 (fr) Procede et systeme pour l'authentification multi-modale multi-seuil utilisant le partage de secret
FR3066845B1 (fr) Procede de signature electronique d'un document avec une cle secrete predeterminee
FR2977954A1 (fr) Protection d'un calcul sur courbe elliptique
EP1695204A2 (fr) Procede d'exponentiation modulaire protege contre les attaques du type dpa
EP3716044A1 (fr) Protection d'un calcul itératif
EP3579493A1 (fr) Protection d'un calcul itératif
FR3135854A1 (fr) Fourniture sécurisée de clefs pour un cryptage totalement homomorphe

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 3

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: 20220405