Le projet ANet (ANet Secure Transport Protocol) développe une pile alternative pour l'organisation de tunnels sécurisés, destinée à fusionner des réseaux privés dans des conditions où les solutions standards (WireGuard, OpenVPN) ne peuvent pas être appliquées pour diverses raisons. Le projet est présenté non pas comme un simple fork de WireGuard, mais comme un « Réseau d'Amis » (Friends-to-Friends VPN) avec un accent sur l'utilisation d'algorithmes cryptographiques éprouvés et un fonctionnement autonome en mode « Dead Man’s Hand ». ANet utilise son propre protocole de transport ASTP (ANet Secure Transport Protocol), assurant un chiffrement de bout en bout complet, résistant à une forte perte de paquets et indiscernable du trafic UDP aléatoire. Le code est écrit de zéro en langage Rust et distribué sous licence MIT, mais avec une interdiction explicite d'inclure des dépendances sous GPL 2.0 et 3.0.
Caractéristiques principales :
- Utilisation des algorithmes cryptographiques ChaCha20/Poly1305 pour le flux, X25519 pour DH éphémère, Ed25519 pour l'authentification. Aucun algorithme héritage et pas de « béquilles pour la compatibilité avec Windows XP ».
- Transport basé sur un habillage semblable à QUIC au-dessus de UDP, mais avec un framing propre : chaque paquet est enveloppé dans une « enveloppe » chiffrée avec un remplissage aléatoire et un jitter (de 0 à N nanosecondes), masquant ainsi le processus de négociation de connexion sous du bruit blanc.
- Architecture distribuée avec un serveur d'authentification (anet-auth), vérifiant le fingerprint du client (SHA256 de la clé publique basée sur Ed25519). Le tunnel est établi via un PSK (pre-shared key), obtenu par le biais d'un handshake en 4 phases (DH + double ratchet). Si le serveur d'authentification tombe, le réseau continue de fonctionner sur les clés préalablement chargées (failover jusqu'au mode local complet).
- Plateformes prises en charge : Linux (TUN), Windows (Wintun), macOS (utun), Android (VpnService via JNI). Il existe une interface graphique sur egui (native Rust) et une TUI pour les serveurs sans tête. Des compilations binaires sont fournies.
Contrairement à WireGuard avec son handshake reconnaissable (Magic number + Noise Protocol) et OpenVPN un empreinte TLS caractéristique, dans le protocole ASTP, chaque paquet commence par un nonce aléatoire (12 octets), suivi d'un texte chiffré de longueur variable avec un remplissage additionnel jusqu'à la taille de bloc la plus proche (configurable). Pour un observateur externe, le trafic est indiscernable du hasard. ANet est présenté comme une tentative de ramener à la VPN « physicalité » de l'époque floppinet (HDD chez un ami), mais en numérique : PSK (pre-shared keys), gestion manuelle des itinéraires, « zero-knowledge proof » via empreinte.
Le projet est accompagné d'un code de conduite (Code of Conduct), préparé selon le principe de « radical honesty ». Les règles stipulent le « droit d'insulter » (droit d'insulter tout développeur en cas de mauvais code), le « retour miroité » (les plaintes concernant la toxicité sont ignorées), la priorité au code (peu importe l'auteur, ce qui compte c'est la qualité du code) et une interdiction pour toute tentative d'imposer la correction politique.
Source : opennet.ru
