Como são as tuas palavras-passe quebradas? Como melhorar a segurança das palavras-passe?
Neste artigo, apresentamos vários métodos clássicos para quebrar palavras-passe, juntamente com os princípios subjacentes a essas abordagens. Ao abordar esses conceitos, fornecemos práticas tanto do ponto de vista dos guardiões de palavras-passe quanto dos proprietários de contas sobre como melhorar a segurança das palavras-passe.
Muitas vezes vemos notícias de que as palavras-passe dos utilizadores de algumas apps bem conhecidas com grandes bases de utilizadores são divulgadas. Podes achar que, como não utilizas essa app em particular, esses incidentes não têm nada a ver contigo, mas na realidade não é o caso.
Recentemente, também houve notícias no Twitter de que métodos de IA podem acelerar significativamente a velocidade de quebra de palavras-passe. Assim, quisemos entender as complexidades por trás disso e ver como podemos melhorar a segurança das nossas palavras-passe.
Como são quebradas as palavras-passe?
Em geral, as palavras-passe de contas são normalmente processadas utilizando vários algoritmos de hashing e depois armazenadas em bases de dados. Podes consultar o nosso blog anterior para obter uma melhor compreensão do hashing de palavras-passe. Infelizmente, alguns fornecedores de serviços, por falta de senso comum, armazenam palavras-passe em texto simples nas suas bases de dados. Esta prática pode resultar em danos ainda mais significativos se os dados forem divulgados.
Ao guardar palavras-passe hash, mesmo os administradores de base de dados não podem aceder à tua palavra-passe original, aumentando significativamente a segurança. Ao verificar a correção de uma palavra-passe introduzida, é utilizado o mesmo algoritmo de hash para processar a palavra-passe inserida. O hash resultante é então comparado com o valor armazenado na base de dados. Se os dois valores hash coincidirem, a palavra-passe inserida é considerada correta.
Em termos simples, quebrar palavras-passe envolve gerar sequências que obedecem às regras permitidas para palavras-passe. Em seguida, envolve verificar continuamente essas sequências usando o método acima mencionado até finalmente descobrir a palavra-passe de texto simples correta.
Métodos comuns para quebrar palavras-passe
Nesta seção, vamos introduzir brevemente três maneiras comuns de quebrar palavras-passe.
Ataque de força bruta
Os ataques de força bruta geralmente enumeram todas as possibilidades dentro das regras de palavras-passe permitidas e tentam-nas uma a uma.
Por exemplo, os telemóveis podem definir uma palavra-passe numérica de 4 dígitos. Os ataques de força bruta irão tentar todas as possibilidades uma a uma, de 0000
, 0001
, 0002
, ..., até 9999
.
Os ataques de força bruta são muito demorados porque há muitas tentativas. Supondo que o comprimento da palavra-passe seja $L$, e o número de caracteres possíveis por dígito de palavra-passe seja $n$, então o número de possibilidades que os ataques de força bruta precisam tentar é $n^L$, o que é um número muito grande.
A razão pela qual muitas palavras-passe exigem uma combinação de números, letras maiúsculas e minúsculas e caracteres especiais é para aumentar $n$, o que aumenta muito o número de possibilidades e, portanto, a dificuldade de quebrar a palavra-passe.
Ataque por dicionário
Os ataques por dicionário utilizam palavras de dicionários, muitas vezes combinadas com espaços, números, símbolos especiais e outros elementos, para formar várias combinações de palavras-passe. Estas combinações são então usadas para tentar correspondências de palavras-passe.
Muitas pessoas optam por usar frases com significados claros como palavras-passe por facilidades de recordação. Os ataques por dicionário provam ser um método eficiente para quebrar palavras-passe com essas características.
Ataque com tabela arco-íris
Uma tabela arco-íris é um mapeamento pré-computado de palavras-passe em texto simples para os seus valores hash correspondentes. Ao comparar diretamente os valores hash armazenados na base de dados com aqueles na tabela arco-íris, quaisquer correspondências encontradas podem ser usadas para procurar e recuperar diretamente a palavra-passe em texto simples correspondente.
As tabelas arco-íris oferecem a vantagem de fornecer acesso imediato às palavras-passe em texto simples, se o valor hash tiver sido pré-calculado (e registrado na tabela arco-íris). No entanto, é importante notar que, se o valor hash não foi pré-computado (e, portanto, não está presente na tabela), uma tabela arco-íris não pode ser utilizada.
Além dos métodos descritos acima, existem várias outras técnicas não cobertas aqui. Geralmente, uma combinação desses métodos é utilizada para abranger todas as possíveis palavras-passe e acelerar o processo de quebra.
Como acelerar a quebra de palavras-passe?
Na seção anterior, introduzimos brevemente alguns métodos clássicos de quebra de palavras-passe. Deles, podemos resumir algumas ideias para melhorar a velocidade ou a taxa de sucesso da quebra de palavras-passe.
Para quebrar uma palavra-passe, muitas vezes envolve duas etapas:
- Determinar o espaço de busca para a palavra-passe (gerar possíveis palavras-passe)
- Usar o algoritmo de hash para gerar hashes para as possíveis palavras-passe obtidas na etapa anterior e compará-los com o hash da palavra-passe a ser quebrada
O ataque por dicionário e o ataque com tabela arco-íris mencionados acima otimizam estas duas etapas, respectivamente:
- O ataque por dicionário reduz o espaço de busca para as palavras-passe. Partindo da suposição de que "os utilizadores tendem a criar palavras-passe usando combinações de palavras com significados reais", palavras como
zzzz
não estão incluídas no dicionário, o que significa que não serão tentadas como possíveis palavras-passe. Esta prática é semelhante a descartar preventivamente respostas incorretas. Semelhante a resolver perguntas de múltipla escolha, enquanto podes não ter certeza sobre a opção correta, podes identificar quais escolhas estão definitivamente erradas. Eliminando estas opções obviamente incorretas, as tuas chances de adivinhar corretamente entre as escolhas restantes são melhoradas. - O ataque com tabela arco-íris acelera o tempo de execução do algoritmo de hash. Para indivíduos familiarizados com estruturas de dados, a procura é uma operação de complexidade $O(1)$, e nenhuma operação pode ser mais simples do que $O(1)$ em termos de complexidade temporal. Em contraste, a complexidade temporal dos algoritmos de hash comumente usados como MD5 e SHA é $O(n)$, o que é marcadamente mais lento do que $O(1)$.
Na prática, otimizar o processo de quebra de palavras-passe também começa a partir das duas perspectivas acima. Vale mencionar que, devido à pequena margem para otimizar a complexidade temporal $O(n)$ para algoritmos de hashing de textos, são feitas mais considerações em melhorar o hardware ou os métodos de computação, o que não será elaborado aqui.
Então, como a IA ajuda a quebrar palavras-passe?
Em todo o empreendimento de quebra de palavras-passe, o papel da IA estende-se a aprender certos padrões e métodos de construção a partir de palavras-passe em texto simples expostas. Subsequentemente, a IA pode simular esses padrões de construção de palavras-passe para gerar um monte de potenciais palavras-passe. Seguindo isto, a IA pode empregar algoritmos de hashing ou mesmo hardware especializado para executar a quebra de palavras-passe.
Na verdade, comparado a outras ferramentas de quebra de palavras-passe, a vantagem matadora do PassGAN é que pode "adivinhar as senhas mais prováveis o mais rápido possível", que é a ideia de "reduzir o espaço de busca da palavra-passe possível" que mencionamos acima.
Como tornar a palavra-passe mais segura?
Iremos explicar como proteger as palavras-passe de duas perspetivas. Aqui simplesmente começamos pela palavra-passe em si, sem discutir outros meios para garantir a segurança da conta, como a autenticação multifatorial (MFA) e assim por diante.
Do lado dos provedores de serviços de identidade
Como provedores de serviços de identidade, eles hospedam todas as palavras-passe dos utilizadores, o que lhes implica a responsabilidade de proteger a segurança dessas palavras-passe. Aqui estão vários esquemas que podem ser implementados para melhorar a segurança das palavras-passe dos utilizadores:
-
Evitar armazenar palavras-passe em texto simples: Embora isto possa parecer senso comum, alguns provedores de serviços ainda armazenam palavras-passe em texto simples nas suas bases de dados. Usar valores hash para armazenar palavras-passe adiciona uma camada de segurança; mesmo se a base de dados for comprometida, os hackers precisariam de um esforço considerável para quebrar as palavras-passe hash.
-
Aplicar limites de taxa à interface API para a verificação de palavras-passe: Vamos revisitar o processo de quebra de palavras-passe mencionado anteriormente. Uma parte integral deste processo envolve "verificar" se uma palavra-passe está correta. Como as palavras-passe são confiadas aos provedores de serviços de identidade, eles são as únicas entidades equipadas para oferecer API para verificação de palavras-passe. Ao limitar a frequência de aceder a esta API, podemos impedir que hackers tentem rapidamente várias palavras-passe, mesmo que possuam suposições de palavras-passe altamente prováveis.
-
Forçar composições de palavras-passe mais complexas: Por exemplo, como mencionado anteriormente, uma maior variedade de caracteres dentro das palavras-passe de um determinado comprimento contribui para uma complexidade aumentada. Além disso, empregar técnicas de IA semelhantes às discutidas anteriormente permite a avaliação da segurança da palavra-passe antes da submissão. Se uma palavra-passe for considerada fraca, os utilizadores podem ser solicitados a selecionar uma alternativa mais robusta.
Na perspetiva dos utilizadores
Como proprietários de contas e ativos digitais associados, os utilizadores precisam prestar a máxima atenção para garantir a segurança das suas palavras-passe de conta.
-
Evitar usar a mesma palavra-passe em diferentes websites: Após obter palavras-passe de certos websites, muitos hackers tentam utilizar essas credenciais de conta para aceder a outros websites. Se várias contas para diferentes serviços compartilharem a mesma palavra-passe, pode haver um risco de perder contas e experiência de vazamento de informações no cenário mencionado acima.
-
Optar por palavras-passe puramente aleatórias sempre que possível: Esta abordagem ajuda a prevenir a reutilização de padrões de palavras-passe comuns que a maioria das pessoas emprega (como mencionado anteriormente, usando frases em inglês), complicando assim os esforços dos hackers para "reduzir o espaço de busca de palavras-passe" e aumentar o nível de complexidade da palavra-passe.
Como o fornecedor de infraestrutura para serviços de identidade, a Logto implementou muitas das melhores práticas mencionadas acima para salvaguardar a segurança das contas dos utilizadores. Isso permite que os utilizadores interajam com várias aplicações sem a preocupação de perder contas, enquanto também permite que os provedores de serviços online garantam a segurança dos dados dos utilizadores com o mínimo de esforço, permitindo-lhes concentrar-se nas suas atividades de negócios principais.