WO2009074728A1 - Procede de traitement cryptographique de donnees, notamment a l'aide d'une boite s, dispositif et programme associes - Google Patents

Procede de traitement cryptographique de donnees, notamment a l'aide d'une boite s, dispositif et programme associes Download PDF

Info

Publication number
WO2009074728A1
WO2009074728A1 PCT/FR2007/002063 FR2007002063W WO2009074728A1 WO 2009074728 A1 WO2009074728 A1 WO 2009074728A1 FR 2007002063 W FR2007002063 W FR 2007002063W WO 2009074728 A1 WO2009074728 A1 WO 2009074728A1
Authority
WO
WIPO (PCT)
Prior art keywords
input
data
masking
value
masks
Prior art date
Application number
PCT/FR2007/002063
Other languages
English (en)
Inventor
Matthieu Rivain
Emmanuel Prouff
Original Assignee
Oberthur Technologies
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Oberthur Technologies filed Critical Oberthur Technologies
Priority to PCT/FR2007/002063 priority Critical patent/WO2009074728A1/fr
Publication of WO2009074728A1 publication Critical patent/WO2009074728A1/fr

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/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
    • 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
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • H04L2209/046Masking or blinding of operations, operands or results of the operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

L'invention concerne un procédé et un système associé de traitement cryptographique de données représentées sous forme numérique, le procédé étant mise en œuvre par une entité électronique (10) et comprenant une transformation (E110) d'une donnée d'entrée (M'i-1), masquée par au moins un premier masque d'entrée (X, X1, X2), en une donnée de sortie (M'i), ladite transformation mettant en œuvre une table de conversion (S) représentant une fonction non linéaire (F), le procédé étant caractérisé par les étapes suivantes: a- comparaison (E204, E304, E406) entre une valeur de masquage (A) et ledit premier masque d'entrée (X, X1, X2); b- détermination (E206, E306, E408), à l'aide de ladite table de conversion, d'une donnée de sortie correspondant à la donnée d'entrée masquée à laquelle on applique ladite valeur de masquage; c- stockage (E206, E306, E408), dans un registre (R0, R1) dépendant du résultat de ladite comparaison, de la donnée de sortie déterminée.

Description

