53
1 Alberto Viotto [email protected] Guida alla crittografia

Guida alla crittografia

Embed Size (px)

DESCRIPTION

Descrizione divulgativa dei meccanismi crittografi

Citation preview

Page 1: Guida alla crittografia

1

Alberto [email protected]

Guida alla crittografia

© Copyright 2007

Page 2: Guida alla crittografia

2

Questo breve volumetto descrive alcuni dei metodi crittografici usati nell’antichità ed i metodi più moderni, che si basano sulle capacità di calcolo dei computer. La trattazione è divulgativa; non è esaustiva e non entra nei minimi dettagli dei metodi crittografici, ma cerca di dare con chiarezza un’idea generale del “magico” mondo della crittografia..

Se qualche lettore lo trovasse interessante o ne volesse discutere, all’autore farebbe piacere ricevere delle e-mail all’indirizzo: [email protected]

Page 3: Guida alla crittografia

3

La lingua segreta

Chi invia un messaggio desidera che soltanto il destinatario lo possa leggere. Le lettere sono inviate all’interno di una busta chiusa proprio per questo motivo, ma il livello di sicurezza è molto basso; se un malintenzionato entra in possesso della lettera può sciogliere facilmente la colla della busta con il vapore, leggere il messaggio e richiudere la busta senza che il destinatario se ne accorga. Se non è possibile consegnare un messaggio di persona, la sua sicurezza è a rischio: se è scritto su carta può essere letto da uno degli intermediari (il postino, gli addetti alla raccolta ed allo smistamento), se viaggia via radio può essere intercettato da chiunque disponga di un apparato ricevente adatto, se viene trasmesso via Internet può essere catturato su uno dei server da cui transita. C’è un solo modo per evitare ogni rischio: utilizzare una lingua che nessun altro, al di fuori di noi stessi e del destinatario, sia in grado di leggere. E, se non conosciamo nessuna lingua del genere, la possiamo inventare, come fece Giulio Cesare più di duemila anni fa.

Page 4: Guida alla crittografia

4

Il cifrario di Cesare

Lo storico Svetonio racconta che Giulio Cesare sostituiva ogni lettera dei suoi messaggi privati con la lettera che si trovava tre posizione più avanti nell’ordine alfabetico. Ogni “a”, ad esempio, diventava una “d”, ogni “b” una “e”, e così via. Le ultime tre lettere dell’alfabeto, ovviamente, erano sostituite con le prime tre, ed ogni “x” diventava una “a”, ogni “y” una “b”, ogni “z” una “c”. La tabella di sostituzione era molto semplice:

lettera codice lettera codice lettera codiceA D I M R VB E K N S XC F L O T YD G M P V ZE H N Q X AF I O R Y BG K P S Z CH L Q T

In questo modo la frase:

GALLIA EST OMNIS DIVISA IN PARTES TRES

diventava

KDOOMD HXY RPQMX GMZMZD MQ SDVYHX YVHX

a prima vista del tutto incomprensibile. Più in generale, un “Cifrario di Cesare” è composto da una tabella di questo tipo in cui la distanza tra le lettere è fissa, e rappresenta uno dei primi esempi di “crittografia”, o “scrittura nascosta”, un procedimento con il quale si ottiene da un originale un testo apparentemente incomprensibile. È possibile ricostruire l’originale soltanto se si conosce la “lingua” usata, e cioè se si conoscono le modalità di traduzione.

Page 5: Guida alla crittografia

5

Il cifrario di Cesare fornisce un livello di protezione molto basso, almeno secondo i criteri odierni. Esaminando un testo cifrato in questo modo si può comprendere facilmente che ogni lettera è sostituita da un’altra lettera, perché la forma del testo corrisponde a quella di un testo normale: la lunghezza media delle parole è di circa cinque caratteri, le parole più lunghe sono inframmezzate da parole brevi, corrispondenti a congiunzioni o preposizioni. Anche se non si conosce il numero di posizioni di cui ogni lettera è spostata, si può procedere a tentativi, e ci sono tante possibilità quante le lettere dell’alfabeto che si utilizza, nel caso dell’alfabeto latino ventitré in tutto (l’alfabeto latino era privo di j e w e la “v” aveva anche la funzione vocalica della nostra “u”). Si può provare a tradurre la parola “KDOOMD” spostando le lettere prima di una posizione, poi di due, di tre e così via, e si scopre facilmente che si ottiene una parola dotata di significato solo nel caso lo spostamento sia di tre posizioni. Un caso particolare di cifrario di Cesare è il cosiddetto ROT 13 (ROTazione 13), in cui ogni lettera è spostata di 13 posti. Poiché l’alfabeto moderno è composto da 26 lettere, questo particolare cifrario di Cesare viene codificato e decifrato allo stesso modo:

A B C D E F G H I J K L M

↕ ↕ ↕ ↕ ↕ ↕ ↕ ↕ ↕ ↕ ↕ ↕ ↕

N O P Q R S T U V W X Y Z

L’uso di questo cifrario è diffuso proprio perché è facilmente decifrabile. Il suo scopo è quello di rendere un testo non immediatamente evidente, come si fa a volte nei giornali enigmistici in cui le risposte ai giochi sono scritte a rovescio. Nelle discussioni su Internet si usa il ROT13 per fare in modo che frasi che potrebbero risultare sgradite o offensive vengano lette soltanto da chi si prende la pena di decodificarle, oppure per riportare le risposte a domande su cui si vuole che il lettore rifletta un po’ prima di verificare la soluzione.

Page 6: Guida alla crittografia

6

I cifrari monoalfabetici sono un’evoluzione del cifrario di Cesare, in cui ogni lettera è spostata di un numero di posizioni diverso per ogni lettera dell’alfabeto; ad esempio la ‘A’ è tradotta con una ‘D’, ma una ‘B’ non è tradotta con una ‘E’ ma con un’altra lettera. Con un cifrario di Cesare, una volta scoperto lo spostamento di una lettera si può tradurre l’intero testo, mentre con un cifrario monoalfabetico si deve scoprire lo spostamento di ogni singola lettera.

Page 7: Guida alla crittografia

7

L’aiuto del demonio

