Flux RSS - La vie du site - Nouveautés et mises à jour
Assiste.com - Sécurité informatique - Vie privée sur le Web - Neutralité d'Internet Assiste.com - Sécurité informatique - Vie privée sur le Web - Neutralité d'Internet

Attaque en « force brute » pour casser un cryptage.

L'attaque en « force brute » est l'une des méthodes utilisées en cryptanalyse pour tenter de casser un cryptage (déchiffrer un chiffrement).

01.04.2012 - Révision 21.08.2020 - Révision mineure 13.05.2021. Auteur : Pierre Pinard.

L'attaque en « force brute » est l'une des méthodes utilisées en cryptanalyse pour tenter de casser un cryptage. Le principe en lui-même de l'attaque en « force brute » ne vise pas exclusivement les mots de passe mais c'est dans ce domaine que ce type d'attaques est essentiellement utilisé. L'attaque en « force brute » vise un mot de passe à la fois.

Il y a deux usages de la « force brute » :

  1. Un cybercriminel s'est procuré un identifiant et le hashcode du mot de passe associé à cet identifiant (ou des listes d'identifiants et les hashcodes des mots de passe associés. On ne se souci pas du moyen mis en oeuvre pour les obtenir (piratage d'un serveur, écoute par sniffer, etc.). La question n'est pas là.

    L'attaque en « force brute » commence lorsque l'on dispose du couple identifiant et chiffre clé dont on ne peut rien faire. Il faut remonter du chiffre clé au mot de passe d'origine. Il faut casser le chiffre clé qui, normalement ne permet pas de remonter à la chaîne de caractères qui a servi à le générer.

    Puisque le cryptage du mot de passe est à sens unique (univoque), il n'y a pas de formule pour décrypter le hashcode. La seule méthode possible est donc de recommencer : crypter toutes les combinaisons possibles de caractères autorisés, avec le même algorithme (MD5, SHA-1, etc.), jusqu'à obtenir un hashcode identique à celui détenu. Il faut donc également savoir quel est l'algorithme qui a été utilisé. On peut le deviner par la longueur du hashcode (16 caractères, c'est du MD5, 20 caractères c'est du SHA-1, etc.).

    En utilisant du matériel spécialisé (réseau botNet ou ordinateur à base de matériel spécialement développé pour les attaques en « force brute », etc.), et après un certain temps de calcul, on fini par trouver le mot de passe à l'origine du hashcode détenu. On peut alors usurper l'identité du titulaire en utilisant son couple identifiant / mot de passe.

    Le temps de calcul est totalement dépendant de :

    • Le puissance du matériel utilisé pour le calcul

    • La longueur des mots de passe (le nombre N maximum de caractères)

    • Le jeu de caractères utilisés.

      Les types de jeux de caractères

      Pour simplifier, les jeux de caractères autorisés/utilisés par les sites Web sont classés, arbitrairement, en 4 types (il y a bien d'autres jeux de caractères intermédiaires) :

      1. Type 1 : Les 26 lettres de l'alphabet
        Toutes les 26 lettres de l'alphabet, et seulement ces 26 lettres, en majuscules seulement ou en minuscules seulement. Ce jeu de caractères est très restrictif et un mot de passe court (8 à 12 caractères) est cassable en quelques secondes ou quelques minutes par attaque en force brute ou par dictionnaire ou avec des tables arc en ciel.
        ABCDEFGHIJKLMNOPQRSTUVWXYZ
        Ou
        abcdefghijklmnopqrstuvwxyz

      2. Type 2 : Le type 1 augmenté des 10 chiffres
        Amplitude : 36 caractères.
        Très restrictif et cassable très rapidement.
        ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
        Ou
        abcdefghijklmnopqrstuvwxyz0123456789

      3. Type 3 : Les types 1 ou 2 ou insensibles à la case
        Amplitude : 52 ou 62 caractères.
        Restrictif et cassable assez rapidement.
        ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
        ou
        ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789

      4. Type 4 : Le type 3 avec plus ou moins de caractères spéciaux et accentués
        Type 3 augmenté d'un nombre plus ou moins restreint de caractères spéciaux et de caractères accentués (jeu de 90 à plus de 100 caractères).
        C'est le seul type recommandé. Dans les évaluations de temps de calcul en attaque par force brute ou de volume mémoire en attaques par dictionnaire exhaustif, nous retiendrons un type 4 à 100 caractères.
        Exemples de jeux de caractères :
        ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789,?;.:/!§%µ
        Ou
        ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789²&é"'(-è_çà)=#{[|\^@]}^¨$£¤ù%*µ,?;.:/!§

    Le nombre de combinaisons possibles qu'il va falloir calculer est égal à :

    • Longueur maximum du mot de passe=M caractères.
    • Longeur du mot de passe=P caractères
    • Nombre de caractères dans le jeu de caractères=N
    • Indice i varie de 1 à P

    Nombre de combinaisons possibles=(Pi=1 x N) + (Pi=2 x N) + (Pi=3 x N) + (Pi=4 x N) etc. jusqu'à ce que i=P

    En moyenne, il faut calculer la moitié des combinaisons possibles, ce qui peut prendre plusieurs vies si le mot de passe d'origine est long.

  2. L'attaque en « force brute » utilisée manuellement contre la procédure d'autentification (la page d'identification où on compose le couple identifiant / mot de passe du compte attaqué) en s'asseyant devant un écran / clavier (ou en simulant, par un robot travaillant automatiquement, la présence de quelqu'un composant un couple identifiant / mot de passe).

    Il faut posséder l'identifiant et essayer toutes les combinaisons possibles de caractères pour tomber finalement sur le bon mot de passe.

    Cette forme d'usage de la « force brute » est possible contre un compte très peu sensible (compte sur un forum, sur un réseau social, etc.) utilisant des mots de passe très courts. Elle est totalement illusoire et vouée à l'échec contre un compte sensible (banque, e-commerce, assurance, administration etc.). Ces comptes utilisent (théoriquement) plusieurs méthodes pour empêcher les attaques en « force brute » :

    • Détection automatique de plusieurs tentatives successives de mots de passe erronés (généralement, au bout de trois échecs, le compte est bloqué pour un certain temps ou nécessite une procédure spéciale de double authentification).
    • Détection automatique de plusieurs tentatives successives de mots de passe erronés, les mots de passe tentés étant présentés de manière ordonnée. Cela oblige l'attaquant à tenter les mots de passe possibles dans un ordre aléatoire, ce qui introduit quelques dificultés, aussi bien pour une attaque manuelle que pour un logiciel robot d'attaque.
    • Après un certain nombre de tentatives infructueuses (généralement 3 tentatives), le délais pour autoriser une nouvelle tentative s'allonge. En fonction de la longueur du mot de passe, les combinaisons possibles sont tellement nombreuses que le temps moyen pour tomber sur le bon mot de passe risque d'être plus long que la fin probable de l'Univers ! Seuls les mots de passe très courts ont une toute petite chance d'être cassés par cette méthode. Comme les mots de passe très courts, très simples, ne protègent que des choses sans intérêt...
    • Une méthode de défense, lorsque l'autorité d'authentification à un doute (bon mot de passe mais précédé de nombreuses tentatives erronées), consiste à envoyer systématiquement un message du type « Erreur de mot de passe », y compris sur le bon mot de passe.
      • Si l'utilisateur est l'authentique détenteur du compte, il va insister avec son bon mot de passe que le système d'authentification laissera passer à la tentative suivante.
      • Si l'utilisateur n'est pas le détenteur du compte, il va poursuivre son attaque en « force brute », ignorant le bon mot de passe qui vient de lui glisser entre les doigts.
    • Un captcha ralenti drastiquement une attaque en « force brute » tentée manuellement et élimine définitivement une attaque robotisée.
Force brute - Matériel, cartes et processeurs d'attaques en force brute

Deep Crack - Cartes multi-processeurs spécialisées pour des attaques en Force Brute
Deep Crack - Cartes multi-processeurs spécialisées pour des attaques en « force brute »

Deep Crack - Processeurs spécialisées pour des attaques en Force Brute
Deep Crack - Processeurs spécialisées pour des attaques en « force brute »

Deep Crack - Processeurs graphiques pour des attaques en Force Brute
Deep Crack - Processeurs graphiques pour des attaques en « force brute »
Force brute - Matériel, cartes et processeurs d'attaques en force brute

Casser les mots de passe en Force Brute ou par dictionnaire exhaustif

Evaluation du temps nécessaire en fonction du nombre de combinaisons possibles
Evaluation de la mémoire nécessaire en fonction du nombre de combinaisons possibles

En rouge, les attaques " jouables - possibles " (donc signalant des mots de passe faibles en longueur et en jeu de caractères)

Type 1 : Jeu de 26 caractères (tout majuscules ou tout minuscules)

Mots de passe de :
8 caractères9 caractères10 caractères11 caractères12 caractères13 caractères14 caractères
Rang 126262626262626
Rang 2676676676676676676676
Rang 317 57617 57617 57617 57617 57617 57617 576
Rang 4456 976456 976456 976456 976456 976456 976456 976
Rang 511 881 37611 881 37611 881 37611 881 37611 881 37611 881 37611 881 376
Rang 6308 915 776308 915 776308 915 776308 915 776308 915 776308 915 776308 915 776
Rang 78 031 810 1768 031 810 1768 031 810 1768 031 810 1768 031 810 1768 031 810 1768 031 810 176
Rang 8208 827 064 576208 827 064 576208 827 064 576208 827 064 576208 827 064 576208 827 064 576208 827 064 576
Rang 9 5 429 503 678 9765 429 503 678 9765 429 503 678 9765 429 503 678 9765 429 503 678 9765 429 503 678 976
Rang 10 141 167 095 653 376141 167 095 653 376141 167 095 653 376141 167 095 653 376141 167 095 653 376
Rang 11 3 670 344 486 987 7803 670 344 486 987 7803 670 344 486 987 7803 670 344 486 987 780
Rang 12 95 428 956 661 682 20095 428 956 661 682 20095 428 956 661 682 200
Rang 13 2 481 152 873 203 740 0002 481 152 873 203 740 000
Rang 14 64 509 974 703 297 200 000

Type 1 - Combinaisons possibles (mots de passe possibles)

217 180 147 1585 646 683 826 134146 813 779 479 5103 817 158 266 467 29099 246 114 928 149 5002 580 398 988 131 890 00067 090 373 691 429 000 000

Type 1 - Temps de calcul nécessaire pour construire un dictionnaire intégral (en jours) - En rouge ce qui est " jouable ".
Basé sur le matériel construit par nsa.unaligned.org en 2007.

En 2007
0
0,03
0,66
17
447
11 628
302 319
En 2009
0
0
0
1
20
517
13 463

Type 1 - Mémoire de stockage nécessaire, en teraoctets, pour un tel dictionnaire contenant "Mot de passe", Hash MD5, Hash SHA-1 (Recherches par dichotomie, Recherche par B-Tree)

9 556
254 101
6 753 434
179 406 439
4 763 813 517
126 439 550 418
3 354 518 684 571
19 112
508 202
13 506 868
358 812 877
9 527 627 033
252 879 100 837
6 709 037 369 143




Type 2 : Jeu de 36 caractères (tout majuscules ou tout minuscules + 10 chiffres)
(cas de certains algorithmes de chiffrement qui ne tiennent pas comptes des majuscules/minuscules (insensibles à la case) et mettent le mot de passe à plat - par exemple l'algorithme de chiffrement LanManager Hash sous Windows, qui commence par transformer les minuscules en majuscules)
Mots de passe de :
8 caractères9 caractères10 caractères11 caractères12 caractères13 caractères14 caractères
Rang 136363636363636
Rang 21 2961 2961 2961 2961 2961 2961 296
Rang 346 65646 65646 65646 65646 65646 65646 656
Rang 41 679 6161 679 6161 679 6161 679 6161 679 6161 679 6161 679 616
Rang 560 466 17660 466 17660 466 17660 466 17660 466 17660 466 17660 466 176
Rang 62 176 782 3362 176 782 3362 176 782 3362 176 782 3362 176 782 3362 176 782 3362 176 782 336
Rang 778 364 164 09678 364 164 09678 364 164 09678 364 164 09678 364 164 09678 364 164 09678 364 164 096
Rang 82 821 109 907 4562 821 109 907 4562 821 109 907 4562 821 109 907 4562 821 109 907 4562 821 109 907 4562 821 109 907 456
Rang 9 101 559 956 668 416101 559 956 668 416101 559 956 668 416101 559 956 668 416101 559 956 668 416101 559 956 668 416
Rang 10 3 656 158 440 062 9803 656 158 440 062 9803 656 158 440 062 9803 656 158 440 062 9803 656 158 440 062 980
Rang 11 131 621 703 842 267 000131 621 703 842 267 000131 621 703 842 267 000131 621 703 842 267 000
Rang 12 4 738 381 338 321 620 0004 738 381 338 321 620 0004 738 381 338 321 620 000
Rang 13 170 581 728 179 578 000 000170 581 728 179 578 000 000
Rang 14 6 140 942 214 464 820 000 000

Type 2 - Combinaisons possibles (mots de passe possibles)

2 901 713 047 668104 461 669 716 0843 760 620 109 779 060135 382 323 952 046 0004 873 763 662 273 660 000175 455 491 841 852 000 0006 316 397 706 306 670 000 000

Type 2 - Temps de calcul nécessaire pour construire un dictionnaire intégral (en jours) - En rouge ce qui est " jouable ".
basé sur le matériel construit par nsa.unaligned.org en 2007.

En 2007
0,01
0,47
17
610
21 962
790 627
28 462 569
En 2009
0
0
1
27
976
35 139
1 265 003

Type 2 - Mémoire de stockage nécessaire, en teraoctets, pour un tel dictionnaire contenant "Mot de passe", Hash MD5, Hash SHA-1 (Recherches par dichotomie, Recherche par B-Tree)

127 675
4 700 775
172 988 525
6 362 969 226
233 940 655 789
8 597 319 100 251
315 819 885 315 333
255 351
9 401 550
345 977 050
12 725 938 451
467 881 311 578
17 194 638 200 502
631 639 770 630 667




Type 3 : Jeu de 62 caractères (majuscules + minuscules + 10 chiffres)

Mots de passe de :
8 caractères9 caractères10 caractères11 caractères12 caractères13 caractères14 caractères
Rang 162626262626262
Rang 23 8443 8443 8443 8443 8443 8443 844
Rang 3238 328238 328238 328238 328238 328238 328238 328
Rang 414 776 33614 776 33614 776 33614 776 33614 776 33614 776 33614 776 336
Rang 5916 132 832916 132 832916 132 832916 132 832916 132 832916 132 832916 132 832
Rang 656 800 235 58456 800 235 58456 800 235 58456 800 235 58456 800 235 58456 800 235 58456 800 235 584
Rang 73 521 614 606 2083 521 614 606 2083 521 614 606 2083 521 614 606 2083 521 614 606 2083 521 614 606 2083 521 614 606 208
Rang 8218 340 105 584 896218 340 105 584 896218 340 105 584 896218 340 105 584 896218 340 105 584 896218 340 105 584 896218 340 105 584 896
Rang 9 13 537 086 546 263 60013 537 086 546 263 60013 537 086 546 263 60013 537 086 546 263 60013 537 086 546 263 60013 537 086 546 263 600
Rang 10 839 299 365 868 340 000839 299 365 868 340 000839 299 365 868 340 000839 299 365 868 340 000839 299 365 868 340 000
Rang 11 52 036 560 683 837 100 00052 036 560 683 837 100 00052 036 560 683 837 100 00052 036 560 683 837 100 000
Rang 12 3 226 266 762 397 900 000 0003 226 266 762 397 900 000 0003 226 266 762 397 900 000 000
Rang 13 200 028 539 268 670 000 000 000200 028 539 268 670 000 000 000
Rang 14 12 401 769 434 657 500 000 000 000

Type 3 - Combinaisons possibles (mots de passe possibles)

221 919 451 578 09013 759 005 997 841 600853 058 371 866 182 00052 889 619 055 703 300 0003 279 156 381 453 600 000 000203 307 695 650 123 000 000 00012 605 077 130 307 700 000 000 000

Type 3 - Temps de calcul nécessaire pour construire un dictionnaire intégral (en jours) - En rouge ce qui est " jouable ".
basé sur le matériel construit par nsa.unaligned.org en 2007.

En 2007
1
62
3844
238328
14 776 336
916 132 832
56 800 235 584
En 2009
0
3
171
10 592
656 726
40 717 015
2 524 454 915

Type 3 - Mémoire de stockage nécessaire, en teraoctets, pour un tel dictionnaire contenant "Mot de passe", Hash MD5, Hash SHA-1 (Recherches par dichotomie, Recherche par B-Tree)

9 764 456
619 155 270
39 240 685 106
2 485 812 095 618
157 399 506 309 773
9 962 077 086 856 050
630 253 856 515 383 000
19 528 912
1 238 310 540
78 481 370 212
4 971 624 191 236
314 799 012 619 546
19 924 154 173 712 100
1 260 507 713 030 770 000




Type 4 : Jeu de 100 caractères (majuscules + minuscules + 10 chiffres + 38 caractères spéciaux et accentués)

Mots de passe de :
8 caractères9 caractères10 caractères11 caractères12 caractères13 caractères14 caractères
Rang 1100100100100100100100
Rang 210 00010 00010 00010 00010 00010 00010 000
Rang 31 000 0001 000 0001 000 0001 000 0001 000 0001 000 0001 000 000
Rang 4100 000 000100 000 000100 000 000100 000 000100 000 000100 000 000100 000 000
Rang 510 000 000 00010 000 000 00010 000 000 00010 000 000 00010 000 000 00010 000 000 00010 000 000 000
Rang 61 000 000 000 0001 000 000 000 0001 000 000 000 0001 000 000 000 0001 000 000 000 0001 000 000 000 0001 000 000 000 000
Rang 7100 000 000 000 000100 000 000 000 000100 000 000 000 000100 000 000 000 000100 000 000 000 000100 000 000 000 000100 000 000 000 000
Rang 810 000 000 000 000 00010 000 000 000 000 00010 000 000 000 000 00010 000 000 000 000 00010 000 000 000 000 00010 000 000 000 000 00010 000 000 000 000 000
Rang 9 1 000 000 000 000 000 0001 000 000 000 000 000 0001 000 000 000 000 000 0001 000 000 000 000 000 0001 000 000 000 000 000 0001 000 000 000 000 000 000
Rang 10 100 000 000 000 000 000 000100 000 000 000 000 000 000100 000 000 000 000 000 000100 000 000 000 000 000 000100 000 000 000 000 000 000
Rang 11 10 000 000 000 000 000 000 00010 000 000 000 000 000 000 00010 000 000 000 000 000 000 00010 000 000 000 000 000 000 000
Rang 12 1 000 000 000 000 000 000 000 0001 000 000 000 000 000 000 000 0001 000 000 000 000 000 000 000 000
Rang 13 100 000 000 000 000 000 000 000 000100 000 000 000 000 000 000 000 000
Rang 14 10 000 000 000 000 000 000 000 000 000

Type 4 - Combinaisons possibles (mots de passe possibles)

10 101 010 101 010 1001 010 101 010 101 010 000101 010 101 010 101 000 00010 101 010 101 010 100 000 0001 010 101 010 101 010 000 000 000101 010 101 010 101 000 000 000 00010 101 010 101 010 100 000 000 000 000

Type 4 - Temps de calcul nécessaire pour construire un dictionnaire intégral (en jours) - En rouge ce qui est " jouable ".
basé sur le matériel construit par nsa.unaligned.org en 2007.

En 2007464552455 166
45 516 560
4 551 656 031
455 165 603 068
45 516 560 306 818
En 2009220220 2302 022 958202 295 82420 229 582 3592 022 958 235 859

Type 4 - Mémoire de stockage nécessaire, en teraoctets, pour un tel dictionnaire contenant "Mot de passe", Hash MD5, Hash SHA-1 (Recherches par dichotomie, Recherche par B-Tree)

444 444 444
45 454 545 455
4 646 464 646 465
474 747 474 747 475
48 484 848 484 848 500
4 949 494 949 494 950 000
505 050 505 050 505 000 000
888 888 889
90 909 090 909
9 292 929 292 929
949 494 949 494 949
96 969 696 969 697 000
9 898 989 898 989 900 000
1 010 101 010 101 010 000 000
Force brute - Evaluation du temps et de la mémoire nécessaires

wfuzz (sur github) - un outil et des dictionnaires d'attaqus en « force brute » (recherche de hiérarchies de répertoires et découverte de répertoires, etc.)
wfuzz (site wfuzz)





Force brute - Ressources


Outils d'investigations


# Ailleurs sur le Web #

  1. #Force brute#