Skip to main content
Todos os Termos Glossary

Web Crypto API

Definition

A Web Crypto API oferece uma interface padronizada para realizar operações criptográficas em aplicações web. Ela disponibiliza geração segura de números aleatórios, hashing, assinatura e criptografia. Embora seja mais segura do que implementar criptografia em JavaScript, o gerenciamento adequado de chaves e a escolha dos algoritmos continuam sendo fundamentais.

O que é a Web Crypto API

A Web Crypto API é uma interface nativa do navegador, exposta através de window.crypto e crypto.subtle, para realizar operações criptográficas em JavaScript. Abrange valores aleatórios criptograficamente fortes através de getRandomValues, além de hashing, HMAC, encriptação simétrica e assimétrica, assinaturas digitais e derivação de chaves através do objeto SubtleCrypto. As primitivas são implementadas no motor do navegador em código nativo, e não em script, o que é mais rápido e menos propenso a erros do que criptografia em JavaScript feita à mão. As chaves são representadas como objetos CryptoKey que podem ser marcados como não extraíveis, para que o material bruto da chave nunca tenha de ser exposto ao JavaScript envolvente. A maior parte da API está restrita a contextos seguros, ou seja, páginas servidas por HTTPS ou localhost.

Por que é importante para a segurança

Usar uma implementação nativa verificada elimina classes inteiras de bugs que assolam a criptografia personalizada em JavaScript, como fontes aleatórias fracas, fugas de tempo e ligação incorreta de algoritmos. Objetos CryptoKey não extraíveis significam que nem mesmo um script em execução na página consegue ler os bytes subjacentes, o que limita o que um comprometimento pode roubar. No entanto, a API não torna uma aplicação segura por si só. Más escolhas de algoritmos, vetores de inicialização reutilizados, chaves fixas no código ou mal guardadas, e resultados mal geridos, tudo isso a mina. Fundamentalmente, qualquer criptografia realizada no navegador continua a correr num ambiente que um atacante pode controlar: uma falha de cross-site scripting pode chamar a mesma API, usar as chaves disponíveis e encriptar ou assinar em nome do atacante.

Como usá-la de forma segura

Escolha algoritmos e parâmetros atuais e bem compreendidos, gere chaves e IVs com getRandomValues, e nunca inclua chaves secretas no código do cliente. Marque as chaves como não extraíveis sempre que o fluxo de trabalho o permitir, e apoie-se nas funções de derivação de chaves da API em vez de inventar as suas. Como a criptografia do lado do navegador só protege os dados até ao ponto em que se pode confiar no cliente, mantenha a página envolvente livre de scripts injetados: aplique uma Content Security Policy rigorosa e higienize as entradas para travar o XSS. A Web Crypto API é uma primitiva neutra da plataforma web, por isso a cside não está diretamente envolvida no seu funcionamento; a disciplina defensiva relevante é o desenvolvimento seguro padrão e manter JavaScript third-party não confiável fora da página.

Definição

Devo usar a Web Crypto API em vez de uma biblioteca de criptografia em JavaScript?

Regra geral, sim. As primitivas nativas são mais rápidas, são mantidas pelos fornecedores de navegadores e evitam muitas armadilhas de implementação da criptografia feita puramente em JavaScript, incluindo aleatoriedade fraca. As bibliotecas ainda têm o seu lugar para algoritmos que faltam à API, mas para hashing, encriptação e assinatura padrão a API integrada é a opção mais segura por predefinição.

Definição

A Web Crypto API torna a encriptação do lado do cliente totalmente segura?

Não. Corre no navegador, um ambiente que a máquina do utilizador e qualquer script injetado podem influenciar. Reforça as primitivas, mas uma falha de cross-site scripting pode invocar a mesma API e usar indevidamente as chaves disponíveis. Complementa, mas não substitui, a encriptação de transporte e os controlos do lado do servidor.

Got more questions

Talk to a security expert

We answer client-side security questions every day. Bring yours.

Agende uma demonstração

Quer ver isso em detalhe com um engenheiro?

Trinta minutos, no seu próprio site. Sem slides.

Agende uma demo personalizada para ver:

Como alcançar a conformidade com os requisitos 6.4.3 e 11.6.1 do PCI DSS em 1 dia
Por que scripts de terceiros são um risco de segurança para você e seus visitantes
Como monitorar vazamentos de privacidade e consentimento (RGPD, CCPA) em cada terceiro
Como conter abuso de cadastros, compartilhamento de contas e fraude de chargeback com device intelligence
Como detectar e controlar agentes de IA e bots que acessam seu site em tempo real

Prefere só mandar uma pergunta?

Procurando horários livres…

Apenas humanos de verdade. A gente saberia.

Problemas para agendar? Abrir o agendador em uma nova aba

O que você está tentando resolver?

Conte em uma linha e voltamos com algo útil, não com um discurso genérico.

Costumamos ajudar com:

Ver quais scripts de terceiros rodam no seu site
Evidências para PCI DSS 6.4.3 e 11.6.1
Bots, agentes de IA e roubo de contas

Prefere agendar um horário? Escolher um horário