A partire dal 1500 l’uso dei messaggi cifrati si diffuse sempre di più e si affinarono le tecniche per decodificarli. La più usata è l’analisi delle frequenze delle lettere. In ogni lingua, infatti, ogni lettera compare con una determinata frequenza; in italiano, ad esempio, la lettera che viene utilizzata più spesso è la “e”. In un messaggio di una certa lunghezza è probabile che la frequenza di ogni lettera corrisponda ai valori medi. Se il messaggio originale è scritto in italiano, ad esempio, è probabile che la lettera che compare più di frequente nel messaggio criptato corrisponda alla “e”. Procedendo in questo modo si può poi trovare la traduzione di tutte le altre lettere. Un maestro in quest’arte fu il matematico francese Françoise Viète (1540-1603), che faceva parte della corte di Enrico IV e riusciva a leggere regolarmente i messaggi cifrati degli spagnoli. Le loro tecniche erano complicate dall’adozione di alcuni accorgimenti: ad esempio una lettera poteva essere tradotta con diversi caratteri da usare indifferentemente, a volte un carattere rimpiazzava una sillaba o un gruppo di lettere, oppure si usavano combinazioni di più lettere per un carattere poco frequente. Viète considerava ogni aspetto del messaggio cifrato; ad esempio cercava di individuare le cosiddette “cifre essenziali”, cioè numeri non tradotti e che probabilmente erano seguiti da parole come “ducati”, “cavalieri”, “soldati”. Gli spagnoli, inoltre, spedivano più volte gli stessi messaggi, e spesso la copia di un messaggio già inviato iniziava con la parola “copia di”. Viète impiegava non più di due o tre giorni a decifrare i messaggi che gli venivano consegnati. Una volta, però, per screditare un suo nemico, Enrico IV decise di divulgare un messaggio che era stato decifrato, rendendo così di dominio pubblico le capacità di decodifica di Viète. Subito il re di Spagna Filippo II chiese al Papa di condannarlo come negromante perché, secondo lui, soltanto con l’aiuto del demonio era possibile leggere i messaggi cifrati utilizzando le elaborate tecniche dei suoi crittografi.

Page 8: Guida alla crittografia

8

Il cifrario di Vigénère

Il “Cifrario di Vigénère” è un’evoluzione del cifrario di Cesare attribuita allo studioso francese Blaise de Vigénère (1523-1596). Il testo cifrato viene ottenuto spostando le varie lettere del testo di un numero di posizioni che varia ogni volta, secondo una “parola chiave” che solo il mittente ed il destinatario conoscono. In questo modo si rende inutilizzabile l’analisi delle frequenze, perché le lettera sono tradotte ogni volta in modo diverso. Ad ogni lettera del messaggio viene “sommata” la lettera corrispondente della “chiave”, che indica di quante posizioni si deve spostare la lettera originale. Una volta che è stata utilizzata per intero, la chiave viene ripetuta. Nella pratica, per sommare due lettere si utilizza una tabella composta in questo modo, la “Tabula recta”:

A B C D E F G H I J K L M N O P Q R S T U V W X Y ZB C D E F G H I J K L M N O P Q R S T U V W X Y Z AC D E F G H I J K L M N O P Q R S T U V W X Y Z A BD E F G H I J K L M N O P Q R S T U V W X Y Z A B CE F G H I J K L M N O P Q R S T U V W X Y Z A B C DF G H I J K L M N O P Q R S T U V W X Y Z A B C D EG H I J K L M N O P Q R S T U V W X Y Z A B C D E FH I J K L M N O P Q R S T U V W X Y Z A B C D E F GI J K L M N O P Q R S T U V W X Y Z A B C D E F G HJ K L M N O P Q R S T U V W X Y Z A B C D E F G H IK L M N O P Q R S T U V W X Y Z A B C D E F G H I JL M N O P Q R S T U V W X Y Z A B C D E F G H I J KM N O P Q R S T U V W X Y Z A B C D E F G H I J K LN O P Q R S T U V W X Y Z A B C D E F G H I J K L MO P Q R S T U V W X Y Z A B C D E F G H I J K L M NP Q R S T U V W X Y Z A B C D E F G H I J K L M N OQ R S T U V W X Y Z A B C D E F G H I J K L M N O PR S T U V W X Y Z A B C D E F G H I J K L M N O P SS T U V W X Y Z A B C D E F G H I J K L M N O P Q RT U V W X Y Z A B C D E F G H I J K L M N O P Q R SU V W X Y Z A B C D E F G H I J K L M N O P Q R S TV W X Y Z A B C D E F G H I J K L M N O P Q R S T UW X Y Z A B C D E F G H I J K L M N O P Q R S T U VX Y Z A B C D E F G H I J K L M N O P Q R S T U V WY Z A B C D E F G H I J K L M N O P Q R S T U V W XZ A B C D E F G H I J K L M N O P Q R S T U V W X Y

Page 9: Guida alla crittografia

9

Per cifrare un carattere si prende la lettera che si trova all'incrocio tra la riga della lettera chiave e la colonna della lettera del testo originale. Nel caso la chiave sia la parola “nascosto”, il testo “Domattina alle cinque dietro al vecchio monastero” verrebbe cifrato in questo modo:

DOMATTINA ALLE CINQUE DIETRO AL VECCHIO MONASTERONASCOSTON ASCO STONAS COSTON AS COSTONA SCOSTONAS

QOECHLBBN ADNS UBBDUW FWWMFB AD XSUVVVO EQBSLHRRG

Per chi conosce la chiave è molto semplice risalire al testo originale: per ogni lettera del testo criptato cerca a che posizione si trova nella riga che corrisponde alla lettera della chiave . Ad esempio, usando la riga della prima lettera della chiave (la “N”), la prima lettera del testo criptato (la “Q”) si trova nella quarta posizione e va tradotta con una “D”. Il cifrario di Vigénère fu considerato assolutamente sicuro per più di duecento anni, ma venne reso inutilizzabile da una nuova e brillante tecnica di decifrazione.

Page 10: Guida alla crittografia

10

Il metodo Kasiski

Nel 1863 il maggiore prussiano in pensione Friedrich Kasiski pubblicò un testo dal titolo “La scrittura segreta e l’arte di decifrare” che avrebbe causato una rivoluzione nella crittografia. Il maggiore Kasiski notò che spesso in un crittogramma di Vigénère si possono notare delle sequenze di caratteri identiche che si trovano ad una certa distanza fra di loro. In ogni lingua si usano frequentemente delle brevi parole (come gli articoli o le preposizioni) che vengono ripetute molto frequentemente. Se il testo è cifrato con il cifrario di Vigénère, di norma queste parole sono tradotte in modo diverso, a seconda della lettera della chiave con cui si comincia. Ad esempio, se la parola “che” si trova all’inizio di un testo per il quale si utilizza come chiave la parola “nascosto”, le tre lettere sono cifrate con le lettere della chiave “nas”, ottenendo:

