Objectif : Dans le cadre de la SAÉ 3.02, nous avons conçu et implémenté en Python une architecture distribuée de communication anonyme inspirée du protocole Tor, reposant sur un système de routeurs virtuels interconnectés, un serveur maître et plusieurs clients, avec chiffrement asymétrique par couches successives (onion routing).
Réalisations techniques :
L’architecture développée s’articule autour de trois composants principaux communiquant via des sockets TCP et gérés par multi-threading pour supporter les connexions simultanées.
Le serveur Master constitue le cœur de l’infrastructure : à l’initialisation, chaque routeur virtuel génère une paire de clés asymétriques implémentée manuellement en Python, sans bibliothèque cryptographique externe, et transmet sa clé publique ainsi que son port d’écoute au Master. Ce dernier centralise l’ensemble des clés et des tables de routage dans une base de données MariaDB, et les redistribue aux clients sur demande.
Côté clients, le principe de l’onion routing a été intégralement implémenté : le client sélectionne aléatoirement une chaîne de routeurs, récupère leurs clés publiques auprès du Master, puis construit un message chiffré par couches successives. Chaque routeur ne déchiffre qu’une seule couche avec sa clé privée, découvre uniquement l’adresse du prochain saut, et transmet le reste du message opaque — garantissant qu’aucun nœud intermédiaire ne connaît à la fois l’origine et la destination.
Les interfaces graphiques développées sous PyQt5/PyQt6 permettent au Master de visualiser en temps réel la topologie et les logs anonymisés, et au client d’envoyer et recevoir des messages de manière non bloquante. L’ensemble a été testé sur un environnement multi-machines et VMs afin de valider l’anonymisation effective des flux.
Vidéo de démonstration de l’application :
Cette SAE met en oeuvre les apprentissages critique de la compétence Connecter les entreprises et les usagers :
- AC12.05 | Communiquer avec un tiers (client, collaborateur…) et adapter son discours et sa langue à son interlocuteur
Cette SAE met en oeuvre les apprentissages critiques suivants de la compétences Développer une application R&T :
- AC23.02 | Développer une application à partir d’un cahier des charges donné, pour le Web ou les périphériques mobiles
- AC23.03 | Utiliser un protocole réseau pour programmer une application client/serveur
- AC23.04 | Installer, administrer un système de gestion de données
- AC23.05 | Accéder à un ensemble de données depuis une application et/ou un site web
Conclusion : Cette SAÉ nous a permis d’appréhender concrètement les problématiques liées à l’anonymisation des communications sur un réseau distribué, en implémentant de bout en bout un système inspiré de Tor entièrement en Python. Au-delà de la logique réseau avec les sockets et le multi-threading, nous avons approfondi notre compréhension du chiffrement asymétrique en l’implémentant manuellement, sans bibliothèque dédiée, ce qui nous a obligés à maîtriser les principes mathématiques sous-jacents. Ce projet nous a également sensibilisés à la conception d’applications distribuées robustes, à la gestion d’une base de données centralisée et au développement d’interfaces graphiques réactives — des compétences directement transposables dans un contexte professionnel.



