Atak brutalnej siły - kompleksowa operacja

Dokument referencyjny projektu Time2Crack
Odbiorcy: deweloperzy, badacze bezpieczeństwa, zaawansowani użytkownicy

Spis treści

  • Przegląd
  • Tło historyczne i akademickie
  • Matematyka: Klawiatura i entropia
  • Architektura brutalnego ataku nowoczesnej siły
  • Prędkość obliczeniowa według algorytmu haszu
  • Wykrywanie cystern w Time2Crack
  • Obliczanie czasu krakingu: rawTime ()
  • Wykryto redukcję daty: detectDateAndReduce ()
  • Ochrona przed monotonicznością: podłoga innych ataków
  • Kalibracja HF i rola siły brutto
  • Porównanie z innymi atakami
  • Teoretyczne i praktyczne ograniczenia
  • Jaka brutalna siła nie mówi
  • Skuteczna obrona
  • Odniesienia

  • 1. Przegląd

    Surowa siła jest najbardziej podstawowym atakiem w łamaniu haseł: polega na testowaniu systematycznie wszystkie możliwe kombinacje Brak inteligencji, brak heuryzmu - tylko surowa moc obliczeniowa przeciw wielkości przestrzeni do podróży.

    W Time2Crack brutalna siła odgrywa podwójną rolę:

  • Atak wzorcowy To oznacza maksymalny teoretyczny czas, jaki napastnik umieściłby, zakładając, że nie będzie innej podatności.
  • Podłoga (osłona monotoniczna) : służy jako dolny terminal dla wszystkich innych ataków - żaden wyspecjalizowany atak nie może legalnie wyświetlić czasu mniej niż ten, który miałby surową siłę na alfabetycznym podłańcuchu hasła.
  • W praktyce, Surowa siła jest prawie nigdy najszybszy atak na prawdziwe ludzkie hasło - PCFG, Markov lub atak hybrydowy będzie bardziej skuteczne. Ale dla naprawdę losowe i długie hasło, to reprezentuje rzeczywistość: napastnik nie ma wyboru, ale przeglądać przestrzeń wyczerpująco.

    2. Tło historyczne i akademickie

    2.1 Początki

    Surowa siła poprzedza komputer: zasada testowania wszystkich możliwych kombinacji jest stosowana od czasu pierwszej mechanicznej maszyny szyfrującej (Enigma podczas II wojny światowej). Bomba Alana Turinga była, w szerokim znaczeniu, urządzeniem surowej siły wymuszonym hipotezą kołysek.

    Wraz z pojawieniem się komputerów, siła hasła unix została sformalizowana od lat 70. do 80.:

    RokZdarzenie
    Więc...To...
    1979Morris & Thompson: Pierwszy artykuł akademicki na temat bezpieczeństwa haseł Unix, z analizą surowej siły na / etc / passwd
    1988Morris Worm: pierwszy wyczyn masowy przy użyciu, między innymi, słownika i surowego hasło crack
    1993Crack 5.0 (Alec Muffett): pierwsze publiczne narzędzie krakingowe na Unix
    2004Ophcrack: tabele rowków + surowa siła na LM / NTLM hashs Windows
    2007GPU- akcelerated cracking (Elcomsoft): pierwsze publiczne zastosowanie GPU w celu przyspieszenia siły brutto
    2012Hashcat open source: narzędzie referencyjne, maksymalna obsługa GPU
    2016Hive Systems: Roczna publikacja tabel "siła brutto przez GPU" staje się referencją przemysłową

    2.2 Wartości odniesienia

    Rewolucja GPU zmieniła kolejność wielkości siły pierwotnej. Na CPU, napastnik z lat 90. przetestował ~ 10,000 MD5 / drugie hasła. 168,9 miliarda na sekundę - przyspieszenie 16 milionów razy w ciągu 30 lat.

    Kluczowe źródła akademickie :

    3. Podstawy matematyki: keyspace i entropia

    3.1 Klawiatura

    Keyspace (keyspace) to całkowita liczba możliwych haseł dla danej długości i zbiornika:

    keyspace = charset_size ^ length

    Przykłady:

    CharsetRozmiarDługośćKlawiaturaOcena
    Czy...Bo...- Nie.- Nie.- Nie.
    Pojedyncze cyfry108108 = 100 000 000108
    Tylko minuskule268268 mln~ 2 × 1011
    Alfanumeryczne628628 mln~ 2 × 1014
    Pełny ASCII958958 mld~ 6 × 1015
    Pełny ASCII95129512 - 5,4 × 1023~ 5 × 1023
    Pełny ASCII95169516 - 4.4 × 1031~ 4 × 1031

    3.2 entropia binarna

    Entropia (mierzona w bitach) jest logarytmiczną formułą przestrzeni klawiszowej:

    entropie = length × log₂(charset_size)

    W Time2Crack (funkcja entropy()):

    function entropy(pw) {
      return pw.length * Math.log2(getCharset(pw).size);
    }

    Związek między entropią a przestrzenią klawiszową:

    keyspace = 2^entropie
    entropie = log₂(keyspace)
    Konkretne przykłady :
    HasłoCharsetDługośćEntropiaKlawiatura
    - Tak.Czy...- Nie.- Nie.- Nie.
    "12345678"10 (cyfry)826,6 bitów108
    "hasło"26 (niższe)837,6 bitów268
    Hasło 162 (alfanum)953,6 bitów629
    "P @ ssw0rd!"95 (pełne ASCII)959.3 bitów959
    xQz7 @ mK9 # 2pL95 (pełne ASCII)1279 bitów9512

    3.3 Nadzieja matematyczna: Keyspace / 2

    Surowa siła nie zawsze testuje keyspace Kombinacje Integer - średnio, znajduje hasło w połowie drogi, ponieważ cel jest prawdopodobnie rozprowadzany w przestrzeni.oczekiwania matematyczne liczba prób jest zatem:

    tentatives_attendues = keyspace / 2

    To jest dokładnie co modele bruteTime() w Time2Crack:

    // "For brute force: expected value is keyspace/2 (uniform random search)"
    function bruteTime(keyspace, rate) {
      const ls = Math.log(keyspace / 2) - Math.log(rate);
      return Math.exp(ls); // = (keyspace / 2) / rate
    }

    Podział przez 2 jest poprawny przy założeniu, że napastnik podróżuje liniowo (niepowtarzalny). keyspace/2 Próby.


    14. Skuteczna obrona

    14.1 Strona użytkownika: długość i losowość

    Siła brutto zostaje pokonana przez dwa czynniki:

    Długość : każdy dodatkowy znak mnoży przestrzeń klawiszy przez charset_sizeOd 8 do 12 znaków (charset 95) mnoży przestrzeń klawiszy przez 954 - 81 mln.
    Prawdziwe losowe : kryptograficznie bezpieczny generator (CSPRNG) produkuje hasła, które nie korzystają z żadnej redukcji probabilistycznej. Markov, PCFG i Neural nie mają żadnej przewagi nad naprawdę losowym hasłem.
    Zalecenie praktyczne :

    14.2 Strona serwera: algorytmy odporne

    Wybór algorytmu hash mnoży lub dzieli czas siły na czynniki aż do kilka milionów :

    ZalecenieAlgorytmUzasadnienie
    {C: $aaccff} Tłumaczenie:/Bo...
    ZalecaneArgon2idPamiętnik twardy, odporny na GPU
    Zalecanebcrypt (koszt ≥ 12)Intencjonalnie wolne, słone
    DopuszczalnescryptPamięt- twarde, ale mniej standaryzowane
    NieodpowiednieScha- 256 solonyZa szybko nawet z solą
    NiebezpieczneMD5, SHA-1, NTLMNiesłony, bardzo szybki

    15. Odniesienia bibliograficzne

    Akademika

    Morris, R., & Thompson, K. (1979). Bezpieczeństwo haseł: Historia spraw. Komunikaty ACM, 22 (11), 594- 597. → Założenie artykułu na temat bezpieczeństwa hasła Unix
    Spregers, M. (2011). Śledzenie hasła bazujące na GPU- (tezy Mistrza). Radboud University Nijmegen. → Matematyczna formalizacja krakingu GPU, wartości odniesienia dla pojedynczego GPU
    Wheeler, D.L. (2016). zxcvbn: Szacunkowa moc hasła w budżecie. 25. USENIX Sympozjum Bezpieczeństwa. → Dane dotyczące efektywnej przestrzeni klawiszowej (Tabela 2: -30% dla ustrukturyzowanych haseł)
    Dürmuth, M. et al. (2015). Orded Markov Enumerator. ESORICS 2015. → Porównywalne odniesienie dla terminali probabilistycznych wobec siły brutto

    Przemysł

    Hive Systems. (2025). 2025 Hive Systems Password Table. https: / / www.hivesystems.io / password- table → Roczne poziomy odniesienia dla 12 × RTX 4090, standardowy punkt odniesienia
    Gosney, J (2012). 8x wartości odniesienia Nvidia GTX 1080 Hashcat. GitHub Gist. → Pierwszy publiczny wskaźnik multi- GPU, odniesienie historyczne
    Hashcat. (2024). Official Hashcat references v6.2.6. https: / / hashcat.net / hashcat / → Oficjalne prędkości według algorytmu, źródło stałych Time2Crack
    NIST SP 800- 63B. (2017, aktualizacja 2024). Wytyczne dotyczące tożsamości cyfrowej: Uwierzytelnianie i zarządzanie cyklem życia. → Oficjalne zalecenia dotyczące długości i złożoności hasła
    OWASP. (2024). Password Storage Cheat Arkusz. https: / / cheatssheetseries.owasp.org / cheatssheets / Password Storage Cheat Sheet.html → Zalecenia dotyczące bcrypt (koszt ≥ 12), Argon2id jako nowoczesne standardy
    Dokument wygenerowany dla projektu Time2Crack - ostatnia aktualizacja: 2026- 04- 18 Na podstawie implementacji w app.js, surowych funkcjonalnościTime (), getCharset () i ochrony monotoniczności