web-dev-qa-db-fra.com

Quelles sont les différences entre l'attaque par dictionnaire et l'attaque par force brute?

Quelqu'un peut-il expliquer les principales différences entre une attaque par force brute et une attaque par dictionnaire. Le terme Rainbow table a une relation avec ceux-ci?

17
Anandu M Das

Similitudes Les attaques par dictionnaire et par force brute sont toutes deux des suppositions; ils ne recherchent pas directement un défaut ou une dérivation. Il peut s'agir d'une attaque hors ligne ou d'une attaque en ligne.

Une attaque en ligne essaie des routines automatisées fournissant une entrée à un système légitime. Ils ne cherchent pas à créer un exploit dans la fonctionnalité, mais à abuser de la fonctionnalité attendue .

Une attaque hors ligne tente d'émuler le chiffrement/hachage et nécessite une sortie connue de ce processus (c'est-à-dire que vous n'attaquez pas le système, vous avez déjà le mot de passe haché/chiffré)


Force brute Attaque

Définition: Tente de déterminer un secret en essayant toutes les combinaisons possibles .

Qualités:

  • Le nombre de tentatives est limité par la longueur maximale et le nombre de caractères à essayer par position (ou octet si l'on considère les mots de passe Unicode)
  • Le temps pour terminer est plus long, mais il y a une plus grande couverture de la valeur probable du texte clair (toutes les possibilités uniquement si elles sont définies sur la longueur maximale et chaque caractère possible est considéré dans chaque position)

exemple du monde physique: Étant donné un verrou de combinaison qui nécessite que trois nombres soient pris en séquence, vous essayez toutes les combinaisons possibles - par exemple, d'abord 1-2-3, puis 1-2-4.

Notez qu'une attaque par force brute ne peut pas nécessairement essayer toutes les options dans un ordre séquentiel. Une attaque avancée par force brute peut émettre certaines hypothèses, par exemple, les règles de complexité nécessitent des majuscules, le premier caractère étant plus susceptible d'être en majuscules qu'en minuscules).


Dictionnaire Attaque

Définition: Typiquement une attaque de devinettes qui utilise une liste d'options précompilée. Plutôt que d'essayer toutes les options, n'essayez que des options complètes susceptibles de fonctionner.

Qualités:

  • Le dictionnaire ou les combinaisons possibles sont basés sur certaines valeurs probables et ont tendance à exclure les possibilités distantes. Il peut être basé sur la connaissance d'informations clés sur une cible particulière (noms des membres de la famille, anniversaire, etc.). Le dictionnaire peut être basé sur des modèles observés chez un grand nombre d'utilisateurs et des mots de passe connus (par exemple, quelles sont les réponses les plus probables au niveau mondial). Le dictionnaire est plus susceptible d'inclure de vrais mots que des chaînes de caractères aléatoires.
  • Le temps d'exécution de l'attaque par dictionnaire est réduit car le nombre de combinaisons est limité à celles de la liste des dictionnaires
  • Il y a moins de couverture et un mot de passe particulièrement bon peut ne pas être sur la liste et sera donc manqué

Exemples du monde réel:

  • L'accès à un club secret nécessite de connaître le nom du propriétaire, vous devinez "Rob" ou "Jake" plutôt que "ordinateur"
  • Étant donné le même exemple de verrou ci-dessus, vous essayez une combinaison équivalant à l'anniversaire du propriétaire du verrou ou à ses amis et à sa famille.

Troquer

Le principal compromis entre les deux attaques est la couverture en fonction du temps nécessaire. Si vous avez une idée raisonnable de ce que sera le mot de passe, vous pouvez ignorer les réponses improbables et obtenir une réponse plus rapidement. Ceci est important car les mots de passe sont souvent sujets à changement et parce que la longueur du mot de passe augmente le temps de deviner que chaque possibilité se développe vraiment, très rapidement.

Hybrides

Il existe bien sûr des attaques qui exploitent les deux techniques dans le but d'équilibrer le compromis. Par exemple, si l'attaquant pense qu'un utilisateur est susceptible de former un mot de passe en concaténant un dictionnaire Word puis en ajoutant un nombre (qu'il incrémente à chaque fois qu'il doit changer son mot de passe), les suppositions en cours d'exécution peuvent combiner la liste de mots puis ajoutez des numéros (par exemple, "mypassword2014" puis "mypassword2015"). Les hybrides peuvent également combiner des mots de manière brutale: considérez la nécessité pour un utilisateur de changer son mot de passe tous les 90 jours, il peut former des mots de passe comme "mypasswordsummer" puis "mypasswordfall". L'attaquant construit ensuite une attaque hybride qui prendra un dictionnaire Word puis ajoutera d'autres termes de dictionnaire (potentiellement les mêmes que différents dictionnaires) pour faire des suppositions.


Table arc-en-ciel contre dictionnaire/force brute

Une table Rainbow est généralement une attaque hors ligne uniquement. Dans une attaque par force brute ou une attaque par dictionnaire, vous devez passer du temps à envoyer votre supposition au système réel pour exécuter l'algorithme hors ligne. Étant donné un algorithme de hachage ou de chiffrement lent, cela fait perdre du temps. De plus, le travail effectué ne peut pas être réutilisé.

Une table Rainbow est une liste précalculée. Vous travaillez en fait à l'envers à partir du texte haché/chiffré. L'attaquant exécutera l'algorithme pour obtenir toutes les sorties possibles étant donné toutes les entrées possibles. La liste des entrées peut être par force brute, dictionnaire ou hybride. Sur la base de la liste des sorties, l'attaquant dispose désormais d'une table réutilisable mappant les entrées aux sorties connues.

Avec la table précalculée, une simple recherche est désormais possible compte tenu de la version chiffrée/hachée du mot de passe. Si vous pouvez trouver la version chiffrée/hachée de la victime, vous pouvez facilement renvoyer le vrai mot de passe en clair. Les tables arc-en-ciel sont utilisées pour réduire le travail redondant. Il y a un compromis à faire à l'avance et à stocker les tables. Par exemple, si vous venez de faire une attaque par force brute ou par dictionnaire, vous pouvez vous arrêter dès que vous avez trouvé votre réponse. Cependant, la table Rainbow doit être entièrement calculée.

Si vous deviez lancer une attaque sur une table Rainbow et que la 5ème entrée sur 500 millions d'entrées était votre match, alors tout l'effort et le temps utilisés pour créer les 499 999 995 autres mots de passe pourraient être considérés comme gaspillés. Cependant, si vous cherchez à casser plusieurs mots de passe pour réutiliser le tableau sur plusieurs attaques, le gain de temps peut s'additionner.

19
Eric G

Un attaque par force brute signifie sonder l'espace clé complet sur l'algorithme.

Un attaque de dictionnaire signifie que vous ne sondez que les mots de passe/clés d'un dictionnaire (qui ne contient pas l'espace de clé complet).

