FR3078464A1 - Procede et circuit de mise en oeuvre d'une table de substitution - Google Patents

Procede et circuit de mise en oeuvre d'une table de substitution Download PDF

Info

Publication number
FR3078464A1
FR3078464A1 FR1851645A FR1851645A FR3078464A1 FR 3078464 A1 FR3078464 A1 FR 3078464A1 FR 1851645 A FR1851645 A FR 1851645A FR 1851645 A FR1851645 A FR 1851645A FR 3078464 A1 FR3078464 A1 FR 3078464A1
Authority
FR
France
Prior art keywords
substitution
key
operations
substitution operations
series
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.)
Withdrawn
Application number
FR1851645A
Other languages
English (en)
Inventor
Daniele Fronte
Yanis Linge
Thomas Ordas
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 FR1851645A priority Critical patent/FR3078464A1/fr
Priority to EP19157876.4A priority patent/EP3531613B1/fr
Priority to US16/281,887 priority patent/US11258579B2/en
Priority to US16/281,889 priority patent/US11218291B2/en
Publication of FR3078464A1 publication Critical patent/FR3078464A1/fr
Priority to US17/537,056 priority patent/US11824969B2/en
Withdrawn legal-status Critical Current

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
    • 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/002Countermeasures against attacks on cryptographic mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • 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
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • 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/043Masking or blinding of tables, e.g. lookup, substitution or mapping
    • 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/08Randomization, e.g. dummy operations or using noise
    • 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/12Details relating to cryptographic hardware or logic circuitry
    • 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/16Obfuscation or hiding, e.g. involving white box

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

Procédé de mise en œuvre, par un circuit cryptographique (300), d'une opération de substitution d'un algorithme cryptographique à partir d'une table de substitution brouillée (302), ce procédé comprenant: la réalisation, pour chaque ensemble d'une ou plusieurs opérations de substitution de l'algorithme cryptographique , d'une série d'ensembles d'une ou plusieurs opérations de substitution, dont : l'un est un ensemble réel d'une ou plusieurs opérations de substitution défini par l'algorithme cryptographique, l'ensemble réel d'une ou plusieurs opérations de substitution étant basé sur une donnée d'entrée modifiée par une clé de brouillage réelle (S_KEY) ; et un ou plusieurs autres sont des ensembles factices d'une ou plusieurs opérations de substitution, chaque ensemble factice d'une ou plusieurs opérations de substitution factices étant basé sur une donnée d'entrée modifiée par une fausse clé de brouillage différente.

Description

