EP2885875A1 - Procede d'encodage de donnees sur une carte a puce par des codes de poids constant - Google Patents

Procede d'encodage de donnees sur une carte a puce par des codes de poids constant

Info

Publication number
EP2885875A1
EP2885875A1 EP14701692.7A EP14701692A EP2885875A1 EP 2885875 A1 EP2885875 A1 EP 2885875A1 EP 14701692 A EP14701692 A EP 14701692A EP 2885875 A1 EP2885875 A1 EP 2885875A1
Authority
EP
European Patent Office
Prior art keywords
data
code word
partial
bits
hamming weight
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.)
Ceased
Application number
EP14701692.7A
Other languages
German (de)
English (en)
Inventor
Julien Bringer
Victor SERVANT
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 Identity and Security France SAS
Original Assignee
Morpho SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Morpho SA filed Critical Morpho SA
Publication of EP2885875A1 publication Critical patent/EP2885875A1/fr
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/75Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation
    • G06F21/755Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information by inhibiting the analysis of circuitry or operation with measures against power attack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K19/00Record carriers for use with machines and with at least a part designed to carry digital markings
    • G06K19/06Record carriers for use with machines and with at least a part designed to carry digital markings characterised by the kind of the digital marking, e.g. shape, nature, code
    • G06K19/067Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components
    • G06K19/07Record carriers with conductive marks, printed circuits or semiconductor circuit elements, e.g. credit or identity cards also with resonating or responding marks without active components with integrated circuit chips
    • G06K19/073Special arrangements for circuits, e.g. for protecting identification code in memory
    • G06K19/07309Means for preventing undesired reading or writing from or onto record carriers
    • 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
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/14Conversion to or from non-weighted codes
    • H03M7/20Conversion to or from n-out-of-m codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/004Countermeasures against attacks on cryptographic mechanisms for fault attacks
    • 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
    • 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/34Encoding or coding, e.g. Huffman coding or error correction

Definitions

  • Figure 3 shows an example of implementation of the encoding method.
  • This decomposition makes it possible to reduce the size of each bit sequence for the subsequent calculation of binary operations with two operands, such as for example the exclusive or.
  • Examples of preferred codes for the implementation of the method are also given; in the case where the size of the data D to be encoded is 4 bits, a 3.5-1, 2-code or a 2.5-1, 2-code, permutation of the first and second codes is preferably used. close, that is to say that the data D is decomposed into a sequence of 3 bits, then a bit.
  • the first sequence being encoded into a 5-bit size partial codeword and a Hamming weight of 2 or 3, and the remaining bit being encoded into a 2-bit size partial codeword and a Hamming weight equal to 1 .
  • the smart card may also include an error signal generating module 30, which may be integrated with or connected to the decoding module (as illustrated in FIG. 1).
  • this module 30 verifies during a step 3000 that the Hamming weight of the codewords transmitted by the encoding module is equal to the constant Hamming weight ⁇ which is agreed before the implementation of the method. of transmission.
  • the processing unit If the Hamming weight is within the expected weight, the processing unit
  • the results of the arithmetic or encryption operations applied to the uncoded data can be obtained from the code words generated from said data, as described hereinafter.
  • the decoding and / or exploitation 4000 of the code words to implement an encryption operation is performed without first checking the accuracy of the codewords.
  • the encryption operations 4000 and / or the arithmetic operations can be performed by the first processing unit without or before a data transmission step 2000 to the second processing unit is implemented.
  • an encryption operation may be a step of a cryptographic algorithm such as AES (for "Advanced Encryption Standard” or “Advanced Encryption Standard”) or LED, an algorithm for calculating a function such as for example SHA-1, SHA-2 or the future SHA-3, or an integrity calculation algorithm such as cyclic redundancy check (known by the acronym “CRC”) or the LRC ( acronym of
  • the adaptation of the function to the codewords consists in taking up the pre-calculated tables and adapting them to the calculation by taking as inputs and outputs the values corresponding to the codewords. on which the calculation is made.
  • at least one table is generated having as inputs the partial codewords on the basis of which the calculation or the complete code word is performed, and outputting the coded result of the operation applied to the non-coded complete data, which is the concatenation of the bit sequences from which the partial codewords are derived . The operation is therefore applied to all the partial codewords.
  • A is a datum comprising the concatenation of two sequences of bits of 0 , ai of respective sizes L 0 and Li.
  • B is a datum comprising the concatenation of two sequences of bits b 0 , b 1 , of respective sizes L 0 and Li.
  • This table takes as input two data encoded by K1, and produces the rest of the Euclidean division of the sum of the two data by 2 L1 , encoded by K1.
  • R 0 is the result of a 0 + b 0 modulo 2 L0 , that is the remainder of the Euclidean division of a 0 + b 0 by 2 L0
  • X is the quotient of the Euclidean division of a + b by 2 L0 + L1
  • Y is the result of a + b modulo 2 L0 + L1 , that is to say the rest of the Euclidean division of a + b by 2 L0 + L1, which decomposes into C 0 + Ri, where C 0 is the quotient of the Euclidean division of a-i + bi by 2 L1 , and R- ⁇ is the retention of the addition to 0 + b 0 modulo 2 L0 .
  • CW (A + B modulo 2 L0 + L1 ) is therefore equal to K 1 (Y) + K 0 (R 0 ).
  • Ki (Co) REM-K 0 [K 0 (a 0 ), K 0 (b 0 )]
  • K 1 (R 1 ) ADD-K 1 [K 1 (a 1 ), K, (b)]
  • this adaptation step for the operation or the decoding of the codewords can for This can be done by decomposing the code word M into the partial code words mi,. . . , m m that compose it, and performing the operation on each of the partial codewords before concatenating the results obtained.
  • each code word on which the operation is implemented is decomposed into its partial code words, and the operation is applied separately to the corresponding partial code words of each code word.
  • XOR-K 0 denotes the function or exclusive applied to two concatenated data, encoded by K 0 , and which returns their XOR in representation coded by K 0 .
  • XOR- ⁇ which applies to data coded by Ki and returns their XOR in representation coded by Ki.
  • R is of the same form as CW (A) and CW (B), that is to say the concatenation of two codewords coded respectively by Ki and K 0 .
  • the processing unit wants to decode the code words, it separates each code word M into the partial code words m, m m , and implements on each partial code word a decoding corresponding to the encoding implemented to obtain them.
  • the decoding algorithm depends of course on the encoding algorithm used beforehand. By way of non-limiting examples, other possibilities of encoding and decoding are described below in the context of the method described above.
  • the set of words of weight 3 among 6 bits is chosen as the arrival code, which is the following: ⁇ 7, 1 1, 13, 14, 19, 21, 22, 25, 26, 28, 35, 37, 38, 41, 42, 44, 49, 50, 52, 56).
  • This set has 20 elements; it is therefore adapted to encode the set E which contains 16.
  • the table K is then written [X, X, X, X, X, X, X, O, X, X, X, 1, X, 2, 3, X, X, X, X, 4,
  • X 5, 6, X, X, 7, 8, X, 9, X, X, X, X, X, 10, X, 1, 12, X, X, 13, 14, X, 15 , X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X], where X is a value that is not in the starting set E.
  • this word is split into two sequences of 4 bits each, each encoded on 6 bits as described above, then the partial codewords obtained are concatenated.
  • a table is prepared which receives the partial codewords as input and outputs the result of the operation applied to the concatenation of the partial codewords.