testo chiave risultatoche nas phw

Se un’altra occorrenza della parola “che” si trova in una posizione in cui viene cifrata con le lettere della parola chiave “cos”, il risultato è diverso:

testo chiave risultatoche cos evw

La parola “che”, quindi, può essere tradotta in parecchi modi diversi, a seconda della lettera della parola chiave con cui si inizia a codificarla.

Page 11: Guida alla crittografia

11

Le sequenze di lettere con cui può essere cifrata sono:

nasascscocosoststotonona

Come si può vedere, ogni parola del testo in chiaro può essere tradotta in tanti modi diversi quante sono le lettere della parola chiave; se il testo è sufficientemente lungo è probabile che si trovino occorrenze della parola “che” tradotte allo stesso modo, ad esempio come “phw”, o “evw”. Lo stesso ragionamento può essere applicato ad ogni altra parola che si ripete più volte nel testo. È molto probabile che tutte le sequenze identiche che si ripetono nel testo corrispondano a parole uguali cifrate con la stessa sequenza di lettere della parola chiave, e che quindi si trovino ad una distanza pari alla lunghezza della parola chiave o ad un suo multiplo. È sufficiente cercare un numero per cui tutte le distanze tra sequenze simili siano esattamente divisibili (in termini matematici, il loro massimo comune divisore) per scoprire la lunghezza della parola chiave. A questo punto il messaggio cifrato si riduce a tanti messaggi intercalati quante sono le lettere della parola chiave, ognuno codificato con un cifrario di Cesare , su cui si possono utilizzare le tecniche consuete, come l’analisi delle frequenze o i tentativi incrementali. Una volta ricostruita una parte del testo, di solito lo si riesce a completare abbastanza rapidamente. Anche se la prima pubblicazione di questo metodo è sicuramente dovuta a Kasiski, forse la stessa scoperta era stata già fatta dal grande matematico inglese Charles Babbage nel suo lavoro per l’esercito inglese che non poté pubblicare per motivi di sicurezza. Babbage fu così costretto a lasciare al maggiore Kasiski la gloria di questo importante progresso della crittoanalisi.

Page 12: Guida alla crittografia

12

Il cifrario di Che Guevara

Quando nel 1967 venne ucciso in Bolivia, il mitico comandante cubano Ernesto Che Guevara aveva con sé un foglio contenente una lunga sequenza di numeri apparentemente privi di significato. Lo stesso Guevara aveva raccontato nel suo libro “Diario in Bolivia” che i fogli che portava con sé rappresentavano un cifrario che gli permetteva di comunicare con Fidel Castro in modo sicuro. Il codice usato era simile al cifrario di Vigénère (per indicare lo spostamento di ogni carattere non si consideravano le lettere della parola chiave, ma numeri), con una importante modifica: la chiave non si ripeteva mai, ma aveva una lunghezza pari a quella del testo da criptare. Come si può intuire dal metodo utilizzato per decifrarlo, il cifrario di Vigénère è tanto più sicuro quanto più la chiave è lunga, perché diventa più difficile trovare nel testo criptato delle sequenze di caratteri che si ripetono. Nel 1918 Gilbert Vernam , un ricercatore dei Bell Laboratories della AT&T, propose di perfezionare il metodo di Vigénère utilizzando chiavi lunghe quanto i messaggi. In questo modo nel testo cifrato non si trova alcuna informazione che possa gettare luce sul messaggio originale: non ci sono sequenze di caratteri che si ripetono indicando una regolarità nella chiave usata, ma il testo cifrato potrebbe corrispondere a qualsiasi testo in chiaro della stessa lunghezza,. È chiaro che la chiave non può essere riutilizzata per altri messaggi, perché in caso contrario l’analisi Kasiski potrebbe essere effettuata non su un singolo messaggio, ma sull’insieme dei messaggi cifrati con la stessa chiave. Nel 1949 Claude Shannon dimostrò che non soltanto un cifrario di Vernam è assolutamente sicuro, ma che è l’unico ad avere questa caratteristica: ogni cifrario teoricamente sicuro è un cifrario di Vernam. Questo modo di ottenere la riservatezza, però, ha un prezzo elevato, perché comunicare una chiave lunga come il messaggio comporta molte difficoltà pratiche. Di solito, quindi, si usano metodi che prevedono chiavi più brevi, sempre caratterizzate dal rischio teorico di essere scoperte. La loro sicurezza risiede soltanto nel fatto che la quantità di calcoli necessaria per scoprirle è tale da non essere

Page 13: Guida alla crittografia

13

alla portata di nessun dispositivo, nemmeno dei calcolatori più potenti.

Page 14: Guida alla crittografia

14

DES ed AES

L’avvento dei calcolatori ha completamente trasformato la crittografia; adesso si utilizzano algoritmi che richiedono un numero di operazioni molto elevato, al di là della portata di qualsiasi essere umano o apparato elettromeccanico. È chiaro che anche le tecniche di attacco sfruttano le capacità dei calcolatori, innescando una sorta di circolo vizioso: un testo codificato anni fa, quando le capacità dei calcolatori erano molto inferiori, può essere facilmente decodificato con un attacco a “forza bruta” con i calcolatori. Questa tecnica prova tutte le possibili combinazioni della chiave fino a trovarne una che produce un testo di senso compiuto. Lo “stato dell’arte” della codifica crittografica è stato rappresentato fino a pochi anni fa dal cosiddetto DES (Data Encryption Standard), definito nel 1977 dal governo degli Stati Uniti. Il DES è un algoritmo “a blocchi”, perché non prende in considerazione i singoli caratteri ma sequenze di 64 bit, che possono contenere 8 caratteri in codifica ASCII. La gestione a blocchi rende impossibile l’analisi delle frequenze delle singole lettere. Se il numero di caratteri di un testo non è multiplo di otto, si aggiungono alla fine degli zeri binari per portare il numero totale di bit ad un multiplo di 64. La chiave utilizzata dal DES, che deve essere conosciuta sia dal mittente che dal destinatario, è anch’essa di 64 bit, ma in realtà ne vengono utilizzati soltanto 56 (gli altri 8 sono dei bit di parità, che ne garantiscono l’integrità). Per rappresentare un numero di 64 bit servono 19 cifre decimali; una chiave DES espressa in forma decimale è qualcosa del tipo:

5768443022347814473

L’algoritmo effettua delle permutazioni sia sulla chiave che sul testo da crittografare, scambiando tra loro i bit secondo delle apposite tabelle. La prima elaborazione sui valori della chiave, ad esempio, utilizza questo ordinamento:

