Brevet FR2590383A1 — publié le 19870522

Dispositif électronique de communication cryptographique, et procédé correspondant. L'invention concerne le chiffrement/déchiffrement d'informations. I1 s'agit, pour l'essentiel, d'effectuer un transcodage d'informations brutes en informations chiffrées. Le transcodage inverse, ou déchiffrement, permet de retrouver les informations brutes à partir des informations chiffrées. Un tel transcodage est défini par une loi. L'application de cette loi peut se faire par le calcul. I1 en résulte souvent un temps de chiffrement (ou déchiffrement) prohibitif, lequel ne peut être réduit que par l'emploi de circuits intégrés spécifiques. L'autre solution consiste à écrire le tableau complet des opérations élémentaires qui définissent le transcodage en question. I1 en résulte un besoin en mémoire de travail d'autant plus important que le niveau de sûreté désiré est plus haut. De plus, la nécessité de communiquer un tableau de ce type à un ou plusieurs usageras, augmente en général la probabilité d'interception. Enfin et surtout, cela est peu compatible avec le fait bien connu qu'un code doit être changé périodiquement. La Demanderesse s'est posé le problème consistant à définir un moyen de transcodage qui puisse opérer à partir d'un nombre de paramètres secrets aussi faible que possible, et définir complètement le transcodage, en des temps de calcul aussi brefs que possible, à partir de ces paramètres secrets. L'invention s'applique à un dispositif électronique numérique comportant une mémoire, une unité de traitement et une unité d'entrée/sortie ainsi que des moyens permettant le transcodage d'informations, lors de leur transfert, dans l'un ou l'autre sens, entre la mémoire et l'unité d'entrée/sortie, afin de leur faire subir un chiffrement ou un déchiffrement. Selon un premier aspect de l'invention, la mémoire et l'unité de traitement sont propres à contenir sélectivement un nombre entier P et un autre nombre entier B, ou base secrète, inférieur à P, ainsi qu'à calculer, pour tout nombre entier de départ inférieur à P, un nombre entier transformé ou résidu égal au reste de la division entière, par P, de la base B portée à une puissance égale au nombre entier de départ le transcodage comporte la modification des informations en fonction de la relation entre au moins un nombre entier de départ et le résidu associé. Ceci permet le chiffrement ou le déchiffrement d'au moins une information par la seule disposition du nombre entier P, non confidentiel, et du nombre entier secret B, lequel peut être modifié aisément à tout moment. Dans un mode de réalisation, la mémoire et l'unité de traitement sont propres à stocker, en correspondance de chaque base, une représentation numérique de relations entre un jeu de nombres entiers de départ inférieurs à P et les résidus correspondants, ledit jeu étant choisi de façon à définir avec les résidus correspondants une permutation portant sur une partie au moins des P-l premiers nombres entiers. Avantageusement P est un nombre premier, et ladite représentation numérique est un tableau dont les nombres entiers de départ, ou indices, sont les P-l premiers nombres entiers. Dans une application de l'invention, le transcodage utilise tous les éléments de ladite permutation, comme table de chiffrement ou déchiffrement. En ce cas, le transcodage peut comprendre l'application de la permutation à (P-l) informations numériques, ou à (P-l) blocs d'informations numériques, que comporte le message. Plus particulièrement encore, le transcodage peut comprendre l'application d'un chiffrement ou déchiffrement, en particulier du type OU EXCLUSIF entre (P-l) informations ou blocs d'informations numériques et la suite des (P-l) résidus. De plus, il est intéressant que le transcodage évolue de manière déterminable lorsqu'on passe d'un ensemble de lP-l) informations ou blocs d'informations à un autre. Selon un autre aspect de l'invention, en plus de la base B, la mémoire et l'unité de traitement sont agencées pour stocker un nombre entier C, formant convertisseur de base, et défini comme l'indice dont une autre base B' est le résidu, dans la permutation associée à la base B, ainsi que pour déterminer des résidus associés à cette autre base par le calcul du produit, modulo P-l, de ses propres résidus avec le convertisseur de base. Ceci permet une transmission d'informations protégée entre deux dispositifs, par la seule disposition des deux nombres entiers secrets B et B' et, dans l'un de ceux-ci, du convertisseur de base C, en plus du nombre non confidentiel P. L'invention s'applique aussi dans le cas où un programme d'application peut être reçu en mémoire à travers unité d'entrée/ sortie. Ce programme est chiffré selon la base B secrète du dispositif, et l'unité de traitement et la mémoire sont agencées pour le déchiffrer au moins en partie avant exécution. De préférence, deux bases différentes sont utilisées pour le programme utilisateur et pour le programme de maintenance, respectivement. Pour certaines applications, dont celle ci-dessus, la ou les bases, ainsi que le ou les convertisseurs de base sont stockés en mémoire de façon inaccessible au détenteur du dispositif. On préfère actuellement que P soit un nombre de la forme 2Q+1, où Q est un nombre premier, ou bien l'un des nombres de Fermat, de préférence 257 ou 65 537. Le dispositif selon l'invention contient le nombre P par le fait qu'il comprend des moyens de calcul modulo P, et, avantageusement, des moyens de calcul modulo P-1. Plus généralement, l'invention s'applique encore à une installation comprenant plusieurs dispositifs du type défini plus haut, mis en relation par des moyens de transfert d'in- formations non protégés. Chaque dispositif possède une base qui lui est propre, l'un au moins des dispositifs possédant un convertisseur de base à l'égard d'au moins un autre dispositif. Dans une première application élémentaire de ce genre, le dispositif possédant le ou les convertisseurs de base transmet une information tire de l'indice correspondant à une information brute dans sa base propre, d'où chacun des autres dispositifs tire un paramètre spécifique, dans sa base propre, tandis que le premier dispositif retrouve les paramètres spécifiques des autres à partir des convertisseurs de base, ce qui lui permet de distribuer publiquement des paramètres secrets spécifiques à chacun des autres dispositifs. Dans une seconde application élémentaire de ce genre, un dis positif dit central, possède des convertisseurs de base par rapport aux bases des autres dispositifs, et transmet sélectivement à ceux-ci, pour une information brute donnée, une information tirée du produit de l'indice associé à celle-ci dans la base du central par le convertisseur de base concerné, réduit modulo P, chacun des autres dispositifs retrouvant l'information brute à partir de la relation entre l'indice reçu et le résidu associé dans sa propre base, ce qui permet la distribution publique de paramètres secrets communs à tous les dispositifs. Dans une première application plus évoluée, certains au moins des dispositifs reçoivent une information définie par deux nombres entiers (m et n), chacun étant propre à en tirer une clef K par la relation, prise modulo P-l K = R D I(m,B) . I(n,B) , B 2 où B est la base du dispositif concerné, I et R sont les fonctions Indice et Résidu définies dans la description ; le dispositif qui émet les deux nombres entiers m et n possède des convertisseurs de base à l'égard des autres, d'où il tire les clefs K respectivement déterminées par les autres dispositifs, ce qui permet la distribution publique de paramètres secrets spécifiques à chacun des dispositifs. Dans une seconde application plus évoluée, certains au moins des dispositifs, qui comportent un convertisseur (C') d'une base de référence (Bg) dans leur base propre, reçoivent une information définie par deux nombres entiers (m et n), chacun étant en mesure de déterminer une clef secrète commune (Kg) par la relation, prise modulo P-l I(Ko,B) = I(m,B) . I(n,B) . C' où B et C' sont la base et le convertisseur du poste concerné, tandis que I est la fonction Indice, telle que définie dans la description. L'invention concerne enfin un procédé de communication cryp tographique, comprenant l'envoi d'informations choisies à au moins un dispositif tel que défini ci-dessus, ou l'échange d'informations entre deux de ces dispositifs. D'autres caractéristiques et avantages de l'invention apparaitront à l'examen de la description détaillée ci-après, et des dessins annexés, sur lesquels - la figure 1 illustre le schéma général d'un dispositif selon l'invention - la figure 2 est un tableau montrant la construction d'un jeu de décalages selon l'invention ; - les figures 3A, 3B et 3C sont trois exemples particuliers de tableaux construits selon la figure 2 - la figure 4 est un premier exemple d'installation selon l'invention ; et - la figure 5 est un second exemple d'installation selon 1' invention. Sur la figure 1, une unité de mémoire est représentée en 1, tandis que la référence 2 identifie une unité de traitement, et la référence 3 une unité d'entrée/sortie. Dans une première zone 10, l'unité de mémoire 1 comprend une base B selon l'invention, et le cas échéant un ou plusieurs convertisseurs de base que l'on note généralement C. Le dispositif contient aussi un nombre entier P, supérieur à B, par mémorisation et/ou par câblage : aptitude à des calculs modulo P, et aussi, de préférence, modulo P-l. A tout moment, l'unité de traitement 2 peut calculer à partir de la base B une table de résidus (comme décrit ci-après), qui est alors stockée dans un emplacement de mémoire 11. Un emplacement de mémoire 15 contient des données brutes. Un emplacement de mémoire 16 contient le cas échéant une loi de transcodage (chiffrement) et/ou de transcodage inverse (déchiffrement). Enfin, un emplacement de mémoire 17 est propre à recevoir des données d'entrée/sortie modifiées, à savoir notamment - soit des données qui viennent d'être transcodées locale ment à partir des données brutes, - soit des données qui ont été transcodées en un autre poste, et qui doivent subir localement un transcodage inverse pour recouvrer les données brutes, - soit des données définissant une ou plusieurs clefs de chiffrement. I1 est maintenant fait référence à la figure 2. Celle-ci se présente comme un tableau défini par un indice i qui va de O à P-l, P étant maintenant un nombre premier. En regard de chaque indice, l'unité de traitement 2 calcule le reste de la division entière, par le nombre premier P, de la base B, portée à la puissance dudit indice. Ces résidus forment une suite, que l'on note S(B). La suite S(B) peut également être définie comme la liste ordonnée des puissances successives de B, réduites modulo P. Cette suite représente l'une des (P-l)! permutations possibles sur les P-l premiers nombres entiers. La permutation en question, pour P donné et public, ne dépend que du choix de la base B, laquelle est pour sa part secrète. Les notations suivantes seront également utilisées : un résidu Ri associé à la base B est noté R(i,B). Inversement, l'indice associé à un résidu pour la base B est noté I(R,B). I1 vient R(i,B) = Bi (modulo P) I(Ri,B) = i Une base B est une racine primitive d'un nombre premier P dès lors que la suite S(B) telle que définie plus haut donne P-1 résidus distincts et inférieurs à P. On sait aussi définir des racines primitives de certains nombres entiers non premiers. I1 est à l'heure actuelle considéré comme important que B soit effectivement une racine primitive du nombre entier P. Toutefois, il est envisageable que B soit un simple entier inférieur à P, la suite S(B) étant alors limitée au nombre de résidus distincts qu'elle contient, si nécessaire, de fa çon à définir une permutation comme ci-dessus. On donnera maintenant quelques indications plus détaillées sur les nombres en question, étant observé que la connaissance de ces indications n'est pas impérative pour la mise en oeuvre de l'invention. I1 a été établi que tout nombre premier P possède un nombre de racines primitives qui est fonction de la factorisation de P-l. On a établi également que ce nombre de racines primitives est au plus égal à la moitié de P-l. Bien que l'invention puisse être mise en oeuvre avec la quasitotalité des nombres premiers P, on préfère actuellement utiliser ceux qui se rapprochent le plus de cette limite supérieure. Cette condition est vérifiée par les nombres de la forme P = 2Q+1, où Q est lui-même un nombre premier. Ces nombres existent en grande quantité. I1 est possible d'etablir que le nombre de leurs racines primitives est égal à la limite supérieure précitée, moins une unité, à savoir P-l ~1 2 On connait également les nombres de Fermat, qui atteignent la valeur maximale. Ces nombres sont de la forme P = 22R + 1 A ce jour, on sait écrire cinq de ces nombres de Fermat, qui sont respectivement P = 3, P = 5, P = 17, P = 257 et P = 65 537, les deux derniers étant préférentiels. On notera encore que tous les nombres de Fermat admettent 3 comme racine primitive, ainsi que toutes les puissances impaires de 3, réduites modulo P. On revient maintenant à la première catégorie de nombres, de la forme P = 2Q+1, en se limitant au cas où le nombre premier Q est de la forme 4K + 1. Ces nombres admettent + 2 (modulo P) comme racine primitive, et par conséquent là encore toutes les puissances impaires de cette racine primitive, (sauf celle d'indice P-l ), réduites modulo P, sont elles 2 aussi des racines primitives. Enfin, dans le cas des nombres premiers en général, il n'existe pas de moyens connu de détermination des racines primitives, valable quel que soit le nombre premier P, autre que le tâtonnement. Dans la suite de la présente description, on prendra comme nombre premier P = 23, et les bases Bg = 5, B1 = 7 et B2 = 11. Les figures 3A, 3B et 3C donnent respectivement les valeurs des résidus relatifs à ces différentes bases, pour des indices qui vont de 0 à P-1 soit 22. Ces tableaux sont construits de la manière suivante : les colonnes 0 à 9 correspondent au chiffre des unités de l'indice, et les lignes indiquent le chiffre des dizaines : c'està-dire que la première ligne (marquée 0) correspond effectivement aux indices de 0 à 9, la seconde (marquée 10) correspond aux indices de 10 à 19, et la dernière (marquée 20) correspond aux indices de 20 à 22. On observera également que ces tables comprennent l'indice 0 et l'indice P-l = 22. Ces deux indices font double emploi, étant observé que les P-l premiers nombres entiers vont soit de 0 à P-2, soit de 1 à P-l, suivant que l'on commence à compter à partir de 0 ou de 1. Sous cette réserve, on pourra vérifier que les trois tableaux des figures 3A, 3B et 3C définissent respectivement trois permutations différentes des indices portant sur les P-l premiers nombres entiers. On remarquera aussi que, à l'indice 1 et à l'indice P-1 base2 (ici 11) correspondent toujours les résidus B (la base prise en compte) et P-l = 22. Si nécessaire, on pourra ne pas utiliser les transcodages correspondants, afin de ne donner aucune indication sur la construction de la base. Sur les figures 4 et 5, on a représenté trois postes 20 à 22, ou 30 à 32 respectivement, qui sont interconnectés par un moyen de transmission non protégé, lequel peut consister soit en une liaison matérielle de transmission, soit dans le transport physique d'un support de mémoire quelconque comportant des fichiers. Ces deux figures ont en commun le fait qu'au premier poste 20 ou 30 est associée une base Bg, au second poste 21 ou 31 une base B1, et au troisième poste 22 ou 32 une base B2. Le nombre premier P est choisi pour définir une suite de résidus dont la longueur est adaptée au niveau de sécurité demandé. Pour simplifier, on admettra que le nombre premier utilisé est 23, et que les base Bg à B2 sont celles des figures 3A à 3C. Un autre aspect original de l'invention est l'utilisation de convertisseurs de base. On comprendra tout d'abord que si chacun des postes 20 à 22 ou 30 à 32 travaille suivant sa base propre, sans avoir aucune information sur celle des autres postes, la communication est impossible. L'un au moins des deux postes qui communiquent doit pouvoir retrouver la base de autre. Dans la mesure où cette base demeure en vigueur pendant longtemps, il serait bien sûr possible de l'implanter a priori au niveau de chacun des postes concernés, au même titre que sa base propre. Cette solution aurait deux inconvénients - nécessité de communiquer la nouvelle base à chaque fois qu'on en change, et ce de manière non protégée - surtout, nécessité de calculer le tableau de résidus non seulement pour la base propre de l'abonné, mais aussi pour celle de tous les postes avec lesquels il peut vou loir dialoguer. Dès lors que les listes de résidus sont longues, il en résulte un encombrement mémoire prohibitif. L'invention apporte une solution intéressante à cet autre problème, car il a été observé que - si l'on nomme convertisseur de base l'indice que présente la base locale dans la base du poste à traiter, il suffit de connaître ce convertisseur pour déterminer rapidement la liste de résidus de la base à traiter - de plus, la connaissance de ce convertisseur n'a de sens que pour celui qui; dispose de la base locale ; il peut donc être transmis publiquement sans inconvénient. Sur l'exemple chois-i Cl = I(Bo,Bl) = I(5,7) = 7 C2 = I(Bo,B2) = I(5,11) = 5 Ceci s'applique au cas de la figure 4, où le poste 20 joue un rôle de "central" et connaît les convertisseurs de base Cl et C2 relatifs aux bases B1 et B2, pour sa base propre Bo. On note maintenant Kg une information que le poste central 20 veut transmettre aux autres postes. Soit Kg = 11. L'indice de K0 dans la base Bg est 9. On a I(K1,B0) = I(Ko,Bo) . C1 (modulo P-l) Dans une application élémentaire, l'information K0 est à transmettre communément à tous les postes. Le poste central 20, transmet à l'abonné 21 la valeur 9 x 7 (mod 22) = 19 (7 est le convertisseur pour la base B1). A l'indice 19, l'abonné 21 retrouve la valeur 11. L'abonné 22 ne peut intercepter le message. I1 recevra de son coté 9 x 5 (mod 22) = 1 (5 étant le convertisseur pour la base B2), d'où il tire à son tour la valeur 11. Dans une autre application élémentaire, il est souhaité au contraire que chaque poste reçoive une information qui lui est propre. Le poste central transmet directement l'indice 10 = 9 obtenu pour K0 = 11 aux deux abonnés 21 et 22. Ceux-ci vont déduire respectivement de l'indice 9 les valeurs K1 = 15 (figure 3B) et K2 = 19 (figure 3C). Mais, connaissant les convertisseurs de base inverses des abonnés C'1 = I(B1,Bo) = 19 et C'2 = I(B2,Bo) = 9, le poste central peut déterminer les valeurs K1, K2 trouvées par les abonnés, par des relations de la forme I(Kl,Bo) = I0.C'1 (modulo P-l) Bien entendu les coîncidences apparaissant dans les nombres ci-dessus sont fortuites. Elles seraient très improbables avec P plus grand, ce qui sera le cas en pratique. L'homme de l'art comprendra que ces calculs effectués modulo P-1 sont disponibles très rapidement, à l'aide de moyens matériels et/ou logiciels très simples, et à partir de la seule connaissance de la base Bg, du tableau de résidus correspondant (figure 3A) et des convertisseurs de base C1 et C2. Le processus très simple qui vient d'être décrit est didac tique. En pratique, il est souhaitable de ne pas transmettre les indices eux-mêmes. Ainsi, il est préférable de définir dans chaque base B une fonction clé K d'après la relation K = R E I(m,B) . I(n,B) , B 7 (modulo P-l) Partant de m = 8 et n = 15, qui sont deux résidus aléatoires, c'est-à-dire tirés au sort, on vérifie que l'on obtiendra Ko = 13 en base Bg = 5, K1 = 9 en base B1 = 7, et K2 = 4 en base B2 = 11. Le poste central peut alors simplement transmettre publiquement les nombres m = 8 et n = 15. I1 en déduit bien sûr pour lui-même la clé Kg = 13 dans sa base Bg. I1 est en mesure de calculer comme précédemment décrit, à partir des convertisseurs de base C1 = 7 et C2 = 5, les équivalents K1 = 9 et K2 = 4 dans les bases respectives B1 et B2. Individuellement, chacun des abonnés 21 et 22 va, à partir des nombres m et n publiquement transmis, être en mesure de déterminer la clé K1 ou K2 qui lui est propre. Après que cette clé a été transmise, on est dans la situation suivante - le poste central connaît sa clé propre Kg, et les clés K1 et K2 de chacun des abonnés - l'abonné 21 ne connaît que la clé K1 qui lui a été attri buée - l'abonné 22 ne connaît que la clé K2 qui lui a été attri buée. La clé K de chaque abonné, qui lui est spécifique, peut être utilisée comme clé secrète d'un système de chiffrement classique. Chaque correspondant a ainsi son propre langage que seul l'organisme central peut comprendre. En tant que système de chiffrement classique, on peut utiliser par exemple celui connu sous le nom de Data Encryption Standard ou D.E.S., mis au point par IBM, et connu par différentes publications, dont - "Data Encryption Standard", Federal Information Proces sing Standard F.I.P.S., Publication 46, National Bureau of Standards, US Department of Commerce, Janvier 1977; - "The Data Encryption Standard : Retrospective and Pros pect" R. Morris, IEEE Communication Society Magazine, Novembre 1978, NO 6 p. 11-14. Une autre application intéressante est la distribution publique de paramètres secrets communs. Dans ce cas, qui peut être illustré sur la figure 5, chaque poste ou abonné connaît, et lui seulement, son paramètre convertisseur de base C' défini par C' = I(B,BO) où B est la base locale de l'abonné, par exemple la base B1 pour l'abonné 31 et la base B2 pour l'abonné 32. Pour mémoire, on a fait figurer sur la figure 5 un convertisseur C'0 relatif à l'abonné 30, étant observé que dans l'exemple choisi le convertisseur C'0 est la fonction identique, car la base de référence Bg est précisément celle de l'abonné 30 (en variante, la base de référence Bg peut n'appartenir à aucun abonné). Dans l'exemple des bases illustrées aux figures 3A à 3C, les convertisseurs des abonnés 31 et 32 sont C'l = I(Bl,Bo) = I(7,5) = 19, qui est connu du seul abonné 31 C'2 = I(B2,Bo) = I(11,5) = 9, qui est connu du seul abonné 32. En partant toujours du cas où sont distribués publiquement les deux résidus aléatoires m = 8 et n = 15, chaque abonné peut alors déterminer une clé secrète commune notée Kg en faisant l'opération suivante I(Ko,B) = I(m,B) . I(n,B) . C' (modulo P-l) ou, ce qui est équivalent Kg = R t I(m,B) . I(n,B) . C' , B 7 (modulo P-l) où B et C' sont spécifiques du poste local. A titre d'exemple, on vérifie que I (K0,B1) = I(Kl,Bl) . C'1 (modulo P-l) Dans l'exemple choisi, le premier correspondant va tout d'abord déterminer K1 à partir des deux résidus m et n transmis publiquement, de la manière précédemment décrite. I1 aboutira donc à K1 = 9. Au résidu 9 il correspond dans la base B1 (figure 3B) l'indice 4. Le produit de 4 par le convertisseur C'1 = 19 est égal à 76, soit 10 modulo 22. Enfin, à l'indice 10, il correspond bien dans la base B1 le résidu 13, qui est précisément la valeur Kg cherchée. On vérifie de la même manière que le second abonné 32 aboutit lui aussi au résultat Kg = 13. Ainsi, si chaque correspondant connaît son propre convertisseur de base C', l'organisme central peut distribuer publiquement un élément, secret vis-à-vis de l'extérieur, mais commun à tous les correspondants. Cet élément est ici fonction des variables m et n. Si ce paramètre est utilisé comme clé secrète d'un système de chiffrement connu, tel que D.E.S., tous les correspondants parlent une langue commune qui est comprise par tous, sauf par les tiers étrangers au réseau. I1 est à noter que, dans ce dernier cas, l'organisme central joue un rôle fictif, et peut être supprimé dès que les paramètres C' ont été attribués, du moins jusqu'à nouvelle attribution de valeurs différentes de ces mêmes paramètres. En bref, pour se mettre d'accord sur une clé de chiffrement, il suffit de procéder aux opérations suivantes - émission par n'importe quel abonné de deux nombres aléa toires m et n inférieurs à P - calcul chez chaque correspondant de la clé commune ayant pour indice I(K,B) = I(m,B) . I(n,B) . C' (modulo P-l); - chiffrement des messages à partir de cette clé. On décrira maintenant un autre aspect de l'invention. L'examen des figures 2 ainsi que 3A à 3B montre que chaque suite de résidus S(B) constitue une liste pseudo-aléatoire de P-l nombres distincts. Comme cette liste comporte tous les nombres entiers de 1 à P-l, il est possible de l'utiliser pour mélanger par permutation les éléments d'un message. La permutation en question sera aisément communiquée par l'indication de la base correspondante. Cette indication peut être donnée soit à partir d'un convertisseur de base (une indication en clair de la base elle-même est bien entendu exclue), soit par des moyens de codage plus complexes, tels que ceux qui viennent d'être décrits pour la transmission des clés K. Si l'on prend par exemple la suite S(7), illustrée sur la figure 3B, le premier caractère serait mis en septième position, le second caractère en troisième position, le troisième caractère en vingt-et-unième position, et ainsi de suite. Une telle permutation présente un avantage important, que l'homme de l'art comprendra : elle permet de "casser" les structures figées ou redondantes des messages, et elle réduit ainsi les attaques de décodage basées sur la connaissance de formats implicites. Une fois le message ainsi mélangé, on peut utiliser à nouveau la liste des résidus, ou éventuellement une autre, pour le chiffrer par substitution, avec un OU EXCLUSIF par exemple. La liste modifiée une première fois peut être parcourue à partir d'une origine quelconque, dont la position peut elle aussi être déterminée au moyen des opérations précédemment décrites pour la distribution de paramètres secrets. Afin d'accroître la périodicité des listes constituant les clés, on peut adjoindre des éléments secrets supplémentaires, permettant de les modifier aisément, ou bien utiliser deux listes de résidus. Dans un second cas, par exemple, la période apparente est de l'ordre de P2. L'opération inverse de déchiffrement des messages est réalisée par le procédé symétrique, et ne nécessite que la connaissance des bases de chiffrement et des éventuels paramètres secrets utilisés pour accroître la périodicité des clés. On décrira maintenant une application particulière de l'invention, qui peut se placer dans le cadre de la figure 4 ou de la figure 5. Le réseau de communication est fondé sur - le nombre public premier P, - une base de référence Bg qui est une racine primitive de P. A chaque poste du réseau, on affecte secrètement les paramètres suivants - deux bases internes B et B' (pour alléger l'écriture on n'utilisera pas d'indices pour différencier les diffé rents postes), - deux nombres entiers dits décalages D et D', qui peuvent être quelconques mais inférieurs à P. Un organe central connait tous les éléments secrets des différents postes, à savoir leurs quatre paramètres, ainsi que la base de référence Bo. On note comme précédemment S(B) et S(B') les suites de résidus calculées à partir des racines primitives B et B'. On définira maintenant des suites décalées, qui sont engendrées à partir des suites S(B) et S(B'). A chaque suite décalée est affecté respectivement, l'un des deux décalages D et D'. On note ainsi S(D,B) la suite engendrée à partir de la suite S(B), à chacun des termes de laquelle on ajoute une grandeur W, avec réduction modulo P, la grandeur W étant à son tour le résidu correspondant à l'indice i = D dans la base B' (ou en variante dans la base B). On a ainsi W = R(D,B') et S(D,B) = S(B) + W (modulo P) Dans cette addition modulo P, on pourra rencontrer la valeur finale 0. Elle est alors remplacée par la valeur W, comme l'homme de l'art le comprendra, pour obtenir effectivement une liste comprenant les P-l premiers nombres entiers. Ce qui précède n'est qu'un exemple de transcodage évolué fondé sur l'invention. Bien entendu, on utilisera à chaque fois une ou plusieurs bases internes, mais leurs combinaison peut se faire autrement que par l'usage de décalages tels que ceux qui viennent d'être décrits. Le mode de chiffrement décrit ci-dessus peut s'appliquer notamment aux fichiers magnétiques bancaires ; le chiffrement comprendra alors les opérations suivantes - calcul de S(D,B) via W = R(D,B') - permutation des P-l premiers éléments ou bits du message au moyen de la liste S(D,B) - calcul de S(D',B') via W' = R(D',B), avec effacement de la liste S(D,B) s'il est nécessaire de limiter la taille de mémoire occupée - chiffrement, notamment par OU EXCLUSIF, de la liste per mutée, au moyen de la liste S(D',') - incrémentation de D et D' - chiffrement par OU EXCLUSIF des P-1 éléments suivants du message, etc. On trouvera en Annexe 1 un exemple de réalisation d'un tel chiffrement, pour lequel le nombre entier premier P est 11, et les éléments secrets d'un poste sont B = 2, B' = 8, D = 6 et D' = 9. Le déchiffrement d'effectue par le processus inverse - calcul de S(D',B') via W', - déchiffrement par OU EXCLUSIF des P-l premiers éléments du message avec la suite S(D',B'), - calcul de S(D,B), - permutation de a suite de la liste déchiffrée au moyen de la suite S(D,B), incrémentation de D et D', - déchiffrement des P-l éléments suivants, etc. Un exemple d'un tel déchiffrement se trouve donné en Annexe 1. Bien entendu, les exemples sont très simplifiés, comme la nature du sujet l'exige. Dans une réalisation particulièrement commode, ce qui vient d'être décrit utilisera comme nombre entier P le cinquième nombre de Fermat soit 65 537, ce qui amène les avantages suivants - grande longueur des suites de résidus, qui comprennent 65 536 nombres, - facilité de manipulation et de calcul des nombres, puis que les mots sont de 16 bits, - nombre important de bases possibles, puisque ce cinquième nombre de Fermat possède 215 racines primitives, - identification très facile des racines primitives sans nécessiter de tâtonnement, dans ce cas particulier. On notera enfin que le fait d'attribuer deux racines primitives par poste permet de générer des clés dont la périodicité est de 7.1010 bits. Cette périodicité étant nettement supérieure à la longueur des messages stockés sur les bandes magnétiques, l'invention permet donc d'atteindre une grande sécurité. Dans cet exemple, le nombre de clés distinctes possible est donné par le nombre de couples de bases possible, qui est égal à 215(2l5-l), soit environ 109. Si l'on tient compte de l'accroissement dû à l'utilisation des coefficients D et D', qui peuvent chacun prendre 65 536 valeurs, on peut atteindre un nombre de clés possible de l'ordre de 5.1018, ce qui est nettement meilleur que les réalisations du même ordre connues jusqu'à présent. L'homme de l'art comprendra que le mode de chiffrement/déchiffrement qui vient d'être décrit présente les avantages suivants - sécurité apparente élevée contre l'attaque systématique exhaustive, - peu de paramètres secrets à stocker, puisque quatre mots de 16 bits suffisent pour chaque poste, - temps de calcul faible, car il suffit, par caractère à transmettre, des opérations suivantes . une addition (calcul de S(D,B)), un adressage indirect (permutation du message), une addition (calcul de S(D',B')), . un "OU EXCLUSIF" (chiffrement du message). Dans ce qui précède le mot "secret" (pour les bases et convertisseurs de base, notamment) signifie soit que ces nombres sont inaccessibles à l'usager, soit que le matériel n'est accessible qu'à des usagers habilités. L'invention peut également s'appliquer à partir des seuls éléments illustrés à la figure 1. Le message à protéger peut alors être constitué d'un logiciel d'application, destiné à une machine particulière. L'objectif n'est pas dans ce cas la sécurité intrinsèque, mais bien de décourager les utilisateurs de recopier ou d'exploiter des logiciels qui ne leur sont pas destinés. On utilise alors les éléments généraux suivants - un nombre premier P, qui peut être publiquement connu, - une base de référence Bg. A la fabrication de chaque machine, on affecte les éléments secrets (inaccessibles) suivants - une base interne B, et - un convertisseur de base C = I(Bo,B). - on lui affecte aussi un autre convertisseur C' = I(B,Bo) qui peut être publiquement distribué. L'organisme central de gestion, qui attribue les logiciels d'application aux différents usagers, connaît Bg et P, ainsi que bien sûr les paramètres publics C' des machines. Chaque machine particulière connaît B, C et P. La connaissance signifie ici bien sûr que ces informations sont disponibles dans la zone de mémoire 10 (figure 1) par exemple, mais inaccessibles à l'usager. Le chiffrement d'un logiciel peut être obtenu en permutant les octets par blocs de P-l octets, ce qui rend le logiciel inutilisable. On considère tout d'abord le cas d'un logiciel d'application pour un usager particulier. Son processus de chiffrement est le suivant - calcul de la base B de la machine par R(C',Bo) = R( I(B,Bo) , Bg ) = B - calcul de la suite de résidus S(B), - permutation des octets à l'aide de S(B) par blocs de P-1 octets. Le déchiffrement du programme d'application de l'usager par la machine s'effectue comme suit - calcul de la suite S(B), - permutation des octets à l'aide de S(B). Ce déchiffrement peut s'effectuer bien sûr sur l'ensemble du programme d'application. I1 peut être avantageux de l'effectuer au coup par coup, sur des parties du programme d'application. On évite ainsi qu'il existe à un moment donné en mémoire une copie déchiffrée de l'ensemble du programme d'application. L'homme de l'art sait en effet qu'il serait alors possible de récupérer ladite copie, en appliquant une interruption convenable à l'unité de traitement. Pour les logiciels de maintenance, on procède de manière un peu différente : le chiffrement s'effectue comme suit - calcul de la suite S(Bo), - permutation des octets à l'aide de S(Bo). Le déchiffrement d'un programme de maintenance par la machine s'effectue de la manière suivante - calcul de la suite de résidus S(B), - recherche de'Bg = R(C,B), - calcul de la suite des résidus S(Bo), - permutation des octets à l'aide de S(Bo). On trouvera un exemple détaillé de réalisation de tels modes de protection des logiciels en Annexe 2, où comme précédemment, la valeur choisie pour le nombre P est volontairement très basse, pour simplifier l'exposé. En pratique, on pourra choisir par exemple P = 28+1 = 257, ce qui permet - l'utilisation de suites de résidus de longueur accepta ble par une petite machine (256 nombres), - la facilité de manipulation et de calcul des nombres (mots de huit bits), - un nombre important de bases possibles (128). Plus généralement, ce mode de protection possède les avantages suivants - peu de paramètres secrets (2 octets par machine), chif frement des programmes d'application au moyen de paramètres publics spécifiques de la machine, - programme de maintenance chiffré de façon unique, - taille mémoire nécessaire assez faible (256 octets), - temps de calcul assez faible (un adressage indirect par octets). Bien entendu, la présente invention n'est pas limitée aux utilisations décrites, et s'étend à toute variante conforme à son esprit, et en particulier incluse dans le cadre des revendications ci-après. ANNEXE 1 CHIFFREMENT A.1.1) Les éléments secrets d'un correspondant sont B = 2 B' = 8 D = 6 D' = 9 B et B' sont des racines primitives de P(ll), D et D' sont deux nombres quelconques inférieurs à P. On cherche à chiffrer le message M=012 34567899876543210 A.1.2) Calcul de S(D,B) = S(6,2) W = R(D,B') = R(6,8) = 3 La suite S(D,B) = S(6,2) est donc Indice 1 2 3 4 5 6 7 8 9 10 S(6,2) 5 7 3 8 2 1 10 6 9 4 A.1.3) Permutation des 10 premiers éléments du message avec S(6,2). M1 = 0 ; 1 ; 2 ; 3 ; 4 ; 5 ; 6 ; 7 ; 8 ; 9 Le message mélangé est obtenu en faisant lère position : caractère N 5 2ème position : caractère N 7 3ème position : caractère N 3 Le message devient donc M'l = 4 ; 6 ; 2 ; 7 ; 1 ; 0 ; 9 ; 5 ; 8 ; 3 A.1.4) Calcul de S(D',B') = S(9,8) W' = R (D',B) = R(9,2) = 6 La suite S(9,8) est Indice 1 2 3 4 5 6 7 8 9 10 S(9,8) 3 4 1 10 5 9 8 6 2 7 A.1.5) Chiffrement de la suite M'1 avec S(9,8) M"1 est donc obtenu par le OU EXCLUSIF (bit à bit) 4#3 ; 6#4 ; 2#1 ; 7#10 ; 1#5 ; 0#9 ; 9#8 ; 5#6 ; 8#2 ; 3#7 M"l = 7 ; 2 ; 3 ; 13 ; 4 ; 9 ; 1 ; 3 ; 10 ; 4 A.1.6) Incrémentation de D et D' au bout de chaque module, de longueur au plus égale à P-l. Les nouveaux paramètres de décalage sont donc D + 1 = 7 et D' + 1 = 10. A.1.7) Calcul de S(D+1,B) = S(7,2) W = R(7,8) = 2 Indice | 1 1 i 2 | 3 3 j 4 1 5 | 6 6 7 7 8 8 9 9 10 j S(7,2) 4 6 10 7 1 2 9 5 8 3 A.1.8) Permutation des 10 éléments suivants du message M2 = 9 ; 8 ; 7 ; 6 ; 5 ; 4 ; 3 ; 2 ; 1 ; 0 Le message mélangé est M'2 = 6 ; 4 ; 0 ; 3 ; 9 ; 8 ; 1 ; 5 ; 2 ; 7 A.l.9) Calcul de S(D'+1,B') = S(10,8) R(10,2) = 1 Indice 1 2 3 4 5 6 7 8 9 10 S(10,8) 9 10 7 5 1 4 3 6 8 2 A.1.10) Chiffrement de M'2 avec S(10,8) M" est obtenu en faisant 6#9 ; 4#10 ; 0#7 ; 3#5 ; 9#1 ; 8#4 ; 1#3 ; 5#6 ; 2#8 ; 7#2 M"2 = 15 ; 14 ; 7 ; 6 ; 8 ; 12 ; 2 ; 3 ; 10 ; 5 A.l.ll) Le message chiffré global est donc 17 2 3 13 4 9 1 3 10 4 15 14 7 6 8 12 2 3 10 5| DECH I FFREMENT A.1.12) Calcul de S(D',B') = S(9,8) A.1.13) Déchiffrement des 10 premiers éléments avec S(9,8) 7+3 ; 2+4 ; 3+1 ; 13+10 ; 4+5 ; 9+9 ; 1+8 ; 3+6 ; 10+2; 4+7 M'1 = 4 ; 6 ; 2 ; 7 ; 1 ; 0 ; 9 ; 5 ; 8 ; 3 A.1.14) Calcul de S(D,B) = S(6,2) A.1.15) Permutation de M'1 avec S(6,2) ler caractère en position 5 2ème caractère en position 7 3ème caractère en position 3 soit : M1 = 0 ; 1 ; 2 ; 3 ; 4 ; 5 ; 6 ; 7 ; 8 ; 9 A.1.16) Incrémentation de D et D'. A.1.17) Calcul de S(D'+1,B') = S (10,8) A.1.18) Déchiffrement des 10 éléments suivants avec S(10,8) d'où M'2 = 6 ; 4 ; 0 ; 3 ; 9 ; 8 ; 1 ; 5 ; 2 ; 7 A.1.19) Calcul de S(D+1,B) = S(7,2) A.1.20) Permutation de M'2 avec S(7,2) on obtient M2 = 9 ; 8 ; 7 ; 6 ; 5 ; 4 ; 3 ; 2 ; 1 ; 0 Le message déchiffré global est donc M = 0 1 2 3 4 5 6 7 8 9 9 8 7 6 5 4 3 2 1 0 ANNEXE 2 CHIFFREMENT D'UN LOGICIEL D'APPLICATION A.2.1) Les paramètres choisis sont P = ll B0 = 2 Généraux B1 = 8 C1 = 7 C'1 = 3 (public) pour la machine 1 Soit le programme d'application à chiffrer défini par la suite des octets :A ; B ; C ; D ; E t F ; G ; H ; I ; J A.2.2) Calcul de la base B1 Dans la suite S(2) on cherche le résidu ayant pour indice C'1 = 3 Indice 1 2 3 4 5 6 7 8 9 10 S(2) 2 4 8 5 10 9 7 3 6 1 On obtient B1 = 8 A.2.3) Calcul de S(B1) = S(8) Indice 1 2 3 4 5 6 7 8 9 10 S(8) 8 9 6 4 10 3 2 5 7 1 A.2.4) Permutation de 10 premiers éléments du programme avec S(8). H;I;F;D;J;C;B;E;G;A Cette permutation représente le programme chiffré compréhensible par la seule machine qui connaît B1 = 8. A.2.5) Le déchiffrement du programme se fait facilement après avoir généré la suite S(B1). B1 est un paramètre secret connu seulement de la machine. A.2.6) Dans le cas d'un programme de maintenance, on procède de la façon suivante Programme à chiffrer M;N;O;P;Q;R;S;T;U;V A.2.7) Chiffrement du programme - Calcul de S(Bo) = S(2) - Permutation du programme avec S(2) On obtient donc N;P;T;Q;V;U;S;O;R;M A.2.8) Déchiffrement du programme de maintenance par la machine 1 - Calcul de S(B1) = S(8) - Détermination de Bg = R(C1,8) = 2 - Calcul de S(Bo) = S(2) - Permutation du programme reçu au moyen de S(2). Revendications 1. Dispositif électronique numérique de communication cryptographique, comportant une mémoire (1), une unité de traitement (2) et une unité d'entrée/sortie (3), ainsi que des moyens permettant un transcodage (16) d'informations lors de leur transfert, dans l'un ou l'autre sens, entre la mémoire (1) et l'unité d'entrée/sortie (3), afin de leur faire subir un chiffrement ou déchiffrement, caractérisé en ce que la mémoire (1) et l'unité de traitement (2) sont propres à contenir sélectivement (10) un nombre entier P et un autre nombre entier B, ou base secrète, inférieur à P, ainsi qu'à calculer, pour tout nombre entier de départ inférieur à P, un nombre entier transformé ou résidu (11) égal au reste de la division entière, par P, de la base B portée à une puissance égale au nombre entier de départ, et en ce que le transcodage (16) comporte la modification des informations en fonction de la relation entre au moins un nombre entier de départ et le résidu associé, ce qui permet le chiffrement ou le déchiffrement d'au moins une information par la seule disposition du nombre entier P, non confidentiel, et du nombre entier secret B, lequel peut être modifié aisément à tout moment. 2. Dispositif selon la revendication 1, caractérisé en ce que la mémoire (1) et l'unité de traitement (2) sont propres à stocker, en correspondance de chaque base, une représentation numérique (11) de relations entre un jeu de nombres entiers de départ inférieurs à P et les résidus correspondants, ledit jeu étant choisi de façon à définir avec les résidus correspondants une permutation portant sur une partie au moins des P-l premiers nombres entiers. 3. Dispositif selon la revendication 2, caractérisé en ce que, P étant un nombre premier, ladite représentation numérique et un tableau (11) dont les nombres entiers de départ, ou indices, sont les P-l premiers nombres entiers. 4. Dispositif selon l'une des revendications 2 et 3, caractérisé en ce que le transcodage (16) utilise tous les éléments de ladite permutation, pour du chiffrement ou déchiffrement proprement dit. 5. Dispositif selon la revendication 4, caractérisé en ce que le transcodage (16) comprend l'application de la permutation à (P-1) informations numériques, ou à (P-l) blocs d'informations numériques, que comporte le message. 6. Dispositif selon l'une des revendications 4 et 5, caractérisé en ce que le transcodage (16) comprend l'application d'un chiffrement ou déchiffrement, en particulier du type OU EXCLUSIF entre (P-l) informations ou blocs d'informations numériques et la suite des (P-l) résidus. 7. Dispositif selon l'une des revendications 4 à 6, caractérisé en ce que le transcodage (16) évolue de manière déterminable lorsqu'on passe d'un ensemble de (P-l) informations ou blocs d'informations à un autre. 8. Dispositif selon l'une des revendications 2 à 7, caractérisé en ce qu'en plus de la base B, la mémoire (1) et l'unité de traitement (2) sont agencés pour stocker (10) un nombre entier C, formant convertisseur de base, et défini comme l'indice dont une autre base B est le résidu, dans la permutation associée à la base B, ainsi que pour déterminer des résidus associés à cette autre base par le calcul du produit, modulo P-l, de ses propres résidus avec le convertisseur de base, ce qui permet une transmission protégée d'informations entre deux dispositifs, par la seule disposition des deux nombres entiers secrets B et C dans l'un de ceux-ci, en plus du nombre non confidentiel P. 9. Dispositif selon l'une des revendications 2 à 8, dans lequel un programme d'application peut être reçu en mémoire à travers l'unité d'entrée/sortie (3), caractérisé en ce que, le programme étant chiffré selon la base B secrète du dispositif, l'unité de traitement (2) et la mémoire (1) sont agencées pour le déchiffrer au moins en partie avant exécution. 10. Dispositif selon la revehdication 9, caractérisé en ce que deux bases différentes sont utilisées pour le programme utilisateur et pour le programme de maintenance. 11. Dispositif selon l'une des revendications précédentes, caractérisé en ce que la ou les bases, ainsi que le ou les convertisseurs de base sont stockés en mémoire de façon inaccessible au détenteur du dispositif. 12. Dispositif selon l'une des revendications précédentes, caractérisé en ce que P est un nombre de la forme 2Q+1, où Q est un nombre premier, ou bien l'un des nombres de Fermat de préférence 257 ou 65 537. 13. Dispositif selon l'une des revendications précédentes, caractérisé en ce qu'il comprend des moyens de calcul modulo P. 14 Dispositif selon l'une des revendications 8 et 11, caractérisé en ce qu'il comprend des moyens de calcul modulo P-l. 15. Installation comprenant plusieurs dispositifs (20-22, 30-32) selon l'une des revendications précédentes, mis en relation par des moyens de transfert d'informations non protégés, caractérisé en ce que chaque dispositif possède une base qui lui est propre, l'un au moins des dispositifs possédant un convertisseur de base à l'égard d'au moins un autre dispositif. 16. Installation selon la revendication 15, caractérisée en ce que le dispositif possédant le ou les convertisseurs de base transmet une information tirée de l'indice correspondant à une information brute dans sa base propre, d'où chacun des autres dispositifs tire un paramètre spécifique, dans sa base propre, tandis que le premier dispositif retrouve les paramètres spécifiques des autres à partir des convertisseurs de base, ce qui lui permet de distribuer publique aefltdes paramètres secrets spécifiques à chacun des autres dispositifs. 17. Installation selon la revendication 15, caractérisée en ce qu'un dispositif dit central, possède des convertisseurs de base par rapport aux bases des autres dispositifs, et transmet sélectivement à ceux-ci, pour une information brute donnée, une information tirée du produit de l'indice associé à celle-ci dans la base du central par le convertisseur de base concerné, réduit modulo P, chacun des autres dispositifs retrouvant l'information brute à partir de la relation entre l'indice reçu et le résidu associé dans sa propre base, ce qui permet la distribution publique de paramètres secrets communs à tous les dispositifs. 18. Installation selon la revendication 15, caractériséeen ce que certains au moins des dispositifs reçoivent une information définie par deux nombres entiers (m et n), chacun étant propre à en tirer une clef K par la relation K = R I(m,B) . I(n,B) , B 2 (mod P-l) où B est la base du dispositif concerné, I et R sont les fonctions Indice et Résidu définies dans la description, et en ce que le dispositif qui émet les deux nombres entiers m et n possède des convertisseurs de base à l'égard des autres, d'où il tire les clefs K respectivement déterminées par les autres dispositifs, ce qui permet la distribution publique de paramètres secrets spécifiques à chacun des dispositifs. 19. Installation selon la revendication 15, caractérisée en ce que certains au moins des dispositifs, qui comportent un convertisseur (C') d'une base de référence (Bg) dans leur base propre, reçoivent une information définie par deux nombres entiers (m et n), chacun étant en mesure de déterminer une clef secrète commune (Ro) par la relation I(Ko,B) = I(m,B) . I(n,B) . C' (modulo P-1) où B et C' sont la base et le convertisseur du poste concerné, tandis que I est la fonction Indice, telle que définie dans la description. 20. Procédé de communication cryptographique, caractérisé par l'envoi d'informations choisies à au moins un dispositif selon l'une des revendications 1 à 19.