Landscapes

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

Abstract

L'invention concerne un procédé de traitement de données comprenant l'encodage, d'une pluralité de données de n bits en des mots de code présentant un poids de Hamming constant prédéfini, le procédé étant caractérisé en ce qu'il comprend en outre la mise en œuvre (4000) d'opérations de chiffrement ou d'opérations arithmétiques sur le ou les mots de code obtenus, et en ce que l'encodage de chaque donnée comprend : - la décomposition (100) de la donnée en une pluralité de m séquences de bits à coder, m étant strictement inférieur à n, - le codage (300) de chaque séquence de bits en un mot de code partiel présentant chacun un poids de Hamming prédéfini, de sorte que la somme des poids de Hamming des mots de code partiels soit égale au poids de Hamming du mot de code, et la concaténation (300) des mots de code partiels pour obtenir le mot de code correspondant à la donnée. L'invention concerne également un procédé de transmission de données, et un circuit électronique configuré pour la mise en œuvre desdits procédés.

Description

PROCEDE D'ENCODAGE DE DONNEES SUR UNE CARTE A PUCE PAR DES
CODES DE POIDS CONSTANT
DOMAINE DE L'INVENTION
Le domaine de l'invention est celui de l'encodage de données dans des cartes à puces, pour sécuriser leur utilisation ultérieure, notamment dans des applications de cryptographie.
ETAT DE LA TECHNIQUE
De nombreux composants électroniques, tels que par exemple des cartes à puces, mettent en œuvre des opérations de calcul ou de comparaison sur des données secrètes. Certaines applications de ces opérations sont par exemple des applications bancaires, des applications pour téléphonie mobile, etc.
Les opérations sur les données secrètes peuvent faire l'objet d'attaques pour déterminer lesdites données secrètes.
Certaines de ces attaques, dites « sides channels » en anglais ou encore attaques sur canaux cachés, consistent à étudier le comportement physique du composant électronique, notamment en termes de fuites électromagnétiques, ou encore en termes de variations de consommation électrique, ou de temps de réponse.
D'autres attaques, qualifiées d'attaques « par injection de fautes » ont également été développées, qui consistent en la corruption de certaines données utilisées lors d'un calcul mis en œuvre par le composant électronique pour obtenir les données secrètes. Ces attaques comprennent par exemple le bombardement du composant électronique par laser ou par lumière, la génération de champs électromagnétiques parasites, l'injection de pics de tension dans l'alimentation du composant, etc.
Pour contrer ces types d'attaques, il a été proposé d'ajouter aux données secrètes une valeur aléatoire, décorrélant ainsi les données utilisées de leur valeur d'origine. Cette méthode n'est pourtant pas pleinement efficace car il est possible, à partir de l'observation de plusieurs calculs successifs, de retrouver la donnée secrète d'origine. Une autre proposition a consisté en l'encodage des données secrètes avec des codes dits « de poids constant », c'est-à-dire des codes associant à chaque donnée un mot de code présentant un poids de Hamming constant prédéterminé. Le poids de Hamming d'une série de bits est le nombre de bits à 1 de la série.
Grâce à cet encodage, toutes les données utilisées présentent le même poids de Hamming, ce qui permet de rendre également constant la consommation électrique du composant électronique lors de l'utilisation desdites données (la consommation électrique du composant dépend en effet du poids de Hamming des données utilisées). Le composant est donc protégé des attaques par canaux cachés.
De plus, il est possible de détecter une attaque par injection de faute si une donnée encodée présente un poids de Hamming différent du poids de Hamming prédéterminé.
Cependant, l'encodage par codes de poids constant ne permet pas actuellement de mettre en œuvre des opérations sur données encodées dans un composant électronique de faible mémoire tel qu'une carte à puce.
Par exemple, on connaît un encodage appelé Dual Rail, qui consiste à encoder un 0 par la combinaison 1 -0 et un 1 par la combinaison 0-1 . Ce procédé double donc la taille de la séquence de bits encodée par rapport à la donnée initiale, et la mise en œuvre d'opérations sur ces données encodées n'est pas possible sur une carte à puce car elle requiert trop de mémoire.
De même, on connaît du brevet FR2855286 un procédé de transmission de données encodées à l'aide de codes de poids constant, mais ce procédé ne permet pas la mise en œuvre d'opérations sur les données encodées, car ces opérations nécessiteraient encore trop de mémoire que la mémoire disponible dans une carte à puce.
PRESENTATION DE L'INVENTION
L'invention a pour but de remédier aux inconvénients de l'art antérieur mentionnés ci-avant, en proposant un procédé d'encodage de données limitant la taille des mots de code obtenus afin de permettre la mise en œuvre ultérieure de calculs à partir desdits mots de code sur un composant électronique de type carte à puce. L'invention a également pour but de fournir un procédé d'encodage de données permettant de résister à des attaques de types à canaux cachés ou de détecter des attaques par injection de fautes. A cet égard, l'invention a pour objet un procédé de traitement de données comprenant l'encodage d'une pluralité de données de n bits en des mots de code présentant un poids de Hamming constant prédéfini,
le procédé étant caractérisé en ce qu'il comprend en outre la mise en œuvre d'opérations de chiffrement ou d'opérations arithmétiques sur le ou les mots de code obtenus, et en ce que l'encodage de chaque donnée comprend :
la décomposition de la donnée en une pluralité de m séquences de bits à coder, m étant strictement inférieur à n,
le codage de chaque séquence de bits en un mot de code partiel présentant chacun un poids de Hamming prédéfini, de sorte que la somme des poids de Hamming des mots de code partiels soit égale au poids de Hamming du mot de code, et
la concaténation des mots de code partiels pour obtenir le mot de code correspondant à la donnée. Avantageusement, mais facultativement, le procédé de traitement selon l'invention peut en outre comprendre au moins l'une des caractéristiques suivantes : la taille du mot de code obtenu est strictement inférieure à 2n bits.
la taille n des données est une puissance de 2 bits.
la taille des séquences de bits est une puissance de 2 bits.
- les données comprennent 4 bits, chaque donnée étant décomposée en une séquence de 3 bits, et une séquence d'un bit, la première séquence étant codée en un mot de code partiel de taille 5 bits et de poids de Hamming égal à 2 ou 3, et le bit restant étant codé en un mot de code partiel de taille 2 bits et de poids de Hamming égal à 1.
- les données comprennent 8 bits, le procédé comprenant la décomposition de chaque donnée en deux séquences de 4 bits, les deux séquences de 4 bits étant codées en deux mots de code partiels de 6 bits et de poids de
Hamming égal à 3. L'encodage est mis en œuvre par une première unité de traitement, le procédé comprend en outre la transmission à la seconde unité de traitement d'au moins un mot de code obtenu à partir de la ou les données, et les opérations de chiffrement ou les opérations arithmétiques sont mises en œuvre sur ledit au moins un mot de code par la seconde unité de traitement, le procédé comprend en outre la vérification, par la seconde unité de traitement, de la valeur du poids de Hamming du mot de code reçu, la mise en œuvre des opérations arithmétiques ou les opérations de chiffrement est réalisée sur au moins un mot de code, et produit en sortie le résultat codé de l'opération appliquée à la donnée correspondant au mot de code.
les opérations arithmétiques ou les opérations de chiffrement comprennent des opérations linéaires appliquées sur au moins un mot de code, et la mise en œuvre d'une opération linéaire comprend :
o la génération d'au moins une table prenant en entrée au moins un mot de code partiel, et produisant en sortie le résultat de l'opération appliquée au(x) mot(s) de code partiel(s),
o la décomposition de chaque mot de code sur lequel l'opération est mise en œuvre en mots de code partiels, et
o le calcul de l'opération par application des mots de code partiels aux tables, et la concaténation des résultats obtenus,
les opérations arithmétiques ou les opérations de chiffrement sont non- linéaires, et la mise en œuvre d'une opération non linéaire comprend :
o la génération d'au moins une table prenant en entrée au moins un mot de code partiel d'au moins un mot de code, et produisant en sortie le résultat codé de l'opération appliquée à au moins une donnée complète dont sont tirés les mots de codes partiels,
o la décomposition de chaque mot de code sur lequel l'opération est mise en œuvre en mots de code partiels, et
o le calcul de l'opération par application des mots de code partiels aux tables.
les opérations de chiffrement ou les opérations arithmétiques des étapes de traitement de d'algorithmes cryptographiques, d'algorithmes de calcul de fonctions de hachage, ou d'algorithmes de calcul d'intégrité adaptés pour recevoir en entrée lesdits mots de code.
L'invention a également pour objet un circuit électronique comprenant :
un module d'encodage comportant une unité de traitement adaptée pour coder des données de n bits en des mots de code présentant un poids de Hamming constant prédéfini et pour mettre en œuvre sur lesdits mots de code des opérations de chiffrement ou des opérations arithmétiques par la mise en œuvre du procédé de traitement décrit ci-avant.
Avantageusement, mais facultativement, le circuit électronique selon l'invention peut en outre comprendre les caractéristiques suivantes : le module d'encodage comporte en outre des moyens de transmission de données, et le circuit comprend en outre :
un module de décodage comportant une unité de traitement adaptée pour décoder un mot de code transmis par le premier module, et
un module de génération de signal d'erreur, adapté pour générer un signal d'erreur lorsque le poids de Hamming d'un mot de code transmis par le premier module est différent d'un poids de Hamming prédéfini.
L'invention a enfin pour objet une carte à puce comportant un tel circuit électronique.
Le procédé de traitement proposé comprend un encodage de données en mots de code de taille suffisamment faible pour que des algorithmes puissent être mis en œuvre sur lesdits mots de code, même dans des unités informatiques à faible mémoire telles que des cartes à puce.
En outre, l'utilisation de codes de poids constant permet de sécuriser les données contre des attaques par canaux cachés comme les attaques nommées SPA, DPA, MIA, CPA, ASCA, car la consommation électrique de la carte à puce est la même pour toutes les données utilisées.
En outre, l'utilisation de codes de poids constant permet de détecter certaines attaques par injection de faute comme notamment les attaques par impulsion laser. DESCRIPTION DES FIGURES
D'autres caractéristiques, buts et avantages de la présente invention apparaîtront à la lecture de la description détaillée qui va suivre, au regard des figures annexées, données à titre d'exemples non limitatifs et sur lesquelles :
La figure 1 représente schématiquement un exemple de composant électronique traitant une ou plusieurs données secrètes,
La figure 2 représente les principales étapes d'un mode de mise en œuvre d'un procédé d'encodage.
La figure 3 représente un exemple de mise en œuvre du procédé d'encodage.
La figure 4 représente les principales étapes d'un exemple de mise en œuvre d'un procédé de traitement de données.
DESCRIPTION DETAILLEE D'AU MOINS UN MODE DE MISE EN ŒUVRE
Unité informatique d'encodage de données
En référence à la figure 1 , on a représenté un exemple d'unité informatique pouvant encoder des données, dont notamment des données secrètes et réaliser des opérations à partir desdites données. Cette unité informatique est avantageusement une carte à puce 1 , qui comprend un circuit électronique comportant un module d'encodage 10 et un module de décodage 20. Alternativement, le module d'encodage et le module de décodage peuvent appartenir à deux unités informatiques distinctes connectées entre elle pour autoriser une communication de données.
Le module d'encodage 10 est avantageusement intégré à un processeur de la carte à puce, et le module de décodage peut être intégré à un périphérique tel qu'une mémoire ou un coprocesseur de la carte à puce.
Le module d'encodage 10 comporte des moyens de transmission de données, par exemple un bus 1 1 de communication de données, et une unité de traitement 12, adaptée pour mettre en œuvre des opérations d'encodage et de chiffrement sur des données, ladite unité étant avantageusement une unité arithmétique et logique (ALU). Une unité arithmétique et logique est un circuit intégré dans un processeur permettant la mise en œuvre des calculs sur les données. Le module 20 comporte des moyens de réception de données 21 comme un bus de réception de données, ainsi qu'une unité de traitement 22, configurée pour décoder des données reçues du module d'encodage, l'unité étant avantageusement une unité arithmétique et logique 22.
Procédé d'encodage de données
En référence à la figure 2, l'unité de traitement 12 du module d'encodage 10 est adaptée pour encoder une pluralité de données, dont notamment des données secrètes, afin que ces données ne soient pas obtenues au cours de leur utilisation par une attaque par canaux cachées.
Pour une donnée D de taille égale à n bits, ou n est une puissance de 2, le procédé d'encodage 1000 comporte une étape 100 consistant à scinder la donnée en plusieurs séquences de bits de taille inférieure à n, avantageusement en m séquences de bits di,..., dm, m étant strictement inférieur à n. Il existe donc au moins une séquence de bits comprenant au moins deux bits. Cette décomposition de la donnée est une partition, c'est-à-dire qu'aucun bit de la donnée n'est présent dans deux séquences de bits.
Cette décomposition permet de réduire la taille de chaque séquence de bits pour le calcul ultérieur d'opérations binaires à deux opérandes comme par exemple le ou exclusif.
Les séquences de bits obtenus présentent une taille égale à une puissance de deux bits. Ceci permet d'obtenir un bon compromis entre la capacité de détection de fautes et la mémoire occupée par le procédé. Par exemple, dans la figure 3, on a représenté une donnée D d'une longueur de n = 8 bits, scindée en deux séquences de bits di, d2 de 4 bits chacune.
Selon un autre exemple, une donnée d'une longueur de n=4 bits est scindée en deux séquences de 2 bits chacune.
Au cours d'une étape 200, l'unité de traitement encode la donnée au moyen d'un code de poids constant pour obtenir un mot de code correspondant M, présentant un poids de Hamming ω constant et déterminé. Dans toute la suite, on note x,y-code la fonction qui transforme une donnée en une donnée de poids de Hamming « x » sur « y » bits. L'ensemble image de
note également "x\, y\ - x2, y2 - code" le codage d'une première partie d'une donnée par un x , y - code et de sa seconde partie par un x2, y2
L'ensemble image de cette fonction contient donc ( ) x ( ) éléments.
Selon la notation précédente, l'unité de traitement met en œuvre, pour réaliser l'encodage de la donnée, un encodage de type x0, y0 - x\, y\ xm> ym — code, où m>0 est le nombre de séquence de bits en lesquelles la donnée a été décomposée. En d'autres termes, l'unité de traitement encode au cours de l'étape 200, au moyen d'un codage de poids constant, chaque séquence de bits di,...,dm de la donnée pour former un mot de code partiel correspondant mi,...mm.
De retour à l'exemple de la figure 3, les séquences de bits di, d2 sont encodées chacune au moyen d'un 3,6-code pour obtenir des mots de codes respectifs m-i, m2.
Le mot de code M correspondant à la donnée totale D est la concaténation des mots de code partiels mi,...mm! réalisée par l'unité de traitement au cours d'une étape 300.
Très avantageusement, la somme des ym, c' est-à-dire des longueurs (en bits) des mots de code partiels, qui correspond à la longueur totale en bits du mot de code obtenu, est strictement inférieure à 2n. Ceci permet d'obtenir un mot de code plus cours que notamment dans le procédé Dual Rail, qui le rend plus simple à mettre en œuvre dans un système informatique à faible mémoire tel qu'une carte à puce.
On donne également des exemples de codes préférés pour la mise en œuvre du procédé ; dans le cas où la taille des données D à encoder est de 4 bits, on emploie de préférence un 3,5-1 ,2-code ou un 2,5-1, 2-code, à permutation du premier et du deuxième codes près, c'est-à-dire que la donnée D est décomposée en une séquence de 3 bits, puis un bit. La première séquence étant codée en un mot de code partiel de taille 5 bits et de poids de Hamming égal à 2 ou 3, et le bit restant étant codé en un mot de code partiel de taille 2 bits et de poids de Hamming égal à 1 . Dans le cas où la taille des données D à encoder est de 8 bits, on emploie de préférence un 3,6-3,6-code, la donnée D est décomposée en deux séquences de bits de 4 bits, chacune étant codée en un mot de code partiel de 6 bits et de poids de Hamming égal à 3, comme dans l'exemple de la figure 3.
Procédé de traitement de données
Le procédé d'encodage de données 1000 décrit ci-avant permet la transmission sécurisée de données secrètes d'un module à un autre, pour leur utilisation ultérieure, par exemple au cours d'opérations de chiffrement.
II permet également la mise en œuvre d'opérations de chiffrement et/ou d'opérations arithmétiques sur les données encodées, par des unités de traitement à faibles capacités de calcul telles que des cartes à puce.
On a représenté en figure 4 un procédé de traitement de données comprenant l'encodage, la transmission, et l'exploitation ultérieure des données transmises.
Dans l'exemple d'une carte à puce comprenant un module d'encodage 10 et un module de décodage 20 comme illustré en figure 1 , une première étape de transmission de données comprenant l'encodage 1000 desdites données par l'unité de traitement 12 du module d'encodage 20.
Au cours d'une étape 2000, le bus de communication de données 1 1 transfère au bus de réception 21 du module de décodage 20 les mots de code obtenus par l'encodage des données.
Avantageusement, la carte à puce peut également comprendre un module 30 de génération de signal d'erreur, qui peut être intégré au module de décodage (comme illustré sur la figure 1 ) ou connecté à celui-ci. Avantageusement, mais facultativement, ce module 30 vérifie au cours d'une étape 3000 que le poids de Hamming des mots de code transmis par le module d'encodage est égal au poids de Hamming constant ω qui est convenu avant la mise en œuvre du procédé de transmission.
Si le poids de Hamming d'un mot de code diffère du poids de Hamming ω, ou si le mot de code reçu n'est pas conforme au mot attendu (bien que présentant le poids de Hamming ω) le module 30 détecte un signal d'erreur au cours d'une étape 3100. L'étape de vérification du poids de Hamming permet notamment de détecter une attaque par injection de faute, qui aurait pour conséquence de modifier le poids de Hamming des données transmises.
Si le poids de Hamming est conforme au poids attendu, l'unité de traitement
22 décode les mots de code et/ou les exploite pour mettre en œuvre une opération de chiffrement ou une opération arithmétique, par exemple de type booléenne, au cours d'une étape 4000.
Les résultats des opérations arithmétiques ou de chiffrement appliqués aux données non codées peuvent être obtenus à partir des mots de codes générés à partir desdites données, comme décrit ci-après.
Alternativement, le décodage et/ou l'exploitation 4000 des mots de code pour mettre en œuvre une opération de chiffrement est réalisé sans vérifier au préalable l'exactitude des mots de code.
Alternativement les opérations 4000 de chiffrement et/ou les opérations arithmétiques peuvent être réalisées par la première unité de traitement sans ou avant qu'une étape 2000 de transmission des données à la deuxième unité de traitement soit mise en œuvre.
Par exemple, une opération de chiffrement peut être une étape d'un algorithme cryptographique tel que l'AES (pour « Advanced Encryption Standard » ou « standard de chiffrement avancé ») ou le LED, d'un algorithme de calcul d'une fonction de hachage tel que par exemple SHA-1 ,SHA-2 ou le futur SHA-3, ou encore un algorithme de calcul d'intégrité tel que de contrôle de redondance cyclique (connu sous l'acronyme « CRC ») ou le LRC (acronyme anglais de
« longitudinal redundancy check »), un tel algorithme ayant été préalablement adapté pour recevoir en entrée les mots de code obtenus par le procédé décrit ci- avant.
Plusieurs types d'adaptations peuvent être réalisés en fonction de la nature des opérations mises en œuvre dans les algorithmes.
Dans de nombreux algorithmes, des opérations arithmétiques sont pré calculées sous forme de tableaux ou tables de vérité.
Dans le cas où les fonctions de chiffrement sont des fonctions non linéaires, l'adaptation de la fonction aux mots de code consiste à reprendre les tableaux pré calculés et de les adapter au calcul en prenant pour entrées et sorties les valeurs correspondant aux mots de code sur lesquels on réalise le calcul. En d'autres termes, on génère au moins une table ayant pour entrées les mots de code partiels sur la base desquels on réalise le calcul ou le mot de code complet, et fournissant en sortie le résultat codé de l'opération appliquée à la donnée complète non codée, qui est la concaténation des séquences de bits dont sont tirés les mots de code partiels. L'opération est donc appliquée à l'ensemble des mots de code partiels.
Ainsi par exemple, on note A une donnée comprenant la concaténation de deux séquences de bits a0, ai de tailles respectives L0 et Li. B est une donnée comprenant la concaténation de deux séquences de bits b0, bi, de tailles respectives L0 et Li.
On note A = ai||a0, et B = bi || b0, où « || » est le symbole de concaténation.
Soit K0 un code prenant L0 bits en entrée fournissant en sortie un mot de code de taille lk0 bits, et K-i un code prenant L-ι bits en entrée, et fournissant en sortie un mot de code de taille lk-ι bits.
On note || K0(a0), et CW(B) = K-i (bi) || K0(b0), qui sont de taille Iko+lki bits.
Un premier exemple de calcul d'une opération non-linéaire est donné pour une fonction à un seul opérande. En appelant cette fonction « NLF », on pré-calcule une table T_NLF donnant :
T_NLF [CW(A)] = CW (NLF (A)).
En d'autres termes, T_NLF est une table prenant en entrée un mot de code complet CW(A) et fournissant en sortie le mot de code obtenu par un encodage identique de l'image de A par la fonction NLF.
Un deuxième exemple est donné pour le calcul d'une fonction à deux opérandes, par exemple l'addition modulo 2L0+L1.
On génère trois tables définies comme suit :
- ADD-K0[ K0( a ), K0( b ) ] = K0[ (a+b) modulo 2L0 ]
Cette table prend en entrées deux données codées par K0, et produit en sortie le reste de la division euclidienne de la somme des deux données par 2L0, codé par K0.
- REM-K0[ K0( a ), K0( b ) ] = K,[ (a+b) / 2L0 ] Cette table prend en entrées deux données codées par K0, et produit le quotient de la division euclidienne de la somme des deux données par 2L0, codé par
- ADD-Ki[ Ki( a ) H Ki( b ) ] = Ki[ (a+b) modulo 2L1 ]
Cette table prend en entrées deux données codées par K1 , et produit le reste de la division euclidienne de la somme des deux données par 2L1, codé par K1 .
On va maintenant décrire l'obtention de CW( A+B modulo 2 L0+L1) en partant de CW(A) et CW(B).
CW(A+B modulo 2L0+L1) est l'encodage de A+B modulo 2L0+L1. En reprenant les mêmes notations que précédemment :
A+B = ai||a0 + bi||b0 = (ai+bi). 2L0 + a0 +b0
Que l'on peut noter : X. 2L0+L1 +Y. 2L0+ R0, d'où A+B mod 2L0+L1 : Y. 2L0+ R0.
Où :
R0 est le résultat de a0+b0 modulo 2L0, c'est-à-dire le reste de la division euclidienne de a0+b0 par 2L0
X est le quotient de la division euclidienne de a+b par 2 L0+L1
Y est le résultat de a+b modulo 2L0+L1, c'est-à-dire le reste de le division euclidienne de a+b par 2L0+L1 , qui se décompose en C0+Ri, où C0 est le quotient de la division euclidienne de a-i+bi par 2L1, et R-ι est la retenue de l'addition a0+b0 modulo 2L0.
CW(A+B modulo 2 L0+L1) est donc égal à K1(Y)+K0(R0). Pour l'obtenir à partir de CW(A) et CW(B), on calcule, avec les tables introduites ci-avant :
Ko(Ro) = ADD-K0[ Ko( a0 ) , b„) ]
Ki(Co) = REM-K0[ K0( a0 ) , K0( b0 ) ]
K1(R1) = ADD-K1[ K1( ai ) , K,( bi ) ]
On a alors CW( (A+B) modulo 2 L0+L1 ) = K1(Y)||K0(R0).
Dans le cas où les fonctions de chiffrement sont des fonctions linéaires, cette étape d'adaptation pour l'exploitation ou le décodage des mots de code peut par exemple être réalisée en décomposant le mot de code M en les mots de code partiels m-i , . . . , mm qui le composent, et en réalisant l'opération sur chacun des mots de code partiels avant de concaténer les résultats obtenus.
Dans le cas d'une fonction à plusieurs opérandes, chaque mot de code sur lequel l'opération est mise en œuvre est décomposé en ses mots de codes partiels, et l'opération est appliquée de façon séparée sur les mots de codes partiels correspondants de chaque mot de code.
Ainsi par exemple, la mise en œuvre d'une opération de type « ou exclusif » (XOR) sur deux données codées comprend la mise en œuvre d'opérations « ou exclusifs » sur chaque mot de code partiel.
Avec la même notation que précédemment, on note XOR-K0 la fonction ou exclusif appliquée à deux données concaténées, codés par K0, et qui renvoie leur XOR en représentation codée par K0. De même avec XOR-^ qui s'applique à des données codées par K-i et renvoie leur XOR en représentation codée par Ki.
XOR-K0[Ko(a),K0(b)] = K0 [a XOR b]
Le résultat de A XOR B sous forme codée est donc calculé de la manière suivante :
R0= XOR-Ko [Ko (a„) , Ko (b„)]
Ri = XOR-Ki [Ki (a1 ) , Ki (bi)]
R est bien de la même forme que CW(A) et CW(B), c'est-à-dire la concaténation de deux mots de code codés respectivement par K-i et K0.
Dans le cas présent, les tableaux pré calculés présentent des tailles adaptées à celles des mots de code partiels utilisés pour les opérations arithmétiques. A titre d'exemple non limitatif, pour des mots de code M de type 2,5- 1 ,3-2,5-code, sur lesquels on souhaite réaliser une opération « ou exclusif », on précalcule deux tables de type « A XOR B », une pour A et B de poids de Hamming
2 sur une taille de 5 bits, et une pour A et B de poids de Hamming 1 sur une taille de
3 bits.
De la même manière, si l'unité de traitement veut décoder les mots de code, elle sépare chaque mot de code M en les mots de code partiels m, mm, et met en œuvre sur chaque mot de code partiel un décodage correspondant à l'encodage mis en œuvre pour les obtenir. L'algorithme de décodage dépend bien entendu de l'algorithme d'encodage utilisé au préalable. A titre d'exemples non limitatifs, on décrit ci-après d'autres possibilités d'encodage et de décodage dans le cadre du procédé décrit ci-avant.
Selon un premier exemple, on cherche à coder des données d'un ensemble de départ E contenant les entiers de 0 à 15, c'est-à-dire les entiers binaires représentés sur 4 bits.
On choisit comme code d'arrivée l'ensemble des mots de poids 3 parmi 6 bits, qui est le suivant : {7, 1 1 , 13, 14, 19, 21 , 22, 25, 26, 28, 35, 37, 38, 41 , 42, 44, 49, 50, 52, 56}. Cet ensemble comporte 20 éléments ; il est donc adapté pour coder l'ensemble E qui en contient 16. On note J l'ensemble des 16 premiers éléments du code précédent. En binaire J= [1 1 1 , 101 1 , 1 101 , 1 1 10, 1001 1 , 10101 , 101 10,1 1001 , 1 1010, 1 1 100, 10001 1 , 100101 , 1001 10, 101001 , 101010, 101 100].
A l'élément E[a] (« a-ième » élément de E) est associé l'élément J[a].
Si la table J est conservée en mémoire, alors on obtient le procédé de codage, qui est un simple accès à un tableau. Un mot « a » se code en accédant en mémoire à la valeur J[a].
Pour décoder, on crée la table K, de taille 26 éléments (=64), qui à l'emplacement J[i], i allant de 0 à 15, prendra la valeur de i.
On a alors K[J[i]]=i, donc le décodage du mot de code de « i » permet bien d'obtenir « i » lui-même.
La table K s'écrit alors [X, X, X, X, X, X, X, 0, X, X, X, 1 , X, 2, 3, X, X, X, X, 4,
X, 5, 6, X, X, 7, 8, X, 9, X, X, X, X, X, X, 10, X, 1 1 , 12, X, X, 13, 14, X, 15, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X, X], où X est une valeur qui n'est pas dans l'ensemble E de départ.
Pour un mot de 8 bits M que l'on souhaite coder, ce mot est scindé en deux séquences de 4 bits chacune, codées chacune sur 6 bits comme décrit précédemment, puis on concatène les mots de code partiels obtenus.
Pour les opérations sur le mot de code, on prépare une table qui reçoit en entrée les mots de code partiels et fournit en sortie le résultat de l'opération appliquée à la concaténation des mots de code partiels.
D'autres possibilités d'encodage et de décodage des données applicables dans le cadre de la présente invention sont connues et à la portée de l'Homme du Métier.

