FR 3140959 A1 20240419 FR 2210700 A 20221017 L’invention est un procédé (100) de génération de clé cryptographique, mis en œuvre par des moyens de calcul informatique, dans lequel des étapes de générations (20) de matrices conformes à un cryptosystème de McEliece sont effectuées, puis les moyens de calcul informatique mettant en outre en œuvre au moins deux des trois étapes de combinaison (40) suivantes: - combinaison d’une matrice d’encodage aléatoire avec la matrice fusionnée de permutation, de codage et de transformation, pour former une matrice encodée de permutation, de codage et de transformation, - combinaison d’une autre matrice d’encodage aléatoire avec la matrice d’annulation de permutation pour former une matrice encodée d’annulation de permutation, - combinaison d’une autre matrice d’encodage aléatoire avec la matrice d’annulation de transformation pour former une matrice encodée d’annulation de transformation. Figure pour l’abrégé : figure 3 Clés cryptographiques en boite blanche L’invention concerne la cryptographie en boite blanche. La cryptographie en boite blanche est un sujet d’étude reposant sur le postulat qu’un attaquant, qui cherche à identifier des données secrètes, chiffrées, pouvant être déchiffrées au moyen d’un algorithme de chiffrement, a un accès complet à plateforme d’exécution de l’algorithme et à l’implémentation logicielle de cet algorithme dans la plateforme : le code binaire est ainsi entièrement visible, il est modifiable, et l’attaquant peut également agir à souhait sur l’exécution logicielle à travers les divers systèmes de la plateforme tels que la mémoire, les appels aux processeurs, etc. L’exemple le plus classique est celui d’un attaquant ayant accès à un smartphone d’un tiers, dans lequel une application logicielle du smartphone chiffre ou déchiffre des données secrètes au moyen d’une clé de chiffrement et d’un algorithme cryptographique, par exemple du type « AES » (pour « Advanced Encryption Standard »). L’attaquant a les pleins pouvoirs sur le smartphone et sur l’algorithme, et peut ainsi chercher à lire le code binaire correspondant, le modifier, l’exécuter d’une manière spécifique, avec pour objectif à terme, connaissant le type d’algorithme utilisé, d’identifier la clé de chiffrement, de déchiffrer les données secrètes, et/ou de modifier ces données. Pour empêcher cet attaquant d’accéder aux données secrètes et protéger l’intégrité du chiffrement dans ce contexte de boite blanche, on connaît dans l’état de la technique une méthode consistant à encoder des opérations élémentaires de l’algorithme de chiffrement (ou de déchiffrement). En effet, une opération élémentaire, issue de la combinaison entre un type d’algorithme connu et une clé de chiffrement spécifique, est généralement implémentée sous la forme d’une table de vérité indiquant les résultats possibles de l’opération en fonction des données d’entrée. Une opération d’encodage consiste donc à appliquer une transformation aléatoire à une opération élémentaire de manière à rendre illisible cette opération. Pour encoder une opération, on peut réaliser une substitution des éléments de la table de vérité, en combinant la table initiale avec une table de substitution aléatoire, de manière à obtenir une table « obfusquée » ou « fusionnée ». Alternativement, on peut appliquer à l’opération une transformation linéaire en combinant un vecteur représentant les données de sortie, ou une matrice correspondant à l’opération, à une autre matrice, dite matrice d’encodage, aléatoire elle-aussi. Un encodage peut aussi être une combinaison d’une ou plusieurs substitutions et d’une ou plusieurs matrices d’encodages. D’autres types d’encodage sont possibles. En outre, chaque opération élémentaire succédant à une opération élémentaire encodée est elle-même combinée avec un encodage dit « inverse », ou décodage, correspondant de façon inverse à l’encodage précédent. Il s’agit par exemple de la table de substitution inverse ou de la matrice inverse correspondantes à l’encodage précédent, de manière à ce que l’algorithme prévu initialement ne soit pas modifié par les encodages successifs. Dans tous les cas, on ne stocke dans la mémoire logicielle implémentant l’algorithme que les tables de vérité résultant de ces opérations d’encodage fusionnées avec les opérations élémentaires, c’est-à-dire les tables dites « obfusquées » ou « fusionnées ». De cette manière, l’attaquant, n’ayant accès qu’aux tables obfusquées, ne peut identifier quelle est l’opération élémentaire associée à chaque table et ne peut donc pas déterminer la clé cryptographique utilisée et déchiffrer les données secrètes. Ces encodages, permettant d’encoder un algorithme de chiffrement (et/ou de déchiffrement) au sein d’une plateforme d’exécution non sécurisée, par exemple au sein d’un smartphone, sont dit « internes », puisqu’ils permettent de rendre illisible la clé de chiffrement utilisée au sein de la boite blanche formée par l’algorithme implémenté. Cependant, cette boite blanche communique généralement d’une part avec un serveur situé à distance, et d’autre part avec une application tierce située sur la même plateforme. Par exemple, il est courant qu’un serveur chiffre des données et communique les données chiffrées au smartphone, puis que la boite blanche, c’est-à-dire l’algorithme de déchiffrement exécuté par le smartphone, soit utilisé pour déchiffrer les données avant que ces données déchiffrées ne soient communiquées au sein du même smartphone à une application tierce, dite « finale », qui a vocation à utiliser les données déchiffrées. Or, les applications finales sont développées par des sociétés tierces, indépendamment des boites blanches. Ces sociétés font donc l’acquisition de boites blanches commercialisées sous la forme de bibliothèques logicielles contenant l’algorithme de chiffrement et de déchiffrement, et une API (pour « Application Programming Interface ») permettant de contrôler l’algorithme et d’utiliser les données sortant de cet algorithme dans l’application finale développée. Dans ce cadre, les encodages « internes » au sein de la boite blanche n’empêchent pas les données déchiffrées de circuler, en clair, entre la boite blanche et l’application finale. De même, même si la clé cryptographique utilisée est désormais très difficile à identifier au sein de la boite blanche grâce aux encodages internes installés dans cette boite blanche, l’attaquant peut tenter de réaliser un portage du code, c’est-à-dire exporter l’intégralité du code de la boite blanche sur un autre périphérique pour l’y exploiter sans avoir à identifier la clé. C’est pourquoi il est connu dans l’état de la technique d’implémenter, en plus de ces encodages internes, des encodages dits « externes », placés aux extrémités du canal de communication complet entre l’envoi des données et leur usage. Par exemple, tout d’abord au sein du serveur situé à distance, un premier encodage « externe » est appliqué à la dernière table de vérité de l’algorithme de chiffrement du serveur, que ce soit sous la forme d’une table de substitution, d’une matrice d’encodage ou d’une autre forme d’encodage aléatoire, de sorte que les données à communiquer au smartphone sont non seulement chiffrées comme prévu, mais également encodées avant d’être communiquées au smartphone. Puis, à l’entrée de la boite blanche, l’encodage inverse de l’encodage externe est appliqué à la première table de vérité de l’algorithme de déchiffrement, avant que les données ne soient traitées à travers l’algorithme de déchiffrement de la boite blanche et ses encodages internes. L’encodage inverse, qui est le décodage du premier encodage externe, fait donc partie de la boite blanche. Ensuite, un nouvel encodage aléatoire se fait à la sortie de la boite blanche, en appliquant ce nouvel encodage à la dernière table de vérité de la boite blanche. Là aussi, ce deuxième encodage fait dès lors partie de la boite blanche. En sortie, les données sont donc déchiffrées, mais encore encodées cette fois au moyen de ce nouvel encodage aléatoire, avant d’être communiquées à l’application tierce finale ayant vocation à les utiliser. Enfin, au sein de cette application tierce, l’encodage externe correspondant à l’inverse de l’encodage appliqué en fin de boite blanche permet de décoder au sein de l’application les données avant qu’elles ne soient utilisées par l’application. Grace à ces encodages externes placés à l’extérieur de la boite blanche, même une fois déchiffrées, les données ne circulent pas « en clair » à l’extérieur de la boite blanche, elles restent encodées, donc protégées des manipulations d’un attaquant qui souhaiterait les intercepter. En outre, l’attaque consistant à porter l’intégralité du code de la boite blanche sur un autre périphérique ne fonctionne pas, puisque dans ce cadre le code de la boite blanche comprend en son sein un encodage à son entrée et un encodage à sa sortie. Sans les encodages inverses correspondant, qui sont situés à distance (au sein du serveur et au sein de l’application finale), il n’est pas possible de retrouver les données en clair. De plus, ajoutés aux encodages internes, ces encodages externes associés à des encodages en sortie et entrée de boite blanche rendent encore plus difficile d’identifier la clé de chiffrement de la boite blanche. Il est à noter que l’ensemble de ces encodages, internes comme externes, sont aléatoires, c’est-à-dire qu’ils font appels à des transformations, substitutions ou autres manipulations inconnues de tous, de manière à ce qu’aucun attaquant ne puisse les retrouver. Cependant, ce système comprend encore au moins deux inconvénients. Tout d’abord, si la boite blanche du terminal de l’utilisateur final est encodée, tel n’est généralement pas le cas de l’algorithme cryptographique situé sur le serveur à distance. En effet, à la différence du terminal final de l’utilisateur, mobile et facilement accessible, le serveur est censé être un environnement sécurisé. Afin de ne pas alourdir ses temps de calcul, l’algorithme de chiffrement et de déchiffrement du serveur n’inclut donc généralement pas d’encodage interne, mais uniquement un encodage en sortie. Ainsi, si cet algorithme venait à fuiter, et notamment si l’encodage en sortie n’est pas suffisamment protégé, les opérations élémentaires et donc les clés de chiffrement et de déchiffrement utilisées deviendraient identifiables par un attaquant. Or, dans le cadre d’un chiffrement symétrique tel que l’AES, on utilise la même clé pour déchiffrer et déchiffrer des données. La clé de l’utilisateur, encodée dans la boite blanche sur son terminal, serait donc identifiée à cause de la fuite de l’algorithme non encodé sur le serveur à distance. En outre, les algorithmes actuels utilisés en boite blanche ne sont pas jugés suffisamment robustes à l’égard des futures attaques quantiques. L'invention a notamment pour but d’améliorer l’intégrité des clés cryptographiques des procédés de cryptographie en boite blanche. Un autre objectif est d’anticiper les futures attaques quantiques. A cet effet l’invention a pour objet un procédé de génération de clé cryptographique, mis en œuvre par des moyens de calcul informatique, dans lequel les étapes suivantes sont réalisées : - génération d’une matrice de permutation, d’une matrice de codage et d’une matrice de transformation linéaire, les trois matrices étant conformes à un cryptosystème de McEliece ; - génération d’une matrice d’annulation de permutation inverse de la matrice de permutation, d’une matrice d’annulation de codage inverse de la matrice de codage, et d’une matrice d’annulation de transformation inverse de la matrice de transformation linéaire, les trois matrices d’annulation étant conformes au cryptosystème de McEliece ; - combinaison de la matrice de permutation avec la matrice de codage et avec la matrice de transformation linéaire, pour former une matrice fusionnée de permutation, de codage et de transformation conforme au cryptosystème de McEliece, les moyens de calcul informatique mettant en outre en œuvre une étape de génération d’au moins deux matrices d’encodage aléatoires, les moyens de calcul informatique mettant en outre en œuvre au moins deux des trois étapes de combinaison suivantes: - combinaison d’une des matrices d’encodage aléatoire avec la matrice fusionnée de permutation, de codage et de transformation, pour former une matrice encodée de permutation, de codage et de transformation, - combinaison d’une des autres matrices d’encodage aléatoire avec la matrice d’annulation de permutation pour former une matrice encodée d’annulation de permutation, - combinaison d’une des autres matrices d’encodage aléatoire avec la matrice d’annulation de transformation pour former une matrice encodée d’annulation de transformation. Ainsi, la matrice encodée de permutation, de codage et de transformation masque la clé publique conforme au cryptosystème de McEliece, qui est formée initialement de la matrice fusionnée de permutation, de codage et de transformation. La matrice encodée d’annulation de permutation et la matrice encodée d’annulation de transformation masquent chacune une clé privée du cryptosystème de McEliece, respectivement la matrice d’annulation de permutation et la matrice d’annulation de transformation. En générant au moins deux de ces trois encodages, on protège l’intégrité des données à chiffrer ou déchiffrer. En effet, même si la matrice fusionnée de permutation, de codage et de transformation n’est pas encodée et est rendue accessible à un attaquant, et même si l’attaquant accède à la matrice de codage, il n’est pas possible pour cet attaquant d’en déduire la matrice d’annulation de permutation ni la matrice d’annulation de transformation car ces dernières sont toutes les deux encodées. Alternativement, si la matrice fusionnée de permutation, de codage et de transformation est bien encodée, mais que l’une des deux matrices d’annulation n’est pas encodée et est rendue accessible à un attaquant, il n’est pas possible pour ce dernier d’en déduire l’autre matrice d’annulation. Ainsi, avec au moins deux encodages sur les trois, et même si la matrice d’annulation de codage est accessible, il n’est pas possible pour un attaquant de disposer simultanément des trois matrices d’annulations, c’est-à-dire de l’ensemble des clés privées. Cela protège en particulier les clés cryptographiques en cas de fuite sur le serveur, car ce dernier n’inclut que la clé publique, c’est-à-dire la matrice fusionnée de permutation, de codage et de transformation. La protection des clés cryptographiques en boite blanche est donc améliorée. En outre, ces opérations de permutation, de codage et de transformations conformes au cryptosystème de McEliece sont connues pour être robustes vis-à-vis des futures attaques quantiques. Ce procédé de génération de clés permet donc de disposer d’un cryptosystème robuste aux futures attaques quantiques en même temps qu’il protège l’intégrité des clés cryptographiques, même en cas de fuite sur le serveur. Avantageusement, les moyens de calcul informatique mettent en œuvre les trois étapes de combinaison. Ainsi, la sécurité du chiffrement est renforcée, grâce à l’encodage des trois matrices au lieu de deux d’entre elles. En d’autres termes, la clé publique du cryptosystème de McEliece, correspondant à la matrice fusionnée de permutation, de codage et de transformation, est masquée puisque cette matrice est encodée, de même que deux des clés privées, c’est-à-dire la matrice d’annulation de permutation et la matrice d’annulation de transformation, qui sont encodées. Même si l’attaquant parvenait à décoder l’une de ces trois matrices encodées, cela ne lui permettrait pas d’obtenir l’ensemble des clés privées. Il faudrait dès lors qu’un attaquant parvienne à décoder deux des trois matrices encodées pour obtenir l’ensemble des clés privées. De préférence, pour chaque matrice d’encodage aléatoire générée, les moyens de calcul mettent en œuvre une étape de détermination d’une matrice d’encodage correspondante inverse de ladite matrice d’encodage aléatoire, de manière à ce qu’une suite de données encodée par ladite matrice aléatoire d’encodage soit décodée par la matrice d’encodage correspondante inverse et vice versa. Ainsi, l’algorithme de chiffrement n’est pas perturbé par les encodages, puisqu’on prévoit des encodages inverses. Comme les encodages, les encodages inverses permettant de masquer des opérations ou des suites de données. L’interception d’une suite de donnée encodée avant son décodage par une matrice d’encodage inverse correspondante ne permet pas à l’attaquant de cerner la suite de donnée ou l’opération encodée concernant la suite de donnée. Avantageusement, les moyens de calcul informatique mettent en outre en œuvre au moins deux des trois étapes d’intégration suivantes : - intégration, au sein d’une application pour serveur de chiffrement, de la matrice encodée de permutation, de codage et de transformation ; - intégration, au sein d’une application pour terminal de déchiffrement, de la matrice encodée d’annulation de permutation ; - intégration, au sein de l’application pour terminal, de la matrice encodée d’annulation de transformation. Ainsi, une fois générées, les clés masquées, formées par les matrices encodées, sont intégrées dans leurs positions respectives. Il s’agit du serveur pour la clé publique masquée formée par la matrice encodée de permutation, de codage et de transformation. Il s’agit de la boite blanche du terminal pour la clé privée masquée formée par la matrice encodée d’annulation de permutation et de l’application finale du terminal pour la clé privée masquée formée par la matrice encodée d’annulation de transformation. Avantageusement, les moyens mettent en outre en œuvre au moins deux des trois étapes d’intégration suivante : - intégration, au sein d’une application pour serveur de contenu, de la matrice d’encodage correspondante inverse de la matrice d’encodage ayant été combinée à la matrice fusionnée de permutation, de codage et de transformation, de manière à ce qu’une suite de données encodée par cette matrice d’encodage inverse sur un serveur de contenu soit décodée par la matrice encodée de permutation, de codage et de transformation sur un serveur de chiffrement, et vice versa ; - intégration, à l’application pour terminal, de la matrice d’encodage correspondante inverse de la matrice d’encodage ayant été combinée à la matrice d’annulation de permutation, de manière à ce qu’une suite de donnée encodée par cette matrice d’encodage inverse sur le serveur de chiffrement soit décodée par la matrice encodée d’annulation de permutation sur un terminal de déchiffrement, et vice versa ; - intégration, au sein de l’application pour terminal, de la matrice d’encodage correspondante inverse de la matrice d’encodage ayant été combinée la matrice d’annulation de transformation, de manière à ce qu’une suite de données encodée par la matrice encodée d’annulation de transformation soit décodée par la matrice d’encodage inverse, et vice versa. Ainsi, on met en place, « en face » des clés masquées intégrées, les encodages inverses correspondants permettant de décoder les données encodées par le masquage de ces clés. Dans le cas de la clé publique formée par la matrice fusionnée de permutation, de codage et de transformation, le fait qu’elle ait été encodée et que l’on place en amont une matrice d’encodage inverse permet de scinder le serveur, au moins sur le plan logiciel, entre un serveur de contenu, dans lequel la suite de données est encodée par la matrice d’encodage inverse, et un serveur de chiffrement, comprenant la matrice encodée fusionnée de permutation, de codage et de transformation. Ainsi, un attaquant interceptant le contenu ayant vocation à être chiffré tomberait sur une suite de donnée déjà encodée avant qu’elle ne commence à être chiffrée par la clé publique, ce qui renforce encore la sécurité. De plus, le serveur de contenu et le serveur de chiffrement peuvent dès lors être séparés et placés en différents endroits. On prévoit également selon l’invention un procédé de chiffrement de données, dans lequel, pour chiffrer une suite de données, des moyens de calcul informatique mettent en œuvre les étapes suivantes : - après qu'une matrice fusionnée de transformation, de codage et de permutation, conforme à un cryptosystème de McEliece, a été combinée avec une matrice d’encodage pour former une matrice encodée de codage, permutation et transformation, application de la matrice encodée de codage, permutation et transformation à la suite de données de manière à former une suite de données codée, permutée et transformée ; - ajout volontaire d’une ou plusieurs erreurs, conformément au cryptosystème de McEliece, à la suite de données codée, permutée et transformée, de manière à former une suite de donnée chiffrée. Ainsi, le procédé de chiffrement inclut un chiffrement au moyen d’une clé publique, du cryptosystème de McEliece, masquée par une matrice d’encodage, puis l’ajout d’erreurs conformément au cryptosystème de McEliece. Le procédé de chiffrement tire donc profit de McEliece et des encodages pour chiffrer une suite de données ayant vocation à être ensuite déchiffrée en boite blanche. La clé publique correspondant à une combinaison des clés privées, même si elle était démasquée, un attaquant ne pourrait pas retrouver toutes les clés privées, c’est-à-dire les matrices individuelles de codage, de permutation et de transformation, puisqu’elles sont fusionnées dans ce procédé de chiffrement. Avantageusement, au préalable, les moyens de calcul informatique appliquent à la suite de données une matrice d’encodage préliminaire inverse de la matrice d’encodage pour former une suite de données encodée, de manière à ce que, ensuite, la suite de données encodée soit décodée par la matrice encodée de codage, permutation et transformation en même temps qu’elle est codée, permutée et transformée par cette matrice encodée codage et permutation. Ainsi, il s’agit d’encoder les données, en particulier sur un serveur de contenu, avant même que la suite de donnée ne soit chiffrée conformément au cryptosystème de McEliece sur un serveur de chiffrement. La sécurité du chiffrement en est renforcée. Avantageusement, en outre, les moyens de calcul informatique mettent en outre en œuvre une étape d’application d’une deuxième matrice d’encodage à la suite de données chiffrée, de manière à former une suite de données chiffrée et encodée. Ainsi, en sortie de chiffrement, la suite de données chiffrées est, en plus, encodée. Cet encodage correspond à l’encodage inverse auquel sera soumise la suite de données dans le procédé de déchiffrement, encodage inverse permettant de masquer une clé privée. Dès lors, l’encodage appliqué lors de ce procédé de chiffrement permet de préparer le déchiffrement tout en améliorant encore l’intégrité des données. On prévoit également selon l’invention un procédé de déchiffrement de données, caractérisé en ce que, pour déchiffrer une suite de données chiffrée, une matrice d’annulation de permutation, conforme à un cryptosystème de McEliece, ayant été combinée avec une matrice d’annulation d’encodage inverse d’une matrice d’encodage, appliquée précédemment lors d’une opération de chiffrement, pour former une matrice encodée d’annulation de permutation, les moyens de calcul mettent en œuvre une étape d’application à la suite de données chiffrée de la matrice encodée d’annulation de permutation de manière à former une suite de données restructurée et à l’encodage annulé. Ainsi, l’une des clés privées du cryptosystème de McEliece, formée par la matrice d’annulation de permutation, est ici masquée grâce à l’encodage, formant la matrice encodée d’annulation de permutation. L’encodage utilisé pour masquer cette clé est l’encodage inverse de celui utilisé en sortie de chiffrement. De cette façon, les données sont reçues de façon chiffrée mais aussi encodée, pour être décodées en entrée de boite blanche tout en étant restructurées. Le masquage de la clé privée participe donc simultanément au décodage de ces données. De préférence, les moyens mettent en œuvre une étape de retrait d’erreurs, conforme au cryptosystème de McEliece, à la suite de données restructurée et à l’encodage annulé, de manière à former une suite de données restructurée, à l’encodage annulé et corrigée. Ainsi, la suite du déchiffrement correspond à une étape du cryptosystème de McEliece, celle du retrait d’erreurs. Avantageusement, les moyens mettent en œuvre les étapes suivantes : - application d’une matrice de décodage, conforme au cryptosystème de McEliece et visant à décoder des données codées précédemment lors d’une opération de chiffrement, à la suite de données restructurée, à l’encodage annulé et corrigée, de manière à former une suite de données restructurée, à l’encodage annulé, corrigée et décodée ; - une matrice d’annulation de transformation, conforme à un cryptosystème de McEliece, ayant été combinée avec une matrice d’encodage pour former une matrice encodée d’annulation de transformation, application à la suite de donnée restructurée, à l’encodage annulé, corrigée et décodée, de la matrice encodée d’annulation de transformation, pour former une suite de données déchiffrée et encodée. Ainsi, deux autres clés privées du cryptosystème de McEliece, formées ici par la matrice de décodage pour décoder les données codées et par la matrice d’annulation de transformation, sont également masquées, grâce aux encodages. Les clés privées du cryptosystème de McElice, présentes en boite blanche pour déchiffrer les données, sont donc protégées. En outre, l’encodage de la matrice d’annulation de transformation permet simultanément d’encoder les données déchiffrées. Ainsi, les données sont déchiffrées dans la boite blanche conformément au cryptosystème de McEliece et simultanément encodées en sortie de la boite blanche, ce qui améliore leur sécurité. De préférence, les moyens mettent en œuvre une étape d’application, à la suite de données déchiffrée et encodée, d’une matrice d’annulation d’encodage, inverse de la matrice d’encodage utilisée pour former la matrice encodée d’annulation de transformation, de manière à former une suite de données déchiffrée. Ainsi, dans l’application finale, les données déchiffrées et encodées sont décodées de manière à pouvoir être utilisées. On prévoit également selon l’invention un programme d'ordinateur comprenant des instructions qui, lorsque le programme est exécuté par un ordinateur, conduisent celui-ci à mettre en œuvre les étapes du procédé décrit plus haut. On prévoit également selon l’invention un support d'enregistrement lisible par ordinateur comprenant des instructions qui, lorsqu'elles sont exécutées par un ordinateur, conduisent celui-ci à mettre en œuvre les étapes du procédé décrit plus haut. On prévoit également selon l’invention un serveur de génération de clé cryptographique, comprenant des moyens de calcul informatique aptes à mettre en œuvre au un procédé décrit plus haut. On prévoit également selon l’invention un serveur de chiffrement, comprenant des moyens de calcul informatique aptes à mettre en œuvre un procédé décrit de chiffrement plus haut pour chiffrer une suite de données. On prévoit également selon l’invention un terminal de communication, comprenant des moyens de calcul informatique aptes à mettre en œuvre un procédé de déchiffrement décrit plus haut pour déchiffrer une suite de données. On prévoit également selon l’invention un cryptosystème comprenant au moins un serveur décrit plus haut et au moins un terminal décrit plus haut. Brève description des figures L'invention sera mieux comprise à la lecture de la description qui va suivre donnée uniquement à titre d'exemple et faite en se référant aux dessins annexés dans lesquels : la est un schéma des éléments formant un cryptosystème selon un mode de réalisation de l’invention ; la est un schéma des opérations réalisées au sein du cryptosystème de la ; la est un logigramme d’un procédé de génération de clefs et d’encodage de l’invention ; la est un logigramme d’un procédé de chiffrement de l’invention; la est logigramme d’un procédé de déchiffrement de l’invention. Description détaillée Définitions Ici comme tout au long de la description, on fera référence à une suite de données à chiffrer. Cette suite de données correspond en particulier à un vecteur ou à un segment de nombres binaires dont le contenu et l’ordre forment un message. Ainsi, la suite de données 3 du mode de réalisation préféré décrit plus bas correspond à des données d’ordre bancaire, structurées en une suite de données binaires dont l’ordre produit une signification pour des moyens informatiques. Il peut toutefois s’agir de n’importe quel type de données, pour autant qu’elles forment un message sous la forme d’une suite de données dont le sens est défini par sa structure, ce qui rend possible de chiffrer le message en ajoutant des redondances à des endroits spécifiques de la suite et/ou en permutant la suite de données. Bien entendu, l’invention est applicable à des données autres que bancaires. Par « codage », ou « coder », on désigne une opération visant à remplacer une ou des données de la suite de données par d’autres données en fonction de règles prédéterminées, par exemple une suite de bits par une autre suite de bits. Les règles de codage sont propres au type de codage employé, ce sont par exemple celles des codes dits de « Goppa ». Par commodité on continuera à désigner par « codage » une opération de codage ayant été combinée avec une ou plusieurs autres opérations pour former une opération fusionnée, car même si cette opération de codage ne se distingue alors plus des autres dans le code exécutable, l’opération est réalisée. Par « encodage », ou « encoder », on désigne l’application, à une opération, d’une autre opération, dite d’encodage, visant à masquer l’opération visée. Il s’agit en particulier de combiner l’opération prévue avec une matrice, dite matrice d’encodage, de manière à ce qu’il ne soit pas possible pour un attaquant de comprendre quelle était l’opération initialement prévue. En particulier, quand une matrice correspondante à une opération prévue est combinée à une matrice d’encodage, on ne stocke dans la mémoire concernée que la matrice résultante, dite « fusionnée » ou « obfusquée », de cet encodage, de sorte qu’il est impossible pour un attaquant de distinguer dans le code exécutable l’opération initiale et l’encodage, les deux formant une unique matrice. Au lieu d’une matrice d’encodage, on peut employer d’autres types d’encodage, comme des tables de substitution permettant de remplacer des tables de vérité dans la mémoire logicielle, masquant ainsi l’opération prévue par la table de vérité. Sauf précision, la suite de la description s’appliquera à tout type d’encodage répondant à la nécessité de masquer une opération ou une suite de données. Par commodité on continuera à désigner par « encodage » une opération d’encodage ayant été combinée avec une ou plusieurs autres opérations pour former une opération fusionnée, ou une opération « masquée », car même si cette opération d’encodage ne se distingue alors plus des autres dans le code exécutable, l’opération est réalisée. Bien qu’un encodage s’applique à une opération et non à des données, on peut parler de « données encodées » lorsque qu’une suite de donnée est transformée par une opération elle-même encodée. Le « décodage » ou le verbe « décoder » ont ainsi deux significations possibles en fonction de ce à quoi ils se rapportent. L’une correspond au décodage d’une suite de données qui ont été codées préalablement par une opération de codage. Il s’agit donc de décoder des données « codées », c’est-à-dire de retrouver la suite de données telle qu’elle était avant son codage, en employant les règles de codage prévues à cet effet. L’autre signification concerne le décodage de données « encodées » ou le décodage d’une opération « encodée ». Il s’agit en particulier d’employer la matrice inverse de la matrice d’encodage employée précédemment, pour retrouver la suite de donnée ou l’opération prévue initialement. Le choix du sens du terme « décodage » entre ces deux significations sera précisé ou apparaîtra de façon évidente dans la suite de la description en fonction du contexte. Par « clé », ou « clef », on désignera une clé cryptographique permettant, combinée à un type d’algorithme prédéterminé, de chiffrer ou de déchiffrer des données. Dans le cadre de la cryptographie asymétrique, une clé publique peut être accessible au public, une clé privée a vocation à rester secrète, éventuellement connue de son seul détenteur. Pour un même cryptosystème, une clé publique chiffre ce que déchiffre une clé privée, et ces clés sont distinctes l’une de l’autre. Dans le cas où plusieurs clés privées ou plusieurs clés publiques sont nécessaires, chacune de ces clés est une clé publique ou respectivement une clé privée. Toutefois, par commodité, on peut désigner l’ensemble des clés publiques ou des clés privées comme formant une unique clé privée ou clé publique. Enfin, on comprendra que si une matrice est accessible, c’est-à-dire peut être lue, sa matrice inverse est aisément calculable, si elle existe. En d’autres termes, connaître une matrice A inversible, c’est aussi connaître la matrice A -1 , matrice inverse de la matrice A. On va maintenant rappeler certains éléments d’un cryptosystème connu de l’état de la technique, le cryptosystème de McEliece. Le cryptosystème de McEliece Le cryptosystème de McEliece est un schéma de chiffrement asymétrique, inventé en 1978 par Robert McEliece et reposant notamment sur la théorie des codes, avec l’usage de «codes de Goppa». Seules les notions de ce cryptosystème utiles à la description du présent mode de réalisation sont sommairement rappelées ci-après. Lors de la génération des clefs conformément au cryptosystème de McEliece, des moyens de calcul informatique génèrent des matrices que l’on nomme par convention G, P et S. La matrice G vise à coder une suite de données à chiffrer, au moyen de codes de Goppa. La matrice P vise à permuter les données d’une suite de données, c’est-à-dire à modifier l’ordre des données dans la suite de données, par exemple l’ordre de bits dans une suite de bits. La structure de la suite de données à chiffrer est donc modifiée par P. La matrice S est une matrice aléatoire dont les spécifications sont propres au système de McEliece et qui correspond à une application linéaire n’utilisant ni code de Goppa, ni permutation spécifique. Les moyens de calculs génèrent également les matrices inverses de ces matrices S, G et P, c’est-à-dire les matrices S -1 , G -1 et P -1 . On peut considérer que les matrices, S, G, et P, ainsi éventuellement que leurs matrices inverses, forment trois ou six clefs clés (suivant que l’on considère une matrice et son inverse comme une ou deux clés) privées du cryptosystème de McEliece. On peut alternativement considérer que ces matrices forment une seule clé privée incluant toutes ces matrices indépendamment l’une de l’autre. On nomme alors cette clé privée (S, G, P) par convention. Les deux considérations sont équivalentes et valables. Les moyens de calcul génèrent également la matrice SGP en multipliant les trois matrices S, G et P entre elles. On peut considérer la matrice SGP comme une multiplication ou une combinaison des matrices S, G et P, formant une matrice SGP fusionnée rendant non distinguables les matrices S, G et P indépendamment l’une de l’autre. Cette matrice SGP forme la clé publique du cryptosystème de McEliece. Cette clé n’a pas nécessairement vocation a être dévoilée, mais elle peut être rendue plus facilement accessible à un serveur tiers souhaitant encrypter des données, alors que les clés privées S, G et P doivent rester secrètes. Pour résumer, après génération des clefs, on obtient une clé privée (S, G, P) (ou de manière équivalente des clés privées S, S -1 , G, G -1 , P, P -1 ) et une clé publique SGP. Ces clefs sont ensuite combinées à des algorithmes de chiffrement et de déchiffrement décrits ci-après. On va maintenant rappeler les étapes de chiffrement selon le cryptosystème de McEliece. Pour chiffrer la suite de données, on utilise la clé publique. En d’autres termes, les moyens de calcul informatique appliquent à la suite de données la matrice SGP, sous la forme d’une multiplication. Les règles de la multiplication étant adaptées au type de données de la suite de données, il peut s’agir d’une opération dans le corps de Galois binaire pour des données binaires, ou dans le corps des réels ou d’autres types d’application, le cryptosystème de McEliece n’étant pas dépendant d’un type de multiplication. Multiplier cette suite de données par la matrice SGP revient à, simultanément, coder la suite par les opérations de la matrice G masquées dans la matrice SGP et permuter les données de la suite par les opérations de la matrice P masquées dans cette matrice fusionnée SGP, tout en appliquant les opérations de transformation linéaires de la matrice S masquées elles aussi dans cette matrice SGP. Enfin, les moyens de calcul ajoutent volontairement une ou plusieurs erreurs à la suite de données codée et permutée. Cette suite de donnée codée, permutée, et erronée, est ainsi la suite de donnée chiffrée conformément au cryptosystème de McEliece. Ce chiffrement a lieu généralement sur un serveur destiné à chiffrer des données avant de les communiquer à un périphérique situé à distance, par exemple à un terminal de communication de type smartphone. Les moyens de calcul informatique mentionnés sont donc ceux de ce serveur. On va maintenant rappeler les étapes de déchiffrement selon le cryptosystème de McEliece, qui sont effectuées sur le périphérique recevant les données chiffrées. Pour déchiffrer la suite de données chiffrée reçue par le périphérique, les propres moyens de calcul informatique de ce dernier utilisent la clé privée (S, G, P). Concrètement, la suite de données chiffrée est multipliée par la matrice (ou clé privée) P -1 , ce qui permet de permuter les données de la suite de façon inverse à la permutation engendrée par la clé SGP. La permutation d’origine étant inversée, les moyens de calcul retrouvent la structure originelle de la suite de donnée. Puisque cette structure d’origine est retrouvée, les moyens peuvent corriger cette suite de données, c’est-à-dire identifier et retirer les erreurs ajoutées volontairement lors du chiffrement. Cette correction est effectuée conformément à tout algorithme connu de correction rapide d’erreurs. La suite de donnée arrivée chiffrée a donc désormais retrouvé sa structure initiale et a été « corrigée ». Ensuite, on applique tour à tour la matrice matrice G -1 , puis la matrice S -1 , la matrice G -1 permettant de décoder la suite de donnée codée au moyen du codage de la matrice G lors du chiffrement, la matrice S -1 permettant d’annuler la transformation linéaire de la matrice S lors du chiffrement. La suite de données, qui était arrivée chiffrée sur le périphérique, est donc permutée de façon inverse, corrigée, et maintenant décodée. Elle est donc déchiffrée et correspond à la suite de donnée telle qu’elle était, « en clair », avant le chiffrement. Il est à noter que, ici, le terme « décodé » renvoie à l’inverse d’une opération de « codage ». Bien sûr, les opérations de chiffrement peuvent être effectuées côté terminal et celles de déchiffrement côté serveur si la clé publique SGP est située côté terminal et la clé privée(S, G, P) côté serveur. On rappelle que l’un des intérêts du chiffrement asymétrique, tel que permis par le cryptosystème de McEliece, est que la clé publique, ici la matrice SGP, peut être accessible et connue de tous sans remettre en cause la sécurité du chiffrement. Ainsi, un tiers souhaitant envoyer un message chiffré prend connaissance de la clé publique SGP correspondant à l’interlocuteur désiré, et chiffre sa suite de données au moyen de cette clé publique. Seul l’interlocuteur disposant de la clé privé (S, G, P), c’est-à-dire de chacune de ces trois matrices indépendamment l’une de l’autre, peut, au moyen des matrices inverses de ces matrices S, G et P, déchiffrer le message. Dans le cas d’un usage de la clé publique côté serveur, une fuite de l’algorithme de ce serveur n’est pas préjudiciable, puisque ce serveur ne dispose pas des matrices S, G et P mais uniquement de la matrice SGP qui ne permet pas de retrouver les matrices S, G et P. Enfin, l’un des intérêts désormais associés au cryptosystème de McEliece est sa robustesse vis-à-vis des futures attaques dites « quantiques », comme l’a montré l’algorithme candidat « Classic Mc Eliece », basé sur ce cryptosystème, lors de la compétition « Post-Quantum Cryptography » organisée par le « National Institute of Standards and Technology » (NIST) à partir de 2016 en vue d’établir des algorithmes à clé publiques « quantum-resistant ». Cryptosystème selon un mode préféré de l’invention On va maintenant décrire les composants du cryptosystème selon un mode préféré de réalisation de l’invention. Les éléments formant ce système sont illustrés à la , les opérations réalisées au sein de ce système à la . Le cryptosystème 21 des figures 1 et 2 inclut un serveur 1 et un terminal de communication 2 qui prend ici la forme d’un smartphone. Le serveur 1 est dans cet exemple un serveur bancaire apte à chiffrer et communiquer des données bancaires telles que la suite de données 3 de la , mais il pourrait s’agir d’un autre type de serveur. Le serveur 1 inclut des moyens de calcul informatique conventionnels 23 tels que des processeurs et des mémoires. Ces moyens de calcul informatique 23 permettent d’automatiser des opérations de calcul, en particulier de chiffrement. Ainsi, ces moyens 23 sont configurés pour exécuter automatiquement les étapes d’un programme d’ordinateur 24 enregistré dans le serveur 1 sous la forme d’un code exécutable. Ce programme 24 permet le chiffrement des données 3. Le serveur 1 est lui-même divisé, sur le plan logiciel, entre un serveur de contenu 11 et un serveur de chiffrement 12, qui font appels aux mêmes moyens de calcul informatique 23. Ainsi, une partie du code 24 est exécutable sur le serveur 11, une autre sur le serveur 12, ce qui permet d’encoder des données sur le serveur 11, puis de chiffrer ces données sur le serveur 12. Le serveur 1 inclut également des moyens de communication conventionnels, tels qu’une connexion Internet et des programmes de communication, permettant de communiquer vers l’extérieur une suite de données chiffrées, en particulier vers le terminal 2. Dans une variante non illustrée, le dispositif 11 et le dispositif 12 sont deux ordinateurs physiquement séparés qui communiquent par des moyens conventionnels et font appels à leurs moyens de calcul informatique respectifs. Comme on le verra plus bas, et comme illustré à la , le code 24 permet le chiffrement d’une suite de données 3 sur le serveur 1, par les moyens de calcul 23. Ces étapes de chiffrement, exécutées par les moyens de calcul 23 conformément aux instructions du code 24, concernent, sur le serveur de contenu 11, une opération d’encodage 4 des données 3. Sur le serveur 12, le code exécutable 24 requiert une pluralité d’opérations simultanées sur la suite 3 : il s’agit d’un encodage 5 de manière inverse à l’encodage 4 et, simultanément, la réalisation de permutations, de codage et de transformation au moyen d’une clé 6. Les moyens 23 sont ensuite invités par le code 24 à réaliser une opération 7 d’ajout d’erreur et une opération d’encodage 8 sur la suite 3, avant l’envoi des données 3 chiffrées au smartphone 2. L’ensemble de ces opérations, exécutées par les moyens de calcul 23 conformément aux instructions du code 24, seront décrites plus en détail plus bas. Le terminal de communication 2 inclut des moyens conventionnels de calcul informatique 26 tels que des processeurs et des mémoires. Ces moyens 26 permettent d’automatiser des opérations de calcul, en particulier de déchiffrement. Ainsi, ces moyens 26 sont configurés pour exécuter automatiquement les étapes d’un programme d’ordinateur 25 enregistré dans le smartphone sous la forme d’un code exécutable. Sur le plan logiciel, le code exécutable 25 est divisé en deux parties, entre un code correspondant à un algorithme de déchiffrement 22 et un code correspondant à une application finale 19. Le smartphone 2 inclut également des moyens de communication conventionnels, tels qu’une connexion Internet et des programmes de communication, permettant de communiquer vers l’extérieur, par exemple pour réceptionner une suite de données 3 chiffrées par le serveur 1. Comme on le verra plus bas, et comme illustré à la , l’algorithme 22, mis en œuvre par les moyens 26 conformément aux étapes du code 25, est la boite blanche comprenant des clés cryptographiques dont l’intégrité est à protéger. Ainsi, lorsqu’il est exécuté par les moyens 26, cet algorithme 22 réalise, sur la suite de données 3 reçue sous forme chiffrée et encodée, des opérations simultanées d’encodage 9 et de permutation au moyen une clé privée 13. L’encodage 9 correspond à l’inverse de l’encodage 8, c’est-à-dire à son décodage. Les permutations de la clé 13 correspondent à l’inverse des permutations de la clé 6. Il est à noter que l’encodage 8, côté serveur 1, est donc un encodage externe de la boite blanche 22, tandis que l’encodage 9 est l’encodage inverse correspondant situé dans la boite blanche. La boite blanche 22, lorsqu’elle est exécutée par les moyens de calcul 26, inclut également une opération 14 de correction d’erreur permettant de corriger les erreurs ajoutées volontairement aux données 3 par l’opération 7 d’ajout d’erreur. L’algorithme 22 comprend également une opération de décodage au moyen d’une clé privée 15, le décodage par cette clé 15 concernant ici l’inverse du codage par la clé 6. Cet algorithme 22 inclut également une dernière opération de déchiffrement au moyen de la clé privée 16, inverse à la transformation réalisée par la clé 6, et réalisée simultanément à un encodage 17. Là encore, nous reviendrons plus bas sur ces opérations, réalisées sur le smartphone 2 par les moyens 26. Les moyens de calcul 25 sont également invités par le code exécutable 24 à exécuter une application 19, qui est une application finale de paiement utilisée par le détenteur du smartphone 2. Ainsi, lorsque les données 3 sont déchiffrées et encodées par les moyens de calcul 26 conformément à la boite blanche 22, le code de l’application 19 conduit ces moyens 26 à réaliser une opération d’encodage 18, laquelle consiste en une opération de décodage inverse de l’opération d’encodage 17, ce qui permet de décoder les données. L’encodage 18 est donc un encodage externe à la boite blanche 22, correspondant de manière inverse à l’encodage 17 de la boite blanche. Une fois ces opérations réalisées, les données 3 sont donc en clair et décodées au sein de l’application 19 et peuvent être utilisées, en particulier en vue d’un règlement bancaire, par l’utilisateur du smartphone 2. Il est à noter que l’application 19 n’est pas vendue à un utilisateur indépendamment de la boite blanche 22, ces deux parties logicielles formant le code 25 exécuté. C’est le développeur, ou société de développement, de l’application finale 19, qui fait généralement l’acquisition de la boite blanche 22, vendue sous la forme de bibliothèques logicielles. Le code source de l’application 19 comprend dès lors des appels via une API (pour « Application Interface Programming ») à l’algorithme 22 pour contrôler l’exécution de cet algorithme. Lorsque l’utilisateur télécharge et installe son application, celle-ci comprend donc l’application finale 19 et la boite blanche 22 qui y est rattachée, sous la forme d’un unique code 25. On va maintenant revenir sur certaines opérations de ce cryptosystème 21 illustrées à la , en faisant régulièrement référence aux opérations du cryptosystème de McEliece décrit plus haut. Tout d’abord, à l’encodage 4 correspond une matrice d’encodage que l’on nommera J. Ainsi, la suite de données 3 est encodée au moyen de la matrice d’encodage J dans le serveur de chiffrement 11. A l’encodage 5, en début de serveur de chiffrement 12, correspond la matrice J -1 , la matrice inverse de la matrice J. La clé publique 6 est la matrice SGP telle que définie dans le cryptosystème de McEliece. Cependant, dans ce cryptosystème 21, cette matrice SGP est combinée à la matrice J -1 pour former une matrice fusionnée J -1 SGP. En d’autres termes, les données 3 encodées en sortie du serveur de contenu 11 par la matrice J se voient appliquer la matrice J -1 SGP, qui va donc non seulement coder et permuter ces données conformément au cryptosystème de McEliece, mais également décoder les données conformément à la matrice J -1 , de façon simultanée. Il est à noter que, de ce fait, la clé publique 6 est masquée au sein du serveur 11 par l’encodage J -1 . En effet, l’encodage de la matrice SGP par la matrice J -1 rend toute distinction entre ces matrices impossibles pour un attaquant disposant du code exécutable implémenté dans le serveur 12. En outre, l’encodage J masque les données entre le serveur de contenu 11 et celui de chiffrement 12, tandis que l’encodage J -1 n’est pas accessible pour un attaquant car il est masqué au sein de la matrice J -1 SGP. À l’encodage 8, correspond une matrice d’encodage que l’on nommera F. À l’encodage 9, en entrée de boite blanche 22 côté terminal 2, correspond la matrice F -1 , la matrice inverse de la matrice F. À la clé privée 13, correspond la matrice P -1 telle que définie dans le cryptosystème de McEliece, permettant de permuter les données de façon inverse vis-à-vis des permutations de P et donc de SGP. Cependant, dans ce cryptosystème 21, cette matrice P -1 est combinée à la matrice F -1 pour former une matrice fusionnée F -1 P -1 . Ainsi, la matrice P -1 , et donc la matrice P et de manière générale la clé privée 13, est masquée par l’encodage 9 grâce à la matrice F -1 . À la clé privée 15, correspond la matrice G -1 telle que définie dans le cryptosystème de McEliece. À l’encodage 17, correspond une matrice d’encodage que l’on nommera H. À la clé privée 16, correspond la matrice S -1 telle que définie dans le cryptosystème de McEliece. Cependant, dans le cryptosytème 21, cette matrice S -1 est combinée à la matrice H pour former une matrice fusionnée S -1 H. Ainsi, la matrice S - 1 , et donc la matrice S et la clé privée 16, est masquée par l’encodage H. Enfin, dans l’application finale 19, à l’encodage 18, correspond la matrice H -1 . On peut en déduire qu’un attaquant disposant du code exécutable ne peut identifier que les opérations de la matrice G -1 , puisque c’est la seule matrice à ne pas être masquée. En d’autres termes, la clé privée 15 est identifiable. En revanche, les opérations des matrices P -1 et S -1 , c’est-à-dire les clés 13 et 16, sont masquées par des encodages respectifs 9 et 17. En d’autres termes, parmi les trois clés privées, ce mode de réalisation en masque deux, tandis que côté serveur, un encodage 5 masque la clé publique 6. On pourra dans la suite indifféremment parler d’une clé ou de sa matrice correspondante. De même, on parlera indifféremment d’un encodage, d’un décodage, et de leur matrice correspondante. On va maintenant décrire des procédés mettant en œuvre les éléments présentés ci-avant. Génération des clés et combinaison avec des encodages Le procédé 100, illustré à la , vise à installer le cryptosystème 21 sur le serveur 1 et le terminal 2. Il est mis en œuvre par les moyens de calcul informatique du smartphone 2, du serveur 1, voire par des moyens indépendants, situés sur un serveur distinct. Le lieu et les méthodes d’initialisation ne sont pas propres au procédé décrit. On se réfèrera donc de manière générale, pour désigner tout moyen de calcul informatique mettant en œuvre ce procédé, à des « moyens » qui réalisent ces opérations automatiquement, où qu’ils soient situés. À l’étape 10, un utilisateur installe l’application de paiement 19 sur son smartphone 2. Pour que les données 3 de la suite de données puissent être protégées, les étapes suivantes sont dès lors mises en œuvre automatiquement. À l’étape 20, les moyens génèrent les matrices S, G et P. Elles sont déterminées conformément aux spécification du cryptosystème de McEliece. Les moyens calculent également leurs inverses S -1 , G -1 et P -1 . En d’autres termes, les clés privées 13, 15 et 16 sont générées. À l’étape 30, les moyens déterminent la matrice J et son inverse J -1 , la matrice F et son inverse F -1 , puis la matrice H et son inverse H -1 . Pour ce faire, les matrices J, F et H sont déterminées de manière à pouvoir encoder et décoder de manière correspondante toute suite de données traversant le cryptosystème 21. Leurs termes sont aléatoires, la seule exigence est que ces matrices soient inversibles, pour que les moyens génèrent les matrices inverses. En d’autres termes, les encodages 4, 5, 8, 9, 17 et 18 sont générés. À l’étape 40, les moyens combinent, c’est-à-dire multiplient entre elles, certaines des matrices générées. Ainsi, les matrices J -1 , S, G et P sont combinées pour former la matrice fusionnée J -1 SGP. Les matrices F -1 et P -1 sont combinées pour former la matrice fusionnée F -1 P -1. Les matrices S -1 et H sont combinées pour former la matrice S -1 H. À l’étape 50, les matrices sont placées aux endroits spécifiques du cryptosystème 21. Ainsi, la matrice J est placée sur le serveur de contenu 11 pour former l’encodage 4, la matrice J -1 SGP est placée en entrée du serveur de chiffrement 12 pour former l’opération, simultanée, d’encodage 5 et de permutation-codage-transformation par la clé publique 6. La matrice F est placée en sortie de serveur de chiffrement 12 pour former l’encodage 8. La matrice F -1 P -1 est placée en entrée de boite blanche 22, sur le terminal 2, pour former l’opération, simultanée, de décodage 9 et de permutation inverse au moyen de la clé privée 13. La matrice G -1 est placée au cœur de la boite blanche 22, et forme la clé privée 15 utilisée pour décoder les données. La matrice S -1 H, formant la clé privée 16 et l’encodage 17, est placée en sortie de boite blanche 22 pour terminer le déchiffrement tout en encodant les données conformément à l’encodage 17. Enfin, la matrice H -1 est placée en entrée d’application finale 19 pour décoder les données. Le cryptosystème 21 est alors en place. Pour rappel, deux clés privées sur trois, les clés 13 et 16, y sont masquées et la clé publique 6 est également masquée, grâce aux encodages. Sur le plan de l’usage des ressources, ce procédé de génération de clés est plus coûteux que celui de McEliece puisque plus de matrices sont générées et combinées. Toutefois, les quatre matrices J, F H et S correspondent à des transformations linéaires, de sorte qu’il est suffisant de générer ces quatre matrices de manière aléatoire, à la seule condition qu’elles soient inversibles. Aucun autre calcul complexe n’est nécessaire. Procédé de chiffrement On va maintenant décrire un procédé 200 de chiffrement de la suite de données 3, réalisé sur le serveur 1, en référence à la et à la . Il est mis en œuvre lorsque l’usage de l’application finale 19 nécessite l’envoi de données chiffrées de la part du serveur 1, en l’espèce de données bancaire pour régler un paiement. A l’étape 60, première étape de ce procédé de chiffrement, la suite de données 3 est encodée sur le serveur 11 de contenu par l’encodage 4, c’est-à-dire concrètement au moyen de la matrice d’encodage J. La suite de données 3 est donc désormais encodée. La présence de cet encodage 4 permet de diviser le serveur 1 en deux : un serveur de contenu 11 et un serveur de chiffrement 12. Ainsi, si un attaquant essaye d’intercepter les données avant leur chiffrement sur le serveur de chiffrement 12, il n’obtient que des données encodées, qu’il ne peut décoder sans disposer de J ou de J -1 . Or, J est situé côté serveur de contenu 11, et J -1 est masqué dans la matrice J -1 SGP. A l’étape 70, la suite de données 3 encodée se voit appliquer la matrice J -1 SGP, c’est-à-dire que cette suite, formant un vecteur, est multipliée par la matrice J - 1SGP. L’opération a pour résultat une suite de données 3 décodée vis-à-vis de l’encodage 4, grâce aux opérations de J -1 masquées dans cette matrice, mais aussi et simultanément transformée par S, codée par G et aux données permutées par P. A l’étape 80, la suite de données 3 transformée, codée et aux données permutées, se voit ajouter une ou plusieurs erreurs par le module 7 d’ajout d’erreur. La suite de données est donc désormais transformée, codée, aux données permutées, puis « erronée volontairement » : elle est donc chiffrée conformément au cryptosystème de McEliece. A l’étape 90, cette suite de données 3 chiffrée est encodée par l’encodage 8 au moyen de la matrice d’encodage F. La suite de données 3 est donc chiffrée et encodée. Le serveur 1 communique alors cette suite de données chiffrées au terminal 2. Sur le plan de l’usage de ressources, ce procédé est plus côuteux que celui de McEliece puisque l’encodage 8 est ajouté en fin de serveur. Toutefois, l’ajout de l’encodage 5 n’a aucun impact puisqu’il est combiné à la clé publique 6. En outre, ce procédé ayant lieu sur serveur, ce dernier peut aisément être dimensionné pour y être adapté. Procédé de déchiffrement On va maintenant décrire un procédé de déchiffrement 300, en référence aux figures 2 et 5. Il est réalisé sur le smartphone 2, au sein de la boite blanche 22, et vise les données 3 reçues sous forme chiffrée et encodée. A l’étape 110, le décodage 9 et la clé privée 13 décodent et permutent simultanément les données de la suite de données 3, les opérations de décodage étant réalisées par les opérations de la matrice F -1 , celles de permutation étant issues de la matrice P -1 , l’ensemble de ces opérations étant réalisées simultanément via la matrice F -1 P - 1 appliquée à la suite de données 3. La suite de données 3 est donc décodée et permutée de façon à retrouver sa structure originelle. Elle reste « erronée volontairement », codée et transformée. Un attaquant prenant connaissance du code exécutable de cette opération ne pourrait pas distinguer F -1 et de P -1 . De plus, comme l’encodage F est situé uniquement sur le serveur, il n’y a pas accès sur la boite blanche 22 et il ne pourrait pas retrouver P -1 à partir de la matrice F -1 P -1 . Il ne pourrait donc pas identifier la clé privée 13 formée par la matrice P - 1 . La clé privée 13 est donc masquée par l’encodage 9. A l’étape 120, le module de correction d’erreur 14 identifie et retire les erreurs de la suite de données 3. Tout algorithme de correction peut être mis en œuvre à cet effet. Cette correction rapide est rendue possible par le fait que la structure originelle de la suite de données a été retrouvée après les opérations de permutation inverse de P -1 masquées dans F -1 P -1 . La suite de donnée reste donc désormais uniquement codée et transformée conformément aux opérations de la matrice G et de S par J -1 SGP. A l’étape 130, la clé privée 15 est utilisée sous la forme de la matrice G -1 , pour décoder la suite de données de manière à ce que les opérations de codage de G masquées au sein de la matrice J -1 SGP soient inversées. La suite de données reste donc désormais uniquement transformée par les opérations de S au sein de J -1 SGP. Enfin, à l’étape 140, cette suite de donnée est simultanément transformée par S - 1 , formant la clé privée 16, et encodée par H, formant l’encodage 17, au sein de la matrice S -1 H. Les opérations de S -1 masquées finissent donc de déchiffrer la suite de données conformément au cryptosystème de McEliece, tandis que H encode ces données. L’encodage H a deux fonctions. Il permet de masquer les opérations de S -1 , de sorte qu’un attaquant accédant à cette matrice S -1 H ne peut pas identifier S -1 . La clé privée 16 est donc masquée par l’encodage 17. En outre, cet encodage H empêche que la suite de données 3 ne circule en clair entre la boite blanche 22 et l’application finale de paiement 19. Ainsi, un attaquant essayant d’intercepter les données à la sortie de la boite blanche ne pourrait pas identifier les données, ni la clé 16. A l’étape 150, mise en place sur l’application finale 19, l’encodage inverse 18 permet de décoder les données. L’application finale 19 peut alors les utiliser pour effectuer le règlement bancaire demandé, par exemple. Sur le plan de l’usage des ressources, ce procédé de déchiffrement n’est pas plus coûteux que celui de McEliece, ce qui est très avantageux puisqu’il est mis en œuvre sur un terminal mobile. En effet, les encodages 9 et 17 sont utilisés en même temps que les clés 13 et 16. Bien entendu, les procédés de chiffrement et de déchiffrement peuvent être inversés, le déchiffrement ayant lieu sur le serveur, le chiffrement sur le terminal 2, à condition que les encodages initialement placés sur le serveur soient dès lors placés sur le terminal 2, et que ceux du terminal 2 soient placés sur le serveur. Le procédé reste alors le même. Autres effets techniques L’invention tire donc profit de la combinaison entre les opérations définies dans le cryptosystème de McEliece et des encodages de ces opérations pour protéger l’intégrité du chiffrement de la boite blanche 22. En particulier, les clés privées de l’utilisateur, stockées sur la boite blanche 22, sont protégées même en cas de fuite de l’algorithme situé sur le serveur 11. En effet, même si la matrice J -1 SGP est identifiée par un attaquant, il ne peut pas en déduire les matrices S, G et P et donc leurs matrices inverses permettant de déchiffrer les données sur le smartphone 2. Cela est toujours le cas même si J -1 est identifié. En outre, sur la boite blanche 22, les clés privées 13 et 16, formées par les matrices P -1 et S -1 sont masquées respectivement par les matrices F -1 et H des encodages 9 et 13. Un attaquant disposant du code exécutable de la boite blanche 22 ne peut donc pas identifier les clés 13 et 16. Le cryptosystème 21 protège donc spécifiquement l’intégrité du chiffrement en boite blanche. En outre, il convient également de rappeler que les encodages externes 8 (matrice F) et 18 (matrice H -1 ), situés respectivement sur le serveur 11 et l’application finale 19, rendent tout portage de code de la boite blanche 22 inefficace, puisqu’il est nécessaire de disposer de ces encodages pour identifier l’encodage 9 (matrice F -1 ) masquant la clé 13 (matrice P -1 ) et l’encodage 17 (matrice H) masquant la clé 16 (matrice S). Enfin, comme évoqué plus haut, les encodages 4 et 5, associés à la matrice J, permettent de diviser le serveur 1 en deux serveurs séparés : un serveur de contenu 11 et un serveur de chiffrement 12, pour encoder ainsi les données avant qu’elles ne soient chiffrées. Cela permet également de masquer les opérations de SGP, grâce à la matrice J -1 SGP. De la sorte, si l’algorithme du serveur de chiffrement 12 fuite, l’encodage 5 continue de masquer la clé 6, tandis que si le serveur de contenu 11 est attaqué, les données et l’encodage 4 restent non identifiables. Par ailleurs, les opérations des matrices G et P conformes au cryptosystème de McEliece, au sein de la matrice SGP et donc ici de la matrice J -1 SGP, offrent une robustesse vis-à-vis des futures attaques quantiques qui est conservée ici, les encodages ne modifient pas ces opérations mais visent à les masquer. Le cryptosystème 21 permet donc de protéger l’intégrité du chiffrement en boite blanche tout en rendant robuste cette boite blanche vis-à-vis des futures attaques quantiques. Enfin, de manière générale, le cryptosystème 21 associe au cryptosystème de McEliece trois paires d’encodage : les encodages 4 et 5, les encodages 8 et 9, et les encodages 17 et 18. La place de ces encodages dans le cryptosystème 21 le rend robuste même en cas de fuite de l’une de ces paires, pour tout attaquant disposant de l’ensemble du code exécutable. En effet, en cas de fuite de la paire d’encodages 4 et 5, c’est-à-dire si un attaquant parvient à identifier les opérations de la matrice J et donc de la matrice J -1 sur le serveur, l’attaquant peut déduire de la matrice J -1 SGP les opérations d’une matrice SGP. Ainsi, la clé publique conforme au cryptosystème de McEliece est démasquée. Toutefois, même en ayant accès à cette matrice SGP et à la matrice G compréhensible en clair dans la boite blanche 22, cet attaquant ne peut pas identifier les opérations des matrices S et P. Les clés privées 13 et 16 restent donc secrètes. Alternativement, en cas de fuite de la paire d’encodages 8 et 9, c’est-à-dire si l’attaquant parvient à identifier les opérations de la matrice F (et son inverse), il peut en déduire les opérations de la matrice P grâce à l’accès à la matrice F -1 P -1 sur la boite blanche 22. Il déduit donc la clé 13. Mais il ne peut pas en déduire les opérations de la matrice S, donc de la clé 16. Enfin, alternativement, en cas de fuite des encodages 17 ou 18, donc de la matrice H, la clé 16 est identifiée au travers de la matrice S -1 H. Mais la clé 13, c’est-à-dire la matrice P, reste non identifiable. Ainsi, dans ces trois cas, une fuite de l’une des trois paires d’encodages ne permet donc pas à l’attaquant d’accéder à l’ensemble des clés secrètes formées par les matrices S, G et P et leurs inverses. C’est pourquoi les trois variantes suivantes sont envisageables. Ainsi, dans une variante non illustrée, les encodages 4 et 5 sont inexistants. Le serveur 1 est unifié. La matrice J n’existant pas, les données à chiffrer sont directement multipliées SGP. Les avantages décrits ci-dessus restent tous valables, sauf ceux associés aux encodages 4 et 5. La clé publique 6 n’est donc ici pas masquée, mais les clés secrètes 13 et 16 restent préservées. Dans une autre variante, les encodages 8 et 9 sont inexistants. Cette fois, la clé publique 6 reste donc masquée par l’encodage 5, mais la clé 13 peut être identifiée par un attaquant disposant de la boite blanche 22. Toutefois, la clé 16 reste secrète. Enfin, dans la troisième variante, les encodages 17 et 18 sont inexistants, de sorte que c’est la clé 16 qui peut être identifiée, mais la clé publique et la clé privée 13 restent secrètes. Dans une quatrième variante non illustrée, au lieu de supprimer une paire d’encodage et donc de rendre identifiable par un attaquant l’une des clés, on ajoute une paire d’encodage pour masquer la clé secrète 15 dans la boite blanche 22. En particulier, on peut combiner à la matrice G -1 une matrice d’encodage K pour former une matrice G -1 K, puis combiner à la matrice S -1 H la matrice K -1 pour former une matrice S -1 HK -1 . Grace à cette variante, chaque clé est masquée, et un attaquant a besoin d’identifier non plus deux mais trois paires d’encodages pour identifier chacune des clés secrètes. La sécurité du chiffrement est donc d’autant plus renforcée, au prix de ressources supplémentaires lors de la génération des clefs et des encodages associés. L'invention n'est pas limitée aux modes de réalisation présentés et d'autres modes de réalisation apparaîtront clairement à l'homme du métier. Il est notamment possible de remplacer les matrices d’encodage par toute autre forme d’encodage, par exemple des tables de substitution prenant la place de tables de vérité dans le code exécutable. Procédé (100) de génération de clé cryptographique, mis en œuvre par des moyens de calcul informatique (23, 26), dans lequel les étapes suivantes sont réalisées : - génération (20) d’une matrice de permutation (P), d’une matrice de codage (G) et d’une matrice de transformation linéaire (S), les trois matrices étant conformes à un cryptosystème de McEliece ; - génération (20) d’une matrice d’annulation de permutation inverse (P -1 ) de la matrice de permutation (P), d’une matrice d’annulation de codage inverse (G -1 ) de la matrice de codage (G), et d’une matrice d’annulation de transformation inverse (S -1 ) de la matrice de transformation linéaire (S), les trois matrices d’annulation (S -1 , G -1 , P -1 ) étant conformes au cryptosystème de McEliece ; - combinaison (40) de la matrice de permutation (P) avec la matrice de codage (G) et avec la matrice de transformation linéaire (S), pour former une matrice fusionnée de permutation, de codage et de transformation (SGP) conforme au cryptosystème de McEliece, caractérisé en ce que les moyens de calcul informatique (23, 26) mettent en œuvre une étape de génération (30) d’au moins deux matrices d’encodage aléatoires (J -1 , F -1 , H), les moyens de calcul informatique (23, 26) mettant en outre en œuvre au moins deux des trois étapes de combinaison suivantes: - combinaison d’une des matrices d’encodage aléatoire (J -1 ) avec la matrice fusionnée de permutation, de codage et de transformation (SGP), pour former une matrice encodée de permutation, de codage et de transformation (J -1 SGP), - combinaison d’une des autres matrices d’encodage aléatoire (F -1 ) avec la matrice d’annulation de permutation (P -1 ) pour former une matrice encodée d’annulation de permutation (F -1 P -1 ), - combinaison d’une des autres matrices d’encodage aléatoire (H) avec la matrice d’annulation de transformation (S -1 ) pour former une matrice encodée d’annulation de transformation (S -1 H). Procédé (100) selon la revendication précédente, dans lequel les moyens de calcul informatique (23, 26) mettent en œuvre les trois étapes de combinaison (50). Procédé (100) selon la revendication précédente, dans lequel, pour chaque matrice d’encodage aléatoire générée (J -1 , F -1 , H), les moyens de calcul (23, 26) mettent en œuvre une étape de détermination (30) d’une matrice d’encodage correspondante inverse (J, F, H -1 ) de ladite matrice d’encodage aléatoire, de manière à ce qu’une suite de données encodée par ladite matrice aléatoire d’encodage (J -1 , F -1 , H) soit décodée par la matrice d’encodage correspondante inverse (J, F, H -1 ), et vice versa. Procédé (100) selon l’une quelconque des revendications précédentes, dans lequel les moyens de calcul informatique (23, 26) mettent en outre en œuvre au moins deux des trois étapes d’intégration (50) suivante : - intégration, au sein d’une application pour serveur de chiffrement (12), de la matrice encodée de permutation, de codage et de transformation (J -1 SGP) ; - intégration, au sein d’une application pour terminal de déchiffrement (2), de la matrice encodée d’annulation de permutation (F -1 P -1 ) ; - intégration, au sein de l’application pour terminal (2), de la matrice encodée d’annulation de transformation (S -1 H). Procédé (100) selon au moins les revendications 3 et 4, dans lequel les moyens (23, 26) mettent en outre en œuvre au moins deux des trois étapes d’intégration (50) suivante : - intégration, au sein d’une application pour serveur de contenu (11), de la matrice d’encodage correspondante inverse (J) de la matrice d’encodage (J -1 ) ayant été combinée à la matrice fusionnée de permutation, de codage et de transformation (SGP), de manière à ce qu’une suite de données encodée par cette matrice d’encodage inverse (J) sur un serveur de contenu (11) soit décodée par la matrice encodée de permutation, de codage et de transformation (J -1 SGP) sur un serveur de chiffrement (12), et vice versa ; - intégration, à l’application pour terminal (2), de la matrice d’encodage correspondante inverse (F) de la matrice d’encodage (F -1 ) ayant été combinée à la matrice d’annulation de permutation (P -1 ), de manière à ce qu’une suite de donnée encodée par cette matrice d’encodage inverse (F) sur le serveur de chiffrement (12) soit décodée par la matrice encodée d’annulation de permutation (F -1 P -1 ) sur un terminal de déchiffrement (2), et vice versa ; - intégration, au sein de l’application pour terminal (2), de la matrice d’encodage correspondante inverse (H -1 ) de la matrice d’encodage ayant (H) été combinée la matrice d’annulation de transformation (S -1 ), de manière à ce qu’une suite de données encodée par la matrice encodée d’annulation de transformation (S -1 H) soit décodée par la matrice d’encodage inverse (H -1 ), et vice versa. Procédé de chiffrement (200) de données, caractérisé en ce que, pour chiffrer une suite de données, des moyens de calcul informatique (23) mettent en œuvre les étapes suivantes : - après qu'une matrice fusionnée de transformation, de codage et de permutation (SGP), conforme à un cryptosystème de McEliece, a été combinée avec une matrice d’encodage (J -1 ) pour former une matrice encodée de codage, permutation et transformation (J -1 SGP), application (70) de la matrice encodée de codage, permutation et transformation (J -1 SGP) à la suite de données de manière à former une suite de données codée, permutée et transformée ; - ajout volontaire d’une ou plusieurs erreurs (80), conformément au cryptosystème de McEliece, à la suite de données codée, permutée et transformée, de manière à former une suite de donnée chiffrée. Procédé (200) selon la revendication précédente, dans lequel, au préalable, les moyens de calcul informatique (23) appliquent à la suite de données une matrice d’encodage (J) préliminaire inverse de la matrice d’encodage (J -1 ) pour former une suite de données encodée, de manière à ce que, ensuite, la suite de données encodée soit décodée par la matrice encodée de codage, permutation et transformation (J -1 SGP), en même temps qu’elle est codée, permutée et transformée par cette matrice encodée codage et permutation. Procédé (200) selon l’une quelconque des revendications 6 et 7, dans lequel, en outre, les moyens de calcul informatique (23, 26) mettent en outre en œuvre une étape d’application (90) d’une deuxième matrice d’encodage (F) à la suite de données chiffrée, de manière à former une suite de données chiffrée et encodée. Procédé de déchiffrement (300) de données, caractérisé en ce que, pour déchiffrer une suite de données chiffrée, une matrice d’annulation de permutation (P -1 ), conforme à un cryptosystème de McEliece, ayant été combinée avec une matrice d’annulation d’encodage inverse (F -1 ) d’une matrice d’encodage (F), appliquée précédemment lors d’une opération de chiffrement (90), pour former une matrice encodée d’annulation de permutation (F -1 P -1 ), les moyens de calcul (26) mettent en œuvre une étape d’application à la suite de données chiffrée de la matrice encodée d’annulation de permutation (F -1 P -1 ) de manière à former une suite de données restructurée et à l’encodage annulé. Procédé (300) selon la revendication précédente, dans lequel les moyens mettent en œuvre une étape de retrait d’erreurs (120), conforme au cryptosystème de McEliece, à la suite de données restructurée et à l’encodage annulé, de manière à former une suite de données restructurée, à l’encodage annulé et corrigée. Procédé (300) selon l’une quelconque des revendications 9 et 10, dans lequel les moyens (26) mettent en œuvre les étapes suivantes : - application (130) d’une matrice de décodage (G -1 ), conforme au cryptosystème de McEliece et visant à décoder des données codées précédemment lors d’une opération de chiffrement, à la suite de données restructurée, à l’encodage annulé et corrigée, de manière à former une suite de données restructurée, à l’encodage annulé, corrigée et décodée ; - une matrice d’annulation de transformation (S -1 ), conforme à un cryptosystème de McEliece, ayant été combinée avec une matrice d’encodage (H) pour former une matrice encodée d’annulation de transformation (S -1 H), application (140) à la suite de donnée restructurée, à l’encodage annulé, corrigée et décodée, de la matrice encodée d’annulation de transformation, pour former une suite de données déchiffrée et encodée. Procédé (300) selon la revendication précédente, dans lequel les moyens (26) mettent en œuvre une étape d’application (150), à la suite de données déchiffrée et encodée, d’une matrice d’annulation d’encodage (H -1 ), inverse de la matrice d’encodage (H) utilisée pour former la matrice encodée d’annulation de transformation (S -1 H), de manière à former une suite de données déchiffrée. Programme d'ordinateur (24, 25) comprenant des instructions qui, lorsque le programme est exécuté par un ordinateur, conduisent celui-ci à mettre en œuvre les étapes du procédé (100, 200, 300) selon l’une quelconque des revendications 1 à 12. Support (23, 26) d'enregistrement lisible par ordinateur comprenant des instructions qui, lorsqu'elles sont exécutées par un ordinateur, conduisent celui-ci à mettre en œuvre les étapes du procédé (100, 200, 300) selon l’une quelconque des revendications 1 à 12. Serveur de génération de clé cryptographique, comprenant des moyens de calcul informatique (23, 26) aptes à mettre en œuvre au un procédé (100) selon au moins l’une des revendications 1 à 5. Serveur de chiffrement (12), comprenant des moyens de calcul informatique (23) aptes à mettre en œuvre un procédé (200) selon au moins l’une des revendications 6 à 8 pour chiffrer une suite de données. Terminal de communication (2), comprenant des moyens de calcul informatique (26) aptes à mettre en œuvre un procédé (300) selon au moins l’une des revendications 9 à 12 pour déchiffrer une suite de données. Cryptosystème (21) comprenant au moins un serveur (12) selon la revendication 15 ou 16 et au moins un terminal (2) selon la revendication 17.