Password

Le password , custodi dei nostri dati confidenziali e dei nostri account online.
In che modo funzionano? Come sceglierne una?
In questo articolo spiegherò tutto brevemente.
La password, concretamente , anche se noi la vediamo come un insieme di caratteri, è in realtà uno stream di byte, ovvero una sequenza di 1 e di 0, come qualsiasi cosa che ha a che fare con l’informazione elettronica.
I tipi di password si dividono principalmente in due, quelle che servono per garantire l’accesso esclusivo a un sistema( e-mail, account di banking online, o anche nel computer di casa) e quelle che servono per proteggere i dati, in qualunque supporto siano essi memorizzati.
Vediamo Il primo tipo
Se la password serve a garantire l’accesso esclusivo ad un servizio remoto, il funzionamento della password non è molto complicato. Quando la persona che vuole entrare nell’account invia la sua password questa viene confrontata con la password che sta sul server del servizio, se corrisponde il server concede l’accesso all’utente che ha inviato la password.
In questo caso il confronto avviene sul server, quindi l’utente generico non riceverà mai la password, per questo motivo la password può essere memorizzata sul server senza nessuna codifica. Un tocco di sicurezza in più consiste nel fare passare le comunicazioni di autenticazione tra utente e servizio in un canale sicuro,(canali criptati , tipo HTTPS su SSL).
Se invece la password serve per evitare l’accesso a un sistema non remoto, come ad esempio la password che viene richiesta all’accensione del computer di casa, le cose si complicano.
Ogni volta che il computer viene acceso, e l’utente inserisce una password, che poi dovrà essere confrontata dal computer, con un altra che è stata inserita prima , come password giusta per l’accesso.
Come memorizzare questa password? Dove?
Non è possibile memorizzarla nello stesso computer, perché chiunque voglia usare il computer potrebbe leggerla dal disco.
Il problema viene risolto utilizzando delle cose che si chiamano “funzioni Hash one-way” , in termini matematici sono delle funzioni non invertibili. In parole povere se io uso una di queste funzioni su di una valore, il risultato è un altro valore , ma avendo a disposizione il secondo valore non posso arrivare a sapere qual’è il primo.
Tutte le volta che un utente crea un account su un computer e inserisce la sua password, questa viene lavorata con la funzione one-way e il risultato viene memorizzato. Nessuno può arrivare alla password leggendo questo valore memorizzato.
Ogni volta che un utente vuole accedere al suo account la password che inserisce viene a sua volta lavorata con la funzione ,e il risultato viene confrontato con quello memorizzato sulla macchina. Se i 2 sono uguali l’utente ottiene l’accesso, altrimenti no.

Del secondo tipo fanno parte le password che servono per non permettere a chiunque di accedere a dati segreti.
La cosa più semplice per fare questo è codificare i dati in modo non comprensibile, usando sistemi di codifica tipo il cifrario di Cesare o quello di Vigenère, ma al giorno d’oggi con le moderne tecnologie è possibile decodificare qualsiasi messaggio codificato con i cifrari in breve tempo.
Ci vengono in aiuto i sistemi di cifratura a blocchi in chiave simmetrica. A blocchi perché i dati vengono prima divisi in blocchi e ogni blocco viene cifrato a se stante, chiave simmetrica perché la chiave che serve per cifrare è uguale a quella che serve per decifrare.
I più famosi di questi sono AES, DES e il triple-DES.
Con questi sistemi, solamente conoscendo la parola chiave è possibile risalire ai dati in chiaro. Solamente con sistemi che spiegherò nelle prossime righe è possibile (aspettando qualche anno 🙂 ) decodificare dei dati cifrati.

COME SCEGLIERE LA PROPRIA PASSWORD.
Quando scegliamo la nostra password per qualsiasi cosa, dobbiamo tenere conto che un computer è velocissimo nelle applicazioni meccaniche e ripetitive. Provare tutte le parole esistenti come password è un applicazione ripetitiva!!
Questo approccio che usano gli hacker per trovare una password è denominato “Brute-Force” e consiste nel provare tutte le possibili combinazioni di caratteri.
Un piccolo accenno teorico: il problema di trovare una password è un problema che si definisce “non polinomiale”, ovvero è un problema la cui complessità computazionale non è esprimibile con un polinomio. Se devo provare tutte le possibili sequenze di 5 caratteri dell’alfabeto italiano dovrò fare 21 elevato alla 5 tentativi. Più aumenta il numero di caratteri e più grande diventa l’esponente.
Alla luce di ciò, se vogliamo complicare il lavoro allo “scassinatore” dobbiamo scegliere parole più lunghe possibile , e dobbiamo includere in essa numeri e simboli.
Dato che provare solamente le parole di senso compiuto richiede meno tempo di provare tutte le combinazioni possibili, e lo scassinatore sa che tutte le persone sono portate a utilizzare come password parole che si ricordano bene, proverà volentieri tutte le parole di senso compiuto.
per questo dobbiamo evitare di usare parole italiane, la cosa migliore sarebbe utilizzare simboli lettere e numeri alla rinfusa, tipo “ci/!rh%3m8” ma in questo modo si rischia di scordare la parola. Un altro buon metodo per scegliere una parola è mescolare parole di senso compiuto con simboli e numeri ad esempio : “tavolo7barca#” , “pino%pigreco1” che sono facilmente memorizzabili.
Teniamo conto che utilizzando le lettere , i numeri e i simboli della codifica ASCII abbiamo a disposizione 128 scelte per ogni carattere della nostra password, quindi per ogni carattere che aggiungiamo alla nostra password moltiplichiamo per 128 il tempo necessario per scoprirla. Usando 12 caratteri lo scassinatore dovrebbe fare (128 elevato alla 12) prove per trovare la password, che sono 19342813113834066795298816. Ipotizzando che riesca a fare un milione di tentativi al secondo, gli occorrerebbero piu di 613356580 anni per trovare la password.