Příklady zadání pro test na hesla

Varianta pro zimní semestr 2023/24

Následující tabulka udává požadovanou entropii hesla v závislosti na možnostech útočníka a počtu iterací při uložení hesla (předpokládá se použití běžných kryptografických hašovacích funkcí jako MD4, MD5, SHA1, SHA-2, SHA-3):

Schopnosti útočníka Uložení hesla
(počet hašovacích operací) 5000 iterací 1000 iterací 1 iterace
2^70 (NSA za rok) 58,5 61 71
2^58 (firma za půl roku) 46,5 49 59
2^52 (jednotlivec s GPU za měsíc) 41,5 43 53
2^42 (jednotlivec s CPU za týden) 31,5 33 43

Tj. pokud je heslo uloženo s 1000 iterací a snaží se ho rozlousknout firma za půl roku, tak by heslo mělo mít entropii 49. Tj. mělo by existovat minimálně 249 různých variant hesla.

Úkol

Dopočítejte minimální délky hesla pro jednotlivé entropie:

požadovaná entropie číslice
[0-9]
malá písmena
[a-z]
číslice, malá a velká písmena
[a-z, A-Z, 0-9]
tisknutelné znaky
ASCII tabulky
diceware
(v bitech) 10 26 62 95 7776
43
53
59
71

InSIS generoval 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])?

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ů)?

V následující tabulce je rychlost prolamování některých typů hesel pomocí CPU (program John the Ripper) a pomocí GPU (program hashcat).

algoritmus John the Ripper
Intel i7 2600
hashcat
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
NT hash 88 834K/s 2 384M/s

Za jak dlouho program oclhashcat otestuje všechny možné kombinace počátečních hesel ze zadání 2 (počáteční hesla v InSIS) na grafické kartě AMD Radeon HD 7970, pokud jsou hesla uložena pomocí NT hash?

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 (viz úloha 4):

entropie hesla doba louskání ve vteřinách doba louskání ve dnech
16 ? ?
32 ? ?
40 ? ?
48 ? ?

Budou se lišit výsledky v případě, že heslo je uloženo se solí o délce 48b?

Entropie hesel vytvářených uživateli se měří poměrně špatně. Knihovna zxcvbn odhaduje entropii na základě existence částí hesla ve slovnících nejčastějších hesel plus zohledňuje „běžné“ operace obsažené v nástrojích pro lámání hesel. Přidává entropii za použití velkých písmen či substituci znaků (např. o se nahradí číslicí 0). Odebírá za posloupnosti či za opakování stejných znaků či skupin znaků. Heslu poté přiřadí skóre dle následující tabulky:

Skóre Skóre text Entropie od Entropie do
0 velmi slabé 0 < 10
1 slabé 10 < 20
2 průměrné 20 < 27
3 silné 27 < 33
4 velmi silné 33

Ve vytvářené aplikaci hesla před uložením do databáze hašujete pomocí PBKDF2 s funkcí HMAC-SHA-256 (v každé iteraci se provádějí dvě operace SHA-256). V pravidlech pro hesla požadujete minimální skóre 3. 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 milionů 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.

Kolik iterací bude potřeba pokud nebude použita sůl a kolik iterací v případě, že bude použita náhodná sůl o délce 64bitů.

Pokračování předchozího zadání. Kolik uživatelů se bude moci za sekundu přihlásit na Vašem serveru se čtyřmi jádry Intel Xeon E3-1230? Tento procesor zvládá 36 miliónů SHA256 operací za vteřinu na jednom jádru.

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čů)?

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%?

V dokumentu 01._cviceni_-_reseni.pdf najdete řešení příkladů včetně komentářů. Soubor obsahuje i příklady z předchozích let.

Putty ukládá klíče (privátní i veřejný) do souboru .ppk. Heslo pro šifrování privátního klíče se generuje pomocí algoritmu SHA-1 z heslové fráze, kterou zadá uživatel; viz How does Putty derive the encryption key in its .ppk format? Operace SHA-1 se provede třikrát.

Počítač s 8 grafickými kartami AMD R9 290X zvládne za vteřinu 29,98 miliard SHA-1 operací (2,998E+10). Chcete si zvolit dostatečné bezpečné heslo pro případ, kdy se útočník zmocní Vašeho souboru s privátním heslem. Pro vytvoření hesla k SSH klíči použijete slovník diceware (obsahuje 7776 slov) s náhodným výběrem. Jaká musí být minimální délka hesla (počet slov), aby útočník na uvedeném počítači otestoval všechny varianty hesla o zvolené délce nejdříve za 2 roky (730 dní)?

