O que a equipe vê
O que fica no banco
Ainda não há nada cifrado.
- Salt, 16 bytes
- vazio
- IV, 12 bytes
- vazio
Quatro testes que você mesmo pode fazer
-
Abrir com a senha
-
Alterar um único byte
Um invasor muda um bit no banco, sem a senha. O GCM percebe, porque cada ficha leva uma etiqueta de autenticação.
-
Cifrar a mesma ficha de novo
O resultado precisa mudar a cada vez. Se fosse igual, daria para saber que dois clientes têm os mesmos dados.
-
Medir o custo de adivinhar
A chave passa por 600.000 rodadas de PBKDF2-SHA-256. Cada palpite de um invasor precisa pagar esse custo.
O que confiro em cada sistema que entrego
Vistoria de segurança
- Nenhuma senha ou chave no código nem no histórico do Git
- HTTPS e política de segurança de conteúdo (CSP)
- Texto digitado tratado como texto, contra XSS
- Consultas parametrizadas no banco, contra injeção de SQL
- Senhas com hash lento, em vez de cifra reversível
- Sessão, permissão por papel e proteção contra CSRF no servidor
- Coleta só dos dados pessoais necessários, princípio da LGPD
O que esta tela não resolve
Criptografia protege o dado copiado, mas não um computador já invadido nem uma senha fraca. Quem perde a senha do cofre perde a ficha, porque não existe chave reserva nesta demonstração.
Em um sistema real, a chave fica fora do banco, em um cofre de chaves do servidor, e as senhas de login usam hash próprio para senha, como o Argon2id, em vez de cifra. Nenhum sistema é impossível de invadir, e a vistoria reduz o risco, sem eliminá-lo.
Como isto funciona
O navegador gera 16 bytes aleatórios (salt) e transforma senha e salt em uma chave de 256 bits com PBKDF2-SHA-256, em 600.000 rodadas. Depois gera 12 bytes aleatórios (IV) e cifra com AES-256-GCM. Tudo usa a Web Crypto, a criptografia nativa do navegador, sem biblioteca externa. Salt e IV não são segredo e ficam ao lado do texto cifrado.