La crittografia, letteralmente “scrittura segreta”, è l’arte, oggi la scienza, di nascondere i messaggi.
Nasce con lo scopo primario di garantire la confidenzialità dei dati, ma si è successivamente estesa anche ad altri scopi, come ad esempio quello di garantire l’integrità dei dati.
Essa permette di:
L’idea è quella di usare delle chiavi di cifratura per rendere incomprensibile (a chi non conosce tali chiavi) una certa informazione.
Dipendentemente dal fatto che le chiavi siano o meno la stessa chiave, si distinguono i due principali paradigmi in crittografia per cifrare una comunicazione:
È, storicamente, la prima forma di crittografia, nata per comunicare:
L’antico “Cifrario di Cesare”, che faceva corrispondere ogni lettera a quella di tre posizioni successive, è un esempio di crittografia a chiave segreta, in cui la chiave è proprio il “valore di mappatura” pari a tre.
Nata agli albori degli anni 70, è tutt’oggi un tema di ricerca molto attuale:
É usata principalmente per scambiare chiavi per sessioni private di comunicazione e per realizzare firme digitali.
Gli algoritmi asimmetrici utilizzano due chiavi interdipendenti, una per crittografare i dati, e l’altra per decodificarli. Se una chiave è utilizzata per l’operazione di cifratura, l’altra deve essere impiegata per la decifratura e viceversa. Oltre che per garantire la confidenzialità dei messaggi, le tecniche di cifratura a chiave pubblica possono essere utilizzate per realizzare la firma digitale. In tal caso il mittente utilizzerà la sua chiave privata per cifrare l’informazione, legando così la sua identità all’informazione trasmessa.
Tra gli algoritmi a chiave simmetrica più diffusi in commercio troviamo l’AES (Advanced Encryption Standard), standard pubblico a partire dal 2001. Il suo principale impiego risiede nei protocolli di scambio sicuro (es. FTPS, HTTPS) per il flusso dei dati con le pagine web.Tra gli algoritmi a chiave asimmetrica, il più diffuso è l’RSA (Rivest, Shamir, Adleman), che prende il nome dai suoi ideatori. Questo viene spesso utilizzato per crittografare una chiave simmetrica da inviare a una seconda parte che l’ha richiesta. Riferendosi sempre al protocollo HTTPS, ad esempio, lo condivisione della chiave di sessione privata (AES) avviene proprio tramite l’algoritmo RSA.