FR 2912019 A1 20080801 FR 0700554 A 20070126 PROCEDE DE CODAGE DE DONNEES La présente invention concerne notamment un procédé de codage d'informations ou de données. Elle concerne, par exemple, la sécurité de transmission dans les réseaux. Elle s'applique, par exemple, dans les réseaux de transmission filaire et les réseaux sans fil. Dans les réseaux sans fil, les contraintes sont élevées, il y a souvent une io faible capacité de calcul, des problèmes de transmission (canaux bruités) et des flux faibles (weak flow). Un des problèmes rencontré est la protection de l'information transmise, c'est-à-dire trouver une solution qui permette, de respecter l'anonymat des utilisateurs souhaitant échanger des informations, de garantir la non- 15 accessibilité de ces informations à des attaquants malveillants, tout en conservant une bonne qualité de trafic, c'est-à-dire sans trop ajouter de latence. Pratiquement, il est facile pour un attaquant d'intercepter toute communication dans une région donnée, lorsque l'on se trouve dans un environnement 20 sans fil. Les systèmes habituels de chiffrement avec des clés publiques permettant de chiffrer l'adresse du noeud sont en général très lents par rapport au besoin de l'application. Il est connu de l'art antérieur, plusieurs solutions qui utilisent des systèmes 25 de chiffrement à clé privé. Ces solutions n'offrent pas une sécurité élevée, car chaque noeud du réseau doit connaître la clé privée des autres. Ainsi, lorsqu'un noeud est corrompu, la sécurité du réseau s'écroule. Le document de William Luh, Deepa Kundur, "Distributed Privacy for Visual 30 Sensor Networks via Markov Shares" In Proceedings of the Second IEEE Workshop on Dependability and Security in Sensor Networks and Systems, 2006 divulgue une méthode qui divise l'information avant de la transmettre. Cette solution protège l'information uniquement si on fait l'hypothèse que l'attaquant n'est capable d'intercepter qu'une faible fraction de l'information. Cette hypothèse est peu probable dans un contexte sans fil. Un autre in- convénient de la méthode décrite est qu'elle ne garantit pas l'anonymat des utilisateurs. Le document de V. M. Sidel'nikov. "A public-key cryptosystem based on Reed-Muller codes Discrete Mathematics and Applications, 4(3):191-207, 1994 décrit aussi un système de chiffrement à clé publique qui utilise la pro- lo priété des codes de Muller et conserve le principe d'ajouter une erreur aléatoire de poids fixée. La performance d'un tel algorithme est encore faible lorsque l'on considère des applications temps réel ou proches du temps réel. Cet article divulgue un algorithme qui est plus restrictif. La longueur de la clé est toujours importante et la complexité de chiffrement d'un message est en- 15 core importante si l'on souhaite conserver une sécurité élevée. Le système de chiffrement à clé publique décrit est probabiliste. Il existe donc une probabilité non nulle que le destinataire du message ne réussisse pas à déchiffrer le message. 20 A l'heure actuelle, les systèmes décrits dans l'art antérieur ne résolvent pas de façon suffisante les problèmes de sécurité lors de la transmission d'information dans un réseau de transmission et ne s'intéresse pas au problème de l'anonymat de l'émetteur et du récepteur. 25 L'invention concerne un procédé de codage d'une information circulant dans un réseau comprenant au moins un noeud émetteur de l'information, un noeud destinataire, utilisant un système de chiffrement à clé publique, caractérisé en ce qu'il comporte au moins les étapes suivantes : • générer une clé publique en utilisant une matrice de génération de clé 30 publique NG constituée de u colonnes et u lignes, un élément d'une colonne ou d'une ligne étant un bloc formé par la matrice G de génération de code, et en exécutant l'opération suivante : soit RI une matrice inversible aléatoire constituant une clé privée et RP une matrice obtenue par permutation aléatoire constituant une clé privée, la clé publique est donnée par la matrice PUK = RI(multiplication matricielle par bloc) NG(multiplication matricielle)RP • utiliser la clé privée et la clé publique obtenue pour coder et décoder les informations transmises dans le réseau. Il comporte, par exemple, une étape de réduction de la taille de la matrice de io génération de la clé publique en éliminant certaines colonnes de la matrice. Le procédé selon l'invention, du fait notamment de la dimension de la matrice utilisée pour le chiffrement offre notamment la possibilité d'avoir un nombre de paramètres plus important, non dépendant de la structure du code, 15 contrairement aux techniques de codage connues de l'art antérieur. La complexité du déchiffrement dépend maintenant linéairement de la longueur du code construit, tandis que dans l'art antérieur celle-ci dépendait directement de la complexité de décodage. Le procédé selon l'invention offre donc une complexité plus faible que celle résultant d'un décodage en longueur. 20 Le procédé selon l'invention peut être implémenté au niveau le plus bas, à savoir le signal porteur de l'information échangée entre la source et la destination puisque l'on a la possibilité d'utiliser une technique existante de décodage souple. On a la possibilité de mettre de l'information dans l'erreur générée pour chiffrer afin d'augmenter le rendement selon le procédé de V. M. Sidel'nikov. "A public-key cryptosystem based on Reed-Muller codes Discrete Mathematics and Applications, 4(3):191-207, ou bien de Nicolas Sendrier dans le cadre d'un Mémoire d'habilitation à diriger des recherches, spécialité informatique, Université Paris 6, mars 2002.) D'autres caractéristiques et avantages de la présente invention apparaîtront mieux à la lecture de la description donnée à titre illustratif et non limitatif qui suit annexée des figures qui représentent : • La figure 1, la génération de la matrice de chiffrement, • La figure 2, la génération de la clé publique et de la clé privée utilisées dans le procédé de chiffrement selon l'invention, • La figure 3 un schéma permettant la réduction de la longueur de la clé publique générée, • La figure 4, un exemple de schéma permettant d'ajouter une erreur, 10 • La figure 5, un exemple de structure de codage de l'information, • La figure 6, un exemple de décodage de l'information, • La figure 7, un exemple de communication entre un émetteur de l'information et un destinataire dans un réseau comportant plusieurs noeuds. 15 Afin de mieux faire comprendre le principe mis en oeuvre dans le procédé de chiffrement selon l'invention, l'exemple sera donné, à titre illustratif et nulle-ment limitatif dans le cadre d'un réseau comportant plusieurs noeuds, dont un noeud émetteur A de l'information chiffrée, un noeud destinataire B ou récep- 20 teur de cette information et plusieurs noeuds intermédiaires Ni, comme il est représenté sur la figure 7. Le code utilisé pour cet exemple, sera le code de Reed-Muller. Toutefois, sans sortir du cadre de l'invention, les étapes décrites ci-après peuvent être appliquées à tout code habituellement utilisé pour le chiffrement de données. 25 Chacun des noeuds est équipé d'un dispositif d'émission réception connu de l'Homme du métier et qui ne sera donc pas détaillé dans la présente description. Chaque noeud comporte aussi un dispositif permettant d'exécuter les différences étapes du procédé selon l'invention, tel qu'un processeur adapté à chiffrer l'information à émettre et à déchiffrer une information chiffrée reçue 30 par un noeud et l'adresse du noeud destinataire de l'information. Un noeud est notamment pourvu d'un générateur aléatoire permettant de générer les matrices inversibles et aléatoires utilisées dans les étapes du procédé. La figure 1 représente la matrice de génération NG utilisée pour le codage ou 5 chiffrement de l'information à transmettre. Soit C un code linéaire q-aire t-correcteur de longueur n, de dimension k, CWq(n, t) l'ensemble des mots de F"q de poids de Hamming t. (Cryptosystèmes à clé publique basés sur les codes correcteurs d'erreurs de Nicolas Sendrier dans le cadre d'un Mémoire d'habilitation à diriger des recherches, io spécialité informatique, Université Paris 6, mars 2002.) G est une matrice génératrice de clé publique, x appartenant à F"q le chiffre-ment est défini de la manière suivante : y=xG+e ; wH(e)=t y est un vecteur, e correspond à une erreur de poids t qui sera choisie au 15 moment du chiffrement, w correspond au poids de Hamming, l'indice H au mot Hamming et t à l'erreur. La matrice de génération de code selon l'invention désignée NG est une matrice comprenant u lignes et u colonnes. Un élément de la matrice est constitué d'un bloc G correspondant à la matrice initiale de génération de clé publi- 20 que. NG comprend donc u blocs G selon une ligne de la matrice et aussi u blocs G selon une colonne de la matrice. La matrice du code G est une concaténation et un produit de codes connus de Reed-Muller, par exemple. Comme RM(r,m) a une dimension = k = F(;_o i=r) binom(i,m) (avec binom(i,m) = m !/(i !(m-i) !) et une longueur N = 2m, la clef publique sera de 25 dimension (u*k)*(u*N). Pour le déchiffrement, il faut faire u décodages di alors que les procédés connus de l'art antérieur n'en faisaient qu'un: (d_1,d_2,...,d_u). L'intérêt de cette nouvelle technique réside dans les performances obtenues 30 et dans le choix des paramètres. En effet comme cela le système selon l'invention est davantage paramétrable puisqu'il existe un grand choix de pa- ramètres tandis qu'avec les procédés selon l'art antérieur, ces choix sont imposés par la structure du code. Par exemple, pour les codes de Goppa: longueur N = 2m, dimension k = 2m -m-t, la complexité de l'algorithme de dé-codage dépend quadratiquement de la longueur du code, donc la complexité pour effectuer un décodage est plus faible que d'effectuer un décodage en longueur 2(m+1og_2(u)) A partir de cette nouvelle matrice NG, le procédé construit des clés publiques et des clés privées qui vont être utilisées lors de la transmission du message, io pour chiffrer et déchiffrer les messages à transmettre. La construction de ces clés est illustrée à la figure 2. La clé publique PUK permettant de coder les informations transmises est construite en utilisant une matrice inversible aléatoire RI, la nouvelle matrice NG et une matrice de permutation aléatoire RP. 15 La multiplication de RI avec NG est une multiplication par bloc. La multiplication à gauche du code concaténé par une matrice inversible est une multiplication par bloc permettant d'obtenir une matrice de rang uk. On a le schéma suivant : RI (multiplication matricielle par bloc) NG (multiplication classique matricielle) 20 RP = clé publique PUK utilisé dans le procédé pour déchiffrer l'information reçue par un noeud. La clé privée PRK utilisée pour coder l'information à transmettre au niveau d'un noeud dans le procédé est composée de RI et de RP. Dim(RI) = u2 •(F~;=o _,;_~~ Binomial(i,m))2 ; où Binomial(i, m) est une fonction 25 définie de la manière suivante (m!/(i !(m-i) !)) avec m le nombre de variables pour le code de Reed-muller, r l'ordre du code de Reed-Muller RM(r,m). Dim(RP) = u2 .(2m)2 ; Dim(NG) = Dim(PUK) = (u E(;=o ; r) Binomial(i,m)).(u2m). Tout autre type de code peut être utilisé. 30 Selon une variante de réalisation, le procédé comporte une étape illustrée à la figure 3 permettant de réduire la longueur de la clé publique générée en figure 2. Elle consiste à éliminer certaines colonnes de la matrice. Le nombre de co- lonnes effacées est déterminé, par exemple, en fonction de l'algorithme de décodage utilisé à la réception de l'information transmise. Par exemple, pour un algorithme de décodage tolérant t erreurs maximum, on a t = a erreurs construites + 2(effacements E) de colonnes. La valeur du nombre d'effacements de colonnes e est déterminée à partir de to t et de la sécurité de la transmission souhaitée. Il est ainsi possible d'envisager un même nombre d'effacements pour tous les blocs de la matrice NG. Selon un mode de réalisation, le procédé peut ajouter une erreur selon un 15 schéma représenté à la figure 4. Pour cela, le procédé évalue de façon dynamique (selon un algorithme connu de l'Homme du métier) la capacité du canal (décodage adaptatif), puis en fonction de la qualité du canal, le procédé additionne des erreurs aléatoires de poids fixé afin de fixer la sécurité, d'un point de vue de la reconstruc- 20 tion de l'information. Sur la figure 4, l'exemple est donné dans le cas d'un code de Reed-Muller. Toutes les opérations sont matricielles, la complexité est directement proportionnelle à la quantité u2 .(2m-E)(E(;_o_,;=r) Binomial(i,m)). 25 La figure 5 représente un exemple de codage ou chiffrement de l'information à transmettre en utilisant la clé générée en figure 1. Le message est codé en utilisant la clé publique PUK, puis on ajoute une erreur aléatoire de poids fixé, selon le schéma de la figure 4, par exemple. 30 Pour optimiser la sécurité de la transmission des informations, le procédé ajoute, par exemple, un trafic supplémentaire non utile ou en anglo-saxon dummy trafic avant de chiffrer l'information. Un noeud du réseau génère du flux trafic en fonction de la place dans la bande passante. Selon un mode de réalisation, une partie de l'information non codée, par exemple, peut être mise dans l'erreur ajoutée comme décrit dans : Cryptosystèmes à clé publique basés sur les codes correcteurs d'erreurs , Nicolas Sendrier, Mémoire d'habilitation à diriger des recherches, spécialité to informatique. Université Paris 6, mars 2002. Cette technique figure aussi dans le document de V. M. Sidel'nikov, A public-key cryptosystem based on Reed-Muller codes , Discrete Mathematics and Applications, 4(3) :191-207. 15 La figure 6 représente un schéma de décodage de l'information chiffrée selon l'invention. Le message codé est décodé dans un premier temps par la clé privée en utilisant la matrice inverse de RP, on a u messages m, puis le procédé utilise u fois l'algorithme de décodage, 20 pour tous les messages m[i] où i est un indice variant de 1 à u (u étant la taille de la matrice), décoder (m[i]). Pour les positions effacées, le procédé exécute les étapes suivantes : Si I est une position effacée, faire M[i]=0 sinon, faire M[i] = (-1 )Ta'''; t := t+1; avec Tab[t] qui correspond au vecteur y 25 défini précédemment, t est par exemple la position d'un bit dans un message à chiffrer. De manière plus générale, t correspond à la position d'une composante du vecteur y t=t+1 ; la boucle est exécutée pour i compris dans [0 u2m-1] où m est le 30 paramètre du code de Reed-Muller, 2m est la longueur du code de Reed-Mulier. Le message obtenu est isomorphe IM de longueur (en bits) : u.(E(;_o_,i=r) Binomial(i,m)). Le procédé applique ensuite la clé privée RI, en utilisant sa matrice inverse (RI)-' pour obtenir le message final décodé. Pour le code de Reed Muller d'ordre 2 : RM(2,m), il est bien connu que les erreurs de poids W sont corrigibles avec une probabilité élevée si W Le procédé selon l'invention fait appel à des techniques connues de l'Homme du métier pour transmettre les clés publiques et privées générées. 20 La figure 7 schématise un exemple de mise en oeuvre du procédé selon l'invention dans le cas de deux utilisateurs dans un réseau Alice and Bob souhaitant communiquer, où le réseau comprend plusieurs noeuds intermédiaires. Alice A veut transmettre un message m à Bob B. Alice a besoin de 25 trouver des chemins différents pour transmettre l'information, elle code le message en utilisant la clé publique PUK générée selon le principe décrit ci-avant en relation aux figures 2 et 3. Elle code aussi l'adresse du noeud de la destination finale B. Elle transmet ensuite le message codé. Chaque noeud qui appartient au chemin entre la source A et la destination B 30 doit déchiffrer l'adresse de B avec sa clé privée PRK et chiffrer l'adresse 25 i0 avec la clé publique du noeud suivant, ensuite l'information peut être transmise à ce noeud suivant. Lorsque Bob reçoit un message, il décode avec sa clé privée l'information de contrôle et l'adresse du noeud, lorsqu'il recevra tous les paquets du message unitaire, m, il le décodera en mettant en oeuvre un algorithme connu de l'Homme du métier, par exemple, celui décrit dans le document de I. Dumer, G. Kabatiansky et C. Tavernier, "List decoding of Reed-Muller codes up to the Johnson bound with almost linear complexity", in Proc.ISIT 2006, Seattle, USA. to Cet algorithme assurera un décodage déterministe. L'Homme du métier pourra également utiliser un algorithme probabiliste qui corrige davantage d'erreurs, tel que celui décrit dans le document I. Dumer, "Recursive decoding and its performance for low-rate Reed-Muller codes", IEEE Trans. lnform. Theory, vol. 50, pp. 811-823, 2004. 15 Sans sortir du cadre de l'invention, le procédé selon l'invention peut être utilisé dans tout système de transmission sans fil qui demande un niveau de sécurité dans la transmission. Tout système de communication demandant des contraintes de sécurité élevées peut l'implémenter. 20 Tout système demandant la sécurisation d'information peut mettre en oeuvre le procédé selon l'invention. Le procédé de codage d'information selon l'invention est particulièrement rapide. Il peut être utilisé dans le domaine bancaire pour transmettre des informations ou pour échanger des informations que l'on souhaite protéger entre plusieurs utilisateurs dans un réseau. REVENDICATIONS 1 û Procédé de codage d'une information circulant dans un réseau compre-nant au moins un noeud émetteur de l'information, un noeud destinataire, utilisant un système de chiffrement à clé publique, caractérisé en ce qu'il comporte au moins les étapes suivantes : • générer une clé publique en utilisant une matrice de génération de clé publique NG constituée de u colonnes et u lignes, un élément d'une io colonne ou d'une ligne étant un bloc formé par la matrice G de génération de code, et en exécutant l'opération suivante : soit RI une matrice inversible aléatoire constituant une clé privée et RP une matrice obtenue par permutation aléatoire constituant une clé privée, la clé publique est donnée par la matrice PUK = RI(multiplication matri- 15 cielle par bloc) NG(multiplication matricielle)RP • utiliser la clé privée et la clé publique obtenue pour coder et décoder les informations transmises dans le réseau. 2 û Procédé selon la revendication 1, caractérisé en ce qu'il comporte une 20 étape de réduction de la taille de la matrice NG de génération de la clé publi- que en éliminant certaines colonnes de la matrice. 3 û Procédé selon la revendication 2, caractérisé en ce que le nombre de colonnes effacées dans la matrice est le même dans tous les blocs consti- 25 tuant la matrice NG et en ce que le nombre de colonnes à effacer est déterminé à partir de l'algorithme de décodage utilisé à la réception de l'information. 4 û Procédé selon la revendication 1, caractérisé en ce que l'information cir-30 culant dans un canal de transmission évalue la capacité du canal de trans- mission, puis en fonction de la qualité de ce canal, on ajoute une erreur aléatoire de poids fixé. û Procédé de codage selon la revendication 4, caractérisé en ce qu'une 5 partie de l'information à chiffrer est incorporée dans l'erreur ajoutée avant l'étape de codage. 6 û Procédé selon la revendication 1, caractérisé en ce que l'on utilise un code de Reed-Muller. Io 7 û Procédé selon l'une des revendications précédentes, caractérisé en ce qu'il comporte une étape de décodage de l'information codée mettant en oeuvre les étapes suivantes : Le message codé est décodé dans un premier temps par la clé privée en 15 utilisant la matrice inverse de RP, puis on utilise u fois l'algorithme de décodage pour les u messages m, pour tous les messages m[i] où i est un indice variant de 1 à u, décoder (m[7)• Pour les positions effacées, exécuter les étapes suivantes : 20 Si i est une position effacée, faire M[i]=0 sinon, faire M[i] = t:=t+1; t=t+1 ; la boucle est exécutée pour i compris dans l'intervalle [O u2m-1] où m est le paramètre du code de Reed-Muller, 2m est la longueur du code de Reed-Muller, et 25 on applique ensuite la clé privée RI, en utilisant sa matrice inverse (RI)-1 pour obtenir le message final décodé.