
Noisegate: una puerta de enlace de privacidad diferencial que permite que un agente LLM no confiable consulte datos sensibles a través de MCP (Model Context Protocol), con una garantía formal de que ningún registro individual puede filtrarse incluso si el agente es adversario - la aplicación de la garantía reside en código de confianza por debajo del modelo, validado por una galería de ataques ejecutable.
Un agente de IA que puede estudiar datos confidenciales sin poder identificar a una persona concreta. El límite es matemático, se aplica en código al que el agente no puede acceder, y el repositorio incluye los ataques que intentan romperlo.
Una sesión grabada de Claude Desktop (respuestas recortadas; las tarjetas de gráficos son las propias de la sesión). Un agente de IA desglosa a 20 pacientes por diagnóstico, y el ruido de ±12 inunda cada categoría. Al recordarle que no puede desactivar el ruido, agota un presupuesto de tres respuestas hasta que la puerta devuelve una negativa en lugar de una respuesta más silenciosa. En el censo de 32 561 filas, un segmento demasiado estrecho es rechazado en la frontera de confianza, mientras que un desglose completo por educación vuelve limpio a escala. La negativa y el rechazo son la aplicación real de la puerta en vivo, reproducida por python scripts/render_demo_gif.py.
Haces preguntas sobre un conjunto de datos confidencial en inglés sencillo. Un LLM convierte cada pregunta en una consulta pequeña y restringida. Un motor de privacidad diferencial la ejecuta bajo un presupuesto de privacidad rastreado y devuelve una respuesta deliberadamente ruidosa con un intervalo de confianza declarado. Como su homónimo de audio, la pasarela mantiene toda señal por debajo de un umbral establecido bajo el suelo de ruido: la contribución de cualquier individuo queda ahogada, mientras que la señal a escala de todo el conjunto de datos pasa casi intacta.
Lo interesante no es que un LLM pueda escribir consultas. Es que la garantía de privacidad no depende de que el LLM sea confiable. El modelo es una conveniencia que propone una consulta. No aplica nada. Cada propiedad de privacidad se aplica en las etapas posteriores, mediante componentes que se comportarían de la misma manera si un humano escribiera la consulta a mano. Esta es la disciplina de frontera de confianza que aplicarías a cualquier entrada no confiable en un sistema de producción, aplicada aquí a un agente de IA.
La galería de ataques se ejecuta en el proceso contra el motor DP real:```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. Conectar un agente de IA
La puerta de enlace se ejecuta como un servidor MCP stdio para Claude Desktop. El agente se convierte en el autor de consultas no confiable y solo recibe herramientas estructuradas (`count`, `sum`, `average`, `histogram`, `get_budget`) cuyos esquemas de argumentos se generan a partir de la política del conjunto de datos. No se necesita ninguna clave API en ningún lugar, porque el agente que se conecta es la inteligencia.
**[Configuración y guía completa →](https://github.com/yashmahajan10/llm-differential-privacy-gateway/blob/main/docs/CLAUDE_DESKTOP.md)**
### 3. La interfaz completa de lenguaje natural
Una demo local de un solo inquilino. Solo se necesita una clave API para el compilador no confiable de NL→consulta:```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
Esa superficie HTTP + Streamlit es una demo local de un solo inquilino. La identidad proviene de un encabezado X-Identity que se puede suplantar, por lo que está pensada para un operador de confianza en su propia máquina, no para un despliegue público (consulta qué son y qué no son estas superficies). Para la configuración local sin Docker, la ejecución de los tests y las opciones de configuración, consulta SETUP.md.
Cualquiera puede afirmar que respeta la privacidad. Este repositorio incluye los exploits que romperían esa afirmación, los ejecuta contra su propio motor y fija los resultados en CI. La forma más rápida de entender qué garantiza el gateway es verlo derrotar tres ataques clásicos que rompen los sistemas ingenuos de "consultar una base de datos".
Un ataque de diferencias aísla a una persona haciendo dos preguntas agregadas que difieren exactamente en esa persona.``` Query A: "Total income of all 100 people in department X." → $7,240,000 Query B: "Total income of all people in department X except Alice." → $7,135,000 Attacker computes: A − B = $105,000 ← Alice's exact salary, leaked.
Ambas consultas son «solo agregados». Ninguna nombra una fila individual. Sin embargo, juntas exponen a una persona. La galería (`attacks/differencing.py`) muestra este ataque **teniendo éxito con la privacidad desactivada**: el valor privado del objetivo se recupera exactamente. (El boceto del salario es ilustrativo; en los datos reales UCI Adult, «Alice» es la única titular del máximo aumento de capital de su grupo.) A continuación, muestra el mismo ataque **derrotado una vez que DP está activada**: el ruido calibrado en cada respuesta hace que la resta sea inútil, y el contador de presupuesto cobra por la información liberada a través de *ambas* consultas en lugar de tratarlas como independientes.
### Ataque 2: Inferencia de pertenencia