{"id":136,"date":"2026-06-18T13:02:05","date_gmt":"2026-06-18T13:02:05","guid":{"rendered":"https:\/\/shattered.io\/pt\/2026\/06\/18\/aes-256-vs-chacha20\/"},"modified":"2026-06-18T13:03:31","modified_gmt":"2026-06-18T13:03:31","slug":"aes-256-vs-chacha20","status":"publish","type":"post","link":"https:\/\/shattered.io\/pt\/2026\/06\/18\/aes-256-vs-chacha20\/","title":{"rendered":"AES-256 vs ChaCha20: 3x Mais R\u00e1pido em Servidores, Qual Escolher [2026]"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Quando se trata de escolher uma cifra de encripta\u00e7\u00e3o sim\u00e9trica em 2026, <strong>AES-256-GCM<\/strong> e <strong>ChaCha20-Poly1305<\/strong> dominam as discuss\u00f5es t\u00e9cnicas em todo o mundo. Ambas oferecem seguran\u00e7a de 256 bits, autentica\u00e7\u00e3o integrada e resist\u00eancia a ataques conhecidos, mas o desempenho, o comportamento em hardware e os casos de uso ideal divergem de forma significativa. Em servidores modernos com acelera\u00e7\u00e3o por hardware, o AES-256-GCM supera o ChaCha20-Poly1305 at\u00e9 3 vezes. Em dispositivos IoT sem instru\u00e7\u00f5es AES, a equa\u00e7\u00e3o inverte-se completamente. Este artigo analisa dados reais de benchmarks, opini\u00f5es de especialistas e cen\u00e1rios pr\u00e1ticos para que a decis\u00e3o seja baseada em factos, n\u00e3o em mitos.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"o-que-e-aes-256-gcm\">O que \u00e9 AES-256-GCM<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">O <strong>Advanced Encryption Standard (AES)<\/strong> foi padronizado pelo NIST em 2001 atrav\u00e9s da publica\u00e7\u00e3o FIPS 197, substituindo o DES e o Triple DES como padr\u00e3o de encripta\u00e7\u00e3o sim\u00e9trica para uso governamental e comercial. A variante com chave de 256 bits \u00e9 a mais robusta da fam\u00edlia, utilizando 14 rondas de substitui\u00e7\u00e3o, permuta\u00e7\u00e3o e mistura de colunas para transformar blocos de 128 bits de dados em texto cifrado aparentemente aleat\u00f3rio.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O modo <strong>GCM (Galois\/Counter Mode)<\/strong> transforma o AES num <strong>AEAD<\/strong> (Authenticated Encryption with Associated Data), ou seja, a cifra n\u00e3o s\u00f3 encripta os dados como tamb\u00e9m garante a sua integridade atrav\u00e9s de uma tag de autentica\u00e7\u00e3o de 128 bits. Isto elimina a necessidade de combinar o AES com um HMAC separado, reduzindo a complexidade do c\u00f3digo e o risco de erros de implementa\u00e7\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A grande vantagem do AES-256-GCM em 2026 \u00e9 a ubiquidade das instru\u00e7\u00f5es <strong>AES-NI<\/strong> nos processadores modernos. Desde Intel Sandy Bridge (2011) e AMD Bulldozer (2012), praticamente todos os processadores para desktop, servidor e a maioria dos SoCs ARM de gama m\u00e9dia-alta incluem instru\u00e7\u00f5es dedicadas que aceleram as opera\u00e7\u00f5es AES por hardware. Numa pipeline AES-NI, o processador executa uma ronda completa de AES num \u00fanico ciclo de rel\u00f3gio, em vez dos dezenas de ciclos necess\u00e1rios numa implementa\u00e7\u00e3o puramente em software.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O AES-256-GCM \u00e9 obrigat\u00f3rio no <strong>TLS 1.3<\/strong> como uma das duas cipher suites padr\u00e3o, aparece no <strong>HTTPS<\/strong>, no <strong>SSH<\/strong>, na encripta\u00e7\u00e3o de disco (FileVault, BitLocker, LUKS), em bases de dados e em sistemas de ficheiros encriptados. Segundo o NIST, mant\u00e9m uma margem de seguran\u00e7a de 128 bits contra ataques qu\u00e2nticos atrav\u00e9s do algoritmo de Grover, tornando-o adequado para dados com classifica\u00e7\u00e3o TOP SECRET.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Um ponto frequentemente esquecido: o AES-256-GCM \u00e9 a <strong>\u00fanica op\u00e7\u00e3o certificada pelo FIPS 140-3<\/strong> entre os dois algoritmos. Para organiza\u00e7\u00f5es em Portugal que operam em sectores regulados como banca, sa\u00fade ou servi\u00e7os de administra\u00e7\u00e3o p\u00fablica, esta certifica\u00e7\u00e3o pode ser um requisito obrigat\u00f3rio ao abrigo do Regulamento DORA ou da directiva NIS2, com coimas que chegam a 10 milh\u00f5es de euros por incumprimento.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"o-que-e-chacha20-poly1305\">O que \u00e9 ChaCha20-Poly1305<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">O <strong>ChaCha20<\/strong> foi criado por Daniel J. Bernstein, um dos cript\u00f3grafos mais influentes das \u00faltimas d\u00e9cadas, como uma variante do Salsa20 optimizada para velocidade e resist\u00eancia a ataques de temporiza\u00e7\u00e3o. O algoritmo baseia-se em opera\u00e7\u00f5es aritm\u00e9ticas simples, conhecidas como ARX (adi\u00e7\u00e3o, rota\u00e7\u00e3o de bits e XOR), que correm em tempo constante em qualquer processador, sem necessidade de tabelas de lookup ou instru\u00e7\u00f5es especializadas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O <strong>Poly1305<\/strong> \u00e9 um autenticador de mensagens criado tamb\u00e9m por Bernstein, que complementa o ChaCha20 para formar o AEAD <strong>ChaCha20-Poly1305<\/strong>, formalizado na <a href=\"https:\/\/datatracker.ietf.org\/doc\/html\/rfc8439\" target=\"_blank\" rel=\"noopener\">RFC 8439 da IETF<\/a>. A combina\u00e7\u00e3o usa uma chave de 256 bits, um nonce de 96 bits e produz uma tag de autentica\u00e7\u00e3o de 128 bits, exatamente como o AES-256-GCM em termos de par\u00e2metros AEAD.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O <strong>XChaCha20-Poly1305<\/strong> \u00e9 uma extens\u00e3o com nonce alargado de 192 bits, em vez de 96 bits, o que reduz drasticamente o risco de colis\u00e3o de nonces em sistemas distribu\u00eddos ou aplica\u00e7\u00f5es que geram nonces aleatoriamente. O NordPass e outros gestores de palavras-passe modernos adoptaram o XChaCha20 precisamente por este motivo: com um espa\u00e7o de nonce 2^96 vezes maior, a probabilidade de reutiliza\u00e7\u00e3o acidental de nonces aproxima-se do zero mesmo em infraestruturas de grande escala.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A adop\u00e7\u00e3o do ChaCha20-Poly1305 por gigantes tecnol\u00f3gicos como o Google e a Cloudflare foi motivada pela sua excelente performance em dispositivos m\u00f3veis Android sem AES-NI e pela sua resist\u00eancia natural a ataques de temporiza\u00e7\u00e3o em implementa\u00e7\u00f5es de software, tal como a <a href=\"https:\/\/blog.cloudflare.com\/do-the-chacha-better-mobile-performance-with-cryptography\/\" target=\"_blank\" rel=\"noopener\">Cloudflare documentou no seu blog oficial<\/a>. A equipa da Cloudflare foi pioneira na adop\u00e7\u00e3o em larga escala, publicando dados que mostravam performance 3 vezes superior ao RC4 em dispositivos Android sem AES-NI.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O protocolo <a href=\"https:\/\/www.wireguard.com\/protocol\/\" target=\"_blank\" rel=\"noopener\">WireGuard<\/a> usa exclusivamente ChaCha20-Poly1305, sem negocia\u00e7\u00e3o de cipher suite. Os criadores do WireGuard optaram por esta abordagem deliberada: eliminar a negocia\u00e7\u00e3o remove superf\u00edcie de ataque (downgrade attacks) e o ChaCha20 funciona bem em qualquer hardware onde o WireGuard seja instalado. O protocolo <a href=\"https:\/\/signal.org\/docs\/specifications\/doubleratchet\/\" target=\"_blank\" rel=\"noopener\">Double Ratchet do Signal<\/a> usa AES-256-CBC com HMAC-SHA256, demonstrando que mesmo aplica\u00e7\u00f5es focadas em privacidade adoptam AES em contextos espec\u00edficos.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"tabela-de-especificacoes-tecnicas-aes-256-gcm-vs-chacha20-poly1305\">Tabela de Especifica\u00e7\u00f5es T\u00e9cnicas: AES-256-GCM vs ChaCha20-Poly1305<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Caracter\u00edstica<\/th><th>AES-256-GCM<\/th><th>ChaCha20-Poly1305<\/th><\/tr><\/thead><tbody><tr><td>Tamanho da chave<\/td><td>256 bits<\/td><td>256 bits<\/td><\/tr><tr><td>Tamanho do bloco \/ stream<\/td><td>Bloco 128 bits<\/td><td>Stream (sem bloco fixo)<\/td><\/tr><tr><td>Nonce \/ IV<\/td><td>96 bits (padr\u00e3o GCM)<\/td><td>96 bits (RFC 8439) \/ 192 bits (XChaCha20)<\/td><\/tr><tr><td>Tag de autentica\u00e7\u00e3o<\/td><td>128 bits (GHASH)<\/td><td>128 bits (Poly1305)<\/td><\/tr><tr><td>N\u00famero de rondas<\/td><td>14 rondas<\/td><td>20 rondas<\/td><\/tr><tr><td>Tipo de cifra<\/td><td>Bloco (modo CTR + GHASH)<\/td><td>Stream (ARX: add-rotate-xor)<\/td><\/tr><tr><td>Padroniza\u00e7\u00e3o<\/td><td>NIST FIPS 197 (2001)<\/td><td>RFC 8439 IETF (2018)<\/td><\/tr><tr><td>Acelera\u00e7\u00e3o hardware<\/td><td>AES-NI em Intel\/AMD\/ARM<\/td><td>Software puro (sem instru\u00e7\u00f5es dedicadas)<\/td><\/tr><tr><td>Resist\u00eancia a timing attacks<\/td><td>Depende da implementa\u00e7\u00e3o<\/td><td>Nativa (opera\u00e7\u00f5es em tempo constante)<\/td><\/tr><tr><td>Seguran\u00e7a p\u00f3s-qu\u00e2ntica<\/td><td>128 bits (Grover, chave 256 bits)<\/td><td>128 bits (Grover, chave 256 bits)<\/td><\/tr><tr><td>Licen\u00e7a<\/td><td>Dom\u00ednio p\u00fablico \/ NIST<\/td><td>Dom\u00ednio p\u00fablico<\/td><\/tr><tr><td>FIPS 140-3 certificado<\/td><td>Sim (via OpenSSL, BoringSSL)<\/td><td>N\u00e3o<\/td><\/tr><tr><td>Usado em TLS 1.3<\/td><td>Sim (cipher suite padr\u00e3o)<\/td><td>Sim (cipher suite padr\u00e3o)<\/td><\/tr><tr><td>Risco de nonce reuse<\/td><td>Catastr\u00f3fico (exp\u00f5e chave GHASH)<\/td><td>Grave (exp\u00f5e rela\u00e7\u00f5es entre plaintexts)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"benchmarks-de-desempenho-3-fontes-independentes\">Benchmarks de Desempenho: 3 Fontes Independentes<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Os benchmarks de 2025 mostram uma imagem clara: em hardware com acelera\u00e7\u00e3o AES, o AES-256-GCM vence com margem significativa. Em hardware sem essa acelera\u00e7\u00e3o, o ChaCha20-Poly1305 mant\u00e9m-se competitivo ou superior. Os n\u00fameros que se seguem prov\u00eam de tr\u00eas fontes independentes publicadas em 2025.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"fonte-1-benchmark-de-ash-vardanian-aws-graviton-2-2025\">Fonte 1: Benchmark de Ash Vardanian (AWS Graviton 2, 2025)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ash Vardanian publicou em 2025 um benchmark multi-CPU que compara AES-256-GCM e ChaCha20-Poly1305 em payloads de 100 bytes a 1 KB. Os resultados num <strong>AWS Graviton 2<\/strong> (ARM com acelera\u00e7\u00e3o AES activa) mostram uma vantagem consistente do AES acelerado:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Opera\u00e7\u00e3o<\/th><th>ChaCha20-Poly1305<\/th><th>AES-256-GCM<\/th><th>Vantagem AES<\/th><\/tr><\/thead><tbody><tr><td>Encripta\u00e7\u00e3o (100B a 1KB)<\/td><td>168 a 503 MB\/s<\/td><td>292 a 1.065 MB\/s<\/td><td>+91% a +118%<\/td><\/tr><tr><td>Desencripta\u00e7\u00e3o (100B a 1KB)<\/td><td>197 a 491 MB\/s<\/td><td>412 a 1.104 MB\/s<\/td><td>+109% a +125%<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">A conclus\u00e3o de Vardanian \u00e9 directa: &#8220;Em 2025, o AES-256-GCM supera o ChaCha20-Poly1305 at\u00e9 3 vezes em todos os CPUs modernos com acelera\u00e7\u00e3o por hardware.&#8221; O investigador acrescenta que o argumento &#8220;os dispositivos m\u00f3veis precisam de ChaCha20&#8221;, que circulou desde 2015, <strong>j\u00e1 n\u00e3o se aplica a chips modernos<\/strong>. O texto refere ainda o artigo acad\u00e9mico &#8220;Too Much Crypto&#8221; de 2019, que sugere que ambos os algoritmos s\u00e3o sobre-provisionados em rondas: o AES-256 usa 14 rondas mas precisaria apenas de cerca de 11; o ChaCha20 usa 20 rondas mas cerca de 8 seriam suficientes para seguran\u00e7a pr\u00e1tica.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"fonte-2-benchmark-vitalvas-no-apple-m3-pro-blocos-de-1-mb-2025\">Fonte 2: Benchmark Vitalvas no Apple M3 Pro (blocos de 1 MB, 2025)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">O benchmark Vitalvas para blocos de 1 MB no <strong>Apple M3 Pro<\/strong>, com a Apple Cryptographic Engine activa, mostra a dimens\u00e3o real da diferen\u00e7a entre hardware acelerado e software puro:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Algoritmo<\/th><th>Throughput<\/th><th>Condi\u00e7\u00e3o<\/th><\/tr><\/thead><tbody><tr><td>AES-256-GCM<\/td><td>6,4 GB\/s<\/td><td>Com hardware acceleration<\/td><\/tr><tr><td>XChaCha20-Poly1305<\/td><td>4,2 GB\/s<\/td><td>Software puro<\/td><\/tr><tr><td>AES-256-GCM<\/td><td>1,8 GB\/s<\/td><td>Sem hardware acceleration<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">O dado cr\u00edtico \u00e9 o AES sem hardware: <strong>1,8 GB\/s contra 4,2 GB\/s do XChaCha20<\/strong>. Sem acelera\u00e7\u00e3o, o ChaCha20 \u00e9 133% mais r\u00e1pido. Com a Apple Cryptographic Engine, o AES-256-GCM atinge 6,4 GB\/s, superando o XChaCha20 por 52%. Este benchmark ilustra porque \u00e9 que a escolha depende do hardware e n\u00e3o de uma prefer\u00eancia abstracta.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"fonte-3-rustcrypto-aead-em-intel-xeon-platinum-8272cl\">Fonte 3: RustCrypto AEAD em Intel Xeon Platinum 8272CL<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">O benchmark do reposit\u00f3rio RustCrypto AEAD, executado num <strong>Intel Xeon Platinum 8272CL<\/strong> com suporte AVX512, regista:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>AES-256-GCM: <strong>820 a 837 MB\/s<\/strong><\/li><li>ChaCha20-Poly1305: <strong>404 a 423 MB\/s<\/strong><\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Neste ambiente de servidor de produ\u00e7\u00e3o t\u00edpico, o AES-256-GCM \u00e9 aproximadamente <strong>2 vezes mais r\u00e1pido<\/strong>. Para servidores que processam milhares de pedidos HTTPS por segundo, esta diferen\u00e7a traduz-se em poupan\u00e7a real de CPU e menor custo de infraestrutura cloud. Com CPUs que suportam as extens\u00f5es vaes e vpclmulqdq (dispon\u00edveis em Xeon Ice Lake e posteriores), o ganho \u00e9 ainda maior.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aceleracao-por-hardware-aes-ni-e-os-dispositivos-sem-suporte\">Acelera\u00e7\u00e3o por Hardware: AES-NI e os Dispositivos sem Suporte<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A <strong>instru\u00e7\u00e3o AES-NI<\/strong> (AES New Instructions) foi introduzida pela Intel em 2010 e representa a diferen\u00e7a fundamental entre os dois algoritmos no mundo real. Com AES-NI, o processador pode executar uma ronda completa de encripta\u00e7\u00e3o AES num \u00fanico ciclo de rel\u00f3gio, transformando uma opera\u00e7\u00e3o que levaria 100 a 300 MB\/s em software numa opera\u00e7\u00e3o que atinge 4 a 8 GB\/s.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Processadores com AES-NI ou equivalente:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Intel<\/strong>: Sandy Bridge (2011) e posteriores, incluindo toda a linha Core i3\/i5\/i7\/i9 moderna e Xeon<\/li><li><strong>AMD<\/strong>: Bulldozer (2012) e posteriores, incluindo Ryzen 3\/5\/7\/9 e EPYC<\/li><li><strong>ARM<\/strong>: Cortex-A57 e posteriores, Apple A7 e superiores, Qualcomm Snapdragon 801 e superiores<\/li><li><strong>Apple Silicon<\/strong>: M1, M2, M3, M4 (Apple Cryptographic Engine dedicada)<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Dispositivos sem acelera\u00e7\u00e3o AES adequada:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>CPUs x86 anteriores a 2011 (Intel Atom N450, alguns Core 2 Duo)<\/li><li>ARM Cortex-A5, A7, A8 (smartphones de 2010 a 2013)<\/li><li>Microcontroladores IoT: ESP8266, alguns modelos STM32, PIC32 sem extens\u00f5es criptogr\u00e1ficas<\/li><li>RISC-V embedidos sem extens\u00f5es Zkne\/Zknd<\/li><li>Raspberry Pi Zero e Pi 1 (ARM11, sem instru\u00e7\u00f5es AES)<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Para este segundo grupo de hardware, o <strong>ChaCha20-Poly1305 \u00e9 a escolha t\u00e9cnica correcta<\/strong>. Um estudo de 2025 indica que o XChaCha20 pode atingir 1,5 GB\/s em CPUs modernos sem acelera\u00e7\u00e3o AES, e consome aproximadamente <strong>25% menos energia<\/strong> do que o AES implementado em software em dispositivos m\u00f3veis de gama baixa. Em IoT alimentado a bateria, esta diferen\u00e7a energ\u00e9tica pode duplicar a vida \u00fatil da bateria em aplica\u00e7\u00f5es com encripta\u00e7\u00e3o intensiva.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para verificar em Node.js se o AES-NI est\u00e1 a ser utilizado via OpenSSL:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Verificar suporte e benchmark b\u00e1sico de AES-256-GCM em Node.js\nconst { createCipheriv, randomBytes } = require('crypto');\n\nconst key = randomBytes(32);\nconst iv = randomBytes(12);\nconst plaintext = Buffer.alloc(1024 * 1024); \/\/ 1 MB\n\nconst start = process.hrtime.bigint();\nconst cipher = createCipheriv('aes-256-gcm', key, iv);\nconst encrypted = Buffer.concat([cipher.update(plaintext), cipher.final()]);\nconst end = process.hrtime.bigint();\n\nconst ms = Number(end - start) \/ 1e6;\nconst throughputMBps = 1024 \/ ms * 1000;\nconsole.log(`AES-256-GCM: ${throughputMBps.toFixed(0)} MB\/s`);\n\/\/ Com AES-NI activo: esperar 1000-4000+ MB\/s\n\/\/ Sem AES-NI: esperar 100-300 MB\/s<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"analise-de-seguranca-pontos-fortes-e-vulnerabilidades\">An\u00e1lise de Seguran\u00e7a: Pontos Fortes e Vulnerabilidades<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Do ponto de vista da seguran\u00e7a te\u00f3rica, ambos os algoritmos s\u00e3o considerados seguros contra todos os ataques conhecidos em 2026. A diferen\u00e7a n\u00e3o est\u00e1 na resist\u00eancia criptogr\u00e1fica abstracta, mas no <strong>comportamento face a erros de implementa\u00e7\u00e3o<\/strong> e nos <strong>vetores de ataque pr\u00e1ticos<\/strong> espec\u00edficos de cada algoritmo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"risco-de-reutilizacao-de-nonce\">Risco de Reutiliza\u00e7\u00e3o de Nonce<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">O risco mais cr\u00edtico para ambos os AEADs \u00e9 a <strong>reutiliza\u00e7\u00e3o de nonce com a mesma chave<\/strong>. Se o mesmo nonce for utilizado duas vezes, as consequ\u00eancias s\u00e3o graves em ambos os casos, mas de formas distintas:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>AES-256-GCM com nonce reutilizado<\/strong>: exp\u00f5e a chave de autentica\u00e7\u00e3o GHASH, comprometendo completamente a integridade de todas as mensagens cifradas com essa chave. Um atacante consegue forjar mensagens autenticadas sem conhecer a chave AES. \u00c9 considerado o cen\u00e1rio de falha mais catastr\u00f3fico entre os AEADs modernos, documentado em ataques reais a implementa\u00e7\u00f5es TLS defeituosas.<\/li><li><strong>ChaCha20-Poly1305 com nonce reutilizado<\/strong>: o XOR do keystream entre dois textos cifrados fica exposto, podendo revelar rela\u00e7\u00f5es entre as mensagens originais. Igualmente grave para a confidencialidade, mas com um vector de ataque diferente do AES-GCM.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">O <strong>XChaCha20-Poly1305<\/strong> mitiga este risco de forma elegante: com um nonce de 192 bits, \u00e9 seguro gerar nonces aleatoriamente usando um CSPRNG mesmo para volumes muito elevados de mensagens. Com nonces de 96 bits (AES-GCM e ChaCha20 padr\u00e3o), a probabilidade de colis\u00e3o aleat\u00f3ria come\u00e7a a ser relevante ap\u00f3s aproximadamente 2^32 mensagens com a mesma chave, o que corresponde a cerca de 4 mil milh\u00f5es de mensagens.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"ataques-de-temporizacao-timing-attacks\">Ataques de Temporiza\u00e7\u00e3o (Timing Attacks)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">O ChaCha20 foi desenhado explicitamente para <strong>execu\u00e7\u00e3o em tempo constante<\/strong>. As opera\u00e7\u00f5es ARX (add-rotate-xor) que comp\u00f5em o algoritmo correm em exactamente o mesmo n\u00famero de ciclos independentemente dos valores dos dados, tornando-o naturalmente resistente a ataques de cache (cache-timing attacks) e ataques de temporiza\u00e7\u00e3o em implementa\u00e7\u00f5es de software.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O AES em software pode vazar informa\u00e7\u00e3o de temporiza\u00e7\u00e3o atrav\u00e9s de acessos \u00e0 mem\u00f3ria cache dependentes dos dados (S-box lookups). Esta vulnerabilidade foi explorada em ataques como o <strong>Bernstein cache-timing attack de 2005<\/strong> e em ataques FLUSH+RELOAD em ambientes de virtualiza\u00e7\u00e3o partilhada. A solu\u00e7\u00e3o pr\u00e1tica \u00e9 usar AES-NI: as instru\u00e7\u00f5es de hardware executam em tempo constante e eliminam completamente este vector de ataque. Em implementa\u00e7\u00f5es de software puro, o ChaCha20 oferece uma postura de seguran\u00e7a superior sem configura\u00e7\u00e3o adicional.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"protocolos-e-software-que-usam-cada-cifra-em-2026\">Protocolos e Software que Usam Cada Cifra em 2026<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A escolha de cifra n\u00e3o \u00e9 apenas uma decis\u00e3o de implementa\u00e7\u00e3o pr\u00f3pria. O protocolo ou framework em que se trabalha frequentemente dita qual cifra est\u00e1 dispon\u00edvel, ou qual \u00e9 preferida por padr\u00e3o.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Protocolo \/ Software<\/th><th>Cifra utilizada<\/th><th>Notas<\/th><\/tr><\/thead><tbody><tr><td>TLS 1.3<\/td><td>Ambas dispon\u00edveis<\/td><td>AES-256-GCM e ChaCha20-Poly1305 s\u00e3o as duas cipher suites obrigat\u00f3rias no RFC 8446<\/td><\/tr><tr><td>WireGuard<\/td><td>ChaCha20-Poly1305 exclusivo<\/td><td>Sem negocia\u00e7\u00e3o de cipher suite por design; WireGuard-AES em investiga\u00e7\u00e3o activa<\/td><\/tr><tr><td>Signal (Double Ratchet)<\/td><td>AES-256-CBC + HMAC-SHA256<\/td><td>Usa AES-CBC com HMAC no Double Ratchet; ChaCha20 em camadas de transporte<\/td><\/tr><tr><td>QUIC \/ HTTP\/3<\/td><td>Ambas (via TLS 1.3)<\/td><td>Cliente e servidor negoceiam a cipher suite mais eficiente para o hardware<\/td><\/tr><tr><td>SSH (OpenSSH 9.x)<\/td><td>AES-256-GCM preferido<\/td><td>chacha20-poly1305@openssh.com dispon\u00edvel; AES-GCM favorecido em servidores modernos<\/td><\/tr><tr><td>BitLocker (Windows)<\/td><td>AES-256-XTS<\/td><td>Modo XTS para encripta\u00e7\u00e3o de disco; sem modo GCM<\/td><\/tr><tr><td>FileVault (macOS)<\/td><td>AES-256-XTS<\/td><td>Apple Cryptographic Engine acelera por hardware<\/td><\/tr><tr><td>NordPass<\/td><td>XChaCha20-Poly1305<\/td><td>Adoptou XChaCha20 pelo espa\u00e7o de nonce alargado (192 bits)<\/td><\/tr><tr><td>OpenSSL 3.x<\/td><td>AES-256-GCM padr\u00e3o<\/td><td>Prefere AES-GCM quando AES-NI presente; ChaCha20 como fallback<\/td><\/tr><tr><td>LUKS2 (Linux disk)<\/td><td>AES-256-XTS<\/td><td>ChaCha20 n\u00e3o dispon\u00edvel nas cipher suites LUKS por padr\u00e3o<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">O TLS 1.3, que protege a esmagadora maioria do tr\u00e1fego HTTPS em 2026, implementa ambas as cifras como cipher suites obrigat\u00f3rias. O RFC 8446 exige suporte para <code>TLS_AES_128_GCM_SHA256<\/code>, <code>TLS_AES_256_GCM_SHA384<\/code> e <code>TLS_CHACHA20_POLY1305_SHA256<\/code>. Na pr\u00e1tica, stacks como OpenSSL e BoringSSL priorizam AES-256-GCM em hardware com AES-NI e recorrem ao ChaCha20-Poly1305 quando a acelera\u00e7\u00e3o n\u00e3o est\u00e1 dispon\u00edvel, exactamente como previsto pelos autores do protocolo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"5-casos-de-uso-reais-qual-usar-em-cada-cenario\">5 Casos de Uso Reais: Qual Usar em Cada Cen\u00e1rio<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"caso-1-api-https-em-servidor-cloud-com-intel-ou-amd\">Caso 1: API HTTPS em Servidor Cloud com Intel ou AMD<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Uma API REST em Node.js a correr num servidor AWS EC2 c6i.xlarge (Intel Ice Lake com AES-NI e AVX-512) serve 10.000 pedidos por segundo, cada um com payload cifrado de 4 KB. Neste cen\u00e1rio, o <strong>AES-256-GCM \u00e9 a escolha correcta<\/strong>. O throughput de 820 a 837 MB\/s num Xeon Platinum e o suporte nativo via OpenSSL com AES-NI activo traduzem-se em lat\u00eancia de encripta\u00e7\u00e3o abaixo de 1 microssegundo por pedido. O ChaCha20 daria resultados funcionais mas com 50 a 60% menos throughput sem qualquer benef\u00edcio de seguran\u00e7a adicional neste contexto.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"caso-2-aplicacao-movel-android-para-mercados-com-hardware-heterogeneo\">Caso 2: Aplica\u00e7\u00e3o M\u00f3vel Android para Mercados com Hardware Heterog\u00e9neo<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Uma aplica\u00e7\u00e3o de mensagens para Android a distribuir no Brasil, \u00cdndia e Sudeste Asi\u00e1tico tem como target dispositivos de 2017 a 2020 com Snapdragon 430 ou MediaTek MT6753, que carecem de acelera\u00e7\u00e3o AES robusta. O <strong>ChaCha20-Poly1305 \u00e9 mandat\u00f3rio<\/strong> neste caso. A diferen\u00e7a de consumo energ\u00e9tico de 25% \u00e9 cr\u00edtica em dispositivos com bateria de 3.000 mAh, e a performance em software puro \u00e9 consistente independentemente do modelo de dispositivo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"caso-3-gestor-de-palavras-passe-com-sincronizacao-multiplataforma\">Caso 3: Gestor de Palavras-Passe com Sincroniza\u00e7\u00e3o Multiplataforma<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Um gestor de palavras-passe que sincroniza cofres encriptados entre dispositivos heterog\u00e9neos (Mac M3, iPhone 16, Android antigo, Raspberry Pi) beneficia do <strong>XChaCha20-Poly1305<\/strong>. O nonce alargado de 192 bits elimina o risco de colis\u00e3o mesmo com gera\u00e7\u00e3o aleat\u00f3ria de nonces. O comportamento de software puro \u00e9 consistente em todos os dispositivos. O NordPass adoptou exactamente esta abordagem por estas raz\u00f5es, tornando o XChaCha20 o padr\u00e3o para gestores de palavras-passe modernos.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"caso-4-base-de-dados-com-encriptacao-de-campos-pii-em-contexto-regulado\">Caso 4: Base de Dados com Encripta\u00e7\u00e3o de Campos PII em Contexto Regulado<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Um sistema que encripta campos PII (nome, NIF, IBAN) numa base de dados PostgreSQL com aplica\u00e7\u00e3o a correr em servidores dedicados com Intel Xeon deve usar <strong>AES-256-GCM<\/strong>. A conformidade com <strong>FIPS 140-3<\/strong>, necess\u00e1ria para contratos governamentais e sectores regulados como banca e sa\u00fade em Portugal ao abrigo do DORA, exige AES. O ChaCha20-Poly1305 n\u00e3o est\u00e1 certificado FIPS, o que pode inviabilizar a aprova\u00e7\u00e3o de auditoria em contextos regulados.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"caso-5-dispositivo-iot-com-transmissao-cifrada-em-bateria\">Caso 5: Dispositivo IoT com Transmiss\u00e3o Cifrada em Bateria<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Um sensor IoT baseado em ESP32 (Xtensa LX7 a 240 MHz) que transmite leituras cifradas a cada 30 segundos deve usar <strong>ChaCha20-Poly1305<\/strong>. O ESP32 tem acelera\u00e7\u00e3o AES por hardware, mas a biblioteca ChaCha20 em C puro ocupa menos mem\u00f3ria flash e RAM, relevante em MCUs com 520 KB de SRAM. Para MCUs sem acelera\u00e7\u00e3o AES como o ESP8266 ou Raspberry Pi Zero W, o ChaCha20 n\u00e3o \u00e9 apenas prefer\u00edvel, \u00e9 praticamente a \u00fanica escolha com performance aceit\u00e1vel.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"tabela-de-precos-e-custos-de-implementacao\">Tabela de Pre\u00e7os e Custos de Implementa\u00e7\u00e3o<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Tanto o AES-256 como o ChaCha20 s\u00e3o <strong>algoritmos de dom\u00ednio p\u00fablico<\/strong> sem licenciamento por utiliza\u00e7\u00e3o. Os custos reais surgem na implementa\u00e7\u00e3o, conformidade e infraestrutura.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Factor de Custo<\/th><th>AES-256-GCM<\/th><th>ChaCha20-Poly1305<\/th><\/tr><\/thead><tbody><tr><td>Licen\u00e7a do algoritmo<\/td><td>Gratuito (dom\u00ednio p\u00fablico, NIST)<\/td><td>Gratuito (dom\u00ednio p\u00fablico)<\/td><\/tr><tr><td>Certifica\u00e7\u00e3o FIPS 140-3<\/td><td>Inclu\u00edda em OpenSSL 3.x, BoringSSL<\/td><td>N\u00e3o certificado (custo adicional de compliance)<\/td><\/tr><tr><td>Custo de CPU (servidor com AES-NI)<\/td><td>Baixo (acelera por hardware, menos ciclos)<\/td><td>M\u00e9dio (software puro, mais ciclos de CPU)<\/td><\/tr><tr><td>Custo de energia (IoT e mobile)<\/td><td>Mais elevado sem hw acceleration (+25%)<\/td><td>Baixo (eficiente em software, menos bateria)<\/td><\/tr><tr><td>Biblioteca em Node.js<\/td><td>M\u00f3dulo crypto nativo (inclu\u00eddo)<\/td><td>@noble\/ciphers ou libsodium-wrappers (gratuito)<\/td><\/tr><tr><td>Suporte em HSMs<\/td><td>Universal (todos os HSMs certificados)<\/td><td>Limitado (apenas HSMs recentes)<\/td><\/tr><tr><td>Custo de auditoria de seguran\u00e7a<\/td><td>Menor (mais familiar a auditores e reguladores)<\/td><td>Ligeiramente superior (menor familiaridade regulat\u00f3ria)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Em Portugal, o <strong>Regulamento (UE) 2022\/2554 (DORA)<\/strong> para o sector financeiro e a conformidade com a <strong>NIS2<\/strong> (transposta pelo Decreto-Lei n.\u00ba 20\/2025) privilegiam criptografia certificada. As coimas por incumprimento podem atingir <strong>10 milh\u00f5es de euros ou 2% da factura\u00e7\u00e3o global anual<\/strong>. Neste contexto, o custo de usar ChaCha20 em vez de AES em sistemas que requerem FIPS 140-3 pode ser muito superior ao custo de licenciamento.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"guia-de-migracao-aes-256-gcm-e-chacha20-poly1305\">Guia de Migra\u00e7\u00e3o: AES-256-GCM e ChaCha20-Poly1305<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A migra\u00e7\u00e3o entre os dois AEADs \u00e9 tecnicamente directa porque ambos t\u00eam a mesma interface: chave de 256 bits, nonce \u00fanico, dados associados opcionais e tag de autentica\u00e7\u00e3o de 128 bits. O desafio est\u00e1 nos detalhes operacionais de seguran\u00e7a durante a transi\u00e7\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Passo 1: Auditoria do c\u00f3digo existente<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Procurar todas as refer\u00eancias ao algoritmo actual no c\u00f3digo\ngrep -r \"aes-256-gcm\\|AES_256_GCM\\|aes256gcm\" --include=\"*.js\" --include=\"*.ts\" .\ngrep -r \"chacha20\\|ChaCha20\\|xchacha\" --include=\"*.js\" --include=\"*.ts\" .<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Passo 2: Migra\u00e7\u00e3o de AES-256-GCM para ChaCha20-Poly1305 em Node.js<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ ANTES: AES-256-GCM (m\u00f3dulo crypto nativo)\nconst { createCipheriv, createDecipheriv, randomBytes } = require('crypto');\n\nfunction encryptAES(plaintext, key) {\n  const iv = randomBytes(12); \/\/ nonce de 96 bits\n  const cipher = createCipheriv('aes-256-gcm', key, iv);\n  const encrypted = Buffer.concat([cipher.update(plaintext, 'utf8'), cipher.final()]);\n  const tag = cipher.getAuthTag();\n  return { iv, encrypted, tag };\n}\n\n\/\/ DEPOIS: XChaCha20-Poly1305 com @noble\/ciphers (nonce 192 bits)\n\/\/ npm install @noble\/ciphers\nconst { xchacha20poly1305 } = require('@noble\/ciphers\/chacha');\nconst { randomBytes } = require('crypto');\n\nfunction encryptXChaCha(plaintext, key) {\n  const nonce = randomBytes(24); \/\/ nonce de 192 bits para XChaCha20\n  const stream = xchacha20poly1305(key, nonce);\n  const encrypted = stream.encrypt(Buffer.from(plaintext, 'utf8'));\n  \/\/ tag de 16 bytes inclu\u00edda nos \u00faltimos bytes do encrypted\n  return { nonce, encrypted };\n}\n\nfunction decryptXChaCha(nonce, encrypted, key) {\n  const stream = xchacha20poly1305(key, nonce);\n  return Buffer.from(stream.decrypt(encrypted)).toString('utf8');\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Passo 3: Gest\u00e3o segura de dados existentes durante a migra\u00e7\u00e3o<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Adicionar um campo de vers\u00e3o de cifra ao envelope de encripta\u00e7\u00e3o (ex: <code>{\"v\":2,\"alg\":\"xchacha20\",\"nonce\":\"...\",\"data\":\"...\"}<\/code>) para identificar qual algoritmo foi usado em cada registo<\/li><li>Manter ambas as implementa\u00e7\u00f5es activas durante o per\u00edodo de transi\u00e7\u00e3o (m\u00ednimo 30 dias de overlap)<\/li><li>Nunca reutilizar nonces ao gerar novo material encriptado; cada mensagem precisa de um nonce \u00fanico gerado com CSPRNG<\/li><li>Re-encriptar dados sens\u00edveis em background com o novo algoritmo, validando a desencripta\u00e7\u00e3o antes de apagar a vers\u00e3o antiga<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Passo 4: Verifica\u00e7\u00e3o de cipher suites no servidor TLS<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Verificar cipher suites TLS 1.3 dispon\u00edveis\nopenssl ciphers -v 'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256'\n\n# Testar handshake com ChaCha20-Poly1305 explicitamente\nopenssl s_client -connect servidor.exemplo.pt:443 \\\n  -ciphersuites TLS_CHACHA20_POLY1305_SHA256 -tls1_3\n\n# Ver qual cipher suite foi negociada\nopenssl s_client -connect servidor.exemplo.pt:443 2>&1 | grep \"Cipher    :\"<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"opinioes-de-especialistas\">Opini\u00f5es de Especialistas<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ash Vardanian<\/strong>, investigador de performance e autor de benchmarks criptogr\u00e1ficos amplamente citados em 2025, defende que &#8220;o AES-256-GCM supera o ChaCha20-Poly1305 at\u00e9 3 vezes em todos os CPUs modernos com acelera\u00e7\u00e3o por hardware&#8221; e que a recomenda\u00e7\u00e3o &#8220;os dispositivos m\u00f3veis precisam de ChaCha20&#8221; \u00e9 uma simplifica\u00e7\u00e3o que n\u00e3o reflecte o hardware actual. A sua an\u00e1lise multi-CPU \u00e9 um dos benchmarks mais citados em discuss\u00f5es t\u00e9cnicas de 2025.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Daniel J. Bernstein<\/strong>, criador do ChaCha20 e refer\u00eancia mundial em criptografia aplicada, projectou o algoritmo com uma filosofia expl\u00edcita: maximizar a seguran\u00e7a em implementa\u00e7\u00f5es de software sem depend\u00eancia de hardware especializado. O seu trabalho documentado em <a href=\"https:\/\/cr.yp.to\/chacha.html\" target=\"_blank\" rel=\"noopener\">cr.yp.to<\/a> continua relevante em 2026, especialmente para sistemas embebidos e dispositivos com limita\u00e7\u00f5es de energia onde o AES-NI n\u00e3o est\u00e1 dispon\u00edvel.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A equipa de seguran\u00e7a da Cloudflare<\/strong> foi pioneira na adop\u00e7\u00e3o de ChaCha20-Poly1305 em larga escala no TLS. A sua an\u00e1lise publicada no <a href=\"https:\/\/blog.cloudflare.com\/do-the-chacha-better-mobile-performance-with-cryptography\/\" target=\"_blank\" rel=\"noopener\">blog oficial da Cloudflare<\/a> foi determinante para a inclus\u00e3o do ChaCha20-Poly1305 como cipher suite obrigat\u00f3ria no TLS 1.3. Os dados da Cloudflare mostravam ganhos de performance de 3 vezes face ao RC4 em dispositivos Android sem AES-NI, justificando a adop\u00e7\u00e3o em 2016.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>ThePrimeagen<\/strong>, engenheiro de software e criador de conte\u00fado t\u00e9cnico com mais de 400 mil seguidores no YouTube, partilhou em streams a sua perspectiva pr\u00e1tica: para aplica\u00e7\u00f5es Rust ou Go a correr em servidores cloud modernos, &#8220;usa o que a tua TLS stack escolhe automaticamente; ela sabe o que o hardware suporta&#8221;. A recomenda\u00e7\u00e3o reflecte a realidade de que para a maioria dos programadores, a escolha \u00e9 feita pela biblioteca TLS com base no hardware dispon\u00edvel.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A <strong>comunidade de criptografia aplicada<\/strong>, incluindo discuss\u00f5es no r\/crypto e em f\u00f3runs t\u00e9cnicos como o Hacker News, converge numa perspectiva partilhada: &#8220;A diferen\u00e7a de seguran\u00e7a entre os dois algoritmos \u00e9 desprez\u00edvel na pr\u00e1tica. A diferen\u00e7a de performance depende inteiramente do hardware. Escolhe ChaCha20 se tens d\u00favidas sobre o suporte AES-NI do dispositivo alvo; usa AES-256-GCM se o hardware \u00e9 controlado e moderno.&#8221;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"criptografia-pos-quantica-impacto-em-aes-256-e-chacha20\">Criptografia P\u00f3s-Qu\u00e2ntica: Impacto em AES-256 e ChaCha20<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A quest\u00e3o p\u00f3s-qu\u00e2ntica para cifras sim\u00e9tricas \u00e9 frequentemente mal compreendida. O algoritmo qu\u00e2ntico de <strong>Grover<\/strong> reduz efectivamente o espa\u00e7o de busca para chaves sim\u00e9tricas de N bits para N\/2 bits. As implica\u00e7\u00f5es pr\u00e1ticas para os dois algoritmos s\u00e3o as seguintes:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>AES-128<\/strong>: seguran\u00e7a efectiva reduzida de 128 bits para 64 bits sob Grover, considerada insuficiente no cen\u00e1rio de computadores qu\u00e2nticos de grande escala<\/li><li><strong>AES-256<\/strong>: seguran\u00e7a efectiva reduzida de 256 bits para 128 bits, considerada <strong>adequada e robusta<\/strong> para os pr\u00f3ximos 30 ou mais anos<\/li><li><strong>ChaCha20-Poly1305<\/strong> com chave de 256 bits: mesma redu\u00e7\u00e3o para 128 bits, igualmente seguro no cen\u00e1rio p\u00f3s-qu\u00e2ntico<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">O NIST confirma na sua publica\u00e7\u00e3o <a href=\"https:\/\/nvlpubs.nist.gov\/nistpubs\/FIPS\/NIST.FIPS.197-upd1.pdf\" target=\"_blank\" rel=\"noopener\">FIPS 197 actualizada<\/a> que o AES-256 \u00e9 considerado seguro no cen\u00e1rio p\u00f3s-qu\u00e2ntico. Do ponto de vista qu\u00e2ntico, ambos os algoritmos com chave de 256 bits mant\u00eam uma margem de seguran\u00e7a equivalente e adequada.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A <strong>amea\u00e7a qu\u00e2ntica real e urgente em 2026<\/strong> n\u00e3o est\u00e1 nas cifras sim\u00e9tricas: est\u00e1 na criptografia assim\u00e9trica. RSA, ECDSA e ECDH ficam comprometidos pelo algoritmo de Shor com computadores qu\u00e2nticos suficientemente grandes. \u00c9 por isso que o NIST padronizou em 2024 o <strong>ML-KEM (CRYSTALS-Kyber)<\/strong> para encapsulamento de chaves e o <strong>ML-DSA (CRYSTALS-Dilithium)<\/strong> para assinaturas digitais, para substituir RSA e ECC na troca de chaves e assinaturas. AES-256 e ChaCha20-Poly1305 podem continuar a ser usados como cifras sim\u00e9tricas em arquitecturas p\u00f3s-qu\u00e2nticas sem qualquer altera\u00e7\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para aprofundar este tema, consulte o artigo sobre <a href=\"\/pt\/post-quantum-cryptography-2026\/\">criptografia p\u00f3s-qu\u00e2ntica e os padr\u00f5es NIST de 2026<\/a> publicado neste site.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"pros-e-contras-analise-comparativa\">Pr\u00f3s e Contras: An\u00e1lise Comparativa<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"aes-256-gcm-pros-e-contras\">AES-256-GCM: Pr\u00f3s e Contras<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Pr\u00f3s<\/th><th>Contras<\/th><\/tr><\/thead><tbody><tr><td>At\u00e9 3x mais r\u00e1pido com AES-NI activo<\/td><td>100 a 300 MB\/s em software sem AES-NI<\/td><\/tr><tr><td>Certifica\u00e7\u00e3o FIPS 140-3 (obrigat\u00f3ria em sectores regulados)<\/td><td>Vulner\u00e1vel a timing attacks em implementa\u00e7\u00f5es de software puro<\/td><\/tr><tr><td>Suporte universal em HSMs certificados<\/td><td>Nonce misuse catastr\u00f3fico: exp\u00f5e chave GHASH<\/td><\/tr><tr><td>Padr\u00e3o em TLS 1.3, SSH, BitLocker, LUKS, FileVault<\/td><td>Nonce de 96 bits: risco de colis\u00e3o ap\u00f3s ~4 mil milh\u00f5es de mensagens por chave<\/td><\/tr><tr><td>M\u00f3dulo crypto nativo no Node.js<\/td><td>N\u00e3o recomendado sem hardware acelerado em IoT de baixo custo<\/td><\/tr><tr><td>128 bits de seguran\u00e7a p\u00f3s-qu\u00e2ntica (chave 256 bits)<\/td><td>Implementa\u00e7\u00e3o em modo GCM mais complexa que stream cipher<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"chacha20-poly1305-pros-e-contras\">ChaCha20-Poly1305: Pr\u00f3s e Contras<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Pr\u00f3s<\/th><th>Contras<\/th><\/tr><\/thead><tbody><tr><td>Performance consistente em qualquer hardware<\/td><td>Mais lento que AES-256-GCM em servidores com AES-NI (2 a 3x)<\/td><\/tr><tr><td>Resist\u00eancia nativa a timing attacks (opera\u00e7\u00f5es ARX constantes)<\/td><td>Sem certifica\u00e7\u00e3o FIPS 140-3<\/td><\/tr><tr><td>XChaCha20: nonce de 192 bits elimina risco de colis\u00e3o aleat\u00f3ria<\/td><td>Suporte limitado em HSMs antigos<\/td><\/tr><tr><td>Ideal para IoT, mobile e embedded sem AES-NI<\/td><td>Requer biblioteca externa no Node.js<\/td><\/tr><tr><td>Design simples e audit\u00e1vel (sem tabelas de lookup)<\/td><td>N\u00e3o dispon\u00edvel por padr\u00e3o em BitLocker, FileVault, LUKS<\/td><\/tr><tr><td>WireGuard usa exclusivamente ChaCha20 por design<\/td><td>Menor familiaridade em auditorias de conformidade regulat\u00f3ria<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"recomendacoes-por-caso-de-uso-quando-escolher-cada-cifra\">Recomenda\u00e7\u00f5es por Caso de Uso: Quando Escolher Cada Cifra<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Com base nos benchmarks, an\u00e1lise de seguran\u00e7a e requisitos de conformidade documentados, as recomenda\u00e7\u00f5es pr\u00e1ticas para 2026 s\u00e3o:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li><strong>Servidores cloud modernos com Intel ou AMD (AWS, Azure, GCP, OVHcloud)<\/strong>: use <strong>AES-256-GCM<\/strong>. AES-NI est\u00e1 sempre presente nestes ambientes e o ganho de at\u00e9 3x de throughput \u00e9 real, documentado e consistente nos benchmarks de 2025.<\/li><li><strong>Aplica\u00e7\u00f5es m\u00f3veis Android para hardware heterog\u00e9neo ou IoT sem AES-NI<\/strong>: use <strong>ChaCha20-Poly1305<\/strong>. Performance consistente sem depend\u00eancia de instru\u00e7\u00f5es de hardware que podem n\u00e3o estar presentes. Economia de energia de 25% em dispositivos com bateria.<\/li><li><strong>Sectores regulados em Portugal (banca, sa\u00fade, governo) com FIPS 140-3 obrigat\u00f3rio<\/strong>: use <strong>AES-256-GCM<\/strong>. A certifica\u00e7\u00e3o FIPS \u00e9 frequentemente obrigat\u00f3ria. O DORA, a NIS2 e contratos p\u00fablicos em Portugal privilegiam ou exigem criptografia certificada.<\/li><li><strong>Gestores de palavras-passe, cofres de dados e sistemas com gera\u00e7\u00e3o aleat\u00f3ria de nonces em volume<\/strong>: use <strong>XChaCha20-Poly1305<\/strong>. O nonce alargado de 192 bits elimina o risco de colis\u00e3o, simplifica a gest\u00e3o de nonces e reduz o risco de erros de implementa\u00e7\u00e3o.<\/li><li><strong>VPNs baseadas em WireGuard<\/strong>: o <strong>ChaCha20-Poly1305 j\u00e1 \u00e9 a \u00fanica op\u00e7\u00e3o dispon\u00edvel<\/strong> no protocolo WireGuard. Para OpenVPN ou IKEv2\/IPsec em servidores modernos, o AES-256-GCM \u00e9 prefer\u00edvel pelo throughput superior.<\/li><\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"veredicto-final-aes-256-gcm-vs-chacha20-poly1305-em-2026\">Veredicto Final: AES-256-GCM vs ChaCha20-Poly1305 em 2026<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A resposta baseada em dados de 2025 a 2026 \u00e9 esta: <strong>n\u00e3o existe um vencedor universal<\/strong>. A escolha correcta depende do hardware onde o c\u00f3digo corre, dos requisitos de conformidade regulat\u00f3ria e do perfil de risco espec\u00edfico de cada implementa\u00e7\u00e3o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Use AES-256-GCM quando:<\/strong> o hardware garante AES-NI (qualquer servidor cloud moderno, qualquer desktop Intel ou AMD desde 2012, iPhones desde o A7, Macs Apple Silicon); quando a conformidade com FIPS 140-3 \u00e9 um requisito; quando o throughput m\u00e1ximo em hardware controlado \u00e9 priorit\u00e1rio; e quando a integra\u00e7\u00e3o com sistemas como BitLocker, LUKS ou HSMs \u00e9 necess\u00e1ria.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Use ChaCha20-Poly1305 ou XChaCha20 quando:<\/strong> o hardware alvo \u00e9 heterog\u00e9neo ou inclui dispositivos sem AES-NI; quando a aplica\u00e7\u00e3o \u00e9 para IoT, embedded ou dispositivos m\u00f3veis de gama baixa; quando a resist\u00eancia nativa a timing attacks em software \u00e9 priorit\u00e1ria; e quando a gest\u00e3o de nonces em volume torna o espa\u00e7o alargado do XChaCha20 uma vantagem operacional.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O <strong>TLS 1.3<\/strong> j\u00e1 toma esta decis\u00e3o automaticamente, priorizando AES-256-GCM quando AES-NI est\u00e1 dispon\u00edvel e recorrendo ao ChaCha20-Poly1305 caso contr\u00e1rio. Para a maioria das aplica\u00e7\u00f5es web, simplesmente deixar o TLS 1.3 negociar a cipher suite \u00f3ptima \u00e9 a estrat\u00e9gia correcta e n\u00e3o requer configura\u00e7\u00e3o manual.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Do ponto de vista da seguran\u00e7a criptogr\u00e1fica pura em 2026, ambos s\u00e3o equivalentes: sem ataques pr\u00e1ticos conhecidos, margem p\u00f3s-qu\u00e2ntica de 128 bits com chave de 256 bits, e o principal risco em ambos \u00e9 a reutiliza\u00e7\u00e3o de nonces, n\u00e3o o algoritmo em si. A decis\u00e3o \u00e9 operacional e de infraestrutura, n\u00e3o criptogr\u00e1fica.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"cobertura-relacionada\">Cobertura Relacionada<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Para aprofundar os temas abordados neste artigo, consulte os seguintes recursos:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"\/pt\/aes-256-encryption-nodejs\/\">AES-256 em Node.js: implementa\u00e7\u00e3o passo a passo com exemplos pr\u00e1ticos<\/a><\/li><li><a href=\"\/pt\/symmetric-vs-asymmetric-encryption\/\">Encripta\u00e7\u00e3o Sim\u00e9trica vs Assim\u00e9trica: diferen\u00e7a de 1000x na velocidade<\/a><\/li><li><a href=\"\/pt\/post-quantum-cryptography-2026\/\">Criptografia P\u00f3s-Qu\u00e2ntica: 50% da Web Protegida com ML-KEM em 2026<\/a><\/li><li><a href=\"\/pt\/mtls-node-js-tls-13\/\">mTLS em Node.js: TLS 1.3 em 12 Passos com certificados m\u00fatuos<\/a><\/li><li><a href=\"\/pt\/wireguard-vs-openvpn\/\">WireGuard vs OpenVPN: 3 a 4 vezes mais r\u00e1pido com ChaCha20<\/a><\/li><li><a href=\"\/pt\/cryptography-hub\/\">Hashing e Criptografia Explicados: guia completo para programadores<\/a><\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"faq-aes-256-gcm-vs-chacha20-poly1305\">FAQ: AES-256-GCM vs ChaCha20-Poly1305<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"o-aes-256-gcm-e-mais-seguro-que-o-chacha20-poly1305\">O AES-256-GCM \u00e9 mais seguro que o ChaCha20-Poly1305?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">N\u00e3o em termos te\u00f3ricos. Ambos oferecem 256 bits de seguran\u00e7a com chave de 256 bits e s\u00e3o considerados igualmente seguros contra todos os ataques criptogr\u00e1ficos conhecidos em 2026. A diferen\u00e7a est\u00e1 na resist\u00eancia pr\u00e1tica a timing attacks em implementa\u00e7\u00f5es de software: o ChaCha20 corre em tempo constante por design, enquanto o AES em software puro pode vazar informa\u00e7\u00e3o de temporiza\u00e7\u00e3o atrav\u00e9s de acessos dependentes de dados \u00e0 mem\u00f3ria cache. Com AES-NI activo, esta diferen\u00e7a desaparece.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"qual-usar-no-tls-1-3\">Qual usar no TLS 1.3?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">O TLS 1.3 decide automaticamente com base no hardware dispon\u00edvel. Em servidores e clientes com AES-NI, stacks como OpenSSL e BoringSSL preferem <code>TLS_AES_256_GCM_SHA384<\/code>. Em dispositivos sem AES-NI, <code>TLS_CHACHA20_POLY1305_SHA256<\/code> \u00e9 priorizado. Para uma aplica\u00e7\u00e3o web t\u00edpica, n\u00e3o \u00e9 necess\u00e1rio for\u00e7ar a cipher suite manualmente. O protocolo optimiza automaticamente por hardware.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"o-que-e-o-xchacha20-e-quando-usar\">O que \u00e9 o XChaCha20 e quando usar?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">O XChaCha20-Poly1305 \u00e9 uma variante do ChaCha20-Poly1305 com nonce de 192 bits em vez de 96 bits. O nonce alargado torna seguro gerar nonces aleatoriamente mesmo para volumes muito elevados de mensagens, eliminando o risco de colis\u00e3o de nonces. \u00c9 recomendado para gestores de palavras-passe, cofres de dados distribu\u00eddos e qualquer aplica\u00e7\u00e3o onde a gest\u00e3o manual de nonces seja complexa. O NordPass adoptou o XChaCha20 por esta raz\u00e3o espec\u00edfica.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"o-chacha20-poly1305-esta-disponivel-nativamente-no-node-js\">O ChaCha20-Poly1305 est\u00e1 dispon\u00edvel nativamente no Node.js?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Parcialmente. O m\u00f3dulo <code>crypto<\/code> nativo do Node.js suporta <code>chacha20-poly1305<\/code> atrav\u00e9s do OpenSSL, mas a API n\u00e3o \u00e9 t\u00e3o directa como para o AES-GCM. Para uso pr\u00e1tico em produ\u00e7\u00e3o, a biblioteca <code>@noble\/ciphers<\/code> oferece uma interface limpa para ChaCha20-Poly1305 e XChaCha20-Poly1305 em JavaScript\/TypeScript puro, com zero depend\u00eancias externas e auditada pela Trail of Bits.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"o-wireguard-pode-usar-aes-256-gcm\">O WireGuard pode usar AES-256-GCM?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">O WireGuard padr\u00e3o usa exclusivamente ChaCha20-Poly1305 e n\u00e3o suporta negocia\u00e7\u00e3o de cipher suite por design, para eliminar ataques de downgrade. Existe investiga\u00e7\u00e3o activa em variantes &#8220;WireGuard-AES&#8221; para servidores de alto desempenho onde o AES acelerado seria vantajoso, com resultados publicados em 2025, mas essas variantes n\u00e3o fazem parte do protocolo WireGuard oficial.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"qual-o-impacto-da-computacao-quantica-nestes-algoritmos\">Qual o impacto da computa\u00e7\u00e3o qu\u00e2ntica nestes algoritmos?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">O algoritmo de Grover reduz a seguran\u00e7a das cifras sim\u00e9tricas de N bits para N\/2 bits. Com chave de 256 bits, tanto o AES-256 como o ChaCha20 mant\u00eam 128 bits de seguran\u00e7a p\u00f3s-qu\u00e2ntica, suficiente para os pr\u00f3ximos 30 ou mais anos segundo o NIST. A amea\u00e7a qu\u00e2ntica urgente s\u00e3o os algoritmos assim\u00e9tricos (RSA, ECC), n\u00e3o as cifras sim\u00e9tricas. O NIST padronizou ML-KEM (Kyber) e ML-DSA (Dilithium) para substitui\u00e7\u00e3o de RSA e ECDSA, mas AES-256 e ChaCha20 continuam v\u00e1lidos sem modifica\u00e7\u00f5es.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"posso-usar-os-dois-algoritmos-em-simultaneo\">Posso usar os dois algoritmos em simult\u00e2neo?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Sim, e o TLS 1.3 j\u00e1 faz exactamente isto. Em protocolos personalizados, \u00e9 poss\u00edvel implementar negocia\u00e7\u00e3o de cipher suite semelhante, usando um campo de vers\u00e3o ou identificador de algoritmo no envelope de mensagem. Esta abordagem maximiza a compatibilidade com hardware heterog\u00e9neo mantendo performance \u00f3ptima em cada dispositivo. O campo de vers\u00e3o deve ser autenticado (inclu\u00eddo nos dados associados do AEAD) para prevenir ataques de downgrade.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Quando se trata de escolher uma cifra de encripta\u00e7\u00e3o sim\u00e9trica em 2026, AES-256-GCM e ChaCha20-Poly1305 dominam as discuss\u00f5es t\u00e9cnicas em todo o mundo. Ambas oferecem seguran\u00e7a de 256 bits, autentica\u00e7\u00e3o\u2026<\/p>\n","protected":false},"author":6,"featured_media":137,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-136","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cryptography"],"_links":{"self":[{"href":"https:\/\/shattered.io\/pt\/wp-json\/wp\/v2\/posts\/136","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/shattered.io\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/shattered.io\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/shattered.io\/pt\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/shattered.io\/pt\/wp-json\/wp\/v2\/comments?post=136"}],"version-history":[{"count":1,"href":"https:\/\/shattered.io\/pt\/wp-json\/wp\/v2\/posts\/136\/revisions"}],"predecessor-version":[{"id":138,"href":"https:\/\/shattered.io\/pt\/wp-json\/wp\/v2\/posts\/136\/revisions\/138"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/shattered.io\/pt\/wp-json\/wp\/v2\/media\/137"}],"wp:attachment":[{"href":"https:\/\/shattered.io\/pt\/wp-json\/wp\/v2\/media?parent=136"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/shattered.io\/pt\/wp-json\/wp\/v2\/categories?post=136"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/shattered.io\/pt\/wp-json\/wp\/v2\/tags?post=136"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}