Claims

REVENDICATIONS
1 . Procédé de traitement de données, comprenant l'encodage d'une pluralité de données (D) de n bits en des mots de code (M) présentant un poids de Hamming constant prédéfini,
le procédé étant caractérisé en ce qu'il comprend en outre la mise en œuvre (4000) d'opérations de chiffrement ou d'opérations arithmétiques sur le ou les mots de code obtenus, et en ce que l'encodage de chaque donnée (D) comprend :
la décomposition (100) de la donnée en une pluralité de m séquences de bits (di,...,dm) à coder, m étant strictement inférieur à n,
le codage (300) de chaque séquence de bits en un mot de code partiel présentant chacun un poids de Hamming prédéfini, de sorte que la somme des poids de Hamming des mots de code partiels (mi,...,mm) soit égale au poids de Hamming du mot de code (M), et
- la concaténation (300) des mots de code partiels (mi,...,mm) pour obtenir le mot de code (M) correspondant à la donnée (D).
2. Procédé de traitement selon la revendication 1 , dans lequel la taille du mot de code obtenu est strictement inférieure à 2n bits.
3. Procédé de traitement selon l'une des revendications 1 ou 2, dans lequel la taille n des données (D) est une puissance de 2 bits.
4. Procédé de traitement selon l'une des revendications précédentes, dans lequel la taille des séquences de bits (di,...,dm) est une puissance de 2 bits.
5. Procédé de traitement selon l'une des revendications précédentes, dans lequel les données (D) comprennent 4 bits, chaque donnée étant décomposée en une séquence de 3 bits, et une séquence d'un bit, la première séquence étant codée en un mot de code partiel de taille 5 bits et de poids de Hamming égal à 2 ou 3, et le bit restant étant codé en un mot de code partiel de taille 2 bits et de poids de Hamming égal à 1 .
6. Procédé de traitement selon l'une des revendications 1 à 4, dans lequel les données comprennent 8 bits, le procédé comprenant la décomposition de chaque donnée en deux séquences de 4 bits, les deux séquences de 4 bits étant codées en deux mots de code partiels de 6 bits et de poids de Hamming égal à 3.
7. Procédé de traitement de données selon l'une des revendications précédentes, l'encodage (1000) étant mis en œuvre par la première unité de traitement (12), le procédé comprenant en outre la transmission (2000) à la seconde unité de traitement (22) d'au moins un mot de code (M) obtenu à partir de la ou les données (D) et les opérations de chiffrement ou les opérations arithmétiques étant mises en œuvre sur ledit au moins un mot de code (M) par la seconde unité de traitement (22).
8. Procédé de traitement de données selon la revendication précédente, comprenant en outre la vérification (3000), par la seconde unité de traitement (22), de la valeur du poids de Hamming du mot de code reçu.
9. Procédé de traitement de données selon l'une des revendications précédentes, dans lequel la mise en œuvre des opérations arithmétiques ou les opérations de chiffrement est réalisée sur au moins un mot de code, et produit en sortie le résultat codé de l'opération appliquée à la donnée correspondant au mot de code.
10. Procédé de traitement de données selon l'une des revendications précédentes, dans lequel les opérations arithmétiques ou les opérations de chiffrement comprennent des opérations linéaires appliquées sur au moins un mot de code, et la mise en œuvre d'une opération linéaire comprend :
la génération d'au moins une table prenant en entrée au moins un mot de code partiel, et produisant en sortie le résultat de l'opération appliquée au(x) mot(s) de code partiel(s),
la décomposition de chaque mot de code sur lequel l'opération est mise en œuvre en mots de code partiels, et
le calcul de l'opération par application des mots de code partiels aux tables, et la concaténation des résultats obtenus.
1 1 . Procédé de traitement de données selon l'une des revendications 1 à 9, dans lequel les opérations arithmétiques ou les opérations de chiffrement sont non- linéaires, et la mise en œuvre d'une opération non linéaire comprend :
la génération d'au moins une table prenant en entrée au moins un mot de code partiel d'au moins un mot de code, et produisant en sortie le résultat codé de l'opération appliquée à au moins une donnée complète dont sont tirés les mots de codes partiels,
la décomposition de chaque mot de code sur lequel l'opération est mise en œuvre en mots de code partiels, et
le calcul de l'opération par application des mots de code partiels aux tables.
12. Procédé de traitement de données selon l'une des revendications précédentes, dans lequel les opérations de chiffrement ou les opérations arithmétiques sont des étapes de traitement d'algorithmes cryptographiques, d'algorithmes de calcul de fonctions de hachage, ou d'algorithmes de calcul d'intégrité adaptés pour recevoir en entrée lesdits mots de code.
13. Circuit électronique comprenant un module d'encodage (10) comportant une unité de traitement (12) adaptée pour encoder des données de n bits en des mots de code présentant un poids de Hamming constant prédéfini et pour mettre en œuvre sur lesdits mots de code des opérations de chiffrement ou des opérations arithmétiques par la mise en œuvre du procédé selon l'une des revendications 1 à 12.
14. Circuit électronique selon la revendication 13, dans lequel le module d'encodage (10) comporte en outre des moyens de transmission de données (1 1 ), et le circuit comprend en outre :
un module de décodage (20) comportant une unité de traitement (22) adaptée pour décoder un mot de code transmis par le premier module, et un module de génération de signal d'erreur (30), adapté pour générer un signal d'erreur lorsque le poids de Hamming d'un mot de code transmis par le premier module est différent d'un poids de Hamming prédéfini.
15. Carte à puce (1 ) comportant un circuit électronique selon l'une des revendications 13 ou 14.
EP14701692.7A 2013-02-27 2014-01-17 Procede d'encodage de donnees sur une carte a puce par des codes de poids constant Ceased EP2885875A1 (fr)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1351712 2013-02-27
PCT/EP2014/050867 WO2014131546A1 (fr) 2013-02-27 2014-01-17 Procede d'encodage de donnees sur une carte a puce par des codes de poids constant

