Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


TESI DI MATURITA': Criptazione delle Password nei database (MySQL) - indirizzo informatico tecnologico, Tesine di Maturità di Informatica

Descritti tutti gli algoritmi principali per la codifica e memorizzazione delle password nei database MySQL. 27/30 all'orale, tesina MOLTO APPREZZATA DAI PROFESSORI, SOPRATTUTTO ESTERNI.

Tipologia: Tesine di Maturità

2016/2017

In vendita dal 07/06/2017

AleTurco
AleTurco 🇮🇹

4.2

(5)

4 documenti

1 / 5

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
GESTIONE DELLE PASSWORD NEI DATABASE
Per la corretta gestione delle utenze, sarà necessario salvare le relative password, in
una tabella del nostro database.
ID
utente
password
Dato che l’informazione più importante e sensibile che andiamo a salvare in un
database è proprio la password è consigliabile non salvarla in chiaro, ma è
opportuno memorizzarla tramite delle funzioni, messe a disposizione da MySQL, che
la rendono "illeggibile".
Le funzioni che ci mette a disposizione MySQL sono tutte funzioni hash.
Una funzione hash trasforma un testo normale di lunghezza arbitraria in una stringa,
solitamente, di 128 bit, che sintetizza il messaggio in una stringa unica che gode
delle seguenti proprietà:
- è impossibile risalire alla stringa iniziale partendo da un dato
valore di hash;
- è praticamente improbabile che due messaggi diversi abbiamo lo stesso
hash;
La versione criptata della stringa inserita si chiama chiave hash (o semplicemente
hash).
Questi metodi sono anche detti metodi one-way hash, proprio perché dopo la
criptazione non è più possibile risalire alla stringa originale.
Prendendo d’esempio il database MySQL, usato nel nostro progetto, vediamo quali
sono le funzioni principali che mi permettono di criptare una stringa al momento
della memorizzazione:
PASSWORD;
MD5;
SHA-1;
SHA-2 (utilizzabile dalla versione 5.5.5);
pf3
pf4
pf5

Anteprima parziale del testo

Scarica TESI DI MATURITA': Criptazione delle Password nei database (MySQL) - indirizzo informatico tecnologico e più Tesine di Maturità in PDF di Informatica solo su Docsity!

GESTIONE DELLE PASSWORD NEI DATABASE

Per la corretta gestione delle utenze, sarà necessario salvare le relative password, in una tabella del nostro database.

ID utente password

Dato che l’informazione più importante e sensibile che andiamo a salvare in un database è proprio la password è consigliabile non salvarla in chiaro, ma è opportuno memorizzarla tramite delle funzioni, messe a disposizione da MySQL, che la rendono "illeggibile".

Le funzioni che ci mette a disposizione MySQL sono tutte funzioni hash. Una funzione hash trasforma un testo normale di lunghezza arbitraria in una stringa, solitamente, di 128 bit, che sintetizza il messaggio in una stringa unica che gode delle seguenti proprietà:

  • è impossibile risalire alla stringa iniziale partendo da un dato valore di hash;
  • è praticamente improbabile che due messaggi diversi abbiamo lo stesso hash; La versione criptata della stringa inserita si chiama chiave hash (o semplicemente hash ). Questi metodi sono anche detti metodi one-way hash, proprio perché dopo la criptazione non è più possibile risalire alla stringa originale.

Prendendo d’esempio il database MySQL, usato nel nostro progetto, vediamo quali sono le funzioni principali che mi permettono di criptare una stringa al momento della memorizzazione:  PASSWORD;  MD5;  SHA-1;  SHA-2 (utilizzabile dalla versione 5.5.5);

MD

L'MD5 (Message Digest 5) è un algoritmo di sintesi molto utilizzato per la sicurezza nei database ed è un'evoluzione dei suoi predecessori MD2 e soprattutto dell'MD (del quale ha mantenuto la struttura ma ne ha migliorato la sicurezza). La stringa risultante dopo tale hashing è una stringa fissa di 32 caratteri, ovvero una stringa di 128 bit, chiamata molto semplicemente MD5 Hash.

