SAE 3.02 — Développer des applications communicantes
Système de routage en oignon : des clients échangent des messages de façon anonyme en les faisant transiter par plusieurs routeurs intermédiaires, chacun retirant une couche de chiffrement avant de transmettre le message au suivant.
Projet réalisé seul, de la conception à l'implémentation finale, pour garder une vision globale cohérente sur l'ensemble des composants (client, routeurs, master, base de données).
Itérations du projet
Construit progressivement, avec suivi Git et diagramme de Gantt :
- V1 — communication entre les composants sans chiffrement, routeurs stockés dans une simple liste Python côté master
- V2 — ajout du chiffrement (RSA pour la clé, XOR pour le message)
- V3 — stockage des routeurs dans une base de données MariaDB
- V4 — interfaces graphiques PyQt5 pour le master et les clients
- V5 — exécution en ligne de commande, sans interface graphique
Objectif & Contexte
Créer un système permettant à des clients d'échanger des messages sans que les routeurs intermédiaires connaissent l'intégralité du chemin parcouru. Le message est chiffré en plusieurs couches (une par routeur du trajet) ; chaque routeur ne retire que sa propre couche avant de transmettre la suite au routeur suivant.
Compétences développées
- CE3 : Créer des outils et applications informatiques pour les R&T
- AC23.02 : Développer une application à partir d'un cahier des charges
- AC23.03 : Utiliser un protocole réseau pour une application client/serveur
- AC23.04 : Installer et administrer un système de gestion de données
- AC23.05 : Accéder à un ensemble de données depuis une application
Architecture & protocole
Trois rôles communiquent en TCP (connexions gérées par threads) : le master enregistre les routeurs et fournit un chemin aléatoire aux clients ; les routeurs retirent une couche de chiffrement avant de transmettre ; les clients chiffrent le message couche par couche avant de l'envoyer au premier routeur du chemin.
- Chiffrement hybride : RSA (implémenté à la main) pour la clé, XOR pour le message
- Protocole textuel :
ROUTER_REGISTER/ROUTER_UNREGISTER,CLIENT_GET_PATH/PATH,NEXT/DELIVER - Persistance des routeurs (IP, port, clé publique) dans une base MariaDB
Bilan — points positifs & limites
Points positifs : projet complet et fonctionnel, bonne compréhension des communications réseau, mise en pratique concrète du routage en oignon, gestion d'un projet complexe en autonomie.
Limites assumées : chiffrement volontairement simple (RSA artisanal, XOR), non sécurisé pour un usage réel ; pas d'authentification des clients ni de protection contre des attaques réelles — des limites pédagogiques, pas des oublis.
Travailler seul a demandé une charge de travail plus importante et un débogage parfois long sans aide extérieure, mais a permis de garder une vision cohérente de bout en bout sur l'ensemble du projet.
Screenshots (cliquez pour agrandir)
À adapter : noms des captures et lien GitHub à vérifier/compléter avec tes propres fichiers.