FR3061384A1 - Procede de traitement de donnees - Google Patents

Procede de traitement de donnees Download PDF

Info

Publication number
FR3061384A1
FR3061384A1 FR1663215A FR1663215A FR3061384A1 FR 3061384 A1 FR3061384 A1 FR 3061384A1 FR 1663215 A FR1663215 A FR 1663215A FR 1663215 A FR1663215 A FR 1663215A FR 3061384 A1 FR3061384 A1 FR 3061384A1
Authority
FR
France
Prior art keywords
data
register
processor
block
input data
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
FR1663215A
Other languages
English (en)
Other versions
FR3061384B1 (fr
Inventor
Guillaume Barbu
Alberto BATTISTELLO
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Idemia France SAS
Original Assignee
Oberthur Technologies SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from FR1663215 external-priority
Application filed by Oberthur Technologies SA filed Critical Oberthur Technologies SA
Priority to FR1663215A priority Critical patent/FR3061384B1/fr
Publication of FR3061384A1 publication Critical patent/FR3061384A1/fr
Application granted granted Critical
Publication of FR3061384B1 publication Critical patent/FR3061384B1/fr
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/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/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • 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/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/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • 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

Abstract

Un procédé de traitement de données comprenant successivement une étape d'initialisation et une pluralité d'étapes chaînées appliquées chacune à un bloc correspondant desdites données. Chaque étape met en œuvre un processus de transformation d'une donnée d'entrée (I) en une donnée de sortie (Ci) qui utilise un algorithme cryptographique. Une partie au moins desdites étapes comprend la mise à jour (E14, E24) d'un registre (R) au moyen de combinaisons du contenu dudit registre (R), par sommes booléennes, avec deux valeurs parmi la donnée d'entrée (I) de l'étape concernée, la donnée de sortie de l'étape concernée et le bloc (Pi) associé à l'étape concernée. Le procédé comprend en outre une étape de comparaison (E30) du contenu du registre (R) à une valeur prédéfinie (R0).

Description

@ Titulaire(s) : OBERTHUR TECHNOLOGIES Société anonyme.
o Demande(s) d’extension :
® Mandataire(s) : JACOBACCI CORALIS HARLE Société par actions simplifiée.
FR 3 061 384 - A1 ® PROCEDE DE TRAITEMENT DE DONNEES.
@) Un procédé de traitement de données comprenant successivement une étape d'initialisation et une pluralité d'étapes chaînées appliquées chacune à un bloc correspondant desdites données.
Chaque étape met en oeuvre un processus de transformation d'une donnée d'entrée (I) en une donnée de sortie (Cj) qui utilise un algorithme cryptographique.
Une partie au moins desdites étapes comprend la mise à jour (E14, E24) d'un registre (R) au moyen de combinaisons du contenu dudit registre (R), par sommes booléennes, avec deux valeurs parmi la donnée d'entrée (I) de l'étape concernée, la donnée de sortie de l'étape concernée et le bloc (Pj) associé à l'étape concernée.
Le procédé comprend en outre une étape de comparaison (E30) du contenu du registre (R) à une valeur prédéfinie (Ro).
Figure FR3061384A1_D0001
Figure FR3061384A1_D0002
Domaine technique auquel se rapporte l'invention
La présente invention concerne la protection de données secrètes contre les attaques par injection de faute.
Elle concerne plus particulièrement un procédé de traitement de données.
L’invention s’applique particulièrement avantageusement dans le cas où l’on souhaite protéger un tel procédé de traitement de données contre les attaques par injection de faute, avec un coût limité en termes d’opérations additionnelles et d’utilisation de la mémoire.
Arriere-plan technologique
On connaît les procédés de chiffrement de données par blocs avec chaînage dans lesquels, après une étape d’initialisation appliquée au premier bloc de données, une pluralité d’étapes chaînées sont appliquées chacune à un bloc de données suivant.
Chaque étape met en œuvre un processus de transformation d’une donnée d’entrée en une donnée de sortie qui utilise un algorithme cryptographique, tel qu’un algorithme de type DES ou AES.
De tels procédés de traitement de données peuvent faire l’objet d’attaques par injection de faute qui permettent dans certains cas à l’attaquant de compromettre la sécurité des protocoles utilisés ou de déduire des informations secrètes (par exemple une clé cryptographique) sur la base des données erronées produites.
Objet de l’invention
Dans ce contexte, la présente invention propose un procédé de traitement (cryptographique) de données comprenant successivement une étape d’initialisation et une pluralité d’étapes chaînées appliquées chacune à un bloc correspondant desdites données, chaque étape mettant en œuvre un processus de transformation d’une donnée d’entrée en une donnée de sortie, le processus de transformation utilisant un algorithme cryptographique, la donnée d’entrée d’une étape chaînée correspondant à la donnée de sortie de l’étape précédente à une somme booléenne près, caractérisé en ce qu’une partie au moins desdites étapes (voire toutes lesdites étapes) comprend la mise à jour d’un registre au moyen de combinaisons du contenu dudit registre, par sommes booléennes, avec deux valeurs parmi la donnée d’entrée de l’étape concernée, la donnée de sortie de l’étape concernée et le bloc associé à l’étape concernée, et en ce que le procédé comprend une étape de comparaison du contenu du registre à une valeur prédéfinie.
On met ainsi à jour un registre qui tient compte des données manipulées à chaque étape et qui gardera la trace d’une erreur (provoquée par exemple par une attaque) au cours de l’une de ces étapes.
Grâce au chaînage des étapes, les différentes mises à jour peuvent se compenser et la vérification sera donc simplifiée. En particulier, ni les mises à jour du registre ni la vérification ne nécessite une réitération de l’algorithme cryptographique mis en œuvre à chaque étape.
Les deux valeurs susmentionnées sont par exemple la donnée d’entrée de l’étape concernée et le bloc associé à l’étape concernée, comme dans le cadre des premier et troisième modes de réalisation décrits plus loin respectivement en référence aux figures 2 et 4.
Selon une autre possibilité envisageable (qui correspond au second mode de réalisation décrit plus loin en référence à la figure 3), les deux valeurs susmentionnées sont la donnée d’entrée de l’étape concernée et la donnée de sortie de l’étape concernée.
Le procédé peut comprendre en outre une étape de détermination d’un mot par tirage aléatoire et une étape d’initialisation du registre au moyen dudit mot. Ainsi, les valeurs prises par le registre sont différentes d’une mise en œuvre à l’autre du procédé de traitement de données, ce qui améliore encore la protection contre les attaques.
La valeur prédéfinie est par exemple dans ce cas le mot susmentionné.
Dans certains cas, la donnée d’entrée d’une étape chaînée est égale à la donnée de sortie de l’étape précédente, comme dans le cas du troisième exemple de réalisation décrit plus loin en référence à la figure 4.
La donnée d’entrée d’une étape chaînée peut toutefois dans d’autres cas être égale à la somme booléenne de la donnée de sortie de l’étape précédente et du bloc associé à ladite étape chaînée, comme dans le cas du premier exemple de réalisation décrit plus loin en référence à la figure 2.
Selon une autre possibilité encore, la donnée d’entrée d’une étape chaînée peut être égale à la somme booléenne de la donnée de sortie de l’étape précédente et du bloc associé à l’étape précédente, comme c’est le cas pour le second mode de réalisation décrit plus loin en référence à la figure 3.
On peut prévoir par ailleurs, en cas d’égalité du registre et de la valeur prédéfinie à l’étape de comparaison, une étape d’émission de données obtenues au moyen desdites étapes appliquées auxdits blocs.
On peut également prévoir, en cas d’inégalité entre le registre et la valeur prédéfinie à l’étape de comparaison, une étape de traitement d’erreur, dont des exemples sont donnés dans la description qui suit.
Description detaillee d’un exemple de réalisation
La description qui va suivre en regard des dessins annexés, donnés à titre d’exemples non limitatifs, fera bien comprendre en quoi consiste l’invention et comment elle peut être réalisée.
Sur les dessins annexés :
- la figure 1 représente schématiquement les éléments principaux d’une entité électronique 1 au sein de laquelle est mise en œuvre l’invention ;
- la figure 2 représente, sous forme de logigramme, un premier exemple de procédé conforme à l’invention ;
- la figure 3 représente, sous forme de logigramme, un second exemple de procédé conforme à l’invention ; et
- la figure 4 représente, sous forme de logigramme, un troisième exemple de procédé conforme à l’invention.
La figure 1 représente schématiquement les éléments principaux d’une entité électronique 1 au sein de laquelle est mise en œuvre l’invention. Cette entité électronique est par exemple une carte à microcircuit, par exemple une carte à circuit intégré universelle (ou UICC pour Universal Integrated Circuit Card'). En variante, il pourrait s’agir d’un élément sécurisé (ou SE pour Secure Elément) par exemple un microcontrôleur sécurisé, d’un dispositif électronique portatif (ou hand-held electronic device selon l’appellation anglo-saxonne) - par exemple un terminal de communication ou un passeport électronique, ou d’un ordinateur.
L’entité électronique 1 comprend un processeur 2 (ici un microprocesseur), une mémoire vive 4 et une mémoire non-volatile réinscriptible 6 (par exemple de type EEPROM pour Electrically Erasable and Programmable Read-Only Memorÿ'). L’entité électronique 1 pourrait éventuellement comprendre en outre une mémoire morte. La mémoire vive 4 et la mémoire non-volatile réinscriptible 6 (ainsi que le cas échéant la mémoire morte) sont chacune liées au processeur 2 de sorte que le processeur 2 peut lire ou écrire des données dans chacune de ces mémoires.
Une de ces mémoires, par exemple la mémoire non-volatile réinscriptible 6, mémorise des instructions de programme d’ordinateur qui permettent la mise en œuvre de l’un au moins des procédés décrits ci-dessous en référence aux figures 2 à 4 lorsque ces instructions sont exécutées par le processeur 2.
Les mémoires 4, 6 stockent également des données représentatives de valeurs utilisées lors de la mise en œuvre des procédés décrits ci-dessous. Par exemple, la mémoire non-volatile réinscriptible 6 mémorise une clé cryptographique K.
La mémoire vive 4 mémorise par ailleurs, par exemple au sein de variables, des données traitées au cours des procédés décrits ci-dessous.
L’entité électronique 1 comprend en outre une interface de communication 8 avec des dispositifs électroniques externes. Dans le cas décrit ici où l’entité électronique 1 est une carte à microcircuit, l’interface de communication 8 comprend par exemple des contacts affleurant sur une face de la carte à microcircuit. En variante, l’interface de communication 8 pourrait être réalisée par un module de communication sans contact. De manière générale, l’interface de communication 8 peut être un module de communication (filaire ou sans fil) avec une autre entité électronique.
Le processeur 2 peut ainsi recevoir des données, ici sous forme de blocs de données P, (chaque bloc P, ayant une longueur en bits prédéterminée, par exemple 32, 64 ou 128), en provenance de l’autre entité électronique via l’interface de communication 8 et émettre d’autres données, par exemple un résultat d’application d’un algorithme cryptographique (tel que l’un de ceux décrits ci-dessous en référence aux figures 2 à 4) aux blocs de données P,, à l’autre entité électronique via l’interface de communication 8.
Dans les exemples qui suivent, les algorithmes cryptographiques appliqués sont de type chiffrement par blocs avec chaînage. De tels algorithmes cryptographiques transforment un nombre donné N de blocs de données P, en un nombre identique (N) de blocs de données chiffrées C,.
La figure 2 représente, sous forme de logigramme, un premier exemple de procédé conforme à l’invention. Ce premier exemple permet un chiffrement par blocs en mode CBC (pour Cipher Block Chaining).
Le procédé de la figure 2 débute à l’étape E2 par la réception de N blocs de données P, par l’entité électronique 1 (précisément par le processeur 2), via l’interface de communication 8, par exemple en provenance de l’autre entité électronique précitée.
Le processeur 2 détermine alors par tirage aléatoire un mot Ro de même longueur que les blocs de données P, reçus en entrée (étape E4). En variante, on pourrait prévoir qu’un crypto-processeur (embarqué dans l’entité électronique 1 mais distinct du processeur 2) détermine le mot aléatoire Ro et transmette le mot aléatoire Ro au processeur 2.
Le processeur 2 initialise alors un registre R avec ce mot aléatoire Ro (étape E6). Le mot aléatoire Ro est toutefois conservé en mémoire (par exemple dans la mémoire vive 4) pour utilisation à l’étape E30 décrite ci-dessous.
Le processeur 2 initialise par ailleurs un bloc de données Co avec le vecteur d’initialisation IV propre à l’algorithme de chiffrement concerné (étape E8). Ce vecteur d’initialisation IV est l’une des caractéristiques définissant l’algorithme de chiffrement (de même que la clé cryptographique K utilisée à l’étape E16). Aussi, le bloc de données Co pourrait être mémorisé en mémoire non-volatile réinscriptible 6 (et l’étape d’initialisation E8 serait alors omise).
On remarque que le bloc de données Co est utilisé ici pour faciliter l’exposé du fonctionnement sous forme d’une boucle (décrite ci-dessous), mais que ce bloc de données Co n’a pas un rôle propre distinct du vecteur d’initialisation IV. II ne s’agit pas en particulier d’un bloc de données chiffrées émis en sortie (étape E34).
Le processeur 2 initialise en outre un indice i à la valeur 1 à l’étape E10.
Le fonctionnement entre alors dans la boucle déjà évoquée.
Lors d’une étape E12, comme prévu par l’algorithme de chiffrement par blocs en mode CBC déjà mentionné, le processeur 2 combine par somme booléenne le bloc de données Pj (associé à l’indice courant i) et la donnée Cm (qui est soit le vecteur d’initialisation IV lorsque l’indice courant i vaut 1, soit le bloc de données chiffrées Cm obtenu à l’itération précédente de l’étape E16 dans les autre cas), mémorise le résultat de la combinaison (i.e. de la somme booléenne) dans une variable I : I = Pi θ Cm (avec écrasement de la valeur précédemment stockée dans ce registre). On rappelle que la somme booléenne, notée ici par le symbole φ, correspond à une opération logique de ou exclusif' (ou XOR) entre les mots à combiner. On note par ailleurs X«—Y dans la suite l’écriture d’une valeur Y (ou du contenu d’une variable Y) dans une variable X avec écrasement.
Le processeur 2 ajoute par ailleurs à l’étape E14 (ici encore au moyen d’une somme booléenne) les valeurs I et Cm au contenu du registre R. (Autrement dit, le contenu du registre R est remplacé, avec écrasement, par R φ I φ Cm, soit R^R®I©Cm.)
Le processeur 2 détermine alors à l’étape E16 le bloc de données chiffrées C, d’indice courant i par application, au contenu de la variable I, d’un algorithme cryptographique f utilisant la dé cryptographique K : Cj <— fK(l). L’algorithme cryptographique est par exemple de type DES, Triple DES ou AES.
Le processeur 2 détermine alors à l’étape E20 si l’indice courant i correspond au nombre N de blocs de données Pj à traiter.
Dans la négative (flèche N), le procédé se poursuit à l’étape E22 à laquelle le processeur 2 incrémente l’indice i et boude ensuite à l’étape E12 pour traitement du bloc de données Pj ayant le nouvel indice i (incrémenté).
Dans l’affirmative (flèche P), l’ensemble des blocs de données Pj ont été traités et le procédé se poursuit alors à l’étape E23 pour initier une nouvelle boude.
Dans ce but, l’indice i est initialisé à 1 à l’étape E23.
Le processeur 2 ajoute ensuite à l’étape E24 (au moyen d’une somme booléenne) le bloc de données Pj associé à l’indice courant i au contenu du registre R avec écrasement : la valeur R φ P, est écrite dans le registre R, soit R*-R© Pj.
Le processeur 2 détermine alors à l’étape E26 si l’indice courant i correspond au nombre N de blocs de données P, à traiter.
Dans la négative (flèche N), le procédé se poursuit à l’étape E28 à laquelle le processeur 2 incrémente l’indice i et boude ensuite à l’étape E24 pour ajouter (par somme booléenne) le bloc de données Pj ayant le nouvel indice i (incrémenté) au registre R.
On remarque que la sommation (booléenne) des blocs de données Pj dans une boude distincte de celle permettant les autres sommations afin de contrer certaine attaques par faute.
Dans l’affirmative (flèche P) à l’étape E26, l’ensemble des blocs de données P, ont été ajoutés au registre R et le procédé se poursuit alors à l’étape E30 pour vérification de l’égalité R = Ro.
En effet, les inventeurs ont remarqués que l’on pouvait écrire (notamment grâce au chaînage du chiffrement des différents blocs), les symboles Σ représentant des sommations booléennes :
NN ^(/y® Cj·) = IV ®® C j=ij=L soit :
Par conséquent, en fonctionnement normal (c’est-à-dire notamment en l’absence de faute générée par exemple par une attaque), les modifications du registre R au cours des passages successifs aux étapes E14 et E24 laissent au final le registre R inchangé et on vérifie donc R = Ro en fonctionnement normal à l’étape E30.
Si l’égalité R = Ro est vérifiée à l’étape E30 (flèche P), le processeur 2 peut commander l’émission via l’interface de communication 8 des N blocs de données chiffrées Ci (étape E34).
On remarque que la vérification du bon fonctionnement proposée ici ne nécessite que l’utilisation des registres R et Ro, et la mise en œuvre d’opérations de ou exclusif’ (somme booléenne) au cours du processus de traitement. II n’est en revanche pas nécessaire de doubler la mise en œuvre de l’opération cryptographique f effectuée à chaque itération (étape E16).
Si l’égalité R = Ro n’est pas vérifiée à l’étape E30 (flèche N), le processeur 2 met en œuvre une étape de traitement d’erreur (étape E32).
Une telle étape de traitement d’erreur E32 comprend par exemple l’écriture d’une donnée de blocage (ou verrou) dans la mémoire non-volatile réinscriptible 6. La présence d’une donnée de blocage dans la mémoire nonvolatile réinscriptible 6 empêchera tout fonctionnement ultérieur de l’entité électronique 1. Pour ce faire, le processeur 2 consulte par exemple la zone de mémorisation potentielle de la donnée de blocage lors du démarrage de son fonctionnement et arrête son fonctionnement en cas de détection de la donnée de blocage.
En variante, l’étape de traitement d’erreur E32 peut inclure l’écriture dans la mémoire non-volatile réinscriptible 6 de données indicatives d’un compteur d’erreurs. Lorsque ce compteur d’erreurs atteint un seuil prédéterminé, le processeur 2 commande par exemple l’écriture en mémoire non-volatile réinscriptible 6 d’une donnée de blocage comme décrite ci-dessus.
L’étape de traitement d’erreur E32 peut éventuellement comprendre en outre l’émission d’un message d’erreur via l’interface de communication 8.
La figure 3 représente, sous forme de logigramme, un second exemple de procédé conforme à l’invention. Ce second exemple permet un chiffrement par blocs en mode CFB (pour Cipher FeedBackj.
Le procédé de la figure 3 débute à l’étape E42 par la réception de N blocs de données P, par l’entité électronique 1 (précisément par le processeur 2), via l’interface de communication 8, par exemple en provenance de l’autre entité électronique précitée.
Le processeur 2 détermine alors par tirage aléatoire un mot Ro de même longueur que les blocs de données Pj reçus en entrée (étape E44). Comme déjà indiqué dans le cadre du premier exemple décrit en référence à la figure 2, on pourrait prévoir en variante qu’un crypto-processeur (embarqué dans l’entité électronique 1 mais distinct du processeur 2) détermine le mot aléatoire Ro et transmette le mot aléatoire Ro au processeur 2.
Le processeur 2 initialise alors un registre R avec ce mot aléatoire Ro (étape E46). Le mot aléatoire Ro est toutefois conservé en mémoire (par exemple dans la mémoire vive 4) pour utilisation à l’étape E74 décrite ci-dessous.
Le processeur 2 initialise par ailleurs à l’étape E48 une variable X (ayant une longueur en bits identique à celle des blocs de données Pj reçus en entrée) avec le vecteur d’initialisation IV. La variable X est par exemple mémorisée dans la mémoire vive 4.
Le processeur 2 initialise en outre un indice i à la valeur 1 à l’étape E50.
Le fonctionnement entre alors dans une boucle qui sera répétée N fois pour traiter successivement les N blocs de données Pj.
Le processeur 2 combine tout d’abord le contenu de la variable X et le contenu du registre R, en mémorisant le résultat dans le registre R avec écrasement (étape E52) ; autrement dit : R R φ X.
Le processeur 2 applique ensuite au contenu de la variable X un algorithme cryptographique f utilisant la clé cryptographique K, puis mémorise le résultat fK(X) dans la variable X avec écrasement : X «— fK(X) (étape E54).
Le processeur 2 combine à nouveau à l’étape E56 le contenu de la variable X (dont la valeur a évolué depuis l’étape E52) et le contenu du registre R, en mémorisant le résultat dans le registre R avec écrasement, soit : R «— R φ X.
Le processeur 3 combine ensuite à l’étape E58 le contenu de la variable X et le bloc de données Pj d’indice courant i et mémorise le résultat dans la variable X avec écrasement : X «— X φ P,.
La valeur courante de la variable X est alors mémorisée en tant que bloc de données chiffrées C, associé à l’indice courant i (étape E60). On remarque que du fait de l’application de l’algorithme cryptographique fK (étape E54), puis de la combinaison avec le bloc de données Pj (étape E58), le bloc de données C, en sortie est bien conforme au chiffrement en mode CFB.
Le processeur 2 détermine alors à l’étape E62 si l’indice courant i correspond au nombre N de blocs de données Pj à traiter.
Dans la négative (flèche N), le procédé se poursuit à l’étape E63 à laquelle le processeur 2 incrémente l’indice i et boucle ensuite à l’étape E52 pour traitement du bloc de données Pj ayant le nouvel indice i (incrémenté).
Dans l’affirmative à l’étape E62 (flèche P), l’ensemble des blocs de données Pj ont été traités et le procédé se poursuit à l’étape E64 à laquelle le registre R est modifié par combinaison avec le vecteur d’initialisation IV et avec le dernier bloc de données chiffrées Cn :
R^R©IV©Cn.
Le processeur initialise alors à 1 l’indice i (étape E66) afin de mettre en œuvre une nouvelle boucle comme décrit à présent.
Le processeur 2 combine à l’étape E168, par somme booléenne, le contenu du registre R et le bloc de données d’entrée Pj associé à l’indice courant i, en mémorisant le résultat dans le registre R avec écrasement : R «— R φ Pj.
Le processeur 2 détermine alors à l’étape E70 si l’indice courant i correspond au nombre N de blocs de données Pj à traiter (ici pour sommation booléenne au registre R).
Dans la négative, le procédé se poursuit à l’étape E72 pour incrémentation de l’indice i, puis à l’étape E68 pour mise en oeuvre de l’itération suivante dans la boucle.
Dans l’affirmative, tous les blocs de données P, ont été sommées au registre R et le processeur 2 vérifie alors à l’étape E74 l’égalité R = Ro.
En effet, dans le cadre du mode CFB, si on note h la valeur d’entrée de l’algorithme cryptographique fK à l’itération i (c’est-à-dire la valeur de X avant l’étape E54) et O, la valeur de sortie de ce même algorithme cryptographique (c’est-à-dire la valeur de X après l’étape E54), on peut écrire (notamment grâce au chaînage du chiffrement des différents blocs, en développant d’une part lj et d’autre part Oj), les symboles Σ représentant des sommations booléennes :
N N—l N N ® Oj) =IV®^Cj® Σ(ό-®ς) = j = l j = l j = l j = l
Par conséquent, en fonctionnement normal (c’est-à-dire notamment en l’absence de faute générée par exemple par une attaque), les modifications du registre R au cours des passages successifs aux étapes E52, E56 et E68, et lors du passage à l’étape E64 laissent au final le registre R inchangé et on vérifie donc R = Ro en fonctionnement normal à l’étape E74.
Si l’égalité R = Ro est vérifiée à l’étape E74 (flèche P), le processeur 2 peut commander l’émission via l’interface de communication 8 des N blocs de données chiffrées Ci (étape E78).
Comme dans le cas du premier exemple décrit en référence à la figure 2, la vérification du bon fonctionnement proposée ici ne nécessite que l’utilisation des registres R et Ro, et la mise en œuvre d’opérations de ou exclusif' (somme booléenne) au cours du processus de traitement. Il n’est en revanche pas nécessaire de doubler la mise en œuvre de l’opération cryptographique f effectuée à chaque itération (étape E54).
Si l’égalité R = Ro n’est pas vérifiée à l’étape E74 (flèche N), le processeur 2 met en œuvre une étape de traitement d’erreur (étape E76). Cette étape de traitement d’erreur E76 est du même type que l’étape E32 décrite en référence à la figure 2 et on pourra donc se reporter à la description de l’étape
E32 donnée ci-dessus pour plus de détails sur l’étape E76.
La figure 4 représente, sous forme de logigramme, un troisième exemple de procédé conforme à l’invention. Ce second exemple permet un chiffrement par blocs en mode OFB (pour Output FeedBack').
Le procédé de la figure 4 débute à l’étape E82 par la réception de N blocs de données P, par l’entité électronique 1 (précisément par le processeur 2), via l’interface de communication 8, par exemple en provenance de l’autre entité électronique précitée.
Le processeur 2 détermine alors par tirage aléatoire un mot Ro de même longueur que les blocs de données Pj reçus en entrée (étape E84). Comme déjà indiqué dans le cadre des deux premiers exemples décrits en référence aux figures 2 et 3, on pourrait prévoir en variante qu’un crypto-processeur (embarqué dans l’entité électronique 1 mais distinct du processeur 2) détermine le mot aléatoire Ro et transmette le mot aléatoire Ro au processeur 2.
Le processeur 2 initialise alors un registre R avec ce mot aléatoire Ro (étape E86). Le mot aléatoire Ro est toutefois conservé en mémoire (par exemple dans la mémoire vive 4) pour utilisation à l’étape E106 décrite ci-dessous.
Le processeur 2 initialise par ailleurs à l’étape E88 une variable X (ayant une longueur en bits identique à celle des blocs de données Pj reçus en entrée) avec le vecteur d’initialisation IV. La variable X est par exemple mémorisée dans la mémoire vive 4.
Le processeur 2 initialise en outre un indice i à la valeur 1 à l’étape E90.
Le fonctionnement entre alors dans une boucle qui sera répétée N fois pour traiter successivement les N blocs de données Pj.
Le processeur 2 combine tout d’abord le contenu de la variable X et le contenu du registre R, en mémorisant le résultat dans le registre R avec écrasement (étape E92) ; autrement dit : R «— R φ X.
Le processeur 2 applique ensuite au contenu de la variable X un algorithme cryptographique f utilisant la clé cryptographique K, puis mémorise le résultat fK(X) dans la variable X avec écrasement : X <— fK(X) (étape E94).
Conformément au mode OFB, le processeur 2 détermine alors le bloc de données chiffrées C, relatif à l’indice courant i en combinant par somme booléenne le bloc de données d’entrée P, associé à l’indice courant i et le contenu courant de la variable X : C, <— P, φ X (étape E96).
Le processeur 2 combine ensuite, par somme booléenne, le contenu du registre R et la valeur courante de la variable X (qui correspond toujours au résultat de l’étape E94), en mémorisant le résultat dans le registre R avec écrasement : R<- R ©X.
Le processeur 2 détermine alors à l’étape E100 si l’indice courant i correspond au nombre N de blocs de données P, à traiter.
Dans la négative (flèche N), le procédé se poursuit à l’étape E102 à laquelle le processeur 2 incrémente l’indice i et boucle à l’étape E92 pour traitement du bloc de données P, ayant le nouvel indice i (incrémenté).
Dans l’affirmative à l’étape E100 (flèche P), l’ensemble des blocs de données Pj ont été traités et le procédé se poursuit à l’étape E104 à laquelle le registre R est modifié par combinaison successive (à chaque fois au moyen d’une somme booléenne ou XOR) avec le vecteur d’initialisation IV, avec le dernier bloc de données chiffrées Cn et avec le dernier bloc de données d’entrée PN :
R <—R φ IV φ Cn Φ Pn.
Le processeur 2 vérifie alors à l’étape E106 l’égalité R = Ro.
En effet, dans le cadre du mode OFB, si on note h la valeur d’entrée de l’algorithme cryptographique fK à l’itération i (c’est-à-dire la valeur de X avant l’étape E94) et O, la valeur de sortie de ce même algorithme cryptographique (c’est-à-dire la valeur de X après l’étape E94), on peut écrire (notamment grâce au chaînage du chiffrement des différents blocs, en développant d’une part lj et d’autre part Oj), les symboles Σ représentant des sommations booléennes :
N N-l N-l NN
Φ 0;) = /V e Q) ® Ό Ό ® £C;) j = l j = l j = l j = lj=l soit
NN (Σ//·)®(Σο7·)=/^®^θρΝ j = lj = l
Par conséquent, en fonctionnement normal (c’est-à-dire notamment en l’absence de faute générée par exemple par une attaque), les modifications du registre R au cours des passages successifs aux étapes E92 et E98, puis lors du passage à l’étape E104 laissent au final le registre R inchangé et on vérifie donc R = Ro en fonctionnement normal à l’étape E106.
Si l’égalité R = Ro est vérifiée à l’étape E106 (flèche P), le processeur 2 peut commander l’émission via l’interface de communication 8 des N blocs de données chiffrées C, (étape E110).
Comme dans le cas du premier exemple décrit en référence à la figure 2, la vérification du bon fonctionnement proposée ici ne nécessite que l’utilisation des registres R et Ro, et la mise en œuvre d’opérations de ou exclusif' (somme booléenne) au cours du processus de traitement. Il n’est en revanche pas nécessaire de doubler la mise en œuvre de l’opération cryptographique f effectuée 5 à chaque itération (étape E94).
Si l’égalité R = Ro n’est pas vérifiée à l’étape E106 (flèche N), le processeur 2 met en œuvre une étape de traitement d’erreur (étape E108). Cette étape de traitement d’erreur E108 est du même type que l’étape E32 décrite en référence à la figure 2 et on pourra donc se reporter à la description de l’étape 10 E32 donnée ci-dessus pour plus de détails sur l’étape E108.

Claims (10)

  1. REVENDICATIONS
    1. Procédé de traitement de données comprenant successivement une étape d’initialisation et une pluralité d’étapes chaînées appliquées chacune à un bloc (Pj) correspondant desdites données, chaque étape mettant en œuvre un processus de transformation d’une donnée d’entrée (I ; X) en une donnée de sortie (Ci ; X), le processus de transformation utilisant un algorithme cryptographique (fK), la donnée d’entrée d’une étape chaînée correspondant à la donnée de sortie de l’étape précédente à une somme booléenne près, caractérisé en ce qu’une partie au moins desdites étapes comprend la mise à jour (E14, E24 ; E52, E56 ; E92, E98) d’un registre (R) au moyen de combinaisons du contenu dudit registre (R), par sommes booléennes, avec deux valeurs parmi la donnée d’entrée (I ; X) de l’étape concernée, la donnée de sortie (X) de l’étape concernée et le bloc (Pj) associé à l’étape concernée, et en ce que le procédé comprend une étape de comparaison (E30 ; E74 ; E106) du contenu du registre (R) à une valeur prédéfinie (Ro).
  2. 2. Procédé selon la revendication 1, dans lequel lesdites deux valeurs sont la donnée d’entrée (I ; X) de l’étape concernée et le bloc (Pj) associé à l’étape concernée.
  3. 3. Procédé selon la revendication 1, dans lequel lesdites deux valeurs sont la donnée d’entrée (X) de l’étape concernée et la donnée de sortie (X) de l’étape concernée.
  4. 4. Procédé selon l’une des revendications 1 à 3, comprenant une étape de détermination (E4 ; E44 ; E84) d’un mot (Ro) par tirage aléatoire et une étape d’initialisation (E6 ; E46 ; E86) du registre (R) au moyen dudit mot (Ro).
  5. 5. Procédé selon la revendication 4, dans lequel ladite valeur prédéfinie est ledit mot (Ro).
  6. 6. Procédé selon l’une des revendications 1 à 5, dans lequel la donnée d’entrée (X) d’une étape chaînée est égale à la donnée de sortie (X) de l’étape précédente.
  7. 7. Procédé selon l’une des revendications 1 à 5, dans lequel la donnée d’entrée (I) d’une étape chaînée est égale à la somme booléenne de la donnée de sortie (Cm) de l’étape précédente et du bloc (P,) associé à ladite étape chaînée.
  8. 8. Procédé selon l’une des revendications 1 à 5, dans lequel la donnée d’entrée (X) d’une étape chaînée est égale à la somme booléenne de la donnée de sortie (X) de l’étape précédente et du bloc associé à l’étape précédente.
  9. 9. Procédé selon l’une des revendications 1 à 8, comprenant, en cas d’égalité du registre (R) et de la valeur prédéfinie (Ro) à l’étape de comparaison (E30 ; E74 ; E106), une étape d’émission (E34 ; E78 ; E110) de données (Ci) obtenues au moyen desdites étapes appliquées auxdits blocs (Pj).
  10. 10. Procédé selon l’une des revendications 1 à 9, comprenant, en cas d’inégalité entre le registre (R) et la valeur prédéfinie (Ro) à l’étape de comparaison (E30 ; E74 ; E106), une étape de traitement d’erreur (E32 ; E76 ; E108).
    1/2
    2/2
FR1663215A 2016-12-22 2016-12-22 Procede de traitement de donnees Active FR3061384B1 (fr)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR1663215A FR3061384B1 (fr) 2016-12-22 2016-12-22 Procede de traitement de donnees

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1663215A FR3061384B1 (fr) 2016-12-22 2016-12-22 Procede de traitement de donnees
FR1663215 2016-12-22

Publications (2)

Publication Number Publication Date
FR3061384A1 true FR3061384A1 (fr) 2018-06-29
FR3061384B1 FR3061384B1 (fr) 2019-05-24

Family

ID=58779112

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1663215A Active FR3061384B1 (fr) 2016-12-22 2016-12-22 Procede de traitement de donnees

Country Status (1)

Country Link
FR (1) FR3061384B1 (fr)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013024379A1 (fr) * 2011-08-18 2013-02-21 Nds Limited Modes de chiffrement par bloc d'opération non malléable
KR20150103394A (ko) * 2014-03-03 2015-09-11 장동훈 암호화 시스템 및 그것의 암호 통신 방법
CN105025037A (zh) * 2015-08-14 2015-11-04 武汉天喻信息产业股份有限公司 抗cpa攻击的密文分组链接模式mac算法的实现方法
US9331848B1 (en) * 2011-04-29 2016-05-03 Altera Corporation Differential power analysis resistant encryption and decryption functions

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9331848B1 (en) * 2011-04-29 2016-05-03 Altera Corporation Differential power analysis resistant encryption and decryption functions
WO2013024379A1 (fr) * 2011-08-18 2013-02-21 Nds Limited Modes de chiffrement par bloc d'opération non malléable
KR20150103394A (ko) * 2014-03-03 2015-09-11 장동훈 암호화 시스템 및 그것의 암호 통신 방법
CN105025037A (zh) * 2015-08-14 2015-11-04 武汉天喻信息产业股份有限公司 抗cpa攻击的密文分组链接模式mac算法的实现方法

Also Published As

Publication number Publication date
FR3061384B1 (fr) 2019-05-24

Similar Documents

Publication Publication Date Title
EP3152860B1 (fr) Procédé d&#39;authentification d&#39;une première entité électronique par une seconde entité électronique et entité électronique mettant en oeuvre un tel procédé
EP2842232B1 (fr) Procédé de contrôle de redondance cyclique protégé contre une attaque par canal auxiliaire
FR2867635A1 (fr) Procede de traitement de donnees securise, base notamment sur un algorithme cryptographique
FR3011653A1 (fr) Procedes et dispositifs de masquage et demasquage
FR3056322A1 (fr) Procede de chiffrement ou de dechiffrement protege contre des attaques par canaux caches
EP3502899B1 (fr) Procédé de détermination d&#39;une somme d&#39;intégrité, programme d&#39;ordinateur et entité électronique associés
EP3419246A1 (fr) Procédé d&#39;authentification par défi-réponse d&#39;un élément sécurisé (se) auprès d&#39;un microcontrôleur
EP1609326A2 (fr) Procede de protection d&#39;un terminal de telecommunication de type telephone mobile
FR3046000A1 (fr) Procede de reception de donnees au sein d&#39;une entite electronique et entite electronique associee
EP1538508A1 (fr) Procédé et dispositif de chiffrement et dechiffrement à la volée
EP3545641A1 (fr) Procédé de chiffrement cherchable
FR3061384A1 (fr) Procede de traitement de donnees
EP3493182B1 (fr) Procédé et dispositif de traitement cryptographique de données
EP3552346B1 (fr) Procédé d&#39;émission d&#39;un message, procédé de réception, dispositif d&#39;émission, dispositif de réception et système de communication associés
EP3136283B1 (fr) Dispositif et procédé sécurisation de commandes échangées entre un terminal et circuit intégré
EP3021515B1 (fr) Amélioration de l&#39;intégrité authentique de données à l&#39;aide du dernier bloc chiffrant ces données en mode cbc
EP3842970B1 (fr) Procédé de vérification du mot de passe d&#39;un dongle, programme d&#39;ordinateur, dongle et terminal utilisateur associés
EP3327607A1 (fr) Procede de verification de donnees
FR3060807A1 (fr) Procede de verification de l&#39;integrite d&#39;un programme, entite electronique associee et appareil electronique comprenant une telle entite electronique
EP3672141A1 (fr) Procede de verification d&#39;integrite et de dechiffrement d&#39;un message chiffre, cryptomodule et terminal associes
EP3579491A1 (fr) Procédé de détermination d&#39;inverse modulaire et dispositif de traitement cryptographique associé
EP3340096A1 (fr) Procédé de configuration d&#39;un programme cryptographique destiné à être exécuté par un terminal
FR2856815A1 (fr) Procede d&#39;authentification de donnees contenues dans un objet a memoire
WO2017060495A1 (fr) Procédé et système de sauvegarde répartie dynamique
FR3025341A1 (fr) Securisation de cles de cryptage pour transaction sur un dispositif depourvu de module securise

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLSC Publication of the preliminary search report

Effective date: 20180629

PLFP Fee payment

Year of fee payment: 4

CA Change of address

Effective date: 20200120

CD Change of name or company name

Owner name: IDEMIA FRANCE, FR

Effective date: 20200120

PLFP Fee payment

Year of fee payment: 5

PLFP Fee payment

Year of fee payment: 6

PLFP Fee payment

Year of fee payment: 7