Page 15: Guida alla crittografia

15

57 49 41 33 25 17 9 1 58 50 42 34 26 1810 2 59 51 43 35 27 19 11 3 60 52 44 3663 55 47 39 31 23 15 7 62 54 46 38 30 2214 6 61 53 45 37 29 21 13 5 28 20 12 4

La tabella indica in che modo spostare ognuno dei 64 bit della chiave; il cinquantasettesimo bit della chiave originale diventerà il primo della chiave permutata, il quarantanovesimo diventerà il secondo e così via. Dopo tutte le elaborazioni preliminari previste, si effettua una operazione di XOR bit a bit tra quanto si è ottenuto elaborando il testo e quanto si è ottenuto elaborando la chiave. La scelta dell’operatore di “esclusive or” XOR non è casuale. Infatti, se si conosce il risultato di una operazione di XOR tra due cifre binarie ed una delle due cifre originali, si può risalire al valore dell’altra. L’operatore XOR è descritto da questa tabella, come si è visto nel capitoletto “Circuiti logici”:

parametri risultatoA B C0 0 00 1 11 0 11 1 0

È facile vedere che se come parametri si considerano B e C, e si considera A come risultato, la relazione di XOR è sempre valida:

risultato parametriA B C0 0 00 1 11 0 11 1 0

Page 16: Guida alla crittografia

16

In altri termini:

se C = XOR (A,B) allora A = XOR (B,C) e B = XOR (A,C)

Quindi, se si hanno a disposizione sia la chiave che il testo crittato con una operazione di XOR, si può ottenere il testo originale con un’altra operazione di XOR. Le permutazioni previste dall’algoritmo DES sulla chiave e sul testo in chiaro hanno lo scopo di rendere più pesanti i calcoli necessari per un attacco “a forza bruta”, effettuato provando tutte le possibili combinazioni della chiave: ognuna di esse, infatti, deve essere sottoposta a molte elaborazioni prima di verificare se dà origine ad un testo di senso compiuto. Il numero di possibili combinazioni di una chiave di 56 bit, ovviamente, è di due elevato alla cinquantaseiesima potenza, e cioè di 64 “Peta”, o circa 7 per 10 elevato alla sedicesima potenza, come si è visto nel capitoletto “Un kilobyte non è mille bytes”. Per molto tempo si pensò che la potenza di calcolo necessaria per un attacco a forza bruta al DES fosse al di là delle possibilità tecniche di qualunque organizzazione; ancora nel 1998 il governo americano sosteneva pubblicamente che la forzatura del DES non era possibile nemmeno per un agenzia governativa con grande disponibilità di capitali come l’FBI. Il 17 luglio dello stesso anno, però, un team di tecnici guidati da John Gilmore della Electronic Frountier Foundation, un gruppo per la difesa dei diritti civili, realizzò un sistema in grado di forzare un testo criptato con il DES in pochi giorni. Il sistema aveva un costo di circa 200.000 dollari ed era alla portata di moltissime organizzazioni. Con i calcolatori più recenti forzare un testo codificato con il DESrichiede poche ore. Per rendere più sicura la codifica, si è diffuso l’utilizzo del “Triple DES”, che prevede che lo stesso testo venga sottoposto alle trasformazioni del DES per tre volte successive con tre chiavi diverse, rendendo pressoché impossibile un attacco a forza bruta. Negli ultimi anni, infine, il governo degli Stati Uniti ha proposto un nuovo standard, detto AES (Advanced Encryption Standard), sviluppato dai crittografi belgi Joan Daemen e Vincent Rijmen. L’AES lavora anch’esso su blocchi di testo di 64 bit, ma utilizza chiavi da 128 o 256 bit ed al momento non è vulnerabile agli attacchi a forza bruta.

Page 17: Guida alla crittografia

17

La chiave pubblica

Tutte le tecniche crittografiche che abbiamo descritto richiedono un segreto condiviso; la chiave utilizzata da chi codifica deve essere conosciuta anche da chi deve decodificare. Comunicare la chiave in modo sicuro pone degli ovvi problemi organizzativi e di sicurezza; se viene intercettata tutti i messaggi crittografati possono essere facilmente letti da un estraneo. È chiaro che le cose cambierebbero radicalmente se chi codifica il messaggio non avesse bisogno di una chiave segreta, ma potesse codificare utilizzando delle informazioni pubbliche. Il “trucco” consiste nell’utilizzare una chiave composta da due parti, una pubblica, che può essere comunicata senza problemi, ed un’altra privata, che soltanto il destinatario conosce. Utilizzando la chiave pubblica si può creare un messaggio che solo chi possiede la chiave privata corrispondente è in grado di leggere. La procedura è abbastanza semplice, anche se richiede una grande potenza di calcolo. Chi deve ricevere dei messaggi crittografati genera una propria chiave segreta, privata, che non ha bisogno di comunicare a nessuno. A partire da questa elabora una chiave pubblica, che può distribuire liberamente. Chiunque gli debba spedire un messaggio segreto è in grado creare un testo crittografato che può essere decodificato soltanto da lui. Il concetto di crittografia a chiave pubblica fu definito nel 1976 da Whitfield Diffie e Martin Hellmann, ma vi sono diversi modi di realizzarla. Una delle tecniche più diffuse fu sviluppata da Ron Rivest, Adi Shamir e Leonard Adleman, che fondarono un’azienda chiamata con il nome delle loro iniziali, RSA, ancora attiva nel campo della crittografia commerciale.

Page 18: Guida alla crittografia

18

L’algoritmo di Rivest, Shamir e Adleman

L’algoritmo inventato da Rivest, Shamir e Adleman utilizza le proprietà dei numeri primi. Come tutti i lettori sapranno, sono chiamati “primi” i numeri divisibili solo per sé stessi e per uno (sono primi, ad esempio, 3,5,7,11). Ogni numero non primo è scomponibile in modo univoco in un prodotto di numeri primi (15, a esempio, è scomponibile in 3 per 5). Per elaborare le chiavi pubbliche e private serve un numero scomponibile in due soli fattori primi. Chiameremo questo numero “n” (detto anche “modulo”) e i due numeri primi “p” e “q”.

n = pq

Chiameremo invece n1 il prodotto:

n1 = (p-1)(q-1)

Per ottenere la chiave pubblica, si deve trovare un numero “e” (detto “esponente pubblico”) minore di “n” e che non abbia fattori comuni con n1; in altri termini, non devono esistere numeri per cui sia “e” che “n1” siano esattamente divisibili. Per ottenere la chiave privata, invece, si deve trovare un numero “d” (detto esponente) tale che il risultato della sua moltiplicazione per “e”, diminuito di 1, sia esattamente divisibile per n1; in altri termini, il risultato della divisione:

