FR3159070A1 - Procédé de hachage d’une donnée d’entrée en une donnée de sortie et dispositif électronique associé. - Google Patents
Procédé de hachage d’une donnée d’entrée en une donnée de sortie et dispositif électronique associé.Info
- Publication number
- FR3159070A1 FR3159070A1 FR2401212A FR2401212A FR3159070A1 FR 3159070 A1 FR3159070 A1 FR 3159070A1 FR 2401212 A FR2401212 A FR 2401212A FR 2401212 A FR2401212 A FR 2401212A FR 3159070 A1 FR3159070 A1 FR 3159070A1
- Authority
- FR
- France
- Prior art keywords
- application
- iteration
- intermediate data
- data
- parameter
- 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.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/122—Hardware reduction or efficient architectures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/30—Compression, e.g. Merkle-Damgard construction
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Power Engineering (AREA)
- Storage Device Security (AREA)
Abstract
Procédé de hachage avec une fonction cryptographique (F) de chiffrement ou déchiffrement associant un bloc de sortie à un bloc d’entrée par des transformations successives de données intermédiaires initialisées avec le bloc d’entrée, le procédé comprenant une suite d’au moins une itération des étapes suivantes:- Obtention d’un résultat (R1,j) par une première application de la fonction cryptographique à un premier paramètre (P1,j);- Obtention d’un autre résultat (R2,j) par une deuxième application de la fonction cryptographique à un deuxième paramètre (P2,j) égal à la combinaison par « ou exclusif » d’une constante (C1) et du premier paramètre ;le procédé étant caractérisé en ce que pour une donnée intermédiaire, pendant une application de la fonction cryptographique d’une itération, un état de la donnée intermédiaire est obtenu par la mise en œuvre, pendant l’autre application de la fonction cryptographique de ladite une itération, d’une transformation déterminée aux données intermédiaires.
Figure pour l’abrégé : fig. 7.
Description
La présente invention concerne un procédé de hachage d’une donnée d’entrée en une donnée de sortie avec une fonction cryptographique de chiffrement par bloc ou de déchiffrement par bloc, et un dispositif électronique associé.
Les fonctions de hachage sont très utiles pour construire des crypto systèmes sécurisés, notamment en raison de leurs propriétés, telles que la résistance aux collisions et la résistance à la pré-image.
Plusieurs fonctions spécifiques au hachage ont été définies, par exemple les fonctions de hachage de la famille SHA-2 (SHA étant l’acronyme de « Secure Hash Algorithm » en terminologie anglo-saxonne) conçues par la National Security Agency des Etats Unis et décrites par le National Institute of Standards and Technology (NIST), par exemple dans le document « Federal Information Processing Standards Publication 180-4 » d’Août 2015.
Une autre possibilité consiste à utiliser un procédé de hachage construit à partir d’une fonction cryptographique de chiffrement par bloc.
Certaines constructions sont basées sur une fonction de compression introduite par S.Hirose dans le document “Some Plausible Constructions of Double-Block-Length Hash Functions”, FSE 2006, par exemple la construction MDPH (pour Merkle-Damgård with permutation domain extender by Hirose et al) telle que décrite dans le document S. Hirose, , J.H. Park, A. Yun, « A simple variant of the Merkle-Damgård scheme with a permutation », In: Kurosawa, K. (ed.), ASIACRYPT 2007 LNCS, vol 4833, pp 113–129, Springer, Heidelberg, Germany, Kuching, Malaysia (Dec 2–6, 2007).
De tels procédés peuvent être mis en œuvre par un dispositif électronique.
Cependant, ils ne sont pas entièrement satisfaisants dans la mesure où de telles constructions sollicitent trop le dispositif électronique, notamment en ressources calculatoires.
Pour remédier à ces inconvénients, la présente invention propose selon un premier aspect, un procédé de hachage d’une donnée d’entrée en une donnée de sortie avec une fonction cryptographique de chiffrement par bloc ou de déchiffrement par bloc, la fonction cryptographique associant un bloc de sortie à un bloc d’entrée par des transformations successives de données intermédiaires initialisées avec le bloc d’entrée, au moins une des transformations successives dépendant d’une clé cryptographique, le procédé étant mis en œuvre par un dispositif électronique et le procédé comprenant une suite ordonnée d’au moins une itération des deux étapes suivantes, la suite débutant par une première itération et finissant par une dernière itération :
- obtention d’un premier résultat par une première application de la fonction cryptographique à un premier paramètre avec une clé intermédiaire ; le premier paramètre, le premier résultat et la clé intermédiaire étant respectivement le bloc d’entrée, le bloc de sortie et la clé cryptographique de la fonction cryptographique pendant la première application de la fonction cryptographique ;
- obtention d’un deuxième résultat par une deuxième application de la fonction cryptographique avec la clé intermédiaire, à un deuxième paramètre égal à la combinaison par « ou exclusif » d’une constante prédéterminée et du premier paramètre ; le deuxième paramètre, le deuxième résultat et la clé intermédiaire étant respectivement le bloc d’entrée, le bloc de sortie et la clé cryptographique de la fonction cryptographique pendant la deuxième application de la fonction cryptographique ;
le procédé comprenant en outre une étape de détermination de la donnée de sortie par une opération de « ou exclusif » entre le premier paramètre et le premier résultat de la dernière itération de la suite, et par une opération de « ou exclusif » entre le deuxième paramètre et le deuxième résultat de ladite dernière itération;
et le procédé étant caractérisé en ce que pour une donnée intermédiaire sélectionnée parmi les données intermédiaires, pendant une application de la fonction cryptographique, dite application réduite, parmi la première application et la deuxième application d’une itération de la suite, un état de la donnée intermédiaire sélectionnée, résultant d’une transformation déterminée parmi les transformations successives, est obtenu par la mise en œuvre pendant l’autre application, dite application complète, parmi la première application et la deuxième application de ladite une itération de la suite, de la transformation déterminée aux données intermédiaires.
- obtention d’un premier résultat par une première application de la fonction cryptographique à un premier paramètre avec une clé intermédiaire ; le premier paramètre, le premier résultat et la clé intermédiaire étant respectivement le bloc d’entrée, le bloc de sortie et la clé cryptographique de la fonction cryptographique pendant la première application de la fonction cryptographique ;
- obtention d’un deuxième résultat par une deuxième application de la fonction cryptographique avec la clé intermédiaire, à un deuxième paramètre égal à la combinaison par « ou exclusif » d’une constante prédéterminée et du premier paramètre ; le deuxième paramètre, le deuxième résultat et la clé intermédiaire étant respectivement le bloc d’entrée, le bloc de sortie et la clé cryptographique de la fonction cryptographique pendant la deuxième application de la fonction cryptographique ;
le procédé comprenant en outre une étape de détermination de la donnée de sortie par une opération de « ou exclusif » entre le premier paramètre et le premier résultat de la dernière itération de la suite, et par une opération de « ou exclusif » entre le deuxième paramètre et le deuxième résultat de ladite dernière itération;
et le procédé étant caractérisé en ce que pour une donnée intermédiaire sélectionnée parmi les données intermédiaires, pendant une application de la fonction cryptographique, dite application réduite, parmi la première application et la deuxième application d’une itération de la suite, un état de la donnée intermédiaire sélectionnée, résultant d’une transformation déterminée parmi les transformations successives, est obtenu par la mise en œuvre pendant l’autre application, dite application complète, parmi la première application et la deuxième application de ladite une itération de la suite, de la transformation déterminée aux données intermédiaires.
D’autres caractéristiques avantageuses et non limitatives du procédé conforme à l’invention, prises individuellement ou selon toutes les combinaisons techniquement possibles, sont les suivantes :
- la donnée intermédiaire sélectionnée et l’état de la donnée intermédiaire sélectionnée sont sélectionnés en fonction de la constante prédéterminée ;
- pour une première autre donnée intermédiaire sélectionnée parmi les données intermédiaires, pendant l’application réduite de la fonction cryptographique, un état de la première autre donnée intermédiaire sélectionnée, résultant d’ une deuxième transformation parmi les transformations successives, est obtenu par la mise en œuvre, pendant l’application complète de la fonction cryptographique, de la deuxième transformation aux données intermédiaires ;
- la première autre donnée intermédiaire sélectionnée et l’état de la première autre donnée intermédiaire sélectionnée sont sélectionnés en fonction de la constante prédéterminée ;
- pendant l’application réduite de la fonction cryptographique, un autre état de la donnée intermédiaire sélectionnée, résultant d’une autre transformation parmi les transformations successives, est obtenu par la mise en œuvre, pendant l’application complète de la fonction cryptographique, de l’autre transformation aux données intermédiaires, l’autre transformation étant distincte de la transformation déterminée ;
- la donnée intermédiaire sélectionnée et l’autre état de la donnée intermédiaire sélectionnée sont sélectionnés en fonction de la constante prédéterminée ;
- la constante prédéterminée est une puissance de deux ;
- la suite ne comprend qu’une itération de l’étape d’obtention d’un premier résultat et d’obtention d’un deuxième résultat, la clé intermédiaire comprend au moins une partie de la donnée d’entrée, et le premier paramètre est une première partie d’une clé de hachage ou le résultat de la combinaison par « ou exclusif » d’une autre constante prédéterminée et de la première partie de la clé de hachage ;
- la clé intermédiaire est le résultat de la concaténation de l’au moins une partie de la donnée d’entrée et d’une seconde partie de la clé de hachage ;
- la clé de hachage a une valeur différente de 0 ;
- la suite comprend une pluralité d’itérations de l’étape d’obtention d’un premier résultat et de l’étape d’obtention d’un deuxième résultat, pour chaque itération de la suite, la clé intermédiaire comprend au moins une partie de la donnée d’entrée, le premier paramètre de la dernière itération est égal à la combinaison par « ou exclusif » d’une autre constante prédéterminée, du premier résultat de l’avant-dernière itération et du premier paramètre de ladite avant-dernière itération, pour chaque itération autre que la première itération et la dernière itération de ladite suite, le premier paramètre de l’itération concernée est égal à la combinaison par « ou exclusif » du premier résultat et du premier paramètre d’une autre itération qui précède immédiatement l’itération concernée, et pour chaque itération autre que la première itération, la clé intermédiaire de l’itération concernée comprend un troisième paramètre déterminé par une opération de « ou exclusif » entre le deuxième paramètre et le deuxième résultat d’une autre itération qui précède immédiatement l’itération concernée ;
- le premier paramètre de la première itération est une première partie d’une clé de hachage et la clé intermédiaire de la première itération est la concaténation d’au moins une partie la donnée d’entrée et d’une seconde partie de la clé de hachage ;
- la clé de hachage a une valeur différente de 0 ;
- pour une deuxième autre donnée intermédiaire sélectionnée parmi les données intermédiaires, pendant une application de la fonction cryptographique parmi la première application et la deuxième application d’une autre itération, un état de la deuxième autre donnée intermédiaire sélectionnée, résultant d’une troisième transformation parmi les transformations successives, est obtenu par la mise en œuvre, pendant l’autre application parmi la première application et la deuxième application de ladite autre itération, de la troisième transformation aux données intermédiaires ;
- la deuxième autre donnée intermédiaire sélectionnée et l’état de la deuxième autre donnée intermédiaire sélectionnée sont sélectionnés en fonction de la constante prédéterminée.
- la donnée intermédiaire sélectionnée et l’état de la donnée intermédiaire sélectionnée sont sélectionnés en fonction de la constante prédéterminée ;
- pour une première autre donnée intermédiaire sélectionnée parmi les données intermédiaires, pendant l’application réduite de la fonction cryptographique, un état de la première autre donnée intermédiaire sélectionnée, résultant d’ une deuxième transformation parmi les transformations successives, est obtenu par la mise en œuvre, pendant l’application complète de la fonction cryptographique, de la deuxième transformation aux données intermédiaires ;
- la première autre donnée intermédiaire sélectionnée et l’état de la première autre donnée intermédiaire sélectionnée sont sélectionnés en fonction de la constante prédéterminée ;
- pendant l’application réduite de la fonction cryptographique, un autre état de la donnée intermédiaire sélectionnée, résultant d’une autre transformation parmi les transformations successives, est obtenu par la mise en œuvre, pendant l’application complète de la fonction cryptographique, de l’autre transformation aux données intermédiaires, l’autre transformation étant distincte de la transformation déterminée ;
- la donnée intermédiaire sélectionnée et l’autre état de la donnée intermédiaire sélectionnée sont sélectionnés en fonction de la constante prédéterminée ;
- la constante prédéterminée est une puissance de deux ;
- la suite ne comprend qu’une itération de l’étape d’obtention d’un premier résultat et d’obtention d’un deuxième résultat, la clé intermédiaire comprend au moins une partie de la donnée d’entrée, et le premier paramètre est une première partie d’une clé de hachage ou le résultat de la combinaison par « ou exclusif » d’une autre constante prédéterminée et de la première partie de la clé de hachage ;
- la clé intermédiaire est le résultat de la concaténation de l’au moins une partie de la donnée d’entrée et d’une seconde partie de la clé de hachage ;
- la clé de hachage a une valeur différente de 0 ;
- la suite comprend une pluralité d’itérations de l’étape d’obtention d’un premier résultat et de l’étape d’obtention d’un deuxième résultat, pour chaque itération de la suite, la clé intermédiaire comprend au moins une partie de la donnée d’entrée, le premier paramètre de la dernière itération est égal à la combinaison par « ou exclusif » d’une autre constante prédéterminée, du premier résultat de l’avant-dernière itération et du premier paramètre de ladite avant-dernière itération, pour chaque itération autre que la première itération et la dernière itération de ladite suite, le premier paramètre de l’itération concernée est égal à la combinaison par « ou exclusif » du premier résultat et du premier paramètre d’une autre itération qui précède immédiatement l’itération concernée, et pour chaque itération autre que la première itération, la clé intermédiaire de l’itération concernée comprend un troisième paramètre déterminé par une opération de « ou exclusif » entre le deuxième paramètre et le deuxième résultat d’une autre itération qui précède immédiatement l’itération concernée ;
- le premier paramètre de la première itération est une première partie d’une clé de hachage et la clé intermédiaire de la première itération est la concaténation d’au moins une partie la donnée d’entrée et d’une seconde partie de la clé de hachage ;
- la clé de hachage a une valeur différente de 0 ;
- pour une deuxième autre donnée intermédiaire sélectionnée parmi les données intermédiaires, pendant une application de la fonction cryptographique parmi la première application et la deuxième application d’une autre itération, un état de la deuxième autre donnée intermédiaire sélectionnée, résultant d’une troisième transformation parmi les transformations successives, est obtenu par la mise en œuvre, pendant l’autre application parmi la première application et la deuxième application de ladite autre itération, de la troisième transformation aux données intermédiaires ;
- la deuxième autre donnée intermédiaire sélectionnée et l’état de la deuxième autre donnée intermédiaire sélectionnée sont sélectionnés en fonction de la constante prédéterminée.
Au moins une partie des procédés selon l’invention peut être mise en œuvre par ordinateur. En conséquence, la présente invention peut prendre la forme d’un mode de réalisation entièrement matériel ou d’un mode de réalisation combinant des aspects logiciels (comportant les microprogrammes, les logiciels résidents, les microcodes, etc.) et matériels qui peuvent tous être globalement appelés ici "module".
Selon un deuxième aspect, l’invention propose un dispositif électronique pour hacher une donnée d’entrée en une donnée de sortie, le dispositif comprenant :
- un module cryptographique de chiffrement par bloc ou de déchiffrement par bloc, configuré pour associer un bloc de sortie à un bloc d’entrée par des transformations successives de données intermédiaires initialisées avec le bloc d’entrée, au moins une des transformations successives dépendant d’une clé cryptographique,
- un module d’itération configuré pour mettre en œuvre une suite ordonnée d’au moins une itération des deux étapes suivantes, la suite débutant par une première itération et finissant par une dernière itération :
1) obtention d’un premier résultat par une première application du module cryptographique à un premier paramètre avec une clé intermédiaire ; le premier paramètre, le premier résultat et la clé intermédiaire étant respectivement le bloc d’entrée, le bloc de sortie et la clé cryptographique du module cryptographique pendant la première application dudit module cryptographique ;
2) obtention d’un deuxième résultat par une deuxième application du module cryptographique avec la clé intermédiaire, à un deuxième paramètre égal à la combinaison par « ou exclusif » d’une constante prédéterminée et du premier paramètre ; le deuxième paramètre, le deuxième résultat et la clé intermédiaire étant respectivement le bloc d’entrée, le bloc de sortie et la clé cryptographique du module cryptographique pendant la deuxième application dudit module cryptographique ;
- un module de détermination de la donnée de sortie configuré pour déterminer la donnée de sortie par une opération de « ou exclusif » entre le premier paramètre et le premier résultat de la dernière itération de la suite, et par une opération de « ou exclusif » entre le deuxième paramètre et le deuxième résultat de ladite dernière itération ;
le dispositif étant caractérisé en ce que pour une donnée intermédiaire sélectionnée parmi les données intermédiaires, pendant une application du module cryptographique parmi la première application et la deuxième application d’une itération de la suite, un état de la donnée intermédiaire sélectionnée, résultant d’une transformation déterminée parmi les transformations successives, est obtenu par la mise en œuvre, pendant l’autre application parmi la première application et la deuxième application de ladite itération de la suite, de la transformation déterminée aux données intermédiaires.
- un module cryptographique de chiffrement par bloc ou de déchiffrement par bloc, configuré pour associer un bloc de sortie à un bloc d’entrée par des transformations successives de données intermédiaires initialisées avec le bloc d’entrée, au moins une des transformations successives dépendant d’une clé cryptographique,
- un module d’itération configuré pour mettre en œuvre une suite ordonnée d’au moins une itération des deux étapes suivantes, la suite débutant par une première itération et finissant par une dernière itération :
1) obtention d’un premier résultat par une première application du module cryptographique à un premier paramètre avec une clé intermédiaire ; le premier paramètre, le premier résultat et la clé intermédiaire étant respectivement le bloc d’entrée, le bloc de sortie et la clé cryptographique du module cryptographique pendant la première application dudit module cryptographique ;
2) obtention d’un deuxième résultat par une deuxième application du module cryptographique avec la clé intermédiaire, à un deuxième paramètre égal à la combinaison par « ou exclusif » d’une constante prédéterminée et du premier paramètre ; le deuxième paramètre, le deuxième résultat et la clé intermédiaire étant respectivement le bloc d’entrée, le bloc de sortie et la clé cryptographique du module cryptographique pendant la deuxième application dudit module cryptographique ;
- un module de détermination de la donnée de sortie configuré pour déterminer la donnée de sortie par une opération de « ou exclusif » entre le premier paramètre et le premier résultat de la dernière itération de la suite, et par une opération de « ou exclusif » entre le deuxième paramètre et le deuxième résultat de ladite dernière itération ;
le dispositif étant caractérisé en ce que pour une donnée intermédiaire sélectionnée parmi les données intermédiaires, pendant une application du module cryptographique parmi la première application et la deuxième application d’une itération de la suite, un état de la donnée intermédiaire sélectionnée, résultant d’une transformation déterminée parmi les transformations successives, est obtenu par la mise en œuvre, pendant l’autre application parmi la première application et la deuxième application de ladite itération de la suite, de la transformation déterminée aux données intermédiaires.
Ce dispositif peut être configuré pour la mise en œuvre de chacune des possibilités de réalisation envisagées pour le procédé de hachage tel que défini précédemment.
Bien entendu, les différentes caractéristiques, variantes et formes de réalisation de l'invention peuvent être associées les unes avec les autres selon diverses combinaisons dans la mesure où elles ne sont pas incompatibles ou exclusives les unes des autres.
D’autres caractéristiques et avantages de la présente invention ressortiront de la description faite ci-dessous, en référence aux figures annexées qui en illustrent des exemples de réalisation dépourvus de tout caractère limitatif.
Sur les figures:
Sauf indications contraires, les éléments communs ou analogues à plusieurs figures portent les mêmes signes de référence et présentent des caractéristiques identiques ou analogues, de sorte que ces éléments communs ne sont généralement pas à nouveau décrits par souci de simplicité.
Dans le cadre de la présente description, des qualificatifs « premier », « deuxième », « troisième » ne sont qu’à titre indicatif pour distinguer des éléments qu’ils qualifient, mais n’impliquent pas d’ordre entre eux.
LaFIG. 1 représente schématiquement un dispositif électronique 2 comprenant un processeur 4 (par exemple un microprocesseur), un bloc de mémorisation 6, une mémoire vive 8 et un bloc de communication 10.
La mémoire vive 8 et le bloc de mémorisation 6 sont chacun liés au processeur 4 de sorte que le processeur 4 peut lire ou écrire des données dans le bloc de mémorisation 6 et/ou la mémoire vive 8.
Le bloc de mémorisation 6 mémorise des instructions de programme d’ordinateur, dont certaines sont conçues pour mettre en œuvre un procédé de hachage tel que décrit en référence à laFIG. 2 ou à laFIG. 6 , lorsque ces instructions sont exécutées par le processeur 4.
Le bloc de mémorisation 6 est par exemple un disque dur ou une mémoire non-volatile, éventuellement réinscriptible, par exemple de type EEPROM (pour "Electrically Erasable and Programmable Read-Only Memory" selon l’appellation anglo-saxonne couramment utilisée).
La mémoire vive 8 peut quant à elle mémoriser certains au moins des éléments (notamment un premier paramètre, un deuxième paramètre, des données intermédiaires, un premier résultat, un deuxième résultat et une donnée de sortie, tel que décrits en référence à au moins une figure parmi les figures 2 à 7) manipulés lors des différents traitements effectués au cours d’un des procédés décrits ci-après.
On appelle mémoire dans la suite de la description, l’un quelconque parmi le bloc de mémorisation 6 et la mémoire vive 8.
Le dispositif électronique 2 comporte également plusieurs modules (non représentés).
Typiquement, le dispositif électronique 2 comporte un module cryptographique de chiffrement par bloc ou de déchiffrement par bloc, un module d’itération et un module de détermination de la donnée de sortie.
Ces modules peuvent en pratique être réalisés par une combinaison d’éléments matériels et d’éléments logiciels.
Chaque module possède une fonctionnalité décrite dans l’un des procédés conformes à l’invention et décrit ci-après en référence à laFIG. 2 ou à laFIG. 6 . Ainsi, pour chaque module, le dispositif électronique 2 mémorise par exemple des instructions de logiciel exécutables par le processeur 4 du dispositif électronique 2 afin d’utiliser un élément matériel (par exemple une interface de communication ou une mémoire) et de mettre ainsi en œuvre la fonctionnalité offerte par le module.
Selon une possibilité de réalisation, les instructions de programme d’ordinateur mémorisées dans le bloc de mémorisation 6 ont par exemple été reçues (typiquement d’un ordinateur distant) lors d’une phase de fonctionnement du dispositif électronique 2 antérieure au procédé décrit en référence à laFIG. 2 ou à laFIG. 6 .
Le bloc de communication 10 est relié au processeur 4 de manière à permettre au processeur 4 de recevoir des données en provenance d’un autre dispositif électronique (non représenté) et/ou d’émettre des données à destination d’un autre dispositif électronique (non représenté). Dans certains modes de réalisation, le processeur 4 peut ainsi recevoir une donnée m de l’autre dispositif électronique, par exemples les instructions de programme d’ordinateur et/ou une donnée d’entrée telle que décrite en référence à une figure parmi les figures 2 à 7, et /ou émettre d’autres données, par exemple une donnée de sortie telle que décrite en référence à une figure parmi les figures 2 à 7.
Le dispositif électronique 2 peut prendre de nombreuses formes (non représentées).
Selon un premier exemple, le dispositif électronique est une carte à puce, telle qu’une carte d’identité, une carte bancaire ou une carte à circuit intégré universelle (également connue sous le nom de carte UICC pour « Universal Integrated Circuit Card » en terminologie anglo-saxonne).
Selon un deuxième exemple, le dispositif électronique est un élément sécurisé, tel qu’un microcontrôleur sécurisé, qui est intégré à un autre dispositif électronique, typiquement un terminal de communication ou une voiture.
Selon d’autres exemples, le dispositif électronique est une clé usb, un téléphone mobile, un ordinateur personnel, un serveur ou un document d’identité, tel qu’un passeport électronique.
LaFIG. 2 illustre sous forme de logigramme les étapes principales d’un procédé de hachage selon un premier mode de réalisation de l’invention et laFIG. 3 représente de façon schématique le hachage mis en œuvre avec le procédé illustréFIG. 2
Le procédé de laFIG. 2 vise à mettre en œuvre un hachage d’une donnée d’entrée en une donnée de sortie avec une fonction cryptographique F de chiffrement par bloc ou de déchiffrement par bloc, la fonction cryptographique associant un bloc de sortie à un bloc d’entrée par des transformations successives de données intermédiaires initialisées avec le bloc d’entrée, au moins une des transformations successives dépendant d’une clé cryptographique.
Une fonction cryptographique de chiffrement par bloc est une fonction de chiffrement selon un algorithme cryptographique symétrique dans lequel le bloc d’entrée et le bloc de sortie sont des données de taille fixe.
Respectivement, une fonction cryptographique de déchiffrement par bloc, est une fonction de déchiffrement selon un algorithme cryptographique symétrique dans lequel le bloc d’entrée et le bloc de sortie sont des données de taille fixe.
La taille du bloc d’entrée, respectivement la taille du bloc de sortie, est généralement comprise entre 32 et 512 bits, c’est-à-dire entre 4 et 64 octets.
La taille de la clé cryptographique peut être identique à la taille du bloc d’entrée et à la taille du bloc de sortie.
La fonction cryptographique est par exemple une fonction de chiffrement ou une fonction de déchiffrement selon l’algorithme DES (pour « Data Encryption Standard » selon l’appellation anglo-saxonne couramment utilisée), selon l’algorithme AES (pour « Advanced Encryption Standard » selon l’appellation anglo-saxonne couramment utilisée), ou selon l’algorithme Skinny.
Typiquement, quand la fonction cryptographique est selon l’algorithme DES, la taille du bloc d’entrée et la taille du bloc de sortie sont de 64 bits, la taille de la clé cryptographique peut être de 56 bits, et la fonction cryptographique applique des transformations successives à 2 données intermédiaires, chaque donnée intermédiaire ayant une taille de 32 bits ou 48 bits. Au moins une transformation parmi les transformations successives étend la taille de chacune des deux données intermédiaires, de 32 à 48 bits. Au moins une autre transformation parmi les transformations successives réduit la taille de chacune des deux données intermédiaires, de 48 à 32 bits
Quand la fonction cryptographique est selon l’algorithme AES, la taille du bloc d’entrée et la taille du bloc de sortie sont de 128 bits, la taille de la clé cryptographique peut être de 128, 192 ou 256 bits, et la fonction cryptographique applique des transformations successives à 16 données intermédiaires, chaque donnée intermédiaire ayant une taille de 8 bits.
Quand la fonction cryptographique est selon l’algorithme Skinny, la taille du bloc d’entrée et la taille du bloc de sortie sont de 64 bits ou 128 bits. La taille de la clé cryptographique est de préférence supérieure ou égale à 124 bits. La fonction cryptographique applique des transformations successives à 16 données intermédiaires, chaque donnée intermédiaire ayant une taille de 4 bits si la taille du bloc d’entrée et la taille du bloc de sortie sont de 64 bits, ou de 8 bits si la taille du bloc d’entrée et la taille du bloc de sortie sont de 64 bits.
LaFIG. 4 représente de façon schématique un exemple de transformations successives de données intermédiaires par une fonction cryptographique.
Plus précisément, laFIG. 4 illustre les 8 premières transformations T1,…,T8appliquées successivement à 16 données intermédiaires pendant une application d’une fonction cryptographique de chiffrement par bloc qui est une fonction de chiffrement selon l’algorithme AES.
Les 16 données intermédiaires sont ici représentées sous forme d’une matrice D de dimension 4x4, chaque élément de la matrice étant une donnée intermédiaire dont la taille est d’un octet.
La matrice D0représente les données intermédiaires initialisées avec le bloc d’entrée.
Chaque matrice Di, i étant compris entre 1 et 8, représente les 16 données intermédiaires après application de la transformation Tiauxdites données intermédiaires, l’état des 16 données intermédiaires qui précède l’application de la transformation Tiest représenté par la matrice Di-1.
Par exemple, la matrice D1représente l’état des données intermédiaires après application de la transformation T1auxdites données intermédiaires initialisées avec le bloc d’entrée D0, la transformationT1étant la combinaison par « ou exclusif » des données intermédiaires avec une clé nommée Round key 1. La clé Round key 1 est calculée à partir de la clé cryptographique.
La transformation T2, respectivement la transformation T6,est une transformation non linéaire, également nommée SubBytes, appliquée indépendamment à chacune des données intermédiaires en utilisant une table de substitution.
La transformation T3, respectivement la transformation T7, est une permutation cyclique des octets sur les lignes de la matrice des données intermédiaires dans l’état D2, respectivement D6.
La transformation T4, respectivement la transformation T8, est un produit matriciel appliqué colonne après colonne de la matrice des données intermédiaires dans l’état D3, respectivement D7, et utilisant les 4 octets d’une colonne.
Enfin, la transformation T5est la combinaison par « ou exclusif » des données intermédiaires (dans l’état D4) avec une clé nommée Round key 2. La clé Round key 2 est calculée à partir de la clé cryptographique.
Le procédé de laFIG. 2 est ici mis en œuvre par le dispositif électronique 2 du fait de l’exécution des instructions de programme d’ordinateur mémorisées dans le bloc de mémorisation 6 comme indiqué ci-dessus.
Selon une étape d’obtention d’un premier résultat (étape S2), le processeur 4 obtient un premier résultat R1par une première application de la fonction cryptographique F à un premier paramètre P1avec une clé intermédiaire K.
La clé intermédiaire K peut comprendre au moins une partie de la donnée d’entrée.
Le premier paramètre P1, le premier résultat R1et la clé intermédiaire K sont respectivement le bloc d’entrée, le bloc de sortie et la clé cryptographique de la fonction cryptographique F pendant la première application de la fonction cryptographique.
Selon une étape d’obtention d’un deuxième résultat (étape S4), le processeur 4 obtient un deuxième résultat R2par une deuxième application de la fonction cryptographique F avec la clé intermédiaire K, à un deuxième paramètre P2égal à la combinaison par « ou exclusif » d’une constante prédéterminée C1et du premier paramètre P1.
Au cours de cette étape, le processeur 4 peut obtenir le deuxième paramètre P2par une combinaison de type « ou exclusif » de la constante prédéterminée C1et du premier paramètre P1.
Le deuxième paramètre P2, le deuxième résultat R2et la clé intermédiaire K sont respectivement le bloc d’entrée, le bloc de sortie et la clé cryptographique de la fonction cryptographique F pendant la deuxième application de la fonction cryptographique.
Le procédé comprend alors une étape (étape S6) de détermination de la donnée de sortie pendant laquelle le processeur 4 détermine la donnée de sortie par une opération de « ou exclusif » entre le premier paramètre et le premier résultat et par une opération de « ou exclusif » entre le deuxième paramètre et le deuxième résultat.
Typiquement, le processeur 4 détermine :
- une première partie S1de la donnée de sortie par une combinaison du type « ou exclusif » du premier paramètre P1et du premier résultat R1, et
- une deuxième partie S2de la donnée de sortie par une combinaison du type « ou exclusif » du deuxième paramètre P2et du deuxième résultat R2.
- une première partie S1de la donnée de sortie par une combinaison du type « ou exclusif » du premier paramètre P1et du premier résultat R1, et
- une deuxième partie S2de la donnée de sortie par une combinaison du type « ou exclusif » du deuxième paramètre P2et du deuxième résultat R2.
La donnée de sortie est ainsi constituée de la première partie S1et de la deuxième partie S2.
Selon une possibilité, le premier paramètre P1est une première partie H1d’une clé de hachage.
Selon une autre possibilité, le premier paramètre P1est le résultat de la combinaison par « ou exclusif » d’une autre constante prédéterminée et de la première partie de la clé de hachage.
Cette autre possibilité permet d’améliorer la sécurité du procédé en empêchant un attaquant de poursuivre le procédé de hachage et d’appliquer la fonction cryptographique à la première partie de la donnée de sortie et/ou à la deuxième partie de la donnée de sortie.
La clé intermédiaire K est par exemple le résultat de la concaténation de l’au moins une partie de la donnée d’entrée et d’une seconde partie H2de la clé de hachage.
La clé de hachage peut avoir une valeur nulle.
De préférence, la clé de hachage a une valeur différente de 0. Une clé de hachage non nulle peut avoir une valeur secrète, c’est-à-dire non publique, ce qui permet d’utiliser le procédé de hachage pour sécuriser des échanges, par exemple pour authentifier des données ou l'origine des données, ou bien encore pour dériver une clé.
Le procédé de laFIG. 2 comprend donc une suite ordonnée d’au moins une itération des deux étapes suivantes, la suite débutant par une première itération et finissant par une dernière itération :
- Obtention (étape S2) d’un premier résultat par une première application de la fonction cryptographique F à un premier paramètre avec une clé intermédiaire; le premier paramètre, le premier résultat et la clé intermédiaire étant respectivement le bloc d’entrée, le bloc de sortie et la clé cryptographique de la fonction cryptographique pendant la première application de la fonction cryptographique ;
- Obtention (étape S4) d’un deuxième résultat par une deuxième application de la fonction cryptographique F avec la clé intermédiaire, à un deuxième paramètre égal à la combinaison par « ou exclusif » d’une constante prédéterminée et du premier paramètre ; le deuxième paramètre, le deuxième résultat et la clé intermédiaire étant respectivement le bloc d’entrée, le bloc de sortie et la clé cryptographique de la fonction cryptographique pendant la deuxième application de la fonction cryptographique.
Plus précisément, la suite ne comprend qu’une itération de l’étape d’obtention (étape S2) d’un premier résultat et de l’étape d’obtention (étape S4) d’un deuxième résultat. La première itération de la suite est la dernière itération de la suite.
- Obtention (étape S2) d’un premier résultat par une première application de la fonction cryptographique F à un premier paramètre avec une clé intermédiaire; le premier paramètre, le premier résultat et la clé intermédiaire étant respectivement le bloc d’entrée, le bloc de sortie et la clé cryptographique de la fonction cryptographique pendant la première application de la fonction cryptographique ;
- Obtention (étape S4) d’un deuxième résultat par une deuxième application de la fonction cryptographique F avec la clé intermédiaire, à un deuxième paramètre égal à la combinaison par « ou exclusif » d’une constante prédéterminée et du premier paramètre ; le deuxième paramètre, le deuxième résultat et la clé intermédiaire étant respectivement le bloc d’entrée, le bloc de sortie et la clé cryptographique de la fonction cryptographique pendant la deuxième application de la fonction cryptographique.
Plus précisément, la suite ne comprend qu’une itération de l’étape d’obtention (étape S2) d’un premier résultat et de l’étape d’obtention (étape S4) d’un deuxième résultat. La première itération de la suite est la dernière itération de la suite.
En outre le procédé de laFIG. 2 , comprend une étape de détermination (étape S6) de la donnée de sortie par une opération de « ou exclusif » entre le premier paramètre et le premier résultat de la dernière itération de la suite, et par une opération de « ou exclusif » entre le deuxième paramètre et le deuxième résultat de ladite dernière itération de la suite.
De façon avantageuse, pendant la deuxième application de la fonction cryptographique, que nous nommerons ici application réduite, le processeur 4 sélectionne une donnée intermédiaire parmi les données intermédiaires et détermine un état de la donnée intermédiaire sélectionnée, ledit état résultant d’une transformation déterminée parmi les transformations successives, par la mise en œuvre de ladite transformation déterminée aux données intermédiaires, pendant la première application de la fonction cryptographique, que nous nommerons ici application complète.
Typiquement, pendant la première application de la fonction cryptographique, c’est-à-dire pendant l’application complète, le processeur 4 calcule l’état de la donnée intermédiaire sélectionnée par l’application de la transformation déterminée aux données intermédiaires, puis le dispositif électronique 2 conserve dans une mémoire l’état calculé de la donnée intermédiaire sélectionnée. Pendant la deuxième application de la fonction cryptographique, c’est-à-dire pendant l’application réduite, le processeur 4 récupère l’état de la donnée intermédiaire sélectionnée qui a été mémorisé pendant la première application de la fonction cryptographique et ne recalcule pas l’état de la donnée intermédiaire par application de la transformation déterminée aux données intermédiaires.
Le procédé permet ainsi de limiter le temps de calcul requis pour hacher la donnée d’entrée en mutualisant le calcul d’un état d’une donnée intermédiaire, la donnée intermédiaire sélectionnée, entre la première application et la deuxième application de la fonction cryptographique.
La donnée intermédiaire sélectionnée et l’état de la donnée intermédiaire sélectionnée peuvent être sélectionnés en fonction de la valeur de la constante prédéterminée.
La valeur de la constante prédéterminée peut être représentée sous forme de bits. Typiquement, la constante prédéterminée comporte autant de bits que le premier paramètre, et autant de bits que le deuxième paramètre.
Plus la constante prédéterminée a de bits à 0, plus grand est le nombre d’états de donnée intermédiaire identiques entre la première application et la deuxième application de la fonction cryptographique.
Ainsi, de façon également avantageuse, pendant la deuxième application de la fonction cryptographique, c’est-à-dire pendant l’application réduite mentionnées ci-avant, le processeur 4 peut sélectionner une première autre donnée intermédiaire parmi les données intermédiaires et déterminer un état de la première autre donnée intermédiaire sélectionnée, ledit état résultant d’une deuxième transformation parmi les transformations successives, par la mise en œuvre de ladite deuxième transformation aux données intermédiaires, pendant la première application de la fonction cryptographique, c’est-à-dire pendant l’application complète mentionnée ci-avant.
La première autre donnée intermédiaire sélectionnée est une donnée intermédiaire différente de la donnée intermédiaire sélectionnée.
La deuxième transformation parmi les transformations successives peut être la transformation déterminée ou une transformation différente de la transformation déterminée.
Typiquement, pendant la première application de la fonction cryptographique, c’est-à-dire pendant l’application complète, le processeur 4 calcule l’état de la première autre donnée intermédiaire sélectionnée, par l’application de la deuxième transformation aux données intermédiaires, puis le dispositif électronique 2 conserve dans une mémoire l’état calculé de la première autre donnée intermédiaire sélectionnée. Pendant la deuxième application de la fonction cryptographique, c’est-à-dire pendant l’application réduite, le processeur 4 récupère l’état de la première autre donnée intermédiaire sélectionnée qui a été mémorisé pendant la première application de la fonction cryptographique, et ne recalcule pas ledit état de la première autre donnée intermédiaire par l’application de la deuxième transformation aux données intermédiaires.
Le procédé permet ainsi de limiter encore le temps de calcul requis pour hacher la donnée d’entrée en mutualisant le calcul d’un état d’une autre donnée intermédiaire, la première autre donnée intermédiaire sélectionnée, entre la première application et la deuxième application de la fonction cryptographique.
De préférence, la première autre donnée intermédiaire sélectionnée et l’état de la première autre donnée intermédiaire sélectionnée sont sélectionnés en fonction de la constante prédéterminée.
Selon une autre façon avantageuse, pendant l’application réduite, le processeur 4 peut déterminer un autre état de la donnée intermédiaire sélectionnée, ledit autre état résultant d’une autre transformation parmi les transformations successives, par la mise en œuvre, pendant l’application complète, de ladite autre transformation aux données intermédiaires, l’autre transformation étant distincte de la transformation déterminée.
Typiquement pendant l’application complète, le processeur 4 calcule l’autre état de la donnée intermédiaire sélectionnée, par l’application de l’autre transformation aux données intermédiaires, puis le dispositif électronique 2 conserve dans une mémoire l’autre état calculé de la donnée intermédiaire sélectionnée. Pendant l’application réduite, le processeur 4 récupère alors l’autre état de la donnée intermédiaire sélectionnée, qui a été mémorisé pendant la première application de la fonction cryptographique, et ne recalcule pas ledit autre état de la donnée intermédiaire par l’application de l’autre transformation aux données intermédiaires.
Le procédé permet ainsi de limiter encore le temps de calcul requis pour hacher la donnée d’entrée en mutualisant le calcul d’un autre état de la donnée intermédiaire sélectionnée, entre la première application et la deuxième application de la fonction cryptographique.
De préférence, la donnée intermédiaire sélectionnée et l’autre état de la donnée intermédiaire sélectionnée sont sélectionnés en fonction de la constante prédéterminée.
Un homme du métier comprendra que les étapes de ce procédé peuvent être exécutées selon d’autres ordres dans la mesure où chaque étape dispose des éléments nécessaires à son exécution.
Selon un exemple, l’étape (étape S6) de détermination de la donnée de sortie peut débuter après l’étape d’obtention d’un premier résultat (étape S2) et avant la fin de l’étape d’obtention d’un deuxième résultat (étape S4), et se termine après l’étape d’obtention d’un deuxième résultat (étape S4).
Dans cet exemple, le processeur 4 détermine :
- la première partie S1de la donnée de sortie après l’étape d’obtention d’un premier résultat (étape S2) et avant la fin de l’étape d’obtention d’un deuxième résultat (étape S4), et
- la deuxième partie S2de la donnée de sortie après la fin de l’étape d’obtention d’un deuxième résultat (étape S4).
- la première partie S1de la donnée de sortie après l’étape d’obtention d’un premier résultat (étape S2) et avant la fin de l’étape d’obtention d’un deuxième résultat (étape S4), et
- la deuxième partie S2de la donnée de sortie après la fin de l’étape d’obtention d’un deuxième résultat (étape S4).
Selon un autre exemple, l’étape d’obtention d’un deuxième résultat (étape S4) est mise en œuvre avant l’étape d’obtention d’un premier résultat (étape S2).
Dans cet exemple, de façon avantageuse, pendant la première application de la fonction cryptographique, que nous nommerons ici application réduite, le processeur 4 sélectionne une donnée intermédiaire parmi les données intermédiaires et détermine un état de la donnée intermédiaire sélectionnée, ledit état résultant d’une transformation déterminée parmi les transformations successives, par la mise en œuvre, pendant la deuxième application de la fonction cryptographique, que nous nommerons ici application complète, de ladite transformation déterminée aux données intermédiaires.
Typiquement, pendant la deuxième application de la fonction cryptographique, c’est-à-dire pendant l’application complète, le processeur 4 calcule l’état de la donnée intermédiaire sélectionnée par l’application de la transformation déterminée aux données intermédiaires, puis le dispositif électronique 2 conserve dans une mémoire l’état calculé de la donnée intermédiaire sélectionnée. Pendant la première application de la fonction cryptographique, c’est-à-dire pendant l’application réduite, le processeur 4 récupère alors l’état de la donnée intermédiaire sélectionnée qui a été mémorisé pendant la deuxième application de la fonction cryptographique et ne recalcule pas ledit l’état de la donnée intermédiaire par l’application de la transformation déterminée aux données intermédiaires.
Le procédé permet ainsi de limiter le temps de calcul requis pour hacher la donnée d’entrée.
Toujours dans cet exemple, de façon également avantageuse, pendant la première application de la fonction cryptographique, c’est à dire pendant l’application réduite, le processeur 4 peut sélectionner une première autre donnée intermédiaire parmi les données intermédiaires et déterminer un état de la première autre donnée intermédiaire sélectionnée, ledit état résultant d’une deuxième transformation parmi les transformations successives, par la mise en œuvre pendant la deuxième application de la fonction cryptographique, c’est à dire pendant l’application complète, de ladite deuxième transformation aux données intermédiaires.
Typiquement, pendant la deuxième application de la fonction cryptographique, c’est-à-dire pendant l’application complète, le processeur 4 calcule l’état de la première autre donnée intermédiaire sélectionnée, par l’application de la deuxième transformation aux données intermédiaires, puis le dispositif électronique 2 conserve dans une mémoire l’état calculé de la première autre donnée intermédiaire sélectionnée. Pendant la première application de la fonction cryptographique, c’est-à-dire pendant l’application réduite, le processeur 4 récupère alors l’état de la première autre donnée intermédiaire sélectionnée qui a été mémorisé pendant la deuxième application de la fonction cryptographique, et ne recalcule pas ledit état de la première autre donnée intermédiaire par l’application de la deuxième transformation aux données intermédiaires.
Le procédé permet ainsi de limiter encore le temps de calcul requis pour hacher la donnée d’entrée.
Comme déjà décrit, la première autre donnée intermédiaire sélectionnée est une donnée intermédiaire différente de la donnée intermédiaire sélectionnée, et la deuxième transformation parmi les transformations successives peut être la transformation déterminée ou une transformation différente de la transformation déterminée.
En outre, la première autre donnée intermédiaire sélectionnée et l’état de la première autre donnée intermédiaire sélectionnée sont de préférence sélectionnés en fonction de la constante prédéterminée.
Selon une autre façon avantageuse, pendant la première application de la fonction cryptographique dans cet exemple, c’est-à-dire pendant l’application réduite, le processeur 4 peut déterminer un autre état de la donnée intermédiaire sélectionnée, ledit autre état résultant d’une autre transformation parmi les transformations successives, par la mise en œuvre de ladite autre transformation aux données intermédiaires, pendant l’application complète de la fonction cryptographique, l’autre transformation étant distincte de la transformation déterminée.
Typiquement, pendant la deuxième application de la fonction cryptographique, c’est-à-dire pendant l’application complète, le processeur 4 calcule l’autre état de la donnée intermédiaire sélectionnée, par l’application de l’autre transformation aux données intermédiaires, puis le dispositif électronique 2 conserve dans une mémoire l’autre état calculé de la donnée intermédiaire sélectionnée. Pendant l’application réduite, le processeur 4 récupère alors l’autre état de la donnée intermédiaire sélectionnée, qui a été mémorisé pendant la deuxième application de la fonction cryptographique, et ne recalcule pas ledit autre état de la donnée intermédiaire par l’application de l’autre transformation aux données intermédiaires.
Le procédé permet ainsi de limiter encore le temps de calcul requis pour hacher la donnée d’entrée.
Comme déjà décrit, la donnée intermédiaire sélectionnée et l’autre état de la donnée intermédiaire sélectionnée peuvent être sélectionnés en fonction de la constante prédéterminée.
Quelques soit l’ordre des étapes, de manière particulièrement avantageuse, la constante prédéterminée est une puissance de deux.
Le procédé permet ainsi une limitation optimale des temps de calcul en maximisant le nombre d’états de donnée intermédiaire, c’est-à-dire le nombre d’états d’une même donnée intermédiaire et/ou le nombre d’états de données intermédiaires distinctes, dont le calcul peut être mutualisé entre la première application et la deuxième application de la fonction cryptographique.
En effet, dans ce cas le premier paramètre ne diffère du deuxième paramètre que d’un bit.
LaFIG. 5 représente de façon schématique une comparaison d’états de données intermédiaires entre une première application et une deuxième application d’une fonction cryptographique dans un procédé selon l’invention, la première application et la deuxième application étant pendant une même itération au sein du procédé, et la constante prédéterminée étant une puissance de 2 dont la valeur est supérieure ou égale à 1, et inférieure ou égale à 128.
LaFIG. 5 reprend les transformations successives de données intermédiaires par une fonction cryptographique de chiffrement par bloc selon l’algorithme AES tel que décrit en référence à laFIG. 4 .
Les 16 données intermédiaires sont représentées sous forme de la matrice D de dimension 4x4, chaque élément de la matrice étant une donnée intermédiaire ayant pour taille 1 octet.
Un élément est blanc quand l’état de la donnée intermédiaire associé pendant la première application de la fonction cryptographique, est identique à celui de ladite donnée intermédiaire pendant la deuxième application de la fonction cryptographique.
Un élément de la matrice est gris quand l’état de la donnée intermédiaire associé pendant la première application de la fonction cryptographique, est différent de l’état de ladite donnée intermédiaire pendant la deuxième application de la fonction cryptographique.
Ainsi, dans l’exemple illustréFIG. 5 , suite à l’initialisation des données intermédiaires avec le bloc d’entrée, l’état d’une seule donnée intermédiaire diffère entre la première application et la deuxième application de la fonction cryptographique.
Après la transformation T1, seul l’état de cette donnée intermédiaire diffère entre les deux applications de la fonction cryptographique.
Il en est de même après la transformation T2, puis après la transformation T3.
Après la transformation Ti, i étant compris entre 4 et 7, les états de quatre données intermédiaires diffèrent entre la première application et la deuxième application de la fonction cryptographique.
Enfin, à partir de la transformation T8, les états de toutes les données intermédiaires diffèrent entre les deux applications la fonction cryptographique.
Le calcul de chaque élément de matrice qui est blanc, c’est-à-dire de chaque état de donnée intermédiaire associé, peut être mutualisé entre la première application et la deuxième application de la fonction cryptographique d’une même itération pendant un procédé selon l’invention, notamment pendant le procédé décrit ci-avant.
Ainsi chaque élément de matrice qui est blanc, c’est-à-dire chaque état de donnée intermédiaire associé, peut être un état de la donnée intermédiaire sélectionnée, un état de la première autre donnée intermédiaire sélectionnée, ou un autre état de la donnée intermédiaire sélectionnée.
A titre d’exemple uniquement, dans laFIG. 5 , d0d1et d2représentent respectivement un état de la donnée intermédiaire sélectionnée, un état de la première autre donnée intermédiaire sélectionnée et un autre état de la donnée intermédiaire sélectionnée au cours du procédé décrit en référence à laFIG. 2 .
LaFIG. 6 illustre sous forme de logigramme les étapes principales d’un procédé de hachage selon un deuxième mode de réalisation de l’invention et laFIG. 7 représente de façon schématique le hachage mis en œuvre avec le procédé illustréFIG. 6 .
Le procédé de laFIG. 6 vise aussi à mettre en œuvre un hachage d’une donnée d’entrée en une donnée de sortie avec une fonction cryptographique F de chiffrement par bloc ou de déchiffrement par bloc, la fonction cryptographique associant un bloc de sortie à un bloc d’entrée par des transformations successives de données intermédiaires initialisées avec le bloc d’entrée, au moins une des transformations successives dépendant d’une clé cryptographique.
Ce procédé est mis en œuvre par le dispositif électronique 2 du fait de l’exécution des instructions de programme d’ordinateur mémorisées dans le bloc de mémorisation 6 comme indiqué ci-dessus.
Selon une étape d’initialisation d’index (étape S12), le processeur 4 initialise un entier j à la valeur 1.
Le procédé comprend alors une étape (étape S14) d’obtention d’un premier résultat, pendant laquelle le processeur 4 obtient un premier résultat R1,jpar une première application de la fonction cryptographique F à un premier paramètre P1,javec une clé intermédiaire K’j.
Le premier paramètre P1,j, le premier résultat R1,jet la clé intermédiaire K’jsont respectivement le bloc d’entrée, le bloc de sortie et la clé cryptographique de la fonction cryptographique F pendant la première application de la fonction cryptographique.
Selon une étape d’obtention d’un deuxième résultat (étape S16), le processeur 4 obtient un deuxième résultat R2,jpar une deuxième application de la fonction cryptographique F avec la clé intermédiaire K’j, à un deuxième paramètre P2,jégal à la combinaison par « ou exclusif » d’une constante prédéterminée C1et du premier paramètre P1,j.
Au cours de cette étape, le processeur 4 peut obtenir le deuxième paramètre P2,jpar une combinaison de type « ou exclusif » de la constante prédéterminée C1et du premier paramètre P1,j.
Le deuxième paramètre P2,j, le deuxième résultat R2,jet la clé intermédiaire K’jsont respectivement le bloc d’entrée, le bloc de sortie et la clé cryptographique de la fonction cryptographique F pendant la deuxième application de la fonction cryptographique F.
Le processeur 4 détermine ensuite, à une étape de test (étape S18), si l’entier j a atteint une valeur n où n est un entier naturel strictement supérieur à 1.
Dans la négative, l’entier j est incrémenté de 1 dans une étape d’incrémentation (étape S20) et le procédé boucle à l’étape d’obtention d’un premier résultat (étape S14) pour effectuer un tour suivant, c’est-à-dire une nouvelle itération.
Au cours du procédé, l’étape d’obtention d’un premier résultat (étape S14) et l’étape d’obtention d’un deuxième résultat (étape S16) sont ainsi exécutée pour tout j allant de 1 à n.
Le procédé de laFIG. 6 , comprend donc une suite ordonnée d’au moins une itération des deux étapes suivantes, la suite débutant par une première itération et finissant par une dernière itération :
- Obtention (étape S14) d’un premier résultat par une première application de la fonction cryptographique F à un premier paramètre avec une clé intermédiaire; le premier paramètre, le premier résultat et la clé intermédiaire étant respectivement le bloc d’entrée, le bloc de sortie et la clé cryptographique de la fonction cryptographique pendant la première application de la fonction cryptographique ;
- Obtention (étape S16) d’un deuxième résultat par une deuxième application de la fonction cryptographique F avec la clé intermédiaire, à un deuxième paramètre égal à la combinaison par « ou exclusif » d’une constante prédéterminée et du premier paramètre ; le deuxième paramètre, le deuxième résultat et la clé intermédiaire étant respectivement le bloc d’entrée, le bloc de sortie et la clé cryptographique de la fonction cryptographique pendant la deuxième application de la fonction cryptographique.
- Obtention (étape S14) d’un premier résultat par une première application de la fonction cryptographique F à un premier paramètre avec une clé intermédiaire; le premier paramètre, le premier résultat et la clé intermédiaire étant respectivement le bloc d’entrée, le bloc de sortie et la clé cryptographique de la fonction cryptographique pendant la première application de la fonction cryptographique ;
- Obtention (étape S16) d’un deuxième résultat par une deuxième application de la fonction cryptographique F avec la clé intermédiaire, à un deuxième paramètre égal à la combinaison par « ou exclusif » d’une constante prédéterminée et du premier paramètre ; le deuxième paramètre, le deuxième résultat et la clé intermédiaire étant respectivement le bloc d’entrée, le bloc de sortie et la clé cryptographique de la fonction cryptographique pendant la deuxième application de la fonction cryptographique.
Plus précisément, la suite comprend une pluralité d’itérations de l’étape d’obtention (étape S14) d’un premier résultat et de l’étape d’obtention (étape S16) d’un deuxième résultat.
La première itération est celle pendant laquelle j vaut 1. La dernière itération est celle pendant laquelle j vaut n.
Le procédé obtient donc n premiers résultats R1, 1, ... , R1,net n deuxièmes résultats R2,1, ... , R2,n.
Par exemples, pendant la première itération de l’étape d’obtention d’un premier résultat (étape S14), le processeur 4 obtient un premier résultat R1,1par une première application de la fonction cryptographique F à un premier paramètre P1,1avec une clé intermédiaire K’1, et pendant la dernière itération de l’étape d’obtention d’un premier résultat (étape S14), le processeur 4 obtient un premier résultat R1,npar une première application de la fonction cryptographique F à un premier paramètre P1,navec une clé intermédiaire K’n.
Selon d’autres exemples, pendant la première itération de l’étape d’obtention d’un deuxième résultat (étape S16), le processeur 4 obtient un deuxième résultat R2,1par une deuxième application de la fonction cryptographique F avec la clé intermédiaire K’1, à un deuxième paramètre P2,1égal à la combinaison par « ou exclusif » d’une constante prédéterminée C1et du premier paramètre P1,1, et pendant la dernière itération de l’étape d’obtention d’un deuxième résultat (étape S16), le processeur 4 obtient un deuxième résultat R2,npar une deuxième application de la fonction cryptographique F avec la clé intermédiaire K’n, à un deuxième paramètre P2,négal à la combinaison par « ou exclusif » de la constante prédéterminée C1et du premier paramètre P1,n.
Le premier paramètre de la première itération P1,1est une première partie H1d’une clé de hachage et la clé intermédiaire de la première itération K’1est la concaténation d’au moins une partie E1de la donnée d’entrée et d’une seconde partie H2de la clé de hachage.
De préférence, la clé de hachage a une valeur différente de 0. Une clé de hachage non nulle peut avoir une valeur secrète, c’est-à-dire non publique, ce qui permet d’utiliser le procédé de hachage pour sécuriser des échanges, par exemple pour authentifier des données ou l'origine des données, ou bien encore pour dériver une clé.
Pour chaque itération autre que la première itération et la dernière itération de la suite, le premier paramètre de l’itération concernée est égal à la combinaison par « ou exclusif » du premier résultat et du premier paramètre d’une autre itération de la suite, qui précède immédiatement l’itération concernée.
Ainsi, pour tout j allant de 2 à n-1, quand l’entier n est strictement supérieur à 2, le premier paramètre P1,jest égal à la combinaison par « ou exclusif » du premier résultat R1,j-1et du premier paramètre P1,j-1: .
Pour tout j allant de 1 à n, le deuxième paramètre P2,ja une valeur définie comme suit: .
En outre, pour chaque itération autre que la première itération de la suite, la clé intermédiaire de l’itération concernée comprend un troisième paramètre déterminé par une opération de « ou exclusif » entre le deuxième paramètre et le deuxième résultat d’une autre itération de la suite, qui précède immédiatement l’itération concernée.
Ainsi, pour tout j allant de 2 à n, K’jcomprend un troisième paramètre P3,jdéterminé par une opération de « ou exclusif » entre le deuxième paramètre P2,j-1et le deuxième résultat R2,j-1: .
Pour chaque itération de la suite, la clé intermédiaire de l’itération concernée peut comprendre au moins une partie de la donnée d’entrée.
Par exemple, comme illustré figure 7, pour chaque itération autre que la première itération de la suite, la clé intermédiaire de l’itération concernée peut être le résultat d’une concaténation du troisième paramètre P3,jet d’une partie distincte Ejde la donnée d’entrée : .
Typiquement, la donnée d’entrée est la concaténation des parties distinctes Ejde la donnée d’entrée, pour tout j allant de 1 à n.
Le procédé permet ainsi de hacher une donnée d’entrée de grande taille.
Selon une possibilité, le premier paramètre P1,nde la dernière itération est égal à la combinaison par « ou exclusif » du premier résultat et du premier paramètre de l’avant-dernière itération de la suite.
Ainsi le premier paramètre P1, nest égal à la combinaison par « ou exclusif » du premier résultat R1,n-1et du premier paramètre P1,n-1: .
Selon une autre possibilité, le premier paramètre P1,nde la dernière itération est égal à la combinaison par « ou exclusif » d’une autre constante prédéterminée C2, du premier résultat R1,n-1de l’avant-dernière itération et du premier paramètre P1,n-1de ladite avant-dernière itération : . .
La constante prédéterminée C2est par exemple une puissance de 2.
Cette autre possibilité permet d’améliorer la sécurité du procédé en empêchant un attaquant de poursuivre le procédé de hachage et d’appliquer la fonction cryptographique à la première partie de la donnée de sortie et/ou à la deuxième partie de la donnée de sortie (décrites ci-après).
Dans l’affirmative à l’étape de test (étape S18), le procédé se poursuit avec une étape (étape S22) de détermination de la donnée de sortie pendant laquelle le processeur 4 détermine la donnée de sortie par une opération de « ou exclusif » entre le premier paramètre et le premier résultat de la dernière itération et par une opération de « ou exclusif » entre le deuxième paramètre et le deuxième résultat de la dernière itération.
Typiquement, le processeur 4 détermine :
- une première partie S1de la donnée de sortie par une combinaison du type « ou exclusif » du premier paramètre P1,net du premier résultat R1,n, et
- une deuxième partie S2de la donnée de sortie par une combinaison du type « ou exclusif » du deuxième paramètre P2,net du deuxième résultat R2,n.
- une première partie S1de la donnée de sortie par une combinaison du type « ou exclusif » du premier paramètre P1,net du premier résultat R1,n, et
- une deuxième partie S2de la donnée de sortie par une combinaison du type « ou exclusif » du deuxième paramètre P2,net du deuxième résultat R2,n.
La donnée de sortie est ainsi constituée de la première partie S1et de la deuxième partie S2.
De façon avantageuse, pendant la deuxième application de la fonction cryptographique d’une itération j, que nous nommerons ici application réduite, le processeur 4 sélectionne une donnée intermédiaire parmi les données intermédiaires et détermine un état de la donnée intermédiaire sélectionnée, ledit état résultant d’une transformation déterminée parmi les transformations successives, par la mise en œuvre de la transformation déterminée aux données intermédiaires, pendant la première application de la fonction cryptographique de l’itération j concernée, que nous nommerons ici application complète.
Typiquement, pendant la première application de la fonction cryptographique d’une itération j, c’est-à-dire pendant l’application complète, le processeur 4 calcule l’état de la donnée intermédiaire sélectionnée par l’application de la transformation déterminée aux données intermédiaires, puis le dispositif électronique 2 conserve dans une mémoire l’état calculé de la donnée intermédiaire sélectionnée. Pendant la deuxième application de la fonction cryptographique pour l’itération j concernée, c’est-à-dire pendant l’application réduite, le processeur 4 récupère l’état de la donnée intermédiaire sélectionnée qui a été mémorisé pendant l’application complète, et ne recalcule pas ledit l’état de la donnée intermédiaire par l’application de la transformation déterminée aux données intermédiaires.
Le procédé permet ainsi de limiter le temps de calcul requis pour hacher la donnée d’entrée en mutualisant le calcul d’un état d’une donnée intermédiaire, la donnée intermédiaire sélectionnée, entre la première application et la deuxième application de la fonction cryptographique d’une même itération de la suite.
La donnée intermédiaire sélectionnée et l’état de la donnée intermédiaire sélectionnée peuvent être sélectionnés en fonction de la valeur de la constante prédéterminée.
La valeur de la constante prédéterminée peut être représentée sous forme de bits. Typiquement, la constante prédéterminée comporte autant de bits que le premier paramètre.
Plus la constante prédéterminée a de bits à 0, plus grand est le nombre d’états de donnée intermédiaire identiques entre la première application et la deuxième application de la fonction cryptographique.
Ainsi, de façon également avantageuse, pendant la deuxième application de la fonction cryptographique de l’itération j, c’est à dire pendant l’application réduite mentionnée ci-avant, le processeur 4 peut sélectionner une première autre donnée intermédiaire parmi les données intermédiaires et déterminer un état de la première autre donnée intermédiaire sélectionnée, ledit état résultant d’une deuxième transformation parmi les transformations successives, par la mise en œuvre de la deuxième transformation aux données intermédiaires, pendant la première application de la fonction cryptographique de ladite itération j, c’est-à-dire pendant l’application complète mentionnée ci-avant.
La première autre donnée intermédiaire sélectionnée est une donnée intermédiaire différente de la donnée intermédiaire sélectionnée.
La deuxième transformation parmi les transformations successives peut être la transformation déterminée ou une transformation différente de la transformation déterminée.
Typiquement, pendant la première application de la fonction cryptographique de l’itération j, c’est-à-dire pendant l’application complète, le processeur 4 calcule l’état de la première autre donnée intermédiaire sélectionnée, par l’application de la deuxième transformation aux données intermédiaires, puis le dispositif électronique 2 conserve dans une mémoire l’état calculé de la première autre donnée intermédiaire sélectionnée. Pendant la deuxième application de la fonction cryptographique de ladite itération j, c’est-à-dire pendant l’application réduite, le processeur 4 récupère l’état de la première autre donnée intermédiaire sélectionnée qui a été mémorisé pendant la première application de la fonction cryptographique, et ne recalcule pas ledit état de la première autre donnée intermédiaire par l’application de la deuxième transformation aux données intermédiaires.
Le procédé permet ainsi de limiter encore le temps de calcul requis pour hacher la donnée d’entrée en mutualisant le calcul d’un état d’une autre donnée intermédiaire, la première autre donnée intermédiaire sélectionnée, entre la première application et la deuxième application de la fonction cryptographique de l’itération concernée, c’est-à-dire de l’itération pendant laquelle le calcul d’un état de la donnée intermédiaire sélectionnée est mutualisé.
De préférence, la première autre donnée intermédiaire sélectionnée et l’état de la première autre donnée intermédiaire sélectionnée sont sélectionnés en fonction de la constante prédéterminée.
Selon une autre façon avantageuse, pendant l’application réduite, le processeur 4 peut déterminer un autre état de la donnée intermédiaire sélectionnée, ledit autre état résultant d’une autre transformation parmi les transformations successives, par la mise en œuvre, pendant l’application complète, de l’autre transformation aux données intermédiaires, l’autre transformation étant distincte de la transformation déterminée.
Typiquement, pendant l’application complète, le processeur 4 calcule l’autre état de la donnée intermédiaire sélectionnée, par l’application de l’autre transformation aux données intermédiaires, puis le dispositif électronique 2 conserve dans une mémoire l’autre état calculé de la donnée intermédiaire sélectionnée. Pendant l’application réduite, le processeur 4 récupère alors l’autre état de la donnée intermédiaire sélectionnée, qui a été mémorisé pendant la première application de la fonction cryptographique, et ne recalcule pas ledit autre état de la donnée intermédiaire par l’application de l’autre transformation aux données intermédiaires.
Le procédé permet ainsi de limiter encore le temps de calcul requis pour hacher la donnée d’entrée en mutualisant le calcul d’un autre état de la donnée intermédiaire sélectionnée, entre la première application et la deuxième application de la fonction cryptographique de l’itération concernée, c’est-à-dire de l’itération pendant laquelle le calcul d’un état de la donnée intermédiaire sélectionnée est mutualisé.
De préférence, la donnée intermédiaire sélectionnée et l’autre état de la donnée intermédiaire sélectionnée sont sélectionnés en fonction de la constante prédéterminée.
Un homme du métier comprendra que les étapes de ce procédé peuvent être exécutées selon d’autres ordres dans la mesure où chaque étape dispose des éléments nécessaires à son exécution.
Selon un exemple, l’étape (étape S22) de détermination de la donnée de sortie peut débuter après la dernière itération de l’étape d’obtention d’un premier résultat (étape S14) et avant la fin de la dernière itération de l’étape d’obtention d’un deuxième résultat (étape S16), et se termine après la dernière itération de l’étape d’obtention d’un deuxième résultat (étape S16).
Dans cet exemple, le processeur 4 détermine :
- la première partie S1de la donnée de sortie après la dernière itération de l’étape d’obtention d’un premier résultat (étape S14) et avant la fin de la dernière itération de l’étape d’obtention d’un deuxième résultat (étape S16), et
- la deuxième partie S2de la donnée de sortie après la fin de la dernière itération de l’étape d’obtention d’un deuxième résultat (étape S16).
- la première partie S1de la donnée de sortie après la dernière itération de l’étape d’obtention d’un premier résultat (étape S14) et avant la fin de la dernière itération de l’étape d’obtention d’un deuxième résultat (étape S16), et
- la deuxième partie S2de la donnée de sortie après la fin de la dernière itération de l’étape d’obtention d’un deuxième résultat (étape S16).
Selon un autre exemple, au cours d’une itération de la suite, l’étape d’obtention d’un deuxième résultat (étape S16) de l’itération concernée, est mise en œuvre avant l’étape d’obtention d’un premier résultat (étape S14) de ladite itération concernée.
Dans cet exemple, de façon avantageuse, pendant la première application de la fonction cryptographique de l’itération concernée, que nous nommerons ici application réduite, le processeur 4 sélectionne une donnée intermédiaire parmi les données intermédiaires et détermine un état de la donnée intermédiaire sélectionnée, ledit état résultant d’une transformation déterminée parmi les transformations successives, par la mise en œuvre, pendant la deuxième application de la fonction cryptographique de ladite itération concernée, que nous nommerons ici application complète, de la transformation déterminée aux données intermédiaires.
Typiquement, pendant la deuxième application de la fonction cryptographique de l’itération concernée, c’est-à-dire pendant l’application complète, le processeur 4 calcule l’état de la donnée intermédiaire sélectionnée par l’application de la transformation déterminée aux données intermédiaires, puis le dispositif électronique 2 conserve dans une mémoire l’état calculé de la donnée intermédiaire sélectionnée. Pendant la première application de la fonction cryptographique de l’itération concernée, c’est-à-dire pendant l’application réduite, le processeur 4 récupère alors l’état de la donnée intermédiaire sélectionnée qui a été mémorisé et ne recalcule pas ledit l’état de la donnée intermédiaire par l’application de la transformation déterminée aux données intermédiaires.
Le procédé permet ainsi de limiter le temps de calcul requis pour hacher la donnée d’entrée.
Toujours dans cet exemple, de façon également avantageuse, pendant la première application de la fonction cryptographique de l’itération concernée, c’est à dire pendant l’application réduite, le processeur 4 peut sélectionner une première autre donnée intermédiaire parmi les données intermédiaires et déterminer un état de la première autre donnée intermédiaire sélectionnée, ledit état résultant d’une deuxième transformation parmi les transformations successives, par la mise en œuvre pendant la deuxième application de la fonction cryptographique de ladite itération concernée, c’est à dire pendant l’application complète, de la deuxième transformation aux données intermédiaires.
Typiquement, pendant la deuxième application de la fonction cryptographique de l’itération concernée, c’est-à-dire pendant l’application complète, le processeur 4 calcule l’état de la première autre donnée intermédiaire sélectionnée, par l’application de la deuxième transformation aux données intermédiaires, puis le dispositif électronique 2 conserve dans une mémoire l’état calculé de la première autre donnée intermédiaire sélectionnée. Pendant la première application de la fonction cryptographique de ladite itération concernée, c’est-à-dire pendant l’application réduite, le processeur 4 récupère l’état de la première autre donnée intermédiaire sélectionnée qui a été mémorisé, et ne recalcule pas l’état de la première autre donnée intermédiaire par l’application de la deuxième transformation aux données intermédiaires.
Le procédé permet ainsi de limiter encore le temps de calcul requis pour hacher la donnée d’entrée.
Comme déjà décrit, la première autre donnée intermédiaire sélectionnée est une donnée intermédiaire différente de la donnée intermédiaire sélectionnée, et la deuxième transformation parmi les transformations successives peut être la transformation déterminée ou une transformation différente de la transformation déterminée.
En outre, la première autre donnée intermédiaire sélectionnée et l’état de la première autre donnée intermédiaire sélectionnée sont de préférence sélectionnés en fonction de la constante prédéterminée.
Selon une autre façon avantageuse, pendant la première application de la fonction cryptographique de l’itération concernée, c’est-à-dire pendant l’application réduite, le processeur 4 peut déterminer un autre état de la donnée intermédiaire sélectionnée, ledit autre état résultant d’une autre transformation parmi les transformations successives, par la mise en œuvre de l’autre transformation aux données intermédiaires pendant l’application complète de la fonction cryptographique, l’autre transformation étant distincte de la transformation déterminée.
Typiquement, pendant la deuxième application de la fonction cryptographique de l’itération concernée, c’est-à-dire pendant l’application complète, le processeur 4 calcule l’autre état de la donnée intermédiaire sélectionnée, par l’application de l’autre transformation aux données intermédiaires, puis le dispositif électronique 2 conserve dans une mémoire l’autre état calculé de la donnée intermédiaire sélectionnée. Pendant l’application réduite, le processeur 4 récupère alors l’autre état de la donnée intermédiaire sélectionnée, qui a été mémorisé pendant la deuxième application de la fonction cryptographique de ladite itération concernée, et ne recalcule pas l’autre état de la donnée intermédiaire par l’application de l’autre transformation aux données intermédiaires.
Le procédé permet ainsi de limiter encore le temps de calcul requis pour hacher la donnée d’entrée.
Comme déjà décrit, la donnée intermédiaire sélectionnée et l’autre état de la donnée intermédiaire sélectionnée peuvent être sélectionnés en fonction de la constante prédéterminée.
Quelques soit l’ordre des étapes, de manière particulièrement avantageuse, la constante prédéterminée est une puissance de deux.
Le procédé permet ainsi une limitation optimale des temps de calcul en maximisant le nombre d’états de donnée intermédiaire, c’est-à-dire le nombre d’états d’une même donnée intermédiaire et/ou le nombre d’états de données intermédiaires distinctes, dont le calcul peut être mutualisé entre la première application et la deuxième application de la fonction cryptographique.
En effet, dans ce cas, pour une itération donnée, le premier paramètre ne diffère du deuxième paramètre que d’un bit.
On a décrit ci-dessus, des façons avantageuses pour la mise en œuvre du procédé consistant à mutualiser le calcul d’un état d’une donnée intermédiaire et le cas échéant, le calcul d’un état d’une autre donnée intermédiaire et/ou le calcul d’un autre état de la donnée intermédiaire, entre la première application et la deuxième application de la fonction cryptographique d’une même itération.
De façon encore plus avantageuse, le procédé peut être mis en œuvre en mutualisant le calcul d’un état d’une donnée intermédiaire et le cas échéant, le calcul d’un état d’une autre donnée intermédiaire et/ou le calcul d’un autre état de la donnée intermédiaire, entre la première application et la deuxième application de la fonction cryptographique d’une ou plusieurs autre(s) itération(s), par exemple entre la première application et la deuxième application de la fonction cryptographique de chaque autre itération de la suite.
Le procédé permet ainsi de limiter encore le temps de calcul requis pour hacher la donnée d’entrée.
Pendant une itération, l’état de la donnée intermédiaire dont le calcul est mutualisé, respectivement la donnée intermédiaire dont le calcul de l’état est mutualisé, peut être identique ou différent de l’état de la donnée intermédiaire et/ou de l’autre état de la donnée intermédiaire et/ou de l’état de l’autre donnée intermédiaire dont le calcul est mutualisé pendant une ou plusieurs autre(s) itération(s), respectivement de la donnée intermédiaire et/ou de l’autre donnée intermédiaire dont le calcul de l’état est mutualisé pendant une ou plusieurs autre(s ) itération(s).
De même, pendant une itération :
- l’état de l’autre donnée intermédiaire dont le calcul est mutualisé, respectivement l’autre donnée intermédiaire dont le calcul de l’état est mutualisé, peut être identique ou différent de l’état de la donnée intermédiaire et/ou de l’autre état de la donnée intermédiaire et/ou de l’état de l’autre donnée intermédiaire dont le calcul est mutualisé pendant une ou plusieurs autre(s) itération(s), respectivement de la donnée intermédiaire et/ou de l’autre donnée intermédiaire dont le calcul de l’état est mutualisé pendant une ou plusieurs autre(s ) itération(s), et
- l’autre état de la donnée intermédiaire dont le calcul est mutualisé, peut être identique ou différent de l’état de la donnée intermédiaire et/ou de l’autre état de la donnée intermédiaire et/ou de l’état de l’autre donnée intermédiaire dont le calcul est mutualisé pendant une ou plusieurs autre(s) itération(s).
- l’état de l’autre donnée intermédiaire dont le calcul est mutualisé, respectivement l’autre donnée intermédiaire dont le calcul de l’état est mutualisé, peut être identique ou différent de l’état de la donnée intermédiaire et/ou de l’autre état de la donnée intermédiaire et/ou de l’état de l’autre donnée intermédiaire dont le calcul est mutualisé pendant une ou plusieurs autre(s) itération(s), respectivement de la donnée intermédiaire et/ou de l’autre donnée intermédiaire dont le calcul de l’état est mutualisé pendant une ou plusieurs autre(s ) itération(s), et
- l’autre état de la donnée intermédiaire dont le calcul est mutualisé, peut être identique ou différent de l’état de la donnée intermédiaire et/ou de l’autre état de la donnée intermédiaire et/ou de l’état de l’autre donnée intermédiaire dont le calcul est mutualisé pendant une ou plusieurs autre(s) itération(s).
Notamment, pour une deuxième autre donnée intermédiaire sélectionnée parmi les données intermédiaires, pendant une application de la fonction cryptographique parmi la première application et la deuxième application d’une autre itération, le processeur 4 peut déterminer un état de la deuxième autre donnée intermédiaire sélectionnée, résultant d’une troisième transformation parmi les transformations successives, par la mise en œuvre, pendant l’autre application parmi la première application et la deuxième application de ladite autre itération, de la troisième transformation aux données intermédiaires.
La troisième transformation peut être la transformation déterminée ou la deuxième transformation ou l’autre transformation décrites plus haut.
La troisième transformation peut être une transformation différente de la transformation déterminée, de la deuxième transformation et de l’autre transformation décrites plus haut.
On notera que les calculs d’états de données intermédiaires pouvant être mutualisés sont les mêmes pour toutes les itérations au sein du procédé.
En effet, pour chaque itération j, le premier paramètre P1,jet le deuxième paramètre P2,jont pour différence la même valeur, la constante prédéterminée C1: .
Par exemple, si le procédé de laFIG. 6 est avec une fonction cryptographique F de chiffrement par bloc selon l’algorithme AES et que la constance prédéterminée C1est une puissance de 2 dont la valeur est supérieure ou égale à 1 et inférieure ou égale à 128, pour chaque itération au sein du procédé, les calculs de chaque état de donnée intermédiaire illustré en blanc dans laFIG. 5 peuvent être mutualisé.
Le procédé de hachage décrit en référence à laFIG. 6 exécute les tours, c’est-à-dire les itérations, de la boucle avec un index qui s’incrémente à chaque tour. L’homme du métier comprendra que l’index de la boucle peut être géré différemment tant que toutes les valeurs de l’index sont parcourues en exécutant les tours de ladite boucle, et que l’étape d’obtention d’un premier résultat (étape S14) et l’étape d’obtention d’un deuxième résultat (étape S16) d’une itération, utilisent les paramètres et résultats de l’étape d’obtention d’un premier résultat et de l’étape d’obtention d’un deuxième résultat de l’itération exécutée immédiatement avant.
Typiquement, le procédé peut être adapté pour faire les n itérations de l’étape d’obtention d’un premier résultat (étape S14) et de l’étape d’obtention d’un deuxième résultat (étape S16) dans un ordre différent, chaque itération utilisant une valeur différente de l’entier, comprise entre 1 et n. Par exemple, l’homme du métier peut initialiser l’entier avec la valeur n dans l’étape d’initialisation d’index (étape S12), remplacer l’étape d’incrémentation (étape S20) par une étape de décrémentation qui décrémente j de 1, et déterminer à l’étape de test (étape S18), si l’entier j a atteint la valeur 1.
Claims (15)
- Procédé de hachage d’une donnée d’entrée en une donnée de sortie avec une fonction cryptographique (F) de chiffrement par bloc ou de déchiffrement par bloc, la fonction cryptographique associant un bloc de sortie à un bloc d’entrée par des transformations successives de données intermédiaires (D) initialisées avec le bloc d’entrée, au moins une des transformations successives dépendant d’une clé cryptographique, le procédé étant mis en œuvre par un dispositif électronique (2) et le procédé comprenant une suite ordonnée d’au moins une itération des deux étapes suivantes, la suite débutant par une première itération et finissant par une dernière itération :
- obtention (S2,S14) d’un premier résultat (R1,R1,j) par une première application de la fonction cryptographique (F) à un premier paramètre (P1,P1,j) avec une clé intermédiaire (K,K’j); le premier paramètre, le premier résultat et la clé intermédiaire étant respectivement le bloc d’entrée, le bloc de sortie et la clé cryptographique de la fonction cryptographique pendant la première application de la fonction cryptographique ;
- obtention (S4,S16) d’un deuxième résultat (R2, R2,j) par une deuxième application de la fonction cryptographique (F) avec la clé intermédiaire (K,K’j), à un deuxième paramètre (P2,P2,j) égal à la combinaison par « ou exclusif » d’une constante prédéterminée (C1) et du premier paramètre ; le deuxième paramètre, le deuxième résultat et la clé intermédiaire étant respectivement le bloc d’entrée, le bloc de sortie et la clé cryptographique de la fonction cryptographique pendant la deuxième application de la fonction cryptographique ;
le procédé comprenant en outre une étape de détermination (S6,S22) de la donnée de sortie par une opération de « ou exclusif » entre le premier paramètre (P1,P1,n) et le premier résultat (R1,R1,n) de la dernière itération de la suite, et par une opération de « ou exclusif » entre le deuxième paramètre (P2,P2,n) et le deuxième résultat (R2,R2,n) de ladite dernière itération;
et le procédé étant caractérisé en ce que pour une donnée intermédiaire sélectionnée parmi les données intermédiaires, pendant une application de la fonction cryptographique, dite application réduite, parmi la première application et la deuxième application d’une itération de la suite, un état de la donnée intermédiaire sélectionnée (d0), résultant d’une transformation déterminée (T1) parmi les transformations successives, est obtenu par la mise en œuvre pendant l’autre application, dite application complète, parmi la première application et la deuxième application de ladite une itération de la suite, de la transformation déterminée aux données intermédiaires. - Procédé de hachage d’une donnée d’entrée en une donnée de sortie selon la revendication précédente, dans lequel la donnée intermédiaire sélectionnée et l’état de la donnée intermédiaire sélectionnée sont sélectionnés en fonction de la constante prédéterminée.
- Procédé de hachage d’une donnée d’entrée en une donnée de sortie selon l’une quelconque des revendications précédentes, dans lequel pour une première autre donnée intermédiaire sélectionnée parmi les données intermédiaires, pendant l’application réduite de la fonction cryptographique, un état de la première autre donnée intermédiaire sélectionnée (d1), résultant d’ une deuxième transformation (T1) parmi les transformations successives, est obtenu par la mise en œuvre, pendant l’application complète de la fonction cryptographique, de la deuxième transformation aux données intermédiaires.
- Procédé de hachage d’une donnée d’entrée en une donnée de sortie selon la revendication précédente, dans lequel la première autre donnée intermédiaire sélectionnée et l’état de la première autre donnée intermédiaire sélectionnée sont sélectionnés en fonction de la constante prédéterminée.
- Procédé de hachage d’une donnée d’entrée en une donnée de sortie selon l’une quelconque des revendications précédentes, dans lequel pendant l’application réduite de la fonction cryptographique, un autre état de la donnée intermédiaire sélectionnée (d2), résultant d’une autre transformation (T2) parmi les transformations successives, est obtenu par la mise en œuvre, pendant l’application complète de la fonction cryptographique, de l’autre transformation aux données intermédiaires, l’autre transformation étant distincte de la transformation déterminée.
- Procédé de hachage d’une donnée d’entrée en une donnée de sortie selon la revendication précédente, dans lequel la donnée intermédiaire sélectionnée et l’autre état de la donnée intermédiaire sélectionnée sont sélectionnés en fonction de la constante prédéterminée.
- Procédé de hachage d’une donnée d’entrée en une donnée de sortie selon l’une quelconque des revendications précédentes, dans lequel la constante prédéterminée est une puissance de deux.
- Procédé de hachage d’une donnée d’entrée en une donnée de sortie selon l’une quelconque des revendications précédentes dans lequel :
- la suite ne comprend qu’une itération de l’étape d’obtention (S2) d’un premier résultat et d’obtention (S4) d’un deuxième résultat,
- la clé intermédiaire comprend au moins une partie de la donnée d’entrée, et
- le premier paramètre est une première partie d’une clé de hachage ou le résultat de la combinaison par « ou exclusif » d’une autre constante prédéterminée et de la première partie de la clé de hachage. - Procédé de hachage d’une donnée d’entrée en une donnée de sortie selon la revendication précédente, dans lequel la clé de hachage a une valeur différente de 0.
- Procédé de hachage d’une donnée d’entrée en une donnée de sortie selon l’une quelconque des revendications 1 à 7 dans lequel,
- la suite comprend une pluralité d’itérations de l’étape d’obtention (S14) d’un premier résultat et de l’étape d’obtention (S16) d’un deuxième résultat,
- pour chaque itération de la suite, la clé intermédiaire (K’j) comprend au moins une partie de la donnée d’entrée,
- le premier paramètre (P1,n) de la dernière itération est égal à la combinaison par « ou exclusif » d’une autre constante prédéterminée (C2), du premier résultat (R1,n-1) de l’avant-dernière itération et du premier paramètre (P1,n-1) de ladite avant-dernière itération,
- pour chaque itération autre que la première itération et la dernière itération de ladite suite, le premier paramètre (P1,j) de l’itération concernée est égal à la combinaison par « ou exclusif » du premier résultat (R1,j-1) et du premier paramètre (P1,j-1) d’une autre itération qui précède immédiatement l’itération concernée, et
- pour chaque itération autre que la première itération, la clé intermédiaire de l’itération concernée (K’j) comprend un troisième paramètre déterminé par une opération de « ou exclusif » entre le deuxième paramètre (P2,j-1) et le deuxième résultat (R2,j-1) d’une autre itération qui précède immédiatement l’itération concernée. - Procédé de hachage d’une donnée d’entrée en une donnée de sortie selon la revendication précédente, dans lequel le premier paramètre de la première itération est une première partie d’une clé de hachage et la clé intermédiaire de la première itération est la concaténation d’au moins une partie la donnée d’entrée et d’une seconde partie de la clé de hachage.
- Procédé de hachage d’une donnée d’entrée en une donnée de sortie selon la revendication précédente, dans lequel la clé de hachage a une valeur différente de 0.
- Procédé de hachage d’une donnée d’entrée en une donnée de sortie, selon l’une quelconque des revendications 10 à 12, dans lequel pour une deuxième autre donnée intermédiaire sélectionnée parmi les données intermédiaires, pendant une application de la fonction cryptographique parmi la première application et la deuxième application d’une autre itération, un état de la deuxième autre donnée intermédiaire sélectionnée, résultant d’une troisième transformation parmi les transformations successives, est obtenu par la mise en œuvre, pendant l’autre application parmi la première application et la deuxième application de ladite autre itération, de la troisième transformation aux données intermédiaires.
- Procédé de hachage d’une donnée d’entrée en une donnée de sortie selon la revendication précédente, dans lequel la deuxième autre donnée intermédiaire sélectionnée et l’état de la deuxième autre donnée intermédiaire sélectionnée sont sélectionnés en fonction de la constante prédéterminée.
- Dispositif électronique (2) pour hacher une donnée d’entrée en une donnée de sortie, le dispositif comprenant :
- un module cryptographique de chiffrement par bloc ou de déchiffrement par bloc, configuré pour associer un bloc de sortie à un bloc d’entrée par des transformations successives de données intermédiaires initialisées avec le bloc d’entrée, au moins une des transformations successives dépendant d’une clé cryptographique,
- un module d’itération configuré pour mettre en œuvre une suite ordonnée d’au moins une itération des deux étapes suivantes, la suite débutant par une première itération et finissant par une dernière itération :
1) obtention (S2,S14) d’un premier résultat (R1,R1,j) par une première application du module cryptographique à un premier paramètre (P1,P1,j) avec une clé intermédiaire (K,K’j); le premier paramètre, le premier résultat et la clé intermédiaire étant respectivement le bloc d’entrée, le bloc de sortie et la clé cryptographique du module cryptographique pendant la première application dudit module cryptographique ;
2) obtention (S4,S16) d’un deuxième résultat (R2, R2,j) par une deuxième application du module cryptographique avec la clé intermédiaire (K,K’j), à un deuxième paramètre (P2,P2,j) égal à la combinaison par « ou exclusif » d’une constante prédéterminée (C1) et du premier paramètre ; le deuxième paramètre, le deuxième résultat et la clé intermédiaire étant respectivement le bloc d’entrée, le bloc de sortie et la clé cryptographique du module cryptographique pendant la deuxième application dudit module cryptographique ;
- un module de détermination de la donnée de sortie configuré pour déterminer la donnée de sortie par une opération de « ou exclusif » entre le premier paramètre (P1,P1,n) et le premier résultat (R1,R1,n) de la dernière itération de la suite, et par une opération de « ou exclusif » entre le deuxième paramètre (P2,P2,n) et le deuxième résultat (R2,R2,n) de ladite dernière itération ;
le dispositif étant caractérisé en ce que pour une donnée intermédiaire sélectionnée parmi les données intermédiaires, pendant une application du module cryptographique parmi la première application et la deuxième application d’une itération de la suite, un état de la donnée intermédiaire sélectionnée (d0), résultant d’une transformation déterminée (T1) parmi les transformations successives, est obtenu par la mise en œuvre, pendant l’autre application parmi la première application et la deuxième application de ladite itération de la suite, de la transformation déterminée aux données intermédiaires.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| FR2401212A FR3159070A1 (fr) | 2024-02-07 | 2024-02-07 | Procédé de hachage d’une donnée d’entrée en une donnée de sortie et dispositif électronique associé. |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| FR2401212 | 2024-02-07 | ||
| FR2401212A FR3159070A1 (fr) | 2024-02-07 | 2024-02-07 | Procédé de hachage d’une donnée d’entrée en une donnée de sortie et dispositif électronique associé. |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| FR3159070A1 true FR3159070A1 (fr) | 2025-08-08 |
Family
ID=91739008
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| FR2401212A Pending FR3159070A1 (fr) | 2024-02-07 | 2024-02-07 | Procédé de hachage d’une donnée d’entrée en une donnée de sortie et dispositif électronique associé. |
Country Status (1)
| Country | Link |
|---|---|
| FR (1) | FR3159070A1 (fr) |
-
2024
- 2024-02-07 FR FR2401212A patent/FR3159070A1/fr active Pending
Non-Patent Citations (3)
| Title |
|---|
| ANONYMOUS: "One-way compression function - Wikipedia", 4 July 2023 (2023-07-04), XP093216436, Retrieved from the Internet <URL:https://en.wikipedia.org/w/index.php?title=One-way_compression_function&oldid=1163371826> * |
| S. HIROSEJ.H. PARKA. YUN: "ASIACRYPT 2007 LNCS", vol. 4833, 2 December 2007, SPRINGER, article "A simple variant of the Merkle-Damgârd scheme with a permutation", pages: 113 - 129 |
| SHOICHI HIROSE ED - MATTHEW ROBSHAW: "Some Plausible Constructions of Double-Block-Length Hash Functions", 15 March 2006, FAST SOFTWARE ENCRYPTION LECTURE NOTES IN COMPUTER SCIENCE;;LNCS, SPRINGER, BERLIN, DE, PAGE(S) 210 - 225, ISBN: 978-3-540-36597-6, XP047030209 * |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP2924609B1 (fr) | Procédé d'enrolement de données dans une base pour la protection desdites données | |
| EP2282441A1 (fr) | Procédé sécurisé de reconstruction d'une mesure de référence d'une donnée confidentielle à partir d'une mesure bruitée de cette donnée, notamment pour la génération de clés cryptographiques | |
| EP2415199B1 (fr) | Procede pour effectuer une tache cryptographique dans un composant electronique | |
| FR3056789A1 (fr) | Procede de chiffrement ou de dechiffrement symetrique par bloc | |
| EP2826200B1 (fr) | Procede de cryptage d'une pluralite de donnees en un ensemble securise | |
| WO2012085047A1 (fr) | Procede d'authentification multimodale a seuil et generation de cle unimodale | |
| EP1086547B1 (fr) | Procede de securisation d'un ou plusieurs ensembles electroniques mettant en oeuvre un algorithme crytographique avec cle secrete, et l'ensemble electronique | |
| FR3159070A1 (fr) | Procédé de hachage d’une donnée d’entrée en une donnée de sortie et dispositif électronique associé. | |
| WO2001082525A1 (fr) | Procede de calcul d'une donnee de controle de cle cryptographique | |
| EP1387519A2 (fr) | Procédé de sécurisation d'un ensemble électronique contre des attaques par introduction d'erreurs | |
| FR2884663A1 (fr) | Procede de communication entre un lecteur et un marqueur d'indentification sans fil, lecteur et marqueur associes | |
| Leblanc-Albarel | Cryptanalytic Time-Memory Trade-Off | |
| FR3082333A1 (fr) | Procede de determination d’inverse modulaire et dispositif de traitement cryptographique associe | |
| WO2015132524A2 (fr) | Génération de message pour test de génération de clés cryptographiques | |
| EP1180260B1 (fr) | Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle secrete et dynamique | |
| CA2613884C (fr) | Procede pour disposer d'un lien de communication securise entre un utilisateur et une entite | |
| EP2936302A1 (fr) | Generateur de sequences chaotiques | |
| EP4687318A1 (fr) | Procédé de comparaison sécurisée à zéro, dispositif électronique et programme d'ordinateur associés | |
| EP4617853B1 (fr) | Procédé de détermination d'un inverse modulaire, dispositif électronique et programmes d ordinateur associés | |
| EP3799347B1 (fr) | Sécurisation du chiffrement des et du déchiffrement des inverse | |
| EP3340096B1 (fr) | Procédé de configuration d'un programme cryptographique destiné à être exécuté par un terminal | |
| FR3153166A3 (fr) | Procédé de multiplication sécurisée entre un polynôme creux et un polynôme dense dans un algorithme cryptographique, dispositif électronique et programme d’ordinateur associés. | |
| EP4718769A1 (fr) | Procédé d´échantillonnage discret sécurisé à partir d´une donnée d´entrée, dispositif électronique et programme d´ordinateur associés | |
| FR2969878A1 (fr) | Procede d'authentification multimodale et generation de cle cryptographique utilisant les secure sketches generalises | |
| EP4572223A1 (fr) | Procédé pour le calcul d'une fonction dans un contexte boîte bleanche et système associé |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PLFP | Fee payment |
Year of fee payment: 2 |
|
| PLSC | Publication of the preliminary search report |
Effective date: 20250808 |
|
| PLFP | Fee payment |
Year of fee payment: 3 |