ScrubVault
Proxy de isolamento (airgap) de PII em memória, sem dependências, e mascaramento reversível para LLMs em nuvem (em conformidade com o Art. 32 do GDPR).
Documentação
🛡️ ScrubVault: Mecanismo de Isolamento de IA com Zero Vazamento de Dados e Mascaramento Reversível de PII
Envie dados sensíveis para LLMs em nuvem (ChatGPT, Claude, Gemini) sem nunca vazar PII confidencial.
pip install scrub-vault
ScrubVault é um proxy de privacidade leve, sem dependências, em memória, e um servidor Model Context Protocol (MCP). Ele intercepta prompts, substitui informações pessoais identificáveis (e-mails, IBANs, endereços IP, cartões de crédito, IDs fiscais) por tokens locais determinísticos ({{EMAIL_1}}, {{IBAN_1}}) e restaura os valores originais quando a IA responde.
🚀 A Arquitetura
+----------------------------------+
| Your Prompt (Confidential PII) |
+----------------------------------+
│
▼
┌─────────────────────────────┐
│ ScrubVault (Local RAM) │
│ - Scans & Masks Sensitive │
│ - Stores Mapping in Memory │
└─────────────────────────────┘
│
▼ (Masked Prompt: "{{EMAIL_1}}, {{IBAN_1}}")
┌─────────────────────────────┐
│ Public Cloud LLM API │
│ (OpenAI / Anthropic / ...) │
│ *Zero PII is transmitted* │
└─────────────────────────────┘
│
▼ (Response with tokens)
┌─────────────────────────────┐
│ ScrubVault (Local RAM) │
│ - Deterministic Unmasking │
└─────────────────────────────┘
│
▼
+----------------------------------+
| End-User Result (Restored PII) |
+----------------------------------+
⚡ Início Rápido
1. SDK Python (Zero Dependências)
from src.core.vault import ScrubVault
vault = ScrubVault()
# 1. Mask sensitive input
input_text = "Order for client Max, email: max@corp.de, IBAN: DE89370400440532013000"
result = vault.mask(input_text)
print(result.masked_text)
# Output: "Order for client Max, email: {{EMAIL_1}}, IBAN: {{IBAN_1}}"
# 2. Transmit result.masked_text to your LLM of choice...
ai_response = "Received confirmation for {{EMAIL_1}} on account {{IBAN_1}}."
# 3. Unmask locally
clean_response = vault.unmask(ai_response, result.token_map)
print(clean_response)
# Output: "Received confirmation for max@corp.de on account DE89370400440532013000."
2. CLI Autônomo
# Calculate GDPR Art. 32 Risk Score
python -m src.cli.main audit "Contract with Herr Schmidt, IBAN: DE89370400440532013000"
# Mask a dataset file directly
python -m src.cli.main scrub-dataset input.json output_clean.json
🤖 Integração com Model Context Protocol (MCP)
ScrubVault inclui um servidor nativo stdio Model Context Protocol (MCP). Adicione-o à sua configuração do claude_desktop_config.json ou Antigravity:
{
"mcpServers": {
"scrub_vault": {
"command": "python",
"args": ["-m", "src.mcp.server"],
"cwd": "/path/to/scrub_vault"
}
}
}
Instalação em 1 Clique via Smithery (Claude Desktop, Cursor):
npx -y @smithery/cli install @tastenkasperle/scrub-vault --client claude
Ferramentas MCP Disponíveis:
scrub_mask_text: Mascara PII em texto de entrada e retorna um mapa de tokens reversível.scrub_unmask_text: Substitui tokens pelos valores originais.scrub_audit_risk: Calcula pontuações de risco e detalhamentos de detecção.scrub_anonymize_json: Limpa estruturas JSON recursivamente.
🛡️ Padrão de Segurança e Código Limpo
- Biblioteca Padrão Python Pura: Zero dependências de terceiros (
re,json,sys,typing). - Cofre em Memória: Mapas de tokens residem exclusivamente em RAM volátil e nunca são gravados em disco.
- Endurecido contra ReDoS: Padrões de regex são estritamente limitados contra ataques de complexidade algorítmica.
- Auditoria Aprovada: Testado e verificado pelo SAST Raptor Guard (0 Crítico, 0 Alto, 0 Médio).
📄 Licença
Apache License 2.0. Pesquisa e engenharia de código aberto pela Diamantenschmiede.