Le mie risposte sono "forse" e "no".
Se si considera un tentativo di forza bruta che copre il set completo possibile di password:
- se l'attaccante conosce la restrizione, allora molte password possono essere scartate, in un certo senso questo non rende il set più piccolo, deve ancora scorrere da "" a "~~~~~~~~~~ ~ 9 "(per esempio), lo rende scarso
- la restrizione elimina il "frutto basso appeso", cioè le parole d'ordine dirette del dizionario
Quindi, rigorosamente, sì, se guardi le parti ideali di entropia per personaggio, ma in realtà solo forse. Puoi trovare un'analisi più empirica di questo in NIST SP-800 -63-1 (Appendice A).
Il calcolo corretto delle permutazioni con restrizioni è complicato. Se assumiamo 96 caratteri validi:
96^12 ~= 2^79 ~= 6.13E+23
96^11 * 10 ~= 2^75.8 ~= 6.38E+22
(96^11 * 10 )/96^12 ~= 0.104
Quel rapporto indica una perdita di ~ 89,5% (con un set più realista di 64 caratteri è circa l'85%) - ma non è il calcolo corretto , questo è il numero di permutazioni per una cifra in una posizione specifica .
(A parte: sto ignorando le password più brevi di 12 caratteri per semplicità poiché influisce a malapena sui numeri:
96^1 + 96^2 + 96^3 + 96^4 + 96^5 + 96^6 + 96^7 + 96^8 + 96^9 + 96^10 + 96^11
~= 6.45E21
che è ~ 1% del totale: per le password da 1 a 12 caratteri, i 12 caratteri rappresentano il ~ 99%. Poiché la dimensione del set di caratteri si riduce, il rapporto aumenta, è ~ 1.5% per 64 dimensioni, non cambia molto poiché la lunghezza della password varia nell'intervallo [7-16] in entrambi i casi.)
Esistono due modi ovvi per calcolare il numero corretto di permutazioni con una restrizione richiesta:
- calcola le permutazioni di una cifra in ogni luogo e sommale
- calcola la dimensione del set totale, sottrae quelli non consentiti
L'opzione 1 sfugge rapidamente quando cerchi di formare permutazioni senza sovrapposizioni.
L'opzione 2 è quasi banale (almeno per casi semplici come "deve avere almeno una cifra"):
96^12 - 86^12 ~= 2^78 ~= 4.49E+23
(96^12 - 86^12 ) / 96^12 ~= 0.73
Questo mostra che per le password di 12 caratteri scelte tra un set di 96 caratteri si perde ~ 27% del numero totale di permutazioni con la restrizione "almeno una cifra".
Ripetendo con un set di 64 caratteri per le password:
( 64^12 - 54^12 ) / 64^12 ~= 87%
Quindi in questo caso perdi solo il 13%.
Richiesta di cifre e amp; la punteggiatura è un po 'più complicata, il mio calcolo (96 caratteri, lunghezza 12, > = 1 cifra, > = 1 punteggiatura) è 4.46E + 23 o ~ 73% di 96 ^ 12, sempre leggermente inferiore al caso delle cifre.
La forza bruta non è "molto più veloce", solo ~ 25% più veloce, il che è abbastanza accettabile visti i benefici.