Am pierdut un laptop criptat cu LUKS la sfârșitul anului 2019 și acum încerc să-mi dau seama care sunt șansele ca un atacator foarte sofisticat să poată pătrunde.
Containerul LUKS a fost creat la jumătatea anului 2017 cu setările implicite LUKS1.
CPU-ul pe care l-am folosit atunci era un Intel Core i7-6700K pe care o mai am.
Am rulat niște benchmark-uri cu benchmark cryptsetup
care a produs următoarea valoare pentru PBKDF2-sha1.
PBKDF2-sha1 1659139 iterații pe secundă pentru cheie pe 256 de biți
Nu-mi amintesc parola exactă pe care am folosit-o (am prea multe), cu excepția faptului că are cel puțin 14 caractere și conține [a-z0-9] și nu este inclus în niciun dicționar (bifat rockyou2021.txt).
Am găsit un tabel de referință pe GitHub folosind Nvidia GeForce RTX 3090.
Mod hash: 12000 - PBKDF2-HMAC-SHA1 (iterații: 999)
Viteză.#1.........: 9240,9 kH/s (47,48 ms) @ Accel:16 Bucle:499 Thr:1024 Vec:1
Mod hash: 12001 - Atlassian (PBKDF2-HMAC-SHA1) (iterații: 9999)
Viteză.#1.........: 923,3 kH/s (72,49 ms) @ Accel:8 Bucle:1024 Thr:1024 Vec:1
Mod hash: 22600 - Codul de acces al aplicației desktop Telegram (PBKDF2-HMAC-SHA1) (iterații: 3999)
Viteză.#1.........: 328,7 kH/s (63,58 ms) @ Accel:8 Bucle:128 Thr:1024 Vec:1
Pe baza acestor numere am ajuns la concluzia că GPU-ul poate calcula 9249 kH/s pentru 1000 de iterații.
Dacă numărul de iterații crește de la 1659 la 1659139, aceasta ar însemna că viteza GPU-ului va scădea la: $\frac{9249 kH/s}{1659}$ = 5575 H/s. Asta înseamnă că un atacator poate verifica efectiv doar 5575 de parole pe secundă cu acel singur GPU.
Parolele posibile bazate pe setul de caractere ([a-z0-9], lungime=14) sunt: $36^{14}$.
De dragul simplității, să o tăiem în jumătate, ceea ce ne lasă cu un caz mediu de: $\frac{36^{14}}{2}=3*10^{21}$.
Asta înseamnă că ar fi nevoie în medie de un atacator $\frac{3*10^{21}}{5575}=5*10^{17}$ secunde pentru a găsi parola potrivită care echivalează cu $3*10^{9}$ ani. Asta înseamnă că chiar dacă atacatorul ar avea 1 milion din acele GPU-uri, ar dura totuși 300 de ani pentru a sparge parola.
Întrebările mele sunt:
- În ce măsură numărul relativ mare de iterații compensează entropia relativ slabă a parolei mele, luând în considerare un atac de forță brută sau de dicționar asupra unui GPU modern?
- Am omis vreun detaliu important în analiza mea?