Tamanho e Força de Chaves
A chave é o segredo que sustenta a segurança de qualquer sistema criptográfico. Seu tamanho e sua força determinam o quão resistente o sistema é contra tentativas de quebra. Neste post veremos por que o tamanho da chave importa, como ele se relaciona com a força efetiva de segurança, por que uma chave simétrica de 128 bits equivale a uma chave RSA de milhares de bits, e quais são as recomendações práticas para uso em projetos e servidores modernos.
O que é o tamanho de uma chave?
Section titled “O que é o tamanho de uma chave?”O tamanho de uma chave criptográfica é medido em bits. Esse número indica quantos bits de dado formam a chave e, indiretamente, quantas combinações possíveis ela pode assumir.
Para uma chave de N bits, o total de chaves possíveis é:
2^NEsse conjunto de todas as chaves possíveis é chamado de espaço de chaves (key space). Quanto maior o espaço, mais difícil é para um atacante encontrar a chave correta por tentativa e erro.
| Tamanho da chave | Espaço de chaves |
|---|---|
| 8 bits | 256 |
| 40 bits | ~1,1 × 10^12 |
| 56 bits (DES) | ~7,2 × 10^16 |
| 128 bits (AES) | ~3,4 × 10^38 |
| 256 bits (AES) | ~1,15 × 10^77 |
Para colocar em perspectiva: uma chave AES de 128 bits possui mais combinações possíveis do que o número estimado de átomos existentes em todos os planetas do sistema solar.
Força bruta e o custo de quebrar uma chave
Section titled “Força bruta e o custo de quebrar uma chave”A técnica mais simples (e mais lenta) para quebrar uma chave é a força bruta, que consiste em testar sistematicamente todas as chaves possíveis até encontrar a correta.
Imaginemos um atacante extremamente bem equipado, capaz de testar 1 trilhão (10^12) de chaves por segundo. Esse ritmo está muito acima da capacidade de qualquer supercomputador atual.
| Tamanho da chave | Tempo estimado por força bruta |
|---|---|
| 56 bits | cerca de 20 horas |
| 64 bits | cerca de 213 dias |
| 80 bits | cerca de 38 mil anos |
| 128 bits | cerca de 10^19 anos (idade do universo × 10^9) |
| 256 bits | inviável mesmo com toda a energia do Sol |
A cada bit adicionado à chave, o tempo necessário para quebrá-la por força bruta dobra. Uma chave de 129 bits leva o dobro do tempo de uma de 128 bits, e assim por diante. Esse crescimento exponencial é o que torna chaves de tamanho adequado praticamente invioláveis.
Chaves simétricas: tamanhos e recomendações
Section titled “Chaves simétricas: tamanhos e recomendações”Nos algoritmos simétricos, o tamanho da chave impacta diretamente a resistência à força bruta, pois não há atalhos matemáticos conhecidos que reduzam significativamente o espaço de busca. Os tamanhos usuais atualmente são:
- 128 bits: mínimo aceito, oferece segurança prática por várias décadas
- 192 bits: nível intermediário, exigido em alguns contextos governamentais
- 256 bits: máximo comum, usado em cenários que exigem margem de segurança contra evoluções futuras, incluindo computação quântica
O AES, padrão atual de criptografia simétrica, está disponível em três variantes: AES-128, AES-192 e AES-256.
Tamanhos considerados inseguros ou obsoletos:
- 40 bits: usado em criptografia de exportação dos Estados Unidos nos anos 1990, quebrável em minutos hoje
- 56 bits (DES): quebrável em horas com hardware moderno
- 112 bits (3DES efetivo): considerado fraco e em processo formal de descontinuação pelo NIST
Chaves assimétricas: por que precisam ser tão maiores?
Section titled “Chaves assimétricas: por que precisam ser tão maiores?”Chaves assimétricas (RSA, DSA, Diffie-Hellman) precisam ser muito maiores do que chaves simétricas para oferecer o mesmo nível de segurança. Isso acontece porque a segurança desses algoritmos não depende apenas da força bruta sobre o espaço de chaves, mas da dificuldade de resolver problemas matemáticos específicos.
No caso do RSA, quebrar a chave significa fatorar um número inteiro muito grande. Existem algoritmos matemáticos otimizados para essa tarefa, como o General Number Field Sieve (GNFS), que reduzem drasticamente o número de operações necessárias em relação a uma busca exaustiva. É essa “vantagem matemática” do atacante que exige chaves compensatoriamente maiores.
A relação aproximada é:
- Uma chave RSA de 1024 bits equivale, em termos de segurança, a uma chave simétrica de cerca de 80 bits, hoje considerada fraca.
- Uma chave RSA de 2048 bits equivale a cerca de 112 bits simétricos, mínimo atualmente aceito.
- Uma chave RSA de 3072 bits equivale a 128 bits simétricos, nível recomendado para novos projetos.
Criptografia de curvas elípticas (ECC)
Section titled “Criptografia de curvas elípticas (ECC)”A ECC utiliza um problema matemático diferente do RSA (o logaritmo discreto sobre curvas elípticas), para o qual não existem algoritmos de quebra tão eficientes quanto os disponíveis para fatoração. Isso permite chaves muito menores para o mesmo nível de segurança.
| Segurança simétrica equivalente | ECC | RSA |
|---|---|---|
| 128 bits | 256 bits | 3072 bits |
| 192 bits | 384 bits | 7680 bits |
| 256 bits | 521 bits | 15360 bits |
Essa é uma das razões pelas quais a ECC vem substituindo o RSA em muitos protocolos modernos, especialmente em dispositivos com recursos limitados, como sensores IoT e smartphones.
Tabela de equivalência
Section titled “Tabela de equivalência”A tabela a seguir, baseada nas recomendações do NIST (SP 800-57), mostra a equivalência entre tamanhos de chave para diferentes categorias de algoritmos:
| Nível de segurança | Simétrica | RSA / DH | ECC | Hash (contra colisão) |
|---|---|---|---|---|
| 80 bits (legado) | 80 | 1024 | 160 | 160 |
| 112 bits | 112 (3DES) | 2048 | 224 | 224 |
| 128 bits | 128 (AES) | 3072 | 256 | 256 |
| 192 bits | 192 (AES) | 7680 | 384 | 384 |
| 256 bits | 256 (AES) | 15360 | 521 | 512 |
O nível de segurança pode ser interpretado como o custo mínimo aproximado para quebrar o algoritmo, medido em bits equivalentes. Uma segurança de 128 bits significa que seriam necessárias aproximadamente 2^128 operações computacionais para vencê-lo.
Hashes: por que o tamanho importa?
Section titled “Hashes: por que o tamanho importa?”No caso das funções hash, o tamanho da saída afeta duas propriedades distintas:
- Resistência à pré-imagem: para um hash de N bits, o custo aproximado de encontrar a entrada original é 2^N, proporcional ao tamanho da saída.
- Resistência à colisão: o custo aproximado é 2^(N/2), devido ao chamado paradoxo do aniversário, um resultado da teoria da probabilidade que mostra que, para achar dois valores com o mesmo hash, o esforço é muito menor do que achar um valor específico.
Ou seja, um hash de 256 bits (como o SHA-256) oferece 128 bits de segurança contra colisões, mesmo tendo 256 bits de tamanho total. Por essa razão, para atingir 128 bits de segurança em assinaturas digitais (que dependem de resistência à colisão) é necessário no mínimo um hash de 256 bits.
O que faz uma chave ser realmente forte?
Section titled “O que faz uma chave ser realmente forte?”O tamanho é apenas um dos fatores da força de uma chave. Uma chave de 256 bits gerada de forma previsível pode ser mais fácil de quebrar do que uma chave de 128 bits gerada corretamente. Os outros fatores essenciais são:
Aleatoriedade (entropia)
Section titled “Aleatoriedade (entropia)”Uma chave forte deve ser imprevisível. Se um atacante puder deduzir como a chave foi gerada, por exemplo se ela foi derivada da data de nascimento do usuário, o tamanho nominal se torna irrelevante.
Nos sistemas Linux, a fonte recomendada de aleatoriedade é /dev/urandom, alimentado por eventos imprevisíveis do sistema, como interrupções de hardware, tempos entre teclas digitadas, tráfego de rede e ruído eletrônico de sensores.
Qualidade do algoritmo
Section titled “Qualidade do algoritmo”Um algoritmo bem projetado resiste a ataques mais sofisticados do que a simples força bruta. Algoritmos como AES, ChaCha20, RSA, Ed25519 e SHA-3 foram amplamente auditados por pesquisadores em todo o mundo e resistem a décadas de análise pública.
Modo de operação e parâmetros
Section titled “Modo de operação e parâmetros”Uma chave forte pode ser desperdiçada se o algoritmo for usado em um modo inadequado. Exemplos comuns são o uso do AES em modo ECB (que expõe padrões dos dados) e o RSA sem padding OAEP (vulnerável a ataques como Bleichenbacher).
Derivação de chaves a partir de senhas
Section titled “Derivação de chaves a partir de senhas”Quando a chave é derivada de uma senha digitada pelo usuário, deve-se usar uma função de derivação apropriada, como PBKDF2, scrypt ou Argon2. Essas funções aplicam milhares (ou milhões) de iterações e um valor aleatório chamado sal, dificultando ataques por dicionário e tabelas pré-calculadas.
Chaves fracas: como aparecem?
Section titled “Chaves fracas: como aparecem?”Mesmo com algoritmos modernos, chaves fracas continuam surgindo em sistemas reais. As causas mais comuns são:
- Geradores de números aleatórios (PRNG) mal configurados, resultando em chaves previsíveis
- Falta de entropia no momento da geração, comum em máquinas virtuais recém-criadas ou dispositivos embarcados sem sensores adequados
- Senhas fracas usadas para derivar chaves de cifragem
- Reutilização de chaves ou de valores nonce em contextos que exigem unicidade
- Uso de tamanhos de chave defasados por compatibilidade com sistemas antigos
Um episódio notório foi o bug do OpenSSL no Debian entre 2006 e 2008, no qual um patch mal aplicado reduziu drasticamente a entropia do gerador de números aleatórios, restringindo o espaço efetivo de chaves geradas a poucos milhares de valores possíveis. Todas as chaves geradas nesse período tiveram de ser substituídas.
A ameaça da computação quântica
Section titled “A ameaça da computação quântica”Computadores quânticos, quando atingirem escala suficiente, alterarão profundamente o panorama da criptografia:
- Algoritmo de Shor permitirá quebrar RSA, DSA, Diffie-Hellman e ECC de forma eficiente. Isso significa que as chaves assimétricas atuais, mesmo em tamanhos grandes, deixarão de oferecer segurança prática contra atacantes com acesso a esses computadores.
- Algoritmo de Grover reduzirá pela metade a força efetiva da criptografia simétrica. Uma chave AES-128 passaria a oferecer segurança efetiva equivalente a 64 bits, enquanto o AES-256 ainda ofereceria 128 bits, considerados seguros mesmo nesse cenário.
Como resposta, o NIST vem padronizando algoritmos de criptografia pós-quântica, como CRYSTALS-Kyber (para cifragem) e CRYSTALS-Dilithium (para assinatura), que já começam a aparecer em bibliotecas modernas e em algumas versões do OpenSSH e do OpenSSL.
Recomendações atuais
Section titled “Recomendações atuais”Um resumo das recomendações vigentes para novos projetos em ambientes de produção:
| Categoria | Recomendação mínima | Recomendação preferida |
|---|---|---|
| Simétrica (AES, ChaCha20) | 128 bits | 256 bits |
| Assinatura RSA | 2048 bits | 3072 ou 4096 bits |
| Assinatura ECC | 256 bits (P-256, Ed25519) | 384 bits (P-384) |
| Troca de chaves (ECDH) | 256 bits (X25519) | 384 bits (P-384) |
| Hash | SHA-256 | SHA-384 ou SHA-512 |
| Derivação de senha | PBKDF2 (100k+ iterações) | Argon2id |
Gerando e inspecionando chaves no Linux
Section titled “Gerando e inspecionando chaves no Linux”Alguns comandos úteis para gerar e verificar chaves de diferentes tamanhos:
Chave simétrica aleatória de 256 bits (32 bytes):
openssl rand -hex 32Par de chaves RSA de 4096 bits:
openssl genpkey -algorithm RSA \ -pkeyopt rsa_keygen_bits:4096 \ -out chave_rsa.pemPar de chaves ECC (curva P-256):
openssl genpkey -algorithm EC \ -pkeyopt ec_paramgen_curve:P-256 \ -out chave_ecc.pemPar de chaves Ed25519 (assinatura moderna e leve):
openssl genpkey -algorithm ED25519 -out chave_ed25519.pemInspecionar propriedades de uma chave existente:
openssl pkey -in chave_rsa.pem -text -noout | headVerificar entropia disponível no sistema:
cat /proc/sys/kernel/random/entropy_availUm valor abaixo de 1000 pode indicar que o sistema tem pouca entropia disponível, o que é problemático em servidores recém-inicializados ou máquinas virtuais sem acesso a rdrand.
Considerações Finais
Section titled “Considerações Finais”O tamanho da chave é uma das medidas mais visíveis de segurança criptográfica, mas está longe de ser a única. Uma chave só é realmente forte quando combina tamanho adequado, algoritmo robusto, geração aleatória de qualidade e uso correto dentro do protocolo. Ignorar qualquer um desses aspectos pode reduzir drasticamente a segurança efetiva do sistema, mesmo quando os números aparentam ser confortáveis.
Outro ponto importante é entender que “seguro hoje” não significa “seguro para sempre”. Chaves adequadas em 2000 (RSA 1024, SHA-1) são consideradas fracas hoje. Por isso, projetos que exigem sigilo de longo prazo precisam ser pensados com margem, considerando a evolução do hardware, novos ataques matemáticos e a chegada da computação quântica.
Nos próximos posts da série, entraremos nos detalhes práticos de cada categoria, começando pela criptografia simétrica, com foco nos algoritmos, modos de operação e ferramentas disponíveis em ambientes Linux.
