a) jak silné heslo potřebujete? – na začátku cvičení je tato tabulka magie, na konci byste měli být schopni ji vytvořit:
Schopnosti útočníka | Uložení hesla | ||
5000 iterací | 1000 iterací | 1 iterace | |
2^70 (NSA za rok) | 58,5 | ||
2^58 (firma za půl roku) | 46,5 | ||
2^52 (jednotlivec s GPU za měsíc) | 41,5 | ||
2^42 (jednotlivec s CPU za týden) | 31,5 |
Úkol: dopočítejte minimální délky hesla pro jednotlivé entropie:
požadovaná entropie H v bitech | číslice 0-9 | písmena [a-z] bez rozlišení velikosti | číslice, malá a velká písmena, [a-z, A-Z, 0-9] | tisknutelné znaky ASCII tabulky | diceware |
b) InSIS generuje počáteční hesla dle schématu nnxxxnxxX (dvě číslice, tři malá písmena, jedna číslice, dvě malá písmena, velké písmeno). Jaká je entropie těchto hesel? Kolikrát se zkrátí čas prolamování pro 9 znaková hesla proti variantě testování všech variant z 62 znaků ([a-zA-Z0-9])?
c) máte 8 znaková hesla složená z malých/velkých písmen a číslic (62 znaků). Chcete zvětšit odolnost vůči prolamování hrubou silou. Více variant (větší entropii) bude mít zvětšení minimálního počtu znaků na 9 či rozšíření abecedy o tisknutelné ASCII znaky (tj. na 95 znaků)?
d) V následující tabulce je rychlost prolamování některých typů hesel pomocí CPU i pomocí GPU
John the Ripper, Intel i7 2600 | oclhashcat, AMD Radeon HD 7970 | |
DEScrypt | 18 284K/s | 65 594K/s |
MD5 crypt | 66,9K/s | 3 592K/s |
Bcrypt, | 4,8K/s | 4,1K/s |
LM hash | 88 834K/s | 2 384M/s |
Za jak dlouho by program oclhashcat otestoval všechny možné kombinace počátečních hesel ze zadání b) na grafické kartě AMD Radeon HD 7970, pokud jsou hesla uložena pomocí LM hash?
e) Spočtěte průměrnou dobu prolamování jednoho náhodně vygenerovaného hesla uloženého pomocí MD5, pokud útoční použije program oclhashcat a AMD Radeon HD 7970:
entropie hesla | doba louskání ve vteřinách | doba louskání ve dnech |
Budou se lišit výsledky v případě, že heslo je uloženo se solí o délce 48b?
f) Spočítejte entropii hesel vytvářených uživateli v InSISu a to dle pravidel standardu NIST SP 800-63.
g) Ve vytvářené aplikaci hesla před uložením do databáze hašujete pomocí PBKDF2 s funkcí SHA-256. V pravidlech pro hesla požadujete minimální délku 9 znaků, z toho minimálně jedno malé písmeno, jedno velké písmeno a jeden nepísmenný znak. Předpokládáte, že v systému bude uloženo přibližně 20 000 účtů. Vašim úkolem je spočítat počet iterací pro PBKDF2 tak, aby se výrazně snížilo nebezpečí odhalení hesel při ukradení celé databáze. Předpokládáte, že útočník pro prolamování použije počítač s grafickou kartou AMD HD 7970, na které je schopen spočítat 1 032 M SHA-256 haší za sekundu (1 032 MH/s). Za jeden den by měl útočník získat v průměru jedno heslo, útočník používá útok hrubou silou. Předpokládejte náhodně generovaná hesla o 9 znacích splňující pravidla.
O kolik bude potřeba zvýšit počet iterací, pokud budeme předpokládat uživateli vytvářená hesla, tj. při výpočtu budete vycházet z entropie dle NIST 800-63.
h) Pokračování předchozího zadání. Kolik uživatelů se bude moci za vteřinu přihlásit na Vašem serveru se čtyřmi jádry Intel Xeon E3-1230? Tento procesor zvládá 36 M SHA-256 (36 MH/s) operací za vteřinu.
i) varianta zadání g) a h). Při těžení Bitcoinů se počítají haše SHA-256, na stránce https://en.bitcoin.it/wiki/Mining_hardware_comparison je přehled dostupného hardware pro těžbu bitcoinů včetně rychlosti operací SHA-256.
Při výpočtu počtu iterací pro PBKDF2 dle zadání g) předpokládejte, že útočník má přístup ke specializovanému hardware pro prolamování hesel, který má stejnou rychlost operací SHA-256 jako nejrychlejší zařízení na těžbu bitcoinů s cenou do 3 000 USD. Spočtěte, kolik uživatelů se při tomto počtu iterací přihlásí na Váš server za jednu vteřinu.
j) Při vytváření virtuálních serverů ve VMware se náhodně generuje ethernetová adresa (6 B). První tři bajty jsou dány (00:50:56), další tři se náhodně generují. Jaká je pravděpodobnost kolize MAC adres v podsíti s maskou /22 (1022 počítačů).
k) Budete ukládat 20 000 hesel. Pro každé uložené heslo vygenerujete náhodnou sůl. Kolik má mít sůl bitů, aby pravděpodobnost stejné soli (tj. kolize) byla menší než 1%?