(ed – 1) / n1

deve essere un numero intero.La chiave pubblica è composta dai numeri “e” ed “n”, la chiave privata dai numeri “d” ed “n”. I numeri utilizzati possono essere anche molto piccoli, come nell’esempio che segue. Immaginiamo che i numeri primi scelti siano 3 e 11. Il loro prodotto “n” è uguale a 33, mentre “n1” è uguale a 20. Come esponente pubblico “e” si può scegliere 3, che non ha fattori comuni

Page 19: Guida alla crittografia

19

con 20, come esponente privato “d” 7, che soddisfa la formula riportata sopra. I numeri da utilizzare per codificare e decodificare sono quindi:

n = 33 e = 3 d = 7

Per crittografare un messaggio “m”, si deve trasformare un numero che rappresenti i suoi caratteri, ad esempio un numero di 64 bit che può contenere otto caratteri ASCII, secondo questa formula:

c = (m elevato ad e) modulo n

In altri termini, si deve moltiplicare “m” per sé stesso tante volte quanto è il valore di “e” e prendere il resto della divisione per “n” (questa operazione è detta “modulo”). Chi riceve il messaggio “c” può risalire al valore originario di “m” con questa formula:

m = (c elevato a d) modulo n

Immaginiamo che il numero da trasmettere sia 7; il valore del testo crittografato diventa:

c = (7 elevato a 3) modulo 33

Il risultato della moltiplicazione di 7 per sé stesso per tre volte è 343. Il resto della divisione di 343 per 33, che dà come risultato 10, è 13.

c = 13

Chi riceve questo valore, può risalire al numero originale con l’operazione:

m = (13 elevato a 7) modulo 33

Il risultato della moltiplicazione di 13 per sé stesso per sette volte è 62.748.517. Prendendo il resto della divisione di 62.748.517 per 33 (che dà come risultato 1.901.470) si ottiene il numero originale, 7.

Page 20: Guida alla crittografia

20

Anche se l’esempio che abbiamo visto è corretto, nella pratica si utilizzano numeri primi molto più grandi, tali da richiedere comunque l’uso di un calcolatore. Di solito il valore del modulo “n” espresso in forma binaria occupa 512 bit, che corrispondono a 128 cifre esadecimali oppure a 155 cifre decimali, qualcosa come:

10941738641570527421809707322040357612003732945449205990913842131476349984288934784717997257891267332497625752899781833797076537244027146743531593354333897

Il motivo dell’utilizzo di numeri così grandi è la necessità di rendere molto difficile la scomposizione in fattori primi del modulo, che è accessibile a tutti perché fa parte della chiave pubblica. Infatti, se si conoscono sia i due fattori primi “p” e “q” che “e”, anch’esso parte della chiave pubblica, è molto facile risalire a “d” ed alla chiave privata. Decomporre in fattori primi il modulo che abbiamo utilizzato (33) è banale, mentre per decomporre il numero indicato sopra possono servire molti anni di calcoli.

Page 21: Guida alla crittografia

21

La chiave di sessione

La crittografia a chiave pubblica è detta anche “asimmetrica”, perché usa chiavi diverse per la codifica e la decodifica, ed è molto più lenta rispetto agli algoritmi “simmetrici” come il DES. Per codificare un testo di 100 KBytes utilizzando una chiave con un modulo di 512 bit può servire un secondo, un’enormità nel mondo dei calcolatori. Se il modulo è più grande, come molte volte è richiesto per motivi di sicurezza, l’algoritmo RSA diventa ancora più lento. Al confronto, il DES è circa 100 volte più veloce. Per sfruttare i benefici di entrambi i sistemi di crittografia, di solito non si codifica un intero testo con la chiave pubblica, ma si usa un sistema misto. Il calcolatore che deve crittografare il messaggio genera una chiave “di sessione” DES o AES, di 64 o 128 bit, e la spedisce come contenuto di un messaggio crittografato. A questo punto il mittente ed il destinatario condividono un segreto, la chiave di sessione, e possono utilizzare senza problemi un algoritmo simmetrico molto veloce. L’utilizzo delle chiavi di sessione facilita anche l’invio dello stesso messaggio a più destinatari in modo sicuro: con la crittografia asimmetrica lo si dovrebbe codificare in modo diverso per ogni destinatario, basandosi sulle rispettive chiavi pubbliche, mentre se si usa una chiave di sessione basta codificarla in modo diverso per ogni destinatario. Il messaggio crittografato sarà composto dal testo codificato con la chiave di sessione e da una breve sezione privata per ogni destinatario, contenente la chiave di sessione crittografata con la sua chiave pubblica. Tra i due segreti, la chiave privata è di gran lunga il più importante. Se si scopre la chiave di sessione si può leggere soltanto un singolo messaggio, mentre se si scopre la chiave privata si possono intercettare tutte le chiavi di sessione e leggere tutti i messaggi inviati ad uno specifico destinatario.

Page 22: Guida alla crittografia

22

La firma digitale

Uno dei modi per verificare l’identità di una persona è chiedergli una “parola d’ordine”, e cioè richiedere che sia a conoscenza di un segreto. Comunicare questo segreto alle persone autorizzate, però, può essere pericoloso; se non ci si può incontrare di persona si deve trovare un sistema sicuro di comunicazione e, ad ogni modo, qualcuno potrebbe sentire la parola d’ordine quando viene pronunciata. La magia della crittografia asimmetrica viene in aiuto anche in questo caso; non solo permette l’uso di una chiave che non si conosce, ma anche di essere certi che qualcuno possegga un segreto senza bisogno di comunicarlo. Chi possiede la chiave privata può generare un numero che solo lui è in grado di calcolare, senza rischio che si possa risalire alla sua chiave privata. La verifica dell’autenticità del numero generato può essere fatta da chiunque a partire dalla chiave pubblica del mittente. Le formule da utilizzare sono molto simili a quelle per la crittografia dei messaggi. Per “firmare digitalmente” un messaggio, e cioè per garantire che il mittente sia proprio chi possiede la chiave privata che corrisponde ad una chiave pubblica conosciuta, in primo luogo si genera a partire dal messaggio un numero “h” di 64 o più bit con una funzione “hash”, che genera un numero apparentemente casuale sulla base del valore passato. In seguito, per ottenere il numero “s” che rappresenta la “firma digitale” del messaggio si applica la formula:

s = (h elevato a d) modulo n

