16 de MAIO
Em outro post aqui no blog da Integrasul, foi mencionado que senhas podem ser geralmente dividias em 5 categorias, sendo da menos segura (nível 1) até as mais seguras (nível 5). Mas, para entender facilmente a diferença entre cada nível, vamos abordar um pouco sobre o tempo e poder computacional necessário para “quebrar” cada senha em diferentes tipos de ataque.
O que é um ataque de senha?
Primeiramente, vamos definir como um atacante pode tentar atacar as suas senhas. Para isso, temos que entender a diferença entre ataques de força bruta online e offline. Um ataque online consiste em um atacante tentando adivinhar a senha de alguma conta por métodos automatizados, como testar diversas senhas com um usuário existente no Outlook. Um ataque offline acontece quando um atacante consegue uma senha encriptada, utilizando ferramentas de desencriptação em seu próprio computador para tentar decifrar a mesma.
A diferença entre ambos é: no ataque online, o atacante é limitado pelo site que está controlando o login, por exemplo, o Gmail impedindo alguém de fazer login após várias tentativas inválidas. Já no ataque offline, o atacante não tem nenhum tipo de restrição, podendo fazer até milhões de tentativas por segundo para desencriptar a senha.
Com isso, vamos ver quanto tempo cada nível de senha demora para ser quebrado em um ataque de força bruta offline.
Nível 1 – Senhas simples
Como no primeiro nível as senhas são apenas palavras, um atacante pode usar uma lista de possíveis palavras (chamada de wordlist) para quebrar a senha. Por exemplo, uma wordlist com todas as palavras na língua portuguesa tem em torno de 370,000 palavras; caso o algoritmo de encriptação seja fraco, um computador comum pode atingir esse número de tentativas em poucos segundos!
Claro, isso somente se aplica se a senha estiver encriptada com um algoritmo fraco, como MD5, que foi desenvolvido em 1991 e não é mais considerado seguro para encriptar senhas. Um bom computador, por exemplo, faz em torno de 3 bilhões de tentativas por segundo em uma senha encriptada com MD5.
Nível 2 – Senhas simples com caracteres extras
Nesse nível, onde a maior parte das senhas usadas hoje se encontram, é adicionado alguns caracteres na palavra inicial, mais comumente, números ao final ou símbolos no começo. Nesse caso, um atacante pode gerar uma wordlist em que todas as palavras começam com o símbolo “@” ou terminam com “2024”, por exemplo; isso já aumenta a dificuldade do ataque, pois agora o atacante tem que também adivinhar quais caracteres extras foram adicionados à palavra inicial.
Um ataque de força bruta nesse nível pode demorar até algumas horas em casos comuns e em senhas mais complexas é possível se aproximar de um dia completo de tentativas automatizadas.
Nível 3 – Senhas com caracteres trocados
Do nível 3 para cima, onde as senhas agora não são mais simples palavras, é inviável um simples ataque de força bruta cego, pois até mesmo uma única palavra como “motocicleta” se torna uma senha formidável quando escrita como “m0toC1cl3t@” por exemplo.
Porém, por conta da quantidade de vazamento de dados que vem ocorrendo com o passar dos anos, foram criadas wordlists compostas de senhas vazadas no passado. Um exemplo dessas listas é a “rockyou.txt”, uma wordlist de 14 milhões de senhas existentes que foi criada quando uma base de dados enorme vazou publicamente em 2009.
Essa wordlist contém diversos tipos de senhas, das mais simples as mais complexas, e, pelo seu tamanho, é extremamente eficaz em ataques de força bruta offline contra senhas de nível 3. Por conta disso, é difícil estimar quanto tempo um atacante iria precisar para quebrar uma senha desse nível. Porém, caso a senha não tenha sido publicamente vazada no passado, um atacante pode demorar semanas até quebrar uma senha encriptada neste nível.
Nível 4 – Senhas aleatórias cadastradas em muitos sites
Uma senha com complexidade alta como “exj&3ktNpHCVE” é ainda mais difícil de quebrar em comparação com os níveis anteriores. Porém, assim como no nível 3, essa senha se torna menos segura quando presente em lista públicas de vazamentos. Esses vazamentos se tornam mais prováveis quanto maior a frequência de uso repetido da mesma senha.
Com isso em mente, senhas desse nível para cima são computacionalmente inviáveis de serem quebradas quando encriptadas por algoritmos fortes. Como estimativa, a senha de exemplo “exj&3ktNpHCVE” levaria em torno de 20 anos para ser quebrada (em teoria)!
Nível 5 – Senhas aleatórias geradas por cofre de senhas
No último nível, as senhas são da mesma complexidade do nível 4, porém não estão presentes em nenhum vazamento de dados prévio. Isso resulta em uma senha essencialmente inquebrável quando encriptada com um algoritmo forte.
Entretanto, caso uma aplicação armazene as senhas de seus usuários sem antes passá-las por uma codificação e a base de dados desta aplicação venha a vazar publicamente, um atacante pode ter acesso à senha, por mais forte que ela seja. Neste caso, não é preciso realizar qualquer tipo de ataque de senha.
Em conclusão
É importante falar que, por mais que vazamento de credenciais aconteçam de tempo em tempo, eles não anulam a força de uma boa senha única. Por isso, mais usuários devem tentar implementar esse sistema de senhas em seu dia a dia.
Assim como recomendamos no outro post sobre senhas aqui mesmo no blog, aplicações como o Bitwarden facilitam bastante a transição para um uso de senha mais forte, algo que permite que qualquer pessoa tenha senhas únicas e fortes para todas suas contas.