Resumo de uma página
O Virtuault é um cofre digital com arquitetura Zero-Knowledge. Sua chave mestra nunca trafega ou é armazenada no servidor. Cada item é cifrado client-side com AES-256-GCM usando chave derivada de Argon2id. O servidor armazena blobs criptografados — sem capacidade técnica de decifrar.
Algoritmos e parâmetros
Derivação de chave (KDF)
- Algoritmo: Argon2id (variant id, melhor para defesa balanced contra GPU + side-channel)
- Memória: 64 MB (65536 KiB)
- Iterações (time cost): 8
- Paralelismo: 4 threads
- Tamanho da saída: 32 bytes (256 bits)
- Salt: 16 bytes aleatórios por usuário/item, gerados via WebCrypto
getRandomValues
Esses parâmetros seguem a recomendação OWASP 2026 para Argon2id em aplicações web sensíveis. Tempo de derivação: ~500-2000ms por chamada (proposital — força bruta contra esses parâmetros é inviável).
Cifragem em repouso
- Algoritmo: AES-256-GCM (Galois/Counter Mode)
- Tamanho de chave: 256 bits
- IV (nonce): 12 bytes aleatórios por operação de cifragem
- Tag de autenticação: 128 bits (GCM-padrão)
- AAD (Additional Authenticated Data): contexto identificador do item (v3+)
Envelope encryption (DEK + KEK)
Cada item tem sua própria Data Encryption Key (DEK) de 256 bits gerada aleatoriamente. A DEK é wrapped por uma Key Encryption Key (KEK) derivada via Argon2id da sua chave mestra + salt do item.
- wrapIv: 12 bytes aleatórios por wrap (v4+)
- O servidor armazena: IV, salt, encryptedDek, encryptedPayload — todos cifrados
- Para decifrar: deriva KEK via Argon2 → unwrap DEK → decifra payload com DEK
Este modelo permite re-encrypt eficiente quando o usuário troca a chave mestra (não precisa re-cifrar payloads, só re-wrappar DEKs).
Cifragem em trânsito
- TLS 1.3 (sem fallback para 1.2)
- HSTS habilitado (1 ano + includeSubDomains + preload candidato)
- Certificado emitido por Let's Encrypt (renovação automática Cloudflare)
Modelo de ameaça
Ameaças que mitigamos
- ✅ Comprometimento do servidor (atacante leva blobs cifrados ilegíveis)
- ✅ Funcionário malicioso na operadora (não tem acesso ao plaintext)
- ✅ Coação legal para entrega de dados (entregamos blobs cifrados)
- ✅ Replay attacks (IVs aleatórios + GCM authentication tag)
- ✅ MITM em trânsito (TLS 1.3 + HSTS)
- ✅ Brute force online (rate limiting + lockout)
- ✅ Brute force offline (Argon2id 64MB/8/4 inviabiliza)
- ✅ CSRF (antiforgery cookie HttpOnly + double-submit)
- ✅ Session hijacking (cookies HttpOnly + Secure + SameSite)
- ✅ XSS reflexo (sanitização rigorosa + CSP restrita)
- ✅ SQL injection (EF Core parametrizado, sem string concat)
- ✅ Timing attacks em comparação de tokens (FixedTimeEquals)
Ameaças que NÃO mitigamos (limitações inerentes)
- ❌ Comprometimento do dispositivo do cliente (keylogger, malware) — chave mestra exposta no momento da digitação
- ❌ Engenharia social que faz usuário entregar a chave mestra voluntariamente
- ❌ Coação física do cliente para revelar chave mestra (fora do escopo de cofre digital)
- ❌ Esquecimento da chave mestra (Zero-Knowledge real exige isso)
- ❌ XSS persistente que escapasse de sanitização — mitigado por CSP mas não 100% imune (usamos unsafe-inline por necessidade do Argon2 WASM e event handlers legados)
Stack técnica
- Backend: .NET 10, ASP.NET Core MVC + Razor
- Banco de dados: PostgreSQL (Railway)
- Storage de arquivos: Cloudflare R2 (S3-compatible, sem egress)
- Crypto client-side: WebCrypto API + Argon2 WASM
- Frontend: Tailwind CSS estático + jQuery 3.7
- Mobile: Capacitor 6 (mesma codebase + WebView nativo)
- Auth: JWT + refresh token rotacionado + 2FA por e-mail
- Email: MailKit + Titan SMTP
- Pagamento: Asaas (PIX, cartão, parcelamento)
- Observabilidade: Sentry (sem PII), logs estruturados
Boas práticas operacionais
- Pacotes atualizados regularmente (Dependabot + revisão manual)
- Rate limiting por endpoint (auth, verify-code, webhook, read, write)
- HTTPS forçado em produção
- CSP restritiva sem wildcard
- Cookies HttpOnly + Secure + SameSite
- Antiforgery validado em todos POSTs web
- Logs sanitizados (nunca PAN/CVV/chaves)
- Backup automático do PostgreSQL (snapshot diário Railway)
- Idempotência em webhooks de pagamento
- Migrations EF aplicadas no startup com fail-safe
Roadmap de segurança
- Q3 2026: 2FA TOTP via app autenticador (substitui dependência de e-mail)
- Q3 2026: auditoria HIBP integrada (detectar senhas vazadas no cofre)
- Q4 2026: pen-test externo + relatório público resumido
- Q4 2026: programa de bug bounty (HackerOne ou Intigriti)
- 2027: SOC 2 Type 1, eventualmente ISO 27001
- Continuamente: refresh dos parâmetros Argon2 conforme evolução de hardware
Reportar problemas
Encontrou vulnerabilidade? Reporte privadamente: security@virtuault.com. Programa de bug bounty está em desenho — pesquisadores éticos serão reconhecidos publicamente após divulgação coordenada.
Confiança via verificabilidade
Todos os algoritmos citados são padrões públicos. Não inventamos protocolo proprietário.