🧰 UtlKit

Criptografia/Descriptografia AES: Como Criptografar 12 Bytes em 28 com AES-GCM — a Etiqueta de 16 Bytes, o IV de 12 Bytes e o Aviso de Reuso

Criptografe e descriptografe texto com AES-GCM no navegador: um texto plano de 12 bytes vira um cifrado de 28 bytes com uma etiqueta de autenticacao de 16 bytes, as chaves de 32, 48 ou 64 caracteres hexadecimal escolhem AES-128, 192 ou 256, o IV de 24 caracteres tem 12 bytes, reutilizar o mesmo par chave-IV dispara um aviso, e a saida em base64 tem 40 caracteres para 12 bytes e 156 para 100, tudo em local.

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.

Ferramentas Relacionadas

Perguntas Frequentes

Qual tamanho de chave a ferramenta usa?

O que o comprimento da sua chave indicar. 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 o número de rodadas segue em 10, 12 e 14. A ferramenta aceita qualquer cadeia hexadecimal de comprimento par nesse intervalo e deixa o comprimento fazer a escolha.

Por que minha entrada de 12 bytes vira 28 bytes criptografada?

O GCM anexa uma etiqueta de autenticação de 16 bytes ao cifrado, assim 12 bytes de texto plano viram 28 bytes de cifrado a qualquer tamanho de chave, e esses 28 bytes são pintados como 40 caracteres base64. A etiqueta não é um sobrecusto que você possa descartar — é o que torna possível a detecção de manipulação, e descriptografar sem ela falha.

O que acontece se eu reutilizar o mesmo IV com a mesma chave?

A ferramenta mostra um aviso, porque é a falha que quebra o GCM. Reutilizar a mesma chave e o mesmo IV significa a mesma corrente de chaves do contador nas duas execuções, e a segunda mensagem então dá ao atacante o que faz falta para descascar a primeira. A ferramenta lembra cada par chave-IV que já usou na sessão e o marca no momento em que você tenta criptografar de novo com um deles. Gere um IV novo — e de preferência uma chave nova — para cada mensagem.

Como sei que o cifrado não foi manipulado?

O lado da descriptografia confere a etiqueta de 16 bytes antes de devolver qualquer coisa, e um bit invertido em qualquer lugar do cifrado faz a conferência falhar, assim a ferramenta mostra um erro de descriptografia em vez de devolver texto incorreto em silêncio. Esse é todo o ponto do GCM frente ao modo contador puro: ou a saída verifica, ou não volta de todo.

Meus dados são enviados a um servidor?

Não. A criptografia, a conferência da etiqueta e a codificação base64 rodam todas no navegador através da Web Crypto e APIs web na máquina local. A chave, o IV e o texto nunca a abandonam, e é isso que torna a ferramenta utilizável para texto que você não colaria em um formulário.

Artigos Relacionados