Odkazy na diceware:

OpenSSH ukládá RSA privátní klíč do samostatného souboru ~/.ssh/id.rsa. Privátní klíč je zašifrován pomocí symetrické šifry AES-128-CBC, heslo pro zašifrování se generuje pomocí algoritmu MD5 z heslové fráze, kterou zadá uživatel, a z náhodné soli, která je uložená v souboru id_rsa, viz článek Improving the security of your SSH private key files.

Počítač s 8 grafickými kartami AMD R9 290X zvládne za vteřinu 93,72 miliard MD5 operací (9,372E+10). Chcete si zvolit dostatečné bezpečnou heslovou frázi pro případ, kdy se útočník zmocní Vašeho souboru s privátním klíčem. Pro vytvoření heslové fráze použijete krátký slovník diceware (obsahuje 1296 slov) s náhodným výběrem. Jaká musí být minimální délka hesla (počet slov), aby útočník na uvedeném počítači otestoval všechny varianty hesla o zvolené délce nejdříve za 30 dní?

Odkazy:

  1. new openssh key format and bcrypt pbkdf od verze 6.5 podporuje OpenSSH nový formát, který kombinuje iterace PBKDF2 a hašovací funkci Bcrypt.

OpenSSL mimo jiné umí vygenerovat privátní a veřejný klíč dle algoritmu RSA pro certifikáty. Privátní klíč může být uložen ve formátu PKCS8, tj. zašifrován pomocí symetrické šifry des-ede3-cbc. Klíč se vytváří ze zadaného hesla pomocí PBKDF2 s 2048 iteracemi a hašové funkce HMAC-SHA1. Viz druhá část článku Improving the security of your SSH private key files.

Chcete generovat certifikáty pro uživatetele a přiřadit jim počáteční heslo. Toto heslo skládáte ze slabik oddělených tečkou např. tři slabiky cvc.cvc.cvc, kde c je malé písmeno souhlásky (consonant, 20 různých) a v je samohláska (vowel, 6 různých). Ukázky hesel: lik.bub.poc ran.led.mer.syf

Kolik slabik má mít počáteční heslo, aby se všechny varianty hesla otestovali nejdříve za rok (365 dní) na počítači, který za vteřinu zvládne 13,27 miliard HMAC-SHA1 operací (1,327E+10)?

Zakládáte uživatele v Unixu a přiřazujete jim počáteční hesla. Hesla se ukládají pomocí algoritmu SHA512crypt s náhodně zvolenou solí o délce 6 B (ukládané v Base64 do 8 B). Počáteční heslo generujete náhodně dle vzoru CvcnCvcnCvc, kde c je malé písmeno souhlásky (consonant, 20 různých), C je velké písmeno souhlásky, v je samohláska (vowel, 6 různých) a n je číslice (10 číslic). Příklady hesla: Lik7Bub3Poc Ran0Led9Mer

Kolik iterací v algoritmu SHA512crypt zvolíte, pokud chcete umožnit přihlášení 100 uživatelů za vteřinu na serveru s 8 CPU, který na jednom CPU zvládne otestovat 319 hesel za vteřinu při 5000 iteracích v algoritmu SHA512crypt (defaultní počet iterací).

Hesla v InSIS se ukládají pomocí algoritmu SHA512crypt se 32100 iteracemi. Uživatelé si vytvářejí sami hesla, je požadována minimální složitost hesla - běžní uživatelé (studenti) vložit silné heslo (tři čárky) a uživatelé s vyššími právy velmi silné heslo (čtyři čárky). Použitá knihovna zxcvbn (viz https://bis.vse.cz/dokuwiki/doku.php/zxcvbn) odhaduje počet pokusů, které útočník obvykle udělá, než narazí na správné heslo. Např. u Heslicko2 je to 14288 pokusů (tj. 10^4.15497).

Jakou minimální hranici máme nastavit pro silné heslo a jakou pro velmi silné heslo, pokud chceme, aby útočníkovi trvalo lámání silného hesla (tři čárky) minimálně 10 dní a lámání velmi silného hesla (čtyři čárky) minimálně 150 dní na grafické kartě Nvidia GTX 1080, která za vteřinu otestuje 235 900 hesel uložených pomocí SHA512crypt s 5000 iteracemi.

  • Poslední úprava: 2024/02/12 15:54
  • autor: 127.0.0.1