Brevet FR2887715A1 — publié le 20061229

PROCEDE DE CODAGE DE MESSAGES Domaine de l'invention La présente invention concerne un procédé d'échange de messages entre des unités de traitement, telles que des ordinateurs ou des terminaux reliés à un réseau informatique. La présente invention concerne plus particulièrement l'échange de messages codés ou cryptés, en faisant référence à l'aspect secret de ces deux termes. Exposé de l'art antérieur La figure 1 illustre un procédé de codage connu sous le nom anglais de "Vernam One Time Pad", appelé ci-après procédé VOTP. Un ou plusieurs messages "initiaux" sont codés au moyen de tout ou partie d'une clé de codage Z. Les messages "initiaux", la clé de codage Z et les messages codés sont des suites de bits "0" ou "1". Le premier message initial ml, correspondant à une suite de 5 bits dans cet exemple, est codé avec les 5 premiers bits de la clé de codage Z, constituant un groupe zl. La clé de codage Z comprend généralement un très grand nombre de bits. Le codage à proprement parler consiste à additionner bit à bit modulo 2 le message initial ml et la portion zl de la clé de codage Z pour obtenir un message codé M1, de 5 bits dans cet exemple. Le deuxième message initial m2 est codé avec un deuxième groupe de bits z2 de la clé de codage Z suivant le premier groupe de bits z1 utilisé pour coder le message initial ml. De façon générale, un message initial mj est codé avec un groupe de bits zj de la clé de codage pour obtenir un message codé Mj de longueur identique à celle du message initial mj et du groupe zj. La clé de codage Z est une suite de nombres binaires aléatoires, appelée ci-après suite aléatoire. Une suite est dite aléatoire quand la valeur 0 ou 1 d'un chiffre de la suite est totalement indépendante des valeurs des autres chiffres de la suite. En général, on impose que la probabilité qu'un chiffre prenne la valeur 1 ou 0 soit exactement de ", quelles que soient les valeurs des autres chiffres de la suite. En outre, pour une suite de taille importante, les nombres de 1 et de 0 sont sensiblement égaux. On distinguera les suites aléatoires des suites quasialéatoires et des suites pseudoaléatoires qui ne sont pas des suites aléatoires selon la définition précédemment donnée. Une suite est dite quasi-aléatoire quand il faut des ressources informatiques importantes et un temps très long pour trouver des dépendances entre certains chiffres de la suite. En d'autres termes, une suite est quasi-aléatoire quand on ne peut pas la distinguer d'une suite aléatoire en un temps raisonnable. Une suite pseudo-aléatoire a l'apparence d'une suite aléatoire mais est en fait générée selon un procédé déterministe qui, lorsqu'il est connu, permet de retrouver l'ensemble des chiffres de la suite. Quand deux unités échangent des messages codés selon le procédé VOTP, chaque unité connaît la clé de codage Z. L'unité qui reçoit le message codé Mj retrouve le message initial mj en faisant la différence modulo 2 entre le message codé Mj et le groupe de bits zj correspondant de la clé de codage Z. Lorsque la clé de codage Z est une suite aléatoire, le procédé de codage "VOTP" est le meilleur procédé de codage actuellement connu. Il est prouvé complètement sûr. Cependant, la clé de codage Z ne peut être utilisée qu'une seule fois et elle doit être remise "en main propre" à chaque unité. Ceci nécessite par exemple d'enregistrer la clé de codage Z sur un support tel qu'un CD ou un DVD et de l'envoyer aux opérateurs commandant les deux unités devant comuniquer par messages codés. Bien que ce procédé de codage soit inviolable, ce procédé reste néanmoins réservé à des communications ultraconfidentielles entre deux unités. Un tel système de codage peut difficilement être adapté à un réseau d'ordinateurs dans la mesure où il faudrait prévoir une clé de codage pour chaque paire d'ordinateurs susceptibles d'échanger des messages codés. En effet, dans un petit réseau de par exemple 10 ordinateurs, il faudrait que chaque ordinateur dispose de 9 clés de codage suffisamment longue pour pouvoir échanger des messages codés pendant une période suffisamment longue, ce qui occuperait une place non négligeable des ressources de mémorisation de chaque ordinateur. Résumé de l'invention Un objet de la présente invention est de prévoir un procédé d'échange de messages entre unités de traitement du type VOTP qui ne nécessite pas que chaque unité dispose de ressources de mémorisation importantes. Un autre objet de la présente invention est de prévoir un tel procédé qui puisse facilement être mis en oeuvre. Pour atteindre ces objets, la présente invention prévoit un procédé de codage ou de décodage de données au niveau d'une unité de traitement, utilisant une clé de codage Z, comprenant une étape préalable de mémorisation dans ladite unité de traitement d'une suite de nombre de référence Y et d'un algorithme de transformation d'une suite en une autre suite aléatoire ou quasi-aléatoire, et comprenant les étapes de codage suivantes: générer tout ou partie de ladite clé de codage en appliquant ledit algorithme à ladite suite de référence; coder des données initiales ou décoder des données codées à partir de tout ou partie de ladite clé de codage précédemment générée, pour obtenir des données codées ou des données initiales. Selon un mode de mise en oeuvre du procédé de codage susmentionné, l'algorithme de transformation comprend au moins une opération choisie dans la liste d'opérations possibles suivantes: permutation des éléments d'une suite; addition, soustraction, division ou multiplication entre des éléments d'une suite ou entre des éléments d'une suite et ceux d'une autre suite; concaténation ou troncation d'une suite; suppression de certains éléments d'une suite; calcul, à partir d'une première suite X, d'une seconde suite X' au moyen d'une fonction f prédéfinie, le n-ième élément x'(n) de la suite X' étant égal à f (x (n)) , où x (n) est le n- ième élément de la suite X; remplacement de certains éléments d'une suite par des éléments calculés à partir d'autres éléments de cette suite. Selon un mode de mise en oeuvre du procédé de codage susmentionné, l'algorithme de transformation dépend d'un ensemble de paramètres définis à partir d'une clé d'algorithme, la clé d'algorithme étant un nombre ou une suite de nombres. De plus, au moins un des éléments parmi la suite de référence, l'algorithme de transformation et la clé d'algorithme, est connu uniquement de ladite une des unités. Selon un mode de mise en oeuvre du procédé de codage susmentionné, ledit algorithme de transformation comprend au moins une étape lors de laquelle une suite intermédiaire est générée. De plus, les nombres d'éléments de la suite de référence, de la clé de codage et de chaque suite intermédiaire peuvent être différents. Selon un mode de mise en oeuvre du procédé de codage susmentionné, l'algorithme de transformation comprend les opérations suivantes: former une matrice [Y] à L lignes et C colonnes reprenant les éléments de la suite de référence Y, la première ligne de la matrice [Y] reprenant les C premiers éléments de la suite Y, la deuxième ligne les C éléments suivants et ainsi de suite; construire une première matrice [X1] en effectuant pour tout ou partie des lignes de la matrice [Y] une permutation circulaire des éléments de chaque ligne en décalant ceux-ci d'un nombre de positions prédéfini, le décalage appliqué à chaque ligne étant défini à partir de ladite clé d'algorithme; déterminer une première suite intermédiaire X1, composée de C-1 éléments, à partir de la première matrice [Xl], telle que son n-ième élément soit égal à la somme des éléments de la n-ième colonne de la matrice [Xl], n étant compris entre 1 et C-1; construire une deuxième matrice [X2] et déterminer une deuxième suite intermédiaire X2, puis construire une troisième matrice [X3] et déterminer une troisième suite intermédiaire X3 et ainsi de suite, en reprenant à chaque fois les deux étapes précédentes à partir d'autres valeurs de décalages définis par ladite clé d'algorithme; concaténer les suites intermédiaires précédemment obtenues pour former ladite clé de codage. La présente invention prévoit aussi un procédé d'échange de messages entre deux unités de traitement, lesdites unités utilisant une clé de codage, une unité formant un message codé à partir d'un message initial et de tout ou partie de ladite clé de codage, et envoyant le message codé à l'autre unité qui le décode en utilisant la clé de codage, le codage du message initial et/ou le décodage du message codé étant effectué selon le procédé de codage ou décodage précédemment décrit. Selon un mode de mise en oeuvre du procédé d'échanges de messages susmentionné, ledit message codé est un message d'authentification dudit message initial, l'algorithme de transformation dépendant d'un ensemble de paramètres dont les valeurs sont définies à partir du message initial, chaque message initial et son message d'authentification étant émis simultanément par une unité "émettrice" et reçus par une unité "réceptrice", l'unité réceptrice vérifiant que le message d'authentification reçu correspond au message initial reçu. La présente invention prévoit en outre diverses applications du procédé d'échange de messages susmentionné. Dans une application, un ensemble d'unités de traitement sont réparties en une unité centrale et des unités périphériques, chaque unité périphérique étant reliée à l'unité centrale, des messages étant échangés entre l'unité centrale et chacune des unités périphériques selon le procédé d'échange de messages susmentionné, une clé d'algorithme étant dédiée à chaque unité périphérique et utilisée pour les échanges de messages entre l'unité centrale et l'unité périphérique considérée. Dans une variante de l'application susmentionnée, seule l'unité centrale est capable de générer chacune des clés de codage, chaque unité périphérique disposant de l'intégralité de sa clé de codage. Dans une autre application, un ensemble d'unités de traitement sont reliées les unes aux autres par un réseau de communication, chaque paire d'unités de traitement pouvant échanger des messages selon le procédé d'échange de messages susmentionné, une clé de codage étant associée et connue de chaque paire d'unités et chaque unité pouvant générer tout ou partie des clés de codage associées aux paires d'unités dont elle fait partie. La présente invention prévoit aussi un support de 20 mémorisation de données codées obtenues selon le procédé de codage précédemment décrit. Un avantage du procédé de la présente invention est qu'il permet de générer une clé de codage de grande taille à partir d'une suite de référence de petite taille. Par ailleurs, l'algorithme de transformation utilisé par l'unité de traitement pour générer la clé de codage peut être très simple. Ainsi, l'espace de mémorisation utilisé pour stocker la suite de référence et le programme relatif à l'algorithme de transformation peut être bien inférieur à l'espace de mémorisation nécessaire pour mémoriser la clé de codage dans son ensemble. Dans le cas où une unité de traitement est susceptible d'échanger des messages codés avec un grand nombre d'autres unités de traitement, ce gain d'espace de mémorisation est appréciable. De plus, une suite de référence et un algorithme de transformation donné peuvent être utilisés pour générer un grand nombre de clés de codage différentes, des paramètres de l'algorithme étant définis pour chaque paire d'unités souhaitant échanger des messages de façon secrète. Par ailleurs, au lieu de transmettre une ou plusieurs clés de codage "volumineuses" à chaque unité de traitement susceptible d'échanger des messages, le procédé d'échanges selon la présente invention permet de transmettre des éléments de petite taille. Ces éléments sont des valeurs de paramètres, dites clés d'algorithme, la suite de référence et le programme correspondant à l'algorithme de transformation. La petitesse des éléments susmentionnés permet de faciliter leur transmission aux différentes unités de traitement. Ces éléments, ou une partie de ces éléments, peuvent être codés en utilisant des procédés de codage autres que VOTP et transmis ensuite par des moyens de communication modernes tels qu'internet. Brève description des dessins Ces objets, caractéristiques et avantages, ainsi que d'autres de la présente invention seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non-limitatif en relation avec les figures jointes parmi lesquelles: la figure 1 illustre le procédé de codage VOTP précédemment décrit; la figure 2 est un schéma illustrant un procédé d'échange de messages selon la présente invention; la figure 3 est un schéma d'un mode de mise en oeuvre du procédé selon la présente invention appliqué à un système bancaire; la figure 4 est un schéma d'un autre mode de réalisation de la présente invention permettant un échange de messages codés entre plusieurs ordinateurs reliés à un même réseau informatique; et la figure 5 est un schéma illustrant un autre mode de 35 mise en oeuvre du procédé selon la présente invention destiné à assurer l'authentification de messages envoyés par une unité de traitement. Description détaillée Par souci de clarté, de mêmes éléments ont été désignés par de mêmes références aux différentes figures. Dans une première partie, on décrira de façon générale le procédé d'échange de messages selon la présente invention. Dans une deuxième partie, on décrira un exemple d'algorithme de transformation d'une suite en une autre suite aléatoire ou quasi-aléatoire. Dans une troisième partie, on décrira de façon générale la forme d'un algorithme de transformation utilisé dans un procédé selon la présente invention. Dans une quatrième partie, on décrira des exemples 15 d'application du procédé selon la présente invention. Dans une cinquième partie, on décrira un mode de mise en oeuvre du procédé selon la présente invention appliqué à l'authentification de messages envoyés par une unité. 1. Présentation générale La figure 2 est un schéma illustrant un procédé d'échange de messages selon la présente invention, entre deux unités de traitement E1 et E2. Les unités E1 et E2 échangent des messages codés selon le procédé VOTP, précédemment décrit en relation avec la figure 1, à partir d'une clé de codage Z. Selon un aspect de la présente invention, au moins une des unités E1 et E2 est capable de générer tout ou partie de la clé de codage Z, constituée d'une suite de nombres aléatoires ou quasialéatoires, à partir d'une autre suite de nombres, dite suite de référence Y, en mettant en oeuvre un algorithme de transformation A prévu pour transformer une suite en une autre suite aléatoire ou quasi- aléatoire. La clé de codage Z est ainsi obtenue par transformation de la suite de référence Y. Par ailleurs, l'algorithme de transformation A dépend de façon générale d'un ensemble de paramètres définis à partir d'une clé d'algorithme a. Une clé d'algorithme peut être un nombre ou une suite de nombres comme cela apparaîtra ci-après. Dans l'exemple représenté en figure 2, les deux unités E1 et E2 connaissent la suite de référence Y, l'algorithme A et la clé d'algorithme a. Cependant, dans un autre exemple, on pourrait prévoir que l'une des unités connaisse l'ensemble de ces éléments, l'autre unité connaissant uniquement la clé de codage Z et pouvant y avoir accès directement. La connaissance de la suite Y, de l'algorithme A et de la clé d'algorithme a permet de générer sur commande un morceau, ou groupe de bits zj, de la clé de codage Z. Ainsi, comme expliqué précédemment en relation avec la figure 1, lorsque l'unité E1 souhaite coder un message initial mj, elle génère au préalable le groupe zj de la clé de codage Z puis elle calcule le message codé Mj correspondant. Le message codé Mj est ensuite envoyé à l'unité E2. L'unité E2 détermine alors le groupe zj de la clé de codage Z, correspondant au j-ième message envoyé, soit en générant ce groupe à partir de la suite de référence Y, de l'algorithme A et de la clé d'algorithme a, soit en lisant le groupe zj à partir de la mémorisation de l'ensemble de la clé de codage Z. L'unité E2 procède alors au décodage du message codé Mj en soustrayant le groupe zj au message codé Mj afin d'obtenir le message initial mj. Chaque unité dispose d'un "pointeur" mémorisant la position du premier bit du prochain groupe de bits de la clé de codage pouvant être utilisé. La clé d'algorithme a et éventuellement la suite de référence Y et l'algorithme A sont connus uniquement des deux unités E1 et E2 ou de l'une d'entre elles. En tout état de cause, il faut qu'au moins un de ces trois éléments soit secret pour que la clé de codage Z soit secrète. Dans la suite de la description, les éléments de chaque suite sont des nombres constitués chacun d'un ou plusieurs chiffres. Un nombre peut être défini en base 2, sous la forme d'un ou plusieurs bits 0 ou 1, ou en base 10, sous la forme d'un ou plusieurs chiffres 0 à 9, ou dans n'importe quelle autre base, par exemple une base hexadécimale couramment utilisée en informatique. Par ailleurs, un nombre peut être entier ou réel selon les cas. On notera, en outre, que la suite finale constituant la clé de codage Z générée en mettant en oeuvre l'algorithme de transformation A peut être une suite de nombres autres que binaires. Or le codage selon le procédé VOTP, tel que décrit en relation avec la figure 1, utilise de façon générale une clé de codage constituée de nombres binaires. Dans ce cas, chaque nombre ou chaque chiffre de la clé de codage Z peut être transformé en un nombre binaire. Par exemple, si la suite obtenue est une suite de nombres hexadécimaux à 2 chiffres telle que (12 42 03 63), on pourra la transformer en une suite de nombres binaires en définissant pour chacun des 4 nombres de la suite un nombre binaire constitué de 6 bits "0" ou "1", soit (001100 101010 000011 111111), ou en définissant pour chacun des 8 chiffres de la suite, un nombre binaire constitué de 4 bits, soit (0001 0010 0100 0010 0000 0011 0110 0011). Par ailleurs, les définitions d'une suite aléatoire, pseudo-aléatoire et quasi-aléatoire données précédemment pour des suites de chiffres binaires peuvent être généralisées à tout type de suite. 2. Exemple d'algorithme de transformation Un exemple d'algorithme de transformation pouvant être 25 mis en oeuvre dans un procédé selon la présente invention est décrit ci-après. 2.1 Principes de base A partir d'une suite de référence Y, constituée de N chiffres, on construit une matrice [Y] de chiffres comprenant L lignes et C colonnes, avec L*C=N. La première ligne reprend les C premiers chiffres de la suite de référence Y, la deuxième ligne les C chiffres suivants de la suite Y, et ainsi de suite jusqu'à la dernière ligne qui reprend les C derniers chiffres de la suite Y. La matrice [Y] a alors la forme suivante: y(l,l) y(1,2) y(1,C) y(2,1) y(2,2) y(2, C) y(L,1) y(L,2) y(L,C) On définit ensuite une première matrice [Y1] à partir de la matrice [Y] en effectuant pour chaque ligne Li, i étant compris entre 1 et L, une permutation des éléments de cette ligne. Chaque permutation correspond dans cet exemple à un décalage circulaire des éléments de la ligne Li d'un nombre di de positions vers la gauche. Chaque nombre di est compris entre 0 et C-1. Un exemple de matrice [Y1] est donné ci-après: dl=0 d2=2 y(1,1) y(1,2) y(1,C) y(2,3) y(2,4) y(2,2) dL=9 y(L,10) y(L,11) y(L,9) On définit ensuite une première suite Xl constituée de C-1 chiffres. Le n-ième élément xl(n) de la suite X1, n étant compris entre 1 et C-1, est égal à la somme des éléments de la n-ième colonne de la matrice Y1: L xl(n) = l y(j, n) j=1 On construit ensuite une deuxième matrice [Y2] à partir de la matrice [Y] en effectuant de nouvelles permutations définies par de nouveaux décalages dl à dL. On forme ensuite une deuxième suite X2 en faisant comme précédemment la somme des éléments de chaque colonne. On construit ainsi un nombre T de suites Xl à XT et on forme une "grande" suite Z en accolant les suites les Xl à XT. La suite Z ainsi formée constitue la clé de codage. A titre d'exemple, avec une suite de référence Y composée de 106 bits, la fabrication, avec C=105 et L=10, d'une clé de codage Z constituée de T=109 suites Xl à XT, constituée chacune de 105-1 bits, on peut obtenir une clé de codage Z constituée de 9999*109 bits, soit environ 1014 bits. 2.2 Détermination des décalages Les décalages dl à dL utilisés pour la fabrication des matrices [Y1] à [YT] sont des paramètres définis à partir d'une clé d'algorithme a. La clé d'algorithme a est par exemple une suite de L*T nombres entiers correspondant aux nombres dl à dL utilisés pour la fabrication des T matrices [Y1] à [YT]. Cependant ce type de clé peut être très long. Un exemple de procédé de génération de T jeux de L valeurs de décalages dl à dL nécessitant seulement une "petite" clé d'algorithme a est le suivant. Pour chaque fabrication d'une suite Xt, t étant compris entre 1 et T, on définit une "petite" suite s(t) composée de L nombres correspondant aux décalages dl à dL concaténés. Chaque petite suite s(t) est un élément d'une grande suite S={s(t)}. Chaque petite suite s(t) peut être définie au moyen d'une fonction f(t) comprenant des paramètres définis par la clé d'algorithme a. Le terme de "fonction f(t)" doit être compris au sens large comme tout procédé de génération d'une petite suite s(t) connaissant la valeur d'un nombre t. Un exemple de fonction f(t) est le suivant: Chaque élément s(t) est considéré comme une concaténation de L/3 sous-suites composées chacune de 3 nombres correspondant à 3 valeurs de décalages. La petite suite s(t) est alors égale à [s1(t) s2(t) ... sL/3(t)]. Chaque sous-suite sk(t), k étant compris entre 1 et L/3, est alors considérée comme un unique nombre comprenant 3 groupes de chiffres. Chaque nombre sk(t) peut alors être calculé comme suit: sk(t)=ak*t + bk modulo[10m] où ak et bk sont des paramètres et m est égal à 3 fois le nombre de chiffres de chaque décalage dl à dL. Les paires de paramètres a1/b1, a2/b2, à aL/3/bL/3 35 sont définies à partir de la clé d'algorithme a. La clé d'algorithme a est par exemple la suite de nombres correspondant aux paires de paramètres a1/b1 à aL/3/bL/3. Selon un mode de mise en oeuvre perfectionné de l'algorithme de transformation décrit ci-dessus, le décalage dl de la première ligne de la matrice [Y] pour fabriquer les matrices [Y1] à [YT] est toujours pris égal à 0, ou autrement dit, la première ligne n'est jamais décalée. Dans ce cas, la sous-suite s1(t) est la concaténation des décalages d2, d3 et d4, la sous-suite s2(t) est la concaténation des décalages d5, d6 et d7, et ainsi de suite. Dans l'exemple décrit précédemment, avec L=10, C=105, T=109, et en prenant d1=0, chaque petite suite s(t) est composée de trois sous-suites s(t)=[sl(t)s2(t)s3(t)]. Chaque décalage d2 à d10 est un nombre compris entre 0 et C-1, c'est-à-dire dans cet exemple un nombre à 5 chiffres compris entre 00000 et 99999. Chaque sous-suite, constituée de la concaténation de 3 décalages, est équivalente à un nombre à 15 chiffres. Le paramètre m est alors égal à 15. Lorsque l'on souhaite déterminer une partie de la clé de codage Z, par exemple la suite Xt, il faut définir la petite suite s(t) afin de connaître les décalages à appliquer à la matrice [Y] pour obtenir la matrice [Yt] en effectuant trois calculs pour déterminer les nombres correspondants à si(t), s2(t) et s3 (t) . sl(t)=a1*t + b1 modulo[1015] s2(t)=a2*t + b2 modulo[1015] s3(t)=a3*t + b3 modulo[1015] où a1, b1, a2, b2, a3 et b3 sont des nombres à 15 chiffres. Dans le cas par exemple où sl(t)=500006666600099, 30 d2=50000, d3=66666 et d4=00099. Un avantage de la fonction f(t) précédemment décrite est qu'elle permet de générer les valeurs de décalages à partir d'une toute petite clé d'algorithme a. Dans l'exemple cité, la clé a est composée de 6 nombres dont chacun peut être codé en binaire sur une trentaine de bits, ce qui correspond au total à un nombre véritablement négligeable de bits en comparaison aux capacités de mémorisation des ordinateurs actuels. 3. Forme générale d'un algorithme de transformation 3.1 Définition Dans un procédé d'échange de messages selon la présente invention, divers algorithmes de transformation A peuvent être utilisés. Quel que soit l'algorithme de transformation A utilisé, on part d'une suite de référence Y, comprenant N éléments, pour obtenir une suite finale aléatoire ou quasi-aléatoire comprenant M éléments correspondant à une clé de codage Z. L'obtention de la clé de codage Z s'effectue en une ou plusieurs étapes. Lors de chaque étape, on génère une nouvelle suite à partir de la suite de référence Y ou des suites générées lors des étapes précédentes. Les éventuelles suites "intermédiaires" entre la suite Y et la suite Z, appelées de façon générale suites X, peuvent comprendre un nombre d'éléments inférieur ou supérieur à N ou M. Chaque élément d'une suite est un nombre réel, entier ou autre, défini en base 2, 10 ou autre. Lors de chaque étape, diverses opérations peuvent être effectuées. Des exemples sont décrits ci-après. Quelles que soient les opérations effectuées, l'algorithme de transformation dans son ensemble doit être tel qu'en partant d'une suite de référence Y on obtienne au final une autre suite Z aléatoire ou quasi-aléatoire. Les opérations effectuées peuvent être paramétrées. Les valeurs des paramètres sont alors définies à partir d'une clef d'algorithme a, constituée d'une suite de nombres réels, binaire ou autre en fonction du type de paramètres utilisés dans les diverses opérations de l'algorithme de transformation A. 3.2 Exemples d'opérations Un premier exemple d'opération est une permutation des éléments de la suite de référence Y ou des suites intermédiaires X. En pratique, une opération de permutation peut consister, comme dans l'exemple d'algorithme décrit précédemment en chapitre, à créer une matrice à partir de la suite Y ou X dont on souhaite permuter les éléments, puis à effectuer des permutations sur chaque ligne/colonne ou entre éléments de diverses lignes/colonnes. La permutation des éléments d'une telle matrice peut être alors facilement paramétrée au moyen de valeurs de décalages ou autres. Un deuxième exemple d'opération consiste à effectuer des opérations d'addition, de soustraction, de division ou encore de multiplication entre des éléments de la suite de référence Y ou d'une suite intermédiaire X ou bien entre des éléments de la suite Y ou d'une suite X et des éléments d'une autre suite, telle qu'une autre suite intermédiaire X ou encore une suite "extérieure" spécialement utilisée pour l'opération considérée. Une suite extérieure pouvant être utilisée est une suite de nombres pseudo-aléatoire. Un exemple de suite pseudo-aléatoire W pouvant facilement être générée est la suivante: w(n)=a*w(n-1) modulo[b] où a et b sont des paramètres et w(n) le n-ième élément de la suite W. Comme dans l'exemple d'algorithme précédemment décrit en 2.1, la mise en oeuvre desopérations d'addition ou autre peut être effectuée en passant par une matrice [Y], [X] ou [W] reprenant les éléments de la suite Y, X ou W. Un troisième exemple d'opération consiste à effectuer une concaténation de plusieurs suites ou une troncation d'une suite. Dans l'exemple d'algorithme précédemment décrit, on effectue une concaténation des suites X1 à XT pour former la suite finale Z. Un quatrième exemple d'opération consiste à déterminer à partir de la suite Y ou d'une suite intermédiaire X, une autre suite X' telle que le n-ième élément x'(n) de la suite X' soit fonction du n-ième élément de la suite Y ou X et égal à f (y (n) ) ou f(x(n)), où f est une fonction préalablement définie. Comme fonction f, on pourra utiliser une fonction appelée "non estimable" et définie comme suit. Une fonction f est dite non-estimable si connaissant une suite de "départ" S constituée de N éléments et connaissant les N' premiers éléments d'une suite "d'arrivée" U dont le nième élément u(n) est calculé à partir du n-ième élément s(n) de la suite S, selon la formule u(n) =f(s(n)), il est impossible d'en déduire la valeur des N-N' autres éléments de la suite d'arrivée U. Diverses fonctions non-estimables peuvent être utilisées. On peut par exemple prendre un polynôme de degré supérieur à N. Un exemple de polynôme P de degré 2*N est le suivant: P(y) =(y-x(l))*(y-x(2))*....* (y-x(2N)) où x(1), x(2) à x(2N) sont les éléments d'une suite pseudoaléatoire. Un autre type de fonction non-estimable, particulièrement pratique pour la réalisation de calculs informatiques, est une fonction constituée de fonctions trigonométriques telles que cos(y), sin(y) et éventuellement de fonctions facilement programmables telles que des fonctions polynomiales de degré 2. Un exemple de telle fonction est le suivant: f(y) =cos(2irk1 *G1(y))+...+cos(2irkr *Gr(y)) où k1 à kr sont des paramètres et G1 à Gr des fonctions polynomiales de degré 2. Un cinquième exemple d'opération consiste à supprimer des éléments de la suite de référence Y ou d'une suite intermédiaire X. Pour ce faire on peut par exemple, après avoir créer une matrice [Y] ou [X] reprenant les éléments de la suite Y ou X, supprimer une ou plusieurs lignes/colonnes de la matrice considérée. Un sixième exemple d'opération consiste à remplacer certains éléments de la suite Y ou X par des éléments calculés à partir d'autres éléments de la suite. Ainsi, pour des matrices [Y] ou [X] reprenant les éléments de la suite Y ou X, on peut remplacer les éléments d'une ligne ou d'une colonne par des éléments calculés à partir d'éléments d'une autre ligne ou colonne. Par exemple, les éléments y(2,1) à y(2,C) de la deuxième ligne de [Y] peuvent être remplacés par des éléments y'(2,1) à y'(2,C) déterminés à partir des éléments y(4,1) à y(4,C) de la quatrième ligne de [Y], chaque élément y'(2,t) étant égal à f(y(4,t)), où f est une fonction préalablement définie. L'homme de l'art pourra imaginer d'autres exemples d'opérations pouvant être utilisées dans l'algorithme de 10 transformation A. 3.3 Variante Selon une variante de mise en oeuvre du procédé précédemment décrit, la suite d'opérations de l'algorithme n'est pas figée. Une liste d'opérations est prédéfinie et chacune de ces opérations est numérotée. L'opération n 1 correspond par exemple à une opération de concaténation, l'opération n 2 à une addition, l'opération N 3 à une permutation, et ainsi de suite. La suite d'opérations de l'algorithme est alors définie par la clé d'algorithme. La clé d'algorithme est une suite d'éléments comprenant chacun deux champs. Le premier champ indique un numéro d'opération et le second champ une valeur de paramètre utilisée pour la mise en oeuvre de l'opération définie dans le premier champ. La suite d'opérations de l'algorithme correspond alors aux opérations successivement indiquées dans la clé d'algorithme. L'exemple d'algorithme donné en 2.1 serait obtenu à partir de la clé suivante: [(3;dld2...dL)(2; 0)(1; 0)], le signe 0 signifiant qu'aucune valeur de paramètre n'est nécessaire. 4. Exemples d'application La figure 3 est un schéma d'un réseau d'agences Al à Ak, k étant un entier, dont chacune est reliée à un central ou agence centrale AC. Chaque agence peut communiquer avec le central AC selon le procédé de la présente invention au moyen d'une clé de codage Zt, t étant compris entre 1 et k. Chaque agence At connaît la clé de codage Zt dans son ensemble. Le central C est capable de reconstituer tout ou partie de chaque clé de codage Zt à partir d'une suite de référence Y, et au moyen d'un algorithme de transformation A dont les paramètres sont définis à partir d'une clé d'algorithme a (t) différente pour chaque agence. Le codage des messages échangés entre une agence At et le central AC est effectué selon le procédé VOTP, en utilisant des groupes de bits successifs de la clé de codage Zt définie pour chaque agence. Dans le cas où un grand nombre d'agences sont reliées au central, k étant par exemple égal à 100000, et où chaque clé de codage Z1 à Zk auxquelles le central doit avoir accès est une suite de 1015 bits, correspondant à des échanges quotidiens d'environ 103 Gbits pendant 100 ans, une mémorisation de l'ensemble de ces clés de codage Z1 à Zk par le central nécessiterait un espace mémoire de 1020 bits, ou en d'autres termes 1011 Gbits, ce qui est colossal et difficilement envisageable. En utilisant le procédé de la présente invention, il suffit de mémoriser une suite de référence Y composée d'environ 1 M bits, un programme correspondant à l'algorithme de transformation A occupant au plus 1 M bits, et une clé d'algorithme a occupant un espace de mémorisation négligeable. La mémorisation de ces éléments est effectuée une fois pour toutes, ou à tout le moins pour une période de 100 ans. Ainsi, grâce au procédé de la présente invention, il n'est pas nécessaire de renouveler régulièrement les clés de codage utilisées entre l'agence centrale Ac et les agences Al à A4. La figure 4 est un schéma d'un ensemble d'unités de traitement Tl à T5 reliées par un réseau de communication, de type éthernet, internet ou autre. Chaque terminal est susceptible de communiquer avec un autre terminal pour échanger des messages codés selon le procédé VOTP. Chaque paire de terminaux, une dizaine dans cet exemple, peut communiquer de façon secrète au moyen d'une clé de codage propre à chaque paire. Ainsi, la paire de terminaux T1/T5 dispose d'une clé de codage Z(T1,T5). Chaque terminal Tl à T5 connaît une même suite de référence Y, un algorithme de transformation A dont les paramètres sont définis au moyen d'une clé d'algorithme a. Une clé d'algorithme a est associée à chaque paire de terminaux. Ainsi, le terminal T5 connaît quatre clés d'algorithme a (11, 15), a (12,15), a (T3, T5) et a (14,15). A partir de ces éléments, chaque terminal est capable de générer tout ou partie de la clé de codage associée à une des paires de terminaux dont il fait partie. Le terminal T5 peut ainsi générer les clés de cryptage Z(T1,T5), Z(T2,T5), Z(T3,T5) et Z(T4,T5) associées respectivement aux paires de terminaux T1/T5, T2/T5, T3/T5 et T4/T5. Dans le cas où chacun des 5 terminaux devrait mémoriser 5 clés de codage complètes composées chacune de 1015 bits, un espace de mémorisation de 5*105 bits devrait être disponible dans chaque terminal, ce qui est énorme et irréaliste. Comme dans l'exemple précédemment décrit, en utilisant le procédé d'échange de messages selon la présente invention, il suffirait que chaque terminal dispose d'un espace de mémorisation de quelques M bits, ce qui est tout à fait possible. De façon générale, quelle que soit l'application envisagée, les unités de traitement qui ne disposent pas de l'ensemble des éléments (suite de référence Y, algorithme de transformation A et clé d'algorithme a) pour générer la clé de codage Z, reçoivent la clé de codage Z par "courrier". L'intégralité de la clé de codage est mémorisée par de telles unités. 5. Procédé d'authentification La figure 5 est un schéma illustrant un procédé d'échange de messages entre deux unités de traitement E1 et E2 utilisant un procédé d'authentification. Lorsqu'une unité E1 envoie un message m à l'autre unité E2, elle envoie simultanément un message d'authentification M. Le message d'authentification M est en fait un message codé obtenu à partir du message m et d'une clé de codage Z. Lorsqu'elle reçoit les messages m et M, l'unité E2 vérifie que le message M correspond bien au message m. Le message d'authentification M associé au message m correspond au codage du message m à partir d'une clef de codage Z selon le procédé de codage décrit précédemment en relation à la figure 1. La particularité de la clé de codage Z utilisée pour déterminer le message d'authentification M est qu'elle est générée par l'unité E1 en tenant compte du message m que l'unité E1 souhaite émettre. En d'autres termes, la clé de codage Z est spécifique et associée à un message m donné. Le procédé de génération de la clé de codage Z s'effectue comme précédemment décrit en sections 2 et 3, à partir d'une suite de nombres de référence Y et en mettant en oeuvre un algorithme de transformation A à partir de cette suite de référence Y, pour obtenir une suite de nombres aléatoires ou quasi-aléatoire constituant une clé de codage Z. La particularité de l'algorithme de transformation utilisée dans le cadre de la détermination d'un message d'authentification M correspondant à un message m est que tout ou partie des paramètres de l'algorithme de transformation sont définis à partir du message m. Le message m est alors équivalent à une clé d'algorithme. Un exemple d'algorithme de transformation pouvant être utilisé consiste à mettre en oeuvre l'algorithme précédemment décrit en 2.1 jusqu'à l'obtention de la première suite intermédiaire X1. Les décalages dl à dL utilisés pour fabriquer la matrice [Y1] sont définis à partir du message m. La valeur d'une suite s égale à la concaténation des décalages d1 à dL (s=[d1 d2... dL]) peut être calculée au moyen d'une fonction f préalablement définie s=f(m). On utilise ensuite comme clé de codage Z tout ou partie de la première suite X1. Bien entendu, la présente invention est susceptible de diverses variantes et modifications qui apparaîtront à l'homme de l'art. En particulier, l'homme de l'art pourra imaginer d'autres applications du procédé d'échange de messages selon la présente invention. De plus, la suite de référence Y utilisée dans le procédé d'échanges selon la présente invention peut éventuellement être générée à partir d'une autre suite de référence en mettant en oeuvre un algorithme de transformation comprenant des opérations définies en 3.2 ou d'autres. On pourra par exemple transmettre par messages codés une première suite de référence Y1 et deux clés d'algorithme al et a 2 à deux unités susceptibles de communiquer ensemble. Chaque unité génère alors une seconde suite de référence Y2 en mettant en oeuvre un algorithme de transformation Al à partir de la première suite de référence Y1 et de la clé d'algorithme al. Chaque unité peut ensuite générer tout ou partie d'une clé de codage Z en mettant en oeuvre un algorithme de transformation A2 similaire à partir de la seconde suite de référence Y2 et de la clé de codage a 2. Dans cet exemple, on utilisera de préférence une clé d'algorithme al "longue" plus difficilement déchiffrable. La seconde suite de référence générée étant "secrète", la clé d'algorithme a2 peut être prévue très courte. En outre, le message initial m à partir duquel est formé le message codé M selon la présente invention peut être un message "pré-codé", c'est-à- dire obtenu par codage d'un message original selon un procédé de codage autre que VOTP. Un tel double codage permet de combiner les avantages de divers modes de codage. REVENDICATIONS 1. Procédé de codage ou de décodage de données au niveau d'une unité de traitement (E1, E2), utilisant une clé de codage (Z), caractérisé en ce qu'il comprend une étape préalable de mémorisation dans ladite unité de traitement d'une suite de nombre de référence (Y) et d'un algorithme de transformation (A) d'une suite en une autre suite aléatoire ou quasialéatoire, et les étapes de codage suivantes: générer tout ou partie de ladite clé de codage en appliquant ledit algorithme à ladite suite de référence; coder des données initiales ou décoder des données codées à partir de tout ou partie de ladite clé de codage précédemment générée, pour obtenir des données codées ou des données initiales. 2. Procédé de codage selon la revendication 1, dans lequel l'algorithme de transformation (A) comprend au moins une opération choisie dans la liste d'opérations possibles suivantes: - permutation des éléments d'une suite; - addition, soustraction, division ou multiplication 20 entre des éléments d'une suite ou entre des éléments d'une suite et ceux d'une autre suite; concaténation ou troncation d'une suite; suppression de certains éléments d'une suite; calcul, à partir d'une première suite X, d'une seconde suite X' au moyen d'une fonction f prédéfinie, le n-ième élément x' (n) de la suite X' étant égal à f (x (n)) , où x (n) est le n- ième élément de la suite X; remplacement de certains éléments d'une suite par des éléments calculés à partir d'autres éléments de cette suite. 3. Procédé de codage selon la revendication 1, dans lequel l'algorithme de transformation (A) dépend d'un ensemble de paramètres définis à partir d'une clé d'algorithme (a), la clé d'algorithme étant un nombre ou une suite de nombres, et dans lequel au moins un des éléments comprenant la suite de référence, l'algorithme de transformation, et la clé d'algorithme, est connu uniquement de ladite une des unités. 4. Procédé de codage selon la revendication 1, dans lequel ledit algorithme de transformation comprend au moins une étape lors de laquelle une suite intermédiaire (X) est générée, et dans lequel les nombres d'éléments de la suite de référence (Y), de la clé de codage (Z) et de chaque suite intermédiaire peuvent être différents. 5. Procédé de codage selon les revendications 3 et 4, 10 dans lequel l'algorithme de transformation (A) comprend les opérations suivantes: former une matrice [Y] à L lignes et C colonnes reprenant les éléments de la suite de référence Y, la première ligne de la matrice [Y] reprenant les C premiers éléments de la suite Y, la deuxième ligne les C éléments suivants et ainsi de suite; construire une première matrice [Xl] en effectuant pour tout ou partie des lignes de la matrice [Y] une permutation circulaire des éléments de chaque ligne en décalant ceux-ci d'un nombre de positions prédéfini, le décalage (dl à dL) appliqué à chaque ligne étant défini à partir de ladite clé d'algorithme; déterminer une première suite intermédiaire X1, composée de C-1 éléments, à partir de la première matrice [Xl], telle que son n-ième élément soit égal à la somme des éléments de la n-ième colonne de la matrice [Xl], n étant compris entre 1 et C-1; construire une deuxième matrice [X2] et déterminer une deuxième suite intermédiaire X2, puis construire une troisième matrice [X3] et déterminer une troisième suite intermédiaire X3 et ainsi de suite, en reprenant à chaque fois les deux étapes précédentes à partir d'autres valeurs de décalages définis par ladite clé d'algorithme; concaténer les suites intermédiaires précédemment obtenues pour former ladite clé de codage (Z). 6. Procédé d'échange de messages entre deux unités de traitement (E1, E2), lesdites unités utilisant une clé de codage (Z), une unité formant un message codé (M) à partir d'un message initial (m) et de tout ou partie de ladite clé de codage, et envoyant le message codé à l'autre unité qui le décode en utilisant la clé de codage, le codage du message initial et/ou le décodage du message codé étant effectué selon le procédé de codage ou décodage de la revendication 1. 7. Procédé d'échanges de messages selon la revendication 6, dans lequel ledit message codé (M) est un message d'authentification dudit message initial (m), l'algorithme de transformation dépendant d'un ensemble de paramètres dont les valeurs sont définies à partir du message initial, chaque message initial et son message d'authentification étant émis simultanément par une unité "émettrice" (E1) et reçus par une unité "réceptrice" (E2), l'unité réceptrice vérifiant que le message d'authentification reçu correspond au message initial reçu. 8. Ensemble d'unités de traitement réparties en une unité centrale (C) et des unités périphériques (Al à Ak), chaque unité périphérique étant reliée à l'unité centrale, des messages étant échangés entre l'unité centrale et chacune des unités périphériques selon le procédé de la revendication 6, une clé d'algorithme (Z1 à Zk) étant dédiée à chaque unité périphérique et utilisée pour les échanges de messages entre l'unité centrale et l'unité périphérique considérée. 9. Ensemble selon la revendication 8, dans lequel seule l'unité centrale est capable de générer chacune des clés de codage, chaque unité périphérique disposant de l'intégralité de sa clé de codage. 10. Ensemble d'unités de traitement (T1 à T4) reliées les unes aux autres par un réseau de communication, chaque paire d'unités de traitement pouvant échanger des messages selon le procédé de la revendication 1, une clé de codage (Zt1,t5) étant associée et connue de chaque paire d'unités et chaque unité pouvant générer tout ou partie des clés de codage associées aux paires d'unités dont elle fait partie. 11. Support de mémorisation de données codées obtenues selon le procédé de codage de la revendication 1.