PROCEDE DE TRAITEMENT CRYPTOGRAPHIQUE DE DONNEES. NOTAMMENT A L'AIDE D'UNE BOITE S, DISPOSITIF ET PROGRAMME
ASSOCIES
L'invention concerne un procédé de traitement cryptographique de données, ainsi qu'un dispositif et un programme associés.
Dans de tels procédés, on a fréquemment recours au masquage des données afin de lutter contre les attaques, par exemple du type analyse de courant (notamment les attaques de type DPA ainsi dénommées d'après l'anglais "Differential Power Analysis") ou du type analyse de rayonnement électromagnétique.
Les techniques de masquage consistent à combiner la donnée (c'est-à-dire en pratique le nombre) que l'on souhaite utiliser (en pratique, auquel on souhaite faire subir une opération) avec un nombre imprévisible pour un attaquant extérieur (en général un nombre aléatoire ou pseudo-aléatoire) ; ainsi, les valeurs impliquées sont chaque fois différentes même en utilisant une donnée constante en entrée, ce qui rend impossible pour l'attaquant de déduire les données internes du procédé (et notamment les clés cryptographiques qu'il utilise) à partir de mesures faites de l'extérieur. Une part de la sécurité cryptographique est obtenue par l'utilisation de fonctions non-linéaires. Par exemple, il est courant de modéliser un chiffrement par bloc (block cipher) par la combinaison de fonctions affines et de fonctions non-linéaires. Les réalisations de telles fonctions non-linéaires sont particulièrement difficiles à protéger par masquage, du fait de la non-linéarité par rapport à l'opération de masquage.
Un exemple de procédé de traitement cryptographique est décrit par la demande de brevet internationale WO 2007/116140 qui met en œuvre une fonction non-linéaire de type boîte-S (S-Box selon la terminologie anglo- saxonne spécialisée du domaine considéré) appliquée à ces données masquées.
De telles boîtes-S ou "S-Boxes" sont réalisées en pratique au moyen d'une table de correspondance (fréquemment dénommée table-S ou look-up table [LUT] dans ce même domaine) mémorisée dans le dispositif cryptographique.
Les améliorations apportées par la demande de brevet susvisée permettent désormais d'utiliser une même table-S alors que de nouveaux masques indépendants sont utilisés lors de nouveaux calculs cryptographiques impliquant la boîte-S. On évite ainsi le re-calcul de tables-S.
Ainsi, lorsque l'on souhaite calculer une donnée de sortie de la boîte- S à partir d'une donnée d'entrée, il est nécessaire d'accéder à la table-S, par exemple pour y lire la donnée de sortie correspondant à celle d'entrée. L'accès répété, lors d'un processus cryptographique, à la même entrée (indice) de la table-S est toutefois préjudiciable en ce qu'une analyse de courant permet d'en détecter la valeur et donc la donnée d'entrée.
La demande susvisée a ainsi proposé des solutions alternatives par lesquelles le calcul de la donnée de sortie de la boîte-S est effectué par une combinaison linéaire portant sur les données de sortie correspondant aux autres données d'entrée.
Néanmoins, l'accès à toutes les données de sortie génère des difficultés quant aux accès mémoire, stockage des données et émission de signaux électromagnétiques accessibles aux attaquants. Afin de réponse à ces problèmes, et notamment d'effectuer un calcul sur une boîte-S sans surcoût et en toute sécurité, l'invention prévoit un procédé de traitement cryptographique de données représentées sous forme numérique, le procédé étant mise en oeuvre par une entité électronique et comprenant une transformation d'une donnée d'entrée (par exemple une donnée sensible telle qu'une clé cryptographique), masquée par au moins un premier masque d'entrée, en une donnée de sortie, ladite transformation mettant en oeuvre une table de conversion (par exemple stockée en mémoire de ladite entité électronique) représentant une fonction non linéaire, le procédé étant caractérisé par les étapes suivantes: a- comparaison entre une valeur de masquage et ledit premier masque d'entrée; b- détermination, à l'aide de ladite table de conversion, d'une donnée de sortie correspondant à la donnée d'entrée masquée à laquelle on applique ladite valeur de masquage; c- stockage, dans un registre dépendant du résultat de ladite comparaison, de la donnée de sortie déterminée.
La détermination met en œuvre les boîtes-S. Une lecture de cette boîte-S est effectuée pour l'entrée formée de la donnée d'entrée masquée à laquelle on applique la valeur de masquage.
Selon l'invention, on utilise donc des registres qui sont, par nature, d'accès plus simple que les mémoires.
Le registre associé à une comparaison positive contient alors la donnée de sortie souhaitée (correspondant à la donnée d'entrée non masquée), alors que l'autre registre comprend l'enregistrement de données de sortie associées aux entrées différentes de la donnée d'entrée considérée. Ainsi, il est possible de mettre en place des opérations factices améliorant la sécurité, qui n'impactent pas le registre associé à la donnée de sortie souhaitée.
Cette table-S peut alors être stockée en mémoire non volatile sans occuper la mémoire vive, parfois réduite, allouées au microcontrôleur.
L'entité électronique est apte à manipuler les données numériques traitées, par exemple au moyen d'un microprocesseur.
Le procédé est, par exemple, un procédé de chiffrage ou de déchiffrage de données numériques, représentant en général un message, mais également potentiellement une clé cryptographique, une donnée intermédiaire, ou une partie seulement de tels éléments. On note que l'application de la valeur de masquage à la donnée d'entrée masquée est généralement une opération de suppression de masque (opération de démasquage) à partir de ladite valeur de masquage. En particulier, cette opération de démasquage peut consister en une nouvelle opération de masquage par la valeur de masquage, auquel cas les fonctions de masquage sont généralement des fonctions involutives (la double-composition de la fonction équivaut à la fonction identité), comme par exemple la fonction binaire OU EXCLUSIF (XOR). Selon un mode de réalisation, on itère les étapes a, b et c pour une pluralité de valeurs de masquage.
Ainsi, en accédant plusieurs fois à la table de conversion table-S, on ne divulgue pas l'entrée de la table associée à la donnée d'entrée; on récupère toutefois aisément dans le registre associé à la comparaison positive, la donnée de sortie.
Ainsi, la donnée de sortie ne découle pas d'un calcul complexe sur les autres données de sortie, mais de la lecture de sa valeur dans la table de conversion table-S et son stockage temporaire dans un registre, sans recalcul de table.
Notamment, on peut itérer les étapes a, b et c pour un nombre N de valeurs de masquage égale à la taille de la table de conversion, c'est-à-dire le nombre de données de sortie stockées dans ladite table.
En particulier, lesdites N valeurs de masquage sont choisies de sorte qu'appliquées à la donnée d'entrée masquée, elles génèrent l'ensemble des valeurs d'entrée de ladite table de conversion, et donc l'ensemble des valeurs de sortie possibles.
Ainsi, au travers des N itérations on accède à chacune des entrées de ladite table de conversion. Comme aucun accès n'est privilégié, la sécurité du système/procédé est renforcée.
En pratique on utilisera des masques binaires de même longueur que la donnée d'entrée binaire. Ainsi l'ensemble des masques binaires correspond à l'ensemble des entrées de la boîte-S (table-S).
Les masques binaires associés à une fonction d'addition booléenne ont l'avantage de constituer une fonction de masquage involutive simple, permettant de retrouver la valeur de donnée d'entrée lorsque celle-ci est masquée deux fois par le même masque.
L'invention s'applique ainsi à tout ordre de masquage, c'est-à-dire quelque soit le nombre de masques aléatoires appliquée à la donnée. Notamment, dans un mode de réalisation correspondant à l'ordre 2, ladite donnée d'entrée est masquée par un premier et un deuxième masques d'entrée, ladite étape de comparaison étant alors réalisée entre ledit premier masque d'entrée et une combinaison entre ladite valeur de masquage et ledit deuxième masque d'entrée.
Ainsi, la comparaison est positive lorsque la valeur de masquage correspond à la combinaison, par exemple addition booléenne, des deux masques d'entrée. Par conséquent, la donnée contenue dans le registre associée est celle de sortie correspondant à l'entrée masquée par les deux masques d'entrée puis masquée à nouveau par la valeur de masquage ci- dessus. La fonction de masquage étant involutive, la donnée de sortie correspond alors à la donnée d'entrée non masquée. En pratique, le calcul peut être obtenu en réalisant pour A=O à 2m-1, cmp *- compare(Xi ΦA, X2)
Figure imgf000007_0001
return R0 où Xi et X2 sont deux masques d'entrée, m la dimension d'entrée de la table-S, M' la donnée masquée, Ro et Ri deux registres, Zi et Z2 deux masques de sortie et compare une fonction retournant 0 en cas d'égalité, 1 sinon.
En particulier, la fonction de masquage peut être commutative, ce qui permet d'appréhender le double (voire plus) masquage quelque soit l'ordre d'application des masques d'entrée ou de sortie comme mentionné plus loin.
Dans un mode de réalisation, ledit stockage à l'étape c comprend l'addition de la donnée déterminée à la valeur dudit registre. En particulier, une pluralité d'itérations des étapes a, b et c est prévue et le procédé comprend une étape, ultérieure aux itérations, consistant à retourner une valeur de sortie formée à partir desdits registres.
En pratique, le calcul peut être obtenu en réalisant pour A=O à 2m-1, cmp <- compare(A, X)
Figure imgf000007_0002
cmp <— compare(R0, Ri) return RQΦ (cmp x R1) où X est le masque d'entrée, m la dimension d'entrée de la table-S, M' la donnée masquée, R0 et Ri deux registres et compare une fonction retournant 0 en cas d'égalité, 1 sinon.
Pour protéger la donnée de sortie obtenue par le mécanisme de masquage évoqué plus haut, on prévoit que les (deux) registres sont initialisés (avant de commencer les itérations) à une valeur de masquage Z.
Dans un mode de réalisation pratique, la comparaison met en œuvre une fonction de deux paramètres dont le résultat est un booléen (b), par exemple 0, en cas d'égalité entre les deux paramètres et le complémentaire du booléen (b ), par exemple 1, sinon, lesdits registres étant indexés par ledit résultat de la fonction de comparaison,
l if x ≠ y
En particulier, le procédé comprend une étape préalable (auxdites itérations et non à chaque itération) de génération pseudo-aléatoire dudit booléen.
En pratique: b <— rand(1)
Figure imgf000008_0001
En particulier, la comparaison comprend la lecture de l'entrée d'une table T à un index fonction des deux paramètres et d'une valeur prédéterminée. En pratique, on prévoit d'initialiser chaque entrée de la table T avec la valeur du complémentaire du booléen, de générer pseudo-aléatoirement un index et d'enregistrer ledit booléen à l'entrée de la table T correspondant audit index: r3 <- rαnd(m) , r3 étant l'index généré aléatoirement T <r- $;b,'b;...;b}, b étant le booléen généré
T[ri] <r- b
Puis d'effectuer la comparaison en lisant l'entrée T[(x θ r3) θ y] où x est la valeur de masquage (éventuellement combinée avec un deuxième masque) de l'itération et y le premier masque. Selon un mode de réalisation particulièrement intéressant, lesdits masques peuvent être des masques additifs, par exemple des masques booléens. Ainsi, on peut mettre en œuvre aisément l'addition booléenne à l'aide de fonctions OU EXCLUSIF (XOR). Selon une caractéristique particulière de l'invention, le procédé comprend, avec l'étape c, le masquage de ladite donnée de sortie par au moins un premier masque de sortie.
En particulier, ce masquage est double avec un deuxième masque de sortie dans le cas d'un masquage d'ordre 2, afin de sécuriser le système et le procédé selon l'invention contre des attaques d'ordre 2.
Lorsqu'un simple masque est utilisé pour masquer une donnée (masquage d'ordre 1), la fuite d'information sur la donnée masquée peut-être ciblée conjointement avec la fuite d'information sur le masque afin de retrouver de l'information sur la donnée en claire. Ce type d'attaques couramment appelées attaques d'ordre 2 peut être évité par l'utilisation d'un second masque (masquage d'ordre 2).
Selon une caractéristique pratique, lesdits registres sont des registres internes et donc mieux protégés, notamment d'un microcontrôleur sécurisé, par exemple celui mettant en œuvre ledit procédé. On limite ainsi le transfert de données au travers d'un bus de données moins sécurisé.
Le procédé est par exemple mis en œuvre par une séquence d'instructions mémorisées dans l'entité électronique et exécutées par un microprocesseur de l'entité électronique.
L'entité électronique peut être en pratique une carte à microcircuit, particulièrement adaptée à ce type d'opérations sécurisées.
Dans un mode de réalisation, ladite détermination d'une donnée de sortie comprend:
- la détermination d'un mot d'une table de conversion en fonction d'une partie de ladite donnée d'entrée et d'une partie correspondante de ladite valeur de masquage, ledit mot étant composé d'une pluralité de données de sortie de ladite table de conversion et comprenant ladite donnée de sortie; - l'accès à ladite donnée de sortie dans ledit mot à partir de l'autre partie de la donnée d'entrée et de l'autre partie de la valeur de masquage.
En particulier, ledit accès à la donnée de sortie dans ledit mot comprend: i) une étape de séparation dudit mot en deux moitiés respectivement des bits les plus significatifs et des bits les moins significatifs, ii) une étape de sélection d'une desdites moitiés dudit mot en fonction des valeurs des bits d'un même index dans respectivement l'autre partie de la donnée d'entrée et l'autre partie de la valeur de masquage. L'invention propose également un dispositif électronique de traitement cryptographique de données représentées sous forme numérique, le dispositif étant apte à effectuer une transformation d'une donnée d'entrée, masquée par au moins un premier masque d'entrée, en une donnée de sortie, ladite transformation mettant en œuvre une table de conversion représentant une fonction non linéaire, caractérisé par
- des moyens de comparaison entre une valeur de masquage et ledit premier masque d'entrée;
- des moyens de détermination, à l'aide de ladite table de conversion, d'une donnée de sortie correspondant à la donnée d'entrée masquée à laquelle est appliquée ladite valeur de masquage;
- des moyens agencés pour stocker, dans un registre dépendant du résultat de ladite comparaison, de la donnée de sortie déterminée.
Ce dispositif peut également inclure des caractéristiques correspondant aux modes de réalisation envisagés ci-dessus pour le procédé. L'invention propose enfin un produit programme d'ordinateur comprenant une suite d'instructions aptes, lorsqu'elles sont exécutées par un microprocesseur, à mettre en œuvre le procédé évoqué ci-dessus.
Les avantages, buts et caractéristiques particulières de ce dispositif électronique et de ce produit programme d'ordinateur étant similaires à ceux du procédé objet de la présente invention, telle que succinctement exposée ci- dessus, ils ne sont pas rappelés ici. D'autres avantages, buts et caractéristiques particulières de la présente invention ressortiront de la description qui va suivre, faite, dans un but explicatif et nullement limitatif en regard des dessins annexés, dans lesquels :
- la figure 1 représente schématiquement les éléments principaux d'une forme de réalisation possible pour une carte à microcircuit ;
- la figure 2 représente l'allure physique générale de la carte à microcircuit de la figure 1 ;
- la figure 3 représente, sous forme de logigramme, les étapes essentielles d'un chiffrement selon l'algorithme AES avec masquage ; - la figure 4 représente, sous forme de logigramme, un premier mode de réalisation de l'invention mis en œuvre dans le procédé de la figure 3;
- la figure 5 représente, sous forme de logigramme, un deuxième mode de réalisation de l'invention mis en œuvre dans le procédé de la figure 3;
- la figure 6 représente, sous forme de logigramme, un troisième mode de réalisation de l'invention mis en œuvre dans le procédé de la figure 3;
- la figure 7 illustre, sous forme de logigramme, un mode de réalisation de la fonction compare utilisée dans les différents modes de réalisation des figures 4 à 6;
- les figures 8a et 8b illustrent un exemple de mise en œuvre des tables-S utilisées dans les modes de réalisations des figures 4 à 7;
- la figure 9 représente, sous forme de logigramme, un premier mode de réalisation pour l'accès à un sous-mot d'un mot binaire, par exemple stocké dans la table-S de la figure 8b;
- la figure 10 représente, sous forme de logigramme, un deuxième mode de réalisation pour l'accès à un sous-mot d'un mot binaire, par exemple stocké dans la table-S de la figure 8b; et
- la figure 11 représente, sous forme de logigramme, un troisième mode de réalisation pour l'accès à un sous-mot d'un mot binaire, par exemple stocké dans la table-S de la figure 8b. On notera que les modes de réalisation relatifs aux figures 1 à 7 et les réalisations des figures 8 à 11 constituent des avancées indépendantes qui peuvent faire l'objet, chacune, d'une protection spécifique. Un exemple d'entité électronique est une carte à microcircuit 10 dont les principaux éléments électroniques sont représentés à la figure 1 et qui comporte un microprocesseur 2 relié d'une part à une mémoire vive (ou RAM de l'anglais Random Access Memory) 4 et d'autre part à une mémoire à semi- conducteur non-volatile réinscriptible 6, par exemple une mémoire morte effaçable et programmable électriquement (ou EEPROM de l'anglais Electrically Erasahle Programable Read OnIy Memory). En variante, la mémoire non- volatile réinscriptible à semi-conducteur 6 pourrait être une mémoire flash.
Les mémoires 4, 6 sont reliées au microprocesseur 2 par un bus chacune sur la figure 1 ; en variante, il pourrait s'agir d'un bus commun.
La carte à microcircuit 10 comporte également une interface 8 de communication avec un terminal utilisateur réalisée ici sous forme de contacts dont un assure par exemple une liaison bidirectionnelle avec le microprocesseur 2. L'interface 8 permet ainsi l'établissement d'une communication bidirectionnelle entre le microprocesseur 2 et le terminal utilisateur dans lequel la carte à microcircuit 10 sera insérée.
Ainsi, lors de l'insertion de la carte à microcircuit 10 dans un terminal utilisateur, le microprocesseur 2 va mettre en œuvre un procédé de fonctionnement de la carte à microcircuit 10, selon un jeu d'instructions, stockées par exemple dans une mémoire morte (ou ROM de l'anglais Read-
OnIy Memory) - non représentée - ou dans la mémoire réinscriptible 6, qui définit un programme d'ordinateur. Ce procédé inclut en général l'échange de données avec le terminal utilisateur via l'interface 8 et le traitement de données au sein de la carte à microcircuit 10, et précisément au sein du microprocesseur 2 avec utilisation éventuelle de données stockées dans la mémoire réinscriptible 6 et de données stockées temporairement dans la mémoire vive 4.
Des exemples de procédés qui mettent en œuvre l'invention sont donnés dans la suite.
La figure 2 représente l'allure physique générale de la carte à microcircuit 10 réalisée avec la forme générale d'un parallélépipède rectangle de très faible épaisseur. L'interface de communication 8 pourvue des contacts déjà mentionnés apparaît clairement sur la face de la carte à microcircuit 10 visible sur la figure 2, sous forme d'un rectangle inscrit dans la face supérieure de la carte à microcircuit 10. On décrit maintenant des exemples de réalisation de l'invention en référence à un algorithme cryptographique de type AES ("Advanced Encryption Standard' selon la terminologie anglo-saxonne) représenté synthétiquement sur la figure 3.
Il est néanmoins entendu que l'invention peut par exemple être appliquée dans le cas d'autres algorithmes impliquant une fonction non-linéaire, tel l'algorithme DES, avec par exemple l'utilisation de blocs de chiffrement (également connus sous la terminologie "block ciphef). Le masque ou les masques appliqués à la donnée en entrée de la fonction non-linéaire ne sont d'ailleurs pas nécessairement le ou les masques X appliqués au début de l'algorithme, mais s'en déduisent en général facilement selon les mécanismes de l'algorithme, par exemple tel que mentionné dans la demande WO 2007/116140 susvisée.
La figure 3 représente les étapes essentielles du procédé de chiffrement AES d'un mot M au sein de l'entité électronique. Le mot M est en général une partie d'un message à chiffrer ayant par exemple une longueur de 128 bits. D'autres longueurs sont naturellement envisageable, telles que les longueurs de 192 bits et 256 bits fréquemment utilisées.
L'exemple décrit ici utilise comme entité électronique la carte à microcircuit décrite précédemment en référence aux figures 1 et 2, mais d'autres types d'entité électronique peuvent naturellement être utilisés, tels que par exemple un ordinateur personnel.
Pour ce faire, l'entité électronique mémorise, par exemple au sein de la mémoire non volatile 6, une clé cryptographique K à partir de laquelle sont dérivées des sous-clés K0, ... Kn au moyen d'une procédure d'expansion de clé. L'obtention des sous-clés K0, ... Kn peut être réalisée selon des techniques connues et qui ne seront donc pas décrites en détail ici. On pourra se référer par exemple à la demande de brevet FR 2 838262.
On notera toutefois que l'invention, décrite dans la suite pour le calcul au niveau des boîtes-S (ou "S-box") impliquées à chaque itération (ou ROUND) de l'algorithme AES, pourrait être mise en œuvre lors de l'application de la fonction non-linéaire utilisée dans l'algorithme de dérivation des sous-clés K0, ...
Kn.
Le procédé de chiffrement commence à l'étape E100 par la réception, par exemple à travers l'interface 8 de la carte à microcircuit, du mot (en général une partie de message) M à chiffrer.
On procède alors au sein de l'entité électronique au tirage d'un nombre aléatoire X utilisé comme masque du mot M au cours d'une étape E102. Bien que l'on utilise les termes "nombre aléatoire", il s'agit par exemple en pratique d'un nombre pseudo-aléatoire déterminé à l'intérieur du microprocesseur 2. De manière générale, le nombre X et toute donnée référencée ci-après comme aléatoire doit être un nombre non-prévisible de l'extérieur de l'entité électronique.
On procède alors au cours d'une étape E104 au masquage du mot M afin d'obtenir un mot masqué M' par combinaison du mot M et du nombre aléatoire X au moyen d'une opération de OU EXCLUSIF (fréquemment dénommée "XOR1) : M' = M θ X.
Lorsqu'un simple masque est utilisé pour masquer une donnée (masquage d'ordre 1), la fuite d'information sur la donnée masquée peut-être ciblée conjointement avec la fuite d'information sur le masque afin de retrouver de l'information sur la donnée en claire. Ce type d'attaques couramment appelées attaques d'ordre 2 peut être évité par l'utilisation d'un second masque (masquage d'ordre 2).
Ainsi en variante, ce peut être deux masques X1 et X2 qui sont générés pour doublement masquer le message M: M' = (M θ Xi)θ X2. Cette configuration fournit une protection du message M au deuxième ordre de fuite. On décrira notamment par la suite un exemple de réalisation de l'invention impliquant ce double masquage. On affectera dans la suite le symbole prime aux valeurs masquées (ici par exemple M') tandis que les grandeurs qui ne portent pas le symbole prime représentent les grandeurs correspondantes sans masquage, c'est-à-dire telles qu'elles auraient été obtenues au cours de l'algorithme AES réalisé sans masquage ; ces grandeurs sans masquage sont introduites ici à des fins explicatives, mais ne seront pas manipulées par le procédé décrit ici qui utilise leur version masquée, sauf naturellement pour les grandeurs M et Mn utilisées respectivement en entrée et en sortie.
Il va à présent être procédé aux différentes étapes de l'algorithme AES en utilisant la donnée masquée M1 selon les étapes décrites ci-dessous qui correspondent aux étapes classiques de l'algorithme AES adaptées pour tenir compte du masquage.
On procède ainsi tout d'abord à la transformation initiale au moyen de la sous-clé K0 au cours d'une étape E106 en appliquant la clé Ko à la donnée au moyen d'un opérateur OU EXCLUSIF: M'o = M1 θ K0.
Si on dénomme M0 le résultat de la transformation initiale sans masquage (Mo = M θ Ko), on peut remarquer que le résultat MO de l'étape E106 peut s'écrire MO = M0 Θ X. On remarque ainsi que le résultat de l'étape E106 correspond au résultat de la transformation initiale sans masquage, masqué par la valeur du masque X.
On procède après la transformation initiale à une étape E108 d'initialisation à 1 d'un indice i repérant dans la suite l'itération (ou ROUND) concernée.
A l'étape E110, on fait subir au mot masqué M'M obtenu à l'étape précédente (étape E106 après la transformation initiale ou itération précédente) une itération (ROUND) des étapes E110 et E112, afin d'obtenir un nouveau mot masqué MV
Chaque itération est conçue pour que le résultat obtenu après l'itération M'j soit égal au résultat Mj après l'itération i dans un algorithme sans masquage, masqué avec un masque X identique à celui introduit à l'étape E104 : après chaque itération, M'j = Mj θ X. En alternative, on peut prévoir que le masquage est modifié à chaque itération, par exemple en démasquant M'j et en le re-masquant avec un nouveau masque Y. A titre d'exemple, cette opération peut être effectuée à l'étape E210 mentionnée dans la demande WO 2007/116140 susvisée. Une fois l'itération ou ROUND i réalisée, on incrémente la valeur de l'indice i au cours d'une étape E114, puis on teste au cours d'une étape E116 l'égalité i = n, où n est le nombre d'itérations plus un utilisées dans l'algorithme concerné (en général 10 itérations pour un mot de 128 bits).
Si la dernière itération n'a pas été atteinte (c'est-à-dire que l'égalité i = n n'est pas vérifiée), on retourne à l'étape E110 pour la mise en œuvre de l'itération suivante. A cette occasion, et comme indiqué ci-dessus, on peut générer un nouveau masque et l'utiliser pour masquer le résultat MV
Si en revanche la dernière itération est atteinte (c'est-à-dire lorsque l'on vérifie i = n), on procède à la transformation finale lors d'une étape E118, au cours de laquelle on obtient donc un mot IvTn à partir du mot M'n-i précédemment obtenu, et ce avec utilisation de la sous-clé Kn (étape E118).
Le résultat de la transformation finale M'n correspond ainsi au mot chiffré obtenu grâce à l'algorithme AES à partir du mot initial M, masqué avec le masque précédemment défini X (ou le dernier masque intermédiaire Y généré si l'on souhaite modifier le masquage au cours des itérations).
On procède alors à l'étape E120 au démasquage du mot obtenu à l'étape E118 afin d'obtenir le mot chiffré Mn : Mn = M'n Φ X (ou avec le masque Y).
Le mot chiffré Mn peut alors être émis à l'extérieur de l'entité électronique au moyen de l'interface 8 au cours d'une étape E122 qui termine le procédé de chiffrage par l'entité électronique du mot M.
La présente invention porte plus précisément sur l'utilisation des SBox lors de l'itération des étapes E110 et E112.
Dans le domaine de la cryptographie, la transformation MVi -> M'j peut être modélisée par la composition de trois opérations: une fonction additive de la clé dérivée Kj, une fonction non linéaire et une fonction linéaire. L'étape E110 illustre l'application de la fonction non linéaire par l'utilisation d'une boîte-S et décrite plus en détail en référence aux modes de réalisation ci-après.
L'étape E112 correspond alors à l'application des deux autres fonctions dont un exemple est proposé dans la demande WO 2007/116140 susvisée en lien avec sa figure 4, notamment des étapes de décalage de bits de sous-blocs (également appelée étape de Shift Row), de multiplication par une matrice (étape appelée Mix Column) et d'addition de la clé Ki (étape Add Round Key).
Pour la réalisation de l'étape E110, la table-S est stockée dans la mémoire non volatile 6, table également dénommée table de conversion (look- up table ou LUT). La table reçoit des données d'entrée de dimension m et fournit des données de sortie de dimension n, notamment m peut être égale à n. L'invention s'applique également dans le cas où ces deux dimensions sont différentes.
On dispose également de deux registres R0 et Ri dont l'utilisation est décrite ci-après. Ces registres sont notamment des registres binaires aptes à stocker des données numériques de sortie de la table-S (c'est-à-dire qu'ils ont une dimension appropriée au moins égale à n permettant ce stockage). En particulier, ces registres sont prévus dans le microcontrôleur de la carte 10 voire dans le microprocesseur 2.
On a représenté un premier mode de réalisation de l'étape E110 à la figure 4. A l'étape E200, on dispose de la donnée masquée M'M et du masque
X, tous deux représentés sous forme binaire de dimension m.
A l'étape E202, on initialise une variable binaire de masquage A à 0, qui sert à définir des itérations successives d'accès à la table S. Cette valeur A prend des valeurs entre 0 et 2m-1 et est donc de même dimension que M'M et X.
A l'étape E204, on procède à la comparaison de la variable binaire de masquage A de l'itération en cours, en l'espèce la valeur 0 pour la première itération, avec le masque X d'entrée. Pour ce faire, on utilise une fonction booléenne de comparaison définie par:
Figure imgf000018_0001
Ainsi, quelque soit l'itération considérée, si A=X alors la comparaison fournit la valeur cmp=0, sinon la valeur 1 est retournée.
En l'espèce si X est différent du masque 0, alors la fonction de comparaison retourne 1.
A l'étape E206, on utilise la table S pour calculer la donnée de sortie masquée B1 de SBox associée à M'MΘ A, notamment masquée par un masque binaire de sortie Z de dimension n: B' = S(MViθ A) θ Z.
On stocke cette valeur binaire B1 dans le registre d'indice cmp calculé précédemment à l'étape E204.
On remarquera que la valeur B' est stockée dans le registre R0 uniquement si A=X, et dans le registre Ri si A≠X. On incrémente la valeur A de une unité binaire à l'étape E208.
A l'étape E210, on compare la valeur de masquage A à 2m, représentant le nombre d'entrées de la table S.
En cas de comparaison négative, on procède à une nouvelle itération des étapes E204 à E210 qui permettent d'accéder à une nouvelle entrée de la table S.
En cas de comparaison positive à l'étape E210, on a parcouru l'ensemble des entrées de la table S et on met fin au processus de calcul de la SBox en retournant (étape E212) la valeur stockée dans le registre Ro, éventuellement accompagnée du masque de sortie Z. On remarque que le registre Ro contient la valeur S(M'MΘ A) Θ Z lorsque A=X, à savoir S(MV1S X) θ Z= S(MMΘ Xθ X) θ Z= S(MM) θ Z. On a ainsi, sans manipulé directement la valeur MM non masquée, obtenu sa transformée (masquée au premier ordre) par la fonction non linéaire de la SBox. On note, par ailleurs, que cette réalisation met en œuvre des opérations factices ou inutiles (dummy selon la terminologie anglo-saxonne) au sens où elles ne sont pas prises en compte dans le calcul de la valeur finale contenue dans R0, c'est le cas de tous les calculs stockés dans R1.
Afin d'éviter la présence de telles opérations factices éventuellement détectables par un attaquant mal intentionné pour déterminer la seule opération non factice, on peut proposer de modifier la méthode ci-dessus par les éléments suivants, illustrés par la figure 5.
On part des mêmes éléments (étape E300). La table S représente une fonction F non linéaire dite équilibrée ("balanced") au sens où elle vérifie: cardinal[F"1(y)] = 2m'n pour tout élément y binaire de longueur n. De telles fonctions équilibrées sont toujours utilisées dans les applications cryptographiques requerrant un niveau de sécurité important.
Lors de l'initialisation de l'étape E302, on initialise, outre A à 0, les registres Ro et R1 à, chacun, la valeur Z du masque de sortie. En présence de plusieurs masques, il y aura lieu de stocker la combinaison des masques de sorties, par exemple Z-|ΘZ2.
A l'étape E304, on compare A et X de façon similaire à l'étape E204 ci-dessus.
A l'étape E306, on augmente le registre RCmp de la valeur SBox de sortie calculée pour le masque A: RCmp <— Rcmp ® S(M'j.iθ A). On procède ainsi pour chacune des valeurs de masquage A de 0 à
2m-1 (étapes E308, E310 similaires aux étapes E208 et E210).
Au sortir des itérations, on compare, à l'étape E312, les deux registres: cmp <— compare(R0)Ri). Cette étape retourne 0 si les deux registres sont égaux et 1 s'ils sont différents. A l'étape E314, on retourne comme donnée de sortie masquée de la
SBox, la valeur Roθ(cmp x R1).
Au sortir de l'algorithme, le registre R1 comprend la valeur
Zθ ®Λ6F2 m S(M'MΘ A). Du fait des propriétés de la fonction F de la SBox
A≠X
(fonction balanced), cette valeur est égale, dans une exécution normale, à S(M1 J-Ie X) θ Z, c'est-à-dire identique à R0. Par conséquent, la comparaison de l'étape E312 doit retourner 0 dans une exécution normale et l'algorithme retourne alors R0 = S(MVιΦ X) Φ Z.
Le résultat E314 est alors dépendant de toutes les étapes exécutées, apportant un gain de sécurité. En référence à la figure 6, on a représenté un autre mode de réalisation de l'invention reposant sur l'affectation (pseudo)aléatoire des registres et sur une protection contre les fuites de deuxième ordre. Il est entendu que l'affectation des registres peut également s'appliquer au mode de réalisation correspondant à la figure 4. De façon symétrique, la mise en œuvre décrite en référence à la figure 5 peut également être réalisée par l'utilisation d'un double masquage (voire plus) et l'affectation des registres.
A l'étape E400, on dispose de la donnée doublement masquée M'M et des masque Xi et X2 (M'M = (Mj-1 e X1) Φ X2), tous représentés sous forme binaire de dimension m. A l'étape E402, on génère (pseudo)-aléatoirement un booléen b, qui prend donc soit la valeur 0 soit la valeur 1. On utilise ce même booléen pour toute l'exécution du calcul sur la SBox.
A l'étape E404, on initialise, de façon similaire à celle indiquée ci- dessus, la variable binaire de masquage A à 0, qui sert à définir des itérations successives d'accès à la table S.
A l'étape E406, on compare la valeur combinée X^ A des masques X1 et A, avec le masque d'entrée X2. Pour ce faire, on utilise la fonction comparet, qui dérive de la fonction compare, identifiée précédemment, comme suit: b if x = y b if x ≠ y
Une réalisation de cette fonction (également applicable à la fonction compare simple) est décrite ci-après en référence à la figure 7.
On note ici que l'on combine X1 avec A afin de ne pas manipuler directement Xi® X2, ce qui correspondrait à une protection d'ordre un (X^ X2 pouvant être vu comme un unique masque d'entrée). A l'étape E408, on utilise, de façon similaire à l'étape E206 ci- dessus, la table S pour calculer la donnée de sortie masquée B' de SBox associée à M'MΘ A, notamment masquée par deux masques binaires de sortie Z1 et Z2 de dimension n: B' = S(M1 He A) θ Zi® Z2. On stocke cette valeur binaire B' dans le registre d'indice cmp calculé précédemment à l'étape E406.
On remarquera que la valeur B' est stockée dans le registre Rb uniquement si A=XiθX2, et dans l'autre registre si A≠XiSX2. On remarquera également que, du fait de la détermination aléatoire de la valeur b au début d'un calcul par SBox, ce n'est pas toujours dans le même registre que l'on stocke la donnée de sortie correspondant à la combinaison des masques d'entrée (A=XiSX2).
On incrémente la valeur A de une unité binaire à l'étape E410.
A l'étape E412, on compare la valeur de masquage A à 2m, représentant le nombre d'entrées de la table S.
En cas de comparaison négative, on procède à une nouvelle itération des étapes E406 à E412 qui permettent d'accéder à une nouvelle entrée de la table S.
En cas de comparaison positive à l'étape E412, on a parcouru l'ensemble des entrées de la table S et on met fin au processus de calcul de la SBox en retournant la valeur stockée dans le registre Rb, éventuellement accompagnée des masques de sortie Zi et Z2.
On remarque que le registre Rb contient la valeur S(M'MΘ A)ΘZIΘZ2 lorsque A=XiθX2, à savoir S(Ml l-1ΘXiθX2)ΘZ1ΘZ2 ≈ S(Mi-iθXiθX2ΘX1ΘX2)ΘZ1ΘZ2 = S(Mj-1 JSZ1 ΘZ2.
On a ainsi, sans manipulé directement la valeur M1-1 non masquée obtenue sa transformée (masquée au premier ordre) par la fonction non linéaire de la SBox.
On note que les comparaisons impliquant la valeur de masquage A et réalisées ci-dessus, peuvent être mises en œuvre pas une comparaison bit à bit des deux paramètres des fonctions compare. Néanmoins, la figure 7 propose une réalisation alternative de la fonction compare^ également applicable à la fonction compare, utilisant une table T de valeurs booléennes de 2m entrées (même nombre d'entrées que la table-S et que les valeurs possibles de A). La fonction de comparaison est ainsi mise en œuvre par un simple accès en lecture à la table T.
Pour ce faire, lors d'une étape d'initialisation, par exemple lors de l'étape E402, on procède à la génération aléatoire d'un index r3: r3 <r-rαnd(m) (étape 500).
A l'étape 502, on initialise la table T avec la valeur b (où b est le complémentaire de b) à chacune des entrées à partir du booléen généré à l'étape E402: T <- $;b;b;...;b}.
A l'étape 504, on affecte la valeur du booléen b à l'entrée correspondant à l'index généré r3: T[r3] <- b .
Ainsi, à la fin du processus d'initialisation, on a une table T configurée comme suit:
\b sinon
Lors de l'utilisation de la fonction de comparaison (étapes E204, E304, E406), on reçoit deux valeurs α et β à comparer (étape E506) correspondant généralement à la donnée de masquage (éventuellement combinée à un masque) et à un masque d'entrée.
La comparaison consiste alors à l'étape E508 à retourner l'entrée du tableau d'indice (α ® r3) ® β. En effet, si α = β, alors le processus retourne T[r3]=b.
Ainsi, l'invention telle que décrit ci-dessus permet de sécuriser le calcul d'une sortie de SBox masquée à partir d'une entrée masquée pour les ordres de masquages traditionnellement utilisés, à savoir aussi bien pour un masquage de premier ordre qu'un masquage de deuxième ordre.
Quel que soit le mode de réalisation envisagé ci-dessus, l'architecture matérielle des équipements électroniques, tels que le microcircuit
10, impose parfois l'utilisation de mots machine sur un nombre de bits déterminés, par exemple 8 bits, 16 bits ou 32 bits. Ainsi, lorsque les données de sortie sont des mots d'un nombre inférieur de bits, par exemple 4 bits, on mémorise plusieurs mots de sortie S(M) dans un seul mot machine.
Les figures 8a et 8b illustrent cette réalisation pratique. Sur la figure 8a, on observe la table S utilisée ci-dessus présentant 2m mots de sortie de longueur n. Sur la figure 8b, la réalisation pratique mémorise les mots de sortie de longueur n, ici 2 bits, sur des mots machines de longueur 2wn, ici 16 bits (w est alors égal à 3). Le stockage de l'ensemble des mots de sortie S(M) ne requiert alors que l'utilisation de 2m'w mots machines, stockant chacun respectivement 2W mots de sortie S(M) (également appelés par la suite "sous- mots"). On obtient ainsi un stockage en mémoire efficace. La table ainsi formée comprend 2m w mots de longueur 2wn.
Les mots de sortie sont mémorisés de sorte qu'on accède au mot S(M) en sélectionnant un mot machine Smachine(MH) à partir des m-w bits les plus significatifs de M (notés pour la suite MH) et en récupérant le sous-mot du mot sélectionné à partir des w bits les moins significatifs de M (ci-après notés ML). Notamment Smachine(MH) = {S(MH,0), S(MH,1), .... S(MH,2W-1)}.
Une autre convention qui décompose le mot M peut également être envisagée, par exemple sélectionner le mot machine à partir des bits centraux de M et sélectionner le sous-mot à partir de bits extrêmes de M (par exemple les deux bits de poids fort et le bit de poids faible).
Au vu de ce qui précède, on peut calculer le mot machine Smachine(MH) de manière sécurisée en appliquant les algorithmes, évoqués ci- dessus en lien avec les figures 4 à 7, aux parties de poids fort de M1 et de son masque X.
On récupère ainsi SmaChine(MH) éventuellement masqué, en fonction de M1H1H, AH OU XH (éventuellement XI,H et X2,H lors du double masquage) (l'indice H représentant les m-w bits les plus significatifs). Sans masquage de sortie, on récupère SmaChine(MH).
Avec un masquage de sortie simple à l'aide du masque Z, on récupère SmaChine(MH)®Z (Z de longueur m-w). Avec un masquage de sortie double à l'aide des masques Zi et Z2, on récupère SmaChine(MH)©ZiθZ2 (Zi et Z2 de longueur m-w).
Des ordres de masquage supérieurs peuvent également être envisagés sans complexifier les mécanismes décrits par la suite. De l'autre côté, on dispose de M1 H1L, XL (éventuellement XI,L et X2,L lors du double masquage) qui correspondent aux bits d'identification du mot de sortie à l'intérieur du mot machine SmaChine(MH), éventuellement masqué.
On décrit maintenant, en référence aux figures 9 à 11, différents mécanismes permettant d'extraire efficacement, et éventuellement en toute sécurité eu égard aux degrés de masquage, le sous-mot (donc le mot de sortie) d'indice M1-I1L du mot machine Smachine(MH) éventuellement masqué en sortie, à partir de l'indice masqué M1 M1L et des masques AL OU XL et éventuellement X-I,L et X2,L.
Pour simplifier la notation, on note désormais U (ou U1 si masqué) le mot machine, j1 l'indice masqué, η (η1 et η2) les masques de l'indice, ru (ru1 et ru2) les masques de sorties masquant éventuellement le mot machine U1. On cherche désormais à extraire le sous-mot U(j) à partir de j' et des masques de j' (ou extraire U'(j) et les masques de sorties correspondant notés su (su1 et su2)), c'est-à-dire sans manipuler] pour des questions de sécurité. Ces différents mécanismes concernent généralement l'accès à un sous-mot d'indice j dans un mot binaire (U, U') formé de 2W sous-mots (U(O), ..., U(2W-1)} à partir de l'indice binaire j' masqué par un masque binaire correspondant rj, comprenant i) une étape de séparation dudit mot (U1 U1) en deux moitiés (H0(U), Hi(U), UH, UL) respectivement des bits les plus significatifs et des bits les moins significatifs, ii) au moins une étape de sélection d'une moitié dudit mot (U, U') en fonction des valeurs des bits d'un même index dans respectivement l'indice j' et le masque rj. En effet, on remarque que selon la valeur du bit de poids fort de j, le sous-mot auquel on veut accéder est soit dans la partie gauche (c'est-à-dire de poids fort), soit dans la partie droite (c'est-à-dire de poids faible) de U. Ainsi, en combinant l'utilisation des bits respectifs de l'indice masqué et de son masque (c'est-à-dire des bits contribuant à obtenir le bit correspondant de l'indice j non masqué), on sélectionne efficacement la partie du mot d'intérêt, sans manipuler l'indice j non masqué. En particulier, on choisira des sous-mots de même longueur.
On illustre une première réalisation de ces mécanismes à l'aide du mot 11=1010011101101101 composé de 8 sous-mots d'indice allant de 000 (sous-mot de poids fort - à gauche) à 111 (sous-mot de poids faible - à droite), en s'appuyant sur la figure 9. Plus précisément, on souhaite accéder au sous- mot dont l'indice masqué j1 vaut 101 et son masque η 111 (on rappelle j'≈jθη). On remarque que j=101θ111=010, donc on souhaite accéder au sous-mot 01 composé des 5è et 6è bits de U en partant de la gauche.
Cette réalisation met en oeuvre les étapes algorithmiques suivantes: for k=0 to w- 1 (R0, Ri) *- U swapj'[k](Ro, Ri) swaprj[k](ROl Ri) U <- Ro return R0 où Ro et Ri sont deux registres de longueur au moins égale à la demi-longueur de U, ici au moins 8 bits, et swapb(Ro, Ri) est une fonction qui intervertit le contenu des deux registres lorsque b=0:
Figure imgf000025_0001
Une telle fonction swapb peut être mise en œuvre par les étapes suivantes: tmp <- Ri Rb <— Ro R^ <- tmp
En alternative, swapb peut être mise en œuvre à l'aide de la fonction
Rotate(R.x) qui effectue une rotation de R sur x bits à droite ou à gauche, par SWaPi(R0, Ri)=Rotate((R0l Ri), l+b.l) où I est la longueur des registres. Ici, on utilisera un seul registre R composé des deux parties égales Ro et Ri, afin que le décalage de bits décale potentiellement les bits d'une partie du registre R à l'autre.
En alternative à l'utilisation de deux registres, il est possible d'utiliser un registre double (longueur 21, ici au moins 16 bits) constitué de deux parties. A l'étape E600, on initialise un compteur k à 0.
A l'étape E602, on affecte aux deux registres R0 et Ri, respectivement UH (10100111) et UL (01101101).
A l'étape E604, on applique la fonction swapb en fonction du bit le plus significatif de l'indice J -(JTO]1 J1H]1 •••. j'[w-1]}: j'[k=0]=1.
Ici, on intervertit alors les deux registres: Ro = 01101101 et Ri = 10100111.
A l'étape E606, on applique de nouveau la fonction swapb en fonction du bit de même index k, donc le plus significatif, du masque rj: rj[k=0]=1. Ici, on intervertit alors les deux registres: Ro = 10100111 et Ri =
01101101.
A l'étape E608, on remplace la valeur de U par le contenu du registre
R0.
A l'étape E610, on incrémente la valeur d'itération k: k=1. A l'étape E612, on compare k avec w (ici w=3). Comme k<3, on retourne à l'étape E602 en répartissant la nouvelle valeur de U dans les deux registres: R0 = 1010 et R1 = 0111.
Comme j'[k=1]=0 et rj[k=1]=1, on effectue une seule permutation des deux registres lors de l'étape E606: R0 = 0111 et Ri = 1010. On conserve ainsi à l'étape E608, U=0111.
A l'étape E612, k=2, donc on retourne à l'étape E602.
L'itération k=2 mène à R0 = 01 et Ri = 11 car deux permutations ont été effectuées aux étapes E604 et E606.
A l'étape E612, k=3=w, donc on passe à l'étape E614 par laquelle on retourne U=01. On obtient bien le sous-mot attendu.
On remarque qu'à chaque itération, la taille de U diminue de moitié et on converge ainsi par dichotomie vers le sous-mot souhaité. La sécurité de ce mécanisme est assurée par l'application des fonctions de permutation (inversion des deux registres) à toutes les itérations (avec des paramètres différents) même si aucune permutation n'en découle.
D'une façon générale, l'opération de permutation (swap) telle qu'envisagée ci-dessus confère, lorsqu'elle est utilisée de façon conditionnelle, un degré de sécurité élevé lorsqu'il s'agit d'identifier (par exemple pour sélection ou isolation) un élément parmi deux. A ce titre, il pourra être envisagé une protection de cette approche indépendante des autres enseignements décrits dans la présente demande. On peut noter qu'en utilisant une indexation de j' (et de ses masques) non plus de gauche à droite mais de droite à gauche, il y a lieu de procéder à une permutation (swap) supplémentaire à l'intérieur de chacune des itérations k.
Afin de fournir une protection d'ordre 1 de masquage des données, le mode de réalisation décrit ci-dessus peut être étendu à la donnée U' masquée à l'aide d'un masque aléatoire ru. Dans ce cas, on cherche à déterminer non seulement le sous-mot de U' (comme décrit ci-dessus) qui convient mais également le sous-mot de ru correspondant.
L'accès au sous-mot ru(j) à partir du mot machine ru est similaire au mécanisme ci-dessus.
Dans chacune des itérations k, on réalise juste après l'étape E608, des étapes E6021, E604', E606' et E608' appliquées au masque ru, similaires à celles de numéro correspondant E602, E604, E606 et E608.
L'algorithme proposé ci-dessus, devient alors: for k=0 to w-1
(R0, Ri) <- U' swapπk](R0, Ri) swaprj[k](R0) Ri) U1 ^- R0 (R0, Ri) *- ru swapπk](R0, Ri) swapq[k](ROl Ri) Tu *— Ro return (U1, ru)
On obtient en fin d'algorithme (étape E614) les valeurs U1 et ru correspondant aux sous-mots recherchés, telles que U1 = U Φ rU) où U est la valeur de sortie (de la boîte S) non masquée.
On décrit maintenant en référence à la figure 10, une réalisation plus sécurisée mettant en œuvre un double masquage des valeurs, aussi bien pour l'indice j' (masques rç1 et η2) que pour le mot U' (masques ru1 et ru2), par exemple résultant de l'étape E414 ci-dessus appliquée à la détermination de Smachïne(MH). Ces doubles masquages peuvent bien sûr être appliqués indépendamment.
Cette réalisation diffère, de celle de la figure 9, en substance par l'application de la fonction swap trois fois en fonction de bits correspondant dans l'indice j1 et dans chacun des deux masques rj1 et η2 (on s'aperçoit donc que l'invention peut être étendue sans difficulté à des ordres supérieurs de masquage en effectuant un nombre de permutations égal à 1 + nombre de masques de j) et par la détermination des sous-mots dans Ie mot U' et dans chacun des masques ru1 et ru2 de U. Pour une homogénéité de sécurité, il convient de choisir un même degré de masquage de l'indice j et du mot binaire U.
Les étapes E700 à E704 ne diffèrent pas des étapes E600 à E604. Puisque l'on a deux masques d'indice η1 et r,2, on effectue deux permutations conditionnelles aux étapes E706 et E708, indexées respectivement sur les deux bits correspondants des deux masques η1[k] et r-j2[k].
L'étape E710 est la même que l'étape E608 ci-dessus. Dans la même itération, on calcule de façon similaire les deux parties de masques ru1 et ru2 correspondant, aux étapes E702' à E7101 et E702" à E710".
A l'étape E712, on incrémente k de sorte à former w itérations (comparaison à l'étape E714). A l'étape E716, on retourne U', ru1 et ru2 représentant les sous-mots souhaités (donc valeurs de sortie de la table S) des mots initiaux. Ces trois valeurs vérifient: U1 = U θ ru1 Θ ru2.
Afin d'accroître encore plus la sécurité, notamment en évitant d'utiliser les variables intermédiaires U' et U'(j) qui constituent une faiblesse potentielle du fait de la dépendance à l'indice j, on propose le mécanisme suivant en référence à la figure 11.
Bien que décrit à l'aide d'un double masquage, le mécanisme s'applique à un simple masquage voire en l'absence de masquage du mot U.
On définit tout d'abord les deux fonctions H0(y) et Hi(y) qui retournent respectivement la moitié des bits les plus significatifs de y et la moitié des bits les moins significatifs de y. Ces deux fonctions sont aisément réalisables à l'aide de Ia fonction swapb évoquée ci-dessus, par exemple comme suit:
Hb(y) : (Ro1 Ri) ^ y swapb(Ro, Ri) return R0
Le mécanisme d'accès au sous-mot d'indice j peut être mis en œuvre à l'aide des instructions suivantes: for k=0 to w-1
(U', ru1, ru2) <- Select (2W-1V (U\ ru1, ru2), (j'.w-k], rj1[w-k], rj2[w-k])) return (U', ru1, ru2) où la fonction Select reçoit en paramètre une dimension long (2w"1"kn représentant la taille d'une moitié de mot U1, ru1 et ru2 que l'on souhaite récupérer en fin d'itération considérée), un premier 3-uplet d'un mot masqué et des deux masques associés, et un deuxième 3-uplet d'un bit masqué (ici le bit d'index w-k de l'indice j) et des deux masques associés, et retourne un 3-uplet (U', ru1 , ru2) vérifiant U' θ ru1 θ ru2 = Hj[w-k](U). On voit ainsi qu'en itérant cette fonction pour chacun des bits composant l'indice j, on isole successivement les moitiés du mot correspondant aux différents bits de l'indice j pour aboutir au sous-mot de U1 d'indice j accompagné des sous-mot des masques correspondants.
On note également que l'application de ce mécanisme à un masquage simple fait intervenir des 2-uplet et non plus des 3-uplet (extensible également à q masques et des q-uplets).
A l'étape E800, on initialise une valeur d'itération k à 0. Les étapes E802 à E820 illustrent un exemple de réalisation de la fonction Select.
A l'étape E802, on génère deux masques aléatoires de longueur /onsr=2w-1-kn.
A l'étape E804, on génère un booléen b aléatoire. A l'étape E806, on calcule un bit masqué à partir du booléen b et des bits d'index k (en partant du bit de poids le plus fort au bit de poids le plus faible au fur et à mesure des itérations) dans respectivement les deux masques de l'indice j': b' «- (η1 [w-k] θ b) Θ Tj2[w-k]
Dans cette étape, on veille à réaliser les opérations XOR dans l'ordre des parenthèses, à savoir d'abord rj1[w-k] θ b, puis l'addition du résultat avec le booléen rj2[w-k]. En effet, en respectant cet ordre, on garantit une protection contre les attaques d'ordre 2 puisque l'on ne manipule pas directement la valeur rj1 [w-k] θ η2[w-k] qui pourrait être vue comme un simple masque ne protégeant le bit j[w-k] que par un masquage d'ordre 1.
Pour les étapes suivantes E808 à E818 (qui peuvent être interverties entre elles car indépendantes), on utilise trois paires de registres adressables, ci-après notés A0, Ai (affectés au mot U), B0, Bi (affectés au premier masque de U), Co et Ci (affectés au deuxième masque de U).
On affecte successivement:
- au registre A indexé par b' calculé à l'étape E806, la partie Hj[W-k](U') masqué par un (ti) des masques aléatoires générés à l'étape E802:
Ab- *- Hnw-k](U') θ ti - à l'autre registre A1 l'autre partie de U' masquée par le même masque. On procède de même pour les deux masques ru1 et ru2, qui utilisent respectivement l'autre masque t2 et la combinaison des deux masques ti et t2, et sont stockés par paire respectivement dans B0, Bi, C0 et Ci.
A ce stade, on pourrait démontrer que pour l'index V-Zc1 ci-dessus, quelles que soient les valeurs des deux masques η1[w-k] et η2[w-k], on a: (Ab, Bbl Cb) = (Hj[W-R](U1) Θ t1 f Hj[w-k](ru1) Θ t2, Hj[w-k](ru2) Θ tiθ t2) (ApB5,C5) = (Hra(ϋ')Θt1,H]Fi5(rI1l)Θt2,HjF5(i;2)θt1 Θt2) et les valeurs stockées dans les registres vérifient: Ab θ Bb θ Cb = Hj[w-k](U). Du fait de l'indépendance de ces valeurs à celles de rç1 et rj2, on obtient une indépendance par rapport à l'indice j, et donc une sécurité accrue.
Ainsi à l'étape E820, on substitue (Ab, Bb, Cb) aux valeurs précédentes (U', ru1, ru2).
On incrémente ensuite k, à l'étape E822. On compare k et w pour déterminer si on met fin aux itérations, à l'étape E824 (similaire aux étapes E612 et E714 ci-dessus, avec retour à l'étape E802 pour une nouvelle itération).
A la fin des itérations (étape E826), on retourne (U1, ru1 , ru2) qui correspondent respectivement au sous-mot masqué recherché et aux deux sous-mots de masques qui permettent de démasquer le sous-mot U' obtenu: U1
Figure imgf000031_0001
L'utilisation des paramètres aléatoires ti, t2 et b n'est pas indispensable. Elle fournit néanmoins un gage de sécurité de l'algorithme car permet, d'une part, de protéger les valeurs manipulées par un double masquage (ti et t2, que l'on peut réduire à un simple masquage si nécessaire) et d'autre part, d'attribuer le résultat souhaité arbitrairement dans l'un ou l'autre des deux registres indexés sur b. En l'absence de b, on retourne à l'étape E826 A0, B0 et Co- En l'absence de U et t2, le paramètre long n'est pas nécessaire dans la fonction Select indiqué ci-dessus. Dans les mécanismes ci-dessus en lien avec les figures 9 à 11, les valeurs j'[k], rj[k], η1[k] et η2[k] jouent des rôles symétriques de telle sorte qu'il est envisageable d'intervertir leurs positions dans ces mécanismes, par exemple le valeur b1 à l'étape E806 peut utiliser j' au lieu du masque η1 et les fonctions H des étapes E808 et E814 sont alors indexées par le masque η1.
Grâce à ces mécanismes, on accède de façon sécurisé à sous-mot d'un mot notamment masqué, composé d'une pluralité de sous-mots, à l'aide d'un indice également masqué.
Les exemples qui précèdent ne sont que des modes de réalisation de l'invention qui ne s'y limite pas.

Claims

REVENDICATIONS
1 - Procédé de traitement cryptographique de données représentées sous forme numérique, le procédé étant mise en oeuvre par une entité électronique (10) et comprenant une transformation (E110) d'une donnée d'entrée (MVi), masquée par au moins un premier masque d'entrée (X, Xi, X2), en une donnée de sortie (M'j), ladite transformation mettant en œuvre une table de conversion (S) représentant une fonction non linéaire (F), le procédé étant caractérisé par les étapes suivantes: a- comparaison (E204, E304, E406) entre une valeur de masquage (A) et ledit premier masque d'entrée (X, Xi, X2); b- détermination (E206, E306, E408), à l'aide de ladite table de conversion, d'une donnée de sortie correspondant à la donnée d'entrée masquée à laquelle on applique ladite valeur de masquage; c- stockage (E206, E306, E408), dans un registre (R0, Ri) dépendant du résultat de ladite comparaison, de la donnée de sortie déterminée.
2 - Procédé selon la revendication 1 , dans lequel on itère les étapes a, b et c pour une pluralité de valeurs de masquage (A).
3 - Procédé selon la revendication précédente, dans lequel on itère pour un nombre de valeurs de masquage égale à la taille de la table de conversion de sorte à accéder à chacune des entrées de ladite table de conversion. 4 - Procédé selon l'une des revendications précédentes, dans lequel ladite donnée d'entrée est masquée par un premier et un deuxième masques d'entrée (Xi, X2), ladite étape de comparaison étant alors réalisée entre ledit premier masque d'entrée (X2) et une combinaison entre ladite valeur de masquage (A) et ledit deuxième masque d'entrée (Xi). 5 - Procédé selon la revendication précédente, dans lequel on itère, pour A=O à 2m-1 , les opérations: cmp <- comparefXi ΦA, X2) Rcmp *- S(M'ΘA) WZ1QZ2 puis on retourne R0 où X1 et X2 sont deux masques d'entrée, m la dimension d'entrée de la table-S, M1 la donnée masquée, R0 et Ri deux registres, Z1 et Z2 deux masques de sortie et compare une fonction retournant 0 en cas d'égalité, 1 sinon.
6 - Procédé selon l'une quelconque des revendications 1 à 4, dans lequel ledit stockage à l'étape c comprend l'addition de la donnée déterminée à la valeur dudit registre. 7 - Procédé selon la revendication précédente, comprenant une pluralité d'itérations des étapes a, b et c, et une étape, ultérieure aux itérations, consistant à retourner (E212, E312, E414) une valeur de sortie formée à partir desdits registres.
8 - Procédé selon la revendication précédente, dans lequel on itère, pour A=O à 2m-1 , les opérations suivantes: cmp <— compare(A, X)
Rcmp +- Rcmp ®S(M'ΘA) puis, postérieurement auxdites itérations on réalise les opérations suivantes: cmp *- compare(R0, Ri) return R0Φ (cmp x R1) où X est le masque d'entrée, m la dimension d'entrée de la table-S, M1 la donnée masquée, Ro et Ri deux registres et compare une fonction retournant 0 en cas d'égalité, 1 sinon. 9 - Procédé selon la revendication précédente, comprenant, préalablement auxdites itérations, une étape d'initialisation (E302) desdits registres (Ro, Ri) à une valeur de masquage Z.
10 - Procédé selon l'une quelconque des revendications 1 à 9, dans lequel la comparaison a) met en œuvre une fonction {compare, compare^) de deux paramètres dont le résultat est un booléen (b) en cas d'égalité entre les deux paramètres et le complémentaire du booléen (b ) sinon, lesdits registres
(Ro, Ri) étant indexés par ledit résultat de la fonction de comparaison. 11 - Procédé selon la revendication précédente, comprenant une étape (E402), préalable auxdites itérations, de génération pseudo-aléatoire dudit booléen (£»).
12 - Procédé selon l'une quelconque des revendications précédentes, dans lequel la comparaison (E204, E304, E406) mise en œuvre à l'étape a) pour comparer deux paramètres comprend la lecture (E508) de l'entrée d'une table (T) à un index fonction des deux paramètres (α, β) et d'une valeur prédéterminée (r3).
13 - Procédé selon la revendication précédente, dans lequel la constitution de ladite table (T) comprend:
- la détermination d'un booléen (E402),
- l'initialisation (E502) de chaque entrée de la table (T) avec la valeur du complémentaire dudit booléen,
- la génération pseudo-aléatoire (E500) d'un index r3, - et l'enregistrement (E504) dudit booléen à l'entrée (T[r3]) de la table (T) correspondant audit index (r3), ladite comparaison consistant à lire l'entrée T[(α θ r3) θ β/ où α et β sont les deux paramètres et T[k] l'entrée d'index k.
14 - Procédé selon l'une quelconque des revendications précédentes, dans lequel lesdits masques (X, Xi, X2, Z, Zi, Z2) sont des masques additifs
15 - Procédé selon la revendication précédente, dans lequel lesdits masques sont des masques booléens.
16 - Procédé selon l'une quelconque des revendications précédentes, comprenant, avec l'étape c, le masquage de ladite donnée de sortie par au moins un premier masque de sortie (Z, Zi, Z2).
17 - Procédé selon l'une quelconque des revendications précédentes, dans lequel lesdits registres (R0, Ri) sont des registres d'un microcontrôleur sécurisé (2).
18 - Procédé selon l'une quelconque des revendications précédentes, dans lequel la table de conversion est mémorisée en mémoire non-volatile. 19 - Procédé selon l'une des revendications 1 à 18, mis en œuvre par une séquence d'instructions mémorisées dans l'entité électronique et exécutées par un microprocesseur de l'entité électronique.
20 - Procédé selon l'une des revendications 1 à 19, dans lequel l'entité électronique est une carte à microcircuit.
21 - Procédé selon l'une des revendications 1 à 20, dans lequel ladite détermination d'une donnée de sortie (E206, E306, E408) comprend:
- la détermination d'un mot (Smachine(MH)) d'une table de conversion en fonction d'une partie de ladite donnée d'entrée (MΗ) et d'une partie correspondante de ladite valeur de masquage (AH), ledit mot étant composé d'une pluralité de données de sortie de ladite table de conversion et comprenant ladite donnée de sortie;
- l'accès à ladite donnée de sortie dans ledit mot à partir de l'autre partie de la donnée d'entrée (M'L) et de l'autre partie de la valeur de masquage (AL).
22 - Procédé selon la revendication précédente, dans lequel ledit accès à la donnée de sortie dans ledit mot comprend: i) une étape de séparation dudit mot (U, U') en deux moitiés (Ho(U), Hi(U), UH, UL) respectivement des bits les plus significatifs et des bits les moins significatifs, ii) une étape de sélection d'une desdites moitiés dudit mot (U, U') en fonction des valeurs des bits d'un même index dans respectivement l'autre partie de la donnée d'entrée (MV, j1) et l'autre partie de la valeur de masquage (AL, rj, η1, η2). 23 - Dispositif électronique de traitement cryptographique de données représentées sous forme numérique, le dispositif étant apte à effectuer une transformation d'une donnée d'entrée (M'M), masquée par au moins un premier masque d'entrée (X, Xi, X2), en une donnée de sortie (M'i), ladite transformation mettant en œuvre une table de conversion (S) représentant une fonction non linéaire (F), caractérisé par
- des moyens de comparaison (E204, E304, E406) entre une valeur de masquage (A) et ledit premier masque d'entrée; - des moyens de détermination (E206, E306, E408), à l'aide de ladite table de conversion, d'une donnée de sortie correspondant à la donnée d'entrée masquée à laquelle est appliquée ladite valeur de masquage;
- des moyens agencés pour stocker (E206, E306, E408), dans un registre (Ro, Ri) dépendant du résultat de ladite comparaison, de la donnée de sortie déterminée.
24 - Dispositif selon la revendication 23, comprenant des moyens d'itérations, pour une pluralité de valeurs de masquage, d'une étape de comparaison par lesdits moyens de comparaison, d'une étape de détermination par lesdits moyens de détermination et d'une étape de stockage par lesdits moyens agencés pour stocker
25 - Dispositif selon la revendication précédente, dans lequel les moyens d'itérations sont agencés pour itérer lesdits étapes pour un nombre de valeurs de masquage égale à la taille de la table de conversion de sorte à accéder à chacune des entrées de ladite table de conversion.
26 - Dispositif selon l'une des revendications 23 à 25, dans lequel ladite donnée d'entrée est masquée par un premier et un deuxième masques d'entrée, les moyens de comparaison étant agencés pour comparer ledit premier masque d'entrée et une combinaison entre ladite valeur de masquage et ledit deuxième masque d'entrée.
27 - Dispositif selon la revendication précédente en dépendance de la revendication 24, dans lequel lesdits moyens d'itération sont agencés pour itérer, pour A=O à 2m-1, les opérations: cmp <— compare(X1 ΦA, X2) Rcmp <- S(M'ΘA) Φ ZfΦ Z2 puis pour retourner Ro où Xi et X2 sont deux masques d'entrée, m la dimension d'entrée de la table-S, M1 la donnée masquée, Ro et Ri deux registres, Zi et Z2 deux masques de sortie et compare une fonction retournant 0 en cas d'égalité, 1 sinon. 28 - Dispositif selon l'une quelconque des revendications 23 à 27, dans lequel les moyens de stockage sont agencés pour additionner ladite donnée déterminée à la valeur dudit registre.
29 - Dispositif selon la revendication précédente en dépendance de la revendication 24, dans lequel les moyens d'itération sont agencés pour retourner, après lesdites itérations, une valeur de sortie formée à partir desdits registres.
30 - Dispositif selon la revendication précédente, dans lequel lesdits moyens d'itération sont agencés pour itérer, pour A=O à 2m-1 , les opérations suivantes: cmp <— compare(A, X)
Rcmp *- Rcmp Φ S(M' Θ A) puis, postérieurement auxdites itérations, pour comparer lesdits registres et retourner la valeur R0Θ (cmp x R1) où X est le masque d'entrée, m la dimension d'entrée de la table-S,
M' la donnée masquée, R0 et Ri deux registres et compare une fonction retournant 0 en cas d'égalité, 1 sinon.
31 - Dispositif selon la revendication précédente, comprenant des moyens d'initialisation desdits registres à une valeur de masquage Z. 32 - Dispositif selon l'une quelconque des revendications 23 à 31, dans lequel les moyens de comparaison mettent en œuvre une fonction de deux paramètres dont le résultat est un booléen (h) en cas d'égalité entre les deux paramètres et le complémentaire du booléen (h ) sinon, et dans lequel lesdits registres sont indexés par ledit résultat de la fonction de comparaison. 33 - Dispositif selon la revendication précédente, comprenant des moyens de génération pseudo-aléatoire dudit booléen (b).
34 - Dispositif selon l'une quelconque des revendications 23 à 33, dans lequel les moyens de comparaison de deux paramètres sont agencés pour lire l'entrée d'une table T à un index fonction de deux paramètres et d'une valeur prédéterminée.
35 - Dispositif selon la revendication précédente, dans lequel les entrées de ladite table T présentent une même valeur booléenne à l'exception d'une entrée associée à un index (r3) pseudo-aléatoire qui présente une valeur complémentaire dudit booléen, les moyens de comparaison sont agencés pour lire l'entrée T[(x θ r3) θ y] où x et y sont les deux paramètres et T[k] l'entrée d'index k. 36 - Dispositif selon l'une quelconque des revendications 23 à 35, dans lequel lesdits masques sont des masques additifs
37 - Dispositif selon la revendication précédente, dans lequel lesdits masques sont des masques booléens.
38 - Dispositif selon l'une quelconque des revendications 23 à 37, comprenant des moyens de masquage de ladite donnée de sortie par au moins un premier masque de sortie.
39 - Dispositif selon l'une quelconque des revendications 23 à 38, dans lequel lesdits registres sont des registres d'un microcontrôleur sécurisé.
40 - Dispositif selon la revendication 39, dans lequel la table de conversion est mémorisée en mémoire non-volatile.
41 - Dispositif selon l'une des revendications 23 à 40, dans lequel l'entité électronique est une carte à microcircuit.
42 - Dispositif selon l'une des revendications 23 à 41 , dans lequel lesdits moyens de détermination comprennent: - un moyen de détermination d'un mot (Smachine(MH)) dans une table de conversion en fonction d'une partie de ladite donnée d'entrée (M'H) et d'une partie correspondante de ladite valeur de masquage (AH), ledit mot étant composé d'une pluralité de données de sortie de ladite table de conversion et comprenant ladite donnée de sortie; - un moyen apte à accéder à ladite donnée de sortie dans ledit mot à partir de l'autre partie de la donnée d'entrée (M'L) et de l'autre partie de la valeur de masquage (AL).
43 - Procédé selon la revendication précédente, dans lequel ledit un moyen apte à accéder comprend: i) un moyen de séparation dudit mot (U, U') en deux moitiés (H0(U), Hi(U), UH, UL) respectivement des bits les plus significatifs et des bits les moins significatifs, ii) un moyen de sélection d'une desdites moitiés dudit mot (U, U') en fonction des valeurs des bits d'un même index dans respectivement l'autre partie de la donnée d'entrée (M'L) j') et l'autre partie de la valeur de masquage (AL, rj, η1, η2).
44 - Produit programme d'ordinateur comprenant une suite d'instructions aptes, lorsqu'elles sont exécutées par un microprocesseur, à mettre en œuvre un procédé selon l'une des revendications 1 à 22.
PCT/FR2007/002063 2007-12-13 2007-12-13 Procede de traitement cryptographique de donnees, notamment a l'aide d'une boite s, dispositif et programme associes WO2009074728A1 (fr)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/FR2007/002063 WO2009074728A1 (fr) 2007-12-13 2007-12-13 Procede de traitement cryptographique de donnees, notamment a l'aide d'une boite s, dispositif et programme associes

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/FR2007/002063 WO2009074728A1 (fr) 2007-12-13 2007-12-13 Procede de traitement cryptographique de donnees, notamment a l'aide d'une boite s, dispositif et programme associes

Publications (1)

Publication Number Publication Date
WO2009074728A1 true WO2009074728A1 (fr) 2009-06-18

Family

ID=39816879

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR2007/002063 WO2009074728A1 (fr) 2007-12-13 2007-12-13 Procede de traitement cryptographique de donnees, notamment a l'aide d'une boite s, dispositif et programme associes

Country Status (1)

Country Link
WO (1) WO2009074728A1 (fr)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011057991A1 (fr) * 2009-11-13 2011-05-19 Institut Telecom - Telecom Paristech Circuit electronique de faible complexite protege par masquage personnalise
CN107800530A (zh) * 2017-11-28 2018-03-13 聚辰半导体(上海)有限公司 一种sms4的s盒掩码方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050259814A1 (en) * 2004-05-24 2005-11-24 Gebotys Catherine H Table masking for resistance to power analysis attacks
US20070140478A1 (en) * 2005-12-15 2007-06-21 Yuichi Komano Encryption apparatus and encryption method
WO2007116140A1 (fr) * 2006-04-10 2007-10-18 Oberthur Technologies PROCÉDÉ DE TRAITEMENT CRYPTOQRAPHIQυE DE DONNÉES, DISPOSITIF ET PROGRAMME ASSOCIÉS

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050259814A1 (en) * 2004-05-24 2005-11-24 Gebotys Catherine H Table masking for resistance to power analysis attacks
US20070140478A1 (en) * 2005-12-15 2007-06-21 Yuichi Komano Encryption apparatus and encryption method
WO2007116140A1 (fr) * 2006-04-10 2007-10-18 Oberthur Technologies PROCÉDÉ DE TRAITEMENT CRYPTOQRAPHIQυE DE DONNÉES, DISPOSITIF ET PROGRAMME ASSOCIÉS

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
STANDAERT F-X ET AL: "On the Masking Countermeasure and Higher-Order Power Analysis Attacks", INFORMATION TECHNOLOGY: CODING AND COMPUTING, 2005. ITCC 2005. INTERNA TIONAL CONFERENCE ON LAS VEGAS, NV, USA 04-06 APRIL 2005, PISCATAWAY, NJ, USA,IEEE, vol. 1, 4 April 2005 (2005-04-04), pages 562 - 567, XP010795908, ISBN: 978-0-7695-2315-6 *

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011057991A1 (fr) * 2009-11-13 2011-05-19 Institut Telecom - Telecom Paristech Circuit electronique de faible complexite protege par masquage personnalise
FR2952773A1 (fr) * 2009-11-13 2011-05-20 Inst Telecom Telecom Paristech Circuit electronique de faible complexite protege par masquage personnalise
CN102648600A (zh) * 2009-11-13 2012-08-22 法国电信教育集团-巴黎电信学院 由定制的掩蔽保护的低复杂度电子电路
US9197412B2 (en) 2009-11-13 2015-11-24 Institut Telecom—Telecom Paris Tech Low-complexity electronic circuit protected by customized masking
CN107800530A (zh) * 2017-11-28 2018-03-13 聚辰半导体(上海)有限公司 一种sms4的s盒掩码方法

Similar Documents

Publication Publication Date Title
EP2218208B1 (fr) Procede de traitement cryptographique de donnees, notamment a l&#39;aide d&#39;une boite s, dispositif et programme associes
EP1769603B1 (fr) Procede et dispositif d&#39;execution d&#39;un calcul cryptographique
EP2893431B1 (fr) Protection contre canaux auxiliaires
EP1358732B2 (fr) Procede de cryptage securise et composant utilisant un tel procede de cryptage
EP1358733B1 (fr) Procede securise de calcul cryptographique a cle secrete et composant mettant en oeuvre un tel procede
EP2120388B1 (fr) Vérification d&#39;intégrité d&#39;une clé de chiffrement
FR2829331A1 (fr) Procede de securisation d&#39;une quantite secrete
EP2380306A1 (fr) Circuit de cryptographie protege contre les attaques en observation, notamment d&#39;ordre eleve
WO2011057991A1 (fr) Circuit electronique de faible complexite protege par masquage personnalise
EP3300293B1 (fr) Procédé de chiffrement ou de déchiffrement symétrique par bloc
EP2166696B1 (fr) Protection de l&#39;intégrité de données chiffrées en utilisant un état intermédiare de chiffrement pour générer une signature
FR3029719A1 (fr) Methode de chiffrement a couches de confusion et de diffusion dynamiques
EP2159952B1 (fr) Protection d&#39;un algorithme de chiffrement
EP2320596B1 (fr) Protection d&#39;une clé de chiffrement contre des attaques unidirectionnelles
FR3056322A1 (fr) Procede de chiffrement ou de dechiffrement protege contre des attaques par canaux caches
WO2009074728A1 (fr) Procede de traitement cryptographique de donnees, notamment a l&#39;aide d&#39;une boite s, dispositif et programme associes
FR2789776A1 (fr) Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle secrete
EP3502899B1 (fr) Procédé de détermination d&#39;une somme d&#39;intégrité, programme d&#39;ordinateur et entité électronique associés
EP1615369A1 (fr) Chiffrement par blocs du contenu d&#39;une mémoire externe à un processeur
WO2009074727A1 (fr) Procede d&#39;acces a un sous-mot dans un mot binaire, dispositif et programme associes
WO2007116140A1 (fr) PROCÉDÉ DE TRAITEMENT CRYPTOQRAPHIQυE DE DONNÉES, DISPOSITIF ET PROGRAMME ASSOCIÉS
EP3493182B1 (fr) Procédé et dispositif de traitement cryptographique de données
WO2009068658A1 (fr) Procedes et dispositifs de cryptage et de decryptage d&#39;un message de donnees a cle secrete aleatoire
EP4242884A1 (fr) Procédé de protection contre les attaques par canaux auxiliaires
EP3579493A1 (fr) Protection d&#39;un calcul itératif

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 07871855

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 07871855

Country of ref document: EP

Kind code of ref document: A1