AEGIS · Phase 8 terminée

Le chiffrement cache ce que vous avez dit. Ceci cache que vous avez parlé.

Le chiffrement garde privé le contenu d’un message. Il ne cache pas que le message a eu lieu. Un observateur qui surveille le réseau voit toujours qui parle à qui, quand, et combien de kilooctets (Ko) ont circulé — ce qui, dans un contexte sensible, peut compter autant que les mots. AEGIS maintient le trafic entre les membres d’un groupe fermé à débit constant, qu’il y ait quelque chose à envoyer ou non, si bien que le rythme et le volume ne portent aucun signal.

LangageRust
AdversairePassif global
Tests du workspace195 réussis
Fuzzing1,17 M+ d’exécutions
Dernier envoirécemment
La règle unique

“Rien n’est fait tant qu’une simulation d’attaque ne l’a pas confirmé.”

L’intuition sur l’analyse de trafic s’est trompée à plusieurs reprises pendant le développement. Seul le banc de simulation s’est révélé digne de confiance, il est donc devenu le contrôle. Le banc Python dans sim/ est le registre de preuves derrière chaque chiffre de la spécification — pas un ajout après coup qui valide une conception déjà livrée.

En clair

Ce que c’est, en une minute

Le problème

Qui peut observer le réseau n’a pas besoin de casser le chiffrement. Il voit qu’un point a émis 14 Ko à 09:41:03 et qu’un autre a reçu 14 Ko trois secondes plus tard, et que la même chose se produit deux fois par jour pendant onze semaines. Répété assez souvent, c’est une carte de qui travaille avec qui, dessinée sans lire un seul message.

La solution

AEGIS fait en sorte que le fil ait toujours la même allure. Le trafic sort à débit constant qu’il y ait quelque chose à envoyer ou non, et ce qui arrive est rempli jusqu’à une taille fixe, si bien qu’il n’y a pas de rafale d’un côté à faire correspondre à une rafale de l’autre. Ça coûte de la bande passante et ça ajoute du délai ; la démonstration ci-dessous montre la protection et son prix côte à côte.

À qui cela s’adresse

Les rédactions et quiconque protège une source, où l’heure et la taille d’un contact sont ce qui expose une personne. Les banques, les assureurs et les fédérations professionnelles qui se concurrencent et doivent tout de même échanger des données. Les organisations qui partagent des alertes d’attaque, où être vu en train de partager peut être en soi la partie sensible.

Cacher le contenu, c’est la moitié la plus facile. Cacher le motif, c’est la partie qui demande l’ingénierie ci-dessous : la menace en entier, une attaque que vous pouvez lancer vous-même contre les deux configurations, les chiffres des tests, et là où les garanties s’arrêtent.
La menace

Les métadonnées, c’est la partie qui vous identifie

Un adversaire passif global ne peut pas lire vos messages. Il n’en a pas besoin. Il observe tous les liens à la fois et corrèle : ce point a émis 14 Ko à 09:41:03, cet autre a reçu 14 Ko à 09:41:06, et le motif se répète deux fois par jour pendant onze semaines.

Le volume et le rythme suffisent à reconstituer le graphe des relations d’une organisation entière sans casser un seul chiffrement. Pour un consortium — des banques qui se règlent entre elles, des hôpitaux qui partagent des dossiers, des rédactions avec des sources — le graphe est l’information sensible.

AEGIS transforme le fil en un mur plat et immuable. Débit constant quoi qu’il se passe en dessous, si bien que le volume et le rythme ne portent aucun signal. La démonstration ci-dessous vous laisse lancer l’attaque contre les deux configurations et voir la différence.

Mode 1

Mixnet mis en forme

Données petites et en rafales, plus tout le trafic de contrôle. Paquets Sphinx émis à débit constant, avec un remplissage plafonné côté récepteur pour que le volume entrant d’un récepteur soit lui aussi fixe.

Mode 2

Plan de volume

Transfert de gros fichiers avec un niveau de sécurité réglable — brut, par paliers, ou groupé uniformément. Vous choisissez où vous vous placez sur la courbe de coût ; rien n’est caché sur le prix.

Interactif

Soyez l’adversaire passif global

Cinq émetteurs parlent chacun à exactement un des cinq récepteurs. Vous ne voyez que le volume de trafic sur chaque lien — jamais le contenu, jamais le routage. Corrélez les séries et essayez de retrouver l’appariement. Puis activez la défense à débit constant et réessayez.

Deux profils de fil comparés : le trafic non mis en forme montre des rafales traçables et l’adversaire retrouve le graphe des relations ; le trafic mis en forme à débit constant est plat et la récupération retombe au niveau du hasard
faites défiler pour voir tout le schéma →
Ce que l’adversaire voit réellement. Lancez l’attaque vous-même ci-dessous — les chiffres de cette image sont ceux que produit la démonstration.

