Identifikovať algoritmus hashu

identifikuje pravdepodobný algoritmus hashu (MD5, SHA-1, SHA-256, bcrypt, argon2…) z jeho dĺžky a formátu, a pokúsi sa nájsť čistý text prostredníctvom slovníka bežných hesiel
Vložte akýkoľvek hash (hexadecimálny, bcrypt $2y$..., argon2 $argon2id$...). Nástroj detekuje pravdepodobný algoritmus.

Čo je kryptografický hash?

Hash (alebo kryptografický otisk) je výsledok funkcie, ktorá transformuje vstupné dáta ľubovoľnej veľkosti (heslo, súbor, reťazec) na reťazec pevnej veľkosti. Táto funkcia je jednosmerná: z hashu je matematicky nemožné získať pôvodný vstup. Dva identické vstupy produkujú vždy rovnaký hash, ale najmenšia zmena vo vstupe kompletne modifikuje výsledok.

Náš nástroj identifikuje pravdepodobný algoritmus hashu z jeho formátu a pokúša sa o lookup proti slovníku ultra-bežných hesiel predpočítaných na hlavných algoritmoch.

Ako identifikovať hash?

Identifikácia spočíva na troch indíciách:

  • Dĺžka: každý algoritmus produkuje otisk pevnej veľkosti.
  • Formát: čisto hexadecimálny, Base64 alebo Modular Crypt Format so špecifickými prefixmi.
  • Prefix: moderné password hashe sledujú formát $id$params$salt$hash, kde id jednoznačne identifikuje použitú funkciu.

Bežné hexadecimálne dĺžky

  • 8 znakov: CRC32 (kontrolný súčet, nie kryptografický hash)
  • 32 znakov: MD5, MD4, NTLM, RIPEMD-128
  • 40 znakov: SHA-1, RIPEMD-160
  • 64 znakov: SHA-256, SHA3-256
  • 96 znakov: SHA-384, SHA3-384
  • 128 znakov: SHA-512, SHA3-512, Whirlpool

Samotná dĺžka nestačí na záver: MD5 a NTLM zdieľajú rovnakú veľkosť 32 hex znakov, napríklad. Náš nástroj potom vracia zoznam možných algoritmov.

Prefixy Modular Crypt Format

Password hashe pochádzajúce z crypt() alebo moderných knižníc používajú explicitný prefix:

  • $1$: MD5 crypt
  • $5$: SHA-256 crypt
  • $6$: SHA-512 crypt
  • $2y$, $2a$, $2b$: Bcrypt (varianty podľa platformy)
  • $argon2i$, $argon2id$, $argon2d$: Argon2 (varianty použitia, Argon2id je dnes odporúčaný)

Príklad Bcrypt hashu

$2y$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy

Prípady použitia

  • Analýza únikov dát: identifikovať algoritmus použitý kompromitovanou databázou na vyhodnotenie obtiažnosti útoku.
  • Debug: rýchlo potvrdiť, ktorý algoritmus vygeneroval otisk nájdený v API odpovedi alebo logu.
  • Bezpečnostný audit: odhaliť systém, ktorý stále ukladá heslá v MD5 alebo SHA-1 (zakázané).
  • Forenzika: charakterizovať artefakt vo vyšetrovaní.

Prečo nie je hash reverzibilný

Hashovacia funkcia je navrhnutá byť jednosmerná. Neexistuje žiadny algoritmus "dešifrovania hashu", pretože hash nie je šifrovanie: je to projekcia. Viacero odlišných vstupov môže teoreticky produkovať rovnaký hash (kolízia), takže aj so znalosťou vstupu, ktorý produkuje správny hash, nemáte garanciu, že je to pôvodný vstup.

V praxi "prelomiť" hash znamená masívne testovať kandidátne vstupy do nájdenia toho, ktorého otisk zodpovedá. To robia slovníkové útoky a útoky hrubou silou.

