PING / PONG
Utilisés pour la découverte de pairs. Le PONG renvoie une liste de voisins connus pour permettre au nouvel entrant de tisser ses liens.
Compte-rendu Technique : Architecture & Implémentation
Ce projet consiste en la conception et l'implémentation d'un réseau de commande et de contrôle (C2) distribué. L'objectif principal est de s'affranchir d'un serveur central vulnérable (Single Point of Failure) au profit d'un réseau overlay décentralisé résilient.
Le système assure une communication sécurisée, la découverte dynamique de pairs (Peer Discovery) et un contrôle strict de l'admission des nœuds via un système de certificats signés par une racine de confiance.
Le réseau n'est pas un maillage complet (full mesh) mais un graphe aléatoire partiel. Chaque nœud maintient une table de pairs limitée (6 à 12 voisins), assurant une faible consommation de ressources tout en garantissant une connectivité globale élevée.
Visualisation d'une portion du réseau overlay avec chemins redondants.
Pour garantir que seuls des nœuds de confiance rejoignent l'overlay, le système utilise un modèle de provisioning offline. Contrairement au Web classique, il n'y a pas de CA en ligne ; la confiance est établie lors de la création du nœud.
Root Key hors-ligne.Ce mécanisme élimine les dépendances aux serveurs de noms ou aux autorités de certification tierces, renforçant l'aspect "furtif" et autonome du réseau.
Conformément au parcours DACS, la sécurité est intégrée dès la conception (Security by Design). Tout échange est protégé par TLS 1.3 avec authentification mutuelle (mTLS).
| Menace | Mécanisme de Défense |
|---|---|
| Interception (MITM) | Chiffrement TLS 1.3 forcé sur chaque lien. |
| Usurpation d'Identité | Certificats pré-signés par une racine de confiance locale. |
| Nœud Compromis | Propagation de listes de révocation signées (REVOKE_CERT). |
L'identité d'un nœud (Node ID) est le résultat d'un hachage SHA256 de sa clé publique, rendant toute usurpation impossible sans la clé privée correspondante.
Le protocole binaire est structuré pour être léger et extensible. Chaque paquet partage une en-tête commune.
// Structure simplifiée de l'en-tête (Header)
public class MessageHeader {
UUID messageId; // Identifiant unique (détection de doublons)
MessageType type; // PING, PONG, SYN, ACK, REVOKE
int ttl; // Time To Live pour limiter la propagation
long timestamp; // Horodatage pour la validité temporelle
byte[] signature; // Signature par le nœud émetteur
}
Utilisés pour la découverte de pairs. Le PONG renvoie une liste de voisins connus pour permettre au nouvel entrant de tisser ses liens.
Messages de données et de contrôle avec acquittement, assurant la fiabilité applicative sur le réseau TCP.
La diffusion des informations repose sur le Gossip Routing (Fanout Routing). Lorsqu'un nœud reçoit un message inconnu, il le relaie à une sélection aléatoire de voisins (fanout=3) jusqu'à épuisement du TTL.
Pour permettre la communication entre des nœuds situés derrière des pare-feux restrictifs ou des NAT (Network Address Translation), le réseau implémente la technique de UDP Hole Punching.
Le processus se déroule en trois étapes clés :
Le Bootstrap est la porte d'entrée du réseau. Ce nœud, dont l'adresse est fixe et connue, permet à tout nouvel arrivant d'intégrer le graphe sans connaissance préalable de la topologie.
Le Handshake initial passe par une vérification mutuelle des certificats (mTLS) avant que le Bootstrap ne délivre une portion de sa propre table de pairs (Peer Table), permettant au nouveau nœud de commencer son propre "Gossip" et d'équilibrer ses liens.
Diagramme de séquence détaillant l'admission et la première phase de découverte.
Mise en place du serveur TCP et de la couche SSLContext. Gestion des KeyManagers et TrustManagers pour l'authentification mutuelle.
Définition de la structure des paquets et implémentation de la sérialisation binaire efficace. Gestion des files d'attente asynchrones.
Implémentation de l'algorithme de propagation probabiliste et de la détection de cycles (via le cache des MessageIDs).
Ce projet démontre ma capacité à concevoir et réaliser une infrastructure critique sécurisée de A à Z, en respectant les standards de l'industrie en matière de cryptographie et de réseau.