Protože jsem narazil na bug mailu.io související s kontrolou hesla na službě HIBP, hledal jsem způsob, jak jednoduše a bezpečně zkontrolovat konkrétní heslo přes jejich API. Mají sice jednoduchou stránku s formulářem, ale chcete celé své heslo v nešifrované podobě vkládat do webové stránky?
API je popsané v dokumentaci HIBP. Běžně ho používají různí správci hesel (což je možnost, jak heslo zkontrolovat klikacím nástrojem). Pro kontrolu hesla není potřeba API key a také zde není rate limiting.
Tady je tedy jednoduchý postup v shellu pro kontrolu hesla na HIBP se základními Linuxovými nástroji, které jsou obvykle standardně instalované. Heslo je nejdříve lokálně zahashované SHA1 a do API se pak odesílá jen malá část tohoto hashe. Proto nevadí, že jde o dnes již (z pohledu bezpečnosti) zastaralý algoritmus. Server vrací zbylé části známých hashů a počet jejich výskytů. Poslední příkaz tohoto postupu tedy zobrazí počet výskytů v HIBP databázi. Pokud neukáže nic, služba heslo nezná (je "bezpečné").
Příklad: počet výskytů hesla "heslo123" v HIBP je 10527 (26.11.2024).
# nebudeme ukladat historii shellu
# pozor muze se lisit pro vase prostredi
# navic muze logovat treba i vas terminal
unset HISTFILE
# zde vlozte kontrolovane heslo
# pozor pokud heslo obsahuje apostrof
PASS='heslo123'
# spocitame SHA1 hash
SHA1SUM=`echo -n "${PASS}"|sha1sum|cut -d" " -f1`
# rozdelime hash na dve casti
SHA1SUM_1=`echo -n "${SHA1SUM}"|head -c5`
SHA1SUM_2=`echo -n "${SHA1SUM}"|tail -c35`
# prvni cast hashe posleme HIBP sluzbe
# z odpovedi grepneme druhou cast
# a zobrazime pouze pocet vyskytu
curl -s "https://api.pwnedpasswords.com/range/${SHA1SUM_1}"|\
grep -i "${SHA1SUM_2}"|\
cut -d":" -f2
Další možností by bylo stáhnout celý archiv hashů. Ten by byl ale velký (prý desítky GB po dekompresi) a zastarával by.
- Pro vkládání komentářů se musíte přihlásit