Sei sulla pagina 1di 35

1

Alberto Viotto
alberto_viotto@hotmail.com

Guida alla crittografia

Copyright 2007

Questo breve volumetto descrive alcuni dei metodi crittografici usati nellantichit 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 unidea generale del magico mondo della crittografia..

Se qualche lettore lo trovasse interessante o ne volesse discutere, allautore farebbe piacere ricevere delle e-mail allindirizzo: alberto_viotto@hotmail.com

La lingua segreta Chi invia un messaggio desidera che soltanto il destinatario lo possa leggere. Le lettere sono inviate allinterno 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.

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 nellordine alfabetico. Ogni a, ad esempio, diventava una d, ogni b una e, e cos via. Le ultime tre lettere dellalfabeto, 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 A B C D E F G H codice D E F G H I K L lettera I K L M N O P Q codice M N O P Q R S T lettera R S T V X Y Z codice V X Y Z A B C

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 loriginale soltanto se si conosce la lingua usata, e cio se si conoscono le modalit di traduzione.

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 unaltra 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 dellalfabeto che si utilizza, nel caso dellalfabeto latino ventitr in tutto (lalfabeto 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 lalfabeto 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

Luso 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.

I cifrari monoalfabetici sono unevoluzione del cifrario di Cesare, in cui ogni lettera spostata di un numero di posizioni diverso per ogni lettera dellalfabeto; ad esempio la A tradotta con una D, ma una B non tradotta con una E ma con unaltra lettera. Con un cifrario di Cesare, una volta scoperto lo spostamento di una lettera si pu tradurre lintero testo, mentre con un cifrario monoalfabetico si deve scoprire lo spostamento di ogni singola lettera.

Laiuto del demonio A partire dal 1500 luso dei messaggi cifrati si diffuse sempre di pi e si affinarono le tecniche per decodificarli. La pi usata lanalisi 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 questarte fu il matematico francese Franoise Vite (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 dalladozione 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. Vite 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. Vite 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 Vite. Subito il re di Spagna Filippo II chiese al Papa di condannarlo come negromante perch, secondo lui, soltanto con laiuto del demonio era possibile leggere i messaggi cifrati utilizzando le elaborate tecniche dei suoi crittografi.

Il cifrario di Vignre Il Cifrario di Vignre unevoluzione del cifrario di Cesare attribuita allo studioso francese Blaise de Vignre (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 lanalisi 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 Z 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 A C D E F G H I J K L M N O P Q R S T U V W X Y Z A B D E F G H I J K L M N O P Q R S T U V W X Y Z A B C E F G H I J K L M N O P Q R S T U V W X Y Z A B C D F G H I J K L M N O P Q R S T U V W X Y Z A B C D E G H I J K L M N O P Q R S T U V W X Y Z A B C D E F H I J K L M N O P Q R S T U V W X Y Z A B C D E F G I J K L M N O P Q R S T U V W X Y Z A B C D E F G H J K L M N O P Q R S T U V W X Y Z A B C D E F G H I K L M N O P Q R S T U V W X Y Z A B C D E F G H I J L M N O P Q R S T U V W X Y Z A B C D E F G H I J K M N O P Q R S T U V W X Y Z A B C D E F G H I J K L N O P Q R S T U V W X Y Z A B C D E F G H I J K L M O P Q R S T U V W X Y Z A B C D E F G H I J K L M N P Q R S T U V W X Y Z A B C D E F G H I J K L M N O Q R S T U V W X Y Z A B C D E F G H I J K L M N O P R S T U V W X Y Z A B C D E F G H I J K L M N O P Q S T U V W X Y Z A B C D E F G H I J K L M N O P Q R T U V W X Y Z A B C D E F G H I J K L M N O P Q R S U V W X Y Z A B C D E F G H I J K L M N O P Q R S T V W X Y Z A B C D E F G H I J K L M N O P Q R S T U W X Y Z A B C D E F G H I J K L M N O P Q R S T U V X Y Z A B C D E F G H I J K L M N O P Q R S T U V W Y Z A B C D E F G H I J K L M N O P Q R S T U V W X Z A B C D E F G H I J K L M N O P S R S T U V W X Y

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 MONASTERO NASCOSTON 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 Vignre fu considerato assolutamente sicuro per pi di duecento anni, ma venne reso inutilizzabile da una nuova e brillante tecnica di decifrazione.

10

Il metodo Kasiski Nel 1863 il maggiore prussiano in pensione Friedrich Kasiski pubblic un testo dal titolo La scrittura segreta e larte di decifrare che avrebbe causato una rivoluzione nella crittografia. Il maggiore Kasiski not che spesso in un crittogramma di Vignre 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 Vignre, 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 allinizio 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 che chiave nas risultato phw

Se unaltra occorrenza della parola che si trova in una posizione in cui viene cifrata con le lettere della parola chiave cos, il risultato diverso: testo che chiave cos risultato 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.

11

Le sequenze di lettere con cui pu essere cifrata sono: nas asc sco cos ost sto ton ona 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 lanalisi 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 lesercito 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.

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 Vignre (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 Vignre 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 Vignre 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 lanalisi Kasiski potrebbe essere effettuata non su un singolo messaggio, ma sullinsieme dei messaggi cifrati con la stessa chiave. Nel 1949 Claude Shannon dimostr che non soltanto un cifrario di Vernam assolutamente sicuro, ma che lunico 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

13

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

14

DES ed AES Lavvento 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 dellarte 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 lanalisi 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, anchessa di 64 bit, ma in realt ne vengono utilizzati soltanto 56 (gli altri 8 sono dei bit di parit, che ne garantiscono lintegrit). Per rappresentare un numero di 64 bit servono 19 cifre decimali; una chiave DES espressa in forma decimale qualcosa del tipo: 5768443022347814473 Lalgoritmo 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:

15

57 10 63 14

49 2 55 6

41 59 47 61

33 51 39 53

25 43 31 45

17 35 23 37

9 27 15 29

1 19 7 21

58 11 62 13

50 3 54 5

42 60 46 28

34 52 38 20

26 44 30 12

18 36 22 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 delloperatore 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 dellaltra. Loperatore XOR descritto da questa tabella, come si visto nel capitoletto Circuiti logici: parametri B 0 1 0 1 risultato C 0 1 1 0

A 0 0 1 1

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

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 unaltra operazione di XOR. Le permutazioni previste dallalgoritmo 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 lFBI. 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 DES richiede poche ore. Per rendere pi sicura la codifica, si diffuso lutilizzo 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. LAES lavora anchesso 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.

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 nellutilizzare una chiave composta da due parti, una pubblica, che pu essere comunicata senza problemi, ed unaltra 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 unazienda chiamata con il nome delle loro iniziali, RSA, ancora attiva nel campo della crittografia commerciale.

18

Lalgoritmo di Rivest, Shamir e Adleman Lalgoritmo 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 nellesempio 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

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 loperazione: 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.

20

Anche se lesempio che abbiamo visto corretto, nella pratica si utilizzano numeri primi molto pi grandi, tali da richiedere comunque luso 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: 1094173864157052742180970732204035761200373294544920599 0913842131476349984288934784717997257891267332497625752 899781833797076537244027146743531593354333897 Il motivo dellutilizzo 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, anchesso 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.

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, unenormit nel mondo dei calcolatori. Se il modulo pi grande, come molte volte richiesto per motivi di sicurezza, lalgoritmo 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. Lutilizzo delle chiavi di sessione facilita anche linvio 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.

22

La firma digitale Uno dei modi per verificare lidentit di una persona chiedergli una parola dordine, 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 dordine quando viene pronunciata. La magia della crittografia asimmetrica viene in aiuto anche in questo caso; non solo permette luso 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 dellautenticit 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 lesponente 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:

23

h = (s elevato ad e) modulo n dove e rappresenta lesponente 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 dellesempio precedente: n = 33 e=3 d=7

Se lhash 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 loperazione: 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 dellhash. La firma digitale, oltre a garantire lidentit del mittente, garantisce anche lintegrit 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 allutente a cui associata. In caso contrario, un malintenzionato potrebbe calcolare una coppia di chiavi privata e pubblica, e diffondere la falsa chiave pubblica attribuendola

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 dellidentificazione della certification authority stessa, e cio dellautenticit 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.

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 lantenna 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 laspetto 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.

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 labbonamento, 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.

27

Sicuri su Internet Su Internet sostanzialmente non esiste sicurezza dei dati. I pacchetti che viaggiano tra un calcolatore e laltro possono seguire qualsiasi strada ed essere intercettati in qualsiasi punto. Daltra 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 lintegrit dei dati. Su Internet in teoria si potrebbe intercettare un messaggio e sostituirne una sua parte, ad esempio trasformando limporto 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:

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 limmagine 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 unazienda. 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.

29

Quanto sono sicuri i metodi crittografici?

Lattacco 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. Linformazione 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 dalloriginale. Se si considera ad esempio lalgoritmo 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 lesponente 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

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 dellordine dei milioni: dividendolo per 256, si ottiene un numero dellordine 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 dalloriginale. 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 dellintero 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 dellenormit 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

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 limpatto 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.

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: 1881988129206079638386972394616504398071635633794173827 0076335642298885971523466548531906060650474304531738801 1303396716199692321205734031879550656996221305168759307 650257059 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

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 laumentare 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.

34

Indice dei nomi


Adleman.............................17, 18 AES..............................16, 21, 27 AT&T.......................................12 Babbage....................................11 Bell Laboratories......................12 Castro.......................................12 Cesare.......................4, 5, 6, 8, 11 Che Guevara.......................12, 30 Daemen....................................16 DES............14, 16, 21, 27, 29, 31 Diffie........................................17 Electronic Frountier Foundation ..............................................16 Enrico IV....................................7 Filippo II....................................7 Gilmore....................................16 Giulio Cesare..........................3, 5 GTE CyberTrust.......................24 Hellmann..................................17 html..........................................32 http.....................................27, 32 Kasiski..........................10, 11, 12 Microsoft..................................24 Rijmen......................................16 Rivest.................................17, 18 RSA..............................17, 21, 32 SecureNet.................................24 Shakespeare..............................30 Shamir................................17, 18 Shannon....................................12 SSL...........................................27 Svetonio.....................................4 VeriSign...................................24 Vernam...............................12, 30 Vite...........................................7 Vignre.....................8, 9, 10, 12 VPN..........................................28

35

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