Integrovaný slovníkový lookup

Náš nástroj integruje mini-slovník 39 ultra-bežných hesiel: prázdny reťazec, password, admin, 123456, qwerty, letmein, atď. Týchto 39 záznamov je predpočítaných na 10 algoritmoch (MD5, SHA-1, SHA-256, SHA-512, MD4, NTLM, atď.). Ak váš hash zodpovedá jednému z týchto otiskov, nástroj vám vráti heslo v čistom texte.

Táto funkcia ilustruje, prečo jednoduché hashe nie sú vhodné pre heslá: útočník nemusí ani počítať, konzultuje tabuľku.

Jednoduchý hash vs password hash

Nie všetky hashe sa hodia na ukladanie hesiel:

  • Jednoduché hashe (MD5, SHA-256, SHA-512): navrhnuté byť rýchle, čo je nedostatok, keď chceme odolávať útoku hrubou silou. Defaultne neobsahujú salt, takže dvaja užívatelia s rovnakým heslom budú mať rovnaký hash, vystavujú sa útokom predpočítaných tabuliek (rainbow tables).
  • Password hashe (bcrypt, scrypt, Argon2): navrhnuté byť pomalé konštrukciou, integrujú náhodný salt a konfigurovateľný cost factor. Argon2id je dnes state-of-the-art odporúčaný OWASP.

Ako nástroj používať

  1. Vložte hash do vstupného poľa.
  2. Nástroj detekuje formát (dĺžku, prefix) a navrhne možné algoritmy.
  3. Ak hash zodpovedá ultra-bežnému heslu, zobrazí sa slovo v čistom texte.
  4. Inak získate zoznam kandidátnych algoritmov na ďalšie preskúmanie s dedikovaným nástrojom.

Často kladené otázky

Prečo nie je môj bcrypt hash matchnutý proti slovníku?

Bcrypt používa unikátny náhodný salt per hash: aj s heslom password, každý užívateľ produkuje odlišný hash. Slovníkové predpočítanie teda nefunguje. Je to presne vlastnosť, ktorá robí bcrypt odolný proti útokom tabuľkami.

Čo robiť, ak je možných viac algoritmov pre rovnakú dĺžku?

Krížte s ďalšími indíciami: zdroj hashu (Active Directory ukazuje na NTLM, Linux /etc/shadow na SHA-512 crypt, stará MySQL databáza na MD5, atď.), a aplikačný kontext. Pri rovnakej dĺžke zostáva MD5 štatisticky najpravdepodobnejší na starších systémoch.

Ako "prelomiť" hash v praxi?

Pre legitímne bezpečnostné testy (audit, pentest) sú štandardné nástroje John the Ripper a hashcat. Akceptujú masívne wordlists (rockyou, atď.) a využívajú GPU na testovanie miliárd kandidátov za sekundu. Vykonateľnosť závisí od algoritmu: MD5 a SHA-1 rýchlo padajú, bcrypt a Argon2 spomaľujú útok o niekoľko rádov.

Je integrovaný slovník konzultovateľný?

Slovník je zámerne minimalistický (39 záznamov) a slúži na ilustráciu slabosti jednoduchých hashov na triviálnych heslách. Pre serióznu pokrytie použite externý wordlist (rockyou, SecLists) s John the Ripper alebo hashcat.

Ukážka požiadavky

curl -X POST https://cdrn.fr/api/v1/tools/hash-identifier/execute \
  -H "Content-Type: application/json" \
  -d '{"hash":"..."}'

Vstupná schéma

Pole Typ Povinné Predvolené
hash text

Koncové body

  • GET https://cdrn.fr/api/v1/tools - vypíše všetky dostupné nástroje
  • GET https://cdrn.fr/api/v1/tools/hash-identifier - získa schému tohto nástroja
  • POST https://cdrn.fr/api/v1/tools/hash-identifier/execute - spustí tento nástroj s JSON payloadom