Brevet FR3140457A1 — publié le 20240405

Méthode d’amélioration de hachage d’un fichier Procédé de calcul d’un code modificateur d’un fichier, le procédé comportant les étapes suivantes : a) établir une liste de codes modificateurs possibles ; b) établir une liste de pluralité de nombres de mélange possibles ; c) pour chaque code modificateur : i) créer une liste de hachés du fichier ; ii) pour chaque nombre de mélange, calculer le haché du fichier mélangé et modifié par le code modificateur, la modification du fichier étant effectuée à l’aide d’une même fonction de modification ; iii) ajouter chaque haché calculé à l’étape ii) à la liste de hachés du fichier ; iv) compter le nombre d’éléments différents N de la liste de hachés ; v) mémoriser ce nombre N, ainsi que le code modificateur associé, si N est le premier à être compté ou est plus grand que le nombre N précédemment mémorisé ; et d) retourner le dernier code modificateur mémorisé. Figure pour l’abrégé : Fig. 2 Méthode d’amélioration de hachage d’un fichier La présente invention concerne le domaine de la sécurité des dispositifs informatiques et électroniques, en particulier le hachage. On appelle « haché » le résultat d’une fonction de hachage qui, à partir d'une donnée initiale fournie en entrée, calcule une empreinte servant à identifier rapidement, bien qu'incomplètement, la donnée initiale. La qualité d’une fonction de hachage d’un fichier F est souvent jugée par la difficulté, en termes de temps de calcul, de calculer un fichier similaire au fichier F mais ayant un haché identique. Cette qualité dépend de la complexité de la fonction de hachage, mais aussi de la taille du haché calculé, et de l’existence éventuelle de règles mathématiques permettant de réduire le nombre de calculs à effectuer pour calculer un des éventuels fichiers similaires. Le brevet FR3092923 divulgue une méthode cryptographique de vérification des données dans laquelle une donnée est mélangée avec un nombre de mélange, préférentiellement un nombre aléatoire, avant d’être hachée. Ainsi, dans ce cas, la qualité de la fonction de hachage d’un fichier donné dépend du cardinal de l’ensemble des nombres de mélange différents de taille donnée pouvant être mélangés audit fichier préalablement à son hachage par ladite fonction de hachage et donnant des hachés différents. La qualité de la fonction de hachage est alors proportionnelle à ce cardinal, car plus ce dernier est grand, plus il y a de chances de calculer des hachés différents avec des nombres de mélange différents. Il existe donc un besoin pour améliorer la qualité de hachage, notamment en termes de robustesse, pour diminuer la possibilité de créer un même haché à partir de données différentes mais semblables. L’invention vise à répondre à cet objectif et a pour objet, selon l’un de ses aspects, un procédé de calcul d’un code modificateur d’un fichier ou d’une donnée, indifféremment appelée fichier par la suite, le procédé étant mis en œuvre par au moins un appareil, en vue notamment d’augmenter le nombre de hachés possibles du fichier mélangé à des nombres de mélanges différents, le fichier étant mélangé à l’aide d’une même fonction de mélange, les hachés étant obtenus à l’aide d’une même fonction de hachage, le procédé comportant les étapes suivantes : a) établir une liste d’une pluralité de codes modificateurs possibles compte tenu du nombre de bits sur lesquels ces codes sont générés ; b) établir une liste d’une pluralité de nombres de mélange possibles compte tenu du nombre de bits sur lesquels ces nombres sont générés ; c) pour chaque code modificateur : i) créer une liste de hachés du fichier, de préférence vide ; ii) pour chaque nombre de mélange, calculer le haché du fichier modifié par le code modificateur puis mélangé au nombre de mélange, la modification du fichier étant effectuée à l’aide d’une même fonction de modification ; iii) ajouter chaque haché calculé à l’étape ii) à la liste de hachés du fichier ; iv) compter le nombre d’éléments différents N de la liste de hachés ; v) mémoriser ce nombre N, ainsi que le code modificateur associé, si N est le premier à être compté ou est plus grand que le nombre N précédemment mémorisé ; et d) retourner le dernier code modificateur mémorisé. Une étape vi) peut être introduite dans laquelle le nombre N ainsi que le modificateur associé sont mémorisés si N est égal au nombre N précédemment mémorisé. L’appareil peut être un ordinateur personnel, un téléphone intelligent, un serveur de courrier électronique, ou un serveur informatique, etc. La fonction de modification, appliquée au fichier se sert du code modificateur, pour altérer le fichier. Le fichier ainsi altéré est ensuite transmis, en clair ou crypté et accompagné de sa signature électronique, de préférence telle que définie dans le brevet FR3092923. L’invention permet d’augmenter le nombre de hachés différents du fichier transmis et mélangé à l’un des nombres de mélanges possibles, et ainsi diminuer la probabilité de pouvoir deviner le haché du fichier transmis et mélangé à un nombre de mélange. Avantageusement, le procédé de calcul selon l’invention est mis en œuvre par un ordinateur quantique. Dans un mode de réalisation préféré, ladite pluralité de codes modificateurs correspond à au moins 90% de tous les codes modificateurs possibles compte tenu du nombre de bits sur lesquels ces codes sont générés. La pluralité de codes modificateurs peut correspondre à la totalité des codes modificateurs possibles compte tenu du nombre de bits sur lesquels ces codes sont générés. Dans un mode de réalisation préféré, ladite pluralité de nombres de mélange correspond à au moins 90% de tous les nombres de mélange possibles compte tenu du nombre de bits sur lesquels ces nombres sont générés. La pluralité des nombres de mélange peut correspondre à la totalité des nombres de mélange possibles compte tenu du nombre de bits sur lesquels ces nombres sont générés. De préférence, le calcul des hachés à l’étape ii) s’effectue simultanément, à l’aide d’un ordinateur quantique, pour ladite pluralité de nombres de mélange. De préférence, l’étape c) est réalisée à l’aide d’un ordinateur quantique, simultanément pour ladite pluralité des codes modificateurs. La fonction de mélange, respectivement la fonction de modification, peut être choisie parmi : - une fonction logique de type XOR additionnant tous ou certains bits du fichier et ceux du nombre de mélange, respectivement du code modificateur, un par un, - une fonction suffixe ajoutant le nombre de mélange, respectivement le code modificateur, à la fin du fichier, - une fonction préfixe ajoutant le nombre de mélange, respectivement le code modificateur, au début du fichier, - une fonction ajoutant le nombre de mélange, respectivement le code modificateur, au fichier à une position prédéfinie, - une fonction de cryptage utilisant le nombre de mélange, respectivement le code modificateur, comme clé de chiffrement du fichier. De préférence, la fonction de modification, est choisie parmi : - une fonction suffixe ajoutant le code modificateur à la fin du fichier, - une fonction préfixe ajoutant le code modificateur au début du fichier, - une fonction ajoutant le code modificateur, au fichier à une position prédéfinie, - une fonction de cryptage utilisant le code modificateur comme clé de chiffrement du fichier, le code modificateur étant par exemple ajouté en suffixe ou en préfixe au fichier crypté. La fonction de mélange est par exemple, et de façon non limitative, une fonction suffixe ajoutant le nombre de mélange à la fin du fichier, une fonction préfixe ajoutant le nombre de mélange au début du fichier, une fonction ajoutant le nombre de mélange au fichier à une position prédéfinie, une fonction de cryptage symétrique ou asymétrique utilisant le nombre de mélange comme clé de chiffrement du fichier, ou une fonction logique de type XOR additionnant tous ou certains bits du fichier et ceux du nombre de mélange un par un. Dans un mode de réalisation, la fonction de mélange est différente de la fonction de modification. Dans un autre mode de réalisation, la fonction de mélange est identique à la fonction de modification. La fonction de hachage est préférentiellement choisie parmi SHA1, SHA2, SHA256, MD5 et la fonction de Jenkins, ou encore des troncatures des résultats de ces fonctions. Le code modificateur peut servir de paramètre à la fonction de hachage, notamment en en modifiant les mécanismes internes ou en étant un des paramètres internes. Le code modificateur est alors par exemple ajouté au début du fichier et sert de paramètre à la fonction de hachage en tant que clé pour une fonction de hachage à clé, comme par exemple décrit dans l’article « One-way hash functions with changeable parameters » publié en 1999 dans le numéro 188 de la revue « information sciences ». Le code modificateur peut aussi être ou faire partie du fichier à modifier, notamment lorsque ce fichier est une donnée multimédia telle qu’une image. Par exemple en l’occurrence, le code modificateur peut modifier certains attributs de certains éléments de l’image tels qu’une couleur, un ton, un espacement, etc., ou les attributs d’un son pour un fichier audio. Le nombre de mélange et le code modificateur peuvent avoir la même taille. Alternativement, le nombre de mélange et le code modificateur sont de tailles différentes. Si le code modificateur est sur n bits, la liste établie à l’étape a) peut comprendre jusqu’à 2 n codes modificateurs. De même, si le nombre de mélange est sur m bits, la liste établie à l’étape b) peut comprendre jusqu’à 2 m nombres de mélange. L’invention a encore pour objet, selon un autre de ses aspects, un produit programme d’ordinateur comprenant des instructions lisibles par le processeur d’un appareil pour la mise en œuvre du procédé selon l’invention. L’invention pourra être mieux comprise à la lecture de la description détaillée qui va suivre, d’exemples non limitatifs de mise en œuvre de celle-ci, et à l’examen du dessin annexé, sur lequel : La représente schématiquement un exemple de hachage de fichier selon l’invention ; la illustre schématiquement un exemple de mise en œuvre de l’invention ; et la représente schématiquement un exemple de mise en œuvre d’un procédé de vérification de l’intégrité d’un fichier modifié selon l’invention. Description détaillée On a illustré schématiquement à la les étapes d’obtention d’un haché H d’un fichier F. Dans cet exemple, le fichier F est modifié par un code modificateur CM à l’aide d’une fonction de modification 105 puis mélangé à un nombre de mélange NM avec une fonction de mélange 104. Les fonctions de mélange et de modification peuvent être identiques ou différentes. Par exemple, il peut s’agir d’une fonction suffixe ajoutant le code modificateur CM ou le nombre de mélange NM, à la fin du fichier F. Le nombre de mélange et le code modificateur peuvent avoir la même taille, par exemple 56 bits, ou être de tailles différentes. Enfin, le fichier modifié puis mélangé est haché à l’aide d’une fonction de hachage 106 pour donner le haché H. Un objectif de l’invention est d’augmenter le nombre de hachés H possibles du fichier F mélangé à des nombres de mélanges NM différents, le fichier étant mélangé à l’aide d’une même fonction de mélange 104, les hachés H étant obtenus à l’aide d’une même fonction de hachage 106. La est un schéma en blocs illustrant les différentes étapes d’un exemple de procédé selon l’invention mis en œuvre sur un appareil A. A l’étape a), une liste exhaustive des codes modificateurs CM de taille donnée est établie. Si le code modificateur CM est sur n bits, cette liste comprend 2 n codes modificateurs. A l’étape b), une liste exhaustive des nombres de mélange NM de taille donnée est établie. Si le nombre de mélange NM est sur m bits, cette liste comprend 2 m nombres de mélanges. A l’étape c), pour chaque code modificateur CM de la liste établie à l’étape a), les étapes i) à v) sont mises en œuvre. D’abord, une liste vide de hachés est créée à l’étape i). Ensuite, à l’étape ii), pour chaque nombre de mélange NM de la liste établie à l’étape b), le haché H du fichier F modifié par le code modificateur CM puis mélangé au nombre de mélange NM est calculé, la modification étant effectuée par une même fonction de modification 105. A l’étape iii), chaque haché H calculé à l’étape précédente est ajouté à la liste de hachés H du fichier F si cette dernière ne le contient pas déjà. A l’étape iv), le nombre d’éléments N de la liste de hachés est compté. A l’étape v), ce nombre N et le code modificateur associé CM sont retenus, si N est le premier à être compté ou est plus grand que le nombre N précédemment retenu. A l’étape d), le dernier code modificateur CM retenu est retourné, comme correspondant à l’opération de hachage la plus robuste. A titre d’exemple, si l’on considère un code modificateur sur 2 bits, l’ensemble des codes modificateurs contient 4 éléments constitutifs de la liste établie à l’étape a) = {CM1, CM2, CM3, CM4}. Supposons que, pour CM1, on obtient 3 hachés différents (après mélange et modification), soit N=3. C’est ce nombre N qui est retenu dans un premier temps à l’étape v) puisque c’est le premier à avoir été calculé, avec le code modificateur associé CM1. Ensuite, supposons que, pour CM2, on obtient 4 hachés différents, soit N=4. Pour cette itération, à l’étape v), c’est N=4 qui sera retenu avec CM2 en tant que code modificateur associé. Puis, supposons que, pour CM3, on obtient 2 hachés différents, soit N=2 qui ne sera pas retenu, car inférieur au précédent. Enfin, supposons que pour CM4, on obtient 1 hachés différents, soit N=1. C’est ce nombre N, avec CM2, qui sera retenu. A la fin, à l’étape d), CM2 est retourné comme étant le code modificateur correspondant à l’opération de hachage la plus robuste. La représente schématiquement un exemple de mise en œuvre d’un procédé de vérification de l’intégrité d’un fichier modifié selon l’invention : Etape 201 : le message est reçu par le dispositif A Etape 202 : le code modificateur est calculé Etape 203 : le nombre de mélange, secret partagé avec le destinataire B du message est extrait de la mémoire Etape 204 : le fichier est modifié avec le code modificateur, et mélangé avec le nombre de mélange Etape 205 : le haché du fichier modifié à l’étape 204 à l’aide du code modificateur et mélangé à l’aide du nombre de mélange est crypté par une clé à usage unique Etape 206 : le fichier obtenu à l’étape 204 est envoyé, en clair avec le haché crypté obtenu à l’étape 205 au destinataire B Etape 207 : le destinataire B reçoit le fichier et vérifie que le haché du fichier mélangé au nombre de mélange puis crypté par la clé à usage unique utilisée à l’étape 205 est égal au haché crypté transmis avec ledit fichier reçu. L’invention n’est pas limitée aux exemples de réalisation décrits ci-dessus. Le calcul du code modificateur peut être utilisé dans le cadre du brevet FR3092923, en ajoutant le code modificateur à une donnée pour laquelle une signature électronique doit été déterminée, et ainsi diminuer la probabilité de permettre la transmission indétectée d’une donnée différente. L’invention peut être utilisée notamment pour sécuriser les transactions financières. Procédé de calcul d’un code modificateur (CM) d’un fichier (F), mis en œuvre par au moins un appareil (A), en vue notamment d’augmenter le nombre de hachés (H) possibles du fichier mélangé à des nombres de mélanges (NM) différents, le fichier (F) étant mélangé à l’aide d’une même fonction de mélange (104), les hachés (H) étant obtenus à l’aide d’une même fonction de hachage (106), le procédé comportant les étapes suivantes : a) établir une liste d’une pluralité de codes modificateurs (CM) possibles compte tenu du nombre de bits sur lesquels ces codes sont générés ; b) établir une liste d’une pluralité de nombres de mélange (NM) possibles compte tenu du nombre de bits sur lesquels ces nombres sont générés ; c) pour chaque code modificateur (CM) : i) créer une liste de hachés (H) du fichier (F), de préférence vide ; ii) pour chaque nombre de mélange (NM), calculer le haché (H) du fichier (F) modifié par le code modificateur (CM) puis mélangé au nombre de mélange (NM), la modification du fichier (F) étant effectuée à l’aide d’une même fonction de modification (105) ; iii) ajouter chaque haché (H) calculé à l’étape ii) à la liste de hachés (H) du fichier (F) ; iv) compter le nombre d’éléments différents N de la liste de hachés (H) ; v) mémoriser ce nombre N, ainsi que le code modificateur (CM) associé, si N est le premier à être compté ou est plus grand que le nombre N précédemment mémorisé ; et d) retourner le dernier code modificateur (CM) mémorisé. Procédé selon la revendication précédente, ladite pluralité de codes modificateurs (CM) correspondant à au moins 90% de tous les codes modificateurs (CM) possibles compte tenu du nombre de bits sur lesquels ces codes sont générés. Procédé selon l'une des deux revendications précédentes, ladite pluralité de nombres de mélange (NM) correspondant à au moins 90% de tous les nombres de mélange (NM) possibles compte tenu du nombre de bits sur lesquels ces nombres sont générés. Procédé selon l'une quelconque des revendications précédentes, le calcul des hachés (H) à l’étape ii) s’effectuant simultanément pour ladite pluralité de nombres de mélange (NM). Procédé selon l'une quelconque des revendications précédentes, l’étape c) étant réalisée simultanément pour ladite pluralité des codes modificateurs (CM). Procédé selon l'une quelconque des revendications précédentes, la fonction de mélange (104), respectivement la fonction de modification (105), étant choisie parmi : - une fonction logique de type XOR additionnant tous ou certains bits du fichier (F) et ceux du nombre de mélange (NM), respectivement du code modificateur (CM), un par un, - une fonction suffixe ajoutant le nombre de mélange (NM), respectivement le code modificateur (CM), à la fin du fichier, - une fonction préfixe ajoutant le nombre de mélange (NM), respectivement le code modificateur (CM), au début du fichier, - une fonction ajoutant le nombre de mélange (NM), respectivement le code modificateur (CM), au fichier à une position prédéfinie, - une fonction de cryptage utilisant le nombre de mélange (NM), respectivement le code modificateur (CM), comme clé de chiffrement du fichier. Procédé selon l'une quelconque des revendications précédentes, la fonction de mélange (104) étant différente de la fonction de modification (105). Procédé selon l'une quelconque des revendications 1 à 6, la fonction de mélange (104) étant identique à la fonction de modification (105). Procédé selon l'une quelconque des revendications précédentes, la fonction de hachage (106) étant choisie parmi SHA1, SHA2, SHA256, MD5 et la fonction de Jenkins. Procédé selon l'une quelconque des revendications précédentes, le nombre de mélange (NM) et le code modificateur (CM) ayant la même taille. Procédé selon l'une quelconque des revendications 1 à 9, le nombre de mélange (NM) et le code modificateur (CM) étant de tailles différentes. Produit programme d’ordinateur comprenant des instructions lisibles par le processeur d’un appareil (A) pour la mise en œuvre du procédé selon l’une quelconque des revendications précédentes.