Crittografia: cos’è, la storia e come viene usata

Chissà quante volte avete sentito questo termine, crittografia, e chissà a quale arte mistica o santo graal hai pensato. Invece la crittografia, è un settore della crittologia che si occupa appunto dei metodi per rendere un messaggio illeggibile a chi non è il destinatario di tale messaggio. Deriva dalle parole Kryptos che significa nascosto e graphia che significa scrittura. Il messaggio sottoposto a tale trattamento si chiama, crittogramma. La tecnica utilizzata per ottenerlo si chiama cifratura, l’insieme di regole, o l’algoritmo utilizzati per ottenere il nostro messaggio nascosto si chiama cifrario.

Con queste tecniche si garantisce la riservatezza del dato o del messaggio. Date le molte tecniche utilizzate dagli utenti malintenzionati per spiare o rubare dati ai poveri utenti ignari, la crittografia oggi è molto importante. Pensa ad esempio ai vari siti web che trasmettono o ricevono dati sensibili come indirizzi e-mail, numeri di telefono o peggio di carte di credito. Senza un sistema di crittografia questi dati sarebbero alla mercé di utenti esperti e malintenzionati.

La crittografia simmetrica

La crittografia è usata da secoli ormai nella nostra civiltà, uno dei primi algoritmi di cifratura sembra risalire a uno degli imperatori di Roma, Cesare. Egli studiò un sistema per comunicare senza essere scoperti. L’algoritmo era a dir poco banale, ma essendo il primo del suo genere ovviamente era difficile capire per il nemico cosa volesse dire quell’insieme di caratteri senza senso. L’algoritmo fu presto ribattezzato Crittografia di Cesare. Questa consisteva semplicemente nello spostare in avanti o indietro le lettere che compongono una parola, di un tot di posizioni già prefisse e note sia al mittente che al destinatario. Ad esempio spostando di 1 lettera indietro sull’alfabeto, la parola ciao otteniamo bhzn, il destinatario che riceve quella parola risposta in avanti le lettere e ottiene la parola ciao. I questo caso specifico, il numero di posizioni da spostare in avanti o indietro è detta chiave di crittografia.

Con il tempo poi, furono studiati sistemi leggermente più complessi, ad esempio l’utilizzo di una chiave a più cifre, facciamo sempre l’esempio con la parola ciao. Il messaggio “ciao” con chiave 1234 diventerebbe per il destinatario, bgxk (comprendendo nell’alfabeto anche j,k,x e y), questo perché:

  • c – 1 = b
  • i – 2 = g
  • a – 3 = x
  • o – 4 = k

 

Varianti

Basandosi su queste semplici regole è possibile creare cifrari personalizzati, ad esempio usando come chiave di cifratura la data di oggi, o del compleanno di qualcuno. Oppure un’altra parola sfruttando il numero della posizione che occupa il singolo carattere nell’alfabeto e migliaia ancora di variabili.

Questi metodi sono detti a chiave unica o crittografia simmetrica, e sono stati utilizzati per anni nell’informatica. Hanno dato vita a cifrari di tutto rispetto come ad esempio il cifrario di Rijndael scelto per il prossimo standard del  famosissimo AES (Advanced Encryption Standard). Utilizzato per la crittografia delle connessioni Wi-Fi, andrà presto a sostituire l’ormai vecchio DES (Data Encryption Standard).

Questi sistemi hanno però un grande problema, cioè quello che in un modo o nell’altro la chiave usata per cifrare il messaggio deve essere condivisa con il nostro destinatario. Quindi si corre il rischio che venga intercettata e si comprometta così l’intero sistema crittografico. Come ovviare a tele problema?

La crittografia asimmetrica

lucchetto su mappamondo

Fino a pochi anni fa si usavano sistemi crittografici così detti simmetrici, nei quali la chiave per cifrare il messaggio e per decifrarlo, era la medesima. Il grande problema di questa tecnica è riuscire a condividere la chiave di cifratura con l’utente destinatario senza che essa venga intercettata da un utente non autorizzato.

Il secolo scorso ci ha portato grandi novità in campo crittografico, prima tra cui proprio la crittografia asimmetrica o a doppia chiave, pubblica/privata. Il punto di forza come si può facilmente intuire è proprio che con questa crittografia, le chiavi sono 2. Una per cifrare il messaggio, che non deve essere tenuta nascosta e una per decifrarlo che conosce SOLO l’utente destinatario. Non c’è quindi bisogno di uno scambio di chiave tra mittente e destinatario. Questo rende le cose estremamente facili a livello di distribuzione delle chiavi ed estremamente sicure dal punto di vista della riservatezza.

Semplificando

In parole povere se l’utente Davide deve scambiare un messaggio con l’utente Daniele, avverrà quanto segue:

  • Davide chiederà a Daniele di spedirgli il suo lucchetto SENZA la sua chiave
  • Davide metterà il suo messaggio in una scatola chiudendola con il lucchetto di Daniele
  • Daniele aprirà la scatola e leggerà il messaggio essendo l’unico possessore della chiave che apre il lucchetto

Il lucchetto rappresenta la chiave pubblica, con la quale viene “cifrato” o chiuso il messaggio, la chiave del lucchetto è la chiave privata, di cui l’unico possessore è il destinatario. Il mittente è a conoscenza solo della chiave pubblica, la quale però non è utile a decifrare il messaggio. Infatti la proprietà di questa coppia di chiavi è proprio che vengono generate da algoritmi che partendo da numeri casuali fanno si che un messaggio cifrato con la chiave pubblica possa essere decifrato solo usando la chiave privata e viceversa. In questo modo diventano per così dire complementari ma non uguali.

Questo sistema della chiave pubblica e privata è utilizzato fondamentalmente per due scopi principali:

  • Inviare messaggi in riservatezza
  • Verificare l’autenticità di un messaggio. In questo caso il messaggio viene cifrato con la chiave privata e l’utente destinatario può verificarne l’autenticità decifrando il messaggio con la chiave pubblica, ma a questo punto chiunque conosca la chiave pubblica può leggere il messaggio.