Risposta breve
Dipende dal tuo "codice".
La regola
Se il codice restituisce uno spazio di ricerca grande quanto lo spazio di ricerca richiesto per la forza bruta, lo schema è efficace al 100%.
Esempio
Per spiegare questo, usiamo un esempio banale. Supponiamo che ci sia un sito Web molto povero che richiede una password alfabetica di quattro cifre.
Lo spazio per la ricerca di forza bruta è 26 ^ 4 = 456976.
Nel frattempo, ci sono solo circa 4000 parole di quattro lettere, quindi lo spazio di ricerca degli attacchi del dizionario predefinito è solo 4000. Molto male.
Ora diciamo che usi una trasformazione molto semplice: prendi ogni lettera e aggiungine una, così A diventa B, B diventa C, ecc. Per cercare il dizionario e questa semplice trasformazione, l'attaccante deve ora cercare uno spazio dei nomi contenente 8.000 voci. Questo è un po 'meglio.
Ora, l'attaccante non saprà che ne stai aggiungendo uno. Potrebbe sospettarlo. Ma potrebbe anche aver bisogno di controllare +2, -1 e -2. Quelle sono quattro trasformazioni per un totale di 16.000 sequenze. Ancora povero, ma meglio di 4.000.
Ora, probabilmente ci sono molte possibili trasformazioni che potresti fare nella tua testa. Sposta le tue mani una chiave a destra e tocca il tipo. Una chiave a sinistra. Digita la parola all'indietro. Scambiare vocali e consonanti Ecc, ecc. Se ci sono 100 trasformazioni, ora l'attaccante deve cercare 400.000 possibili sequenze. Ehi, questo sembra abbastanza buono.
A un certo punto l'attaccante ha intenzione di rinunciare alla ricerca di nuove trasformazioni perché porterà a uno spazio di ricerca superiore a quello richiesto per la forza bruta, 456976. Nel momento in cui ciò accade, il tuo schema è efficace al 100%.
Se vuoi davvero renderlo sicuro
Se vuoi davvero renderlo sicuro, presenta un segreto. Ad esempio, memorizzare una poesia, quindi mappare ogni lettera dell'alfabeto in una riga in quella poesia e sostituire la prima lettera della riga per ogni lettera. Se l'attaccante non conosce la poesia, avrà un tempo incredibile a scrivere un programma per indovinarlo. A meno che non legga la tua stessa letteratura, forse non lo capirà mai. Ora forse un hacker intelligente là fuori introdurrà un database di poesia nel suo algoritmo di ricerca, ma alla fine finirà per essere più costoso dal punto di vista computazionale di un semplice attacco di forza bruta.
Conclusione
Se il dizionario viene attaccato più costoso di un attacco di forza bruta, l'hacker utilizzerà un attacco di forza bruta. Questo è lo scenario migliore, dal momento che non c'è modo per un utente finale di mitigare la forza bruta attraverso la scelta della password.