Brevet FR3079989A1 — publié le 20191011

I La présente invention concerne la gestion de données dans des systèmes informatiques, notamment leur stockage et leur transmission, et plus particulièrement des procédés, des dispositifs et des programmes d'ordinateur pour le chiffrement et le déchiffrement de données pour leur transmission et/ou leur stockage. Le chiffrement de données est utilisé dans de très nombreuses situations pour rendre ces données inintelligibles afin d'en assurer la confidentialité de telle sorte que seul le destinataire puisse, après déchiffrement, y avoir accès en « clair ». Le chiffrement est typiquement utilisé à des fins commerciales et pour la protection de données personnelles. Le chiffrement se fait typiquement à l'aide d'une clé, appelée clé de chiffrement. De même, le déchiffrement se fait généralement à l'aide d'une clé, appelée clé de déchiffrement. Lorsque la clé de déchiffrement est la même que celle de chiffrement, le chiffrement est dit symétrique ou chiffrement à clé secrète. A l'inverse, lorsque la clé de déchiffrement est différente de celle de chiffrement, le chiffrement est dit asymétrique ou chiffrement à clé publique. La figure 1, comprenant les figures la et 1 b, illustre le chiffrement symétrique et le chiffrement asymétrique, respectivement. Comme illustré sur la figure la, le chiffrement symétrique nécessite la transmission d'une clé secrète pour permettre le déchiffrement de données 25 préalablement chiffrées avec cette même clé. Plus précisément, une clé secrète notée k est générée (étape 100) pour chiffrer des données 105 (étape 110). Les données chiffrées 115 sont par exemple transmises à un système informatique distant par un premier canal de communication référencé 120 tandis que la clé secrète est transmise à ce 30 système informatique distant par un second canal de communication référencé 125. Ce second canal de communication est sécurisé. Les données chiffrées reçues, référencées 115', peuvent alors être décodées à l'aide de la clé secrète 2 k' également reçue (étape 130) pour obtenir des données référencées 105' correspondant aux données initiales. Ce procédé de chiffrement/déchiffrement permet ainsi à un premier système informatique 135 de transmettre des données de façon sécurisée à un 5 second système informatique 140, via un canal de communication 120 non sécurisé, par exemple Internet. Il est observé ici que le chiffrement symétrique est généralement facile à mettre en oeuvre et nécessite des ressources moindres que celles nécessaires à la mise en oeuvre d'un chiffrement asymétrique. Cependant, la 10 transmission de la clé secrète présente une vulnérabilité non négligeable du procédé. Comme illustré sur la figure lb, le chiffrement asymétrique nécessite la génération d'une clé de chiffrement, appelée clé publique, et d'une clé de déchiffrement appelée clé privée. Ainsi, pour qu'un premier système 15 informatique 150 puisse recevoir des données de façon sécurisée d'un second système informatique 155, il doit tout d'abord générer deux clés correspondantes (étape 160), une clé publique kp et une clé privée ks. La clé publique est transmise au second système informatique, via un canal de communication 165, qui peut l'utiliser pour chiffrer des données 170 20 (étape 175). Les données chiffrées 180 sont alors transmises au premier système informatique via le canal de communication 165 ou un autre (non représenté). Le premier système informatique 150 utilise alors la clé privée ks (correspondant à la clé publique kp utilisée par le second système informatique 155) pour déchiffrer les données chiffrées reçues référencées 180' (étape 185) afin d'obtenir des données référencées 170' correspondant aux données initiales. A nouveau, ce procédé de chiffrement/déchiffrement permet à un premier système informatique 150 de transmettre des données de façon 30 sécurisée à un second système informatique 155. 3 Cependant, si ce procédé de chiffrement asymétrique offre généralement une sécurité supérieure à celle d'un chiffrement symétrique, sa mise en oeuvre nécessite plus de ressources. Des procédés similaires peuvent être utilisés pour stocker des 5 données de façon sécurisée. Alors que les procédés décrits précédemment sont couramment utilisés, il existe un besoin constant d'amélioration, en particulier pour améliorer la sécurité de données transmises ou stockées. L'invention permet de résoudre au moins un des problèmes exposés 10 précédemment. L'invention a ainsi pour objet un procédé de chiffrement ou déchiffrement d'un flux de données, le procédé comprenant les étapes suivantes, - génération d'une liste de nombres pseudo-aléatoires ; 15 - création d'un flux de clés de chiffrement à partir de la liste de nombres pseudo-aléatoires générée ; - pour chaque donnée du flux de données, o sélection d'une clé de chiffrement dans le flux de clés créé selon un mécanisme de sélection prédéterminé et 20 o chiffrement ou déchiffrement de la donnée considérée à l'aide de la clé de chiffrement sélectionnée. Le procédé selon l'invention permet ainsi d'améliorer la protection des données du flux de données tout en limitant les ressources nécessaires au chiffrement et/ou au déchiffrement de ces données. 25 Selon des modes de réalisation du procédé de chiffrement, le procédé comprend en outre, pour chaque donnée du flux de données, les étapes suivantes, - création d'un ensemble comprenant la donnée considérée chiffrée ; - sélection d'une seconde clé de chiffrement dans le flux de clés créé 30 selon un second mécanisme de sélection prédéterminé, la sélection d'une clé de chiffrement dans le flux de clés créé selon un mécanisme de sélection prédéterminé consistant en la sélection d'une première clé de chiffrement dans 4 le flux de clés créé selon un premier mécanisme de sélection prédéterminé, les premier et second mécanismes de sélection étant distincts ; et - chiffrement de l'ensemble créé à l'aide de la seconde clé de chiffrement sélectionnée. 5 Selon des modes de réalisation du procédé de déchiffrement, le procédé comprend en outre, pour chaque donnée du flux de données, les étapes préalables suivantes, - sélection d'une première clé de chiffrement dans le flux de clés créé selon un premier mécanisme de sélection prédéterminé, la sélection d'une clé 10 de chiffrement dans le flux de clés créé selon un mécanisme de sélection prédéterminé consistant en la sélection d'une seconde clé de chiffrement dans le flux de clés créé selon un second mécanisme de sélection prédéterminé, les premier et second mécanismes de sélection étant distincts ; et - déchiffrement d'un ensemble comprenant la donnée considérée chiffrée 15 à l'aide de la première clé de chiffrement sélectionnée. L'invention a également pour objet un procédé de transmission d'un flux de données chiffrées, le procédé comprenant les étapes préalables suivantes, - génération d'une liste de nombres pseudo-aléatoires ; 20 - création d'un flux de clés de chiffrement à partir de la liste de nombres pseudo-aléatoires générée ; pour chaque donnée chiffrée du flux de données chiffrées, o sélection d'une première clé de chiffrement dans le flux de clés créé selon un premier mécanisme de sélection prédéterminé ; 25 o déchiffrement d'un ensemble comprenant la donnée considérée chiffrée à l'aide de la première clé de chiffrement sélectionnée ; o sélection d'une seconde clé de chiffrement dans le flux de clés créé selon un second mécanisme de sélection prédéterminé ; o chiffrement d'un ensemble comprenant la donnée considérée chiffrée à l'aide de la seconde clé de chiffrement sélectionnée. 5 Le procédé selon l'invention permet ainsi d'améliorer la protection des données transmises tout en limitant les ressources nécessaires au chiffrement et/ou au déchiffrement de ces données. Selon des modes de réalisation, le procédé comprend en outre une 5 étape d'authentification suite à l'étape de déchiffrement d'un ensemble, l'étape d'authentification conditionnant l'exécution d'au moins une étape suivante. Selon des modes de réalisation, le procédé comprend en outre une étape de sélection de nombres pseudo-aléatoires dans la liste de nombres pseudo-aléatoires générée pour créer le flux de clés de chiffrement. 10 Selon des modes de réalisation, le procédé comprend en outre une étape de décomposition de nombres pseudo-aléatoires de la liste de nombres pseudo-aléatoires générée pour créer le flux de clés de chiffrement. Selon des modes de réalisation, un mécanisme de sélection utilise une valeur d'indice d'une clé précédemment sélectionnée. 15 Selon des modes de réalisation, un mécanisme de sélection utilise une valeur d'une clé précédemment sélectionnée. L'invention a également pour objet un dispositif de chiffrement ou déchiffrement d'un flux de données comprenant une pluralité de générateurs de nombres pseudo-aléatoires, un module de sélection de nombres pseudo- 20 aléatoires et un module de chiffrement ou déchiffrement, le dispositif étant caractérisé en ce que le module de sélection est connecté à chaque générateur de nombres pseudo-aléatoires de la pluralité de générateurs de nombres pseudo-aléatoires, un générateur de nombres pseudo-aléatoires sélectionnant des nombres pseudo-aléatoires générés par au moins un autre générateur de 25 nombres pseudo-aléatoires pour générer une liste de clés de chiffrement, des clés de chiffrement distinctes de la liste de clés de chiffrement générée étant utilisées pour chiffrer ou déchiffrer des données du flux de données. Le dispositif selon l'invention permet ainsi d'améliorer la protection des données du flux de données tout en limitant les ressources nécessaires au 30 chiffrement et/ou au déchiffrement de ces données. Selon des modes de réalisation, au moins un générateur de nombres pseudo-aléatoires de la pluralité de générateurs de nombres pseudo-aléatoires 6 est un générateur chaotique de nombres pseudo-aléatoires, hyper-chaotique, pseudo-chaotique ou de type chaotique. Selon des modes de réalisation, le dispositif comprend en outre un module de sélection de clés de chiffrement. 5 Selon des modes de réalisation, le dispositif comprend en outre un module de décomposition de nombres pseudo-aléatoires pour générer des clés de chiffrement dont la longueur est égale à la longueur des données à chiffrer ou à déchiffrer. Selon des modes de réalisation, au moins un générateur de nombres 10 pseudo-aléatoires de la pluralité de générateurs de nombres pseudo-aléatoires est implémenté de façon logicielle. L'invention a également pour objet des programmes d'ordinateur comprenant des instructions adaptées à la mise en oeuvre d'au moins certaines des étapes du procédé décrit précédemment lorsque lesdits programmes 15 d'ordinateur sont exécutés sur un microcontrôleur. Les avantages procurés par ces programmes d'ordinateur sont similaires à ceux évoqués précédemment au regard du procédé. D'autres avantages, buts et caractéristiques de la présente invention ressortent de la description détaillée qui suit, faite à titre d'exemple non limitatif, 20 au regard des dessins annexés dans lesquels : - la figure 1, comprenant les figures la et 1 b, illustre le chiffrement symétrique et le chiffrement asymétrique, respectivement ; - la figure 2 illustre schématiquement un système de chiffrement et déchiffrement selon certains modes de réalisation de l'invention ; 25 - la figure 3, comprenant les figures 3a à 3e, illustre des exemples de communications sécurisées entre deux éléments, ici entre deux dispositifs spécifiques, entre deux clients, entre un client et un dispositif spécifique et entre deux clients via un ou plusieurs dispositifs spécifiques ; - la figure 4, comprenant les figures 4a à 4d, illustre des exemples 30 de modules de chiffrement et de déchiffrement utilisant des générateurs chaotiques de nombres pseudo-aléatoires, hyper-chaotiques, pseudochaotiques ou de type chaotique ; 7 - la figure 5 illustre une variante de générateur de clés pouvant être utilisé dans des modules de chiffrement et de déchiffrement ; - la figure 6 illustre un exemple de sélection de clés dans une liste de clés possibles pour former un flux de clés à utiliser ; 5 - la figure 7 illustre schématiquement des étapes mises en oeuvre dans un client léger ou un client lourd pour chiffrer des données à transmettre à un dispositif distant via un dispositif spécifique ; - la figure 8 illustre schématiquement des étapes mises en oeuvre dans un dispositif spécifique pour recevoir des données chiffrées d'un client 10 léger ou un client lourd, directement ou via un dispositif spécifique, et les retransmettre à un client léger ou un client lourd, directement ou via un autre dispositif spécifique ; - la figure 9 illustre schématiquement des étapes mises en oeuvre dans un client léger ou un client lourd pour déchiffrer des données reçues ; 15 - la figure 10 illustre schématiquement un exemple de structure d'un paquet de données utilisé pour transmettre des données de façon sécurisée, conformément à certains modes de réalisation ; - la figure 11, comprenant les figures 11a et 11b, illustre des exemples de mécanismes de chiffrement/déchiffrement pouvant être mis en 20 oeuvre pour transférer des données de façon sécurisée ; - la figure 12, comprenant les figures 12a et 12b, illustre un exemple de mécanisme pour synchroniser l'utilisation de clés de chiffrement et de déchiffrement entre un émetteur et un récepteur ; et - la figure 13 illustre un exemple d'architecture d'un dispositif 25 spécifique ou d'un dispositif mettant en oeuvre un client léger ou un client lourd. De façon générale, l'invention a pour objet le chiffrement et le déchiffrement à la volée, par flot, de données, notamment à des fins de transmission et/ou de stockage. Une clé de chiffrement/déchiffrement distincte est de préférence utilisée pour chaque donnée élémentaire, par exemple pour 30 chaque mot de n bits. Selon certains modes de réalisation, le chiffrement et le déchiffrement sont basés sur un schéma symétrique sans transmission de clés, 8 les clés étant générées de façon indépendante pour le chiffrement et le déchiffrement. Les générateurs de clés de chiffrement/déchiffrement sont alors identiques pour le chiffrement et le déchiffrement de telle sorte que des clés ayant le même indice dans les flux de clés générés soient identiques. 5 Toujours selon certains modes de réalisation particuliers, les clés de chiffrement/déchiffrement sont générées par des générateurs chaotiques de nombres pseudo-aléatoires, hyper-chaotiques, pseudo-chaotiques ou de type chaotique. La figure 2 illustre schématiquement un système de chiffrement et 10 déchiffrement selon certains modes de réalisation de l'invention. Comme illustré, le système comprend ici un module de chiffrement 200 et un module de déchiffrement 205 permettant de chiffrer des données 210, les transmettre via un réseau de communication 215 non sécurisé et les déchiffrer après réception. Les modules 200 et 205 comprennent chacun un 15 générateur de clés Ki et Ki, référencés 220 et 220', respectivement. Ces générateurs sont ici similaires de telle sorte que la clé Ki générée par le générateur 220 (i.e. la en' clé du flux de clés généré par le générateur 220) est égale à la clé Ki générée par le générateur 220' (i.e. la en' clé du flux de clés généré par le générateur 220'). 20 Les données à transmettre sont ici décomposées en données élémentaires ordonnées. Chaque donnée élémentaire est chiffrée par le module de chiffrement 200, selon l'ordre des données élémentaires, à l'aide d'une fonction de chiffrement 225, de préférence avec une clé de chiffrement particulière. 25 Ainsi, à titre d'exemple, la donnée di, référencée 210-i, est chiffrée à l'aide de la clé de chiffrement Ki, la donnée d1+1 à l'aide de la clé K1+1 et ainsi de suite. Les données chiffrées 230, en particulier la donnée chiffrée 230-i correspondant à la donnée 210-i, sont transmises au module de déchiffrement 205 via le réseau de communication 215. 30 Ces données chiffrées sont ici transmises de façon ordonnée ou avec une indication d'ordre telle qu'un numéro de paquet. 9 Après avoir été réordonnées, le cas échéant, les données chiffrées 230' reçues par le module de déchiffrement 205, similaires aux données chiffrées 230 transmises par le module de chiffrement 200 aux erreurs de transmission près, sont déchiffrées dans le module de déchiffrement 205. 5 Chaque donnée est déchiffrée avec une clé correspondant à celle utilisée pour le chiffrement, de façon symétrique, à l'aide d'une fonction de déchiffrement 235. Ainsi, toujours à titre d'exemple, la donnée d'i, référencée 230'-i, est déchiffrée à l'aide de la clé de déchiffrement Ki, la donnée d'i+, à l'aide de la clé K'i+1 et ainsi de suite. Les données déchiffrées référencées 210' sont ainsi 10 similaires aux données non chiffrées 210, en particulier la donnée déchiffrée 210'-i est similaire à la donnée non chiffrée 210-i. Comme illustré avec la flèche 240, une synchronisation est ici nécessaire entre le module de chiffrement 200 et le module de déchiffrement 205 pour que la clé de déchiffrement utilisée pour déchiffrer une donnée 15 corresponde à la clé de chiffrement utilisée pour chiffrer cette donnée. Selon un mode de réalisation particulier, les données et les clés sont ordonnées et les clés sont utilisées de façon systématique, l'une après l'autre pour chiffrer et déchiffrer les données. En cas d'erreur de transmission, une donnée manquante est (re)demandée pour permettre la poursuite du 20 déchiffrement. Selon un autre mode de réalisation particulier, un indice de clé est associé à chaque donnée chiffrée de telle sorte que le module de déchiffrement utilisé puisse retrouver la clé permettant de déchiffrer la donnée correspondante. 25 Dans un autre mode de réalisation encore, une ou plusieurs données d'initialisation ainsi qu'un mécanisme de calcul d'indices, pseudo-aléatoire ou non, sont connus du module de chiffrement et du module de déchiffrement pour permettre la détermination d'un indice de clé à chaque donnée à chiffrer ou à déchiffrer. Un indice de clé est, par exemple, la position de la clé dans une liste 30 de clés générées. La figure 3, comprenant les figures 3a à 3e, illustre des exemples de communications sécurisées entre deux éléments, ici entre deux dispositifs 10 spécifiques (génériquement référencés 300), entre deux clients (génériquement référencés 305), entre un client et un dispositif spécifique et entre deux clients via un ou plusieurs dispositifs spécifiques. Les dispositifs spécifiques sont par exemple des serveurs de relais et 5 sont notamment pourvus d'éléments matériels spécifiques, typiquement un ou plusieurs générateurs de nombres pseudo-aléatoires, par exemple des générateurs chaotiques de nombres pseudo-aléatoires, hyper-chaotiques, pseudo-chaotiques ou de type chaotique. Les clients sont typiquement des clients dits légers, par exemple des 10 applications mises en oeuvre dans des téléphones intelligents (smartphones), sans utiliser d'élément matériel spécifique. Des clients dits lourds sont des applications reliées de façon sécurisée à des dispositifs spécifiques, utilisant des éléments matériels spécifiques. Plus précisément, la figure 3a illustre un exemple de communications 15 sécurisées entre deux dispositifs spécifiques tandis que la figure 3b illustre un exemple de communications sécurisées entre deux clients et que la figure 3c illustre un exemple de communications sécurisées entre un client et un dispositif spécifique. Les figures 3d et 3e illustrent des exemples de communications 20 sécurisées entre deux clients via un et deux dispositifs spécifiques, respectivement. Dans une telle configuration, le système peut être configuré de telle sorte que le ou les dispositifs spécifiques ne puissent déchiffrer les données échangées entre les clients. Ainsi, par exemple, concernant le schéma illustré sur la figure 3d, le 25 client 305-1 peut chiffrer des données à l'aide d'une première clé Kx; connue des clients 305-1 et 305-2 mais inconnue du dispositif spécifique 300-1 puis chiffrer ces données à l'aide d'une clé KA; connue du client 305-1 et du dispositif spécifique 300-1. Lorsque ces données sont reçues par le dispositif spécifique 300-1, elles sont déchiffrées à l'aide de la clé KA; (sans être compréhensibles 30 car toujours chiffrées à l'aide de la clé Kx) puis chiffrées à l'aide d'une clé KA? connue du dispositif spécifique 300-1 et du client 305-2. Lorsque ces données 11 sont reçues par le client 305-2, elles sont déchiffrées à l'aide de la clé Km puis à l'aide de la clé K)G pour être compréhensibles. Selon d'autres configurations encore (non représentées), une communication sécurisée peut être établie entre un client et un dispositif 5 spécifique via un ou plusieurs autres dispositifs spécifiques. La figure 4, comprenant les figures 4a à 4d, illustre des exemples de modules de chiffrement et de déchiffrement utilisant des générateurs chaotiques de nombres pseudo-aléatoires, hyper-chaotiques, pseudochaotiques ou de type chaotique. 10 La figure 4a illustre par exemple un module de chiffrement d'un dispositif spécifique tandis que la figure 4b illustre un module de déchiffrement correspondant d'un dispositif spécifique. Comme illustré sur la figure 4a, le générateur de clés 220 comprend un ensemble de générateurs chaotiques de nombres pseudo-aléatoires, hyper- 15 chaotiques, pseudo-chaotiques ou de type chaotique, génériquement référencés G. Plus précisément, cet ensemble comprend n générateurs (G1 à Gn) de nombres pseudo-aléatoires utilisés comme générateurs de clés. Les sorties de ces générateurs sont reliées à un module de sélection 400. Le générateur de clés 220 comprend en outre un générateur de 20 nombres pseudo-aléatoires Gs utilisé pour sélectionner une sortie d'un des générateurs de nombres pseudo-aléatoires G1 à Gn à l'aide du module de sélection 400. Le générateur de nombres pseudo-aléatoires Gs est par exemple un générateur chaotique de nombres pseudo-aléatoires, hyper-chaotique, pseudo25 chaotique ou de type chaotique dont une entrée est définie par un paramètre d'initialisation. Selon des modes de réalisation particuliers, un test est effectué dans le module de sélection 400 pour interdire la sélection d'un nombre aléatoire dont la valeur est proche de celle d'un nombre aléatoire préalablement 30 sélectionné. En d'autres termes, le module de sélection 400 peut comparer la différence entre un nombre aléatoire préalablement sélectionné et un nombre aléatoire potentiellement sélectionné à un seuil prédéterminé afin de vérifier 12 que deux nombres aléatoires successifs parmi les nombres aléatoires sélectionnés ont des valeurs dont la différence est supérieure à un seuil prédéterminé. Comme illustré, les générateurs de nombres pseudo-aléatoires G/ à 5 Gn sont ici connectés en cascade de telle sorte qu'une ou plusieurs entrées d'un générateur de nombres pseudo-aléatoires soient reliées à une ou plusieurs sorties d'un autre générateur de nombres pseudo-aléatoires, à l'exception d'un générateur de nombres pseudo-aléatoires dont l'entrée ou les entrées sont définies par un ou plusieurs paramètres d'initialisation (ici le générateur de 10 nombres pseudo-aléatoires Go). Toujours selon un mode de réalisation particulier, la sortie du module de sélection 400 est reliée à l'entrée d'un module de décomposition 405 permettant de décomposer les nombres pseudo-aléatoires générés par les générateurs de nombres pseudo-aléatoires G/ à Gr, en clés dont la longueur 15 correspond à celle des données à chiffrer. Cette longueur peut être fixe ou variable. L'utilisation de clés ayant la même longueur que les données à chiffrer permet notamment une optimisation des ressources nécessaires au chiffrement. A titre d'illustration, si les nombres pseudo-aléatoires générés par les 20 générateurs de nombres pseudo-aléatoires G1 à Gn sont codés sur 256 bits, chaque nombre pseudo-aléatoire peut être décomposé en une clé de 256 bits, en deux clés de 128 bits, en quatre clés de 64 bits, en 8 clés de 32 bits, en 16 clés de 16 bits ou en 32 clés de 8 bits. D'autres décompositions sont bien entendu possibles. 25 Le générateur de clés 220 produit ainsi un flot ordonné de clés qui sont transmises à un module de chiffrement 225 pour chiffrer des données. Selon un mode de réalisation particulièrement simple, la ième clé du flot de clés est utilisée pour chiffrer la ième donnée du flux de données à chiffrer. Le générateur de clés 220' illustré sur la figure 4b est similaire au 30 générateur de clés 220 illustré sur la figure 4a afin que ces générateurs de clés génèrent des flots de clés identiques. 13 Le générateur de clés 220' comprend donc un ensemble de générateurs chaotiques de nombres pseudo-aléatoires, hyper-chaotiques, pseudo-chaotiques ou de type chaotique, génériquement référencés G'. Cet ensemble comprend n générateurs (G', à G'n) de nombres pseudo-aléatoires 5 utilisés comme générateurs de clés. Les sorties de ces générateurs sont reliées à un module de sélection 450. Le générateur de clés 220' comprend en outre un générateur de nombres pseudo-aléatoires G's utilisé pour sélectionner une sortie d'un des générateurs de nombres pseudo-aléatoires à l'aide du module de sélection 450. 10 A nouveau, le générateur de nombres pseudo-aléatoires G's est par exemple un générateur chaotique de nombres pseudo-aléatoires, hyperchaotique, pseudo-chaotique ou de type chaotique dont une entrée est définie par un paramètre d'initialisation. Les générateurs de nombres aléatoires G', à G'n sont connectés en 15 cascade de telle sorte qu'une ou plusieurs entrées d'un générateur de nombres pseudo-aléatoires soient reliées à une ou plusieurs sorties d'un autre générateur de nombres pseudo-aléatoires, à l'exception d'un générateur de nombres pseudo-aléatoires dont une ou plusieurs entrées sont définies par un ou plusieurs paramètres d'initialisation (ici le générateur de nombres pseudo- 20 aléatoires G'n). Toujours selon un mode de réalisation particulier, la sortie du module de sélection 450 est reliée à l'entrée d'un module de décomposition 455 permettant de décomposer les nombres pseudo-aléatoires générés par les générateurs de nombres pseudo-aléatoires G', à G'n en clés dont la longueur 25 correspond à celle des données à déchiffrer. A nouveau, cette longueur peut être fixe ou variable, l'utilisation de clés ayant la même longueur que les données à chiffrer permettant une optimisation des ressources nécessaires au chiffrement. Le générateur de clés 220' produit ainsi un flot ordonné de clés qui 30 sont transmises à un module de déchiffrement 235 pour déchiffrer des données chiffrées reçues. 14 Selon un mode de réalisation très simple, la ième clé du flot de clés est utilisée pour déchiffrer la ième donnée élémentaire chiffrée d'un flux de données élémentaires chiffrées. Les valeurs d'initialisation et de paramétrage du générateur de clés 5 220' illustré sur la figure 4b sont les mêmes que celles du générateur de clés 220 illustré sur la figure 4a. De telles valeurs peuvent être prédéterminées et mémorisées localement ou déterminées lors de l'établissement d'un lien de communication. Selon un mode de réalisation particulier, le premier générateur de 10 nombres pseudo-aléatoires (G/ et G'1) est un module logiciel. Celui-ci peut être utilisé seul, par exemple lorsqu'une communication sécurisée doit être établie avec un client léger (e.g. entre un client léger et un dispositif spécifique). Dans ce cas, les générateurs de nombres pseudo-aléatoires G2 à Gn, s'ils existent, ne sont pas utilisés. De même, lorsqu'un générateur de clés correspondant au 15 générateur de clés 220 est mis en oeuvre dans un client léger, les générateurs de nombres pseudo-aléatoires G2 à Gn ne sont pas implémentés. En outre, dans ce cas, le générateur de nombres pseudo-aléatoires utilisé pour sélectionner une sortie d'un générateur de nombres pseudo-aléatoires à l'aide d'un module de sélection peut être mis en oeuvre de façon logicielle. Il est 20 également observé ici que lorsque les générateurs de nombres pseudoaléatoires G2 à Gn ne sont pas utilisés, c'est le premier générateur de nombres pseudo-aléatoires (GI) qui est initialisé (pour assurer une correspondance entre les flux de clés générés dans les modules de chiffrement et de déchiffrement). L'utilisation des générateurs de nombres pseudo-aléatoires G2 à Gn 25 peut être prédéfinie (par exemple selon la nature des équipements devant communiquer) ou peut être définie de façon dynamique, par exemple à l'aide d'un indicateur dans les données transmises. La figure 4c illustre un module de chiffrement d'un dispositif spécifique tandis que la figure 4d illustre un module de déchiffrement 30 correspondant d'un client léger. Le générateur de clés 220" illustré sur la figure 4c est similaire au générateur de clés 220 illustré sur la figure 4a cependant, comme illustré, les 15 générateurs de nombres pseudo-aléatoires G2 à Gn ne sont pas utilisés. En outre, c'est le générateur G1 qui est initialisé. Le générateur de clés 220" illustré sur la figure 4d est ici mis en oeuvre dans un client léger. Il ne comprend donc qu'un générateur de nombres 5 pseudo-aléatoires G"1 dont les valeurs sont utilisées pour générer des clés et un générateur de nombres pseudo-aléatoires Gms utilisé pour sélectionner, à l'aide du module de sélection 450', une sortie du générateur de nombres pseudo-aléatoires dont les valeurs sont utilisées pour générer des clés. Ces deux générateurs de nombres pseudo-aléatoires sont ici 10 implémentés de façon logicielle. La figure 5 illustre une variante de générateur de clés pouvant être utilisé dans des modules de chiffrement et de déchiffrement. Selon ce mode de réalisation, les clés générées ne sont pas utilisées de façon systématique et chronologique mais de façon aléatoire. 15 Comme illustré, le générateur de clés 500 comprend notamment un ensemble (G"1 à G"n) de n générateurs chaotiques de nombres pseudoaléatoires (hyper-chaotiques, pseudo-chaotiques ou de type chaotique), un premier module de sélection 505 et un module de décomposition 510 permettant de décomposer les nombres pseudo-aléatoires générés, comme les 20 générateurs de clés 220 et 220' illustrés sur les figures 4a et 4b, respectivement. Le générateur de clés 500 comprend en outre un générateur d'indices 515 et un second module de sélection 520. Le générateur d'indices 515 est notamment relié au module de 25 décomposition 510 afin d'associer un indice, typiquement un numéro d'ordre à chaque clé générée. Selon un mode de réalisation particulièrement simple, la première clé générée est associée à l'indice 1, la seconde à l'indice 2 et ainsi de suite. Le second module de sélection 520 a pour objet de sélectionner la 30 prochaine clé devant être utilisée pour chiffrer ou déchiffrer une donnée élémentaire. Cette sélection est ici basée sur les indices des clés. Selon un mode de réalisation particulier, la première sélection est effectuée selon une 16 variable d'initialisation (prédéterminée ou déterminée lors de l'établissement d'un lien de communication) et une sélection suivante est effectuée en fonction de l'indice de la clé courante et de la clé courante. A titre d'illustration, l'indice de la prochaine clé (indice_c/éi+/) est égal à la somme de l'indice de la clé 5 courante (indice_cléi) avec la valeur de la clé courante (c/éi) : indice_cléi+i = indice_cléi + cléi Les clés sélectionnées sont transmises sous forme de flux de clés pour chiffrer ou déchiffrer les données élémentaires (le même générateur de clés 500 doit être utilisé pour le chiffrement et le déchiffrement, avec les mêmes paramètres d'initialisation). 10 La figure 6 illustre un exemple de sélection de clés dans une liste de clés possibles pour former un flux de clés à utiliser. Selon l'exemple illustré, l'indice d'initialisation (indice_cléi) est égal à 1+3. Ainsi, la première clé (Ki) est la clé ayant l'indice i+3. Pour trouver l'indice de la clé suivante (indice_clé2), l'indice 1+3 est ajouté à la valeur de la clé Ki. Il 15 est supposé ici que le résultat est égal à j+2. La seconde clé (K2) est ainsi la clé ayant l'indice j+2. A nouveau, pour trouver l'indice de la clé suivante (indice_clé3), l'indice j+2 est ajouté à la valeur de la clé K2. Il est supposé ici que le résultat est égal à k+3. La troisième clé (1(3) est ainsi la clé ayant l'indice k+3. A nouveau, pour trouver l'indice de la clé suivante (indice_clé4), l'indice 20 k+3 est ajouté à la valeur de la clé 1(3. Il est supposé ici que le résultat est égal à I. La quatrième clé (K4) est ainsi la clé ayant l'indice I. Le processus se poursuit ainsi tant que des clés sont nécessaires. La figure 7 illustre schématiquement des étapes mises en oeuvre dans un client léger ou un client lourd pour chiffrer des données à transmettre à 25 un dispositif distant via un dispositif spécifique. Comme illustré, une première étape a ici pour objet la réception d'un flux de données à chiffrer (étape 700). Il est observé qu'une étape de décomposition des données peut être nécessaire si les données reçues ne sont pas élémentaires (c'est-à-dire si des données reçues n'ont pas une longueur 30 inférieure ou égale à la taille maximale des clés de chiffrement/déchiffrement). 17 Parallèlement, un flux de clés est généré (étape 705). Le générateur de clés utilisé pour générer ce flux est par exemple le générateur de clés 220 illustré sur la figure 4a ou le générateur de clés 500 illustré sur la figure 5. Il est observé ici que le processus décrit en référence à la figure 7 5 utilise un double chiffrement avec deux jeux de clés distincts. Ces jeux de clés peuvent être issus d'un même flux de clés ou de deux flux différents. Si les deux jeux de clés sont issus du même flux de clés, les mécanismes de sélection de clés sont, de préférence, distincts. Dans une étape suivante, une première donnée du flux de données à 10 chiffrer est sélectionnée pour être chiffrée (étape 710). Parallèlement, une première clé du flux de clés est sélectionnée en utilisant un premier mécanisme de sélection (étape 715). La donnée sélectionnée est alors chiffrée à l'aide de la première clé sélectionnée (étape 720). Un algorithme de chiffrage standard bit à bit peut être 15 utilisé. Il peut s'agir, par exemple, d'une disjonction exclusive (fonction XOR). Selon la taille de la donnée élémentaire chiffrée, celle-ci est assemblée avec une ou plusieurs autres données chiffrées ou traitée seule. Le traitement de la donnée élémentaire chiffrée, seule ou agrégée avec d'autres, consiste tout d'abord à créer un ensemble comprenant la ou les données 20 élémentaires chiffrées ainsi qu'un en-tête (étape 725). Comme décrit en référence à la figure 10, ce dernier peut comprendre des informations relatives au chiffrement/déchiffrement. Dans une étape suivante, une signature de l'ensemble comprenant la ou les données chiffrées ainsi qu'un en-tête est, de préférence, calculée 25 (étape 730). Une telle signature, calculée de façon standard, permet d'effectuer un contrôle d'intégrité et/ou d'authentification lors de la réception de l'ensemble de données et détecter, le cas échéant, une erreur de transmission. La signature calculée et l'ensemble comprenant la ou les données chiffrées ainsi qu'un en-tête sont alors encapsulés dans un paquet de données 30 (étape 735). Dans une étape suivante, une seconde clé du flux de clés est sélectionnée en utilisant un second mécanisme de sélection (étape 740). 18 Le paquet de données préalablement créé est alors chiffré à l'aide de la seconde clé sélectionnée (étape 745) et le paquet chiffré est transmis (étape 750). A nouveau, un algorithme de chiffrage standard peut être utilisé. La transmission du paquet chiffré utilise par exemple un protocole de 5 communication standard. L'algorithme retourne alors aux étapes 710 et 715 pour, le cas échéant, chiffrer et transmettre des données élémentaires du flux de données élémentaires non transmises. A titre d'illustration, le premier et le second mécanismes de sélection 10 de clés peuvent consister en un mécanisme de sélection séquentielle de clés dans un flux de clés à partir d'un indice prédéterminé, comme décrit en référence à la figure 4a, ou un mécanisme plus complexe comme décrit en référence à la figure 5. Ces mécanismes peuvent être identiques ou distincts. Il est observé ici que dans certaines applications, par exemple des 15 applications de téléphonie utilisant un réseau de communication de données, les étapes de chiffrement/déchiffrement des paquets (e.g. les étapes 740 et 745) peuvent être ignorées pour alléger le processus. La figure 8 illustre schématiquement des étapes mises en oeuvre dans un dispositif spécifique pour recevoir des données chiffrées d'un client 20 léger ou un client lourd, directement ou via un dispositif spécifique, et les retransmettre à un client léger ou un client lourd, directement ou via un autre dispositif spécifique. Le processus décrit ici vise le traitement de données reçues, chiffrées selon un double chiffrement, afin de les déchiffrer partiellement et les 25 rechiffrer pour améliorer la sécurité de leur transmission. Comme illustré, une première étape a ici pour objet la réception d'un flux de paquets comprenant des données chiffrées (étape 800). Parallèlement, un flux de clés est généré (étape 705'). Ce flux de clés est le même que celui généré à l'étape 705 dans la figure 7. 30 Dans une étape suivante, un premier paquet du flux de paquets comprenant des données chiffrées est sélectionné pour être partiellement déchiffré (étape 805). 19 Parallèlement, une première clé du flux de clés est sélectionnée en utilisant un premier mécanisme de sélection (étape 810). Ce premier mécanisme de sélection de clés est identique au second mécanisme de sélection de clés décrit en référence à la figure 7 (étape 740). 5 Le paquet sélectionné est alors déchiffré à l'aide de la première clé sélectionnée (étape 815). L'algorithme de déchiffrage correspond à l'algorithme de chiffrage utilisé, décrit en référence à la figure 7 (étape 745). Ce déchiffrement permet l'obtention d'une signature et d'un ensemble comprenant une ou plusieurs données chiffrées ainsi qu'un en-tête. 10 Dans une étape suivante, une signature de l'ensemble comprenant la ou les données chiffrées ainsi qu'un en-tête est, de préférence, calculée (étape 820). La signature calculée est alors comparée avec la signature déchiffrée pour authentifier le paquet sélectionné et vérifier son intégrité (étape 15 825). Si une erreur de transmission est détectée, une nouvelle copie du paquet est demandée au dispositif à l'origine du paquet sélectionné. Dans le cas contraire, si le paquet sélectionné est authentifié et intègre, une seconde clé du flux de clés est sélectionnée en utilisant un second mécanisme de sélection (étape 830). 20 Le paquet de données préalablement partiellement déchiffré est alors chiffré à l'aide de la seconde clé sélectionnée (étape 783) et le paquet chiffré est transmis (étape 840). A nouveau, la transmission du paquet chiffré peut être basée sur un protocole de communication standard. L'algorithme retourne alors aux étapes 805 et 810 pour, le cas 25 échéant, traiter un paquet suivant non traité du flux de paquets de données reçu. A nouveau, le premier et le second mécanismes de sélection de clés peuvent consister en un mécanisme de sélection séquentielle de clés dans un flux de clés à partir d'un indice prédéterminé, comme décrit en référence à la 30 figure 4a, ou un mécanisme plus complexe comme décrit en référence à la figure 5. Ces mécanismes peuvent être identiques ou distincts. 20 La figure 9 illustre schématiquement des étapes mises en oeuvre dans un client léger ou un client lourd pour déchiffrer des données reçues. Comme illustré, une première étape a ici pour objet la réception d'un flux de paquets comprenant des données chiffrées (étape 900). Parallèlement, 5 un flux de clés est généré (étape 705"). Ce flux de clés est le même que celui généré à l'étape 705 dans la figure 7. Dans une étape suivante, un premier paquet du flux de paquets comprenant des données chiffrées est sélectionné pour être déchiffré (étape 905). 10 Parallèlement, une première clé du flux de clés est sélectionnée en utilisant un premier mécanisme de sélection (étape 910). Ce premier mécanisme de sélection de clés est identique au second mécanisme de sélection de clés décrit en référence à la figure 8 (étape 830). Le paquet sélectionné est alors déchiffré à l'aide de la première clé 15 sélectionnée (étape 915). L'algorithme de déchiffrage correspond à l'algorithme de chiffrage utilisé, décrit en référence à la figure 8 (étape 835). Ce déchiffrement permet l'obtention d'une signature et d'un ensemble comprenant une ou plusieurs données chiffrées ainsi qu'un en-tête. Dans une étape suivante, une signature de l'ensemble comprenant 20 la ou les données chiffrées ainsi qu'un en-tête est, de préférence, calculée (étape 920). La signature calculée est alors comparée avec la signature déchiffrée pour authentifier le paquet sélectionné et vérifier son intégrité (étape 925). Si une erreur de transmission est détectée, une nouvelle copie du paquet 25 est demandée au dispositif à l'origine du paquet sélectionné. Dans le cas contraire, si le paquet sélectionné est authentifié et intègre, une seconde clé du flux de clés est sélectionnée en utilisant un second mécanisme de sélection (étape 930). Ce second mécanisme de sélection de clés est identique au premier mécanisme de sélection de clés décrit en 30 référence à la figure 7 (étape 720). 21 L'ensemble comprenant une ou plusieurs données chiffrées ainsi qu'un en-tête est alors déchiffré à l'aide de la seconde clé sélectionnée (étape 935) pour obtenir une ou plusieurs données déchiffrées ainsi qu'un en-tête. L'algorithme retourne alors aux étapes 905 et 910 pour, le cas 5 échéant, traiter un paquet suivant non traité du flux de paquets de données reçu. A nouveau, le premier et le second mécanismes de sélection de clés peuvent consister en un mécanisme de sélection séquentielle de clés dans un flux de clés à partir d'un indice prédéterminé, comme décrit en référence à la 10 figure 4a, ou un mécanisme plus complexe comme décrit en référence à la figure 5. Ces mécanismes peuvent être identiques ou distincts. La figure 10 illustre schématiquement un exemple de structure d'un paquet de données utilisé pour transmettre des données de façon sécurisée, conformément à certains modes de réalisation. 15 Comme illustré, la structure 1000 du paquet comprend ici trois parties. La première partie, référencée 1005, correspond aux données à transmettre tandis que la deuxième partie, référencée 1010, correspond à l'entête et que la troisième partie, référencée 1015, correspond à la signature (ou empreinte numérique). 20 Les première et deuxième parties sont ici chiffrées selon un premier niveau de chiffrement selon lequel seuls l'émetteur et le destinataire peuvent déchiffrer ces données. Les première et la deuxième parties chiffrées ainsi que la signature sont, de préférence, chiffrées selon un second niveau de chiffrement selon 25 lequel seules deux entités directement liées l'une à l'autre peuvent déchiffrer partiellement ces données. Ces deux entités sont, par exemple, un client léger et un dispositif spécifique ou deux dispositifs spécifiques. Selon des modes de réalisation particuliers, l'en-tête comprend plusieurs indications parmi lesquelles une indication d'acquittement. De telles 30 indications peuvent par exemple préciser que l'un des dispositifs est un client léger et que, par conséquent, seul un générateur de nombre pseudo-aléatoire doit être utilisé (comme décrit en référence aux figures 4c et 4d). De telles 22 indications peuvent également préciser un type d'application, par exemple la voix sur IP (ou VolP, sigle de Voice over Internet Protocol en terminologie anglo-saxonne), pour laquelle un traitement particulier peut être appliqué, par exemple l'absence de mécanisme d'acquittement (dans le cas d'une application 5 de type VolP, il n'est pas nécessaire d'utiliser un mécanisme d'acquittement, une réinitialisation du canal de communication étant nécessaire en cas de coupure réseau). Comme décrit en référence à la figure 12, une indication d'acquittement peut être utilisée pour décider de la retransmission de paquets 10 non reçus par le destinataire ou comprenant des erreurs. La figure 11, comprenant les figures 11a et 11b, illustre des exemples de mécanismes de chiffrement/déchiffrement pouvant être mis en oeuvre pour transférer des données de façon sécurisée. La configuration illustrée sur la figure 11a permet le transfert de 15 données de façon sécurisée entre trois clients 1100-1 à 1100-3 via un dispositif spécifique 1105. A ces fins, quatre jeux de clés sont utilisés. Un premier jeu de clés notées Kci permet de chiffrer les données à transmettre selon un premier niveau de chiffrement. Ces clés ne sont identifiables que par les clients 1100-1 à 1100-3 de telle sorte que le dispositif 20 spécifique 1105 ne puisse pas les déterminer et donc ne puisse pas déchiffrer les données. Un deuxième jeu de clés notées Kuu permet de chiffrer des données préalablement chiffrées avec les clés Kci, offrant ainsi un second niveau de chiffrement. Ces clés ne sont identifiables que par le client 1100-1 et le 25 dispositif spécifique 1105 de telle sorte qu'un autre dispositif qui serait relié au même réseau de communication ne puisse pas les déterminer et donc ne puisse pas déchiffrer les données. De la même façon, un troisième jeu de clés notées KD2i permet de chiffrer des données préalablement chiffrées avec les clés Kci, offrant ainsi un 30 second niveau de chiffrement. Ces clés ne sont identifiables que par le client 1100-2 et le dispositif spécifique 1105 de telle sorte qu'un autre dispositif qui 23 serait relié au même réseau de communication ne puisse pas les déterminer et donc ne puisse pas déchiffrer les données. De la même façon encore, un quatrième jeu de clés notées KD3; permet de chiffrer des données préalablement chiffrées avec les clés Kci, 5 offrant ainsi un second niveau de chiffrement. Ces clés ne sont identifiables que par le client 1100-3 et le dispositif spécifique 1105 de telle sorte qu'un autre dispositif qui serait relié au même réseau de communication ne puisse pas les déterminer et donc ne puisse pas déchiffrer les données. La configuration illustrée sur la figure 11b permet le transfert de 10 données de façon sécurisée entre deux clients 1100-1 et 1100-2 via un dispositif spécifique 1105 et entre deux clients 1100-2 et 1100-3 via un dispositif spécifique 1105. A ces fins, cinq jeux de clés sont utilisés. Un premier jeu de clés notées Kcii permet de chiffrer les données à transmettre selon un premier niveau de chiffrement. Ces clés ne sont 15 identifiables que par les clients 1100-1 et 1100-2 de telle sorte que le client 1100-3 et le dispositif spécifique 1105 ne puissent pas les déterminer et donc ne puissent pas déchiffrer les données. Un deuxième jeu de clés notées Kc2i permet de chiffrer les données à transmettre selon un premier niveau de chiffrement. Ces clés ne sont 20 identifiables que par les clients 1100-2 et 1100-3 de telle sorte que le client 1100-1 et le dispositif spécifique 1105 ne puissent pas les déterminer et donc ne puissent pas déchiffrer les données. Un troisième jeu de clés notées Kun permet de chiffrer des données préalablement chiffrées avec les clés Kc/i, offrant ainsi un second niveau de 25 chiffrement. Ces clés ne sont identifiables que par le client 1100-1 et le dispositif spécifique 1105 de telle sorte qu'un autre dispositif qui serait relié au même réseau de communication ne puisse pas les déterminer et donc ne puisse pas déchiffrer les données. De la même façon, un quatrième jeu de clés notées KD21 permet de 30 chiffrer des données préalablement chiffrées avec les clés Kc/i ou Kc21, offrant ainsi un second niveau de chiffrement. Ces clés ne sont identifiables que par le client 1100-2 et le dispositif spécifique 1105 de telle sorte qu'un autre dispositif 24 qui serait relié au même réseau de communication ne puisse pas les déterminer et donc ne puisse pas déchiffrer les données. De la même façon encore, un cinquième jeu de clés notées KD3i permet de chiffrer des données préalablement chiffrées avec les clés KC2i, 5 offrant ainsi un second niveau de chiffrement. Ces clés ne sont identifiables que par le client 1100-3 et le dispositif spécifique 1105 de telle sorte qu'un autre dispositif qui serait relié au même réseau de communication ne puisse pas les déterminer et donc ne puisse pas déchiffrer les données. Le choix des paramètres d'initialisation qui définissent les jeux de 10 clés peut être déterminé de différentes façons. Il peut notamment être effectué de façon manuelle par les utilisateurs qui se mettent d'accord sur les paramètres d'initialisation à utiliser ou de façon automatique à partir des identifiants des clients et des dispositifs spécifiques (un jeu de paramètres d'initialisation peut être prédéterminé et associé à chaque couple 15 émetteur/récepteur). La figure 12, comprenant les figures 12a et 12b, illustre un exemple de mécanisme pour synchroniser l'utilisation de clés de chiffrement et de déchiffrement entre un émetteur et un récepteur. Les étapes illustrées sur la figure 12a sont mises en oeuvre dans l'émetteur tandis que les étapes illustrées 20 sur la figure 12b sont mises en oeuvre dans le récepteur. Comme illustré sur la figure 12a, une première étape (étape 1200) a pour objet la sélection d'une clé Ki, le chiffrement d'une donnée à l'aide de la clé Ki et la création d'un message Mi comprenant la donnée chiffrée. Le message créé est ensuite transmis (étape 1205) avec un 25 indicateur d'acquittement ayant une première valeur, par exemple 0, pour indiquer que ce message n'est pas une réponse à un message précédent. L'émetteur attend ensuite la réception d'un message de réponse du récepteur au message M1 précédemment émis (étape 1210). Un indicateur d'acquittement ayant une seconde valeur, par exemple 1, est associé au 30 message de réponse référencé M'i pour indiquer que ce dernier fait suite à un message reçu. 25 Après un temps prédéterminé 0 suivant l'émission du message Mi et en l'absence de réception d'un message de réponse, le message Mi est réémis (étapes 1215 et 1205). Si le message M'i est reçu avec l'indicateur d'acquittement ayant la 5 seconde valeur, la variable i est incrémentée (étape 1220) et l'algorithme retourne à l'étape 1200 pour sélectionner une nouvelle clé, chiffrer la donnée élémentaire suivante et la transmettre. Comme illustré sur la figure 12b, suite à la réception d'un message Mi associé à un indicateur d'acquittement ayant une première valeur (étape 10 1250), par exemple 0, indiquant que ce message n'est pas une réponse à un message précédent, un message de réponse M'i est transmis avec un indicateur d'acquittement ayant une seconde valeur, par exemple 1, pour indiquer que ce dernier fait suite à un message reçu (étape 1255). Le message reçu est ensuite traité (étape 1260). Il peut également 15 être traité en parallèle, par exemple pour qu'un message de réponse ne soit transmis, avec un indicateur d'acquittement, que si le message reçu correspondant est intègre et authentifié. La figure 13 illustre un exemple d'architecture d'un dispositif spécifique ou d'un dispositif mettant en oeuvre un client léger ou un client lourd. 20 Le dispositif 1300 comporte de préférence un bus de communication 1302 auquel sont reliés : - une unité centrale de traitement ou microprocesseur 1304 (CPU, sigle de Central Processing Unit en terminologie anglo-saxonne) ; - une mémoire morte 1306 (ROM, acronyme de Read Only Memory 25 en terminologie anglo-saxonne) pouvant comporter un système d'exploitation et des programmes tels que "Prog" ; - une mémoire vive ou mémoire cache 1308 (RAM, acronyme de Random Access Memory en terminologie anglo-saxonne) comportant des registres adaptés à enregistrer des variables et paramètres créés et modifiés au 30 cours de l'exécution des programmes précités ; et - une interface de communication 1310 reliée à un réseau de communication distribué 1312, par exemple un réseau de communication sans 26 fil et/ou un réseau de communication filaire, l'interface étant apte à transmettre et à recevoir des données, notamment vers ou depuis un autre module et/ou vers ou depuis un ordinateur, une tablette ou un téléphone intelligent (smartphone). 5 Optionnellement, le dispositif 1300 peut également disposer des éléments suivants : - une interface d'entrée/sortie 1314; et/ou - un lecteur 1316 de support amovible de stockage 1318 tel qu'une carte mémoire. 10 Le bus de communication permet la communication et l'interopérabilité entre les différents éléments inclus dans le dispositif 1300 ou reliés à lui. La représentation du bus n'est pas limitative et, notamment, l'unité centrale est susceptible de communiquer des instructions à tout élément du dispositif 1300 directement ou par l'intermédiaire d'un autre élément du 15 dispositif 1300. Le code exécutable de chaque programme permettant à l'appareil programmable de mettre en oeuvre les processus selon l'invention peut être stocké, par exemple, dans la mémoire morte 1306. Selon une variante, le code exécutable des programmes pourra être 20 reçu par l'intermédiaire du réseau de communication 1312, via l'interface 1310, pour être stocké de façon identique à celle décrite précédemment. De manière plus générale, le ou les programmes pourront être chargés dans un des moyens de stockage du dispositif 1300 avant d'être exécutés. 25 L'unité centrale 1304 va commander et diriger l'exécution des instructions ou portions de code logiciel du ou des programmes selon l'invention, instructions qui sont stockées, par exemple, dans la mémoire morte 1306 ou bien dans les autres éléments de stockage précités. Lors de la mise sous tension, le ou les programmes qui sont stockés dans une mémoire non 30 volatile, par exemple la mémoire morte 1306, sont transférés dans la mémoire vive 1308 qui contient alors le code exécutable du ou des programmes selon 27 l'invention, ainsi que des registres pour mémoriser les variables et paramètres nécessaires à la mise en oeuvre de l'invention. La présente invention a été décrite et illustrée dans la présente description détaillée en référence aux figures jointes. Toutefois, la présente 5 invention ne se limite pas aux formes de réalisation présentées. D'autres variantes et modes de réalisation peuvent être déduits et mis en oeuvre par la personne compétente dans le domaine de l'invention à la lecture de la présente description et des figures annexées. Dans les revendications, le terme « comporter » n'exclut pas d'autres 10 éléments ou d'autres étapes. L'article indéfini « un » n'exclut pas le pluriel. Un seul processeur ou plusieurs autres unités peuvent être utilisés pour mettre en oeuvre l'invention. Les différentes caractéristiques présentées et/ou revendiquées peuvent être avantageusement combinées. Leur présence dans la description ou dans des revendications dépendantes différentes n'exclut pas, 15 en effet, la possibilité de les combiner. Les signes de référence ne sauraient être compris comme limitant la portée de l'invention. REVENDICATIONS1. Procédé de chiffrement ou déchiffrement d'un flux de données, le 5 procédé comprenant les étapes suivantes, - génération d'une liste de nombres pseudo-aléatoires ; - création (705, 705") d'un flux de clés de chiffrement à partir de la liste de nombres pseudo-aléatoires générée ; - pour chaque donnée du flux de données, 10 o sélection (715, 930) d'une clé de chiffrement dans le flux de clés créé selon un mécanisme de sélection prédéterminé et o chiffrement (720) ou déchiffrement (935) de la donnée considérée à l'aide de la clé de chiffrement sélectionnée. 15 2. Procédé de chiffrement selon la revendication 1 comprenant en outre, pour chaque donnée du flux de données, les étapes suivantes, - création (725) d'un ensemble comprenant la donnée considérée chiffrée ; - sélection (740) d'une seconde clé de chiffrement dans le flux de 20 clés créé selon un second mécanisme de sélection prédéterminé, la sélection d'une clé de chiffrement dans le flux de clés créé selon un mécanisme de sélection prédéterminé consistant en la sélection d'une première clé de chiffrement dans le flux de clés créé selon un premier mécanisme de sélection prédéterminé, les premier et second mécanismes de sélection étant distincts ; 25 et - chiffrement (745) de l'ensemble créé à l'aide de la seconde clé de chiffrement sélectionnée. 3. Procédé de déchiffrement selon la revendication 1 comprenant en 30 outre, pour chaque donnée du flux de données, les étapes préalables suivantes, 29 - sélection (910) d'une première clé de chiffrement dans le flux de clés créé selon un premier mécanisme de sélection prédéterminé, la sélection d'une clé de chiffrement dans le flux de clés créé selon un mécanisme de sélection prédéterminé consistant en la sélection d'une seconde clé de chiffrement dans le flux de clés créé selon un second mécanisme de sélection prédéterminé, les premier et second mécanismes de sélection étant distincts ; et - déchiffrement (915) d'un ensemble comprenant la donnée considérée chiffrée à l'aide de la première clé de chiffrement sélectionnée. 4. Procédé de transmission d'un flux de données chiffrées, le procédé comprenant les étapes préalables suivantes, - génération d'une liste de nombres pseudo-aléatoires ; - création (705') d'un flux de clés de chiffrement à partir de la liste 15 de nombres pseudo-aléatoires générée ; - pour chaque donnée chiffrée du flux de données chiffrées, o sélection (810) d'une première clé de chiffrement dans le flux de clés créé selon un premier mécanisme de sélection prédéterminé ; 20 o déchiffrement (815) d'un ensemble comprenant la donnée considérée chiffrée à l'aide de la première clé de chiffrement sélectionnée ; o sélection (830) d'une seconde clé de chiffrement dans le flux de clés créé selon un second mécanisme de sélection prédéterminé ; 25 o chiffrement (835) d'un ensemble comprenant la donnée considérée chiffrée à l'aide de la seconde clé de chiffrement sélectionnée. 5. Procédé selon la revendication 3 ou la revendication 4 comprenant 30 en outre une étape d'authentification suite à l'étape de déchiffrement d'un ensemble, l'étape d'authentification conditionnant l'exécution d'au moins une étape suivante. 30 6. Procédé selon l'une quelconque des revendications 1 à 5 comprenant en outre une étape de sélection de nombres pseudo-aléatoires dans la liste de nombres pseudo-aléatoires générée pour créer le flux de clés 5 de chiffrement. 7. Procédé selon l'une quelconque des revendications 1 à 6 comprenant en outre une étape de décomposition de nombres pseudoaléatoires de la liste de nombres pseudo-aléatoires générée pour créer le flux 10 de clés de chiffrement. 8. Procédé selon l'une quelconque des revendications 1 à 7 selon lequel un mécanisme de sélection utilise une valeur d'indice d'une clé précédemment sélectionnée. 9. Procédé selon l'une quelconque des revendications 1 à 8 selon lequel un mécanisme de sélection utilise une valeur d'une clé précédemment sélectionnée. 10. Dispositif de chiffrement ou déchiffrement d'un flux de données comprenant une pluralité de générateurs de nombres pseudo-aléatoires, un module de sélection de nombres pseudo-aléatoires et un module de chiffrement ou déchiffrement, le dispositif étant caractérisé en ce que le module de sélection est connecté à chaque générateur de nombres pseudo-aléatoires de la pluralité de générateurs de nombres pseudo-aléatoires, un générateur de nombres pseudo-aléatoires sélectionnant des nombres pseudo-aléatoires générés par au moins un autre générateur de nombres pseudo-aléatoires pour générer une liste de clés de chiffrement, des clés de chiffrement distinctes de la liste de clés de chiffrement générée étant utilisées pour chiffrer ou déchiffrer des données du flux de données. 31 11. Dispositif selon la revendication 10 selon lequel au moins un générateur de nombres pseudo-aléatoires de la pluralité de générateurs de nombres pseudo-aléatoires est un générateur chaotique de nombres pseudoaléatoires, hyper-chaotique, pseudo-chaotique ou de type chaotique. 5 12. Dispositif selon la revendication 10 ou la revendication 11 comprenant en outre un module (520) de sélection de clés de chiffrement. 13. Dispositif selon l'une quelconque des revendications 10 à 12 10 comprenant en outre un module (510) de décomposition de nombres pseudoaléatoires pour générer des clés de chiffrement dont la longueur est égale à la longueur des données à chiffrer ou à déchiffrer. 14. Dispositif selon l'une quelconque des revendications 10 à 13 15 selon lequel au moins un générateur de nombres pseudo-aléatoires de la pluralité de générateurs de nombres pseudo-aléatoires est implémenté de façon logicielle. 15. Programme d'ordinateur comprenant des instructions adaptées à 20 la mise en oeuvre de chacune des étapes du procédé selon l'une quelconque des revendications 1 à 9 lorsque ledit programme est exécuté sur un ordinateur. 25