Differenza fra cifratura simmetrica e asimmetrica
La differenza tra cifratura simmetrica e asimmetrica riguarda due metodi diversi applicati nella codifica e decodifica dei messaggi, particolarmente quelli veicolati attraverso il web, in difesa della sicurezza informatica.
La crittografia è una disciplina della matematica che è ben più antica della sicurezza informatica. Il problema crittografico è molto semplice; il messaggio di partenza è sempre un testo in chiaro steso in un linguaggio conosciuto. Viene passato attraverso un algoritmo, che ne fa una codifica crittografica, e ciò che ne esce è quello che viene chiamato messaggio criptato, o cifrato, da decifrare attraverso una determinata variabile crittografica (detta chiave), e questa operazione di decifratura viene chiamata decodifica.
Il messaggio transita da un trasmettitore a un ricevitore attraverso un mezzo, in modo da non farsi intercettare da colui che è definito come osservatore, qualcuno o qualcosa che può immettersi nel transito del messaggio criptato dal mittente al destinatario.
Indice |
[modifica] Problema dello scambio messaggi
Quattro sono i tipi di minacce che l'osservatore può portare allo scambio dei messaggi privati in internet: l' intercettazione, la modifica, l'invio di messaggio sotto falso nome, il ripudio della potestà del messaggio.
- L'intercettazione è lettura del contenuto, vuoi perché in chiaro o perché cifrato con un algoritmo noto. L'intercettazione può essere anche legale, quando un magistrato decritta i messaggi veicolati, per esempio, tra organizzazioni che si sospettano essere criminali;
- la modifica riguarda non solo la semplice intercettazione del contenuto del messaggio, ma anche la modifica, appunto. Può essere di tipo criminoso ma anche legale, per esempio quando si modifica un virus informatico per renderlo inoffensivo;
- nell'invio di messaggio sotto falso nome non solo si intercetta e si modifica il messaggio, ma ne viene creato uno il cui mittente si fa credere un altro, prendendone la potestà e le credenziali;
- si parla di ripudiare la potestà di un messaggio (il proverbiale non l'ho scritto io! ) quando si nega di averne spedito uno, pur avendolo fatto. Questo caso è il più facile da risolvere, visto che il mittente lascia sempre una sorta di orma elettronica quando spedisce un messaggio.
[modifica] Problematiche e loro soluzione
Le problematiche sono dunque quattro:
- la confidenzialità è legata alla riservatezza (privacy) del mittente: avere una ragionevole certezza che, durante la trasmissione del messaggio, non c'è stato nessun osservatore dotato di strumenti in grado di leggerlo;
- l' integrità è la ragionevole certezza che il messaggio non sia stato alterato da nessuno, cioè modificato nella sostanza, nell'integrità del codice;
- l' autenticazione è la garanzia di sapere che un messaggio venga davvero da un mittente A, e non da qualche altro che si è spacciato per A;
- il non ripudio riguarda l'essere certi che il mittente del messaggio non possa negare di averlo mandato, se io so che quando il mittente manda un messaggio lascia un'orma.
Se queste sono le problematiche, la loro soluzione sta nella crittografia, strumento fondamentale per la realizzazione dei meccanismi di sicurezza informatica.
Mc = Fcod (K, Morig.)
Morig → Fcod → Mc
Cambiando K, la chiave di decodifica, il codice segreto che qualcuno o qualcosa deve avere deciso, cambio cifratura.
Se è vero questo, devo anche avere una funzione di decodifica, che mi riproduca il messaggio originale.
Morig = Fdec (K, Mc)
La rete di computer deve poter fare questo.
[modifica] Algoritmi e chiavi
Per ogni determinato tipo di algoritmo di decodifica esisteranno sempre delle chiavi di cifratura.
Se non si conosce la chiave non si può decodificare il documento o il messaggio. Tutto il sistema della crittografia è basato sulla chiave.
Lo scopo del criptoanalista (il "nemico" da affrontare) è capire il contenuto della chiave, poiché si fa prima a carpire la chiave segreta che a decodificare il messaggio, in relazione al tempo utile.
Esistono due grandi famiglie di codici crittografici: quelli a crittografia simmetrica e quelli a crittografia asimmetrica.
[modifica] La crittografia simmetrica
La crittografia simmetrica utilizza algoritmi di decodifica a chiave privata (DES, IDEA, 3DES, RC2 tra i più diffusi). Si tratta di algoritmi in cui la funzione di codifica e quella di decodifica usano la stessa chiave privata, o chiavi private diverse ma in diretta relazione tra loro (derivazione).
[modifica] Robustezza degli algoritmi nella crittografia simmetrica
La robustezza degli algoritmi simmetrici è legata alla lunghezza della chiave. Tanto è più lungo il testo della chiave segreta, tanto è più difficile decrittare il messaggio in tempo utile. 40 bit è una chiave debole (4 caratteri), 128 bit (13 caratteri) è una chiave forte poiché solo in ambito militare hanno ideato un sistema in grado di decrittare tale codice in tempi relativamente limitati. Il codice a 40 bit è adottato dagli anni sessanta in poi, quello da 128 bit dagli anni novanta in poi.
[modifica] Problema logistico di distribuzione delle chiavi a più utenti
Il trasmittente (mittente) e il ricevente (destinatario) hanno l'obbligo di conoscere e adoperare la stessa chiave mantenendola rigorosamente segreta e utilizzando un canale di comunicazione sicuro.
Il problema, in questo caso, non è legato tanto alla complessità della chiave e dell'algoritmo utilizzato, ma tanto alla funzionalità logistica; c'è, infatti, il problema della distribuzione delle chiavi.
La validità della chiave segreta sta nel fatto che, nel caso di due utenti, deve poter esistere una e una sola chiave segreta. Ma se abbiamo un numero alto di utenti (pensiamo a un servizio bancario via internet) allora dovranno esistere N chiavi segrete, per garantire la comunicazione codificata. Però generare, ad esempio, un milione di chiavi segrete per un milione di utenti comporta, senza dubbio, tempi e spese.
[modifica] La crittografia asimmetrica
Questo problema viene risolto dalla crittografia asimmetrica, in uso dal 1976, nella quale vengono previste due chiavi differenti:
- la chiave di cifratura
- la chiave di decifratura
[modifica] Utilizzo della doppia chiave
La chiave di cifratura può essere resa pubblica, quella di decifratura deve essere tenuta rigorosamente privata dal proprietario.
Sostanzialmente ho due chiavi diverse (che non possono venire desunte l'una dall'altra in mancanza di informazioni segrete) e, per poter tornare al messaggio originale, io devo adoperare entrambe, il cui tipo di algoritmo permette ad esse di scambiarsi di ruolo: tutt'e due, infatti, consentono di codificare e decodificare il messaggio trasformato dall'altra, in questo modo:
- per cifrare il messaggio → chiave pubblica poi privata;
- per decifrare il messaggio → chiave privata poi pubblica.
L'algoritmo, infatti, impedisce la decrittazione se non è riconosciuta anche la chiave privata.
[modifica] Risoluzione dei problemi di distribuzione
Il fatto di avere due chiavi risolve parzialmente i problemi di distribuzione, poiché sia la chiave pubblica che quella privata vengono generate casualmente una volta fatta richiesta dall'utente.
Voglio essere sicuro che il messaggio posso decifrarlo soltanto io, perché solo io ho la chiave privata.
Ciò permette di garantire una modalità di cifratura dal punto di vista logistico, non mi pongo il problema di trovare un sistema di distribuzione delle chiavi. Pensiamo alla crittografia simmetrica precedente l'informatica, come i cosiddetti codici serici, i servizi segreti britannici che cucivano i messaggi criptati dentro i colletti delle camicie degli agenti, o all'interno dei loro cappotti. I servizi di sua maestà britannica si erano inventati tale curioso modo di distribuire - simmetricamente - queste chiavi segrete ai loro agenti.
Si trattava, indubbiamente, di un tipo di distribuzione impegnativa.
Invece con la crittografia asimmetrica non si hanno problemi logistici di distribuzione delle chiavi.
[modifica] Decodifica e autenticazione
Il meccanismo della codifica a doppia chiave ha una sua duplice valenza, oltre a quella di decodifica ha anche quella di autenticazione.
Infatti, se voglio essere sicuro che sia uno e uno solo a mandarmi quel determinato messaggio faccio in modo di dare a lui solo la chiave per la codifica, e di poterla poi codificare solo io una volta che mi è stata inviata, e questo viceversa. È uno scambio di chiavi per una doppia codifica.
Due cose fa il meccanismo della doppia chiave: decodifica il messaggio e autentica il mittente, in modo che io sappia con certezza che è stato quel determinato mittente a mandarmi quella determinato messaggio. Utilizzando due volte la simmetria ottengo il doppio meccanismo di decodifica cifrata e autenticazione del ricevente. Il mittente è, dunque, determinato in modo univoco.
[modifica] Problema di lentezza dell'algoritmo a chiave asimmetrica
Gli algoritmi per la doppia codifica sono onerosi dal punto di vista computazionale.
Il tempo che serve al messaggio per essere codificato e decodificato è relativamente alto. Questo è il principale svantaggio della decodifica asimmetrica.
Questo problema può essere attenuato, o addirittura risolto, utilizzando contemporaneamente un algoritmo a chiave asimmetrica e uno a chiave simmetrica.
In questo caso, non trasmetto il messaggio originale, che può essere anche molto pesante, con un algoritmo a chiave asimmetrica ma scelgo una chiave simmetrica Ks, e la genero a random una volta soltanto.
Quello che genero, prima di mandare il messaggio, lo trasmetto attraverso la codifica asimmetrica, con la chiave che ho appena generato, e il messaggio lo trasmetto attraverso la codifica simmetrica.
[modifica] Crittosistemi ibridi
Esiste un terzo metodo, detto di tipo ibrido, che riassume le caratteristiche dei due tipi di crittografia appena illustrati. Infatti viene usato sia un algoritmo a chiave simmetrica sia uno a chiave asimmetrica, in contemporanea. Ogni utente ha una coppia di chiavi privata e pubblica. Ogni volta che il mittente apre una nuova sessione viene generata una chiave simmetrica di sessione, la quale viene criptata con la chiave pubblica del destinatario, e poi spedita assieme al messaggio. Il destinatario, per prima cosa decripta la chiave di sessione attraverso la sua chiave privata, asimmetrica, ed infine usa la chiave di sessione, simmetrica, per decodificare il messaggio. Il vantaggio di questo sistema è che unisce la comodità nella gestione delle chiavi del sistema asimmetrico alla velocità propria di quello simmetrico.
[modifica] Pro e contro della cifratura simmetrica e di quella asimmetrica
| Cifratura simmetrica | Cifratura asimmetrica | |
|---|---|---|
| Pro | Veloce | - Distribuzione delle chiavi non impegnativa |
| Contro | - Presenza della sola chiave privata, a rischio vulnerabilità; - Difficoltà della distribuzione delle chiavi private in un sistema multiutente. |
Impegnativa dal punto di vista computazionale |
[modifica] Collegamenti esterni
- Sezione del sito IBM dedicata alla crittografia asimmetrica (English)
- Pagina sulla crittografia del Corpo di polizia municipale di Torino