Sicurezza delle informazioni
• Quando vengono mandati pacchetti di informazioni sui mezzi
promiscui (ad es. rete Ethernet) chiunque ha la possibilità di
leggere i pacchetti inviati e ricomporre il messaggio originale:
– Le informazioni non sono riservate
– E’ possibile che un utente sottragga le informazioni anche se non ne è
il destinatario
– Un utente potrebbe modificare il messaggio (sia il contenuto che
l’identità del mittente)
• Pacchetti invati in internet hanno bisogno di un link fisico o
software (cavallo di troia) col mittente o con il destinatario.
Una volta che esso sia stabilito, ci sono gli stessi rischi che su
una rete promiscua
DEI - Univ. Padova (Italia)
Crittografia: servizi richiesti
•
SEGRETEZZA: evitare che i dati inviati da un soggetto A a un
soggetto B vengano intercettati da un terzo soggetto C.
• AUTENTICAZIONE: verificare l’identità di chi manda o riceve i
dati (evitare che un intruso si spacci per chi non è).
• INTEGRITA’: essere sicuri che i dati ricevuti siano uguali a quelli
inviati (evitare cioè che un intruso o un evento accidentale
alterino i dati durante la trasmissione).
• NON RIPUDIO: evitare che chi manda dei dati possa in futuro
negare di averli mandati (firma digitale).
DEI - Univ. Padova (Italia)
Sicurezza: man in the middle
A
B
Presunta comunicazione
Canale di comunicazione
Effettiva comunicazione
con messaggio intercettato
C
DEI - Univ. Padova (Italia)
Sicurezza: man in the middle
• A e B vogliono scambiarsi dei messaggi e pensano che le loro
comunicazioni siano sicure, corrette e che il mittente sia
autentico.
• C riesce ad intercettare i messaggi in arrivo ed in uscita da A,
leggendoli e modificandoli
• Per i messaggi che si scambiano A e B non è garantita
l’autenticità né la segretezza in quanto C (l’uomo in mezzo, “man
in the middle”) può alterare il flusso di comunicazione
DEI - Univ. Padova (Italia)
Cifratura del messaggio
B
A
Cifratura
con una
chiave Ka
Cifratura
con una
chiave Ka
Comunicazione cifrata
Canale di comunicazione
Effettiva comunicazione
con messaggio intercettato
?
DEI - Univ. Padova (Italia)
C
Sicurezza: cifratura
• A e B vogliono scambiarsi dei messaggi e utilizzano un algoritmo
di crittografia per modificare il messaggio in modo che sia
inintelleggibile per chi eventualmente intercetti il messaggio
• A e B devon essersi accordati sulla cifratura e devono essere in
possesso delle chiavi di decifrazione
• C riesce ad intercettare i messaggi in arrivo ed in uscita da A, ma
non riesce ad interpretarne il contenuto
DEI - Univ. Padova (Italia)
Algoritmi a chiave segreta
• Cifrario di Cesare
ogni lettera è sostituita da quella che la segue di k
posizioni nell’alfabeto.
Es: k è la chiave
Se k=3, a è sostituito con d, b con e ecc.
• Cifrario di sostituzione mono-alfabetico:
generalizzazione del cifrario di Cesare ogni lettera è
sostituita da un’altra, secondo uno schema “libero”
DEI - Univ. Padova (Italia)
Algoritmi a chiave segreta
• Cifrari di trasposizione
le lettere sono trasposte in altre posizioni, secondo una
chiave di trasposizione ad esempio, la prima lettera è
sostituita con la quarta, la seconda con la terza ecc.
• One-Time Pad:
il testo è codificato in binario e viene effettuata
un’operazione di OR esclusivo con una chiave binaria
della stessa lunghezza: l’algoritmo inattaccabile, ma c’è
bisogno di chiavi di lunghezza uguale al messaggio
• Algoritmi moderni:
chiavi piccole, utilizzo di più operazioni (di trasposizione,
sostituzione, di XOR), in cascata, secondo logiche
complesse
DEI - Univ. Padova (Italia)
Algoritmi a chiave segreta (1)
“Questo è un messaggio”
1] Algoritmo di Cesare k=4: “Uwixys i yr qixxekkms”
2] Cifrario di sostituzione mono-alfabetico con chiave
M n b v c x z a s d f g h j k l p o i u y t r e w q:
“Pyciuk c yj hciimzzsk”
• Abcdefghi jklmnopqrstuvxywz
• Mnbvcxzasdfghj k lpo iuytrewq
DEI - Univ. Padova (Italia)
Algoritmi a chiave segreta: one time pad
Messaggio
originario
Chiave
di codifica/
decodifica
Codifica
binaria
Risultato
dello
XOR
Messaggio
codificato
XOR
q
u
e
s
t
o
è
u
n
m
e
s
s
a
g
g
i
o
DEI - Univ. Padova (Italia)
01110001
01110101
01100101
01110011
01110100
01101111
00100000
11101000
00100000
01110101
01101110
00100000
01101101
01100101
01110011
01110011
01100001
01100111
01100111
01101001
01101111
11110011
10001111
00011110
00101011
00001011
01100101
00101100
11111111
10100100
10001111
01001000
10111011
00010110
00111111
10111110
10100110
01001000
00010010
10011111
00001001
11000010
10000010
11111010
01111011
01011000
01111111
00001010
00001100
00010111
10000100
11111010
00100110
10011011
01111011
01011010
11001101
11010101
00101001
01110101
11111000
01100000
10101101
ú
{
X
•
ú
&
{
Z
Í
Õ
)
u
ø
`
Algoritmi a chiave segreta: one time pad
Messaggio
cifrato
Chiave
di codifica/
decodifica
Codifica
binaria
Risultato
dello
XOR
Messaggio
decodificato
XOR
ú
{
X
•
ú
&
{
Z
Í
Õ
)
u
ø
`
DEI - Univ. Padova (Italia)
10000010
11111010
01111011
01011000
01111111
00001010
00001100
00010111
10000100
11111010
00100110
10011011
01111011
01011010
11001101
11010101
00101001
01110101
11111000
01100000
10101101
11110011
10001111
00011110
00101011
00001011
01100101
00101100
11111111
10100100
10001111
01001000
10111011
00010110
00111111
10111110
10100110
01001000
00010010
10011111
00001001
11000010
01110001
01110101
01100101
01110011
01110100
01101111
00100000
11101000
00100000
01110101
01101110
00100000
01101101
01100101
01110011
01110011
01100001
01100111
01100111
01101001
01101111
Q
u
e
s
t
o
è
u
n
m
e
s
s
a
g
g
i
o
Algoritmi a chiave segreta
• Gli algoritmi visti finora sono simmetrici, in quanto, data
la funzione di codifica/decodifica f(messaggio, chiave) si
utilizza la stessa chiave K per codificare e decodificare il
messaggio M:
f(M,K)
messaggio cifrato
M=f(f(M,K),K)
ricostruzione del messaggio originale
DEI - Univ. Padova (Italia)
Sicurezza della chiave
• E’ necessario che mittente e destinatario si scambino la
chiave in qualche modo sicuro
• E’ necessario avere una chiave per ogni coppia
mittente/destinatario
DEI - Univ. Padova (Italia)
Algoritmi a doppia chiave
• Chiave Pubblica/Privata:
Ogni soggetto A ha una propria chiave pubblica Kpub(A),
nota a chiunque ed una propria chiave privata Kpriv(A) nota
solo a lui stesso.
• I requisiti che un algoritmo a chiave pubblica deve
soddisfare sono:
– i dati codificati con una delle chiavi possono essere decodificati
solo con l’altra
– la chiave privata non deve mai essere trasmessa in rete
– deve essere molto difficile ricavare una chiave dall’altra
(soprattutto la chiave privata da quella pubblica nota a tutti)
DEI - Univ. Padova (Italia)
Cifratura del messaggio
Procedura per garantire la autenticità del mittente e la integrità dei dati:
Il mittente codifica il messaggio con la sua chiave privata Kpriv(mitt),
che solo lui conosce, ed il destinatario decodifica il messaggio con la
chiave pubblica relativa Kpub(mitt).
B
A
decifratura
con la chiave
pubblica Kpub(A)
Cifratura
con la chiave
privataKpriv(A)
Comunicazione cifrata
Canale di comunicazione
DEI - Univ. Padova (Italia)
Cifratura del messaggio
Procedura per garantire la segretezza dei dati:
Il mittente codifica il messaggio con la sua chiave pubblica del
destinatario Kpub(dest). Il messaggio può essere decodificato solo
utilizzando la chiave privata Kpriv(dest) del destinatario, che solo lui
conosce.
B
A
decifratura
con la chiave
privata Kpriv(B)
Cifratura
con la chiave
pubblicaKpub(B)
Comunicazione cifrata
Canale di comunicazione
DEI - Univ. Padova (Italia)
Cifratura del messaggio
Per garantire contemporaneamente la autenticità, la integrità e la
segretezza, è necessario procedere ad una doppia codifica:
A
B
Cifratura
con la chiave
privataKpriv(A)
Cifratura
con la chiave
pubblicaKpub(A)
Cifratura
con la chiave
pubblicaKpub(B)
Cifratura
con la chiave
privataKpriv(B)
Comunicazione cifrata
DEI - Univ. Padova (Italia)
Canale di comunicazione
Algoritmi a chiave segreta e a chiave pubblica
• Vantaggi degli algoritmi a chiave segreta
Un vantaggio importante: questi algoritmi sono più veloci
di ordini di grandezza rispetto agli algoritmi a chiave
pubblica
• Vantaggi degli algoritmi a chiave pubblica
E’ eliminato il problema dello scambio della chiave
segreta
Le chiavi pubbliche sono diffuse e accessibili da tutti
• Uso congiunto dei due tipi di algoritmo
Spesso si usa un algoritmo a chiave pubblica per
scambiare la chiave segreta “di sessione” con cui poi
crittografare i dati da trasmettere
DEI - Univ. Padova (Italia)
Algoritmo a chiave pubblica: RSA
RSA (Rivest-Shamir-Adleman)
RSA sfrutta le proprietà dei numeri primi ed il fatto che è
molto difficile fattorizzare (cioè trovare i divisori) numeri
molto grandi: più è grande il numero, più è difficile e lungo
trovarne i divisori
Questo rende molto complesso ( di fatto impossibile in
tempo per essere utile ) ricavare la chiave privata da quella
pubblica . Il miglio algoritmo finora per decomporre un
1
/
3
2
/
3
numero binario di b cifre ha un comportamento asintotico:
O(e
DEI - Univ. Padova (Italia)
64
( b)
9
log(b )
)
Robustezza di RSA
Dato che l’algoritmo si basa sulla fattorizzazione di numeri,
la sua sicurezza deriva dalla difficoltà di tale compito.
Il miglior algoritmo finora per decomporre un numero binario
di b cifre ha un comportamento asintotico:
O(e
64 1 / 3
2/3
( b ) log(b )
9
)
Per un numero binario di 512 bit, si otterrebbe un numero di
calcoli asintotici dell’ordine di 1022…
100000 anni con una frequenza di calcolo di 4GHz!!
DEI - Univ. Padova (Italia)