Know-how / Segurança de passwords

Como funcionam os ataques de força bruta

Por que o comprimento é importante: exemplos de cálculos e contramedidas.

Nos ataques de força bruta, os atacantes tentam adivinhar uma palavra-passe através da tentativa sistemática de todas as combinações de caracteres possíveis. A ideia subjacente é simples: testar o maior número possível de combinações por segundo – idealmente em GPUs ou em sistemas distribuídos. Também se fala de uma busca exaustiva (exhaustive search).

Na prática, infelizmente, esses ataques são frequentemente bem-sucedidos, porque muitas palavras-passe são muito curtas, limitam-se a poucos grupos de caracteres (apenas letras) ou aparecem em listas de palavras. Isso reduz drasticamente o espaço de pesquisa e torna mais fácil adivinhar. Mais importante ainda: distingue-se entre ataques online (contra formulários de login, onde ajudam a limitação de tentativas/bloqueios de conta) e ataques offline (contra hashes de palavras-passe roubadas, onde a função hash e a força da palavra-passe determinam o tempo de ataque).

Quebrar palavras-passe (offline) ≠ «descriptografar»

As palavras-passe não são descriptografadas, mas sim armazenadas como valores hash e depois pesquisadas com taxas + hash (força bruta, ataques de dicionário/máscara). A velocidade de cálculo do hardware moderno está na ordem de milhares de milhões por segundo (para processos de hash rápidos), razão pela qual as palavras-passe com longas e lentos (por exemplo, Argon2, scrypt, PBKDF2, bcrypt) são decisivos.

Referência histórica e atual: O projeto RC5 da distributed.net demonstra o poder bruto da pesquisa exaustiva num espaço de chaves: 56 bits foram encontrados em 1997 após 250 dias, 64 bits em 2002 após 1.757 dias. Atualmente, o status do proxy para RC5‑72 mostra aproximadamente 2,38 biliões de chaves por segundo (atualizado hoje). Trata-se de força bruta de chaves e não de hash de senhas – mas ilustra bem o quão forte é o poder de computação distribuído.

Combinação e comprimento da senha

Os exemplos a seguir mostram a influência do comprimento e da seleção de caracteres. Para ilustrar, são calculadas 2 mil milhões de tentativas por segundo (computador individual muito potente; os valores reais variam muito dependendo do hardware e, no caso offline, do método de hash).

Grupos de caracteres típicos:

  • Números (10: 0–9)
  • Letras (52: A–Z e a–z)
  • Caracteres especiais (≈ 32; depende do conjunto de caracteres permitido pelo serviço)

O número de combinações possíveis resulta de:

Combinações possíveis = (conjunto de caracteres)comprimento da palavra-passe

Importante: a tabela mostra o tempo de pesquisa máximo. Em média, o tempo real é cerca de metade. Além disso, ataques de dicionário, regras e máscaras reduzem consideravelmente o espaço de pesquisa, enquanto os processos de hash de senha lentos reduzem drasticamente a taxa efetiva.

A palavra-passe é composta por Combinações possíveis (fórmula) Tempo necessário (a 2 bilhões/s)
5 caracteres
(3 letras minúsculas,, 2 números)
(53) × 263 × 10217.576.000 0,009 segundos
7 caracteres
(1 letra maiúscula,, 6 letras minúsculas)
(71) × 261+656.222.671.232 ≈ 28 segundos
8 caracteres
(4 letras minúsculas,, 2 caracteres especiais,, 2 números)
(84) × (42) × 264 × 322 × 10219.653.623.808.000 ≈ 2,73 horas
9 caracteres
(2 letras maiúsculas,, 3 letras minúsculas,, 2 números,, 2 caracteres especiais)
(92) × (73) × (42) × 262+3 × 102 × 3229.197.895.942.144.000 ≈ 53 dias
12 caracteres
(3 letras maiúsculas,, 4 letras minúsculas,, 3 caracteres especiais,, 2 números)
(123) × (94) × (53) × 263+4 × 323 × 1027,30 × 1021 ≈ 115.591 anos
14 caracteres
(4 letras maiúsculas,, 4 letras minúsculas,, 3 números,, 3 caracteres especiais)
(144) × (104) × (63) × 264+4 × 103 × 3232,88 × 1025 ≈ 455.812.388 anos

Conclusão: Cada caractere adicional multiplica o espaço de pesquisa. O comprimento prevalece sobre as regras de complexidade – especialmente contra ataques offline – desde que os serviços utilizem métodos de hash adequados e lentos com salt.

Proteção contra ataques de força bruta

A medida mais eficaz do utilizador é uma senha mestra longa e aleatória ou uma frase-passe (por exemplo, várias palavras aleatórias) – única para cada serviço. O Password Depot ajuda na geração e mostra um tempo estimado de ataque, que, além do comprimento/conjunto de caracteres, também leva em consideração as vulnerabilidades do dicionário.

  • Ativar MFA/2FA (por exemplo, aplicação TOTP ou token de hardware) – sempre que possível, as chaves de acesso são ainda melhores. Consulte Instruções da BSI.
  • Não reutilize palavras-passe. Cada conta precisa de uma palavra-passe forte e exclusiva.
  • Preferência por comprimento em vez de complexidade obrigatória. Os serviços devem permitir palavras-passe/frases-passe longas (pelo menos 64 caracteres) e bloquear palavras-passe comprometidas (lista negra).
  • Processos de hash lentos no lado do servidor (por exemplo, Argon2, scrypt, PBKDF2, bcrypt) com salt e fatores de trabalho adequados; hashes rápidos como MD5/SHA-1 são inadequados para o armazenamento de palavras-passe.
  • Limitação de taxa/restrição e bloqueios: os ataques online devem ser travados por tentativas de falha limitadas, tempos de espera progressivos e, se necessário, CAPTCHA.

Além disso, o Password Depot Online dificulta as tentativas de taxa, bloqueando brevemente o campo de entrada da palavra-passe mestra após entradas incorretas – com tempo de espera crescente em caso de tentativas falhadas repetidas.

Instruções práticas para prestadores de serviços (equipas técnicas):
  • Aceite todos os caracteres de impressão, incluindo espaços/Unicode, e permita copiar e colar.
  • Implemente listas de bloqueio (palavras-passe comprometidas/comuns) e limitação de taxa com instruções claras para os utilizadores.
  • Armazene palavras-passe exclusivamente como valores salted, hash com KDFs lentos e verifique regularmente os fatores de trabalho.

Fontes adicionais

Criar passwords seguras

Saiba como criar passwords que resistam a ataques de força bruta.

Dicas para passwords seguras