vuoi
o PayPal
tutte le volte che vuoi
B+ B-
una privata, che soltanto lui conosce. Useremo le notazioni e per indicare rispettivamente la chiave
pubblica e quella privata di Bob. Per comunicare con Bob, Alice prima di tutto si procura la chiave pubblica di
(m),
Bob e codifica quindi il suo testo in chiaro utilizzando la chiave pubblica di Bob e un dato (per esempio
K (m).
B+
standardizzato) algoritmo di cifratura, e genera un messaggio criptato che indicheremo con Quando
Bob riceve il messaggio cifrato, utilizza la sua chiave privata e un algoritmo per decodificarlo. In altri termini,
K (K (m)).
B- B+
Bob calcola Alice può utilizzare la chiave pubblica di Bob per inviargli un messaggio segreto
senza che nessuno di loro debba distribuire chiavi segrete. Vedremo tra poco che invertendo la cifratura con
K (K (m)) = K (K (m)) = m.
B- B+ B- B+
chiave pubblica e quella con chiave privata si ottiene lo stesso risultato, cioè,
L’impiego della crittografia a chiave pubblica è quindi concettualmente semplice. Ma vengono subito in mente
due obiezioni. La prima è che l’intruso che intercetta il messaggio potrà venire a conoscenza sia della chiave
pubblica del destinatario sia dell’algoritmo che il mittente ha usato per la codifica. Inoltre, dato che la chiave
di Bob è pubblica, chiunque potrebbe inviargli un messaggio cifrato, magari fingendo di essere Alice. Con la
chiave pubblica questo non si verifica, in quanto chiunque può inviare un messaggio cifrato a Bob utilizzando
la sua chiave che, come dice il nome, è pubblicamente disponibile. Per associare un trasmittente a un
messaggio è quindi necessaria la firma digitale
RSA
Sebbene esistano numerosi algoritmi che soddisfano i requisiti esposti, l’algoritmo RSA è diventato
praticamente sinonimo di crittografia a chiave pubblica. Vediamo innanzitutto come e perché funziona. RSA fa
largo uso delle operazioni aritmetiche in modulo n.
Supponiamo ora che Alice voglia inviare a Bob un messaggio cifrato con RSA. Ricordiamo che qualsiasi
messaggio non è altro che una sequenza di bit che può essere rappresentata in modo univoco da un numero
intero insieme alla sua lunghezza. Per esempio, supponiamo che il messaggio sia la sequenza di bit 1001; tale
messaggio può essere rappresentato dal numero intero in rappresentazione decimale 9. Quindi, cifrare un
messaggio con RSA, è equivalente a cifrare un unico numero intero che lo rappresenta.
Due sono i punti principali su cui si basa RSA:
• la scelta della chiave pubblica e di quella privata;
• gli algoritmi di cifratura e di decifratura.
Per generare la chiave pubblica e quella privata, Bob deve eseguire i seguenti passi:
p q,
1) Scegliere due numeri primi, e tanto più grande sarà il loro valore tanto più difficile risulterà violare R
SA anche se, ovviamente, cifratura e decifratura richiederanno più tempo. G li RSA Laboratories
p q
raccomandano che il prodotto di e sia dell’ordine di 1024 bit;
2) Calcolare n = pq, Calcolare anche z=(p-1)(q-1);
e n, z
3) Scegliere un numero (encryption) minore di diverso da 1 e relativamente prima a (ovvero che non abbia
z);
divisori in comune con d(decryption) ed-1 z.
4) Trovare un numero tale che sia divisibile(cioè non vi sia resto) da In altri termini, dato
e, d, ed z
è scelto in modo tale che mod = 1;
K , (n,e); K ,
B+ B-
5) La chiave pubblica di Bob, è la sequenza dei bit concatenati della coppia quella privata, è la
(n, d).
coppia
Nel nostro esempio, la cifratura di Alice e la decifratura di Bob sono eseguite come segue:
m < n .
• Supponiamo che Alice voglia inviare a Bob una stringa di bit, o un numero Per la codifica, Alice
m m /n. c c = m n.
e e e
calcola e poi il resto intero di Allora, il messaggio cifrato inviato risulta: mod La sequenza
c
di bit corrispondente al testo cifrato viene inviata a Bob.
m = c n,
d
• Per decifrare il messaggio ricevuto, Bob calcola: mod che richiede l ’utilizzo della sua chiave
(n, d).
segreta c -m n.
e
Ricordiamo quindi che nella codifica RSA , si calcola mod
L ’efficacia di RSA consiste nel fatto che non si conoscono algoritmi veloci per la fattorizzazione dei numeri
n
interi. Quindi, anche conoscendo il valore pubblico risulta computazionalmente proibitivo determinare i
p q e,
fattori primi e (con i quali, dato il valore pubblico si può facilmente calcolare la chiave segreta). D’altra
parte, non si sa se esista o no un algoritmo veloce per la fattorizzazione di un numero, ed è in questo senso
che la sicurezza di RSA non è garantita.
Integrità dei messaggi e firma digitale
Nel paragrafo precedente abbiamo visto come la cifratura può essere usata per garantire riservatezza tra due
entità comunicanti. In questo paragrafo rivolgiamo T attenzione all’altro tema egualmente importante che
riguarda l ’uso della crittografia per garantire l ’integrità dei messaggi, tema noto anche come
autenticazione dei messaggi.
Definiamo il problema dell’ integrità dei messaggi usando, ancora una volta, Alice e Bob Supponete che Bob
riceva un messaggio, che può essere cifrato o in chiaro, e che creda che sia stato inviato da Alice. Per
autenticare questo messaggio, Bob deve verificare:
1. che il messaggio sia stato effettivamente originato da Alice;
2. che non sia stato alterato lungo il percorso verso Bob.
Funzioni hash crittografiche m,
Una funzione hash prende un ingresso, e calcola una stringa di lunghezza fissata, detta hash.
Una funzione hash crittografica deve però soddisfare un’ulteriore proprietà:
y H(x) H(y).
deve essere computazionalmente impossibile trovare due messaggi x e diversi tali che =
Vale a dire che, dal punto di vista computazionale, un malintenzionato non deve avere alcuna possibilità di
poter sostituire un messaggio con un altro messaggio che sia protetto dalla funzione hash, cioè data la coppia
H(m)),
messaggio-hash ( m , creata dal trasmittente, un intruso non può falsificare il contenuto di un altro
messaggio, y, che abbia lo stesso valore hash dell’originale. Un algoritmo molto utilizzato per l’hash dei
messaggi è MD5, in grado di calcolare una hash di 128 bit con un processo a quattro fasi. Si inizia con la
normalizzazione attraverso raggiunta del valore 1 seguito da una serie di 0, in un numero tale da soddisfare
determinate condizioni. Le successive fasi prevedono: raggiunta in coda di una rappresentazione a 64 bit
della lunghezza del messaggio originale, l’inizializzazione di un accumulatore e, per ultimo, un passaggio in
cui i blocchi composti da 16 gruppi di 32 bit (word) del messaggio vengono “ triturati” attraverso un processo
che prevede quattro cicli di elaborazione. Un altro importante algoritmo hash, attualmente in uso, è hash
secure hash algorìthm).
sicuro (SHA-1, SHA-1 è uno standard utilizzato nelle applicazioni federali USA in cui è
richiesto un algoritmo hash crittografico e produce una sintesi del messaggio di 160 bit. La maggior lunghezza
del risultato rende SHA-1 più sicuro.
Codice di autenticazione dei messaggi
Per garantire l ’integrità dei messaggi, oltre alle funzioni hash crittografiche, Alice e Bob hanno bisogno di un
segreto condiviso. Questo segreto condiviso, che non è altro che una stringa di bit, è chiamato chiave di
autenticazione, Usando questo segreto condiviso, l’integrità del messaggio è realizzata come segue:
m, s m m + s, H(m s),
1) Alice crea un messaggio concatena con per creare calcola la stringa hash + per
esempio con SHA-1.
H(m + s), è message authenticatìon
chiamato codice di autenticazione del messaggio (MAC,
code); MAC m, H(m
2) Alice aggiunge il al messaggio creando il messaggio esteso (m, + s)) e lo manda a Bob;
(m, h) m s, H(m s).
3) Bob riceve il messaggio esteso e, avendo ricevuto e conoscendo calcola il MAC +
H(m + s) = h,
Se Bob conclude che va tutto bene.
Message Authentication Code,
Si noti che il MAC, che qui sta per non è lo stesso MAC usato nei protocolli a
Medium Access Control.
livello di collegamento, che in quel caso sta per Una interessante caratteristica di
MAC è che non richiede un algoritmo di cifratura. Effettivamente, in molte applicazioni, compresi gli algoritmi
link state descritti precedentemente, le entità in comunicazione si devono preoccupare solo dell’integrità del
messaggio e non della sua riservatezza. Usando MAC, le entità possono autenticare i messaggi che si
scambiano, senza che debbano includere complessi algoritmi di cifratura nel processo per garantire integrità
del messaggio.
Rimane ancora la questione importante di come venga distribuita la chiave di autenticazione condivisa tra le
entità in comunicazione. Un amministratore di rete può, a dire il vero, svolgere questo compito manualmente,
visitando ciascun router, oppure, se ciascun router ha una sua chiave pubblica, l’amministratore di rete può
comunicare la chiave di autenticazione a ciascun router, cifrandola con la chiave pubblica del router e poi
inviandogliela tramite la rete.
Firme digitali
Nel mondo digitale, per indicare il titolare o il creatore di un documento, o dichiarare di essere d’accordo con il
suo contenuto, si ricorre alla firma digitale, una tecnica di crittografia che consente di raggiungere svariati
obiettivi. Come la firma tradizionale, anche quella digitale deve essere verificabile e non falsificabile. Cioè,
deve consentire di dimostrare che un certo documento sia davvero stato firmato proprio da quella data
persona (verificabile) e che solo lei poteva realizzarlo (non falsificabile). Ricordiamo la cifratura a chiave
pubblica: Bob ha una chiave pubblica e una privata, che per lui sono uniche. La cifratura a chiave pubblica,
quindi, è un eccellente candidato alla firma digitale. Esaminiamo come funziona. Supponiamo che Bob voglia
m.
firmare digitalmente un documento,
Possiamo pensare il documento come un file o un messaggio che Bob deve firmare e inviare. Bob per firmare
(m).
B- B-
il suo documento utilizza la sua chiave privata, K per calcolare K L’obiettivo di Bob non è oscurare il
contenuto, ma firmare il documento in modo che sia verificabile e non falsificabile.
m (m)
B-
Supponiamo che Alice ottenga e K e voglia convincere un giudice che il documento è stato
effettivamente firmato da Bob e che lui era la sola persona che poteva farlo. Alice applica la chiave pubblica
di Bob e calcola:
(K (m)) m,
B+ B-
K e riproduce che corrisponde esattamente al documento originale.
Il giudice deduce che solo Bob può aver apposto la firma, per i seguenti motivi: B-
1) Chiunque abbia firmato il messaggio deve aver utilizzato la chiave di cifra