Console Playground
Blog

Criptografia de localStorage do Vault do Navegador

Importante: O Que Isto Cobre

Este post do blog explica o recurso opcional de vault do navegador - uma ferramenta de conveniência para salvar chaves API no localStorage do seu navegador com criptografia por senha.

Isto NÃO é sobre como armazenamos chaves API no lado do servidor. Quando você compra uma chave API, fazemos hash do segredo com bcrypt (13 rodadas) antes de armazená-lo em nosso banco de dados. O segredo em texto simples é limpo após sua primeira visualização.

O vault do navegador é totalmente opcional e roda 100% no seu navegador. Vamos explorar como funciona.

Criptografia Apenas no Navegador

Quando você salva uma chave API no vault do seu navegador, tudo acontece no lado do cliente:

1. Geração de Salt Específico do Dispositivo

  • Apenas na primeira vez: Gerar salt aleatório de 32 bytes via CryptoJS.lib.WordArray.random(32)
  • Armazenado no localStorage como unsandbox_device_salt
  • Único para seu dispositivo e navegador

2. Derivação do ID do Vault

  • Você fornece uma senha (mínimo 8 caracteres)
  • Concatenar: senha + device_salt
  • Fazer hash: SHA256(senha + device_salt)
  • O resultado se torna seu ID do Vault

3. Criptografia e Armazenamento

  • Chaves API criptografadas usando AES-256 com sua senha
  • Dados criptografados armazenados no localStorage como unsandbox_vaults
  • ID do Vault usado como chave de busca

4. Descriptografia

  • Re-derivar ID do Vault a partir de senha + device salt
  • Buscar dados criptografados usando ID do Vault
  • Descriptografar com sua senha
  • Chaves existem descriptografadas apenas na memória

Isolamento de Dispositivo

A mesma senha em diferentes dispositivos produz IDs de Vault diferentes:

  • Dispositivo A: SHA256("minhasenha" + "salt_abc123") → ID do Vault: def456...
  • Dispositivo B: SHA256("minhasenha" + "salt_xyz789") → ID do Vault: ghi012...

Mesmo que alguém roube sua senha, não poderá acessar seu vault sem o localStorage do seu dispositivo.

Arquitetura de Conhecimento Zero

O servidor nunca recebe:

  • Sua senha do vault
  • Seu device salt
  • Seu ID do Vault
  • Suas chaves criptografadas

Tudo permanece no localStorage do seu navegador. Literalmente não podemos acessar o conteúdo do seu vault mesmo que quiséssemos.

O Trade-Off

O Que Você Ganha ✅

  • Máxima privacidade - não podemos acessar suas chaves
  • Sem risco de violação de servidor - não há nada para violar
  • Segurança específica do dispositivo

O Que Você Perde ❌

  • Sem sincronização entre dispositivos
  • Sem recuperação de senha
  • Dependência de localStorage - limpar dados do navegador = perda permanente de dados

O Que Acontece Quando Você Limpa o localStorage?

Isto é crítico: Limpar localStorage é perda permanente e irrecuperável de dados.

Quando você limpa o localStorage do seu navegador, você perde:

  1. O device salt - não pode mais regenerar IDs de Vault
  2. Os vaults criptografados - todas as chaves API criptografadas deletadas para sempre

É como queimar tanto o cofre quanto a fechadura de combinação. Mesmo que você se lembre da sua senha, não pode recriar o mesmo ID do Vault sem o device salt original.

Por Que Isto É Na Verdade um Recurso

  • Recomeço limpo: Reset completo de fábrica
  • Sem dados órfãos: Vaults antigos não podem ser acessados ou vazados
  • Auto-destrutivo: Dados não persistem se você não quer que persistam
  • Sem backdoors: Nem mesmo você pode recuperá-los

Design definitivo com privacidade em primeiro lugar.

Propriedades de Segurança

Determinístico Por Dispositivo

  • Mesma senha + mesmo dispositivo = mesmo ID do Vault (sempre)
  • Você sempre pode desbloquear seu vault com a senha correta

Diferente Por Dispositivo

  • Mesma senha + dispositivo diferente = ID do Vault diferente
  • Vaults são isolados e não podem ser transferidos

Criptograficamente Forte

  • SHA-256 para derivação de ID do Vault (hash unidirecional)
  • AES-256 para criptografia (grau militar)
  • Biblioteca CryptoJS (bem testada, amplamente usada)

Melhores Práticas

🔐 Segurança de Senha

  • Use uma senha forte e única (12+ caracteres)
  • Não existe recuperação de senha - escolha com sabedoria

💾 Estratégia de Backup

  • Exporte suas chaves do vault desbloqueado para salvá-las em outro lugar
  • Salve chaves exportadas em um gerenciador de senhas ou arquivo criptografado
  • Vault é para conveniência, não armazenamento primário
  • Não existe recurso de importação - chaves devem ser re-inseridas manualmente se o vault for perdido
  • Trate limpar localStorage como formatar um disco rígido

🧹 Manutenção do Navegador

  • Tenha cuidado ao limpar dados do navegador
  • “Limpar histórico recente” é mais seguro que “Limpar todo o histórico”
  • Exporte chaves antes de trocar de navegador

Comparação: Vaults do Lado do Servidor vs. do Lado do Cliente

Recurso Lado do Servidor Lado do Cliente (Nosso)
Recuperação de senha ✅ Sim ❌ Não
Sincronização entre dispositivos ✅ Sim ❌ Não
Exportar vault ✅ Sim ✅ Sim (JSON)
Importar vault ✅ Sim ❌ Não (entrada manual)
Servidor pode acessar chaves ⚠️ Tecnicamente sim ✅ Impossível
Sobrevive a limpeza de localStorage ✅ Sim ❌ Não
Requer conta ✅ Sim ✅ Não
Sujeito a intimação judicial ⚠️ Sim ✅ Não
Verdadeiro conhecimento zero ❌ Não ✅ Sim

Escolhemos segurança e privacidade sobre conveniência. Para sincronização entre dispositivos, use um gerenciador de senhas dedicado como 1Password, Bitwarden ou KeePass.

FAQ

P: Posso recuperar meu vault se esquecer minha senha? R: Não. Não temos sua senha, salt ou chaves.

P: Posso usar o mesmo vault em múltiplos dispositivos? R: Não. Cada dispositivo tem um salt único.

P: O que acontece se eu limpar o cache do meu navegador? R: Cache geralmente é seguro, mas limpar localStorage deleta seu vault permanentemente.

P: A unsandbox.com pode acessar minhas chaves salvas? R: Não. Tudo é criptografado no seu navegador.

P: Isto é mais seguro que um gerenciador de senhas? R: Trade-offs diferentes. Gerenciadores de senhas oferecem backup e sincronização. Nós oferecemos privacidade de conhecimento zero. Use ambos!

P: Posso exportar meu vault? R: Sim! Você pode exportar todas as chaves de um vault desbloqueado como JSON. No entanto, não há recurso de importação - você deve re-inserir chaves manualmente se perder seu vault.

Conclusão

O vault do navegador prioriza privacidade e segurança sobre conveniência. Perfeito para usuários que valorizam:

  • Segurança de conhecimento zero
  • Criptografia do lado do cliente
  • Sem armazenamento do lado do servidor
  • Máxima privacidade

Suas chaves, seu dispositivo, sua senha. Ninguém mais—nem mesmo nós—pode acessá-las.

É assim que deveria ser. 🔐