Guia de encriptação AES-256: proteção de nível militar para os seus ficheiros
Entenda a encriptação AES-256 e por que é o padrão de ouro. Saiba como esta cifra de nível militar mantém as suas transferências seguras.
O AES-256 é uma cifra de bloco simétrica aprovada pela NSA dos EUA para dados TOP SECRET ao abrigo da CNSSP-15. Encripta blocos de 128 bits com uma chave de 256 bits ao longo de 14 rondas de operações de substituição, permutação e mistura. Forçar uma única chave AES-256 exigiria aproximadamente 2^255 operações em média — um número tão grande que todos os computadores do mundo a funcionar durante a idade do universo não o conseguiriam quebrar. É por isso que todos os serviços sérios de transferência de ficheiros, do SwissTransfer ao Tresorit, usam o AES-256 como cifra principal. Eis como funciona de facto.
De onde vem o "256"
O AES existe em três tamanhos de chave: 128, 192 e 256 bits. O número refere-se apenas ao comprimento da chave, não ao tamanho do bloco (que é sempre 128 bits). O tamanho da chave determina quantas rondas a cifra executa: 10 para AES-128, 12 para AES-192, 14 para AES-256.
Mais rondas significam mais difusão — cada bit de saída depende de mais bits de entrada — e mais resistência a ataques criptanalíticos como o ataque de biclique publicado em 2011, que teoricamente reduziu a segurança efetiva do AES-256 de 256 para 254,4 bits. Ainda está muito além de qualquer ataque prático.
O Federal Information Processing Standard FIPS 197 define o AES, e o NIST SP 800-38A a 800-38G define os modos de operação.
Modos de operação: GCM vs CBC vs ECB
O AES é uma cifra de bloco, o que significa que apenas sabe encriptar um bloco de 128 bits. Para encriptar um ficheiro de tamanho arbitrário, precisa de um modo de operação. A escolha é muito importante:
- ECB (Electronic Codebook): blocos de texto simples idênticos produzem texto cifrado idêntico. Nunca use isto. A famosa imagem do "pinguim ECB" mostra o contorno do Tux visível através de pixels encriptados em ECB.
- CBC (Cipher Block Chaining): aplica XOR a cada bloco com o texto cifrado anterior. Seguro se combinado com HMAC para autenticação, mas o CBC sozinho é vulnerável a ataques de padding oracle (o POODLE afetou o SSL em 2014).
- GCM (Galois/Counter Mode): encripta com um contador e produz uma tag de autenticação de 128 bits na mesma passagem. A adulteração do texto cifrado quebra a desencriptação de forma audível. É este o modo que os serviços modernos usam.
O AES-256-GCM é o padrão no TLS 1.3, no Signal, no WireGuard e em todos os serviços de transferência de ficheiros credíveis. Se um serviço menciona "AES-256" sem especificar o modo, assuma GCM e confirme.
O IV (nonce) que nunca deve ser reutilizado
O GCM requer um vetor de inicialização único de 96 bits por encriptação com uma dada chave. Reutilizar um IV com a mesma chave, mesmo uma vez, permite a um atacante fazer XOR de dois textos cifrados para recuperar o texto simples — uma falha catastrófica que foi explorada contra o WEP do Wi-Fi.
Boa prática: gere o IV com um RNG criptograficamente seguro (crypto.getRandomValues() nos navegadores, /dev/urandom no Linux) e anteceda-o ao texto cifrado. Um IV aleatório de 96 bits tem uma probabilidade de colisão de cerca de 2^-48 após encriptar 2^32 ficheiros — aceitável para um serviço de transferência. Para reutilização de chave em milhares de milhões de ficheiros, use um contador determinístico.
Derivação de chave: transformar palavras-passe em chaves
Os utilizadores querem palavras-passe como omeurao2024. O AES quer 256 bits de aleatoriedade uniforme. A ponte é uma função de derivação de chave (KDF). Três são de uso comum:
- PBKDF2 com HMAC-SHA-256 e 600 000 iterações (recomendação OWASP de 2023). Amplamente suportada, disponível na Web Crypto API.
- scrypt acrescenta dureza de memória, aumentando o custo dos ataques por GPU. O Bitcoin e o LastPass usam-no.
- Argon2id é a melhor prática atual, vencedor da Password Hashing Competition de 2015. Parâmetros:
memory=64 MB, iterations=3, parallelism=4.
Uma palavra-passe aleatória de 12 caracteres processada pelo Argon2id demora a uma GPU moderna aproximadamente mil milhões de anos a forçar. Uma palavra-passe fraca como password123 cede em milissegundos independentemente da KDF.
AES no navegador: a Web Crypto API
Os navegadores expõem o AES-256-GCM nativamente através de window.crypto.subtle. Um fluxo típico:
const key = await crypto.subtle.generateKey(
{ name: "AES-GCM", length: 256 },
true,
["encrypt", "decrypt"]
);
const iv = crypto.getRandomValues(new Uint8Array(12));
const ciphertext = await crypto.subtle.encrypt(
{ name: "AES-GCM", iv },
key,
fileBytes
);
As CPUs modernas têm instruções AES-NI que aceleram isto para cerca de 3 a 5 GB/s por núcleo. Um ficheiro de 1 GB encripta em menos de um segundo num portátil de gama média. Em dispositivos móveis, os chips Apple série A e Qualcomm Snapdragon incluem ARMv8 Crypto Extensions para débito semelhante.
Contra o que o AES-256 protege (e contra o que não)
O AES-256 resolve um problema específico: confidencialidade dos dados em repouso ou em trânsito, dado que a chave é secreta. Não resolve:
- Gestão de chaves. Se enviar a palavra-passe por e-mail juntamente com o ficheiro, o AES-256 não acrescenta nada.
- Comprometimento do endpoint. Malware a ler o texto simples antes da encriptação ignora completamente a cifra.
- Erros de implementação. Os ataques BEAST, CRIME e Lucky13 visaram implementações de TLS, não o AES em si.
- Ataques de canal lateral. O cache timing e a análise de consumo de energia extraíram chaves AES de dispositivos com recursos limitados. O AES-NI mitiga isto amplamente nos computadores de secretária.
O AES-256 também não prova quem enviou o ficheiro. Para isso, combine-o com assinaturas digitais usando Ed25519 ou ECDSA.
Por que "nível militar" é sobretudo marketing
A expressão é usada porque a NSA CNSSP-15 aprovou o AES-256 para dados TOP SECRET em 2003. Isso é real, mas também tem 23 anos — o AES-128 é aprovado para SECRET e serve a maioria dos casos de uso civis de forma idêntica. O salto de 128 para 256 é uma precaução contra avanços futuros em computação quântica: o algoritmo de Grover reduz teoricamente a segurança de chaves simétricas a metade, diminuindo a força efetiva do AES-256 para 128 bits, o que ainda é seguro.
Na prática, o AES-256 custa talvez 40% mais de CPU do que o AES-128 com AES-NI e é universalmente suportado, pelo que se tornou o padrão mesmo quando 128 seria suficiente.
Como verificar se um serviço usa realmente AES-256-GCM
Três formas de verificar:
- Leia o whitepaper de segurança. Os serviços credíveis (Tresorit, Proton Drive, SwissTransfer, HexaTransfer) publicam o modo exato e o tratamento do IV.
- Inspecione o código do cliente. Abra o DevTools, pesquise no bundle JavaScript por
AES-GCMouaes-256-gcm. Deve aparecer explicitamente. - Verifique as auditorias de terceiros. A Cure53, o NCC Group e o Trail of Bits publicam auditorias que nomeiam os algoritmos revistos.
Sinais de alerta: "encriptação de nível bancário" sem o modo especificado, "algoritmo proprietário" de qualquer tipo, ou referências a AES-128-ECB.
Colocar em prática
Para enviar um ficheiro sensível hoje: escolha um serviço que declare AES-256-GCM explicitamente, use um IV aleatório de 96 bits por ficheiro, e execute a encriptação no seu navegador (não nos servidores deles). Combine com uma frase-chave de 16 ou mais caracteres derivada através de Argon2id ou PBKDF2 com 600 000 ou mais iterações.
Experimente em hexatransfer.com — gratuito, sem conta, até 10 GB.
Envie arquivos grandes com segurança e criptografia de ponta a ponta
Transfira arquivos de até 10 GB gratuitamente com criptografia de ponta a ponta. Sem necessidade de conta. Seus arquivos são criptografados no navegador antes do envio — ninguém mais pode lê-los.
Enviar um arquivo