Quando parliamo di forza delle password stiamo parlando della resistenza di una password agli attacchi "brute force" e "dictionary".
Un attacco di forza bruta è semplice. L'utente malintenzionato tenta ogni possibile password una dopo l'altra finché non trova quella giusta. Ci sono due difese contro questo attacco.
-
Innanzitutto, rendi difficile (o impossibile) per l'attaccante verificare se una password sia corretta o meno. Questo è l'approccio migliore ma non è sempre possibile.
-
In secondo luogo, si fa in modo che l'attacco di forza bruta richieda molto, molto tempo, di solito assicurandosi che ci sia un numero molto, molto grande di password da provare. È in questa seconda difesa che la forza della password gioca un ruolo; puoi scegliere una password dove ci sono tante password possibili per verificare che un attacco di forza bruta richieda 100 anni per funzionare. Questa è chiamata una password "alta entropia". Lo fai scegliendo una password lunga e complessa. Complesso significa che ha molti caratteri diversi: lettere maiuscole e minuscole, numeri e segni di punteggiatura.
Anche un attacco al dizionario è semplice. Nel mondo reale le persone devono ricordare le password, quindi non scelgono quasi mai una password veramente casuale. Invece scelgono qualcosa che ha un significato - una parola, o il compleanno del loro bambino, o il nome del loro cane, qualcosa del genere. Quindi, prima di iniziare la forza bruta, l'attaccante impiega qualche secondo per provare tutte le parole, tutti i nomi dei cani, tutti i compleanni e tutti i numeri di telefono. (E con i computer moderni ci vogliono solo pochi secondi per provare ogni parola.)
Le persone cercano di evitare gli attacchi del dizionario ma mantengono memorabili le password apportando semplici modifiche. Questo è talvolta chiamato "munging". Ad esempio, qualcuno potrebbe provare "leet speak" e cambiare "e" in "3". Ovviamente, se questo diventa popolare, l'hacker prenderà semplicemente il loro dizionario, lo trasformerà in leet e proverai tutti quelli.
Quindi ora possiamo provare a rispondere alla tua domanda, che è fondamentalmente "quale di questi approcci mungenti rende la password più strong?"
Contro un attacco di pura forza bruta, solo due cose contano. Lunghezza e complessità. Inserisci maiuscole e minuscole, numeri e punteggiatura nella tua password, quindi esegui tutto il tempo che puoi gestire.
Contro un attacco di dizionario, sei vulnerabile se l'utente malintenzionato pensa di usare un dizionario con la tua password. Quindi, se indovinano il tuo trucco, infrangeranno la tua password. Se non lo fanno, devono tornare alla forza bruta.
Quindi tutto si riduce a questo: un attaccante potrebbe indovinare il tuo trucco e provarlo? E questo ci porta alla risposta standard a ogni domanda di sicurezza: dipende dall'attaccante.
Se l'attaccante vuole specificamente il tuo account e ha le risorse allora sì, potrebbero benissimo pensare di provare uno dei trucchi che hai menzionato. Non sono così ovvi come Leet, o aggiungendo due cifre alla fine di una parola, ma non sono nemmeno estremamente complicati, e naturalmente sono stati suggeriti nello scambio di security stack ora!
D'altra parte, se un utente malintenzionato vuole solo compromettere qualsiasi account su un server, probabilmente troverà qualcuno con una password peggiore della tua prima. (Nella perdita di password di MySpace del 2006, il 4% delle password erano parole di dizionario dirette, e sarebbero state interrotte in mezzo secondo.) In tal caso, sceglierei l'interleaving di un numero oltre a ripetere un'altra parola, perché spinge l'entropia verso l'alto un po 'di più, ma non c'è molto in esso.
Per quanto mi riguarda, mi piacciono le passphrase, dove scegli quattro o cinque parole completamente casuali e le stringa insieme, con un numero inserito per spingere l'entropia verso l'alto. Gli attacchi di dizionario su quelli prendono quasi quanto gli attacchi di forza bruta, ma sono ancora facili da ricordare.
( Tutti insieme ora e senza sbirciare : CorrectHorseBatteryStaple !)