Brevet FR3136619A1 — publié le 20231215

Procédé de communication anonymisée entre un équipement client (C) et un serveur (S) au moyen d’un réseau informatique (1), le réseau informatique étant organisé en une pluralité de groupes (gC, g1, g2, g3), chaque groupe de ladite pluralité de groupe étant associé à au moins un attribut, chaque groupe comportant une pluralité d’équipements informatiques (LBc, C, LB1, R1, LB2, R2, LB3, R3), chaque équipement informatique d’un groupe possédant l’attribut dudit groupe, pour chaque groupe l’un des équipements informatiques (LB C, LB1, LB2, LB3) étant désigné comme équipement superviseur dudit groupe, le client appartenant à l’un des groupes. Figure à publier : figure 1 Procédé de communication anonymisée entre plusieurs clients et un serveur L’invention concerne le domaine des communications et plus particulièrement celui des protocoles de communication. État de la technique antérieure Lors de communications, il peut être souhaitable de garantir des propriétés d’anonymité ainsi que de sécurité de la confidentialité des données échangées. À cet effet, il existe plusieurs solutions offrant différentes garanties d’accès anonyme à Internet. Les solutions les plus connues mettent classiquement en œuvre des services proposés par un serveur mandataire (en anglais proxy) qui affichent l’adresse IP du proxy et non celle du périphérique utilisé, ou le réseau Tor (« The Onion Router ») ou encore le réseau I2P (« Invisible Internet Project ») fonctionnant sur le mécanisme de routage connu appelé routage en oignon, pour l’anglais garlic routing dérivé de Tor. Ces solutions reposent sur la mise en place d’un réseau privé virtuel ou VPN, pour l’anglais Virtual Private Network, entre l’utilisateur et le service via un proxy classique ou via plusieurs serveurs mandataires (pour Tor ou I2P) qui sont mis en série et sont chargés d’encapsuler les communications entre l’utilisateur et le service auquel il souhaite accéder ou avec lequel il souhaite communiquer. Pour chaque communication, ces solutions présentent toutes un seul point d’entrée et de sortie et un chemin statique qui est par conséquent vulnérable. Un inconvénient de la solution proposée par le protocole de routage TOR est qu’il n’est pas possible de proposer de diffusion sélective groupée (en anglais one to many), c’est-à-dire un mode de diffusion permettant à une source d’émettre une seule copie de son trafic à destination de plusieurs membres d’un groupe de destinataires. Il existe alors le besoin d’une solution globale qui combine la fonction d’anonymisation, de sécurité et de confidentialité des données échangées et la possibilité de proposer une diffusion de type multicast. La présente invention répond à ce besoin. Selon un premier aspect de l’invention, il est proposé un procédé de communication de communication anonymisée entre un équipement client et un serveur au moyen d’un réseau informatique, le réseau informatique étant organisé en une pluralité de groupes, chaque groupe de ladite pluralité de groupe étant associé à au moins un attribut, chaque groupe comportant une pluralité d’équipements informatiques, chaque équipement informatique d’un groupe possédant l’attribut dudit groupe, pour chaque groupe l’un des équipements informatiques étant désigné comme équipement superviseur dudit groupe, le client appartenant à l’un des groupes. Le procédé comprenant les étapes suivantes : établissement par l’équipement client d’un chemin de communication entre l’équipement client et le serveur, le chemin de communication étant une liste ordonnée de groupes, création par l’équipement client d’un paquet comprenant pour chacun des groupes de la liste, des instructions à destination de l’équipement superviseur dudit groupe de faire progresser la connexion par le groupe successeur dans le la liste, à réception d’un paquet par un superviseur d’un groupe de la liste, provenant de l’équipement client ou d’un équipement d’un groupe précédent : sélection par ledit superviseur du groupe d’un équipement désigné comme relais au sein dudit groupe, à partir des instructions reçues à destination dudit équipement superviseur, transmission du paquet audit relai, et enregistrement par le relais du groupe de l’identité du relais du groupe précédent, si le groupe est le dernier de la liste ordonnée de groupe, établissement par ledit relais dudit groupe et le serveur, et transmission de sa clé au relais du groupe précédent, sinon transmission dudit paquet par ledit relais du groupe au superviseur du groupe suivant de la liste, à réception d’un paquet par un relais d’un groupe de la liste, le paquet provenant d’un équipement du groupe suivant de la liste : enregistrement par le relais du groupe de l’identité du relais du groupe suivant, ajout au paquet de la clé du groupe transmission du paquet au relais du groupe précédent à réception par le client d’un paquet provenant d’un équipement du premier groupe de la liste, échanges de données utiles entre le client et le serveur par routage de type oignon sur le chemin de communication, au moyen d’un algorithme de chiffrement par attributs, les attributs étant ceux groupes de la liste. De préférence, lorsqu’un équipement relais n’appartient plus au réseau, ledit équipement est remplacé par un autre équipement du même groupe. Le remplacement peut être réalisé par l’équipement superviseur du groupe. Le serveur peut être configuré pour diffuser un flux de données, le flux de données transitant par des groupes du réseau informatique, chacun desdits groupes maintenant une liste d’empreinte de flux de données transitant en son sein. L’équipement superviseur d’un groupe peut maintenir la liste d’empreintes. La liste d’empreintes peut être distribuée sur les équipements dudit groupe. Avantageusement, lors de l’établissement de chemin de communication entre l’équipement client et le serveur, le client peut transmettre une empreinte du flux de données et, sur reconnaissance de ladite empreinte au sein d’une liste d’empreinte d’un groupe, la connexion entre l’équipement client et le serveur peut être formée d’une connexion entre l’équipement client et le relais du groupe et de la connexion entre le relais du groupe et le serveur. Description des figures D’autres avantages et particularités de l’invention apparaîtront à la lecture de la description détaillée de mises en œuvre et de modes de réalisation nullement limitatifs, au regard de dessins annexés sur lesquels : illustre un exemple de réalisation d’un réseau selon l’invention, illustre un exemple d’un procédé selon l’invention, illustre un mode de routage en oignon par attribut. Description de modes de réalisation Les modes de réalisation décrits ci-après n’étant nullement limitatifs, on pourra notamment considérer des variantes de l’invention ne comprenant qu’une sélection de caractéristiques décrites, par la suite isolées des autres caractéristiques décrites, si cette sélection de caractéristiques est suffisante pour conférer un avantage technique ou pour différencier l’invention par rapport à l’état de la technique antérieure. Cette sélection comprend au moins une caractéristique, de préférence fonctionnelle sans détails structurels, ou avec seulement une partie des détails structurels si cette partie uniquement est suffisante pour conférer un avantage technique ou pour différencier l’invention par rapport à l’état de la technique antérieure. Sur les figures un élément apparaissant sur plusieurs figures conserve la même référence. La illustre une représentation d’un réseau informatique 1 selon l’invention. On va également décrire en même temps un procédé de communication entre un équipement client C, par exemple un utilisateur et un serveur, par exemple un site internet ou un flux vidéo, selon l’invention. Le réseau informatique 1 est organisé en une pluralité de groupes. Sur la figure, quatre groupes, respectivement gC, g1, g2, g3, sont représentées par des rectangles en pointillés. Chaque groupe comportant une pluralité d’équipements informatiques. Sur , les équipements informatiques sont indifféremment représentés par des losanges ou des cercles. Le groupe gC comporte 4 équipements informatiques. Le groupe g1 comporte 4 équipements informatiques. Le groupe g2 comporte 4 équipements informatiques. Le groupe g3 comporte 3 équipements informatiques. Chaque groupe de ladite pluralité de groupe est associé à au moins un attribut, appelé ensemble d’attributs. Les ensembles d’attributs peuvent par exemple être référencés eC, e1, e2, e3. Chaque équipement informatique d’un groupe possède l’ensemble d’attributs dudit groupe. Plus généralement, un équipement peut appartenir à plusieurs groupes (sans que cela soit représenté sur la figure). Il est maintenant décrit un procédé de connexion selon l’invention entre un équipement client C et un serveur S. Pour chaque groupe, l’un des équipements informatiques est désigné comme équipement superviseur dudit groupe. Selon l’exemple illustré, un équipement LB C est désigné comme équipement superviseur du groupe gC, un équipement LB 1 est désigné comme équipement superviseur du groupe g1, un équipement LB 2 est désigné comme équipement superviseur du groupe g2, et un équipement LB 3 est désigné comme équipement superviseur du groupe g3. Selon une alternative, la fonction de supervision pourrait être implémentée de manière purement logicielle, par exemple par un système réparti de gestion de jeton (pour l’anglais token) ou une chaîne de blocs (pour l’anglais blockchain), ce système étant implémenté par un ou plusieurs équipements du groupe. Par la suite, la fonction de supervision sera implémentée par un module superviseur. Le client appartient à l’un des groupes. On peut vérifier sur la que le client C appartient au groupe gC. Le serveur S n’appartient pas nécessairement à l’un des groupes. Sur , le serveur S n’appartient pas un groupe. Description détaillée de l’établissement sur un exemple du protocole Qas Plus particulièrement, illustre un procédé selon l’invention qui comporte une première étape E1 d’établissement d’un chemin de communication entre l’équipement client C et le serveur S, le chemin de communication étant une liste ordonnée de groupes. Dans l’exemple représenté, la liste ordonnée de groupe est la liste g1, g2, et g3. La liste des groupes est diffusée publiquement, ainsi que les attributs et les politiques de contrôles d’accès associées, en tant qu’annuaire. Dans l’exemple représenté, le client connaît alors une liste de politique d’accès P1 compatible avec l’ensemble d’attributs e1, une politique d’accès P2 compatible avec l’ensemble d’attributs e2, une politique d’accès P3 compatible avec l’ensemble d’attributs e3. L’équipement client C est alors configuré pour créer E2 : il crée pour le groupe 1 un paquet d’information I1, comprenant l’empreinte h(S) du serveur S, l’instruction de transmission au groupe suivant, et le nom du groupe suivant (ici g2) ; il crée pour le groupe 2 un paquet d’information I2, l’empreinte h(S) du serveur S, l’instruction de transmission au groupe suivant (g3), et le nom du groupe suivant (ici g3) ; il crée pour le groupe 3 un paquet d’information I3, l’empreinte h(S) du serveur S. Le client C chiffre par attribut les instructions I3 selon la politique d’accès P3 compatible avec l’ensemble d’attributs e3 pour obtenir un message C3(I3). Le message résultant C3(I3) est de nouveau chiffré par attribut par le client, avec les instructions I2, selon la politique d’accès P2 compatible avec l’ensemble d’attributs e2 pour obtenir un message C2(I2,C3(I3)). Le message résultant C2(I3,C3(I3)) est de nouveau chiffré par attribut par le client, avec les instructions I1, selon une politique d’accès P1 compatible avec l’ensemble d’attributs e1 pour obtenir un message final C1(I1,C2(I2,C3(I3))). Le message final C1(I1,C2(I2,C3(PI3))) est adressé par le client au module superviseur LB 1 du groupe 1. À réception du message final C1(I1,C2(I2,C3(PI3))), le superviseur LB 1 du groupe 1 sélectionne un équipement R1 désigné comme relais pour cette communication au sein dudit groupe, et lui adresse ledit message reçu. Pour le sélectionner, il peut optionnellement déchiffrer le message pour obtenir I1, dont h(S), et choisit R1 en fonction, soit pour optimiser la qualité de service si aucune communication à destination de h(S) n’est gérée par le groupe, soit à un relai R1’ si celui-gère déjà une communication vers ce serveur (ou flux) identifié par h(S). Le superviseur LB1 avertit le client C de l’identité du relais R1, par exemple en envoyant un paquet comportant l’identité du relais R1. À réception dudit message reçu, le relais R1 : déchiffre le message reçu C1(I1, C2(I2, C3(I3))). En effet, le relais R1 possède l’ensemble d’attributs e1 et peut donc déchiffrer le message C1(I1, C2(I2, C3(I3))) et accède à la fois à l’instruction I1 de transmission au groupe suivant g2 et au message C2(I2, C3(I3)) pour le groupe g2 ; inscrit le client C comme nœud antécédent pour cette communication à destination de h(S), et génère un nombre aléatoire rand1, et, à partir de l’instruction I1 et du nombre aléatoire rand1, il déduit K1, envoie le nombre rand1, l’identité du superviseur LB2 et h(S) au superviseur LB1, et si le relais R1 ne gère pas de communications avec h(S), il adresse le message C2(I2, C3(I3)) au module superviseur LB 2 du groupe 2. À réception du message résultant C2(I2, C3(I3)) provenant du relais R1, le superviseur LB 2 du groupe 2 sélectionne un équipement R2 désigné comme relais pour cette communication au sein dudit groupe, et lui adresse ledit message reçu. Pour le sélectionner, il peut optionnellement déchiffrer le message pour obtenir le relais I2, dont h(S), et choisit le relais R2 en fonction, soit pour optimiser la qualité de service si aucune communication à destination de h(S) n’est gérée par le groupe, soit à un relai R2' si celui-ci gère déjà une communication vers ce serveur (ou flux) identifié par h(S). Le superviseur LB2 avertit le relais R1 de l’identité du relais R2. À réception dudit message reçu, le relais R2 : déchiffre le message reçu C2(I2, C3(I3)). En effet, le relais R2 possède l’ensemble d’attributs e2 et peut donc déchiffrer le message C2(I2, C3(I3)) et accède à la fois à l’instruction I2 de transmission au groupe suivant g3 et au message C3(I3) pour le groupe g3 ; inscrit le relais R1 comme nœud antécédent pour cette communication à destination de h(S) ; génère un nombre aléatoire rand2, et, à partir de l’instruction I2 et du nombre aléatoire rand2, il déduit K2, envoie le nombre rand2, l’identité du superviseur LB3 et h(S) au superviseur LB2, et si le relais R2 ne gère pas de communications avec h(S), il adresse le message C3(I3) au module superviseur LB 2 du groupe 3. i - Si R2 était directement connecté à S : : - R2 inscrit le serveur S comme étant le nœud suivant pour cette communication ; -R2 crée un message M2f=(rand2, K2(fin)) indiquant que la connexion est établie et comportant la valeur rand2 - R2 adresse le message M2f à destination du nœud antécédent pour cette communication, c’est-à-dire le nœud R1 ; ii - Si R2 était indirectement connecté à S : R2 récupère le relai suivant pour cette communication, nommé R3t dans la suite ; R2 crée un message M2t=(rand2, K2(tor, R3t)) indiquant que la connexion doit être prolongée avec R3t et comportant la valeur rand2 R2 adresse le message M2t à destination du nœud antécédent pour cette communication, c’est-à-dire le nœud R1 iii - Si R2 n’était pas connecté à S : A réception d’un message M3 par le relai R2, issu du relai R3, dans la phase d’établissement de la communication : R2 crée le message M2i=(rand2, K2(intermediaire, M3)) indiquant les informations sur la communication établie et comportant la valeur rand2 R2 adresse le message M2i à destination du nœud antécédent pour cette communication, c’est-à-dire le nœud R1 À réception du message résultant C3(P) provenant du relais R2, le superviseur LB 3 du groupe 3 sélectionne un équipement R3 désigné comme relais pour cette communication au sein dudit groupe, et lui adresse ledit message reçu. Pour le sélectionner, il peut optionnellement déchiffrer le message pour obtenir I3, et h(S), et choisit le relais R3 en fonction, soit pour optimiser la qualité de service si aucune communication à destination de h(S) n’est gérée par le groupe, soit à un relai R3' si celui-ci gère déjà une communication vers ce serveur (ou flux) identifié par h(S). Le superviseur LB3 avertit le relais R2 de l’identité du relais R3. À réception dudit message reçu, le relais R3 : déchiffre le message reçu C3(I3). En effet, le relais R3 possède l’ensemble d’attributs e3 et peut donc déchiffrer le message C3(I3) et accède à l’instruction de connexion au serveur S ; inscrit le relais R2 comme nœud antécédent pour cette communication à destination de h(S) ; génère un nombre aléatoire rand3, et, à partir de l’instruction I3 et du nombre aléatoire rand3, il déduit K3, envoie le nombre rand3, l’identité de S et h(S) au superviseur LB3, et si le relais R3 ne gère pas de communications avec h(S), il se connecte au serveur, sinon : i - Si R3 est directement connecté à S : R3 inscrit le serveur S comme étant le nœud suivant pour cette communication ; R3 crée un message M3f=(rand3, K3(fin)) indiquant que la connexion est établie et comportant la valeur rand3 ; R3 adresse le message M3f à destination du nœud antécédent pour cette communication, c’est-à-dire le nœud R2 ; ii - Si R3 gère déjà une communication avec h(S) sans être directement connecté à S : R3 récupère le relai suivant pour cette communication, nommé R4t dans la suite R3 crée un message M3t=(rand3, K3(tor, R4t)) indiquant que la connexion doit être prolongée avec R4t et comportant la valeur rand3 R3 adresse le message M3t à destination du nœud antécédent pour cette communication, c’est-à-dire le nœud R2 Le comportement de R1 est strictement équivalent à celui de R2. Le client reçoit un message M=(rand1, K1(instruction)). Il extrait rand1, et calcule K1 avec rand1 et I1 Il déchiffre l’instruction avec K1. Si instruction correspond à un message intermédiaire: Le client interprète le contenu comme étant l’instruction émise de la part du relai R2. Cette instruction a la forme (rand2, K2(instruction2)) Il extrait rand2 et calcule K2 avec rand2 et I2 Il déchiffre instruction2 avec K2. Si instruction 2 correspond à un message intermédiaire : Le client interprète le contenu comme étant l’instruction émise de la part du relai R3. Cette instruction a la forme (rand3, K3(instruction3)) Il extrait rand3 et calcule K3 avec rand3 et I3 Il déchiffre instruction 3 avec K3. Si instruction3 correspond à un message fin : Le client en déduit que son chemin final possède trois relais R1, R2 et R3 avec R3 qui est directement connecté à S. Il dispose des clés K1, K2 et K3 permettant de déchiffrer le flux émis par S via R1, R2 et R3. La connexion est établie pour le client. Si instruction 2 correspond à un message tor : Il interprète le contenu du message comme le nom du prochain relai pour sa communication, nommé R4t Le client en déduit que son chemin final débute par les relais R1, R2 et R3 et poursuit avec le relai R4t. La connexion n’est pas encore établie pour le client Si instruction 2 correspond à un message fin : Le client en déduit que son chemin final possède uniquement deux relais R1 et R2 avec R2 qui est directement connecté à S. Il dispose des clés K1 et K2 permettant de déchiffrer le flux émis par S via R1 et R2. La connexion est établie pour le client. Si instruction 2 correspond à un message tor : Il interprète le contenu du message comme le nom du prochain relai pour sa communication, nommé R3t Le client en déduit que son chemin final débute par le relai R1 et R2 et poursuit avec le relai R3t. La connexion n’est pas encore établie pour le client Si instruction correspond à un message fin: Le client en déduit que son chemin final possède uniquement un relai R1 qui est directement connecté à S. Il dispose de la clé K1 permettant de déchiffrer le flux émis par S via R1. La connexion est établie pour le client. Si instruction correspond à un message tor : Il interprète le contenu du message comme le nom du prochain relai pour sa communication, nommé R2t Le client en déduit que son chemin final débute par le relai R1 et poursuit avec le relai R2t. La connexion n’est pas encore établie pour le client Description générale du protocole Qas Le client est supposé connaître une liste ordonnée de groupe (gi), i=1..n. Le client est également supposé connaître, pour chaque groupe i, une politique Pi compatible avec l’ensemble d’attributs ei. Le client : Chiffre un message P de manière récursive par attribut selon la politique d’accès Pj, avec j=N..1 pour obtenir le message C1(C2(…Cj(P))) Adresse le message C1(C2(…Cj(P))) au module superviseur LB 1 du groupe 1. À réception Ei d’un message Ci(P) par un module superviseur de la liste, provenant de l’équipement client C ou d’un équipement d’un groupe précédent i-1, désigné ci-après sous le nom d’équipement antécédent, le module superviseur LB i du groupe i : sélectionne un équipement Ri désigné comme relais pour cette communication au sein dudit groupe i, et lui adresse ledit message Ci(P) reçu ; à réception dudit message P reçu, le relais Ri : inscrit l’équipement antécédent en tant que nœud antécédent pour cette communication, déchiffre le message reçu. En effet, le relais Ri possède l’ensemble d’attributs ei et peut donc déchiffrer le message Ci(P) et accède au message résultant P ; si le groupe est le dernier de la liste ordonnée de groupes, adresse le message P : inscrit le serveur S comme étant le nœud suivant pour cette communication ; établissement d’une connexion entre le relai Ri et le serveur S ; adresse un message Mi comportant la clé Ki à destination du nœud antécédent pour cette communication, c’est-à-dire le relai Ri-1 ; adresse une empreinte e(S) du serveur S au module superviseur LB 3 du groupe i et (optionnellement) l’intègre au message Mi. sinon adresse le message P au module superviseur du groupe suivant. À réception d’un message Mi+1 par un relais Ri d’un groupe de la liste, le paquet provenant d’un équipement du groupe suivant de la liste, le relai Ri : inscrit le serveur Ri+1 comme étant le nœud suivant pour cette communication ; adresse un message Mi comportant la clé Ki à destination du nœud antécédent pour cette communication, c’est-à-dire le nœud R1 ; (optionnellement) adresse une empreinte e(S) du serveur S au module superviseur LB i du groupe i et (optionnellement) l’intègre au message M2. Selon une possibilité, l’équipement superviseur d’un groupe maintient la liste d’empreintes. Alternativement, la liste d’empreintes peut être distribuée sur les équipements dudit groupe (gestion de token, bitchain). À réception par le client d’un paquet provenant d’un équipement du premier groupe de la liste, échanges S3 de données utiles (en anglais payload) entre le client et le serveur par routage de type oignon sur le chemin de communication, au moyen d’un algorithme de chiffrement par attributs, les attributs étant ceux groupes de la liste. Diffusion à partir du serveur Selon un mode de réalisation, le serveur peut être est configuré pour diffuser un flux de données, le flux de données transitant par des groupes du réseau informatique, chacun desdits groupes maintenant une liste d’empreinte de flux de données transitant en son sein, comme cela vient d’être décrit. On suppose un chemin de communication établi entre le client et le serveur. Le serveur S souhaite diffuser le message M. Le serveur envoie le message M au relais R3. Le relais R3 chiffre le message M avec la clé privée K3 pour obtenir un message Enc3(M). Le message résultant Enc3(M) est transmis au relais R2. Le relais R2 chiffre le message reçu Enc3(M) avec la clé privée K2 pour obtenir un message Enc2(Enc3(M)). Le message résultant Enc2(Enc3(M)) est transmis au relaisR1. Le relais R1 chiffre le message reçu Enc2(Enc3(M)) avec la clé privée K1 pour obtenir un message Enc1(Enc2(Enc3(M))). Le message résultant Enc1(Enc2(Enc3(M))) est transmis au client C. Le client C connaissant la clé publique du groupe K1, du groupe K2 et du groupe K3 peut réaliser des opérations de déchiffrement pour obtenir, successivement, les données Enc2(Enc3(M)), puis Enc3(M), puis M. Description détaillée des blocs échangés Vocabulaire et notations Communication : chemin entre le client et le serveur de diffusion Connection : lien direct entre deux équipements informatiques Nous noterons dans la suite [message]K pour exprimer le chiffrement symétrique avec la clé K, {message}A le chiffrement ABE avec la clé A, et ]message[PK, le chiffrement asymétrique avec la clé PK. Un chiffrement successif pourra donc être noté [[message]A ]A. Le déchiffrement avec une clé K d’un message en clair, d’un message chiffré avec une clé différente de K, ou d’un bloc de padding donne un bloc de padding. h(x) représente l’empreinte de x par la fonction de hachage résistante aux collisions h (e.g. SHA-512). Le nom d’un équipement informatique et son adresse (e.g. IP / MAC) seront assimilés. La la notation “_” sera utilisée pour indiquer un double indice.. Les échanges DATA1 sont des échanges entre le serveur et un seul de ses clients (one-to-one), par exemple de l’exploration web classique. Les échanges DATA2 sont ceux des données broadcastées du serveur vers l’ensemble de ses clients. Disposer des deux fonctionnements permet de récupérer les fonctionnalités déjà existantes de TOR plutôt que de se spécialiser dans le broadcast. Éléments publics  Liste LG des groupes avec, pour chaque groupe i, le LBi (Load Balancer) et les attributs correspondants Ai. La profondeur de communication sera notée N. Elle correspond au nombre déconnexions de la communication et donc au nombre de groupes par lesquels une communication va passer. Le nombre de connexions entre un client et un serveur sera donc N+1. La taille des blocs chiffrés et le format des différents échanges du protocole ont des tailles fixes et connues. On peut par exemple recourir a du padding pour cela. Le mécanisme de conservation des tailles ne sera pas explicité par la suite. Au niveau du client : début de l’initialisation de la communication (QAS1c) Le client C initialise une communication avec le serveur S. Il choisit N groupes parmi LG. Les groupes choisit sont notés G = {G1, G2,…, GN}. On considère que le client appartient au groupe G0. À l’issue de l’exécution de l’établissement de la communication, la mise en commun des communications amènera le client à communiquer avec des groupes qu’il n’a pas forcément choisis au début de la procédure. La communication finale passera par les groupes notés G’= {G’ 1, G’ 2,…, G’N}. Pour chaque niveau de profondeur i, le client choisit une valeur temporaire rti permettant la communication entre les membres du groupe Gi. Pour chaque niveau de profondeur i, il choisit une valeur rli permettant de sécuriser les échanges entre les membres du groupe Gi –1 et ceux du groupe Gi. Pour chaque niveau de profondeur i, le client prépare une paire de clés publique/secrète : Pki/Ski utilisée pour anticiper des échanges avec des groupes qu’il n’avait pas choisis. Également pour anticiper des échanges avec des groupes qu’il n’avait pas choisis, le client prépare un défi noté D. Le client génère un token T1 et un identifiant de session S1 qui permettra d’associer un message reçu à une des communications du client. Il construit le message M qui est composé de (N + 1) blocs. Les blocs Bi, pour tous i La chaîne de caractères “STEP”, indiquant qu’il s’agit d’un groupe intermédiaire,   L’empreinte du serveur et de la valeur (N-i),   LB i , indiquant le prochain groupe à contacter,   rl i ,   rl i + 1 ,   rt i .   Ces informations sont chiffrées pour obtenir Bi= {{…{{{{{Ii}_Ai} _Ai} _Ai-1} _Ai-1} …} _A1} _A1. Le bloc BN est structuré de la manière suivante. Un tel bloc contient les informations IN suivantes : La chaîne de caractères “END”, indiquant une demande de connexion au serveur,   L’empreinte du serveur et de la valeur 1,   S, indiquant le serveur à contacter,   rl i ,   rl i + 1 ,   rt i .   Ces informations sont chiffrées pour obtenir B N = {{…{{{{{I N }_A N } _A N } _A N-1 } _A N-1 } …} _A 1 } _A 1 . Le bloc BN+1 est structuré de la manière suivante. Un tel bloc contient les informations J1 suivantes : T 1 , S1,   Pk 1 ,…, Pk N ,   D.   Ces informations sont ensuite chiffrées pour obtenir B N+1 =[J 1 ] rl _1. Le client envoie le message (B 1 , B 2 ,…, B N+1 ) à LB 1 . Le client associe (B 1 , B 2 ,…, B N+1 ) au token T 1 . Au niveau du Load Balancer : réception d’une demande de communication (QAS1l) Le load balancer LB i reçoit un message, d’un relai R i-1 , composé de (N+1) blocs, structuré de la manière suivante : {{Ii} _Ai}_Ai   {{{{Ii+1}_Ai+1} _Ai+1} _Ai} _Ai   …   {{…{{{{{I N }_A N } _A N } _A N-1 } _A N-1 } …] _A i } _A i   (i-1) blocs de padding   [J i ] rl_i   Les (N+1-i) premiers blocs sont chiffrés deux fois avec l’attribut Ai. Le load balancer déchiffre une fois chacun des N premiers blocs, pour obtenir les blocs B i suivants : {Ii} _Ai   {{{I i+ 1 }_A i+1 } _ Ai+1 } _A i   …   {…{{{{{I N }_A N } _A N } _A N-1 } _A N-1 } …} _A i   (i-1) blocs de padding   [J i ] rl_i   Le load balancer déchiffre une seconde fois le bloc B1 pour accéder au contenu de I i . Il connaît donc : La commande (“STEP” ou “END”),   Une empreinte H,   L’adresse du prochain équipement (LB i+1 ou S),   rl i ,   rl i + 1 ,   rt i .   Connaissant rl i , load balancer peut déchiffrer le dernier bloc et accéder à J i . Le load balancer choisit un token temporaire Tt i , qui permettra au relai du groupe choisi d’informer LBi, si nécessaire, sur les clés choisies pour la communication. Le load balancer construit le bloc J’ i qui contient, en plus des informations de J i , R i-1 et Tt i . Le load balancer identifie le relai R i du groupe G i qui va prendre en charge la communication : si une communication associée à H est en cours, il peut choisir le relai associé en fonction de sa charge, sinon, il choisit un relai du groupe selon la charge actuelle du groupe. Il envoie au relai R i le message suivant : {I i } _A i   {{{I i+ 1 }_A i+1 } _A i+1 } _A i   …   {…{{{{{I N }_A N } _A N } _A N-1 } _A N-1 } …} _A i   (i-1) blocs de padding   [J’ i ] rt_i   R elai : réception d’une demande de communication (QAS1r) Le relai Ri reçoit un message, du load balancer LBi, composé de (N+1) blocs, structuré de la manière suivante : {I i } _A i   {{{I i+ 1 }_A i+1 } _A i+1 } _A i   …   {…{{{{{I N }_A N } _A N } _A N-1 } _A N-1 } …} _A i   (i-1) blocs de padding   [J i ] rt_i   Les (N+1-i) premiers blocs sont chiffrés une fois avec l’attribut A i . Le relai déchiffre une fois chacun des N premiers blocs, pour obtenir les blocs Bi suivants : I i   {{I i+ 1 }_A i+1 } _A i+1   …   {…{{{{{I N }_A N } _A N } _A N-1 } _A N-1 } …} _A i+1   (i-1) blocs de padding   [J i ] rt_i   En ayant accès à I i , le relai connaît donc : La commande (“STEP” ou “END”),   Une empreinte H,   L’adresse du prochain équipement (LB i+1 ou S),   rl i ,   rl i + 1 ,   rt i .   Connaissant rt i , il peut déchiffrer le dernier bloc et accéder à J i , qui contient : T i , S i ,   Pk i ,…, Pk N ,   Padding de taille (i-1) clés publiques,   D,   Tt i ,   R i-1 .   Le relai définit une valeur aléatoire et, à partir de celle-ci et I i , il dérive une clé de chiffrement de données K i , qui sera utilisée pour chiffrer le flux émis par le serveur, à destination des clients dont la communication passe par ce relai. Le relai choisit un identifiant de session S i+1 . Il mémorise également un lien entre S i+1 et S i. Le relai envoie le message [“SAQ1l”, Tt i , K i ] rt _i à LB i . Cette information permettra à LB i de gérer les éventuelles reprises de communication qui concerne ce relai. La suite dépend de la valeur de la commande. Si la commande est “STEP” Le prochain équipement est donc un load balancer LB i+1 . Si, de plus, l’empreinte est connue Alors, il existe une seconde communication, qui passe par ce relai avec la même empreinte. Cette seconde communication est associée à une connexion Con et à une valeur rl’ i+1 . Si la connexion de cette seconde communication est déjà établie Le relai construit un message M contenant les champs suivants : La chaîne de caractères “QAS2”,   Pk i+ 1 ,…, Pk N ,   Padding de taille 1 clé publique,   S i+1 ,   D.   Le relai envoie [M]_ rl’_i+1 via la connexion Con. Si la connexion de cette seconde communication n’est pas encore établie Le traitement de cette demande de communication est mis en attente, le temps que la connexion pour la seconde communication soit établie ou que la tentative de connexion échoue. Si de plus l’empreinte n’est pas connue Le relai génère un token T i+1 . Le relai génère le bloc J i+1 , qui contient : T i+1 , S i+1 ,   Pk i+ 1 ,…, Pk N ,   Padding de taille1 clé publique,   D.   Le relai envoie au prochain load balancer LB i+1 , le message : {{I i+ 1 }_A i+1 } _A i+1   …   {…{{{{{I N }_A N } _A N } _A N-1 } _A N-1 } …} _A i+1   i blocs de padding   [J i+ 1 ]_ rl_i+1 .   Si la commande n’est pas “STEP”, et elle est donc “END” . Le prochain équipement est donc le serveur S., le relai vérifie que l’empreinte H correspond à une empreinte de S. Si le relai n’est pas encore connecté à S, il initie une connexion avec ce serveur. Le relai construit un bloc B 1 contenant les informations suivantes : La chaîne de caractères “SAQ”,   K i ,   S i .   Le relai envoie au relai précédent R i-1 le message (T i , [“SAQ”, S i , ]B 1 [ Pk_i , (N-1) blocs de padding] rl_i-1 ), sur une nouvelle connexion Con. Il associe la connexion Con à la communication. Load Balancer : Acquittement de la gestion de la connexion par le relais désigné (SAQ1l) Le load balancer LB i reçoit le message [(“SAQ1l”, Tt i , K i )] rt _i , par le relai R i . Ayant lui-même établi la communication avec ce relai, LB i connaît la valeur rt i et il peut donc accéder aux informations Tt i et K i . Ces informations permettront à LB i de gérer les éventuelles reprises de communication qui concerne le relai R i . Relai -> Phase descendante de la création de communication (SAQ1r) Le relai R i reçoit un message (T i+1 , D) d’un relai R i+1 depuis une nouvelle connexion Con. Il récupère le bloc I i et le bloc J i+1 qu’il a lui-même généré durant la phase QAS1r/STEP, en s’appuyant sur la valeur T i+1 . Il peut alors associer la communication décrite par le bloc I i , le bloc J i+1 et le relai R i+1 à la connexion Con. Le bloc I i contient la clé rl i+1 qui lui permet de déchiffrer le champ D du message, pour avoir accès aux informations suivantes : Une commande Cmd,   L’identifiant de session S i+1 ,   (N – i – 1) blocs B i+1 à B N ,   I blocs de padding.   L’identifiant de session S i+1 permet au relai de connaître l’identifiant de session précédent S i , en s’appuyant sur le lien S i+1 / S i établi durant la phase QAS1r/STEP. Le relai génère le bloc B i =]“SAQ”, S i , K i [ Pk_i . Le relai envoie au relai précédent R i-1 le message (T i , [Cmd, S i , B i , …, B N , padding] rl _i ). Les communications mises en pause sont débloquées. Relai : Création de connexion lorsque celle-ci est déjà connue (QAS2) Le relai R i reçoit un message [“QAS2”, S i , Pk 1 … Pk N , D] rl _i-1 du relai R i-1 sur une connexion Con. QAS2 === TOR1 SAQ2 === ROT1 Connaissant Con, le relai peut récupérer rl i-1 associé et déchiffrer le message. Celui-ci contient : Une commande “QAS2”,   L’identifiant de session S i ,   Les clés publiques temporaires du client Pk,   Le défi proposé par le client D.   Si le relai R i est le dernier relai de la communication (il conna î t le serveur) Le serveur est S. Le relai génère un nouveau défi D’. Le relai génère une clé temporaire W i . Le relai génère le bloc B composé des informations : Le message “SAQ2”,   S i ,   D’,   W i ,   H(S, D).   Le relai envoie le message [“DATA1”, S i , ]B[ Pk_1 , (N-1) blocs de padding] rl_i-1 au relai R i-1 . Si le relai R i n’est pas le dernier relai de la communication Le relai connaît le prochain relai R i+1 à utiliser pour la communication. Le relai construit le message [“QAS2”, S i+1 , Pk 2 … Pk N , Bloc de padding, D] rl _i et envoie ce message au relai R i+1 . Relai : Phase descendante de Qas2 (SAQ2) Le relai R i reçoit un message M du relai R i+1 depuis une connexion Con. À partir de la connexion Con, le relai identifie la clé rl i+1 permettant de déchiffrer le message. Le relai déchiffre le message M avec cette clé pour obtenir les informations : S i+1 ,   N blocs de données D 1 ,…, D N .   Avec S i+1 , le relai connaît la communication concernée par ce message et récupère : Le token T i ,   Le token S i ,   La clé Pk i ,   Le relai précédent R i-1 ,   La clé rl i-1 .   Si le relai R i n’a pas encore établie une connexion avec le relai R i-1 Le relai se connecte au relai R i-1 et associe cette connexion à la communication. Le relai génère le message M=(T i , [“SAQ2”, S i , ]“SAQ2”, S i , K i [ Pk_i , D 1 ,…, D N-1 ] rl_i-1 ). Le relai envoie le message M au relai R i-1 . Si le relai R i a déjà établie une connexion avec le relai R i-1 Le relai génère le message M=(Ti, [“DATA1”, S i , [ “SAQ2”, S i , K i ] Pk_i , D 1 ,…, D N-1 ] rl_i-1 ). Il envoie le message M au relai R i-1 . Client-> Phase descendante de Qas2 (SAQ2) Le client reçoit un message (T 1 , [Cmd, S 1 , ]B 1 [ Pk_1 ,…, ]B N [ Pk_N ] rl_1 ) du relai R1. Avec T1, le client récupère : rl 1 ,   Pk 1 ,…, Pk N et   D.   Le client déchiffre le message M avec la clé rl 1 ainsi que les différents blocs B i . Chaque bloc B i est structuré de la manière suivante : B i = (Cmd i , S i , K i ). Le client mémorise les S i et K i . Relai : (QAS3) Si le relai R i est le dernier relai de la communication Le relai vérifie la réponse au défi avec la valeur …. Algorithme du relai -> (SAQ3) Algorithme du client -> fin de l’initialisation de la communication Bien sûr, l’invention n’est pas limitée aux exemples qui viennent d’être décrits et de nombreux aménagements peuvent être apportés à ces exemples sans sortir du cadre de l’invention. De plus, les différentes caractéristiques, formes, variantes et modes de réalisation de l’invention peuvent être associés les uns avec les autres selon diverses combinaisons dans la mesure où ils ne sont pas incompatibles ou exclusifs les uns des autres. Procédé de communication anonymisée entre un équipement client (C) et un serveur (S) au moyen d’un réseau informatique (1), le réseau informatique étant organisé en une pluralité de groupes (gC, g1, g2, g3), chaque groupe de ladite pluralité de groupe étant associé à au moins un attribut, chaque groupe comportant une pluralité d’équipements informatiques (LBc, C, LB1, R1, LB2, R2, LB3, R3), chaque équipement informatique d’un groupe possédant l’attribut dudit groupe, pour chaque groupe l’un des équipements informatique (LB C, LB1, LB2, LB3) étant désigné comme équipement superviseur dudit groupe, le client appartenant à l’un des groupes, le procédé comprenant les étapes suivantes : établissement (E1) par l’équipement client d’un chemin de communication entre l’équipement client et le serveur, le chemin de communication étant une liste ordonnée de groupes, création (E2) par l’équipement client d’un paquet comprenant pour chacun des groupes de la liste, des instructions à destination de l’équipement superviseur dudit groupe de faire progresser la connexion par le groupe successeur dans le la liste, à réception d’un paquet par un superviseur d’un groupe de la liste, provenant de l’équipement client ou d’un équipement d’un groupe précédent : sélection par ledit superviseur du groupe d’un équipement désigné comme relais au sein dudit groupe, à partir des instructions reçues à destination dudit équipement superviseur, transmission du paquet audit relai, et enregistrement par le relais du groupe de l’identité du relais du groupe précédent, si le groupe est le dernier de la liste ordonnée de groupe, établissement par ledit relais dudit groupe et le serveur, et transmission de sa clé au relais du groupe précédent, sinon transmission dudit paquet par ledit relais du groupe au superviseur du groupe suivant de la liste, à réception d’un paquet par un relais d’un groupe de la liste, le paquet provenant d’un équipement du groupe suivant de la liste : enregistrement par le relais du groupe de l’identité du relais du groupe suivant, ajout au paquet de la clé du groupe transmission du paquet au relais du groupe précédent à réception par le client d’un paquet provenant d’un équipement du premier groupe de la liste, échanges de données utiles entre le client et le serveur par routage de type oignon sur le chemin de communication, au moyen d’un algorithme de chiffrement par attributs, les attributs étant ceux groupes de la liste. Procédé selon la revendication 1, dans lequel, lorsqu’un équipement relais n’appartient plus au réseau, ledit équipement est remplacé par un autre équipement du même groupe. Procédé selon la revendication précédente, dans lequel le remplacement est réalisé par l’équipement superviseur du groupe. Procédé de communication selon l’une quelconque des revendications précédentes, dans lequel le serveur est configuré pour diffuser un flux de données, le flux de données transitant par des groupes du réseau informatique, chacun desdits groupes maintenant une liste d’empreinte de flux de données transitant en son sein. Procédé selon la revendication précédente, dans lequel l’équipement superviseur d’un groupe maintient la liste d’empreintes. Procédé selon la revendication 4, dans lequel la liste d’empreintes est distribuée sur les équipements dudit groupe. Procédé selon l’une quelconque des revendications 4 à 6, dans lequel lors de l’établissement de chemin de communication entre l’équipement client et le serveur, le client transmet une empreinte du flux de données et, sur reconnaissance de ladite empreinte au sein d’une liste d’empreinte d’un groupe, la connexion entre l’équipement client et le serveur est formée d’une connexion entre l’équipement client et le relais du groupe et de la connexion entre le relais du groupe et le serveur.