Publications (1)

Publication Number Publication Date
EP2885875A1 true EP2885875A1 (fr) 2015-06-24

Family

ID=48468549

Family Applications (1)

Application Number Title Priority Date Filing Date
EP14701692.7A Ceased EP2885875A1 (fr) 2013-02-27 2014-01-17 Procede d'encodage de donnees sur une carte a puce par des codes de poids constant

Country Status (3)

Country Link
US (1) US9886597B2 (fr)
EP (1) EP2885875A1 (fr)
WO (1) WO2014131546A1 (fr)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3035532B1 (fr) * 2015-04-24 2018-07-27 Morpho Procede d'encodage de donnees minimisant les variations de fuites d'un composant electronique
CN106790040A (zh) * 2016-12-16 2017-05-31 郑州云海信息技术有限公司 网卡icmp协议的故障注入方法、系统及故障管理系统
US10673616B2 (en) * 2017-01-11 2020-06-02 Qualcomm Incorporated Lightweight mitigation against first-order probing side-channel attacks on block ciphers
US10705898B2 (en) * 2017-04-27 2020-07-07 Arxan Technologies, Inc. Transmitting surreptitious data on an existing communication channel
US11411989B2 (en) * 2017-04-27 2022-08-09 Arxan Technologies, Inc. Transmitting surreptitious data on an existing communication channel
US9912352B1 (en) 2017-06-06 2018-03-06 Western Digital Technologies, Inc. Hamming distance based binary representations of numbers
US10727872B2 (en) * 2018-01-10 2020-07-28 Western Digital Technologies, Inc. Encoding and decoding of hamming distance-based binary representations of numbers
TWI774985B (zh) * 2019-09-09 2022-08-21 新唐科技股份有限公司 記憶體裝置、寫入方法以及讀取方法
CN112422491A (zh) * 2020-05-08 2021-02-26 上海幻电信息科技有限公司 数字编码的加密解密方法、服务器和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001061916A2 (fr) * 2000-02-18 2001-08-23 Cloakware Corporation Procede et systeme de codage resistant a l'analyse de puissance
US20050055563A1 (en) * 2002-01-24 2005-03-10 Wieland Fischer Device and method for generating an operation code
WO2010146139A1 (fr) * 2009-06-19 2010-12-23 Irdeto B.V. Système cryptographique structurel avec clé configurable utilisant une modification de données intermédiaire
US20120311349A1 (en) * 2011-06-03 2012-12-06 Michael Dean Collins Method and System for a Programmable Parallel Computation and Data Manipulation Accelerator

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4776011A (en) * 1983-10-24 1988-10-04 Sony Corporation Recursive key schedule cryptographic system
DE60111746T2 (de) * 2000-08-03 2006-05-18 Koninklijke Philips Electronics N.V. Lineartransformation für symmetrische verschlüsselungssysteme
US6661355B2 (en) * 2000-12-27 2003-12-09 Apple Computer, Inc. Methods and apparatus for constant-weight encoding & decoding
JP2002247025A (ja) * 2001-02-22 2002-08-30 Hitachi Ltd 情報処理装置
US7149955B1 (en) * 2001-03-07 2006-12-12 Marvell International Ltd. Encoding and decoding apparatus and method with hamming weight enhancement
US7218734B2 (en) * 2001-05-02 2007-05-15 Nciper Corporation Limited Ring arithmetic method, system, and apparatus
FR2855286B1 (fr) * 2003-05-22 2005-07-22 Gemplus Card Int Transmission securisee de donnees entre deux modules
US8918900B2 (en) * 2004-04-26 2014-12-23 Ivi Holdings Ltd. Smart card for passport, electronic passport, and method, system, and apparatus for authenticating person holding smart card or electronic passport
US7002492B2 (en) * 2004-07-07 2006-02-21 Seagate Technology Llc High rate running digital sum-restricted code
JP5203594B2 (ja) 2006-11-07 2013-06-05 株式会社東芝 暗号処理回路及び暗号処理方法
US8223042B2 (en) * 2008-04-02 2012-07-17 Rambus Inc. Encoding data with minimum hamming weight variation
WO2009141756A2 (fr) * 2008-05-20 2009-11-26 Koninklijke Philips Electronics N.V. Système cryptographique
WO2010049276A1 (fr) 2008-10-28 2010-05-06 International Business Machines Corporation Protection contre l'effacement multiple
JP5548218B2 (ja) * 2009-03-06 2014-07-16 イントリンシツク・イー・デー・ベー・ベー 物理的システムに依存する暗号鍵を確立するためのシステム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001061916A2 (fr) * 2000-02-18 2001-08-23 Cloakware Corporation Procede et systeme de codage resistant a l'analyse de puissance
US20050055563A1 (en) * 2002-01-24 2005-03-10 Wieland Fischer Device and method for generating an operation code
WO2010146139A1 (fr) * 2009-06-19 2010-12-23 Irdeto B.V. Système cryptographique structurel avec clé configurable utilisant une modification de données intermédiaire
US20120311349A1 (en) * 2011-06-03 2012-12-06 Michael Dean Collins Method and System for a Programmable Parallel Computation and Data Manipulation Accelerator

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ANONYMOUS: "Lookup table", WIKIPEDIA, THE FREE ENCYCLOPEDIA, 25 February 2013 (2013-02-25), pages 1 - 7, XP055301166, Retrieved from the Internet <URL:https://en.wikipedia.org/w/index.php?title=Lookup_table&oldid=540287328> [retrieved on 20160908] *
See also references of WO2014131546A1 *

