1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
Crittografia asimmetrica
------------------------
Ogni metodo di crittografia moderno consiste in un algoritmo
da applicare al messaggio che si vuole crittare usando come
parametro una chiave, ovvero un numero o dei caratteri;
il metodo è considerato abbastanza sicuro se conoscendo l'algoritmo
e il messaggio codificato, ma non la chiave, non è possibile
risalire al messaggio originario in un tempo abbastanza breve perché
le informazioni in esso contenute siano utili o interessanti.
La crittografia tradizionale richiede l'esistenza di una chiave
segreta nota sia al mittente che al destinatario del messaggio:
il trasferimento di questa chiave deve avvenire su canali sicuri
e comporta difficoltà logistiche significative, specie quando
le persone coinvolte non possono vedersi frequentemente di persona.
Per ovviare a tale problema, sono stati sviluppati degli algoritmi
di crittografia asimmetrica, nel quale esiste una coppia di chiavi
legate tra loro da una relazione matematica che fa sì che
un messaggio codificato con una delle due chiavi possa
essere decodificato esclusivamente conoscendo l'altra chiave.
Una delle due chiavi è detta chiave privata, e deve essere custodita
in modo sicuro, mentre l'altra è detta chiave pubblica e può
essere distribuita senza alcun rischio.
La maggior parte della crittografia usata su internet fa uso
di uno di questi algoritmi, sia per la loro maggiore praticità
che per la capacità aggiuntiva di garantire l'identità del mittente.
Crittare
^^^^^^^^
L'invio di un messaggio crittato con chiave pubblica può essere
visualizzato con un esempio pratico.
Alice vuole inviare a Bob
un messaggio, ma sospetta che il postino sbirci nelle buste;
Alice può allora chiedere a Bob di inviarle un lucchetto aperto
(la chiave pubblica) di cui solo lui ha la chiave (chiave privata).
Quando Alice riceve il lucchetto lo usa per chiudere una cassetta
in cui ha messo il messaggio; da quel punto in poi solo Bob
può aprire la cassetta, che può essere così spedita senza rischi.
Con la crittografia asimmetrica via internet la procedura è simile:
Alice cerca su internet la chiave pubblica di Bob, si assicura
che sia veramente sua, codifica il messaggio e sa che solo Bob,
con la sua chiave privata potrà leggerlo; se Bob vuole rispondere dovrà
fare la stessa cosa con la chiave pubblica di Alice.
Firmare
^^^^^^^
La firma dei messaggi sfrutta le proprietà delle chiavi al contrario:
un messaggio codificato con una chiave privata di Alice può essere
letto da chiunque abbia la sua chiave pubblica, ma non può essere
stato scritto da nessun'altro.
Alice può quindi mandare a Bob un messaggio in chiaro accompagnato
dallo stesso messaggio crittato con la sua chiave privata: se
Bob ha dei dubbi sull'identità del mittente può decodificare il
messaggio con la chiave pubblica di Alice e controllare che i due
messaggi siano identici.
Certificate Autority e Web of Trust
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Il sistema di crittografia asimmetrica è stato pensato per evitare
che le persone debbiano incontrarsi continuamente di persona per
scambiarsi delle chiavi segrete, ma rimane un problema: come
accertarsi che una chiave pubblica appartenga veramente alla
persona a cui crediamo appartenga?
Una soluzione a questo problema è data dalle *certificate autority*, CA,
degli enti che verificano l'identità di chi ha generato una
chiave, la firmano con la loro chiave privata e in questo modo
certificano l'appartenenza della chiave generata ad un proprietario.
Questo sistema è usato ad esempio per le connessioni web sicure,
ma ha il limite di dipendere da una gerarchia rigida e nella quale
riuscire a violare la sicurezza di una CA rischia di compromettere
tutto il sistema.
Un'altra soluzione è quella della *web of trust* in cui non esistono
autorità centrali, ma ogni utente verifica le chiavi della sua
cerchia di conoscenti, eventualmente facendosene garante nei
confronti di chi decide di fidarsi delle sue verifiche.
Questo è l'approccio usato ad esempio da gpg, usato nella comunità
del software libero per firma e crittografia di email, ma anche
per la firma dei rilasci di software, ed ha il vantaggio di
essere scalabile a comunità di dimensioni disparate.
|