O que é Criptografia no lado do cliente?
A criptografia no lado do cliente é a prática de criptografar os dados no dispositivo do usuário — normalmente em um navegador ou aplicativo nativo — antes de transmiti-los a um servidor, garantindo que o servidor só receba e armazene dados criptografados.
A criptografia no lado do cliente é o mecanismo técnico que viabiliza os sistemas zero-knowledge e de criptografia de ponta a ponta. Ao realizar a criptografia antes que os dados saiam do dispositivo do usuário, o texto simples nunca atravessa a rede nem existe no servidor. Isso protege simultaneamente contra a interceptação de rede, as violações do servidor e as ameaças internas.
Nas aplicações web, a criptografia no lado do cliente normalmente se baseia na Web Crypto API, uma interface nativa do navegador para operações criptográficas. Isso é preferível às bibliotecas de criptografia em JavaScript porque a Web Crypto API executa código nativo compilado, é resistente a ataques de temporização e se beneficia da aceleração por hardware nos dispositivos modernos.
A principal contrapartida da criptografia no lado do cliente é que o servidor não consegue processar nem pesquisar os dados criptografados. Recursos como busca no lado do servidor, análise de conteúdo ou transformação de dados se tornam impossíveis porque o servidor genuinamente não consegue ler os dados. Para o compartilhamento de segredos, essa contrapartida é ideal: o servidor só precisa armazenar um bloco e aplicar regras de acesso, não compreender o conteúdo.
Como o Vaulted usa Criptografia no lado do cliente
Cada segredo compartilhado por meio da Vaulted é criptografado no lado do cliente usando a Web Crypto API antes de o navegador fazer qualquer requisição de rede. O navegador gera uma chave AES-256-GCM aleatória, criptografa o texto simples e envia ao servidor apenas o texto cifrado resultante e o IV. A chave de criptografia é colocada no fragmento da URL, que o navegador nunca inclui nas requisições HTTP. Isso significa que o texto simples existe apenas na memória do navegador do remetente e do destinatário: nunca na rede, nunca no servidor.