Une attaque par force brute est principalement utilisée contre l'algorithme de chiffrement lui-même (vous pouvez également l'utiliser contre des mots de passe, mais vous utilisez la plupart du temps des attaques par dictionnaire).

Une attaque par dictionnaire est principalement utilisée contre les mots de passe. Les algorithmes de chiffrement sont rarement attaqués avec une attaque par dictionnaire car la plupart du temps, ils utilisent un nombre aléatoire comme clé (si vous utilisez un faible PRNG alors une attaque par dictionnaire pourrait être réalisable). Un dictionnaire typique pour cette attaque contiendrait les mots de passe les plus utilisés.

Un Rainbow table est utilisé pour attaquer un mot de passe haché à l'envers. Cela signifie que j'ai une table avec des hachages possibles et recherche un mot de passe correspondant.

Pour empêcher les attaques utilisant des tables Rainbow, chaque mot de passe haché doit être salé différemment, car j'aurais alors besoin d'une table Rainbow pour chaque hachage et chaque sel.

6
Uwe Plonus

Attaque par dictionnaire: L'attaquant essaie une liste de mots de passe connus ou couramment utilisés. Ainsi, il essaie une liste (dictionnaire) de mots de passe. Généralement, les attaques par dictionnaire réussissent parce que beaucoup de gens ont tendance à choisir des mots de passe courts et faciles à retenir comme superman, harrypotter, etc.

Brute Force Attack: N'utilise pas de liste de mots de passe; au lieu de cela, il vise à essayer toutes les combinaisons possibles dans l'espace de mot de passe.

Par exemple, supposons que le mot de passe est un code à quatre chiffres PIN.

Dans ce cas, l'attaque par dictionnaire essaiera d'utiliser une liste de codes PIN PIN tels que: 0123, 2000, 4444 et ainsi de suite (voir la liste des codes PIN les plus courants ).

Inversement, une attaque par force brute essaiera tous les codes possibles PIN ce qui signifie qu'elle essaiera 10 ^ 4 = 10000 fois jusqu'à ce qu'elle trouve le bon PIN avec probabilité) 100%. (4 parce que nous avons 4 chiffres et 10 parce que chaque chiffre peut être n'importe quelle valeur entre 0 et 9)

En théorie, l'attaque par force brute découvrira le mot de passe, cependant, cela pourrait prendre très longtemps pour essayer toutes les combinaisons possibles. Habituellement, un attaquant commence par l'attaque par dictionnaire et s'il échoue, il passe à l'attaque par force brute.

Table arc-en-ciel: Pas directement lié à la force brute ou aux attaques par dictionnaire. Il est très important de ne pas stocker le mot de passe (en BD ou fichier) en texte brut. Les mots de passe sont hachés à l'aide de fonctions de hachage sécurisées comme scrypt et ce hachage est stocké. Une attaque de table Rainbow est une méthode qui vise à deviner le texte brut du mot de passe à partir de la valeur hachée (pour contrecarrer l'attaque, on ajoute des valeurs uniques - sels tout en hachant).

1
Ubaidah