
Noisegate: um gateway de privacidade diferencial que permite a um agente LLM não confiável consultar dados sensíveis via MCP (Model Context Protocol), com garantia formal de que o registro de nenhum indivíduo pode vazar mesmo que o agente seja adversário - a aplicação reside em código confiável abaixo do modelo, validado por uma galeria de ataques executável.
Um agente de IA que consegue estudar dados sensíveis sem conseguir individualizar ninguém. O limite é matemático, é imposto em código que o agente não consegue alcançar, e o repositório inclui os ataques que tentam quebrá-lo.
Uma sessão gravada do Claude Desktop (respostas encurtadas; os cartões de gráfico são da própria sessão). Um agente de IA decompõe 20 pacientes por diagnóstico, e o ruído de ±12 submerge cada bin. Avisado de que não consegue desligar o ruído, esgota um orçamento de três respostas até o gate devolver uma recusa em vez de uma resposta mais silenciosa. No censo de 32.561 linhas, uma fatia demasiado estreita é rejeitada na fronteira de confiança, enquanto uma decomposição completa por nível de educação volta limpa à escala. A recusa e a rejeição são a aplicação real do gateway em funcionamento, reproduzida por python scripts/render_demo_gif.py.
Fazes perguntas sobre um conjunto de dados sensível em linguagem natural. Um LLM compila cada pergunta numa consulta pequena e restringida. Um motor de privacidade diferencial executa-a sob um orçamento de privacidade monitorizado e devolve uma resposta deliberadamente ruidosa com um intervalo de confiança declarado. Tal como o seu homónimo áudio, o gateway mantém todo o sinal abaixo de um limiar definido sob o piso de ruído: a contribuição de qualquer indivíduo é abafada, enquanto o sinal à escala de todo o conjunto de dados passa quase intacto.
A parte interessante não é que um LLM consiga escrever consultas. É que a garantia de privacidade não depende de o LLM ser digno de confiança. O modelo é uma conveniência que propõe uma consulta. Não impõe nada. Todas as propriedades de privacidade são impostas a jusante, por componentes que se comportariam da mesma forma se um humano escrevesse a consulta à mão. Esta é a disciplina de fronteira de confiança que aplicarias a qualquer entrada não confiável num sistema de produção, aplicada aqui a um agente de IA.
A galeria de ataques corre em processo contra o verdadeiro motor de 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. Conecte um agente de IA
O gateway é executado como um servidor MCP stdio para o Claude Desktop. O agente torna-se o autor de consultas não confiável e recebe apenas ferramentas estruturadas (`count`, `sum`, `average`, `histogram`, `get_budget`) cujos esquemas de argumentos são gerados a partir da política do conjunto de dados. Nenhuma chave de API é necessária em nenhum lugar, porque o agente conectado é a inteligência.
**[Configuração e passo a passo completo →](https://github.com/yashmahajan10/llm-differential-privacy-gateway/blob/main/docs/CLAUDE_DESKTOP.md)**
### 3. A interface completa em linguagem natural
Uma demonstração local de inquilino único. Uma chave de API é necessária apenas para o compilador não confiável 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
Essa superfície HTTP + Streamlit é uma demo local, single-tenant. A identidade vem de um cabeçalho X-Identity falsificável, portanto destina-se a um único operador confiável em sua própria máquina, não a uma implantação pública (consulte o que essas superfícies são e não são). Para configuração local sem Docker, execução dos testes e ajustes de configuração, consulte SETUP.md.
Qualquer um pode alegar privacidade. Este repositório inclui os exploits que quebrariam essa alegação, executa-os contra seu próprio motor e fixa os resultados no CI. A maneira mais rápida de entender o que o gateway garante é vê-lo derrotar três ataques clássicos que quebram sistemas ingênuos de "consultar um banco de dados".
Um ataque de diferença isola uma pessoa fazendo duas perguntas agregadas que diferem exatamente por essa pessoa.``` 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 as consultas são "apenas agregados". Nenhuma nomeia uma única linha. No entanto, juntas expõem um indivíduo. A galeria (`attacks/differencing.py`) mostra este ataque **a ter sucesso com a privacidade desativada**: o valor privado do alvo é recuperado exatamente. (O esboço de salário acima é ilustrativo; nos dados reais do UCI Adult, "Alice" é a única detentora do ganho de capital máximo do seu grupo.) Em seguida, mostra o mesmo ataque **derrotado assim que a DP está ativada**: o ruído calibrado em cada resposta torna a subtração inútil, e o contabilista de orçamento cobra pela informação divulgada em *ambas* as consultas em vez de as tratar como independentes.
### Ataque 2: Inferência de pertença
Um ataque de inferência de pertença determina se um *indivíduo específico* está ou não no conjunto de dados. Para muitos conjuntos de dados (um estudo médico, uma lista de incumpridores), esse facto é, por si só, sensível. Um atacante com apenas acesso a consultas tenta decidir: "esta pessoa exata está nos dados?"