aboutsummaryrefslogtreecommitdiff
path: root/guides/crittografia/02-asimmetrica.rst
blob: bc377898f0312b6015add1428b6796f2be1c4fcd (plain)
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'identita` 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.