Português (Portugal)
  • password-cracking
  • rainbow-table-attack
  • hashing

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.

Darcy Ye
Darcy Ye
Developer

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.

PassGAN Twitter

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:

  1. Determinar o espaço de busca para a palavra-passe (gerar possíveis palavras-passe)
  2. 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.

Password Guessing Prob

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:

  1. 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.

  2. 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.

  3. 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.

  1. 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.

  2. 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.