TECHTARGET

Crittografia, il modo più sicuro per proteggere le applicazioni Web

L’encryption è il processo con cui si modificano i messaggi per renderli incomprensibili a chi non è in possesso della chiave di decrittazione. Esaminiamo i due metodi di crittografia più usati, simmetrica e asimmetrica, prendendo spunti dal libro Safety of Web Applications di Eric Quinton, edito da Syngress

Pubblicato il 27 Ott 2017

Crittografia simmetrica e asimmetrica

Crittografia simmetrica e asimmetrica, si tratta dei due sistemi principali di encryption ossia, più nello specifico, quello simmetrico, insieme alla sua variante hashing, e quello asimmetrico, basato su certificati digitali.

Figura 1 – Esempio di crittografia simmetrica Fonte: TechTarget

Come funziona la crittografia simmetrica

La symmetric encryption (o crittografia con chiave privata) utilizza la stessa chiave sia per crittografare che per decrittografare un messaggio (figura 1). Il messaggio viene modificato da un algoritmo che applica una cifratura (cipher) legata a una chiave (o password, o passphrase). Solo chi conosce la cifratura o la chiave può decrittare il messaggio; nella crittografia simmetrica, la chiave è conosciuta sia dal mittente sia dal destinatario. Utilizzando la stessa tecnica di cifratura e la stessa chiave, un messaggio può essere reso nuovamente comprensibile generando, con la stessa chiave, la cifratura inversa a quella con cui è stato crittografato.

Esistono due varianti di questo metodo:

  • uno è quello denominato cifratura a blocchi (block cipher), molto diffuso sui computer, in cui il messaggio viene suddiviso in tantissime parti di uguali dimensioni (tra 64 e 256 bit, a seconda dell’algoritmo);
  • l’altro, noto come stream cipher, crittografa il messaggio un bit alla volta. Questa tecnica è utilizzata prevalentemente nei sistemi di trasmissione radio, come le reti cellulari Gsm, i network Bluetooth e così via. Anche la chiave ha una dimensione, che di solito varia tra i 56 e il 256 bit.

L’efficacia della cifratura simmetrica dipende da molti fattori. Più lunga è la chiave, più sicura è l’encryption. Basti pensare che 2 (i possibili bit: 1 o 0) elevato alla 256esima equivale a circa 1,2 alla 77esima. Tante sono le possibili chiavi che si possono generare con la symmetric encryption a 256 bit. Nessun computer oggi è in grado di generare e di mettere alla prova (tecnica chiamata “forza bruta”) in tempi realistici un numero di chiavi così elevato. Un altro fattore di irrobustimento è l’aumento della grandezza di ciascun blocco; un altro ancora è il numero di iterazioni (volte in cui viene svolta una stessa operazione). Conta anche la qualità dell’algoritmo: i più potenti permettono di generare chiavi completamente in modo casuale (random).

Figura 2 – Verifica delle password utilizzando hash Fonte: TechTarget

L’importanza dell’hashing e del salting

Come abbiamo detto, nella symmetric encryption la chiave privata con cui sono effettuate sia la cifratura sia la sua operazione inversa (decifratura) deve essere nota sia al mittente sia al destinatario del messaggio. Nel computing esiste una tecnica, chiamata hashing (figura 2), che consiste nel generare, a partire da un file o da un testo, una stringa di caratteri (hash) di lunghezza prefissata e che è unica per ciascun file o contenuto. L’hashing è utile per poter effettuare confronti fra file che dovrebbero essere identici, ma anche per controllare l’uguaglianza fra una password digitata da un utente e quella che, per quello stesso utente, è memorizzata in un database password. Un problema è che non è impossibile che due o più utenti creino una chiave di dimensioni non elevate, utilizzando gli stessi caratteri causando così la generazione di hash identici. In questo caso, il database password potrebbe essere indotto a considerare valida la password inserita da una persona diversa da quella che dovrebbe essere. Una soluzione a questo problema si chiama salting (letteralmente: salare), e consiste nell’aggiungere, al momento della prima generazione dell’hash della password, qualcosa in più rispetto a quanto ha scelto l’utente. Un esempio è aggiungere, fra i dati forniti all’algoritmo di hashing, anche l’ID dell’user.

Come funziona la crittografia asimmetrica

Esistono anche situazioni in cui è necessario rendere inintelleggibile qualcosa a qualcuno che non sia il destinatario autorizzato, e che quest’ultimo non sia un’entità con cui si vuole condividere una password privata. È un evento tipico nelle comunicazioni email. Ecco quindi diventare utile la crittografia simmetrica, che consente l’utilizzo di due password differenti per l’encryption del messaggio da parte del mittente e per la decrittazione da parte del destinatario.

Figura 3 – Esempio di crittografia simmetrica Fonte: TechTarget

La crittografia asimmetrica consente due attività che utilizzando meccanismi differenti.

  • La prima attività, più banale, è quella che supporta l’invio di un messaggio crittografato da un mittente a un destinatario (entrambi, ovviamente, devono utilizzare un software basato sullo stesso standard di crittografia asimmetrica, ad esempio OpenPgp) (figura 3). Prima di tutto, gli utenti che desiderano sfruttare la crittografia asimmetrica devono generare, utilizzando la propria password privata, una chiave pubblica (un blocco di caratteri molto lungo) che può essere resa nota a chiunque. È per questa ragione che gli ambienti in cui più user utilizzano la asymmetric encryption sono denominati Public Key Infrastructure (Pki), e questa infrastruttura può identificarsi con l’intero web. Il software di encryption del mittente che desidera crittografare un messaggio per un destinatario, utilizza la chiave pubblica di quest’ultimo per eseguire una cifratura che potrà essere eliminata (con un’operazione inversa) solo dal software del destinatario previo inserimento della propria password privata.
  • Per la seconda, la tecnica della crittografia simmetrica, o meglio dell’hashing, ritorna nell’utilizzo della crittografia asimmetrica quando qualcuno vuole garantire un altro circa la propria identità, un meccanismo che si configura come una certificazione digitale (figura 4). A questo fine è sufficiente che il mittente, utilizzando la propria private key, generi un hash che costituisce una firma (signature) che il software del destinatario elabora confrontandola con la public key del mittente, già conosciuta o reperita su un repository web di chiavi pubbliche certificato. Se questa elaborazione produce un altro hash identico a quello con cui è stato firmato il messaggio, allora il mittente è affidabile.
Figura 4 – Esempio di crittografia asimmetrica con firma digitale Fonte: TechTarget

Valuta la qualità di questo articolo

La tua opinione è importante per noi!

Articoli correlati

Articolo 1 di 4