Glossário

O que é Web Crypto API?

A Web Crypto API é um padrão do W3C que fornece uma interface JavaScript para um conjunto de primitivas criptográficas — incluindo criptografia, descriptografia, geração de chaves, hashing e assinatura — implementadas de forma nativa no navegador.

Antes da Web Crypto API, as aplicações web que precisavam de criptografia tinham que depender de bibliotecas JavaScript que implementavam os algoritmos do zero. Essas bibliotecas eram lentas (por rodarem no interpretador de JavaScript), potencialmente vulneráveis a ataques de temporização e não conseguiam aproveitar os aceleradores criptográficos de hardware presentes nas CPUs modernas.

A Web Crypto API resolve esses problemas expondo ao JavaScript o mecanismo criptográfico nativo do navegador. Operações como a criptografia AES, a geração de chaves e a derivação de chaves PBKDF2 são executadas como código nativo compilado, beneficiando-se de implementações de tempo constante (resistentes aos canais laterais de temporização) e da aceleração por hardware por meio das instruções AES-NI nos processadores modernos.

A API é assíncrona por design: todas as operações retornam Promises em vez de bloquear a thread principal. Os objetos CryptoKey criados pela API são opacos por padrão e não podem ser extraídos da memória, a menos que sejam explicitamente marcados como exportáveis, o que adiciona uma camada extra de proteção contra o vazamento acidental de chaves.

Como o Vaulted usa Web Crypto API

A Vaulted depende exclusivamente da Web Crypto API para todas as operações criptográficas. Ela usa crypto.subtle.generateKey para criar chaves AES-256-GCM, crypto.subtle.encrypt e decrypt para a criptografia em si, e crypto.subtle.deriveKey com PBKDF2 quando uma frase-senha é usada. Ao depender unicamente da criptografia nativa do navegador, a Vaulted evita dependências de bibliotecas de criptografia de terceiros e se beneficia de implementações de tempo constante aceleradas por hardware.