Presupunând că cuvintele nu sunt repetate, acest lucru ar oferi un număr total de posibilități:
$N(L) = \sum_{i=1}^L {170000 \alegeți i}$
Nu: acesta este numărul total de seturi de $L$ cuvinte, dar cuvintele trebuie să fie în ordine, deci valoarea este de fapt
$N(L) = \sum_{i=1}^L \frac{170000!}{i!}$.
În plus, nu există niciun motiv pentru a nu repeta cuvintele: acest lucru face doar expresia de acces ușor de ghicit. Deci numărul de $L$-parola cuvinte este de fapt $170000^{L}$. Numărul de fraze de acces ale $1$ la $L$ cuvintele este
$$N(L) = \sum_{i=1}^L 170000^i$$
De fapt, atacatorul este destul de probabil să știe numărul de cuvinte din expresia de acces, dar acest lucru nu schimbă numărul cu mult.
Făcând calculul, $N(14) < 2^{256} < N(15)$.
Este corect să presupunem că, dacă atacatul știe că „parola” este într-adevăr o expresie de acces formată din chei în limba engleză, atunci expresia de acces trebuie să fie cel puțin 18 15-cuvânt lung pentru ca acesta să nu fie veriga mai slabă din schema de criptare AES?
Totuși nu, deoarece costul testării unei fraze de acces este mai mare decât costul testării unei chei. Pentru a testa o expresie de acces, adversarul trebuie să obțină mai întâi cheia din expresia de acces, apoi să testeze cheia. Derivarea unei chei dintr-o expresie de acces este în mod deliberat lentă: folosește a întinderea cheii funcţie.
Cât de mult mai lentă este întinderea cheii în comparație cu un calcul hash depinde de alegerea algoritmului de întindere a cheii, de modul în care este parametrizată și de ce hardware are atacatorul. Pentru forța brută la această scară, costul designului hardware este neglijabil, iar costul este dominat de consumul de energie. Pentru o funcție moștenită de întindere a tastei cu operație iterată, cum ar fi PBKDF2, cantitatea de siliciu la alimentare pentru întinderea cheii nu este semnificativ mai mare decât pentru AES. Este obișnuit să alegeți un factor de încetinire astfel încât o rulare să costă câteva zecimi de secunde, în comparație cu câteva miliarde de secunde pentru partea AES, adică un raport de aproximativ $2^{26}$. Cu o funcție modernă de întindere a tastelor care este, de asemenea, greu de memorie, raportul este mai mare, deoarece trebuie să alimentați și memoria RAM. Am de gând să folosesc $2^{30}$ ca raport.
Aceasta înseamnă că, pentru ca AES să fie mai slab împotriva forței brute decât expresia de acces, avem nevoie $N(L) \ge 2^{256}/2^{30} = 2^{226}$, care se realizează pentru $L \ge 13$.
Dar... acest număr nu are sens! Nu este absolut necesar ca cracarea frazei de acces să fie mai lentă decât cracarea AES, deoarece cracarea AES este deja cu mult imposibilă. Dacă spargerea frazei de acces este imposibilă, dar âmai puțin imposibilâ decât AES, este totuși imposibil.
Rețeaua Bitcoin utilizează aproximativ 0,4% din producția totală de energie electrică a lumii (sursa: â 100 TWh/an din ceva peste 25000 TWh/an) și calculează â $2^{93}$ hashes/an. Presupunând că veți obține același număr de operații elementare pe Wh pentru spargerea frazei de acces, cu diferența de factor de cost de $2^{30}$ Am estimat mai sus, asta înseamnă că o limită superioară pentru cracarea frazei de acces este $2^{63}$ pe an.
Deci, dacă doriți ca cheia dvs. să fie protejată de un adversar la nivel NSA pentru o mie de ani, ai nevoie $N(L) \ge 1000 \cdot 2^{63} \aprox 2^{73}$, care se realizează pentru $L \ge 5$.
La acest nivel de forță împotriva forței brute, forța brută pur și simplu nu este o preocupare. Sau, mai degrabă, „forța brută”, ca în supercomputere, nu este o problemă. Forța brută care este o preocupare este cea aplicată cu un instrument contondent.
Realitatea reală reală: un atacator cu adevărat motivat va găsi expresia de acces prin phishing sau, pentru într-adevăr utilizatori atenți și atacatori puternici, plantând o cameră sau plantând malware. (Sau o combinație a acestora.)