Algoritmi SHA

Gli algoritmi SHA (Secure Hash Algoritm) nascono come modifica dell'ormai passato MD4 e sono suddivisi in quattro categorie:

 SHA-0: ormai obsoleto e non più utilizzato;  SHA-1: che è stato violato;  SHA-2: in uso;  SHA-3: annunciato nel 2012;

Per quanto riguarda SHA-0, ebbe vita breve, poiché venne ritirato poco dopo la sua pubblicazione per essere sostituito da SHA-1. Entrambi producono un valore hash a 160 bit. Un gruppo di crittoanalisti cinesi riuscirono a violare SHA-1 nel 2005. Dato questa violazione nacque la versione SHA-2 dello standard. SHA-2 è suddiviso in varie famiglie a seconda della lunghezza in bit del codice hash, che possono essere:

 224 bit;  256 bit;  384 bit;  512 bit;

Nel 2007 è stato indetto un concorso per la realizzazione di un nuovo algoritmo SHA-3. Il vincitore fu indetto nel 2012 e si tratta di un team di cui faceva parte anche un italiano: Guido Bertoni. L'algoritmo SHA-3 andrà gradualmente a sostituire lo SHA-2 anche se non è ancora stato violato.

AUTENTICAZIONE MD5, PASSWORD, SHA

Applicando questo metodo, e sapendo che dopo averla memorizzata nel DB non posso risalire alla stringa iniziale, come è possibile che al momento della login io scrivo la stringa iniziale e il confronto vada a buon fine? La risposta è semplice, poiché al momento dell’inserimento della password durante la login, la stringa che inserisco viene criptata in MD5 (la funzione deve essere sempre la stessa) e il confronto è effettuato tra le due stringhe criptate (quella che ho appena inserito e quella presente nel DB).

SALT

Ultimamente si stanno creando dei “dizionari”, ovvero gli hacker stanno memorizzando gli hash di molte parole conosciute, in modo da confrontarle con quelle presenti nel database e trovarne i corrispondenti. Per questo motivo la soluzione a tale problema è l’utilizzo del SALT (letteralmente aggiungere sale). Questo metodo consiste nell’aggiunta di un altro pezzo di stringa alla nostra stringa iniziale, secondo un criterio da noi scelto (può trattarsi dell’ora o di un dato generato casualmente). Ogni bit di salt aggiunto alla stringa raddoppia la quantità di memorizzazione e calcolo necessari per un attacco.

Prendiamo come esempio la password 'test' e come salt i caratteri 'xy':

  • aggiungo 'xy' a 'test', quindi si avrà 'testxy';
  • si codifica 'testxy', quindi si avrà una sequenza di caratteri del tipo 'aaaaaa';
  • la stringa finale sarà quella codificata in precedenza con l'aggiunta dei caratteri di salt cosi come sono: 'aaaaaaxy'

AUTENTICAZIONE SALT

Quindi per confrontare la password che inserisco al momento della login con quella contenuta nel DB si avranno tali procedimenti:

  • prendere gli ultimi due caratteri della password nel DB e aggiungerli alla stringa inserita per la login;
  • codificare la stringa;
  • aggiungere in fondo i due caratteri di salt;
  • effettuare il confronto;

GESTIONE DEI TENTATIVI

Per gestione dei tentativi si intende quante volte un'utente può tentare di inserire una password. Si pensi all'utenza della nostra mail, per accedervi dobbiamo inserire la mail e la password. Qualora si inserisse una password errata, il sistema ci permette di riprovare. Ovviamente, per motivi di sicurezza i tentativi devono essere limitati. Come faccio? Costruisco una tabella all'interno del mio database in cui salvo in ogni riga ogni tentativo effettuato dall'utente. Un esempio potrebbe essere:

ID IDUtente dataTime 01 01 ...... 02 01 ......... 03 01 ............

Al raggiungimento dei tre tentativi, ovvero quando IDUtente viene ripetuto per tre volte, il sistema negerà la possibilità di riprovare ad inserire la password.