L'entropia della password è basata sul numero di combinazioni possibili.
Per un pattern che riduce l'entropia, il pattern deve essere noto all'attaccante.
Se il modello non è fisso e noto, la riduzione della complessità sarà specifica dell'algoritmo dell'attaccante . Sarà diverso per i diversi attaccanti. Ad esempio, con un attacco dizionario, la complessità effettiva delle parole del dizionario è la dimensione del dizionario, per le parole al di fuori della complessità della forza bruta del dizionario.
Non so se esiste o può essere un algoritmo matematicamente ottimale per le ripetizioni di lettere. La soluzione più semplice a cui riesco a pensare è quella di trattare le ripetizioni dei simboli, fino a una ripetizione N, come grafemi extra. In tal caso, la forza della password sarà il numero di grafemi che contiene.
Contro tale algoritmo, la forza aggiunta di ciascun simbolo consecutivo dal 2 ° all'N ° simbolo è 0, e equivalente ad un altro grafema fino a 2N. Ma questo stesso algoritmo sarà più lento rispetto alle password casuali a causa di un set di caratteri più efficace. Ad esempio, il controllo di ripetizioni di 2 lunghezze per ogni simbolo diminuirà della sua velocità di un fattore di 2 ^ (lunghezza-1). Ma contro una password che è tutti simboli doppi, la sua velocità migliorerà solo a una radice quadrata di complessità superiore.
Se è imperativo che l'efficienza della forza bruta non sia compromessa, un tweak libero inizia sempre a selezionare l'ultimo grafo come uguale a quello precedente. In questo caso la forza aggiunta dalla prima (per lunghezza variabile) o tutti i simboli di ripetizione alla fine (per lunghezza fissa) è 0.
Farlo nel mezzo non è più un aggiornamento gratuito. Nessuno dei due sta cercando ripetizioni extra con una password di lunghezza variabile, sebbene sia così economico da essere quasi gratuito.
In breve, contro un algoritmo ottimizzato per selezionare le password con caratteri ripetuti, la forza di una password può essere stimata facendo cadere tutte le cifre consecutive oltre la prima per ottenere la lunghezza effettiva L '. La forza teorica sarebbe approssimativamente (charset * N) ^ L ', dove N è il numero massimo di ripetizioni che l'attaccante sta testando.
Contro un algoritmo ottimizzato per l'efficienza della forza bruta, dovrebbero essere eliminate solo le cifre consecutive alla fine. La forza teorica con un algoritmo ingenuo sarebbe charset ^ (L'-1) * (set di caratteri + N). Comunque, qualsiasi algoritmo pratico testerà già molti suffissi (le password spesso finiscono con "1" o "1!" Per aggirare le regole di complessità).
È tutta una questione di quale algoritmo utilizza l'utente malintenzionato. I dizionari, inclusi gli elenchi di password persi, verranno generalmente provati per primi.