Brevet FR3092923A1 — publié le 20200821

Description Titre de l'invention : Méthode cryptographique de vérification des données Domaine technique [0001] La présente invention concerne la cryptographie numérique et la sécurité des dis- positifs informatiques et électroniques, en particulier les signatures numériques. Technique antérieure [0002] Les ordinateurs et les appareils électroniques sont souvent connectés sur un réseau, physiquement, sans fil, par RFID, ou par tout autre moyen sécurisé ou non, et ont parfois besoin de connaître l'identité de l'appareil qui leur a envoyé certaines données, par exemple pour s'assurer que ces données ne sont pas transmises par un autre appareil, qui les aurait interceptées et modifiées avant de les renvoyer au destinataire légitime, ou tout simplement pour identifier sans aucun doute l'identité de l'expéditeur des données, qui est par exemple une voiture sur un réseau routier ou une étiquette RFID portée par un concurrent lors d'un événement sportif, ou pour toute autre raison pour laquelle l'identité de l'expéditeur des données est importante pour le destinataire. [0003] Les données transmises peuvent être envoyées entièrement chiffrées avec une clé attribuée à l'expéditeur. Cependant, le cryptage de l'intégralité des données rend difficile l'utilisation des clés à usage unique, appelées « One Time Pads » en anglais. En effet, le cryptage de l'intégralité des données est une méthode qui utilise des clés aussi longues que les données qu'elles cryptent, et ces clés doivent être renouvelées après utilisation. [0004] Il est donc nécessaire que les ordinateurs ou autres dispositifs électroniques entrant en communication vérifient l'identité du dispositif d'envoi en utilisant le cryptage d'une quantité de données inférieure à la quantité de données envoyées. C'est pour cela qu'on utilise une signature électronique consistant à chiffrer un haché des données. 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. Il est courant d'envoyer avec les données un haché chiffré, qui sera ensuite déchilTré par le destinataire, puis comparé au haché des données reçues. MD5, SHA1 et SHA256 sont des algorithmes classiquement utilisés pour de tels hachages. Toutefois, les hachés de données sont de taille généralement beaucoup plus petite que celle des données d'origine, et il peut être possible de créer d'autres données similaires, mais légèrement différentes des données d'origine, ayant un haché égal au haché des données d'origine. Ces données pourraient donc être substituées aux données d'origine, sans être rejetées par la procédure de vérification du 2 haché. La substitution peut être effectuée sur tout type de données, mais est d'autant moins détectable par l'utilisateur que les données sont complexes, comme un texte long, un fichier audio, une photo ou une vidéo. Pour effectuer la substitution, il ne serait même pas nécessaire de décrypter le haché crypté. Un simple calcul du haché des données d'origine suffirait. En outre, les fonctions de hachage telles que MD5 et SHA1 sont. des fonctions de hachage actuellement relativement faciles à contourner. [0005] Les ordinateurs quantiques en cours de développement devraient bientôt être capables de contourner la sécurité offerte par les fonctions de hachage, étant capables d'optimiser des fichiers de départ pour qu'ils aient un haché prédéterminé. [0006] Des méthodes d'amélioration de la sécurité des systèmes utilisant des techniques de hachage sont connues de l'art antérieur. [0007] La demande CN101547184 utilise plusieurs valeurs d'authentification auxiliaires échangées entre un serveur et des utilisateurs. [0008] Dans la méthode proposée par la demande US2011/0246433, un haché des données à envoyer est généré et concaténé avec le bloc de données à envoyer et l'étiquette d'un nombre aléatoire. Exposé de l'invention [0009[ Il existe un besoin pour perfectionner encore la sécurité des techniques de hachage, réduisant la probabilité d'erreur dans la vérification des données, et le cas échéant, permettant une authentification plus sûre de l'expéditeur de ces données. [0010[ L'invention vise notamment à y répondre, et elle y parvient grâce à un procédé de comparaison, mis en oeuvre par au moins un appareil, d'un premier et deuxième ensemble de données, en vue notamment de déterminer si ces deux ensembles de données sont identiques, comportant les étapes suivantes : a. le mélange d'un nombre, dit nombre de mélange, au premier ensemble de données, à l'aide d'une fonction de mélange, pour obtenir des données mélangées, h. le hachage des données mélangées à l'aide d'unc fonction de hachage, et c. la comparaison du haché ainsi obtenu à l'étape h) avec un troisième ensemble de données supposé être le haché du deuxième ensemble de données mélangé au même nombre de mélange que celui utilisé à l'étape a) et avec la même fonction de mélange. [0011] Grâce à l'invention, notamment au mélange du premier ensemble de données avec un nombre de mélange préalablement au hachage, il devient très improbable de pouvoir créer des données similaires à ce premier ensemble de données qui, après avoir été mélangées au même nombre de mélange, auront le même haché que le premier ensemble de données mélangé. 3 [0012] De préférence, le procédé selon l'invention ne nécessite pas la présence simultanée des deux ensembles de données sur l'appareil. [0013] De préférence, le nombre de mélange est généré aléatoirement. [0014] Le nombre de mélange est préférentiellement généré par l'appareil. En variante, la génération du nombre de mélange est effectuée par un autre appareil de confiance. [0015] La génération du nombre de mélange peut reposer sur un couple de valeurs d'entrée qui sont des grandeurs physiques dont l'une au moins varie continuellement, comme par exemple la température et l'heure, ou sur un phénomène quantique. Par exemple, le choix d'un photon de traverser une plaque par une ou l'autre de deux fentes d'Young constitue la hase d'une telle génération. [0016] De préférence, l'opération de mélange à l'étape a) est effectuée par l'appareil. En variante, le mélange est effectué par un autre appareil de confiance. [0017] La fonction de mélange combine le premier ensemble de données et le nombre de mélange. Elle est, de préférence, une fonction logique de type XOR, additionnant les bits du premier ensemble de données et ceux du nombre de mélange, un par un. La taille du nombre de mélange étant généralement inférieure à la taille du premier ensemble de données, il est possible d'additionner par un XOR les bits du nombre de mélange aux premiers ou aux derniers bits du premier ensemble de données. [0018] Le nombre de mélange peut avoir la même taille que le premier ensemble de données. Dans cc cas, l'addition par la fonction XOR s'opère sur tous les bits, un par un. [0019] Alternativement, la fonction de mélange consiste à ajouter le nombre de mélange à la fin du premier ensemble de données. [0020] La fonction de mélange peut encore être une fonction de cryptage utilisant le nombre de mélange comme clé de chiffrement du premier ensemble de données. [0021] De préférence, le hachage des données à l'étape b) est effectué par l'appareil. En variante, le hachage est effectué par un autre appareil de confiance. [0022] De préférence, la fonction de hachage est choisie parmi SHAI, SHA2, SHA256 et MD5 et la fonction de Jenkins. [0023] Une première variante du procédé selon l'invention est un procédé pour la véri- fication par l'appareil de l'intégrité d'un message provenant d'un émetteur, le procédé comportant: la réception par l'appareil du message constituant le premier ensemble de données et d'un identifiant du message, la génération du nombre de mélange, ii. la mise en oeuvre des étapes a) et b) où le message est mélangé au nombre de mélange puis haché, iv. le cryptage éventuel du nombre de mélange, v. l'envoi par l'appareil de l'identifiant du message et du nombre de mélange éventuellement crypté à l'émetteur du message, vi. la réception par l'appareil du troisième ensemble de données crypte, avec préférentiellement l'identifiant du message, en provenance de l'émetteur, vii. le décryptage du troisième ensemble de données, et viii. la mise en oeuvre de l'étape c), l'intégrité du message étant assurée si le troisième ensemble de données décrypté à l'étape vii et le haché obtenu à l'étape h) sont identiques. [0024] Par « intégrité » du message, il faut entendre sa non altération, par exemple par un tiers malveillant qui l'aurait intercepté au cours de sa transmission. [0025] L'identifiant du message peut être une suite de caractères alphanumériques et/ou de signes pouvant être convertie en un mot numérique par le biais d'un code ASCII ou autre. [0026] L'identifiant du message peut comporter l'identifiant de l'émetteur et un numéro d'ordre du message. [0027] L'authentification de l'émetteur est notamment assurée par l'opération de décryptage à l'étape vii. [0028] Cette première variante de l'invention permet à la fois de s'assurer de l'intégrité du message reçu et de l'identité de l'émetteur du message. [0029] Les étapes relatives à l'envoi et à la réception des données peuvent être réalisées selon le même protocole de communication, ou selon des protocoles de communication différents. Par exemple, la réception à l'étape i se fait par WiFi, l'envoi à l'étape v se fait par 4G et la réception à l'étape vi se fait par WiMAX. [0030] A l'étape i, l'appareil peut également recevoir un identifiant de l'émetteur. Cet identifiant est utile si l'appareil peut recevoir des messages de différents émetteurs, un tel identifiant lui permettant de choisir les clés de cryptage à utiliser pour cryptes ou décrypter les informations échangées avec l'émetteur lors des opérations de cryptage et décryptage décrites dans cette première variante de l'invention. [0031] De préférence, le procédé selon cette première variante comporte entre les étapes v et vi : la réception par l'émetteur de l'identifiant du message et du nombre de mélange éventuellement crypté, le décryptage éventuel du nombre de mélange, l'identification, à l'aide de l'identifiant du message, du message envoyé à l' appareil, le mélange du message au nombre de mélange éventuellement décrypté à l'aide de la fonction de mélange, le hachage des données résultant de l'étape précédente à l'aide de la fonction de hachage, le cryptagc du haché résultant de l'étape précédente, et l'envoi à l'appareil du haché crypte avec de préférence l'identifiant du message. [0032] Le cryptagc éventuel du nombre de mélange à l'étape iv est préférentiellement effectué par l'appareil. [0033] Le cryptagc éventuel du nombre de mélange permet d'éviter que ce nombre ne soit intercepté et altéré par un tiers malveillant. [0034] Dc préférence, le cryptage éventuel du nombre de mélange s'effectue à l'aide d'une clé à usage unique d'une taille au moins égale à celle du nombre. La clé étant à usage unique, une nouvelle clé est utilisée à chaque envoi d'un nombre de mélange. [0035] Le cryptagc peut aussi être effectué à l'aide d'une clé symétrique. La clé de cryptagc symétrique est gardée secrète entre l'émetteur et l'appareil, et est de préférence renouvelée après un certain nombre de transmissions. [0036] Alternativement, le cryptage éventuel du nombre de mélange est asymétrique, s'effectuant, soit à l'aide d'une clé publique de l'émetteur connue de l'appareil, de sorte à permettre le décryptage par l'émetteur en utilisant sa clé privée associée, soit à l'aide d'une clé privée de l'appareil dont l'émetteur connaît la clé publique. [0037] Ainsi, un tiers est empêché de connaître ou d'altérer le nombre de mélange. [0038] Dc préférence, le décryptage à l'étape vii est effectué par l'appareil. [0039] De préférence, le décryptage à l'étape vii s'effectue à l'aide d'une clé symétrique, si le cryptage à l'étape iv est fait par une clé à usage unique. [0040] Alternativement, le décryptage à l'étape vii s'effectue à l'aide d'une clé à usage unique, si le cryptage à l'étape iv est fait par une clé symétrique. [0041] Le décryptage à l'étape vii peut aussi être effectué par d'autres méthodes, par exemple à l'aide d'une clé publique connue de l'appareil, associée à une clé privée de l'émetteur ayant servi au cryptage du haché reçu à l'étape vi. Ainsi, l'appareil est capable de certifier l'identité de l'émetteur. [0042] Le nombre de mélange peut avoir la même taille que la clé symétrique qui sert à le crypter, si une telle clé symétrique est utilisée, et aussi la même taille que le haché. [0043] De préférence, les clés de cryptage privées, symétriques et à usage unique ainsi que les nombres de mélange sont indevinables et inobservables par des dispositifs tiers, pour éviter que l'écoute des données émises par l'émetteur ou l'appareil ne rende possible la génération et la transmission de deuxièmes ensembles de données, frauduleux, qui engendreraient à tort une reconnaissance d'intégrité de messages reçus par l'appareil mais transmis par un émetteur autre que celui censé porter légitimement lesdites clés. [0044] Si la clé de cryptage X du nombre de mélange x est connue, alors le haché du 6 message mélangé peut être connu, car il suffit de décrypter le crypté de x et de calculer le mélangé du message avant de le hacher. La clé Y cryptant le haché peut être alors aussi devinée ou être connue pour appartenir à un univers restreint, le haché du message mélangé et son cryptagc par Y étant tous deux connus ou observables. La clé de cryptagc Y est donc une fonction F de la clé de cryptage X, ou bien la clé de cryptagc Y appartient à un univers dépendant de la clé de cryptage X. L'observation de plusieurs transmissions fait apparaître plusieurs fonctions F, et les valeurs des clés X et Y sont à l'intersection de ces fonctions. Il est préférable d'éviter cette situation. Il est donc recommandé soit d'utiliser pour la clé X ou la clé Y des valeurs changeantes au fil des transmissions, soit d'utiliser des fonctions de cryptage telles que pour chaque observation d'échanges du triplet « message, nombre crypte, haché crypte», l'univers des clés Y pour chaque X possible est grand ; ceci rendant grand l'univers résultant de l'intersection de ces univers déductibles à chaque observation. Il n'est pas recommandé de prendre pour clé Y le nombre de mélange x généré aléatoirement. En effet, si on se sert du nombre de mélange x comme clé de chiffrage Y, ou bien si on calcule la clé Y en fonction du nombre de mélange x par une formule déterminée, connaissant la valeur cryptée C du nombre de mélange x par la clé X, le nombre de mélange x, et donc Y deviennent une autre fonction G de la clé X ; et les clés X et Y seraient à l'intersection de la fonction F et de cette nouvelle fonction G. De préférence, la clé X ou la clé Y est renouvelée après chaque échange. [0045] L'appareil peut en outre comporter un compteur de tentatives de vérifications négatives consécutives déclenchant un blocage de celui-ci lorsqu'un nombre déterminé est atteint, le déblocage pouvant être effectué lors du renouvellement de la clé de cryptage du nombre de mélange ou de la clé de cryptage du haché. [0046] Une deuxième variante du procédé selon l'invention est un procédé pour la véri- fication par l'appareil de l'intégrité d'un message provenant d'un émetteur, le procédé comportant : la réception par l'appareil du message, du troisième ensemble de données crypté et du nombre de mélange crypté, le décryptage du nombre de mélange et du troisième ensemble de données, et ii. la mise en oeuvre des étapes a) à c), l'intégrité du message étant assurée si le haché obtenu à l'étape b) et le troisième ensemble de données décrypté à l'étape ii sont identiques. [0047] De préférence, le procédé selon cette deuxième variante de l'invention comporte avant l'étape i : la génération par l'émetteur du nombre de mélange, le mélange du nombre de mélange au message, à l'aide de la fonction de mélange, 7 le hachage des données résultant de l'étape précédente à l'aide de la fonction de hachage, le cryptage du haché résultant de l'étape précédente et constituant le troisième ensemble de données, le cryptage du nombre de mélange, et l'envoi à l'appareil du message, du troisième ensemble de données crypte et du nombre de mélange crypte. [0048] Ces étapes sont effectuées par l'émetteur authentique et permettent de détecter l'altération du message par un tiers non autorisé. [0049] Le décryptage à l'étape ii du nombre de mélange et du troisième ensemble de données est préférentiellement effectué par l'appareil. [0050] De façon préférentielle, le cryptage du nombre de mélange s'effectue à l'aide d'une clé à usage unique, et le cryptage du troisième ensemble de données s'effectue à l'aide d'une clé symétrique, la clé symétrique étant de préférence renouvelée occasionnellement. [0051] Alternativement, le cryptage du nombre de mélange s'effectue à l'aide d'une clé sy- métrique, et le cryptage du troisième ensemble de données s'effectue à l'aide d'une clé à usage unique, la clé symétrique étant de préférence renouvelée occasionnellement. [0052] Le cryptage du nombre de mélange et le cryptage du troisième ensemble de données peuvent aussi être de même type, ou de types différents, ces types de cryptage pouvant être par clés symétriques, ou par clés asymétriques. [0053] Si une paire de clés asymétriques est utilisée pour le cryptage du nombre de mélange, celle-ci a de préférence sa clé privée détenue par l'appareil, la clé publique correspondante étant alors connue de l'émetteur. [0054] Le cryptage du troisième ensemble de données est, de préférence, effectué à l'aide d'une clé privée détenue par l'émetteur, la clé publique correspondante étant alors connue de l'appareil. [0055] Ainsi, par le décryptage du nombre de mélange et du troisième ensemble de données, l'appareil est capable de certifier l'identité de l'émetteur. [0056] Le cryptage du nombre de mélange et celui du troisième ensemble de données peuvent être effectués par le biais de la même fonction de cryptage, notamment lorsque le cryptage du nombre de mélange est asymétrique. [0057] Alternativement, le cryptage du nombre de mélange et celui du troisième ensemble de données sont effectués par le biais de deux fonctions de cryptage différentes. [0058] De préférence, les types de fonctions de cryptage à utiliser font partie de la confi- guration de l'émetteur et de l'appareil, préalablement à l'établissement de la communication entre ces deux derniers. [0059] Une troisième variante du procédé selon l'invention est un procédé dans lequel le 8 premier ensemble de données est présent sur l'appareil et le deuxième ensemble de données est présent sur un deuxième appareil, le procédé comportant : i. la mise en oeuvre des étapes a) et h), ii. le cryptage du nombre de mélange, iii. l'envoi par l'appareil au deuxième appareil du nombre de mélange crypté, iv. la réception par l'appareil d'un haché crypté du deuxième ensemble de données, v. le décryptage du haché crypte, et vi. la mise en oeuvre de l'étape c). [0060] De préférence, le procédé selon cette troisième variante de l'invention comporte entre les étapes iii et iv : la réception par le deuxième appareil du nombre de mélange crypté, le décryptage du nombre de mélange, la création d'une copie modifiée du deuxième ensemble de données à l'aide du nombre de mélange et de la fonction de mélange, le hachage de la copie modifiée du deuxième ensemble de données à l'aide de la fonction de hachage, le cryptage du haché résultant de l'étape précédente et constituant le troisième ensemble de données, et l'envoi par le deuxième appareil à l'appareil du haché crypté du deuxième ensemble de données. [0061] Le cryptage du nombre de mélange à l'étape ii et le décryptage du haché crypté l'étape v sont préférentiellement effectués par l'appareil. [0062] De préférence, le cryptage du nombre de mélange s'effectue à l'aide d'une clé de cryptage symétrique partagée avec le deuxième appareil. [0063] De préférence, le cryptage du haché s'effectue à l'aide d'une clé à usage unique et le cryptage du nombre de mélange s'effectue à l'aide d'une clé symétrique renouvelée occasionnellement. [0064] Alternativement, le cryptage du nombre de mélange s'effectue à l'aide d'une clé à usage unique et le cryptage du haché s'effectue à l'aide d'une clé symétrique renouvelée occasionnellement. [0065] Le cryptage du nombre de mélange et le cryptage du haché peuvent aussi être de même type, ou de types différents, ces types de cryptage pouvant être par clés symétriques, notamment par clés à usage unique, ou par clés asymétriques. [0066] Une quatrième variante du procédé selon l'invention est un procédé pour la véri- fication qu'un ensemble de données présent sur l'appareil n'a pas été modifié entre deux dates dl et d2, cet ensemble de données constituant à la date dl le premier ensemble de données et à la date d2 le deuxième ensemble de données, le procédé 9 comportant : la mise en oeuvre des étapes a) et b), la sauvegarde de manière sécurisée par l'appareil du nombre de mélange et du haché obtenu à l'étape b), m. la création d'une copie modifiée du deuxième ensemble de données à l'aide du nombre de mélange et de la fonction de mélange, iv. le hachage de la copie modifiée à l'aide de la fonction de hachage pour former le troisième ensemble de données, et y. la mise en oeuvre de l'étape c). [0067] Avantageusement, le procédé selon cette quatrième variante ne nécessite pas une conservation sécurisée de l'ensemble de données. [0068] L'invention a aussi pour objet un produit programme d'ordinateur comprenant des instructions lisibles par un processeur d'un appareil pour la mise en oeuvre du procédé selon l'invention, selon l'une quelconque des variantes définies ci-dessus. Brève description des dessins [0069] L'invention pourra être mieux comprise à la lecture de la description détaillée qui va suivre, d'exemples non limitatifs de mise en oeuvre de celle-ci, et à l'examen du dessin annexé, sur lequel : [0070] [fig.1] la figure 1 représente schématiquement les données et fonctions nécessaires à la mise en oeuvre de l'invention selon sa première ou sa deuxième variante, [0071] [fig.2] la figure 2 illustre schématiquement un exemple de mise en oeuvre de l'invention selon sa première variante, [0072] [fig.3] la figure 3 représente schématiquement un exemple de mise en oeuvre de invention selon sa deuxième variante, [0073] [fig.4] la figure 4 illustre schématiquement des données et fonctions utiles à la mise en oeuvre de l'invention selon sa troisième variante, [0074] [fig.5] la figure 5 représente schématiquement un exemple de mise en oeuvre de l'invention selon sa troisième variante, [0075] [fig.6] la figure 6 illustre un schéma de mise en oeuvre de l'invention selon sa quatrième variante, [0076] [fig.7] la figure 7 illustre schématiquement des données utiles à la mise en oeuvre de l'exemple de la figure 8, [0077] [fig.8] la figure 8 représente un premier exemple de mise en oeuvre de l'invention appliquée à la vérification de logiciels, [0078] [fig.9] la figure 9 représente un deuxième exemple de mise en oeuvre de l'invention appliquée à la vérification de logiciels, [0079] [fig.10] la figure 10 illustre schématiquement des dispositifs et données utiles à la mise en oeuvre de l'exemple de la figure 11, [0080] [figil] la figure 11 illustre un exemple de mise en oeuvre de l'invention appliquée à la sécu- risation des navigateurs internet, [0081] [fig.12] la figure 12 représente schématiquement des dispositifs et données utiles à la mise en oeuvre de l'exemple de la figure 13, et [0082] [fig.13] la figure 13 représente un exemple de mise en oeuvre de l'invention appliquée à la sé- curisation des courriers électroniques. Description détaillée [0083] La figure 1 représente schématiquement des données et fonctions utiles à la mise en oeuvre dc l'invention selon sa première ou sa deuxième variante, où un message 101 doit être envoyé par un dispositif A à un dispositif B via un canal dc transmission dc données 109, lequel peut être sécurisé ou non. [0084] Lc dispositif A peut être un ordinateur personnel ou un téléphone intelligent, et le dispositif B un serveur de courrier électronique, le message 101 étant par exemple un courrier électronique envoyé par l'ordinateur ou le téléphone via le réseau internet. [0085] Lc dispositif A peut aussi être un serveur envoyant un courrier électronique ou une page web, le dispositif B étant alors un ordinateur personnel ou un téléphone intelligent recevant ledit courrier électronique ou la page web. [0086] Le dispositif A peut encore être un appareil de mesure, par exemple de la consommation de courant électrique, de gaz ou d'eau, ou pour mesurer l'usure d'une pièce dans une machine, le message 101 étant alors le résultat d'une telle mesure, et le dispositif B un serveur regroupant la mesure et communiquant avec l'appareil de mesure via un réseau de télécommunications, par exemple un réseau d'internet des objets, un réseau WiFi ou un réseau LTE. 11 [0087] Les dispositifs A et B peuvent aussi être des ordinateurs personnels ou des téléphones intelligents. [0088] Le dispositif A peut être un navigateur wcb, le dispositif B un serveur web et le message 101 un formulaire rempli par l'utilisateur du navigateur A, la réception du message devant ne pas être différée par rapport à son envoi. [0089] Les dispositifs A et B peuvent être chacun équipés d'un processeur pour l'exécution des étapes du procédé selon l'invention, et d'une mémoire pour sauvegarder les données nécessaires à cette exécution. [0090] Le dispositif B dispose de données de chiffrement/déchiffrement 102B, telles qu'une clé privée. Le dispositif A dispose de données de chiffrement/déchiffrement 102A, telles que la clé publique associée à la clé privée 102B. [0091] Le dispositif A dispose également de données de chiffrement/déchiffrement 103A, telles qu'une clé privée associée à une clé publique 103B présente sur le dispositif B. [0092] Les dispositifs A et B possèdent des générateurs de nombres aléatoires 104A et 104B respectivement, une fonction de mélange commune 105 et une fonction de hachage commune 106. [0093] Les dispositifs A et B ont également des fonctions de cryptage 107A et 107B respec- tivement, ainsi que des fonctions de décryptage 108A et 108B respectivement. [0094] On a illustré à la figure 2 un exemple de mise en oeuvre du procédé selon la première variante de l'invention. [0095] A l'étape 201, un premier nombre, utilisé pour identifier le message 101, est généré par le dispositif A. Il peut être optionnellement généré à partir du générateur de nombres aléatoires 104A. [0096] A l'étape 202, le premier nombre est ajouté au message 101. Cet ajout peut être une concaténation dans un ordre quelconque défini par le protocole de communication entre les deux dispositifs. [0097] A l'étape 203, le dispositif A envoie les données résultant de l'étape 202 au dispositif B via le canal 109 de transmission des données. [0098] A l'étape 204, à la réception des données, le dispositif B génère aléatoirement un deuxième nombre à partir du générateur de nombres aléatoires 104B. [0099] A l'étape 205, le dispositif B se sert de la fonction de mélange 105 pour mélanger le deuxième nombre avec le message 101. A titre d'exemple, cette fonction de mélange est un XOR opérant entre les bits du deuxième nombre et un même nombre de bits du message 101. La fonction de mélange 105 est connue par le dispositif A. [0100] A l'étape 206, le dispositif B utilise la fonction de hachage 106 pour hacher les données obtenues à l'étape précédente. Le dispositif B utilise également la clé de chiffrement publique 103B et la fonction de cryptage 107B, pour crypter le deuxième nombre. 12 [0101] A l'étape 207, le dispositif B envoie au dispositif A via le canal 109 le premier nombre ainsi que le deuxième nombre crypté. [0102] A l'étape 208, à la réception des deux nombres, le dispositif A décrypte le deuxième nombre à l'aide de la clé de chiffrement privée 103A associée à la clé publique 103B qui devait servir au cryptagc, et de la fonction de décryptage 108A associée à la fonction de cryptagc 107B. Si le deuxième nombre n'a pas été crypté par le dispositif B, son décryptage sera inexact. [0103] Avec le premier nombre, le dispositif A peut identifier le message 101, et mélanger, à l'aide de la fonction de mélange 105, le deuxième nombre décrypté au message 101 identifié. [0104] A l'étape 209, le dispositif A utilise la fonction de hachage 106 pour hacher les données résultantes de l'étape précédente. [0105] A l'étape 210, le dispositif A utilise la clé de chiffrement privée 103A et la fonction de cryptagc 107A, pour crypter le haché obtenu à l'étape précédente. [0106] A l'étape 211, le dispositif A envoie le haché crypté au dispositif B via le canal 109. [0107] A l'étape 212, à la réception du haché crypté, le dispositif B le décrypte à l'aide de la clé de chiffrement publique 103B associée à la clé privée 103A qui devait servir au cryptagc, et de la fonction de décryptage 108B associée à la fonction de cryptagc 107A. [0108] A l'étape 213, le dispositif B compare le haché décrypté obtenu à l'étape 212 avec le haché calculé à l'étape 206. Si les deux hachés sont identiques, le dispositif B conclut que le message 101 n'a pas été altéré. [0109] De préférence, le deuxième nombre servant au mélange doit être gardé secret jusqu'à ce que les hachés aient été comparés pour effectuer la vérification, mais ce nombre de mélange peut être révélé avant, si l'on peut faire confiance aux dispositifs calculant les hachés pour que les données ne soient pas modifiées entre le moment où le nombre de mélange est révélé et la comparaison des hachés. [0110] On a illustré à la figure 3 un deuxième exemple de mise en oeuvre du procédé selon la deuxième variante de l'invention, le message 101 devant être envoyé par le dispositif A au dispositif B. [0111] Les dispositifs A et B peuvent être des ordinateurs personnels ou des téléphones in- telligents, et le message 101 peut être un courrier électronique. [0112] Les dispositifs A et B peuvent être des automobiles voisines, les données échangées étant alors des informations relatives à leurs mouvements, et la connexion s'effectuant par une liaison de données entre les deux véhicules, par exemple une liaison de type 5G, Bluetooth Low Energy, une liaison RFID ultra haute fréquence, une liaison Lora ou Sigfox. [0113] A l'étape 301, un nombre aléatoire est généré par le dispositif A, à l'aide du gé- 13 nérateur de nombres aléatoires 104A. [0114] A l'étape 302, le dispositif A mélange le message 101 au nombre aléatoire à l'aide de la fonction de mélange 105. [0115] A l'étape 303, le dispositif A procède au hachage des données mélangées résultant de l'étape précédente, à l'aide de la fonction de hachage 106. [0116] A l'étape 304, le dispositif A crypte le haché obtenu à l'étape précédente à l'aide de la fonction de cryptage 107A et de la clé de chiffrement privée 103A. [0117] A l'étape 305, le dispositif A crypte le nombre aléatoire à l'aide de la fonction de cryptage 107A et de la clé de chiffrement publique 102A. [0118] A l'étape 306, le message 101, le nombre aléatoire crypte et le haché crypte sont envoyés au dispositif B via le canal de transmission 109, selon le protocole de communication établi entre les deux dispositifs. [0119] A l'étape 307, à la réception des données, le dispositif B utilise la fonction de dé- cryptage 108B ainsi que la clé de chiffrement publique 103B pour décrypter le haché, et la clé de chiffrement privée 102B pour décrypter le nombre aléatoire. [0120] Le dispositif B est ainsi en mesure d'authentifier le dispositif A. [0121] A l'étape 308, le dispositif B mélange le message 101 au nombre aléatoire, à l'aide de la fonction de mélange 105. [0122] A l'étape 309, le dispositif B hache les données mélangées résultant de l'étape précédente, à l'aide de la fonction de hachage 106. [0123] A l'étape 310, le dispositif B compare le haché qu'il a calculé au haché décrypté, et conclut quant à l'intégrité du message 101. [0124] Dans cet exemple, le dispositif B peut faire suivre les données reçues du dispositif A à un troisième dispositif. Le dispositif B décrypte à l'aide de la clé privée 102B le nombre aléatoire qu'il a reçu du dispositif A avant de le cryptes à nouveau à l'aide de la clé publique du troisième dispositif. Le dispositif B transmet alors au troisième dispositif le nombre aléatoire crypté ainsi que le haché crypté par le dispositif A. Le troisième dispositif, disposant de la clé publique du dispositif A, pourra vérifier que ce haché provient bien du dispositif A, dans la mesure où le dispositif B n'a pas modifié le haché crypté par le dispositif A. Un même ensemble de données peut donc être vérifié comme authentique par de nombreux utilisateurs. Cette possibilité expose cependant la sécurité de la certification, un dispositif frauduleux pouvant décrypter le nombre aléatoire, et éventuellement modifier le message pour qu'il ait le même haché aléatoire que le haché initial. Cette mise en oeuvre est donc utilisée de préférence pour certifier la communication entre systèmes informatiques formés d'éléments protégés contre une telle utilisation frauduleuse. [0125] La figure 4 illustre schématiquement les données et fonctions nécessaires à la mise en oeuvre de l'invention selon sa troisième variante, pour vérifier qu'un fichier 401A 14 présent sur un dispositif A est identique à un fichier 401 B présent sur un dispositif B. [0126] Les dispositifs A et B communiquent via un canal de transmission 409 qui est par exemple un réseau WiFi. [0127] Le dispositif A possède un générateur de nombres aléatoires 404. [0128] Les dispositifs A et B disposent en commun d'une fonction de mélange 405, d'une fonction de hachage 406 et d'une clé symétrique de cryptage 410. [0129] Le dispositif B dispose d'une fonction de cryptage 407. [0130] Le dispositif A dispose d'une fonction de décryptage 408. [0131] On a illustré à la figure 5 un troisième exemple de mise en oeuvre du procédé selon la troisième variante de l'invention. [0132] A l'étape 501, un nombre aléatoire est généré sur le dispositif A à l'aide du gé- nérateur de nombres aléatoires 404. [0133] A l'étape 502, une copie modifiée du fichier 401A est créée en utilisant la fonction de mélange 405 et le nombre aléatoire. [0134] A l'étape 503, la copie modifiée du fichier 401 A est hachée à l'aide de la fonction de hachage 406. [0135] A l'étape 504, le nombre aléatoire est crypté à l'aide d'un algorithme de cryptage sy- métrique et de la clé de chiffrement symétrique 410, et est envoyé au dispositif B via le canal de transmission 409. [0136] A l'étape 505, à la réception du nombre aléatoire crypté, le dispositif B le décrypte et l'utilise dans une fonction de mélange 405 pour créer une copie modifiée du fichier 401B. [0137] En décryptant le nombre aléatoire, le dispositif B peut vérifier l'identité du dispositif A. [0138] A l'étape 506, la copie modifiée du fichier 401B est hachée avec la même fonction de hachage 406. [0139] A l'étape 507, le haché de la copie modifiée est crypté à l'aide de la fonction de cryptage 407 et de la clé de chiffrement 410. [0140] A l'étape 508, le haché crypté est envoyé au dispositif A. [0141] A l'étape 509, à la réception du haché crypté, le dispositif A le décrypte à l'aide de la fonction de décryptage 408 et de la clé 410. [0142] A l'étape 510, le dispositif A compare le haché décrypté à celui qu'il a calculé à l'étape 503, et ainsi est en mesure de vérifier si les deux fichiers 401A et 401B sont identiques. [0143] On a illustré à la figure 6 un quatrième exemple de mise en oeuvre du procédé selon la quatrième variante de l'invention, pour vérifier qu'un fichier n'a pas été modifié entre deux dates dl et d2, en conservant en toute sécurité un jeu de données réduit entre les deux dates, ce jeu comprenant un nombre conservé intact et secret et un haché conservé intact et préférentiellement secret. [0144] A l'étape 601, un nombre aléatoire est généré. [0145] A l'étape 602, à la date dl, une copie modifiée du fichier est créée en utilisant le nombre aléatoire généré et une fonction de mélange, cette fonction consistant par exemple à ajouter le nombre aléatoire à la fin du fichier. [0146] A l'étape 603, un haché de la copie modifiée est créé, par exemple en utilisant la fonction SHA2. [0147] A l'étape 604, le nombre aléatoire et le haché sont conservés de manière sécurisée et secrète, afin qu'ils ne puissent pas être modifiés et que le nombre aléatoire ne soit pas divulgué à une partie tierce. [0148] A l'étape 605, à la date d2, la personne ou le dispositif ayant accès aux informations sauvegardées à l'étape 604 souhaite comparer le fichier à la date d2 avec le fichier utilisé aux étapes 601 à 604. Pour ce faire, le nombre aléatoire sauvegardé est utilisé pour créer une deuxième copie modifiée du fichier à la date d2, en utilisant la même fonction de mélange qu'à l'étape 602. [0149] A l'étape 606, un haché de la deuxième copie modifiée est créé en utilisant la même fonction de hachage qu'à l'étape 603. [0150] A l'étape 607, le haché créé à l'étape précédente est comparé avec le haché sauvegardé pour s'assurer que le fichier n'a pas été modifié entre les dates dl et d2. [0151] On a illustré schématiquement à la figure 7 les clés nécessaires à la mise en oeuvre d'un cinquième exemple, représenté à la figure 8, du procédé selon l'invention appliquée à la vérification de logiciels. [0152] Dans la suite de la description, on appellera « hachage aléatoire » d'une donnée, l'opération de mélange de cette donnée avec un nombre de mélange aléatoire suivie de l'opération de hachage. [0153] L'exemple représenté à la figure 8 est réalisé entre deux dispositifs : un dispositif A dit distributeur de logiciels et un dispositif B dit client. [0154] Le dispositif A possède deux clés 701 et 702. [0155] 701 est une clé servant à chiffrer un haché, et est de préférence privée. [0156] 702 est une clé servant à chiffrer un nombre aléatoire, et est de préférence publique. [0157] Le dispositif B possède deux clés 703 et 704. [0158] 703 est une clé servant à déchiffrer un haché crypté à l'aide de la clé 701, et est de préférence publique. [0159] 704 est une clé servant à déchiffrer un nombre aléatoire crypté à l'aide de la clé 702, et est de préférence privée. [0160] La paire de clés (701, 703) peut être appelée paire de clés du distributeur de logiciels, ce dernier pouvant l'utiliser pour communiquer avec tous les appareils sur lesquels un des logiciels qu'il distribue est installé. 16 [0161] La paire de clés (704, 702) peut être appelée paire de clés du client, celui-ci pouvant l'utiliser pour tous les logiciels qu'il vérifie lors de leur chargement. [0162] A l'étape 801, le distributeur de logiciels A procède au hachage aléatoire d'un logiciel à transmettre au client B selon les étapes 301 à 305 décrites précédemment à la figure 3. [0163] Le distributeur de logiciels A utilise la clé 702 pour crypter le nombre aléatoire et la clé 701 pour crypter le haché aléatoire du logiciel. [0164] A l'étape 802, le distributeur de logiciels A envoie au client B un ensemble de données contenant le logiciel, le haché crypté du logiciel et le nombre aléatoire crypté, sur une ligne de transmission sécurisée ou non. [0165] A l'étape 803, à la réception de l'ensemble de données, le client B décrypte le haché avec la clé 703 et le nombre aléatoire avec la clé 704. Le client B se sert alors du nombre aléatoire pour procéder au hachage aléatoire du logiciel reçu. [0166] A l'étape 804, si le haché calculé est identique au haché reçu, le client B autorise l'exécution du logiciel reçu, ou remplace la version précédente de ce logiciel par la version qu'il vient de recevoir. [0167] A l'étape 805, pour plus de sécurité, les étapes 803 et 804 sont ré-exécutées à des in- tervalles de temps préprogrammés afin de vérifier l'authenticité du logiciel. [0168] La figure 9 décrit une autre mise en oeuvre possible du hachage aléatoire pour vérifier que le logiciel en cours de chargement est autorisé par un logiciel en cours d'exécution sur un appareil. [0169] A l'étape 901, l'appareil utilise le procédé décrit à la figure 2 pour vérifier qu'un logiciel reçu provient d'une source fiable. [0170] A l'étape 902, les étapes 601 à 604 de la figure 6 sont exécutées pour créer sur l'appareil une signature sécurisée du logiciel. [0171] A l'étape 903, avant d'utiliser le logiciel, les étapes 605 à 607 de la figure 6 sont exécutées pour vérifier que le logiciel n'a pas été modifié depuis l'étape 902. [0172] La figure 10 présente les objets nécessaires à la mise en oeuvre de l'exemple illustré à la figure 11 permettant la sécurisation des données affichées par les navigateurs internet. [0173] Un navigateur internet 1001 dispose d'une paire de clés asymétriques constituée d'une clé privée 1002p et d'une clé publique 1002u. [0174] Un serveur 1003s, fournissant au navigateur les clés publiques de sites internet sécurisés 1004s, possède une paire de clés asymétriques 1003 constituée d'une clé privée 1003p et d'une clé publique 1003u. [0175] Le site internet 1004s possède une paire de clés asymétriques 1004 constituée d'une clé privée 1004p et d'une clé publique 1004u. [0176] A l'étape 1101, un utilisateur entre dans la barre d'adresse du navigateur 1001 17 l'adresse URL du site qu'il souhaite consulter. [0177] A l'étape 1102, le navigateur 1001 utilise la paire de clés 1002 et envoie au serveur 1003s les informations suivantes : l'adresse URL du site que l'utilisateur souhaite consulter, la clé publique 1002u du navigateur, et l'adresse URL du navigateur 1001 pour que le serveur puisse lui répondre. [0178] A l'étape 1103, le serveur 1003s utilise le procédé selon l'invention décrit à la figure 2 pour envoyer de façon sécurisée au navigateur la clé publique 1004u du site 1004s. [0179] La clé publique 1002u sera utile au serveur pour le décryptage du deuxième nombre que le navigateur lui aura envoyé lors des échanges. [0180] A l'étape 1104, le navigateur 1001 envoie au site 1004s les informations suivantes : le nom de la page du site que l'utilisateur souhaite consulter, la clé publique 1002u du navigateur, et l'adresse URL du navigateur pour que le site puisse lui répondre. [0181] A l'étape 1105, le serveur 1004s utilise le procédé selon l'invention décrit à la figure 2 pour envoyer au navigateur de façon sécurisée la page demandée. [0182] La figure 12 présente les objets nécessaires à la mise en oeuvre de l'exemple illustré à la figure 13 permettant la sécurisation des courriers électroniques. [0183] Un premier dispositif électronique A, pouvant être un ordinateur ou un téléphone in- telligent, permet l'envoi, la réception, l'archivage, l'édition et l'affichage de courriers électroniques 1200 qui sont sous forme de fichiers électroniques. [0184] Ce premier dispositif A a accès à une paire de clés asymétriques 1201c constituée d'une clé publique 1201u et d'une clé privée 1201p. [0185] Un deuxième dispositif électronique B permet l'envoi, la réception, l'archivage, l'édition et l'affichage des courriers électroniques 1200. [0186] Ce deuxième dispositif B a accès à une paire de clés asymétriques 1202c constituée d'une clé publique 1202u et d'une clé privée 1202p. [0187] Un serveur 1203 regroupe les numéros d'identification et les clés publiques des dis- positifs électroniques, tels que A et B, certifiés conserver l'intégrité des messages électroniques reçus et la confidentialité des nombres aléatoires associés au procédé de hachage aléatoire selon l'invention. [0188] Le serveur 1203 a accès à une paire de clés 1203c constituée d'une clé publique 1203u et d'une clé privée 1203p. 11 est à noter que ce serveur peut avoir plusieurs paires de clés, chacune dédiée à la communication avec un dispositif électronique bien déterminé. [0189] Un serveur 1204 associe le ou les dispositifs électroniques à l'adresse 1205 des- tinataire du courrier électronique. [0190] Le serveur 1204 a accès à une paire de clés 1204c constituée d'une clé publique 18 1204u et d'une clé privée 1204p. Il est à noter que ce serveur peut avoir plusieurs paires de clés, chacune dédiée à la communication avec un dispositif électronique bien déterminé. [0191] A l'étape 1301, un utilisateur demande au premier dispositif A d'envoyer le courrier électronique 1200 à l'adresse destinataire 1205. [0192] A l'étape 1302, le premier dispositif A communique avec le serveur 1204 dont il connaît la clé publique, en utilisant le procédé selon l'invention décrit à la figure afin de connaître l'identifiant et la clé publique du dispositif B associé à l'adresse 1205. Après authentification du premier dispositif A auprès du serveur 1204, ce dernier envoie au premier dispositif A l'identifiant et la clé publique du dispositif B. Cet envoi se fait aussi suivant le procédé décrit à la figure 2, le serveur 1204 connaissant la clé publique du dispositif A et ce dernier connaissant la clé publique du serveur 1204. Ce procédé permet au dispositif A de recevoir du serveur 1204 des données non modifiées. Le serveur 1204 aura lui-même pu obtenir la clé publique du dispositif B auprès du serveur 1203 et, par la même occasion, vérifié la clé publique du dispositif A. [0193] A l'étape 1303, le premier dispositif A communique son identifiant au dispositif B. [0194] A l'étape 1304, le dispositif B, ayant reçu l'identifiant communiqué à l'étape 1303, communique avec le serveur 1203 pour connaître la clé publique du premier dispositif A. Cette information lui est envoyée selon le procédé de la figure 2 permettant au dispositif B de recevoir une information non modifiée. Le dispositif B informe le dispositif A de la réception de cette information en lui envoyant un accusé de réception. [0195] A l'étape 1305, à la réception de l'accusé de réception envoyé à l'étape 1304, le premier dispositif A utilise le procédé selon l'invention décrit à la figure 2 pour envoyer le courrier 1200 au dispositif B qui peut alors être certain que ces informations ont été envoyées par le dispositif A et ont été reçues non altérées. De plus, le dispositif A est certain de n'avoir certifié ces informations qu'auprès du dispositif B. [0196] Les procédés de cryptage à clés asymétriques et à clés symétriques pouvant être vul- nérables aux ordinateurs quantiques, ces procédés de cryptage peuvent être remplacés, dans les exemples décrits ci-dessus par des procédés de cryptage utilisant des clés à usage unique. [0197] L'invention n'est pas limitée aux exemples de réalisation décrits ci-dessus, ni aux ap- plications exemplifiées. L'invention peut être utilisée notamment pour sécuriser les transactions financières. 19 [Revendication 1]