dove “d” rappresenta l’esponente privato, conosciuto soltanto dal mittente, ed “n” il “modulo”. La firma digitale viene inviata in coda al messaggio. Chi riceve il messaggio applica la funzione hash concordata tra le parti al contenuto del messaggio. Subito dopo separa la parte di firma digitale “s” ed usa la formula:

Page 23: Guida alla crittografia

23

h = (s elevato ad e) modulo n

dove “e” rappresenta l’esponente pubblico. Se i due risultati sono identici il mittente è sicuramente chi dice di essere, perché solo lui avrebbe potuto calcolare quel numero. Utilizziamo le stesse chiavi pubbliche e private dell’esempio precedente:

n = 33 e = 3 d = 7

Se l’hash del messaggio da trasmettere è 5, il valore della firma digitale diventa:

s = (5 elevato a 7) modulo 33

Il risultato della moltiplicazione di 5 per sé stesso per sette volte è 78.125. Il resto della divisione di 78.125 per 33, che dà come risultato 2367, è 14.

s = 14

Chi riceve il messaggio può calcolare il suo hash, ottenendo 5, e poi controllare la firma digitale con l’operazione:

h = (14 elevato a 3) modulo 33

Il risultato della moltiplicazione di 14 per sé stesso per tre volte è 2.744. Il resto della divisione di 2.744 per 33 (che dà come risultato 83) è proprio 5, il valore dell’hash. La firma digitale, oltre a garantire l’identità del mittente, garantisce anche l’integrità del messaggio. Infatti, se il messaggio viene modificato nel corso della trasmissione, il suo hash cambia e la verifica della firma digitale fallisce. La chiave pubblica può essere conosciuta da tutti senza problemi, ad esempio può essere riportata su di un sito web, ma si deve essere certi che corrisponda proprio all’utente a cui è associata. In caso contrario, un malintenzionato potrebbe calcolare una coppia di chiavi privata e pubblica, e diffondere la falsa chiave pubblica attribuendola

Page 24: Guida alla crittografia

24

ad un utente di cui vuole falsificare la firma. Chi utilizzasse questa chiave pubblica inevitabilmente prenderebbe per autentici i messaggi firmati con la chiave privata del malintenzionato. Per essere sicuri che una chiave pubblica appartenga ad un utente si usano i “certificati digitali”, che sono composti dal nome di un utente e dalla sua chiave pubblica, il tutto firmato digitalmente da una “certification authority”, una organizzazione universalmente riconosciuta, come VeriSign, SecureNet, GTE CyberTrust. Prima di rilasciare un certificato ad un utente, una certification authority verifica che sia proprio lui, ad esempio chiedendo che si presenti con un documento di identità. Ma, infine, come si può essere certi dell’identificazione della certification authority stessa, e cioè dell’autenticità della chiave pubblica usata per firmare un certificato? Queste chiavi sono “hardcoded”, e cioè comprese direttamente nel software, nei programmi utilizzati per leggere i messaggi di posta elettronica o per navigare sul Web. Il programma Internet Explorer di Microsoft, ad esempio, contiene le chiavi pubbliche di decine di certification authorities. Per un malintenzionato intervenire a questo livello sarebbe davvero difficile.

Page 25: Guida alla crittografia

25

Il prezzo della chiave segreta

Come ogni genere di immagini, anche i programmi televisivi possono essere digitalizzati, e cioè ridotti a sequenze di numeri. Questo rende possibile applicare la crittografia in modo che soltanto chi paga un canone li possa vedere; basta trasmetterli in maniera criptata e fornire la chiave di decodifica a chi sottoscrive un abbonamento. Dal punto di vista pratico, chi si abbona riceve un apparecchio decodificatore da inserire tra l’antenna ed il televisore, in grado di ricostruire quasi istantaneamente le immagini originali una volta conosciuta la chiave segreta. Mentre si può essere abbastanza sicuri che chi non possiede la chiave non possa vedere i programmi, la distribuzione della chiave pone problemi ancora maggiori del solito. Normalmente, infatti, il destinatario di un messaggio segreto ha interessi in comune con il mittente e cerca di tenere segreta la codifica; in questo caso, invece, chi riceve i programmi non ha motivo di collaborare e non si può contare su di lui perché mantenga la segretezza delle chiavi. Nulla impedisce agli abbonati che ricevono la chiave segreta di comunicarla ad amici e conoscenti. Per superare questo problema, non si manda agli abbonati un codice da digitare sul decodificatore ma si fornisce una cosiddetta “smart card”. Questo dispositivo, che ha l’aspetto esteriore di una carta di credito, non solo può memorizzare il codice in modo sicuro ma permette di variarlo continuamente. Le smart card contengono al loro interno un piccolo calcolatore con una certa quantità di memoria, in cui è memorizzata una chiave crittografica. Esse sono costruite in modo che non sia possibile leggerne la memoria interna; ogni tentativo di accesso le distrugge. Ogni minuto o poco più il codice usato per crittografare le trasmissioni viene cambiato; immediatamente prima di ogni cambiamento si trasmette il nuovo codice crittografato con la chiave contenuta nella smart card. La smart card lo traduce e lo comunica al decodificatore; se anche venisse diffuso, poco male: sarebbe già scaduto prima di riuscire ad utilizzarlo.

Page 26: Guida alla crittografia

26

Nonostante queste precauzioni, spesso i “pirati” informatici hanno trovato il modo di rendere visibili le trasmissioni televisive criptate anche a chi non aveva pagato l’abbonamento, utilizzando delle smart card contraffatte, in grado di emulare il comportamento di quelle autentiche. Alcuni esperti hanno ipotizzato che questo sia avvenuto con il tacito consenso delle televisioni stesse, che hanno utilizzato algoritmi deboli con chiavi di dimensione insufficiente ed in questo modo hanno potuto ampliare notevolmente la platea di spettatori, allargandola a chi in prima battuta non sarebbe stato disposto a sottoscrivere un abbonamento. In seguito, rendendo più difficile la decodifica, ad esempio distribuendo agli abbonati un nuovo tipo di smart card, hanno spinto gli spettatori non autorizzati a sottoscrivere un regolare abbonamento per non perdere un servizio a cui erano ormai abituati.

Page 27: Guida alla crittografia

27

Sicuri su Internet

