Criptografar texto no navegador é uma ida e volta com guarda: o texto plano é transformado em cifrado com uma chave, e uma etiqueta de autenticação de 16 bytes é anexada, de modo que quem mudar ao menos um bit do cifrado no caminho é detectado. O Criptografia/Descriptografia AES executa essa ida e volta por completo no navegador com AES-GCM: um texto plano de 12 bytes vira um cifrado de 28 bytes, uma chave hexadecimal de 32, 48 ou 64 caracteres escolhe AES-128, 192 ou 256, e o IV de 24 caracteres tem 12 bytes. A saída é base64 —40 caracteres para esse exemplo de 12 bytes— e o lado da descriptografia rejeita o que foi manipulado. Nada sai da máquina.
O que o GCM acrescenta ao cifrador de bloco
O AES por si só é um cifrador de bloco: toma 16 bytes de cada vez e os embaralha através de um número fixo de rodadas —10 para uma chave de 128 bits, 12 para 192, 14 para 256. Um cifrador de bloco sozinho não oculta o comprimento da mensagem, não aceita uma mensagem que não seja múltiplo de 16 bytes, e não diz se o cifrado foi alterado no caminho. O GCM acrescenta três coisas: roda o cifrador em modo contador, de modo que uma mensagem de qualquer comprimento flui; deriva uma corrente de chaves que é XORada com o texto plano, que é o que oculta o conteúdo; e calcula uma etiqueta de autenticação de 16 bytes sobre o cifrado com um hash com chave. A etiqueta é a guarda: inverta um bit do cifrado e o lado da descriptografia lança um erro em vez de devolver lixo. Um gerador de hash calcula resumos da mesma família mas sem chave, para integridade e deduplicação, e um resumo não se inverte, assim o hash por si nunca pode ser criptografia —a etiqueta do GCM pega a ideia do hash e a coloca com chave, que é o que faz seguro anexá-la.
A chave, o IV e o par que não deve se repetir
A chave é o material: 32 caracteres hexadecimais são 16 bytes, 48 são 24, 64 são 32, assim as três comprimentos legais escolhem AES-128, AES-192 e AES-256, e a chave fica em um identificador não extraível dentro da Web Crypto após o importKey, sem ser armazenada nem enviada. O IV (vetor de inicialização) tem 24 caracteres hexadecimais, 12 bytes, e deve diferir de qualquer outro IV usado com a mesma chave. Esse é o par que não deve se repetir: a mesma chave com o mesmo IV duas vezes é a falha que quebra o GCM, porque a corrente de chaves do contador seria idêntica nas duas execuções e a segunda mensagem daria ao atacante a capacidade de descascar a primeira. A ferramenta lembra os pares chave-IV já usados na sessão e mostra um aviso no momento em que você tenta criptografar de novo com um deles. Para comparar, um gerador HMAC usa o mesmo tipo de hash com chave para o trabalho oposto: autentica uma mensagem sem ocultá-la, de modo que o HMAC responde se o conteúdo está íntegro e é seu, enquanto o GCM responde isso e se além disso é secreto.
De onde vem a aleatoriedade
Quando a página carrega, a ferramenta preenche os dois campos por você: uma chave hexadecimal aleatória de 64 caracteres, 32 bytes, e um IV hexadecimal aleatório de 24 caracteres, 12 bytes, gerados com o mesmo caminho getRandomValues da Web Crypto que sustenta a criptografia. A aleatoriedade é o que mantém o IV único: um IV aleatório de 12 bytes tem uma probabilidade de colisão desprezível entre um número pequeno de mensagens, e uma chave nova elimina até isso. Se você gera identificadores no mesmo navegador, o gerador de UUID toma da mesma fonte de aleatoriedade para UUIDs de versão 4, e a mesma cautela se aplica: a aleatoriedade é um suprimento, não um ajuste, e o navegador é quem a distribui. Trate os dois campos gerados como trataria um passaporte — eles saem com você e não se compartilham.
Como ler a saída em base64
O cifrado é binário, assim a ferramenta o pinta em base64, que é a codificação que mapeia cada grupo de três bytes em quatro caracteres. Por isso o texto plano de 12 bytes não volta como 12 caracteres: os 28 bytes do cifrado, os 12 mais a etiqueta de 16, são codificados em 40 caracteres base64, com o grupo final absorvendo o resto em preenchimento. O crescimento é estável: 100 bytes de texto plano dão 116 bytes de cifrado, que são 156 caracteres base64, e 1000 bytes dão 1016, que são 1356 caracteres. Os 16 bytes extras são a mesma etiqueta toda vez, assim em mensagens longas o sobrecusto é desprezível e nos curtos se vê. Quando você precisa passar os bytes a um lugar que espera a codificação crua, o codificador/decodificador Base64 converte entre a forma de texto e as demais representações sem tocar no conteúdo.
A chave é todo o sistema
O AES-GCM é tão forte quanto a chave por trás, e uma chave é um segredo no mesmo sentido em que uma senha é: sua força é função do comprimento e da imprevisibilidade, e sua gestão é não repeti-la e não escrevê-la onde qualquer um possa lê-la. A ferramenta não julga sua chave —aceita qualquer cadeia hexadecimal de comprimento par entre 32 e 64—, mas a verificação honesta é a que um verificador de força de senha aplica às senhas, traduzida para hexadecimal: uma cadeia de 64 caracteres que é um padrão repetido é 32 bytes de material e muito menos de 256 bits de entropia. Se você precisa de material de chave de verdade em vez de um digitado, o guia do gerador de senhas cobre a mesma disciplina de geração e armazenamento, e uma chave hexadecimal aleatória é gerada pelo mesmo caminho de um clique.
Onde o AES aparece fora da caixa
O mesmo primitivo AES-GCM não é um brinquedo de navegador: o TLS usa AES-GCM como um de seus cifradores de registro principais, a criptografia de disco completo nos sistemas operacionais modernos usa AES, normalmente em modo XTS, e a API Web Crypto que a ferramenta chama é a mesma que os ambientes de pagamento, os fluxos de login e os apps offline-first chamam para o armazenamento local cifrado. O ponto desta ferramenta é tornar o primitivo inspecionável: você pode ver o cifrado exato, o sobrecusto exato da etiqueta e o modo exato de falha da detecção de manipulação, tudo em uma caixa de texto. Os tokens são a outra cara visível do mesmo stack —um decodificador JWT abre o cabeçalho e a carga do token para mostrar o que está assinado e o que não, que é o gêmeo de somente leitura do que a criptografia faz na direção de escrita.