PROCEDE ET CIRCUIT DE MISE EN ŒUVRE D'UNE TABLE DE SUBSTITUTION
DOMAINE DE L'INVENTION
La présente invention concerne le domaine des circuits électroniques, et notamment un dispositif et un procédé d'accès à des tables de substitution au cours d'une opération cryptographique .
EXPOSE DE L'ART ANTERIEUR
Les tables de substitution, également connues sous le nom de S-box, définissent une opération de substitution de données réalisée au cours d'algorithmes cryptographiques. Cette substitution de données a pour objet de dissimuler la relation entre la clé secrète et le texte crypté et de rendre donc plus difficile la découverte de la clé secrète.
Une technique utilisée par les pirates souhaitant récupérer la clé secrète traitée par un dispositif cryptographique consiste à surveiller les signaux sur des canaux auxiliaires pour extraire certaines informations liées, par exemple, à la consommation ou à la séquence chronologique du dispositif lors de l'exécution d'un algorithme cryptographique. La manipulation de la donnée secrète pendant les opérations de substitution est souvent visée par les pirates utilisant des procédés par canaux auxiliaires du fait de la visibilité relative des opérations de substitution.
B16877 17-RO-0644
Certaines solutions assurant un degré de protection limité contre l'utilisation de procédés par canaux auxiliaires ont été proposées. Il existe cependant un besoin dans la technique de solutions offrant une meilleure protection.
RESUME
Un objet de modes de réalisation de la présente description est de répondre à un ou plusieurs besoins de 11 art antérieur.
Selon un aspect, la présente invention prévoit un procédé de mise en œuvre, par un circuit cryptographique, d'une opération de substitution d'un algorithme cryptographique à partir d'une table de substitution brouillée, ce procédé comprenant: la réalisation, pour chaque ensemble d'une ou plusieurs opérations de substitution de l'algorithme cryptographique, d'une série d'ensembles d'une ou plusieurs opérations de substitution, dont : l'un est un ensemble réel d'une ou plusieurs opérations de substitution défini par l'algorithme cryptographique, l'ensemble réel d'une ou plusieurs opérations de substitution étant basé sur des données d'entrée modifiées par une clé de brouillage réelle ; et un ou plusieurs autres sont des ensembles factices d'une ou plusieurs opérations de substitution, chaque ensemble factice d'une ou plusieurs opérations de substitution étant basé sur une donnée d'entrée modifiée par une fausse clé de brouillage différente.
Selon un mode de réalisation, la position de l'ensemble réel d'une ou plusieurs opérations de substitution dans chaque série est choisie aléatoirement à partir d'une première valeur aléatoire.
Selon un mode de réalisation, le procédé comprend en outre, pour chaque série d'ensembles d'une ou plusieurs opérations de substitution, le stockage d'une valeur de sortie et la sélection de la valeur de sortie correspondant à l'ensemble réel d'une ou plusieurs opérations de substitution à partir de la valeur aléatoire.
Selon un mode de réalisation, chaque ensemble d'une ou plusieurs opérations de substitution comprend l'adressage d'un
B16877 17-RO-0644 emplacement de mémoire d'une mémoire à partir de ladite donnée d'entrée modifiée et la lecture d'une valeur de donnée audit emplacement de mémoire pour fournir une valeur de donnée de sortie.
Selon un mode de réalisation, l'algorithme cryptographigue est basé sur une clé secrète ; chaque série d'ensembles d'une ou plusieurs opérations de substitution comprend m-1 ensembles factices d'une ou plusieurs opérations de substitution, m étant un entier fixé à une valeur supérieure ou égale à 2 ou choisi aléatoirement ; et pour une clé donnée, un même groupe de fausses clés de brouillage est appliqué au cours des m-1 ensembles factices d'une ou plusieurs opérations de substitution.
Selon un mode de réalisation, la réalisation de chaque ensemble d'une ou plusieurs opérations de substitution de la série comprend l'exécution de l'algorithme cryptographique à partir d'un même message d'entrée et d'une même clé secrète.
Selon un mode de réalisation, les différentes clés de brouillage appliquées au cours de chacun des ensembles factices d'une ou plusieurs opérations de substitution sont choisies aléatoirement.
Selon un mode de réalisation, les différentes clés de brouillage appliquées au cours de chacun des ensembles factices d'une ou plusieurs opérations de substitution sont produites par un registre à décalage recevant en entrée la clé de brouillage réelle.
Selon un mode de réalisation, le nombre d'ensembles factices d'une ou plusieurs opérations de substitution réalisés dans chaque série est choisi aléatoirement.
Selon un autre aspect, la présente invention prévoit un moyen de stockage non transitoire stockant un programme informatique configuré, lorsqu'il est exécuté par un dispositif de traitement, pour mettre en œuvre le procédé ci-dessus.
Selon un autre aspect, la présente invention prévoit un circuit cryptographique comprenant : un circuit de mémoire stockant une table de substitution brouillée pour mettre en œuvre des ensembles d'opérations de substitution d'un algorithme
B16877 17-RO-0644 cryptographique ; et un ou plusieurs circuits configurés pour réaliser, pour chaque ensemble d'une ou plusieurs opérations de substitution de l'algorithme cryptographique, une série d'ensembles d'une ou plusieurs opérations de substitution utilisant la table de substitution brouillée, chaque série d'ensembles d'une ou plusieurs opérations de substitution comprenant : un ensemble réel d'une ou plusieurs opérations de substitution défini par l'algorithme cryptographique, l'ensemble réel d'une ou plusieurs opérations de substitution étant basé sur une donnée d'entrée modifiée par une clé de brouillage réelle ; et un ou plusieurs ensembles factices d'une ou plusieurs opérations de substitution, chaque ensemble factice d'une ou plusieurs opérations de substitution étant basé sur une donnée d'entrée modifiée par une fausse clé de brouillage différente.
Selon un mode de réalisation, le dispositif cryptographique comprend en outre un générateur de nombre aléatoire configuré pour produire, pour chacune desdites série d'ensembles d'une ou plusieurs opérations de substitution, une valeur aléatoire, les un ou plusieurs circuits étant configurés pour sélectionner aléatoirement la position de l'opération de substitution réelle parmi les une ou plusieurs opérations de substitution factices à partir de la valeur aléatoire.
Selon un mode de réalisation, le dispositif cryptographique comprend en outre : un registre d'entrée configuré pour stocker une valeur d'entrée ; un brouilleur configuré pour modifier la valeur d'entrée à partir d'une clé de brouillage ; et un générateur de clé configuré pour produire la clé de brouillage pour chaque opération de substitution de la série à partir de la valeur aléatoire et de la clé de brouillage réelle.
Selon un mode de réalisation, le générateur de clé comprend un registre à décalage configuré pour produire la clé de brouillage en décalant la clé de brouillage réelle.
Selon un mode de réalisation, les un ou plusieurs circuits comprennent un ou plusieurs dispositifs de traitement commandés par des instructions stockées dans une mémoire d'instructions pour choisir, pour chaque ensemble d'une ou plusieurs
B16877 17-RO-0644 opération de substitution de chaque série, soit de mettre en œuvre l'ensemble réel d'une ou plusieurs opérations de substitution en modifiant la valeur d'entrée en utilisant la clé de brouillage réelle, soit de mettre en œuvre un ensemble factice d'une ou plusieurs opérations de substitution en modifiant la valeur d'entrée en utilisant l'une des différentes fausses clés de brouillage.
BREVE DESCRIPTION DES FIGURES
Ces caractéristiques et leurs 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 relation avec les figures jointes parmi lesquelles :
la figure 1 illustre schématiquement un circuit d'exécution d'un algorithme cryptographique faisant intervenir des opérations de substitution selon un exemple de mode de réalisation ;
la figure 2 illustre schématiquement une table de substitution selon un exemple de mode de réalisation ;
la figure 3Ά illustre schématiquement un circuit de substitution selon un exemple de mode de réalisation de la présente invention ;
la figure 3B illustre schématiquement un générateur de clé de brouillage du circuit de substitution de la figure 3A plus en détail selon un exemple de mode de réalisation de la présente invention ;
la figure 4 illustre schématiquement un circuit d'exécution d'une série d'opérations cryptographiques selon un exemple de mode réalisation de la présente invention ;
la figure 5 est un chronogramme illustrant un exemple de signaux dans le circuit de la figure 4 ;
la figure 6A illustre schématiquement un circuit d'exécution d'une série d'opérations de substitution selon un autre exemple de mode de réalisation de la présente invention ;
la figure 6B illustre schématiquement un circuit de substitution de la figure 6A plus en détail selon un example de mode de réalisation de la présente invention ;
B16877 17-RO-0644 la figure 7 est un chronogramme illustrant un exemple de signaux dans le circuit de la figure 6B ;
la figure 8 illustre schématiquement un système de traitement pour accéder à une table de substitution selon un exemple de mode de réalisation de la présente description ;
la figure 9 est un organigramme représentant des opérations d'un procédé d'accès à une table de substitution selon un exemple de mode de réalisation de la présente invention ; et
La figure 10 illustre schématiquement un dispositif cryptographique selon un exemple de mode de réalisation de la présente invention.
DESCRIPTION DETAILLEE
Dans la présente description, on utilise le terme connecté pour désigner une connexion électrique directe entre éléments de circuit, tandis que l'on utilise le terme relié ou couplé pour désigner une connexion électrique entre éléments de circuit qui peut être directe ou par l'intermédiaire d'un ou plusieurs éléments tels que des multiplexeurs, des tampons, etc.
En outre, dans la présente description, on considérera que les termes suivants ont les définitions suivantes :
algorithme cryptographique - toute série d'opérations réalisées par un dispositif impliquant la manipulation d'une valeur secrète, telle qu'une clé secrète, qui doit être cachée du monde extérieur au dispositif. Des exemples d'algorithmes cryptographiques comprennent les algorithmes de cryptage ou de décryptage de texte non-crypté/texte crypté à partir d'une clé secrète, pour produire un code d'authentification de message (MAC) ou une autre forme de signature numérique à partir d'un algorithme secret et/ou clé, ou tout autre type d'opération secrète ;
opération de substitution ou accès en table de substitution - une opération d'un algorithme cryptographique dans laquelle une valeur de donnée de sortie est produite à partir d'une valeur de donnée d'entrée au moyen d'une table de substitution, S-box. Les valeurs d'entrée et de sortie peuvent comprendre le même nombre de bits ou un nombre de bits différent. Cette opération est par exemple réalisée au moyen d'une table de
B16877 17-RO-0644 correspondance (LUT, lookup table) stockée dans une mémoire, et les valeurs définies dans la table de correspondance peuvent être fixées ou peuvent être mises à jour de façon dynamique ;
ensemble d'une ou plusieurs opérations de substitution - ceci peut correspondre à un seul accès en table de substitution ou à plusieurs opérations de substitution réalisées au moyen d'une ou plusieurs tables de substitution telles que les opérations de substitution réalisées pendant une, quelques ou toutes les itérations d'un algorithme cryptographique. Par exemple, un ensemble d'opérations de substitution peut correspondre à toutes les opérations de substitution réalisées pendant l'exécution de l'algorithme DES, ce gui implique de multiples itérations;
ensemble réel d'une ou plusieurs opérations de substitution - une ou plusieurs opérations de substitution définies par l'algorithme cryptographique en cours d'exécution, qui sont par exemple des opérations utiles en ce que le résultat des substitutions contribuera au calcul des données de sortie utiles de l'algorithme cryptographique;
table de substitution brouillée - une table de substitution sous forme de table de correspondance dans laquelle les entrées ont été permutées pour rendre plus difficile de détecter quelle substitution en table de substitution est effectuée sur chaque opération d'accès en table de substitution. Par exemple, la table de substitution est brouillée de manière à ce que pour pouvoir réaliser une opération de substitution donnée définie par l'algorithme cryptographique, la donnée d'entrée doit d'abord être modifiée à partir d'une clé de brouillage, et la donnée de sortie correcte ne peut être lue dans la table de substitution brouillée qu'en réalisant l'accès à partir de cette donnée d'entrée modifiée. Par exemple, dans certains modes de réalisation, la clé de brouillage présente la même longueur que la donnée d'entrée et la donnée d'entrée est modifiée par une opération de OU exclusif appliquée bit par bit entre la clé de brouillage et la donnée d'entrée. A titre de variante, d'autres fonctions pourraient être utilisées pour modifier la donnée d'entrée à partir de la clé de brouillage ;
B16877 17-RO-0644 ensemble factice d'une ou plusieurs opérations de substitution - des opérations de substitution fictives ou fausses réalisées de la même façon que des opérations de substitution réelles, mais qui sont superflues dans la mesure où elles sont réalisées en plus des opérations de substitution réelles définies par l'algorithme cryptographique. Bien que le résultat de chaque ensemble d'une ou plusieurs opérations de substitution factices puisse être stocké en mémoire, ceci n'est pas utile dans la mesure où ce résultat est sans objet en lien avec l'algorithme cryptographique et peut être mis au rebut. Comme on l'a décrit ci-dessus, les opérations de substitution factices sont par exemple réalisées, lors de l'adressage d'une mémoire stockant une table de substitution brouillée, à partir d'une donnée d'entrée qui a été incorrectement modifiée au moyen d'une clé de brouillage factice.
La figure 1 illustre schématiquement un circuit cryptographique 100 selon un mode de réalisation. Le circuit 100 reçoit par exemple en entrée un message (MESSAGE) à traiter et une clé secrète (KEY) de l'opération cryptographique, que l'on appellera également ici clé cryptographique. Par exemple, le message correspond à un texte en clair à crypter par le circuit 100 utilisant la clé secrète, à un texte crypté à décrypter par le circuit 100 au moyen de la clé secrète ou à la donnée à signer par le circuit 100 en produisant une signature numérique, telle qu'un MAC (code d'authentification de message, message authentication code) à partir de la clé.
Le circuit 100 comprend une série de modules matériels mettant en œuvre l'algorithme cryptographique impliquant diverses opérations 102, 104, 106 appliquées au message et à la clé de manière à produire un message de sortie (MESSAGE') correspondant à un texte crypté, à un texte en clair et/ou à une signature numérique. Dans l'exemple de la figure 1, l'opération 104 correspond à une opération de substitution (SUBSTITUTION) faisant intervenir une ou plusieurs tables de substitution.
La figure 2 illustre schématiquement un exemple d'une table de substitution utilisée au cours de l'algorithme DES (Data
B16877 17-RO-0644
Encryption Standard). De façon connue de l'homme de l'art, l'algorithme de cryptage DES fait intervenir 8 tables de substitution SI à S8 dont chacune est unique. La figure 2 illustre la table de substitution DES SI.
Un accès à une table de substitution selon l'algorithme de cryptage DES implique l'introduction de 6 bits d'entrée (INPUT) b5 à bO et la fourniture de 4 bits de sortie (OUTPUT) b3 à bO. La table de substitution SI se présente sous la forme d'une table de correspondance comprenant 16 colonnes et 4 lignes. Les bits b5 et bO de la valeur d'entrée sont par exemple utilisés pour choisir une rangée de la table et les bits b4 à bl de la valeur d'entrée sont par exemple utilisés pour choisir une colonne de la table. La valeur sur 4 bits stockée dans la rangée et la colonne choisies constitue la valeur de sortie de la table de substitution.
Bien entendu, la figure 2 n'illustre qu'un exemple de table de substitution et les principes décrits dans la présente description pourraient être appliquée à tout type de table de substitution dans laquelle des données d'entrée sont substituées pour produire des données de sortie à partir d'une table de valeurs mémorisées.
La figure 3A illustre schématiquement un circuit de substitution 300 destiné à mettre en œuvre des opérations d'accès à une table de substitution selon un exemple de réalisation de la présente description. Le circuit 300 fait par exemple partie du circuit 100 de la figure 1.
Le circuit 300 comprend une table de substitution brouillée (SCRAMBLED S-BOX) 302 recevant des données d'entrée SB_IN et délivrant des données de sortie SB_OUT. La table de substitution brouillée 302 est par exemple mise en œuvre par une mémoire non volatile, dans laquelle la donnée d'entrée SB__IN fournit une entrée d'adresse à la mémoire et la donnée de sortie SB_OUT correspond à la valeur de donnée mémorisée à l'emplacement adressé de la mémoire.
La table de substitution brouillée 302 correspond par exemple à la table de substitution SI de la figure 2, dans laquelle une permutation a été appliquée aux emplacements de mémoire à
B16877 17-RO-0644 partir d'une clé de brouillage. A titre de variante, la table de substitution brouillée 302 pourrait correspondre à une version brouillée de toute autre table de substitution de la norme de cryptage DES ou d'une autre norme de cryptage, telle qu'une table de substitution utilisée dans les normes de cryptage TDES (Triple DES) , AES (Advanced Encryption Standard), or SM4 (précédemment connue sous le nom de SMS4).
Le circuit 300 comprend en outre un registre d'entrée (INPUT REG) 304 recevant une valeur d'entrée INPUT correspondant à une opération de substitution à réaliser en relation avec un algorithme cryptographique. Par exemple, la valeur d'entrée INPUT est le résultat d'une opération réalisée sur la donnée de message et la donnée de clé de la Figure 1.
Le circuit 300 comprend en outre un brouilleur (SCRAMBLER) 306 qui reçoit la valeur d'entrée en provenance du registre d'entrée 304 et produit une donnée d'entrée modifiée à fournir en tant qu'entrée SB_IN à la table de substitution brouillée 302. En particuliers, le brouilleur 306 modifie la donnée d'entrée à partir d'une clé S_KEY' fournie par un générateur de clé (KEY GEN) 308. Le générateur de clé 308 reçoit par exemple la clé de brouillage réelle S_KEY et une valeur aléatoire RAC produite par un générateur de nombre aléatoire (RNG) 310. Le générateur de nombre aléatoire 310 est par exemple un générateur de nombre pseudo-aléatoire ou un générateur de nombre réellement aléatoire. Dans certains modes de réalisation, le générateur de clé 308 reçoit également des valeurs aléatoires de clé RKEY en provenance du générateur de nombre aléatoire 310.
En fonctionnement, chaque ensemble d'une ou plusieurs opérations de substitution défini par l'algorithme cryptographique est mis en œuvre, par le circuit de la figure 3A, par une série de m ensembles d'une ou plusieurs opérations d'accès en table de substitution, m étant par exemple un entier supérieur ou égal à deux. Seul un des m ensembles d'une ou plusieurs opérations d'accès en table de substitution correspond à l'ensemble réel d'opérations de substitution de l'algorithme cryptographique et utilisé la bonne clé de brouillage S_KEY. Les autres m-1 ensembles
B16877 17-RO-0644 d'une ou plusieurs opérations d'accès de chaque série correspondent à des ensembles factices d'opérations de substitution impliquant de fausses clés de brouillage S_KEY', qui sont par exemple chacune différente les unes des autres pour une série donnée d'accès en table de substitution.
Par exemple, pour chaque opération de substitution à réaliser au moyen de la table de substitution 302, la valeur de donnée d'entrée INPUT est chargée dans le registre d'entrée 302 et traitée m fois par le brouilleur 306 à partir de m valeurs différentes de la clé de brouillage S_KEY' pour produire m valeurs d'entrée en table de substitution modifiées différentes SB_IN fournies à la table de substitution 302. Le générateur de clé 308 produit les clés S_KEY' à partir de la valeur aléatoire RAC produite par le générateur de nombre aléatoire 310 et dans certains modes de réalisation à partir des valeurs de clé aléatoires RKEY.
Par exemple, la valeur RAC comprend une valeur sur r bits indiquant la position de la clé réelle S_KEY parmi les m-1 fausses clés, et indique ainsi la position de l'ensemble réel d'une ou plusieurs opérations de substitution parmi les m-1 ensembles factices d'une ou plusieurs opérations de substitution. Par example, 2r est égal à m. Dans un exemple, m est égal à 4, et r est égal à 2, une valeur RAC de 00 indiquant la première des quatre opérations de substitution, et une valeur de RAC de 11 indiquant la quatrième des quatre opérations de substitution.
Dans certains modes de réalisation, chacune des m-1 fausses clés produite pour une série donnée d'ensembles d'un ou plusieurs accès en table de substitution est dérivée de la clé réelle S_KEY. Par exemple, chaque fausse clé résulte de l'application d'une fonction F à la clé réelle S_KEY. Dans un mode de réalisation, la fonction F est une opération de décalaqe. Par exemple, la clé réelle et les trois fausses clés pourraient être comme suit :
VALEUR DE CLE Fonction F
RK [01001110] Aucune
B16877 17-RO-0644
FK1 [10011100] Décalage de 1 vers la gauche
FK2 [00111001] Décalage de 2 vers la gauche
FK3 [01110010] Décalage de 3 vers la gauche
où RK est la clé réelle S_KEY et FK1, FK2 et FK3 sont les fausses clés dérivées de la clé réelle.
A titre de variante, les fausses clés pourraient être produites à partir d'une autre fonction F appliquée à la clé réelle S_KEY ou à partir des valeurs de clé aléatoires RKEY fournies par le générateur de nombre aléatoire 310.
Dans certains modes de réalisation, pour une valeur donnée k de la clé cryptographique utilisée pendant l'algorithme cryptographique, les fausses clés de brouillage appliquées pendant chacun des m-1 ensembles d'opérations d'accès factices sont fixées jusqu'au changement de clé cryptographique.
La figure 3B illustre schématiquement le générateur de clé 308 de la figure 3A plus en détail selon un exemple de réalisation dans lequel les fausses clés de brouillage sont produites en décalant la clé de brouillage réelle S_KEY.
Le générateur 308 comprend par exemple un registre de décalage (SHIFT REGISTER) 312 recevant la clé de brouillage réelle S_KEY et un signal de sélection de décalage SHIFT indiquant un décalage à appliquer à la clé S_KEY. Par exemple, le signal SHIFT indique qu'aucun décalage n'est à appliquer quand l'ensemble réel d'une ou plusieurs opérations d'accès doit avoir lieu et applique un décalage vers la gauche d'un nombre différent de positions de bit pour chacune des fausses clés de brouillage à appliquer pendant les ensembles factices d'opérations d'accès.
Le générateur de clé 308 comprend par exemple un circuit de commande (CTRL) 504 produisant le signal de sélection de décalage SHIFT à partir de la valeur RAC fournie par le générateur de nombre aléatoire 310. En particulier, le circuit de commande 504 choisit par exemple la position de la clé de brouillage réelle pendant chaque série d'ensembles d'accès en table de substitution
B16877 17-RO-0644 à partir de la valeur RAC. Le circuit de commande 504 reçoit par exemple un signal d'horloge CLK indiquant la période de chaque opération d'accès en table de substitution de manière à pouvoir mettre à jour le signal de sélection de décalage SHIFT à l'instant approprié.
Selon un mode de réalisation qui sera à présent décrit en référence aux figures 4 et 5, chaque ensemble d'opérations de substitution correspond à toutes les opérations de substitution réalisées pendant l'exécution d'un algorithme cryptographique à partir d'un message et d'une clé donnés.
La figure 4 illustre le circuit cryptographique 100 de la figure 1 plus en détail pour une série de m ensembles d'opérations de substitution, chacun correspondant à l'exécution de l'algorithme DES à partir d'un message (MESSAGE) et d'une clé (KEY) donnés. Le circuit cryptographique 100 comprend par exemple un circuit 400 (F FONCTION) d'exécution d'une fonction d'itération, chaque itération comprenant par exemple une opération d'expansion (EXP) effectuée par un circuit 402, une opération d'OU exclusif (XOR) effectuée par un circuit 404 pour introduire une clé d'itération, l'opération de substitution (S-BOXES) effectuée par le circuit de substitution 300 et une opération de permutation (P-BOX) effectuée par un circuit 406. Le message M résultant de chaque exécution de l'algorithme DES est fourni à un registre de sortie (OP REG) 408, avec la valeur aléatoire RAC.
Le circuit cryptographique 100 est illustré de multiples fois à la figure 4 pour représenter l'opération de substitution effectuée pendant chacune des séries de m exécutions de l'algorithme DES. L'une de ces exécutions représentée à gauche de la figure 4 est basée sur la clé de brouillage réelle (RK) tandis que les autres exécutions sont respectivement basées sur différentes fausses clés de brouillage FK1 à FK(m-l). L'ordre des exécutions réelle et fictives du DES est choisi aléatoirement pour chaque série d'exécutions à partir de la valeur produite aléatoirement RAC.
La figure 5 est un chronogramme représentant un exemple des entrées MESSAGE et KEY du circuit 100 de la figure 4, des
B16877 17-RO-0644 opérations (CRYPTO OP) effectuées par le circuit 100 et du message de sortie (MESSAGE') produit au cours de chaque exécution.
Une première série SA1 d'exécutions du DES est réalisée à partir d'un message d'entrée Ml et d'une clé cryptographique kl et une deuxième série SA2 d'exécutions de DES est réalisée à partir d'un message d'entrée M2 et d'une clé cryptographique k2. Dans l'exemple de la figure 4, le nombre m d'exécutions de DES de chaque série est fixé à quatre, bien que, dans des variantes de réalisation, m puisse correspondre à tout entier supérieur ou égal à 2. La série SA1 comprend par exemple trois fausses exécutions de DES F(FK1), F(FK2) et F(FK3) respectivement à partir de fausses clés de brouillage FK1, FK2 et FK3, et une exécution réelle de DES F (RK) à partir de la clé de brouillage réelle RK. La série SA2 comprend par exemple trois fausses exécutions de DES F(FK4), F(FK5) et F(FK6) respectivement à partir de fausses clés de brouillage FK4, FK5 et FK6, et une exécution réelle de DES F(RK) à partir de la clé de brouillage réelle RK. La position de l'exécution réelle de DES parmi les exécutions fictives est choisie aléatoirement pour chaque série de m exécutions et est la troisième position de la série SA1 et la deuxième position de la série SA2 dans l'exemple de la figure 5.
Dans certains modes de réalisation, le groupe de fausses clés de brouillage de chaque série d'ensemble d'accès est fixé pour une clé cryptographique donnée et seule la position de l'ensemble réel d'opérations d'accès varie entre les séries. Chaque fois que la clé cryptographique change, un nouveau groupe de fausses clés de brouillage est par exemple sélectionné.
Le message MESSAGE' résultant de chaque exécution de l'algorithme cryptographique est par exemple émis à la suite de chaque exécution de l'algorithme cryptographique et ces message sont par exemple désignés par M(FK1) à M(FK6) dans le cas des exécutions fictives F(FK1) à F(FK6) et par Ml(RK) et M2(RK) dans le cas des exécutions réelles. Pendant chaque série d'exécutions, tous les messages sont par exemple stockés dans le registre de sortie 408 et la valeur aléatoire RAC est par exemple utilisée pour ne sélectionner que les messages réels en provenance du
B16877 17-RO-0644 registre de sortie 408 pour fournir le résultat de l'algorithme cryptographique.
La figure 6A illustre le circuit cryptographique 100 de la figure 1 plus en détail pour une série de m opérations de substitution réalisées à la place d'une seule opération de substitution. L'exemple de la figure 6A est à nouveau basé sur l'algorithme DES et implique le même circuit 400 de la figure 4. Toutefois, dans le cas de la figure 6A, chaque fois que le circuit de substitution 104 est appelé pour appliquer une opération de substitution au sein d'une exécution donnée de la fonction d'itération, une série de m opérations de substitution est effectuée.
Le circuit de substitution (S-BOXES) 300 est illustré de nombreuses fois à la figure 6A pour représenter l'opération de substitution réalisées pendant chacune de la série de m opérations de substitution. L'une de ces opérations de substitution représentée à gauche de la figure 6A est l'opération de substitution réelle basée sur la clé de brouillage réelle (RK) tandis que les autres opérations de substitution sont respectivement basées sur de fausses clés de brouillage FK1 à FK(m-l). L'ordre des opérations de substitution réelle et fictives est choisi aléatoirement pour chaque série d'opérations de substitution à partir de la valeur produite aléatoirement RAC.
La figure 6B illustre le circuit de substitution 300 de la figure 3A plus en détail selon un example de réalisation. Le circuit 300 de la figure 6B est par exemple semblable à celui de la figure 3A et de mêmes éléments sont désignés par de mêmes références et ne seront pas décrits à nouveau en détail.
A l'exemple de la figure 6B, le nombre m-1 de fausses opérations de substitution est par exemple variable et le générateur 308 produit par exemple, en plus de la valeur RAC, une valeur NFC indiquant le nombre d'opérations de substitution fausses ou factices à appliquer à la série courante d'opérations de substitution. Le générateur de clé 308 produit par exemple un bit d'occupation (BB) pour indiquer à un système hôte les périodes pendant lesquelles la table de substitution est occupée.
B16877 17-RO-0644
En outre, dans l'exemple de la figure 6B, les sorties de la table de substitution brouillée 302 sont fournies à un registre de sortie (OUTPUT REG) 602, qui reçoit également par exemple les valeurs aléatoires RAC et NFC en provenance du générateur de nombre aléatoire 310.
Dans certains modes de réalisation, la valeur NFC peut être fixée pour une clé donnée, tandis que dans d'autres modes de réalisation, cette valeur est produite aléatoirement pour chaque série d'opérations de substitution.
Par exemple, dans un mode de réalisation, la valeur NFC est une valeur sur 2 bits et la valeur RAC est une valeur sur 3 bits. Le nombre m-1 d'accès factices en table de substitution dans chaque série d'accès en table de substitution est par exemple égal à :
m - 1 = 2nfc - 1
Ainsi, la valeur de NFC étant égale à 0, 1, 2, ou 3, le nombre m1 d'accès en table de substitution peut par exemple être 0, 1, 3 ou 7. En outre, la valeur RAC est par exemple utilisée pour déterminer la position de l'accès réel en réalisant une opération de ET logique entre la valeur binaire sur 3 bits RAC et une valeur binaire sur 3 bits FN représentant le nombre m-1.
En produisant de manière aléatoire la valeur de NFC pour chaque série d'accès à la table de substitution, le temps de traitement de chaque accès en table de substitution sera variable. Ainsi, dans la mesure où la durée de chaque accès à la table de substitution n'est plus prévisible, le bit d'occupation BB indique par exemple au système de traitement hôte les périodes temporelles pendant lesquelles la table de substitution 302 est occupée.
Le registre de sortie 602 stocke par exemple chacune des valeurs de sortie SB_OUT en provenance de la table de substitution brouillée 302 pendant chacune des opérations de substitution de chaque série. De plus, le circuit 602 sélectionne par exemple l'ensemble réel de valeurs de sortie pour former la valeur de sortie OUTPUT à partir des valeurs RAC et NFC.
Le fonctionnement du circuit de la figure 6B va à présent être décrit plus en détail en référence à la figure 7.
B16877 17-RO-0644
La figure 7 est un chronogramme représentant des exemples de la clé cryptographique KEY utilisée pour produire la donnée d'entrée de chaque accès en table de substitution, la valeur RAC, les opérations d'accès en table de substitution OP et la valeur de sortie OUTPUT pendant une série d'accès SA1 et SA2 utilisant le circuit de la figure 6B.
Pendant la série d'opérations de substitution SA1, les valeurs de NFC et RAC sont aléatoirement fixées à 2 et 5, respectivement. Ainsi, à partir de l'équation ci-dessus, le nombre m-1 d'ensembles factices d'une ou plusieurs opérations en table de substitution de la série SA1 est égal à 3. Le nombre total d'ensembles d'accès en table de substitution de chaque série est égal à m et le résultat de l'opération NF*RAC est par exemple une valeur sur 3 bits qui peut prendre une valeur comprise entre 0 et NF, où 0 représente le premier accès de la série et NF représente le dernier accès de la série. Ainsi, dans l'exemple de la série d'accès SA1, la position de l'opération d'accès réelle est égale à un ET logique appliqué bit par bit aux valeurs 011 et 101, ce qui donne 001, correspondant au second accès de la série. Ainsi, dans l'exemple de la série d'accès SA1, l'ensemble réel d'opérations d'accès est en deuxième position et la série SA1 de m opérations d'accès comprend, séquentiellement : une opération d'accès factice utilisant une fausse clé de brouillage FK1 ; une opération d'accès réel RK1 utilisant la clé de brouillage réelle ; une opération d'accès factice utilisant une fausse clé de brouillage FK2 ; et une opération d'accès factice utilisant une fausse clé de brouillage FK3. Après la dernière opération d'accès, la valeur de sortie OUTPUT devient égale au résultat de l'opération d'accès réelle RAI.
Pendant la série d'opérations de substitution SA2, les valeurs de NFC et RAC sont aléatoirement fixées à 1 et 4, respectivement. Ainsi, le nombre m-1 d'opérations factices en table de substitution de la série SA2 est égal à 1 et la position de l'opération d'accès réelle de la série SA2 est égale à un ET logique appliqué bit par bit aux valeurs 001 et 100, ce qui donne 000, correspondant au premier accès de la série. Ainsi
B16877 17-RO-0644 dans l'exemple de la série d'accès SA2, les m opérations d'accès comprennent, séquentiellement : une opération d'accès réelle RK2 utilisant la clé de brouillage réelle ; et une opération d'accès factice utilisant une clé de brouillage aléatoire FK4. Après la dernière opération d'accès, la valeur de sortie OUTPUT devient égale au résultat des opérations d'accès réelles RA2.
Les exemples des figures 3A et 6A correspondent à des mises en œuvre matérielles. Dans des variantes de réalisation, le procédé de réalisation d'une opération d'accès en table de substitution décrit ici peut être mis en œuvre sous forme logicielle, comme on le décrira plus en détail en référence aux figures 8 et 9.
La figure 8 illustre schématiquement un système de traitement 800 selon un exemple de réalisation de la présente invention. Le système 800 comprend par exemple un dispositif de traitement (P) 802 couplé par l'intermédiaire d'un bus 804 à une mémoire 806 stockant une ou plusieurs tables de substitution (SBOXES). La mémoire 806 est par exemple une mémoire non volatile (NVM, Non-Volatile Memory). Le système 800 comprend également par exemple, couplés au bus 804, une mémoire volatile 808, qui est par exemple une mémoire RAM (mémoire à accès aléatoire) , une interface d'entrée/sortie (I/O INTERFACE) 810 et un générateur de nombre aléatoire (RNG) 812. Le dispositif de traitement 802 comprend par exemple un ou plusieurs noyaux de traitement commandés par des instructions stockées dans une mémoire d'instructions, par exemple, la mémoire 806 et/ou 808.
La figure 9 est un organigramme illustrant des opérations d'un procédé de réalisation d'opérations d'accès à une table de substitution selon un exemple de réalisation de la présente invention et utilisant le système de traitement de la figure 8.
A une opération 901, la valeur RAC est produite aléatoirement, par exemple, à partir d'une valeur aléatoire fournie par le générateur 812. Cette valeur est par exemple stockée dans la RAM 808. En outre, la clé de brouillage réelle S_KEY et une ou plusieurs valeurs d'entrée INPUT sont par exemple chargées dans la mémoire de travail du dispositif de traitement
B16877 17-RO-0644
802, la mémoire de travail correspondant par exemple à la RAM 808.
Les valeurs d'entrée sont par exemple les résultats, stockés dans la RAM 808, d'une opération précédente réalisée par le dispositif de traitement 802 mettant en œuvre une clé secrète. En outre, une variable i est stockée dans la RAM 808 et est initialisée à 0.
A une opération 902, on détermine si la variable i est égale à la position de l'accès réel. La position de l'accès réel est par exemple déterminée à partir des valeurs de RAC, NFC et NF comme on l'a décrit ci-dessus. Si la variable i n'est pas égale à la position réelle, à une opération 903, une ou plusieurs fausses clés de brouillage sont produites par le dispositif de traitement 802. Par exemple, chaque fausse clé est dérivée par le dispositif de traitement 802 de la clé réelle ou produite à partir d'une ou plusieurs valeurs aléatoires fournies par le générateur de nombre aléatoire 812. Après l'opération 903, ou après l'opération 902 dans le cas où i est égal à la position réelle à l'opération 902, l'opération suivante est 904.
A l'opération 904, le dispositif de traitement 802 effectue un ensemble d'un ou plusieurs accès en table de substitution à partir de la clé de brouillage, qui est soit la clé de brouillage réelle S_KEY, soit une fausse clé de brouillage si une telle clé a été produite à l'opération 903. Chaque ensemble d'un ou plusieurs accès en table de substitution est par exemple réalisé en adressant une ou plusieurs mémoires non volatiles, telle que la mémoire 806, qui stocke par exemple une table de correspondance correspondant à la table de substitution brouillée. Le résultat de chaque accès en table de substitution est stocké en mémoire, par exemple dans la mémoire RAM 808.
A une opération 905, on détermine si i est égal à m-1. Sinon, la variable i est incrémentée à une opération 906, puis l'on répète les opérations 902 à 905 à partir de la nouvelle valeur de i. Une fois que i est éqal à m-1, le procédé se termine à une opération 907. Par exemple, à l'opération 907, le résultat de l'ensemble réel d'un ou plusieurs accès en table de substitution est choisi pour être utilisé dans l'algorithme cryptographique, à partir des valeurs aléatoires RAC et NFC. Par
B16877 17-RO-0644 exemple, le dispositif de traitement 802 sélectionne dans la mémoire RAM 808, à partir des valeurs des valeurs aléatoires RAC et NFC, une adresse correspondant à l'emplacement de stockage de l'opération de substitution réelle.
La figure 10 illustre schématiquement un dispositif cryptographique 1000 selon un exemple de réalisation.
Le dispositif 1000 comprend par exemple un dispositif de traitement 1002 correspondant au processeur hôte du dispositif cryptographique 1000. Le dispositif de traitement 1002 est par exemple en communication avec un circuit cryptographique 1004 qui correspond par exemple au circuit 300 de la figure 3A, 4 ou 6A ou à certains des ou tous les éléments du système de traitement 800 de la figure 8. Le dispositif cryptographique 1000 comprend également par exemple une mémoire (MEM) 1006 et une interface d'entrée/sortie (I/O) 1008 en communication avec le dispositif de traitement 1002.
Le dispositif 1000 correspond par exemple à une carte de circuit intégré (souvent désignée sous le nom de carte à puce), à un dispositif électronique portable ou à tout autre type de dispositif électronique dans lequel doit être réalisée une fonction cryptographique. Dans certains modes de réalisation, l'interface d'entrée/sortie 1008 peut correspondre à une interface NFC (Near-Field Communication).
Un avantage des modes de réalisation décrits ici est que la découverte d'une clé secrète manipulée pendant les opérations de substitution d'un algorithme cryptographique au moyen de procédés par canaux auxiliaires peut être rendue considérablement plus difficile. En effet, en effectuant des accès factices en table de substitution à partir de fausses clés de brouillage, on crée une dissymétrie des fuites pendant chaque accès réel en table de substitution, et il devient très difficile de déterminer une corrélation significative entre les signaux de canaux auxiliaires pendant les accès en table de substitution et la valeur de la clé secrète
En outre, l'utilisation d'un même ensemble de fausses clés de brouillage pour une clé secrète donnée peut entraîner la
B16877 17-RO-0644 génération d'informations trompeuses quant à la valeur de la clé sur les canaux auxiliaires. En effet, une fausse clé de brouillage donnée utilisée plusieurs fois pour une même clé secrète peut être confondue avec les accès en table de substitution authentiques à partir d'une clé fantôme différente de la clé réelle. Avec plusieurs clés de brouillage différentes, le nombre de clés fantôme différentes qui sembleront avoir de bonnes corrélations peut être relativement élevé et sensiblement plus élevé que dans le cas de l'utilisation d'une clé secrète fictive et/ou d'un message fictif.
Un avantage de la mise en œuvre matérielle des figures 3A et 6B est que le passage entre les accès factices et réels en table de substitution peut être réalisé relativement rapidement, d'où il résulte un délai temporel relativement court pour les accès supplémentaires en table de substitution.
On a décrit au moins un mode de réalisation à titre d'illustration, mais de nombreuses variantes et modifications apparaîtront à l'homme de l'art. Par exemple, il apparaîtra à l'homme de l'art que le circuit de la figure 3B mettant en œuvre le générateur de clé n'est qu'un exemple et que de nombreuses variantes de mise en œuvre sont possibles.
Par ailleurs, alors que l'on a décrit des modes de réalisation dans lesquels chaque ensemble d'opérations de substitution consiste en une seule opération de substitution ou en un algorithme cryptographique dans son intégralité, des modes de réalisation de la présente invention pourraient également être appliqués à un niveau différent. Par exemple, on pourrait appliquer des modes de réalisation pour des itérations de l'algorithme de cryptage DES, une série de fausses itérations étant réalisée pour chaque itération réelle à exécuter.
En outre, bien qu'on ait décrit des modes de réalisation à partir d'une table de substitution unique, certains algorithmes cryptographiques, tels qu'un DES, utilisent plusieurs tables de substitution en parallèle. Les modes de réalisation décrits ici peuvent être appliqués à chacune des plusieurs tables de substitution fonctionnant en parallèle.
B16877 17-RO-0644
En outre, il apparaîtra à l'homme de l'art que les diverses caractéristiques décrites en relation avec les modes de réalisation peuvent être combinées, dans des variantes de réalisation, selon n'importe quelle combinaison. Par exemple, il 5 serait possible de mettre en œuvre le procédé d'accès en table de substitution de la présente invention au moyen d'une combinaison d'éléments matériels et logiciels.

Claims (15)

  1. REVENDICATIONS
    1. Procédé de mise en œuvre, par un circuit cryptographique (300, 800), d'une opération de substitution d'un algorithme cryptographique à partir d'une table de substitution brouillée (302), ce procédé comprenant:
    la réalisation, pour chaque ensemble d'une ou plusieurs opérations de substitution de l'algorithme cryptographique, d'une série d'ensembles d'une ou plusieurs opérations de substitution, dont :
    l'un est un ensemble réel d'une ou plusieurs opérations de substitution défini par l'algorithme cryptographique, l'ensemble réel d'une ou plusieurs opérations de substitution étant basé sur une donnée d'entrée modifiée par une clé de brouillage réelle (S_KEY) ; et un ou plusieurs sont des ensembles factices d'une ou plusieurs opérations de substitution, chaque ensemble factice d'une ou plusieurs opérations de substitution étant basé sur une donnée d'entrée modifiée par une fausse clé de brouillage différente (FK1 à FK6).
  2. 2. Procédé selon la revendication 1, dans lequel la position de l'ensemble réel d'une ou plusieurs opérations de substitution dans chaque série est choisie aléatoirement à partir d'une première valeur aléatoire (RAC).
  3. 3. Procédé selon la revendication 1 ou 2, comprenant en outre, pour chaque série d'ensembles d'une ou plusieurs opérations de substitution, le stockage d'une valeur de sortie (SB_OUT, M) et la sélection de la valeur de sortie correspondant à l'ensemble réel d'une ou plusieurs opérations de substitution à partir de ladite valeur aléatoire (RAC).
  4. 4. Procédé selon l'une quelconque des revendications 1 à 3, dans lequel chaque ensemble d'une ou plusieurs opérations de substitution comprend l'adressage d'un emplacement de mémoire d'une mémoire (302, 806) à partir de ladite donnée d'entrée modifiée (SB_IN) et la lecture d'une valeur de donnée audit
    B16877 17-RO-0644 emplacement de mémoire pour fournir une valeur de donnée de sortie (SB_OUT).
  5. 5. Procédé selon l'une quelconque des revendications 1 à 4, dans lequel :
    l'algorithme cryptographique est basé sur une clé secrète ;
    chaque série d'ensembles d'une ou plusieurs opérations de substitution comprend m-1 ensembles factices d'une ou plusieurs opérations de substitution, m étant un entier fixé à une valeur supérieure ou égale à 2 ou choisie aléatoirement ; et pour une clé donnée, un même groupe de fausses clés de brouillage est appliqué au cours des m-1 ensembles factices d'une ou plusieurs opérations de substitution.
  6. 6. Procédé selon l'une quelconque des revendications 1 à 5, dans lequel la réalisation de chaque ensemble d'une ou plusieurs opérations de substitution de ladite série comprend l'exécution de l'algorithme cryptographique à partir d'un même message d'entrée et d'une même clé secrète.
  7. 7. Procédé selon l'une quelconque des revendications 1 à 6, dans lequel lesdites différentes clés de brouillage appliquées au cours de chacun desdits ensembles factices d'une ou plusieurs opérations de substitution sont choisies aléatoirement.
  8. 8. Procédé selon l'une quelconque des revendications
    1 à 6, dans lequel lesdites différentes clés de brouillage appliquées au cours de chacun desdits ensembles factices d'une ou plusieurs opérations de substitution sont produites par un registre à décalage (312) recevant en entrée la clé de brouillage réelle.
  9. 9. Procédé selon l'une quelconque des revendications 1 à 8, dans lequel le nombre (m-1) d'ensembles factices d'une ou plusieurs opérations de substitution effectués dans chaque série est choisi aléatoirement.
  10. 10. Moyen de stockage non transitoire stockant un programme informatique configuré, lorsqu'il est exécuté par un dispositif de traitement (802), pour mettre en œuvre un procédé selon l'une quelconque des revendications 1 à 9.
    B16877 17-RO-0644
  11. 11. Circuit cryptographique comprenant :
    un circuit de mémoire (302, 806) stockant une table de substitution brouillée pour mettre en œuvre des opérations de substitution d'un algorithme cryptographique ; et un ou plusieurs circuits (304, 802) configurés pour opérations série chaque série réaliser, pour chaque ensemble d'une ou plusieurs algorithme plusieurs opérations plusieurs opérations comprenant :
    un ensemble réel d'une ou plusieurs opérations de substitution défini par l'algorithme cryptographique, l'ensemble réel d'une ou plusieurs opérations de substitution étant basé sur une donnée d'entrée modifiée par une clé de brouillage réelle (S_KEY) ; et un ou plusieurs ensembles factices d'une ou plusieurs opérations de substitution, chaque ensemble factice d'une ou plusieurs opérations de substitution étant basé sur une donnée d'entrée modifiée par une fausse clé de brouillage différente (FK1 à FK6).
  12. 12. Circuit cryptographique selon la revendication 11, comprenant en outre un générateur de nombre aléatoire (310, 812) configuré pour produire, pour chacune desdites séries d'ensembles d'une ou plusieurs opérations de substitution, une valeur aléatoire (RAC), dans lequel les un ou plusieurs circuits (304, 802) sont configurés pour sélectionner aléatoirement la position de l'opération de substitution réelle parmi les une ou plusieurs opérations de substitution factices à partir de la valeur aléatoire (RAC).
  13. 13. Circuit cryptographique selon la revendication 11 ou
    12, comprenant en outre :
    un registre d'entrée (304) configuré pour stocker une valeur d*entrée (INPÜT) ;
    un brouilleur (306) configuré pour modifier ladite valeur d'entrée à partir d'une clé de brouillage (S_KEY') ; et
    B16877 17-RO-0644 un générateur de clé (308) configuré pour produire la clé de brouillage (S_KEY') pour chaque opération de substitution de ladite série à partir de la valeur aléatoire (RAC) et de la clé de brouillage réelle (S_KEY).
  14. 14. Circuit cryptographique selon la revendication 13, dans lequel le générateur de clé (308) comprend un registre à décalage (312) configuré pour produire la clé de brouillage (S__KEY') en décalant ladite clé de brouillage réelle (S_KEY).
  15. 15. Circuit cryptographique selon la revendication 11 ou 12, dans lequel les un ou plusieurs circuits (304, 802) comprennent un ou plusieurs dispositifs de traitement (802) commandés par des instructions stockées dans une mémoire d'instructions (806, 808) pour sélectionner, pour chaque ensemble d'une ou plusieurs opération de substitution de chaque série, soit de mettre en œuvre l'ensemble réel d'une ou plusieurs opérations de substitution en modifiant la valeur d'entrée en utilisant la clé de brouillage réelle (S_KEY), soit de mettre en œuvre un ensemble factice d'une ou plusieurs opérations de substitution en modifiant la valeur d'entrée en utilisant l'une desdites différentes fausses clés de brouillage.
FR1851645A 2018-02-26 2018-02-26 Procede et circuit de mise en oeuvre d'une table de substitution Withdrawn FR3078464A1 (fr)

Priority Applications (5)

Application Number Priority Date Filing Date Title
FR1851645A FR3078464A1 (fr) 2018-02-26 2018-02-26 Procede et circuit de mise en oeuvre d'une table de substitution
EP19157876.4A EP3531613B1 (fr) 2018-02-26 2019-02-18 Procédé et circuit pour l'implémentation d'une table de substitution
US16/281,887 US11258579B2 (en) 2018-02-26 2019-02-21 Method and circuit for implementing a substitution table
US16/281,889 US11218291B2 (en) 2018-02-26 2019-02-21 Method and circuit for performing a substitution operation
US17/537,056 US11824969B2 (en) 2018-02-26 2021-11-29 Method and circuit for performing a substitution operation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR1851645A FR3078464A1 (fr) 2018-02-26 2018-02-26 Procede et circuit de mise en oeuvre d'une table de substitution

Publications (1)

Publication Number Publication Date
FR3078464A1 true FR3078464A1 (fr) 2019-08-30

Family

ID=63637941

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1851645A Withdrawn FR3078464A1 (fr) 2018-02-26 2018-02-26 Procede et circuit de mise en oeuvre d'une table de substitution

Country Status (3)

Country Link
US (1) US11258579B2 (fr)
EP (1) EP3531613B1 (fr)
FR (1) FR3078464A1 (fr)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11632231B2 (en) * 2020-03-05 2023-04-18 Novatek Microelectronics Corp. Substitute box, substitute method and apparatus thereof
JP7314108B2 (ja) * 2020-08-27 2023-07-25 株式会社東芝 暗号処理装置、暗号処理方法およびプログラム
US11449606B1 (en) * 2020-12-23 2022-09-20 Facebook Technologies, Llc Monitoring circuit including cascaded s-boxes for fault injection attack protection
CN112769551B (zh) * 2020-12-29 2022-07-26 杭州电子科技大学 基于fpga的sm4-gcm网络加密传输***实现方法
CN114519200B (zh) * 2022-04-19 2022-08-12 广州万协通信息技术有限公司 实时生成查找表的加密方法、装置、设备和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080019503A1 (en) * 2005-11-21 2008-01-24 Vincent Dupaquis Encryption protection method
US20090074181A1 (en) * 2004-07-22 2009-03-19 Herve Pelletier Method and device for executing crytographic calculation
US20130064362A1 (en) * 2011-09-13 2013-03-14 Comcast Cable Communications, Llc Preservation of encryption

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6966002B1 (en) 1999-04-30 2005-11-15 Trymedia Systems, Inc. Methods and apparatus for secure distribution of software
US7218251B2 (en) * 2002-03-12 2007-05-15 Sony Corporation Signal reproducing method and device, signal recording method and device, and code sequence generating method and device
JP2005527853A (ja) * 2002-05-23 2005-09-15 アトメル・コーポレイション 高度暗号化規格(aes)のハードウェア暗号法エンジン
JP2004212828A (ja) * 2003-01-08 2004-07-29 Sony Corp 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
KR20070093963A (ko) * 2004-09-24 2007-09-19 시냅틱 래버러토리즈 리미티드 대입 박스들
EP1798888B1 (fr) * 2005-12-19 2011-02-09 St Microelectronics S.A. Protection de l'exécution d'un algorithme DES
EP1997265B1 (fr) * 2006-03-10 2020-08-05 Irdeto B.V. Intégrité d'un système de traitement de données pour la protection de contenu basé utilisant de boites blanches
US8553877B2 (en) * 2007-10-01 2013-10-08 Blackberry Limited Substitution table masking for cryptographic processes
IL187046A0 (en) * 2007-10-30 2008-02-09 Sandisk Il Ltd Memory randomization for protection against side channel attacks
JP5433498B2 (ja) 2010-05-27 2014-03-05 株式会社東芝 暗号処理装置
FR2985624B1 (fr) 2012-01-11 2014-11-21 Inside Secure Procede de chiffrement protege contre des attaques par canaux auxiliaires
EP2831797B1 (fr) * 2012-03-30 2018-05-02 Irdeto B.V. Sécurisation de systèmes accessibles par l'utilisation d'un réarrangement des données dynamiques
US8855599B2 (en) * 2012-12-31 2014-10-07 Lookout, Inc. Method and apparatus for auxiliary communications with mobile communications device
US9838198B2 (en) * 2014-03-19 2017-12-05 Nxp B.V. Splitting S-boxes in a white-box implementation to resist attacks
US9430329B2 (en) * 2014-04-03 2016-08-30 Seagate Technology Llc Data integrity management in a data storage device
CN103905462B (zh) * 2014-04-16 2017-05-17 深圳国微技术有限公司 可抵御差分功耗分析攻击的加密处理装置及方法
KR102446866B1 (ko) * 2014-08-28 2022-09-23 삼성전자주식회사 부채널 공격을 방지하는 암복호화기 및 이의 구동 방법 그리고 이를 포함하는 제어 장치
CN104378196A (zh) * 2014-11-07 2015-02-25 昆腾微电子股份有限公司 加解密算法的安全执行方法和装置
US9819486B2 (en) * 2014-12-19 2017-11-14 Nxp B.V. S-box in cryptographic implementation
US9774443B2 (en) * 2015-03-04 2017-09-26 Apple Inc. Computing key-schedules of the AES for use in white boxes
US20160269175A1 (en) * 2015-03-09 2016-09-15 Qualcomm Incorporated Cryptographic cipher with finite subfield lookup tables for use in masked operations
CN104734842B (zh) * 2015-03-13 2018-06-08 上海交通大学 基于伪操作的电路旁路攻击抵御方法
CN104734845B (zh) * 2015-03-25 2018-11-23 上海交通大学 基于全加密算法伪操作的旁路攻击防护方法
US20160350520A1 (en) * 2015-05-29 2016-12-01 Nxp, B.V. Diversifying Control Flow of White-Box Implementation
FR3040515B1 (fr) * 2015-09-02 2018-07-27 St Microelectronics Rousset Verification de la resistance d'un circuit electronique a des attaques par canaux caches
NL2015745B1 (en) * 2015-11-09 2017-05-26 Koninklijke Philips Nv A cryptographic device arranged to compute a target block cipher.
EP3188000A1 (fr) 2015-12-29 2017-07-05 Gemalto Sa Système et procédé de masquage d'un secret cryptographique à l'aide d'une extension
EP3208789B1 (fr) * 2016-02-22 2020-08-05 Eshard Procédé de protection d'un circuit contre une analyse par canaux auxiliaires
CN107547189A (zh) * 2016-06-28 2018-01-05 埃沙尔公司 免受侧信道分析的保护方法和设备
US10771235B2 (en) * 2016-09-01 2020-09-08 Cryptography Research Inc. Protecting block cipher computation operations from external monitoring attacks
US11227071B2 (en) * 2017-03-20 2022-01-18 Nanyang Technological University Hardware security to countermeasure side-channel attacks
EP3407528A1 (fr) * 2017-05-24 2018-11-28 Koninklijke Philips N.V. Dispositif et procédé cryptographique
US10547449B2 (en) * 2017-05-30 2020-01-28 Nxp B.V. Protection against relay attacks in a white-box implementation
EP3413500A1 (fr) * 2017-06-09 2018-12-12 Koninklijke Philips N.V. Dispositif et procédé pour calculer un chiffrement par bloc
EP3422176A1 (fr) * 2017-06-28 2019-01-02 Gemalto Sa Method for securing a cryptographic process with sbox against high-order side-channel attacks
EP3447509B1 (fr) * 2017-08-21 2021-05-26 Eshard Procédé d'essai de la résistance d'un circuit à une analyse de canal latéral
CN107980212A (zh) * 2017-09-06 2018-05-01 福建联迪商用设备有限公司 防dpa攻击的加密方法及计算机可读存储介质
US20190116022A1 (en) * 2017-10-16 2019-04-18 Samsung Electronics Co., Ltd. Encryption device and operation method thereof
EP3499788B1 (fr) * 2017-12-15 2020-07-29 Secure-IC SAS Masquage dynamique

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090074181A1 (en) * 2004-07-22 2009-03-19 Herve Pelletier Method and device for executing crytographic calculation
US20080019503A1 (en) * 2005-11-21 2008-01-24 Vincent Dupaquis Encryption protection method
US20130064362A1 (en) * 2011-09-13 2013-03-14 Comcast Cable Communications, Llc Preservation of encryption

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
PAN J ET AL: "You Cannot Hide behind the Mask: Power Analysis on a Provably Secure S-Box Implementation", 25 August 2009, INFORMATION SECURITY APPLICATIONS, SPRINGER BERLIN HEIDELBERG, BERLIN, HEIDELBERG, PAGE(S) 178 - 192, ISBN: 978-3-642-10837-2, XP019135991 *
XIANWEN YANG ET AL: "Design research of the DES against power analysis attacks based on FPGA", MICROPROCESSORS AND MICROSYSTEMS, vol. 35, no. 1, 17 November 2010 (2010-11-17), pages 18 - 22, XP028133251, ISSN: 0141-9331, [retrieved on 20101117], DOI: 10.1016/J.MICPRO.2010.11.002 *

Also Published As

Publication number Publication date
EP3531613A1 (fr) 2019-08-28
EP3531613B1 (fr) 2020-09-30
US11258579B2 (en) 2022-02-22
US20190268134A1 (en) 2019-08-29

Similar Documents

Publication Publication Date Title
FR3078464A1 (fr) Procede et circuit de mise en oeuvre d'une table de substitution
EP2893431B1 (fr) Protection contre canaux auxiliaires
FR2971600A1 (fr) Dispositif et procede de calcul d'un resultat d'une multiplication scalaire
KR100662667B1 (ko) 동기 스트림 암호
FR2985624A1 (fr) Procede de chiffrement protege contre des attaques par canaux auxiliaires
EP3300293B1 (fr) Procédé de chiffrement ou de déchiffrement symétrique par bloc
EP2020773B1 (fr) Masquage d'une donnée dans un calcul
EP3300292B1 (fr) Procédé de chiffrement ou de déchiffrement protégé contre des attaques par canaux cachés
FR2919448B1 (fr) Dispositif, systeme, et procede de masquage de donnees traitees dans un circuit integre
FR2869174A1 (fr) Procede et dispositif pour determiner un resultat
EP3803636B1 (fr) Processeur ntt incluant une pluralite de bancs de memoires
US20220085974A1 (en) Method and circuit for performing a substitution operation
EP2284748B1 (fr) Procédé de contremesure pour protéger des données mémorisées
FR2960728A1 (fr) Procede de determination d'une representation d'un produit et procede d'evaluation d'une fonction
FR3083885A1 (fr) Circuit de generation de facteurs de rotation pour processeur ntt
FR3078419A1 (fr) Procede et circuit de realisation d'une operation de substitution
FR3078463A1 (fr) Procede et dispositif de realisation d'operations en table de substitution
EP2336931A1 (fr) Procédé de vérification de signature
EP3526946B1 (fr) Procédé de chiffrement, procédé de déchiffrement, dispositif et programme d'ordinateur correspondant
EP2053568A1 (fr) Procédé de génération de masques dans un objet communiquant et objet communiquant correspondant
EP3832947B1 (fr) Procédé d' exécution d'un programme d'ordinateur par un appareil électronique
EP4242884A1 (fr) Procédé de protection contre les attaques par canaux auxiliaires
FR2995110A1 (fr) Optimisation memoire cryptographique
CN114692193A (zh) 数据隐私保护的方法及终端设备
FR2878390A1 (fr) Systeme et procede cryptographiques pour chiffrer des donnees d'entree

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLSC Publication of the preliminary search report

Effective date: 20190830

ST Notification of lapse

Effective date: 20201006