Also Published As

Publication number Publication date
US9886597B2 (en) 2018-02-06
WO2014131546A1 (fr) 2014-09-04
US20160012255A1 (en) 2016-01-14

Similar Documents

Publication Publication Date Title
WO2014131546A1 (fr) Procede d&#39;encodage de donnees sur une carte a puce par des codes de poids constant
EP2946284B1 (fr) Procédé de cryptographie comprenant une opération de multiplication par un scalaire ou une exponentiation
EP2380306B1 (fr) Circuit de cryptographie protege contre les attaques en observation, notamment d&#39;ordre eleve
CN107181600B (zh) 一种密码登录认证方法、系统及用户设备和认证服务器
EP2232765A2 (fr) Procede et entite de chiffrement symetrique probabiliste
EP2415199B1 (fr) Procede pour effectuer une tache cryptographique dans un composant electronique
FR3033965A1 (fr)
EP1611709B1 (fr) Procede et systeme de cryptage
EP2983083B1 (fr) Procede de cryptographie sur courbe elliptique comprenant une detection d&#39;erreur
FR3056322A1 (fr) Procede de chiffrement ou de dechiffrement protege contre des attaques par canaux caches
EP1721246B1 (fr) Procede et dispositif pour accomplir une operation cryptographique
WO2004105304A1 (fr) Transmission securisee de donnees entre deux modules
CA2875108C (fr) Elements secondaires dans un encodage de type fuzzy vault
EP2936302B1 (fr) Generateur de sequences chaotiques
CA2867241C (fr) Procede de cryptage d&#39;une pluralite de donnees en un ensemble securise
EP1325584A1 (fr) Procede d&#39;encodage de messages longs pour schemas de signature electronique a base de rsa
Molaei et al. Steganography scheme based on Reed-Muller Code with improving payload and ability to Retrieval of Destroyed data for digital images
FR3047327A1 (fr) Procede d&#39;execution de calcul cryptographique et application a la classification par machines a vecteurs de support
EP0752771A1 (fr) Procédé de traitement d&#39;un signal numérique tel que le signal numérique en sortie ne peut se déduire du signal numérique en entrée, et utilisation de ce procédé pour le contrÔle d&#39;accès et/ou la signature binaire
KR102236242B1 (ko) 퍼지 추출기를 이용한 공개값 생성 방법 및 그 공개값과 2차 입력값을 입력받아 비밀키를 생성하는 방법
EP2656534A1 (fr) Procédé d&#39;authentification multimodale et génération de clé cryptographique utilisant les secure sketches généralises
WO2009068658A1 (fr) Procedes et dispositifs de cryptage et de decryptage d&#39;un message de donnees a cle secrete aleatoire
EP3100403A1 (fr) Échelle de montgomery déséquilibrée
EP3843327A1 (fr) Procédé de codage d&#39;un motif d&#39;intégrité cryptographique de faible taille et dispositifs associés
WO2012085047A1 (fr) Procede d&#39;authentification multimodale a seuil et generation de cle unimodale

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20150319

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR

AX Request for extension of the european patent

Extension state: BA ME

17Q First examination report despatched

Effective date: 20160222

DAX Request for extension of the european patent (deleted)
REG Reference to a national code

Ref country code: DE

Ref legal event code: R003

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION HAS BEEN REFUSED

18R Application refused

Effective date: 20170510