banc d’analyse de trafic

Lien émetteur Lien récepteur Corrélation, forte Corrélation, faible

Conclusion de l’adversaire

Corrélation en cours…
 
Paires retrouvées
—
Corrélation maximale
—

Coût de la défense

Bande passante
1,0×
Latence ajoutée
0 ms

Le hasard, c’est 20 % — une paire sur cinq retrouvée en devinant. Tout ce qui dépasse nettement ce seuil, c’est l’adversaire qui gagne. Les chiffres de coût sont l’autre moitié honnête : la mise en forme à débit constant n’est pas gratuite, et AEGIS ne prétend pas le contraire.

Une illustration à un seul saut, écrite pour cette page. Le vrai système empile le routage Sphinx, la sélection des nœuds de garde, des balises d’aléa distribuées et des preuves de réputation à divulgation nulle par-dessus la mise en forme montrée ici.
Preuves

Huit phases, chacune derrière un contrôle d’équipe rouge

L’implémentation est complète jusqu’à la phase 8, le durcissement. Voici les chiffres que rapporte le dépôt : le fuzzing a tourné sous Windows Subsystem for Linux (WSL), et le testnet sur de vraies sockets du protocole de contrôle de transmission (TCP).

36/36
Vecteurs de test cryptographiques
195
Tests du workspace réussis
1.17M+
Exécutions de fuzzing, zéro plantage
41/41
Tests de topologie
DomaineRésultatNotes
Vecteurs cryptographiques36 / 36 
Routage par relais14 / 14 
Topologie41 / 41 
Négociateur / corrélation de volume25 / 25 
Tests du workspace195Tous réussis
Fuzzing de sécurité1.17M+libFuzzer via WSL, zéro plantage
TestnetTCP réelRoutage de paquets Sphinx sur de vraies sockets
Analyse de tracesBénin vs malveillantComparaison sur traces réelles
À qui cela s’adresse

Cache qui parle, pas seulement ce qui a été dit

Brouiller un message est un problème résolu. Ce que cela ne cache pas, c’est que vous en avez envoyé un, à qui, quand et combien. Ce seul motif suffit souvent à identifier des personnes.

01

Rédactions et quiconque protège une source

Personne n’a besoin de lire le message s’il peut voir qu’une personne précise a contacté un journaliste précis à deux heures du matin. Ce sont l’horaire et la taille qui exposent les gens.

02

Des entreprises rivales qui doivent quand même partager des données

Banques, assureurs et groupements professionnels échangent des informations tout en se faisant concurrence. À qui vous vous mettez soudain à parler, et à quelle fréquence, révèle ce sur quoi vous travaillez.

03

Des organisations qui s’échangent des alertes sur des attaques

Partager des informations sur les menaces est utile, mais être vu en train de le faire peut être en soi la partie sensible. Ceci garde privé le fait même de la conversation, pas seulement son contenu.

Vous reconnaissez votre situation ? C’est ouvert aux tests bêta dès maintenant, et ce sont les retours des gens pour qui c’est construit qui le font réellement changer. Devenir bêta-testeur →
Défenses

Ce qui se pose par-dessus la mise en forme

  • Poignées de main à confidentialité persistante. La compromission des clés de long terme n’expose pas rétroactivement les sessions.
  • Sélection de chemin sensible à la réputation. Les routes préfèrent les relais au comportement établi.
  • Balises d’aléa distribuées. Aucune partie ne contrôle à elle seule l’entropie de sélection des chemins.
  • Preuves de réputation à divulgation nulle. Un relais prouve qu’il dépasse un seuil de réputation sans révéler son score.
  • Sélection des nœuds de garde. Résistance aux attaques Sybil là où elle compte le plus.
Des limites honnêtes

Où les garanties s’arrêtent

  • Trafic interne uniquement. Les garanties fortes s’appliquent à l’intérieur du consortium. La sortie en clair est plus faible et rien d’autre n’est prétendu.
  • Empirique, pas démontré. Les résultats sont des bornes empiriques sous le modèle d’adversaire énoncé. Ce ne sont pas des démonstrations mathématiques.
  • La latence est inhérente. Une latence de plusieurs secondes est une propriété de la conception, pas un problème de réglage qu’on finira par optimiser.
  • Mauvais outil pour deux parties. AEGIS convient pour cacher un graphe de relations entre de nombreux points. Pour un lien entre deux parties, les défenses de couche liaison font mieux.
  • Il reste de la recherche ouverte. docs/ops/RESEARCH_AGENDA.md est le carnet honnête de ce qui n’est pas fini.
Hygiène du dépôt : Intégration continue (CI) sur GitHub Actions, cargo deny et une politique à l’échelle du workspace interdisant le code unsafe. Pour une pile réseau Rust qui traite des entrées hostiles, #![forbid(unsafe_code)] sur tout le workspace est la ligne la plus porteuse du projet.