Un sistema di sicurezza dei dati
La crittografia, il cui termine indica "nascosto", è la branca della crittologia che tratta delle "scritture nascoste", ovvero dei metodi per rendere un messaggio "offuscato" in modo da non essere comprensibile, intelligibile a persone non autorizzate a leggerlo. Un tale messaggio si chiama comunemente crittogramma e le tecniche usate tecniche di cifratura.
La necessità di nascondere messaggi strategici da occhi nemici è antica quanto l'uomo. Si hanno esempi di tecniche di cifratura risalenti agli Spartani (codice Scitala) Risale a Giulio Cesare l'uso del cosiddetto cifrario di Cesare, un sistema crittografico oggi ritenuto elementare, ma emblema della nascita di un concetto totalmente nuovo e ottimo per comprendere le idee basilari della crittografia e i primi attacchi della sua "avversaria": la crittoanalisi.
Testo in chiaro a|b|c|d|e|f|g|h|i|k|l|m|n|o|p|q|r|s|t|u|x Testo cifrato D|E|F|G|H|I|K|L|M|N|O|P|Q|R|S|T|V|X|A|B|C
Fino a pochi anni fa l'unico metodo crittografico esistente era quello della crittografia simmetrica, in cui si faceva uso di un'unica chiave sia per proteggere il messaggio che per renderlo nuovamente leggibile. Il problema è condividere la chiave di cifratura con il destinatario del messaggio criptato senza che questa venga scoperta.
Nell’algoritmo DES, tramite la funzione di cifratura E con chiave C applicata sul messaggio M, si ottiene il messaggio cifrato Mc
Algoritmo Chiave Messaggio Codifica DES quinta_a_comm.le Salve a tutti Base64 Mc phQXLd3tnwYV5PpAJDSXOQ==
La vera novità del secolo scorso è l'invenzione di una tecnica crittografica che utilizza chiavi diverse per cifrare e per decifrare un messaggio, facilitando incredibilmente il compito di distribuzione delle chiavi. Infatti in questo caso non è necessario nascondere le chiavi o le password: c'è una chiave per crittografare, che chiunque può vedere, e una per decifrare, che conosce solo il destinatario senza necessità quindi di riceverla (scambiarla) dal mittente.
In altre parole, se A vuole ricevere un messaggio segreto da B, manda a B una scatola vuota con un lucchetto aperto senza chiavi. B mette dentro il messaggio, chiude il lucchetto, e rimanda il tutto ad A, che è l'unico ad avere le chiavi. Chiunque può vedere passare la scatola, ma non gli serve a niente. A non deve correre rischi con le sue chiavi.
Il funzionamento di questo sistema è basato sul fatto che è matematicamente e computazionalmente molto facile moltiplicare due numeri primi (che singolarmente rappresentano la chiave privata, quella che solo A conosce per decifrare), ma è invece molto difficile il problema inverso ovvero risalire ai fattori primi del numero ottenuto dal precedente prodotto (che invece rappresenta la chiave pubblica che chiunque può vedere e che si usa per crittografare).
Siccome la crittografia asimmetrica è molto lenta se si devono spedire grandi quantità di dati, spesso si usa questo tipo di crittografia per scambiarsi una chiave con cui iniziare una comunicazione in crittografia simmetrica, molto più semplice, veloce e sicura.
Per poter realizzare con il cifrario asimmetrico un sistema crittografico pubblico è importante che un utente si crei autonomamente entrambe le chiavi, denominate "diretta" ed "inversa", e ne renda pubblica una soltanto. Così facendo si viene a creare una sorta di "elenco telefonico" a disposizione di tutti gli utenti, che raggruppa tutte le chiavi dirette, mentre quelle inverse saranno tenute segrete dagli utenti che le hanno create e da questi utilizzate solo quando ricevono un messaggio cifrato con la rispettiva chiave pubblica dell'"elenco" da parte di un certo mittente, ottenendo in questo modo i presupposti necessari alla sicurezza del sistema.
Facendo un esempio pratico, se Alice vuole spedire un messaggio a Bob e non vuole che altri all'infuori di Bob possano leggerlo, Alice cercherà sull'elenco la chiave pubblica di Bob e con quella potrà cifrare il messaggio. Essendo Bob l'unico a possedere la chiave inversa, sarà anche l'unico a poter decifrare il messaggio, che rimarrà così segreto per tutti gli altri, compresa Alice, che non disponendo della chiave inversa non sarà in grado di decifrare il messaggio da lei stessa creato.
Ovviamente il successo di questo sistema si basa sull'assoluta necessità che Bob sia l'unico ad essere in possesso della chiave inversa. In caso contrario, avendo entrambe le chiavi, chiunque potrebbe decifrare agevolmente il messaggio.
Con questo metodo di cifratura è possibile anche garantire la provenienza di un messaggio. Riprendiamo l'esempio precedente: Alice questa volta, prima di cifrare il messaggio usando la chiave pubblica di Bob, lo cifrerà usando la propria chiave inversa e solo in un secondo momento lo ri-crittograferà utilizzando la chiave pubblica di Bob.
Più semplicemente, utilizzando questo metodo di cifratura, Alice può mandare messaggi a tutti, garantendo la provenienza. Infatti crittografando il messaggio con la propria chiave inversa, chiunque sarà in grado di leggere il messaggio, decrittandolo con la sua chiave pubblica, assicurandosi in tal modo che il mittente sia proprio Alice.
Siccome la crittografia asimmetrica è molto lenta se si devono spedire grandi quantità di dati, spesso si usa questo tipo di crittografia per scambiarsi una chiave con cui iniziare una comunicazione in crittografia simmetrica, molto più semplice, veloce e sicura.
Algoritmo Chiave pubblica Esponente Chiave privata Messaggio RSA d94d889e88853dd89769a18015a0a 2e6bf82bf356fe14f251fb4f5e2df0d9 f9a94a68a30c428b39e3362fb3779a 497eceaea37100f264d7fb9fb1a97fb f621133de55fdcb9b1ad0d7a31b d79252f5c527b9bc63d83d4ecf4 d1d45cbf843e8474babc655e9bb679 9cba77a47eafa afc24bEb9 c825b73ebf549 47b9cfde843176b88741d68cf e ce46f2b048791a2 6e507a c12bae1e09d82213 ad cf7c2350acb19c98f19d3 2d577d666cd7bb8b2b5ba629d25ccf 72a5ceb8a8da038906c84dcdb1fe67 7dffb2c029fd eede1b58272 af22bda5c5232be e42f53 52df58848adad11a1 Salve a tutti
TESTO CIFRATO 0xa8 0x55 0xa2 0x90 0xe6 0xd3 0xc5 0xc4 0x51 0x78 0x20 0x71 0xc9 0xe9 0x1d 0x60 0x36 0x8e 0x22 0x72 0xc9 0xbf 0x28 0xfd 0x31 0xb0 0x91 0xe8 0xc3 0xee 0x71 0x8 0xf0 0xf7 0x78 0xa1 0xea 0xad 0x9d 0x9a 0x65 0x6b 0xd7 0x5 0x3c 0x4c 0x8f 0xfa 0x60 0x0 0x7a 0x3b 0x49 0xb 0xa7 0x8f 0x9 0x55 0xfc 0xcf 0xf4 0x40 0x88 0xd1 0x53 0x80 0xbe 0xac 0x4b 0x22 0xb2 0x45 0x12 0x9f 0x26 0xf8 0xd8 0x60 0xe2 0xd8 0xcb 0xa9 0x6f 0xd8 0x1 0x83 0x12 0xd0 0xa7 0xf2 0x4d 0x7f 0x47 0xe 0xc3 0x5a 0x99 0x9a 0xfd 0x87 0x1f 0xfa 0xb8 0x9 0xd9 0x2d 0xa5 0xb3 0xa1 0xf 0x53 0x2a 0x12 0xb 0x11 0xd3 0xe2 0x27 0xda 0x69 0xe4 0x39 0xaf 0xed 0x6b 0x84 0xcc 0x4c