A proposito di codici numerici…

Come creare un codice numerico facile da ricordare ma difficile da scoprire?

Sempre più spesso ci viene chiesto di generare, e soprattutto ricordare, dei codici numerici a protezione degli accessi alle pagine web o ai siti di e-commerce. Questi codici verranno usati per controllare, ad esempio, una password dimenticata o più semplicemente una transazione economica o la proprietà stessa del telefono. Per evitare che questo codice ci venga rubato siamo tutti portati a crearlo usando una combinazione di cifre semplice e corta così da poterla ricordare senza scriverla (…siamo furbi noi mica qua qua ra qua!).

Proprio per renderlo facile da ricordare si cade però nel pericolo di renderlo anche estremamente facile da decriptare. Delle combinazioni che vengono usate con maggiore frequenza sono le successioni di cifre del tipo: 1111, 1234, 4321 eccetera. Queste combinazioni sono facilmente memorizzabili ma non garantiscono alcuna sicurezza. Altre combinazioni del tipo: 1397, 4268 … 3971 sembrano più difficili da decriptare ma in realtà sono solo più difficili da ricordare. Mi spiego meglio: un codice numerico può essere composto da una combinazione qualsiasi delle 10 cifre a nostra disposizione (0123456789) posizionate in modo casuale in uno degli spazi successivi che rappresentano la lunghezza del codice.

Uno dei codici usato con più frequenza è quello composto da 4 spazi, lo si usa, ad esempio, per proteggere l’accesso al telefono. Ebbene, sappiate che, qualsiasi combinazione abbiamo in mente di creare potrà essere decriptata in soli 10.000 tentativi. Analizziamo gli elementi in gioco: le cifre a nostra disposizione sono 10 (0123456789), gli spazi che ognuna di esse andrà ad occupare nel nostro codice sono solo 4 quindi il numero di codici ottenibili da questa combinazione sarà di 10 elevato alla quarta potenza, cioè 10.000 e vediamo perché. Se avessimo a disposizione un solo spazio il nostro codice dovrebbe essere generato usando una sola delle 10 cifre, questo è abbastanza semplice da capire, ma se invece avessimo due spazi il nostro codice potrebbe essere creato usando due volte una combinazione casuale delle 10 cifre quindi 10elevato alla seconda potenza, che tradotto in pratica corrisponde a: 10×10 = 100 possibili combinazioni.

Continuando con questo sistema possiamo verificare quante combinazioni sarà in grado di generare un codice composto da 4 spazi: 10x10x10x10 = 10.000 possibilità. Sembrerebbero tante se la successione di tentativi per decriptarlo fosse eseguita “a mano” ma non sono nulla se ad eseguire il tentativo fosse un programma creato appositamente, al massimo, al computer sul quale il programma andrebbe eseguito,  servirebbero centesimi di secondo. Troppo poco per considerare il nostro codice di 4 cifre  “sicuro” :-(

Per rendere la vita più difficile ai malfattori bisognerebbe per forza creare dei codici composti da un numero maggiore di cifre. Dal mio punto di vista il minimo dovrebbe essere di 10 cifre per 10 spazi così da portare i tentativi di decriptaggio ad un valore di 10 elevato alla decima potenza che corrisponde ad un numero di tentativi pari a 10.000.000.000 (dieci miliardi).

iphone-passcode2Ma un codice di 10 cifre non è così semplice da ricordare.

Una combinazione come “0457110364” è piuttosto facile da ricordare ma non rappresenta certo un codice sicuro, è il nostro numero di telefono. Se il nostro malintenzionato conosce le nostre abitudini potrebbe arrivare velocemente a decifrarlo anche senza l’ausilio di un decriptatore computerizzato, potrebbe comunque essere un modo semplice per iniziare a creare dei codici complessi ma facilmente memorizzabili, nessuno, a parte noi, sa che quello che stiamo componendo è il nostro numero di telefono.

Un’altro sistema semplice, a mio parere, è quello di considerare il tastierino del telefono come una matrice di punti da unire per creare una lettera o un simbolo grafico. Se osservate l’immagine allegata noterete che è possibile disegnare delle lettere semplicemente facendo scorrere un dito sul tastierino. Il codice “5809632147” ad esempio sembra un numero casuale ma è ottenuto facendo scorrere il dito verso il basso partendo dal centro (il numero 5) e percorrendo in senso anti-orario tutti i numeri rimanenti.

Quello che si ottiene non è certo un numero di telefono, e non è quindi associabile alle nostre abitudini, ma è anche estremamente difficile da ricordare :-( Per semplificare la vita al nostro cervello basterà memorizzare il percorso. Se infatti estrapoliamo dall’immagine il simbolo grafico ottenuto dall’unione in successione delle cifre otterremo questo simbolo:

Indubbiamente più facile da ricordare per noi ma pur sempre un codice di 10 cifre difficilmente decriptabile. Ricordiamo che il numero di tentativi da eseguire per decriptare un codice di questo tipo è pari a cento miliardi ed anche un computer in grado di eseguire 2,5 GHz (miliardi di operazioni al secondo) avrà il suo bel da fare per decodificarlo (4 secondi circa per la precisione)  :-( …sigh!

Ora provate anche voi e vedrete che i simboli grafici che si possono ottenere con questo metodo, ed i relativi codici, sono infiniti ma tutti estremamente facili da ricordare e comunque, anche se disegnerete il simbolo ottenuto sul retro della vostra carta di credito, nessuno penserà che si tratti del percorso da fare sul tastierino numerico per ottenere il codice. Ops, forse questo non dovevo dirlo… ;-)

iphone-passcode3Ecco per voi alcuni esempi di possibili percorsi ed il loro codice corrispondente.

combinazione-1 combinazione-2

combinazione-3

combinazione-4

combinazione-5

combinazione-6 combinazione-7 combinazione-8

Come potete vedere le combinazioni possibili sono quasi infinite (10 elevato alla decima potenza per l’esattezza) ma c’è un piccolo particolare che bisogna tenere presente quando si crea il simbolo/codice: non tutte le tastiere sono uguali e nemmeno tutti i tastierini numerici. Dal mio punto di vista, per risolvere in modo brillante anche questo problema, vi conviene creare il simbolo/codice sul tastierino del vostro cellulare ed usare quel tastierino come base per ricostruire il codice nel caso vi trovaste di fronte un tastierino con un layout diverso.  Spero di esservi stato utile e di avervi fornito un sistema semplice ma abbastanza complesso per generare codici numerici, prossimamente ci occuperemo di password formate da stringhe di caratteri alfanumerici di lunghezza variabile, molto più difficili da decriptare ma, se vi abituerete a crearle con il metodo che vi insegnerò, abbastanza facili da ricordare ;-)

Annunci