Su Internet sostanzialmente non esiste sicurezza dei dati. I pacchetti che viaggiano tra un calcolatore e l’altro possono seguire qualsiasi strada ed essere intercettati in qualsiasi punto. D’altra parte, Internet è ormai lo strumento principale di comunicazione tra i calcolatori ed è necessario utilizzarla anche per inviare dati riservati, come le informazioni bancarie. Per garantire la sicurezza dei dati la soluzione ovvia è la crittografia, ma criptare i singoli messaggi o le singole transazioni sarebbe molto macchinoso. La soluzione più elegante consiste nel criptare tutto il canale di comunicazione tra due calcolatori, intervenendo direttamente al livello della trasmissione dei dati. A questo scopo si utilizza il protocollo SSL (“secure socket layer”, in italiano strato sicuro dei “socket”, il componente software usato per i protocolli di rete), con il quale i programmi in esecuzione su due calcolatori possono comunicare in modo sicuro senza altri accorgimenti. Per realizzare le trasmissioni SSL si utilizza, come di consueto, una combinazione di crittografia simmetrica e di crittografia a chiave pubblica. I calcolatori che forniscono servizi SSL devono avere una loro chiave pubblica. Un calcolatore che richiede un servizio elabora una chiave di sessione, la codifica con la chiave pubblica del server e gliela invia. Tutte le comunicazioni successive sono crittografate con la chiave di sessione, utilizzando algoritmi come DES o AES. In questo modo si garantisce anche l’integrità dei dati. Su Internet in teoria si potrebbe intercettare un messaggio e sostituirne una sua parte, ad esempio trasformando l’importo di un ordine di bonifico da 100 a 1000 euro e lasciando inalterato tutto il resto. Se i dati sono crittografati , invece, non si possono leggere e quindi neppure modificare: la loro integrità è garantita. Il protocollo SSL è utilizzato dalla maggioranza dei siti web che trattano informazioni riservate, come i siti che permettono di accedere ai conti correnti bancari. Quando un sito adotta SSL il suo nome contiene la sigla “https”, che sta per “http sullo strato SSL”, ad esempio:

Page 28: Guida alla crittografia

28

https://www.miabanca.com

I programmi utilizzati per accedere al web, i “browser”, indicano in modo grafico che le comunicazioni utilizzano un protocollo sicuro, mostrando l’immagine di un lucchetto. Il dialogo sicuro tra due calcolatori può essere esteso alle comunicazioni di un intero gruppo di calcolatori, ad esempio tutti quelli che fanno parte della rete di un’azienda. Anche se si trovano su Internet, questi calcolatori devono essere in grado di comunicare tra loro in modo riservato, come se fossero collegati ad una rete privata. La soluzione, nota con il nome di VPN (“Virtual private network”, “rete privata virtuale”), consiste nel crittografare con la stessa chiave tutte le comunicazioni tra i calcolatori del gruppo. Gli altri calcolatori vedranno girare sulla rete soltanto dei pacchetti di dati privi di significato. Questa soluzione è utile in particolare se un dipendente si trova fuori sede, ma in un posto da cui si può collegare ad Internet (il che oggi significa sostanzialmente in qualsiasi posto nel mondo), ed ha bisogno di accedere con il suo calcolatore portatile alla rete aziendale. Prima della comparsa di questa tecnologia era necessario che il dipendente si collegasse direttamente alla sede con una costosa chiamata telefonica via modem, mentre con una VPN la riservatezza è garantita qualsiasi tipo di collegamento si utilizzi.

Page 29: Guida alla crittografia

29

Quanto sono sicuri i metodi crittografici?

L’attacco a “forza bruta” è il metodo principale per scoprire le chiavi crittografiche. Questa tecnica è simile a quella utilizzata dalle “Bombe” e prova tutte le possibili combinazioni di una chiave fino a trovarne una che produca una serie di parole di senso compiuto. L’informazione che si sfrutta è che il testo trasmesso deve avere coerenza interna. C’è sempre, però, la possibilità di ottenere, provando con uno dei possibili valori della chiave, un testo sensato ma diverso dall’originale. Se si considera ad esempio l’algoritmo DES, ogni blocco di dati comprende 8 bytes (64 bit) mentre la chiave è di 56 bit. Il numero di possibili valori che il testo può assumere è di due elevato alla sessantaquattresima potenza, e cioè 16 Esa, circa

16.000.000.000.000.000.000

mentre il numero di possibili combinazioni della chiave è di due elevato alla cinquantaseiesima potenza, e cioè 64 Peta, circa

64.000.000.000.000.000

Poiché il numero di possibili valori della chiave è inferiore al numero di possibili valori del testo, procedendo a forza bruta si può ottenere soltanto una frazione di questi ultimi. Per calcolarla si deve dividere due elevato a 64 per due elevato a 56; utilizzando le proprietà delle potenze viste nel capitoletto “La scala esponenziale”, si può utilizzare l’esponente ottenuto sottraendo 56 a 64: il risultato è due elevato alla ottava, ed esattamente 256. In altri termini, procedendo a forza bruta si può ottenere un duecentocinquantaseiesimo delle combinazioni di lettere possibili; tra queste vi saranno non solo il testo originale ma anche altri testi dotati di senso, il cui numero si può ottenere dividendo per 256 il numero totale di combinazioni sensate di otto lettere. Queste combinazioni comprendono la maggior parte delle parole della

Page 30: Guida alla crittografia

30

lingua italiana, che sono diverse decine di migliaia, e molte combinazioni di parole più corte di otto lettere; è inutile cercare di calcolarne il numero esatto, ma si può dire che è dell’ordine dei milioni: dividendolo per 256, si ottiene un numero dell’ordine delle migliaia. Provando a caso su un blocco di otto caratteri tutti i possibili valori di una chiave di 56 bit, quindi, si otterranno assieme al testo originale almeno un migliaio di “falsi positivi”, testi dotati di senso ma diversi dall’originale. A questo punto è chiaro che trovare una chiave che traduce correttamente un solo blocco non significa niente; per essere sicuri che sia quella giusta, si deve verificare che riesca a tradurre anche altri blocchi. Per rendere impossibile un attacco a forza bruta, quindi, si deve evitare di cifrare più blocchi con la stessa chiave. Un metodo ancora più sicuro consiste nel fare in modo che le possibili combinazioni della chiave siano uguali alle possibili combinazioni dell’intero testo, utilizzando una chiave con una lunghezza paragonabile a quella del messaggio. In questo caso non si può in alcun modo sfruttare la coerenza del testo, perché provando a caso i valori della chiave si può trovare indifferentemente qualsiasi combinazione di lettere, sia il testo originale che un sonetto di Shakespeare. Questo genere di codifica assolutamente sicura non è altro che la codifica di Vernam, di cui si è già parlato nel capitoletto “Il cifrario di Che Guevara” e che genera difficoltà pratiche insormontabili. Di solito, quindi, si utilizza la stessa chiave per tutti i blocchi di un messaggio e ci si assume il rischio che un attacco a forza bruta possa tradurlo, confidando sulle difficoltà causa dell’enormità del numero di combinazioni da provare. In effetti, poiché qualsiasi combinazione ha le stesse probabilità di essere quella giusta, un attacco a forza bruta potrebbe avere successo al primo colpo. La sicurezza dei metodi crittografici non è assoluta, ma probabilistica. Queste considerazioni potrebbero sembrare inquietanti, perché facciamo affidamento sulla crittografia per inviare in modo sicuro dati bancari ed ogni genere di informazioni della massima riservatezza. Fortunatamente la probabilità che un attacco a forza bruta abbia successo al primo colpo è così bassa che non vale la pena prenderla in considerazione, come non prendiamo in

