
Noisegate : une passerelle de confidentialité différentielle qui permet à un agent LLM non fiable d'interroger des données sensibles via MCP (Model Context Protocol), avec la garantie formelle qu'aucun enregistrement individuel ne peut fuiter même si l'agent est adversarial - l'application est assurée par du code de confiance situé sous le modèle, validé par une galerie d'attaques exécutable.
Un agent IA qui peut étudier des données sensibles sans pouvoir identifier qui que ce soit. La limite est mathématique, elle est appliquée dans du code que l'agent ne peut pas atteindre, et le dépôt fournit les attaques qui tentent de la briser.
Une session Claude Desktop enregistrée (réponses abrégées ; les cartes de graphiques appartiennent à la session elle-même). Un agent IA répartit 20 patients par diagnostic, et le bruit de ±12 submerge chaque intervalle. Rappelé qu'il ne peut pas désactiver le bruit, il épuise un budget de trois réponses jusqu'à ce que la porte renvoie un refus au lieu d'une réponse plus silencieuse. Sur le recensement de 32 561 lignes, une tranche trop étroite est rejetée à la frontière de confiance, tandis qu'une répartition complète par niveau d'éducation revient propre à grande échelle. Le refus et le rejet sont l'application réelle de la passerelle en direct, reproduite par python scripts/render_demo_gif.py.
Vous posez des questions sur un jeu de données sensible en langage naturel. Un LLM compile chaque question en une requête petite et contrainte. Un moteur de confidentialité différentielle l'exécute sous un budget de confidentialité suivi et renvoie une réponse délibérément bruitée avec un intervalle de confiance déclaré. Comme son homonyme audio, la passerelle maintient tout signal en dessous d'un seuil défini sous le plancher de bruit : la contribution de tout individu est noyée, tandis que le signal à l'échelle de l'ensemble du jeu de données passe presque intact.
La partie intéressante n'est pas qu'un LLM puisse écrire des requêtes. C'est que la garantie de confidentialité ne dépend pas de la fiabilité du LLM. Le modèle est une commodité qui propose une requête. Il n'applique rien. Chaque propriété de confidentialité est appliquée en aval, par des composants qui se comporteraient de la même manière si un humain tapait la requête à la main. C'est la discipline de frontière de confiance que vous appliqueriez à toute entrée non fiable dans un système de production, appliquée ici à un agent IA.
La galerie d'attaques s'exécute en processus contre le véritable moteur DP :```bash pip install -e . python -m attacks.patients_alice # re-identify Alice with privacy off, then watch # the guard, the noise, and the budget defeat it
### 2. Connecter un agent IA
La passerelle fonctionne comme un serveur MCP stdio pour Claude Desktop. L'agent devient l'auteur de requêtes non fiable, et il ne dispose que d'outils structurés (`count`, `sum`, `average`, `histogram`, `get_budget`) dont les schémas d'arguments sont générés à partir de la politique du jeu de données. Aucune clé API n'est nécessaire nulle part, car l'agent connecté est l'intelligence.
**[Configuration et guide complet →](https://github.com/yashmahajan10/llm-differential-privacy-gateway/blob/main/docs/CLAUDE_DESKTOP.md)**
### 3. L'interface complète en langage naturel
Une démo locale mono-tenant. Une clé API n'est nécessaire que pour le compilateur non fiable NL→requête :```bash
export ANTHROPIC_API_KEY=... # used only by the untrusted NL→query compiler
docker compose up # brings up the engine, API, and UI
# open http://localhost:8501
Cette surface HTTP + Streamlit est une démo locale mono-utilisateur. L'identité provient d'un en-tête X-Identity falsifiable, elle est donc destinée à un seul opérateur de confiance sur sa propre machine, et non à un déploiement public (voir ce que ces surfaces sont, et ne sont pas). Pour une installation locale sans Docker, l'exécution des tests et les paramètres de configuration, voir SETUP.md.
N'importe qui peut revendiquer la confidentialité. Ce dépôt fournit les exploits qui briseraient cette revendication, les exécute contre son propre moteur et fige les résultats dans la CI. Le moyen le plus rapide de comprendre ce que garantit la passerelle est de la voir déjouer trois attaques classiques qui mettent à mal les systèmes naïfs de type « interroger une base de données ».