Identifikovat algoritmus hashe

identifikuje pravděpodobný algoritmus hashe (MD5, SHA-1, SHA-256, bcrypt, argon2…) z jeho délky a formátu, a pokusí se najít čistý text prostřednictvím slovníku běžných hesel
Vložte jakýkoli hash (hexadecimální, bcrypt $2y$..., argon2 $argon2id$...). Nástroj detekuje pravděpodobný algoritmus.

Co je kryptografický hash?

Hash (nebo kryptografický otisk) je výsledek funkce, která transformuje vstupní data libovolné velikosti (heslo, soubor, řetězec) na řetězec pevné velikosti. Tato funkce je jednosměrná: z hashe je matematicky nemožné získat původní vstup. Dva identické vstupy produkují vždy stejný hash, ale sebemenší změna ve vstupu kompletně modifikuje výsledek.

Náš nástroj identifikuje pravděpodobný algoritmus hashe z jeho formátu, a pokouší se o lookup proti slovníku ultra-běžných hesel předpočítaných na hlavních algoritmech.

Jak identifikovat hash?

Identifikace spočívá na třech indiciích:

  • Délka: každý algoritmus produkuje otisk pevné velikosti.
  • Formát: čistě hexadecimální, Base64, nebo Modular Crypt Format se specifickými prefixy.
  • Prefix: moderní password hashe sledují formát $id$params$salt$hash, kde id jednoznačně identifikuje použitou funkci.

Běžné hexadecimální délky

  • 8 znaků: CRC32 (kontrolní součet, ne kryptografický hash)
  • 32 znaků: MD5, MD4, NTLM, RIPEMD-128
  • 40 znaků: SHA-1, RIPEMD-160
  • 64 znaků: SHA-256, SHA3-256
  • 96 znaků: SHA-384, SHA3-384
  • 128 znaků: SHA-512, SHA3-512, Whirlpool

Samotná délka nestačí k závěru: MD5 a NTLM sdílejí stejnou velikost 32 hex znaků, například. Náš nástroj pak vrací seznam možných algoritmů.

Prefixy Modular Crypt Format

Password hashe pocházející z crypt() nebo moderních knihoven používají explicitní prefix:

  • $1$: MD5 crypt
  • $5$: SHA-256 crypt
  • $6$: SHA-512 crypt
  • $2y$, $2a$, $2b$: Bcrypt (varianty podle platformy)
  • $argon2i$, $argon2id$, $argon2d$: Argon2 (varianty použití, Argon2id je dnes doporučený)

Příklad Bcrypt hashe

$2y$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy

Případy použití

  • Analýza úniků dat: identifikovat algoritmus použitý kompromitovanou databází pro vyhodnocení obtížnosti útoku.
  • Debug: rychle potvrdit, který algoritmus vygeneroval otisk nalezený v API odpovědi nebo logu.
  • Bezpečnostní audit: odhalit systém, který stále ukládá hesla v MD5 nebo SHA-1 (zakázáno).
  • Forenzika: charakterizovat artefakt ve vyšetřování.

Proč není hash reverzibilní

Hashovací funkce je navržena být jednosměrná. Neexistuje žádný algoritmus "dešifrování hashe", protože hash není šifrování: je to projekce. Několik odlišných vstupů může teoreticky produkovat stejný hash (kolize), takže i se znalostí vstupu, který produkuje správný hash, nemáte garanci, že je to původní vstup.

V praxi "prolomit" hash znamená masivně testovat kandidátní vstupy do nalezení toho, jehož otisk odpovídá. To dělají slovníkové útoky a útoky hrubou silou.

Integrovaný slovníkový lookup

Náš nástroj integruje mini-slovník 39 ultra-běžných hesel: prázdný řetězec, password, admin, 123456, qwerty, letmein, atd. Těchto 39 záznamů je předpočítáno na 10 algoritmech (MD5, SHA-1, SHA-256, SHA-512, MD4, NTLM, atd.). Pokud váš hash odpovídá jednomu z těchto otisků, nástroj vám vrátí heslo v čistém textu.

Tato funkce ilustruje, proč jednoduché hashe nejsou vhodné pro hesla: útočník nemusí ani počítat, konzultuje tabulku.

Jednoduchý hash vs password hash

Ne všechny hashe se hodí pro ukládání hesel:

  • Jednoduché hashe (MD5, SHA-256, SHA-512): navržené být rychlé, což je nedostatek, když chceme odolávat útoku hrubou silou. Defaultně neobsahují salt, takže dva uživatelé se stejným heslem budou mít stejný hash, vystavující se útokům předpočítaných tabulek (rainbow tables).
  • Password hashe (bcrypt, scrypt, Argon2): navržené být pomalé konstrukcí, integrují náhodný salt a konfigurovatelný cost factor. Argon2id je dnes state-of-the-art doporučený OWASP.

Jak nástroj používat

  1. Vložte hash do vstupního pole.
  2. Nástroj detekuje formát (délku, prefix) a navrhne možné algoritmy.
  3. Pokud hash odpovídá ultra-běžnému heslu, zobrazí se slovo v čistém textu.
  4. Jinak získáte seznam kandidátních algoritmů k dalšímu prozkoumání s dedikovaným nástrojem.

Často kladené otázky

Proč není můj bcrypt hash matchnut proti slovníku?

Bcrypt používá unikátní náhodný salt per hash: i s heslem password, každý uživatel produkuje odlišný hash. Slovníkové předpočítání tedy nefunguje. Je to přesně vlastnost, která činí bcrypt odolným proti útokům tabulkami.

Co dělat, pokud je možných více algoritmů pro stejnou délku?

Křižte s dalšími indiciemi: zdroj hashe (Active Directory ukazuje na NTLM, Linux /etc/shadow na SHA-512 crypt, stará MySQL databáze na MD5, atd.), a aplikační kontext. Při stejné délce zůstává MD5 statisticky nejpravděpodobnější na starších systémech.

Jak "prolomit" hash v praxi?

Pro legitimní bezpečnostní testy (audit, pentest) jsou standardní nástroje John the Ripper a hashcat. Akceptují masivní wordlists (rockyou, atd.) a využívají GPU k testování miliard kandidátů za sekundu. Proveditelnost závisí na algoritmu: MD5 a SHA-1 rychle padají, bcrypt a Argon2 zpomalují útok o několik řádů.

Je integrovaný slovník konzultovatelný?

Slovník je záměrně minimalistický (39 záznamů) a slouží k ilustraci slabosti jednoduchých hashů na triviálních heslech. Pro seriózní pokrytí použijte externí wordlist (rockyou, SecLists) s John the Ripper nebo hashcat.

Ukázka požadavku

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é Výchozí
hash text

Koncové body

  • GET https://cdrn.fr/api/v1/tools - vypíše všechny dostupné nástroje
  • GET https://cdrn.fr/api/v1/tools/hash-identifier - získá schéma tohoto nástroje
  • POST https://cdrn.fr/api/v1/tools/hash-identifier/execute - spustí tento nástroj s JSON payloadem