Page 31: Guida alla crittografia

31

considerazione innumerevoli eventi che si potrebbero verificare con una probabilità minima. Nel caso di una codifica DES, la probabilità del successo immediato di un attacco a forza bruta è appunto di uno su due elevato alla cinquantaseiesima potenza, e cioè di uno su 64 “Peta”, o circa uno su 64.000.000.000.000.000. Per confronto, si ritiene che la frequenza con cui si verifica l’impatto di un meteorite da "catastrofe globale", in grado di provocare la morte di un quarto della popolazione mondiale, sia di una ogni milione di anni circa; in altri termini, la probabilità che questo accada nel prossimo minuto è di uno su:

1.000.000 x 525.600 (numero di minuti in un anno)

circa 500.000.000.000. La probabilità di una catastrofe globale nel prossimo minuto è più di 100.000 maggiore della probabilità che un attacco ad una codifica DES abbia successo al primo colpo. Questa probabilità è così bassa che si può dire, trasformando un aspetto quantitativo in un aspetto qualitativo, che semplicemente non esiste.

Page 32: Guida alla crittografia

32

Caccia ai numeri primi

Scomporre in fattori primi un numero qualsiasi è un importante esercizio matematico; se vi sentite particolarmente portati a questa attività, potreste vincere 10.000 dollari (i dettagli sono disponibili sul sito http://www.rsasecurity.com/rsalabs/challenges/factoring/numbers.html) scomponendo in fattori primi questo numero:

188198812920607963838697239461650439807163563379417382700763356422988859715234665485319060606504743045317388011303396716199692321205734031879550656996221305168759307650257059

Troppo semplice? Potreste allora puntare al primo premio (200.000 dollari) scomponendo, anziché questo numero di 174 cifre decimali, un ben più corposo numero di 617 cifre. Il lavoro è difficile, ma c’è una traccia per gli aspiranti scopritori: i fattori primi di questo numero sono solamente due, il che significa che si devono trovare due numeri (primi) che moltiplicati tra loro producono questo risultato. Quali siano questi due numeri non lo sa nessuno, neppure gli esperti dei laboratori RSA che propongono il concorso. Il numero è stato prodotto con un programma di generazione casuale che è stato fatto girare su un PC il cui disco fisso è stato distrutto. Questo premio è sponsorizzato dalla stessa RSA e, come i lettori avranno già capito, il suo scopo è garantire che la scomposizione del modulo delle chiavi pubbliche non sia fattibile. In caso contrario, come si è già visto, sarebbe molto semplice risalire alla corrispondente chiave privata. Per scomporre un numero in fattori primi ci sono algoritmi banali (basta provare con tutti i numeri primi più piccoli del numero di partenza) e algoritmi molto sofisticati, ma anche con questi ultimi è necessario molto tempo ed una potenza di calcolo impressionante per numeri come quelli del concorso. Si è stimato che per scomporre un numero di 232 cifre decimali (pari a 768 cifre binarie, premio da

Page 33: Guida alla crittografia

33

50.000 dollari) sarebbe necessario che 215.000 calcolatori lavorassero per un anno intero. Un vecchio premio per la scomposizione di un numero con 155 cifre decimali è stato vinto nel 1999 da un team di ricercatori che ha utilizzato circa 300 calcolatori per diversi mesi. Questo risultato ha dimostrato che i numeri con 155 cifre decimali (pari a 512 cifre binarie), usati fino a qualche anno fa come modulo delle chiavi pubbliche, non possono più essere ritenuti “sicuri”, perché la loro scomposizione è alla portata dei calcolatori attuali. Adesso si utilizzano chiavi pubbliche con 768 o 1024 cifre binarie (pari a 232 o 309 cifre decimali). Un giorno, però, con l’aumentare della potenza di calcolo dei calcolatori, è possibile che si riescano a scomporre in un tempo ragionevole anche numeri di queste dimensioni, e che diventi quindi necessario utilizzare chiavi pubbliche ancora più grandi.

Page 34: Guida alla crittografia

34

Indice dei nomi

Adleman; 17; 18AES; 16; 21; 27AT&T; 12Babbage; 11Bell Laboratories; 12Castro; 12Cesare; 4; 5; 6; 8; 11Che Guevara; 12; 30Daemen; 16DES; 14; 16; 21; 27; 29; 31Diffie; 17Electronic Frountier

Foundation; 16Enrico IV; 7Filippo II; 7Gilmore; 16Giulio Cesare; 3; 5GTE CyberTrust; 24Hellmann; 17

html; 32http; 27; 32Kasiski; 10; 11; 12Microsoft; 24Rijmen; 16Rivest; 17; 18RSA; 17; 21; 32SecureNet; 24Shakespeare; 30Shamir; 17; 18Shannon; 12SSL; 27Svetonio; 4VeriSign; 24Vernam; 12; 30Viète; 7Vigénère; 8; 9; 10; 12VPN; 28

Page 35: Guida alla crittografia

35

Indice

La lingua segreta....................................................................................3Il cifrario di Cesare.................................................................................4L’aiuto del demonio...............................................................................7Il cifrario di Vigénère.............................................................................8Il metodo Kasiski.................................................................................10Il cifrario di Che Guevara....................................................................12DES ed AES.........................................................................................14La chiave pubblica...............................................................................17L’algoritmo di Rivest, Shamir e Adleman...........................................18La chiave di sessione............................................................................21La firma digitale...................................................................................22Il prezzo della chiave segreta...............................................................25Sicuri su Internet..................................................................................27Quanto sono sicuri i metodi crittografici?............................................29Caccia ai numeri primi.........................................................................32Indice dei nomi.....................................................................................34Indice....................................................................................................35