Codici e segreti storie e matematica intorno alla crittografia 21 dicembre 2010 Prof. Fabio Bonoli Introduzione Negli anni Sessanta e Settanta dello scorso secolo, in pieno sviluppo informatico, le vecchie macchine cifranti elettromeccaniche usate per scopi di crittografia – vale a dire per trasmettere messaggi al riparo da possibili, indesiderate, intercettazioni – vennero progressivamente sostituite da dispositivi elettronici che, oltretutto, garantivano maggiore velocità, maggiore sicurezza e risparmio economico. Introduzione Allo stesso tempo, il grande pubblico venne a conoscenza di alcuni successi crittografici di notevole rilievo che, fino ad allora, erano ancora sotto segreto. L’immaginazione fu colpita soprattutto da vicende belliche relative alla Seconda Guerra Mondiale, nella quale si intrecciano spionaggio, cultura meccanica e capacità di addentrarsi nelle strutture logiche e combinatorie più intricate, come nel caso della macchina Enigma, da parte delle forze alleate in Europa. Introduzione Fu in questo contesto particolare che, nel 1976, due scienziati americani, Whitfield Diffie e Martin Hellman diedero vita al nuovo settore della crittografia a chiave pubblica. Questa idea, solo due anni più tardi ricevette una concreta implementazione nel sistema detto RSA dal nome dei suoi ideatori: Ronald Rivest, Adi Shamir e Leonard Adleman. Introduzione La chiave pubblica ha trasformato la crittografia da un’antica ‘arte’ in una scienza moderna. Ciò è avvenuto grazie all’incontro della pratica millenaria della crittografia, dotata soprattutto di regole empiriche, con una scienza formale rigorosa – la teoria dei numeri – che, nella concezione di Gauss è la “regina della matematica” (che a sua volta, sempre nella sua concezione, è la “regina della scienza”). Vi racconto 3 storie 1. Gennaio 1917: prima guerra mondiale, U-boot e un certo ministro Zimmermann… 2. Ottobre 1586: Maria Stuarda sta per essere giustiziata… 3. 1820: i crittogrammi Beale e una caccia al tesoro non ancora conclusa… Prima guerra mondiale • Il presidente USA Wilson non vuole mandare truppe in Europa, nonostante le forti pressioni britanniche. • 1916: Berlino, viene nominato ministro degli Esteri Arthur Zimmermann • 1915: un U-Boot tedesco aveva affondato il transatlantico Louisiana, causando più di 1500 morti. Gli Usa non intervengono, la Germania assicura di far emergere i sottomarini, prima di attaccare. Prima guerra mondiale • 1917: Zimmermann decide di intensificare la guerra navale, sperando in una fine rapida della guerra… e gli Stati Uniti? Ecco il piano Zimmermann: alleanza con il Messico, che avrebbe dovuto invadere gli USA reclamando vecchi territori; il presidente messicano doveva poi mediare per convincere il Giappone ad attaccare gli Stati Uniti. Prima guerra mondiale Intendiamo iniziare una guerra sottomarina senza restrizioni a partire dal primo febbraio. Tenteremo, nonostante ciò, di far restare neutrali gli Stati Uniti. Qualora risultasse impossibile, intendiamo rivolgere al Messico una proposta di alleanza sulle basi seguenti: muovere guerra insieme, ottenere la pace insieme, generoso sostegno finanziario e nostro assenso alla riconquista da parte del Messico dei territori perduti in Texas, Nuovo Messico e Arizona. A lei la definizione dei particolari. Informerete il Presidente (della Repubblica Messicana) di quanto sopra, nella massima segretezza, non appena lo scoppio della guerra con gli Stati Uniti sia certo, aggiungendo il suggerimento che egli, di sua iniziativa, inviti il Giappone ad aderire immediatamente, e nel contempo funga da intermediario tra noi e il Giappone. Vi prego di richiamare l'attenzione del Presidente sul fatto che l'impiego senza restrizioni dei nostri sottomarini schiude la possibilità di costringere l'Inghilterra alla pace entro pochi mesi. Accusare ricevuta. Zimmermann Prima guerra mondiale Prima guerra mondiale Gli inglesi intercettano e decifrano il messaggio, che giunse così agli americani, ma non in modo diretto. Gli inglesi non volevano far capire di essere in grado di decifrare i messaggi tedeschi. Con l’aiuto dei servizi segreti riuscirono ad intercettare la copia del telegramma giunta in Messico. Wilson chiede al congresso degli Stati Uniti d’America di considerare il telegramma come un atto di guerra. La corrispondenza segreta di Maria Stuarda 15 ottobre 1586: Maria Stuarda entra nell’affollata aula di giustizia del castello di Fotheringhay. Maria, regina degli scozzesi, è accusata di tradimento: avrebbe partecipato ad un complotto mirante ad uccidere la regina Elisabetta. Sir Francis Walshingham intende dimostrare che la Stuarda merita la morte perché partecipe alla congiura. Solo così Elisabetta firmerà la sua condanna. La corrispondenza segreta di Maria Stuarda Gradirei sapere i nomi e i meriti dei sei gentiluomini che devono attuare il disegno; potrei infatti, conoscendo le parti interessate, dare al riguardo ulteriori consigli cui sarà necessario attenersi, e indicazioni su come procedere in taluni frangenti: e appena potete, per la stessa ragione [fatemi sapere] chi sia già stato, e in che misura, messo a parte di ciò. La corrispondenza cifrata di Maria di Scozia dimostra che crittare in modo debole può esser peggio che non crittare. Infatti la regina e Babington si espressero senza perifrasi perché contavano sulla cifratura; se i biglietti fossero stati in inglese ordinario, avrebbero alluso ai loro piani con maggiore discrezione. La caccia al tesoro Beale Tra la gente comune il secondo Ottocento vide un grande aumento della curiosità per le scritture segrete. La nascita del telegrafo aveva aumentato l'interesse commerciale per la crittografia. Anche i privati cittadini presero coscienza della necessità di proteggere i loro messaggi, quando riguardavano questioni delicate e strettamente personali. Per farlo erano disposti a crittarli, anche a costo di pagare una tariffa più elevata. La caccia al tesoro Beale Per esempio, nell'Inghilterra vittoriana i giovani innamorati spesso non erano liberi di manifestare i loro sentimenti. Così finirono per ricorrere agli spazi a pagamento dei quotidiani, ai quali inviavano romantici messaggi cifrati dopo aver concordato la chiave con l'anima gemella. Queste «colonne dei sospiri» <agony columns>, diventarono una ghiotta riserva di caccia per i crittoanalisti, che le sottoponevano ad analisi statistica e cercavano di ricostruirne il contenuto. La caccia al tesoro Beale II crescente interesse della gente comune per la crittografia fece sì che codici trovassero posto nella letteratura del secondo Ottocento. Nel Viaggio al centro della Terra, di Jules Verne, vi è la decifrazione di una pergamena coperta di caratteri misteriosi. In Gran Bretagna Sherlock Holmes era esperto di crittografia. Sull'altra sponda dell'Atlantico, Edgar Allan Poe si occupò anch'egli di crittoanalisi. Scrivendo per l’Alexander Weekly Messenger di Philadelphia, il celebre autore sfidò i lettori a sottoporgli qualunque tipo di cifratura. I crittogrammi inviati alla rivista furono centinaia, ed egli li tradusse tutti. La caccia al tesoro Beale Nel 1843, Poe scrisse un racconto sui codici segreti che per parere dei crittografi professionisti è la miglior opera letteraria sull'argomento. Lo scarabeo d'oro narra l'immaginaria avventura di William Legrande, che s'imbatte in uno strano coleottero - uno scarabeo di colore dorato - e lo raccoglie con un foglio di carta trovato nei pressi. La sera stessa Legrande usa il foglio per tracciare uno schizzo dell'insetto; ma quando lo avvicina al focolare, il calore fa comparire una serie di segni, invisibili fino a quel momento perché tracciati con l'inchiostro simpatico. Studiando i segni Legrande si convince di essere di fronte a un crittogramma, che custodisce l'ubicazione del tesoro del capitano Kidd. La caccia al tesoro Beale Il racconto di Poe è pura invenzione, ma c'è una storia vera del XIX secolo che lo ricorda da vicino. Il caso dei crittogrammi Beale ha per protagonisti avventurieri del selvaggio West, un cowboy che aveva accumulato un'ingente fortuna, un tesoro sepolto del valore di 20 milioni di dollari, e una serie di fogli coperti di simboli crittografici. Molto di quanto sappiamo della vicenda, crittogrammi compresi, è esposto in un libretto edito nel 1885 nella cittadina di Lynchburg, in Virginia. Solo 23 pagine che hanno frustrato generazioni di crittoanalisti e sedotto molti cacciatori di tesori. La caccia al tesoro Beale: i fatti Nel gennaio del 1823, un forestiero di nome Thomas J. Beale arrivò a Lynchburg e varcò il portone dell'Hotel Washington. Uomo dagli occhi neri e capelli corvini, più lunghi di quanto si usasse a quel tempo. Era robusto e in eccellente forma fisica. Tuttavia, spiccava la sua carnagione scura, come se avesse passato molto tempo esposto al sole. Beale passò il resto dell'inverno da Morriss, e sebbene la sua compagnia fosse “gradita a tutti, e in special modo alle signore", egli non parlò mai del suo passato, della sua famiglia o della ragione che l'aveva condotto lì. Poi, alla fine di marzo, se ne andò. La sua partenza fu improvvisa e inspiegata come il suo arrivo. La caccia al tesoro Beale: i fatti Due anni dopo, nel gennaio 1825, Beale tornò all'Hotel Washington "più corvino e abbronzato che mai». Di nuovo passò l'inverno a Lynchburg e scomparve in primavera; non prima, però, di aver affidato a Morriss una scatola metallica chiusa a chiave. L'albergatore mise la scatola in cassaforte e non vi pensò più, finché ricevette una lettera dal misterioso cliente. Beale svelò la vera funzione della scatola metallica. Contiene carte di importanza vitale per le mie fortune e per quelle di diverse persone con cui sono in affari, e nell'eventualità della mia morte la sua perdita sarebbe irreparabile. Comprenderete, quindi, la necessità di fare ogni sforzo perché un simile disastro non si verifichi... La caccia al tesoro Beale: i fatti Morriss custodì la scatola con zelo, aspettando che il proprietario venisse a recuperarla, ma Beale non tornò mai più a Lynchburg. Alla fine, nel 1845, la curiosità ebbe la meglio e la serratura fu forzata. Nella scatola c'erano 3 fogli coperti di numeri, e un biglietto scritto a mano da Beale, che spiegava parecchie cose. Nel 1817, Beale aveva iniziato un viaggio attraverso l'America con altre persone. La brigata,inseguendo mandrie di bufali, un giorno si accampò in un burrone, 400-500 Km a nord di Santa Fé. Scoprirono in una fenditura della roccia qualcosa che a un primo sguardo sembrava oro. Nei successivi diciotto mesi Beale e i suoi uomini sfruttarono il giacimento e accumularono un'ingente quantità di oro. La caccia al tesoro Beale: i fatti Nel 1823 Beale raggiunse Lynchburg con l'oro e l'argento, e lo seppellì. Fu in quell'occasione che prese alloggio all'Hotel Washington e conobbe Morriss. Quando, alla fine dell'inverno, aveva lasciato l'albergo, Beale aveva raggiunto i suoi amici, che durante la sua assenza avevano continuato a sfruttare la miniera. Dopo un anno e mezzo Beale tornò a Lynchburg, con un ulteriore carico da aggiungere al tesoro. Questa volta, però, la sua permanenza in città aveva anche un altro scopo: Beale, convinto che Morriss fosse un uomo onesto decise di affidare a lui la scatola di metallo coi 3 documenti cifrati, i cosiddetti crittogrammi Beale. La caccia al tesoro Beale: i fatti Ogni crittogramma consisteva in una serie di numeri. Il primo foglio chiariva l'ubicazione del tesoro; il secondo descriveva il tesoro stesso; il terzo indicava gli eredi degli uomini che l'avevano accumulato. Nel 1862, Morriss vecchio si confida ad un amico. Sappiamo solo che fu questo amico a pubblicare, nel 1885, il famoso libretto usando uno pseudonimo. Tutto quello che conosciamo di questa storia singolare deriva dal libretto; esso è l'unica fonte sia dei crittogrammi sia degli antefatti che Morriss avrebbe narrato. Inoltre, è da attribuire all'autore la decifrazione del secondo crittogramma. La caccia al tesoro Beale 71, 194,38,1701,89,76,11,83, 1629,48,94,63, 132, 16, 11 Ì, 95, 84, 34Ì, 975, 14,40,64,27,81, 139,213.63,90, 1120,8, 15,3, 126,2018,40,74,758,485, 604,230,436,664,582,150,251,284,308,231,124, 211, 486, 225, 401,370, 11, 101,305, 139, 189,17,33,88,208,193, Ì45, 1,94,73,416,918,263,28,500, 538, 356, 117, 136. 219, 27, 176, 130, 10, 460, 25, 485, 18, 436, 65, 84. 200, 283, 118,320,138,36,416,280, 15,71,224,961,44, 16,401,39,88,61,304, 12,21, 24, 283, 134, 92, 63, 246, 486,682,7, 219. 184, 360, 780, 18, 64,463,474,131, 160,79,73,440,95, 18,64,581,34,69, 128,367,460, 17,81, 12, 103,820,62, 116, 97, 103, 862, 70, 60, 1317, 471, 540, 208, 121, 890, 346, 36, 150, 59, 568, 614,13, 120,63,219,812,2160, 1780,99.35,18,21,136,872,15,28,170,88,4, 30,44, 112,18, 147,436, 195,320,37, 122, 113,6,140,8, 120,305,42,58,461, 44, 106,301, 13,408,680,93,86, 116,530,82,568,9, 102,38,416.89,71,216, 728,965,818,2,38, 121, 195, 14,326, 148,234,18,55, 131,234,361,824,5, 81,623,48.961,19,26,33,10,1101,365,92,88,181,275,346,201,206,86, 36, 219, 324, 829, 840, 64,326,19, 48, 122, 85, 216, 284, 919, 861, 326, 985, 233, 64, 68, 232, 431, 960,50,29,81, 216, 321, 603,14, 612, 81, 360, 36, 51, 62, 194,78,60,200,314,676, 112,4,28, 18,61, 136,247,819,921, 1060,464,895, 10,6,66, 119,38,41,49,602,423,962,302,294,875,78, 14,23, 111, 109,62, 31,501,823,216,280,34,24,150, 1000,162,286, 19,21, 17,340, 19,242.31, 86,234, 140,607, 115,33, 191,67,104,86,52,88,16,80, 121,67,95, 122,216, 548,96, 11 ,201,77,364,218,65,667,890,236, 154,211, 10,98,34, 119,56, 216, 119,71,218,1164,1496,1817,51,39,210,36,3,19,540,232,22,141,617, 84, 290, 80, 46, 207, 411, 150, 29, 38, 46, 172, 85, 194, 39, 261, 543, 897, 624, 18, 212,416, 127,931, 19,4,63,96. 12, 101.418, 16. 140,230,460,538, 19,27,88, 612, 1431,90,716.275,74,83, 11,426,89,72,84, 1300, 1706,814,221,132, 40, 102, 34, 868,975, 1101, 84,16,79, 23, 16, 61, 122, 324, 403,912,227, 936, 447, 55, 86, 34, 43, 212. 107, 96, 314, 264, 1065, 323, 428, 601, 203, 124, 95, 216, 814, 2906, 654, 820, 2, 301, 112, 176, 215, 71, 87, 96, 202, 35, 10, 2, 41,17, 64, 221,736,820,214, 11,60,760. il primo crittogramma Beale. La caccia al tesoro Beale 115, 75, 24, 807, 37, 52/ 49, T 7, 31, 62, 647, 22, 7, 15, 1 40, 47, 29, ] 07, 79, 84, 56, 239, 10, 26, 8] 1,5, 196,308,85,52, 160, 136, 59, 211, 36, 9, 46, 316, 554, 122, 106,95,53,58,2,42,7,35, 122,53,31,82, 77.250, 196,56,96, 118,71, 140, 287, 28, 353, 37, 1005, 65, 147, 807, 24, 3, 8, 12, 47, 43, 59, 807, 45, 316, 101, 41, 78, 154, 1005,122, 138,191,16,77, 49, 102,57, 72, 34, 73, 85, 35,37),59,196, 81, 92, 191, 106, 273, 60, 394, 620, 270, 220, 106, 388, 287, 63, 3, 6, 191, 122, 43, 234, 400, 106, 290, 314, 47, 48, 81, 96, 26, 115. 92, 158, 191, 110, 77, 85, 197, 46, 10, 113, 140,353,48, 120, 106, 2, 607, 61,420,811, 29, 125, 14.20,37, 105, 28, 248, 16, 159,7,35, 19,301, 125, 110,486,287,98, 117,511,62,51,220,37, 113, 140, 807, 138, 540, 8, 44, 287, 388, 117, 18, 79, 344, 34, 20, 59, 511, 548,107, 603, 220,7, 66, 154, 41, 20, 50, 6,575, 122, 154, 248, 110, 61, 52, 33, 30, 5, 38, 8, 14,84,57,540,217, 115,71,29,84,63,43, 131,29, 138,47, 73,239,540,52,53, 79, 118,51,44,65, 196, 12,239, 112,3,49,79,353, 105,56,371,557,211,515, 125.360, 133, 143, 101, 15,284,540,252, 14,205, 140,344,26,811, 138, 115, 48, 73, 34, 205, 316, 607, 63, 220, 7, 52, 150, 44, 52, 16, 40, 37, 158, 807, 37, 121, 12,95, 10, 15,35, 12, 131,62, 115, 102,807,49.53, 135, 138,30,31,62,67,41, 85, 63, 10, 106, 807, 138, 8, 113, 20, 32, 33, 37, 353, 287, 140, 47, 85, 50, 37, 49. 47, 64,6,7, 71, 33, 4, 43, 47, 63, 1,27, 600, 208,230, 15, 191, 246, 85,94,511,2, 270,20. 39, 7, 33, 44, 22, 40, 7, 10, 3, 811, 106, 44, 486, 230, 353, 211, 200, 31, 10, 38, 140,297, 61, 603, 320, 302, 666,287, 2, 44, 33, 32, 511, 548, 10, 6, 250, 557, 246, 53, 37, 52, 83, 47, 320, 38, 33, 807, 7, 44, 30, 31, 250, 10, 15, 35, 106, 160, 113,31, 102,406,230,540,320,29,66,33, 101,807, 138,301,316,353, 320, 220, 37, 52, 28, 540, 320, 33, 8, 48, 107, 50, 811, 7, 2, 113, 73, 16, 125, 11, 110, 67, 102, 807, 33, 59, 81, 158, 38, 43, 581, 138, 19, 85, 400, 38, 43, 77, 14, 27, 8, 47, 138,63, 140, 44, 35,22, 177, 106, 250,314,217, 2, 10,7, 1005, 4, 20, 25, 44,48,7,26,46, 110,230,807, 191,34, 112, 147,44, 110, 121, 125,96,41,51, 50, 140, 56. 47, 152, 540, 63,807, 28, 42, 250, 138, 582, 98, 643,32,107, 140, 112, 26,85, 138, 540,53, 20, 125, 371, 38, 36, 10, 52, 118, 136, 102, 420, 150, 112,71, 14,20.7,24, 18, 12,807,37,67, 110,62,33,21,95,220,511, 102,811, 30, 83. 84, 305, 620, 15,2,108, 220,106,353,105,106, 60, 275, 72, 8, 50, 205, 185, 112,125, 540. 65.106, 807, 188, 96,110, 16, 73, 33, 807, 150, 409, 400, 50, 154,285,96, 106,316,270,205, 101,811,400,8,44,37,52,40,241,34,205, 38, 16, 46,47, 85, 24, 44, 15. 64, 73, 138,807, 85, 78, 110, 33, 420,505,53,37, 38, 22,31, 10, 110, 106, 101, 140, 15,38,3, 5,44, 7,98,287, 135, 150,96, 33,84, 125,807, 191,96,511, 118,440,370,643,466, 106,41, 107,603,220,275,30, 150, 105,49,53,287,250,208, 134, 7, 53, 12,47,85,63, 138, 110,21, 112, 140, 485, 486, 505,14,73, 84, 575, 1005,150, 200, 16, 42, 5, 4, 25, 42,8, 16, 811, 125, 160, 32, 205, 603,807, 81, 96, 405, 41, 600, 136, 14, 20, 28, 26, 353, 302, 246,8, 131, 160, 140,84,440,42, 16,8)1,40,67, 10), 102, 194, ) 38, 205, 51, 63, 241, 540, 122, 8, 10, 63, 140, 47,48, 140, 288. il secondo crittogramma Beale. La caccia al tesoro Beale Per esempio, se mittente e destinatario convengono che questa frase sia il testo chiave, ogni parola viene contrassegnata numericamente come mostrato. Dopo di che si compila un elenco, che associa il numero alla lettera iniziale della parola corrispondente. 1=p 8=c 15=o 2=e 9=q 16=p 3=s 10=f 17=v 4=m 11 =s 18=c 5= e 12=i 19 =n 6=d 13 = t 20 = c 7=c 14=c 21 =m A questo punto, cifrare un messaggio sostituendo alle lettere del testo chiaro i numeri corrispondenti dell'elenco. P corrisponderebbe ai numeri 1 e 16, e ai numeri 2 e 5, mentre f potrebbe essere sostituita solo dai numero 10. La caccia al tesoro Beale Poiché il testo chiave è breve, molte lettere dell'alfabeto non vi compaiono, e sono prive dì numeri corrispondenti. Per cifrare l'intero alfabeto, basterebbe ricorrere a una chiave più lunga. Il destinatario, che dovrebbe aver accesso a una copia del testo-chiave, decifrerà il crittogramma con facilità. Ma una terza parte che avesse intercettato il messaggio, per decrittarlo dovrebbe scoprire quale testo abbia fatto da chiave. Fu la Dichiarazione di Indipendenza che permise di decifrare il secondo dei crittogrammi Beale. Le prime scritture nascoste Il modo più istintivo è quello di nascondere il messaggio: in questo caso si parla propriamente di steganografia. Mentre quando non si nasconde il messaggio, bensì il suo contenuto allora si ha a che fare con la crittografia, termine usato per la prima volta, a quanto sembra, nel 1641 da John Wilkins, uno dei fondatori della Royal Society, ma pratica antica quanto l’uomo. Le prime scritture nascoste Uno dei primi esempi documentati di messaggio cifrato viene fatto risalire a Giulio Cesare, che era solito ricorrervi nella guerra contro i Galli. Il sistema cifrante consisteva nel “traslare circolarmente” l’alfabeto, sostituendo di conseguenza tutte le lettere del messaggio in chiaro. Ad esempio, con una traslazione di 2 unità dall’alfabeto in chiaro (riga superiore) si ottiene quello cifrato (riga inferiore): ABCDEFGHILMNOPQRSTUVZ CDEFGHILMNOPQRSTUVZAB Metodi di questo genere sono noti come cifrari di Cesare. Le prime scritture nascoste Si hanno a disposizione solo 20 cifrari distinti di questo tipo, e la chiave cifrante, il segreto speciale, è il numero n (compreso fra 1 e 20) che specifica di quanto è necessario traslare l’alfabeto in chiaro per ottenere quello cifrato. Un numero molto esiguo di cifrari che si presta ad essere eluso con pochi tentativi. Una variazione che aumenta enormemente il numero di cifrari distinti consisterebbe nell’assumere una qualunque permutazione delle 21 lettere dell’alfabeto in chiaro invece di eseguire una semplice traslazione. I cifrari distinti diventano in questo caso 21! – un numero altissimo, dell’ordine di 1018 . Le prime scritture nascoste Un possibile compromesso allo scopo di generare una permutazione con un meccanismo semplice, efficiente e facile da memorizzare: • si può usare una parola chiave che non abbia lettere ripetute, come “liceo”, oppure • eliminare le ripetizioni da un termine scelto (ad esempio “liceorighi” diventa “liceorgh”) • e utilizzare la parola per indicizzare le permutazioni partendo da una posizione convenuta Le prime scritture nascoste la parola chiave viene usata a partire da quella posizione e, poi, si procede alfabeticamente, saltando ovviamente le lettere già usate. Ad esempio, la permutazione che si ottiene con la parola chiave “liceorgh” a partire dalla posizione 4 è quella che segue: ABCDEFGHILMNOPQRSTUVZ UVZLICEORGHABDFMNPQST La memorizzazione della chiave (liceorgh, 4) è agevole per tutti e un cifrario di questo genere sembra al riparo da attacchi basati su tentativi ripetuti. Ma … Le prime scritture nascoste Il crittoanalista, cioè colui che tenta di infrangere il cifrario, posto di fronte ad un testo cifrato abbastanza lungo, è a conoscenza del fatto che il testo in chiaro è scritto in italiano (o in inglese, o in russo …) e che riguarda affari (o problemi diplomatici, militari,commerciali, sentimentali …) e, soprattutto, conosce il dizionario delle frequenze con cui si ripetono le lettere nei discorsi del dato argomento. Le prime scritture nascoste Studiando le frequenze con cui compaiono le varie lettere nel testo trasmesso – che deve essere abbastanza lungo e significativo – si possono fare delle ipotesi attendibili riguardo al loro significato in chiaro. Altre informazioni si ottengono ad esempio dalla frequenza delle lettere ripetute, da particolari associazioni o dalla loro mancanza I cifrari polialfabetici Come rendere uniformi le frequenze nel testo cifrato? L’idea è quella di ricorrere ad un cifrario polialfabetico, vale a dire di associare ad ogni lettera in chiaro un simbolo cifrato in maniera dipendente dal contesto nel quale avviene la cifratura. Ad esempio, visto che in italiano la frequenza della lettera “a” è quasi del 12%, si potrebbero usare 12 simboli diversi X1,X2,…,X12: il primo viene usato la prima volta che compare la lettera “a” nel testo in chiaro, il secondo la seconda volta e così via, circolarmente. È chiaro, che in questo modo, tutti i simboli cifranti ricorrono con la stessa frequenza, ma si tratta di un’idea impraticabile. I cifrari polialfabetici Uno dei primi esempi è legato al nome di Leon Battista Alberti, nella seconda metà del Quattrocento. L’idea dell’Alberti è quella di usare due dischi concentrici, in grado di ruotare l’uno rispetto all’altro, e contenenti l’alfabeto in chiaro (il disco esterno) e quello in cifra (il disco interno). I cifrari polialfabetici Dopo la cifratura di una lettera, ottenuta facendo corrispondere le lettere dei due dischi che sono una sopra l’altra, il disco esterno viene ruotato di una tacca,e la corrispondenza fra le lettere cambia e cambia tutto l’alfabeto cifrante, che si ripete dopo un periodo lungo quanto sono le lettere che compaiono nei dischi. È chiaro che il congegno può cadere in mano nemica senza danno: la chiave crittografica in questo caso è data dall’assetto iniziale dei due dischi. I cifrari polialfabetici Il cifrario che, dal Rinascimento, rimase in uso per molti secoli e che costituì il paradigma di ogni metodo di cifratura polialfabetica è legato al nome del diplomatico francese Blaise de Vigenère (1523-1596). L’idea è quella di utilizzare per ogni lettera un diverso alfabeto cifrante, il quale viene indicizzato da una parola chiave. Non è più necessario che la parola chiave sia priva di lettere ripetute. I cifrari polialfabetici Nell’esempio seguente riprendiamo la chiave “liceorighi”, senza modifiche. Tutti i possibili 20 cifrari vengono riportati sotto l’alfabeto in chiaro come nello schema che segue: I cifrari polialfabetici Il testo da cifrare sia “NEL MEZZO DEL CAMMIN DI NOSTRA VITA….”. Per mantenerlo segreto lo cifriamo con la chiave “LICEORIGHI”. Sovrapponiamo la chiave tanto quanto basta: NELMEZZODELCAMMINDINOSTRAVITA LI CEORI GH I LI CE ORIGHILI CEORIGH Z O N Q S Q H U M O U……. I cifrari polialfabetici Z O N Q S Q H U M O U……. Si osserva che le prime due lettere “E” sono cifrate ordinatamente con “O”e “Q”, le due lettere “Z” sono cifrate ordinatamente con “Q”e “H”. Viceversa, due “U” del messaggio cifrato corrispondono rispettivamente ad “O” ed “L”. Ecco in funzione un cifrario polialfabetico! I cifrari polialfabetici Sembra di essere al riparo degli attacchi statistici. Inizialmente ci furono attacchi sporadici, spesso legati a conoscenze degli autori e dei possibili messaggi. Il primo attacco sistematico venne portato alla lunghezza della chiave, trovata la quale tutto si ripete e si può considerare di lavorare con spezzoni monoalfabetici. Un metodo generale per attaccare i cifrari polialfabetici fu trovato da un ufficiale dell’esercito prussiano, Friedrich W. Kasiski, il quale trovò una regola per determinare la lunghezza della chiave. Intorno all’inizio del Novecento era ormai generalmente accettata la vulnerabilità dei sistemi polialfabetici ed i sistemi à la Vigènere persero di interesse. I cifrari perfetti Nel contesto dei sistemi meccanici di calcolo, nel Novecento, sorge l’idea che si possa costruire un cifrario perfetto, vale a dire un cifrario che non possa essere infranto. Il messaggio, ormai, è diventato una successione di bit, una stringa numerica binaria, e la chiave è un’altrettanto lunga sequenza di bit generata in modo casuale e custodita in un libro delle chiavi – da usare una sola volta. Il sistema non è decrittabile con metodi statistici, poiché ogni carattere in chiaro può essere rappresentato con la stessa probabilità da un qualunque carattere cifrato, e non esistono più modelli perché la scelta della chiave avviene in modo casuale. I cifrari perfetti Lo schema è il seguente: Qui, k rappresenta la chiave e le operazioni di somma e sottrazione sulle cifre binarie del messaggio e della chiave sono proprio, almeno nella prima applicazione, le operazioni di somma e sottrazione binarie, con il vantaggio che il meccanismo per cifrare coincide con quello per decifrare. I cifrari perfetti I due esempi che seguono dimostrano la sostanziale semplicità della cifratura computerizzata. Innanzitutto, supponiamo che il messaggio che vogliamo cifrare sia CESENA, e che intendiamo servirci di una semplice versione computerizzata di una cifratura per trasposizione. Prima di crittarlo, dobbiamo convertire il messaggio in codice ASCII. Testo chiaro: CESENA = 1000011 1000101 1010011 1000101 1001110 1000001 I cifrari perfetti Una delle forme più semplici di cifratura per trasposizione comporta Io scambio della prima e della seconda cifra binaria, poi della terza e della quarta cifra binaria, e cosi via. Testo chiaro 1000001110001011010011100010110011101000001 Testo cifrato 0100001101000111100011010001110011010100010 Il messaggio crittato è una singola stringa di 42 cifre binarie, che può essere trasmessa al destinatario. Quest'ultimo può ripristinare il testo chiaro effettuando di nuovo la trasposizione delle cifre binarie, dividendo la stringa in elementi del codice ASCII da sette bit, e trovando la lettera alfabetica corrispondente. I cifrari perfetti Supponiamo ora di voler crittare lo stesso messaggio, CESENA, impiegando una semplice versione computerizzata di una cifratura per sostituzione. Di nuovo, prima di crittare il messaggio dovremo convertirlo in codice ASCII. La sostituzione si avvale di una chiave concordata dal mittente e dal destinatario. Es: chiave: SERIEA. Tradotta in codice ASCII, essa si potrà usare sommando ogni elemento del testo chiaro al corrispondente elemento della chiave. I cifrari perfetti • Messaggio CESENA • Messaggio ASCII 100001110001011010011100010110011101000001 • Chiave SERIEA • Chiave ASCII 111001111001011110010110100111001011100001 Testo cifrato 011000001000000100001010110001010110100000 II crittogramma così generato è una singola stringa di 42 cifre binarie, che può essere trasmessa al destinatario. Quest'ultimo, usando la chiave per invertire la sostituzione, può ricreare la stringa originaria, e da questa, tramite il codice ASCII, risalire al testo chiaro. I cifrari perfetti Nei primi anni Settanta negli USA si mise a punto il sistema Lucifer. Lucifer critta i messaggi tramite le seguenti operazioni: 1. il testo è convertito in una lunga stringa di cifre binarie. 2. la stringa è divisa in blocchi di 64 bit, ciascuno dei quali sarà crittato separatamente. 3. si modificano i 64 bit del blocco: nella divisione di quest'ultimo in due mezzi blocchi da 32 bit, chiamati Sinistra0 e Destra0. 4. I bit di Destra0 sono poi introdotti in una funzione «deformante», che trasforma le cifre binarie tramite un complesso procedimento di sostituzione. I cifrari perfetti Il mezzo blocco Destra0 deformato è sommato a Sinistra0 per produrre un nuovo mezzo blocco da 32 bit chiamato Destra1, mentre l'originario Destra0 diventa Sinistra1. Questa serie di operazioni è chiamata «giro». La cifratura completa di un blocco da 64 bit prevede un totale di sedici giri. Il testo in cifra può quindi essere inviato al destinatario,che lo volgerà in chiaro invertendo il processo. I particolari della funzione deformante possono mutare a ogni messaggio, in quanto dipendono dalla chiave concordata dal mittente e dal destinatario. I cifrari perfetti In altre parole, Io stesso messaggio può essere cifrato in un'infinità di modi a seconda della chiave scelta. Nella crittografìa computerizzata le chiavi sono essenzialmente numeri. Nell'insieme, Lucifer era considerato uno dei migliori programmi crittografici presenti sul mercato. La versione a 56 bit della cifratura - numero di chiavi intorno ai cento milioni di miliardi - Lucifer di Horst Feistel fu ufficialmente adottata il 23 novembre 1976 col nome di Data Encryption Standard (Standard di codifica dei dati), o DES. Fino alla fine degli anni novanta il DES è stato lo standard ufficiale americano per la codifica delle informazioni. I cifrari perfetti Il sistema è sicuro. Ma la gestione dei libri delle chiavi condivise, spesso ingombranti, rappresentano punti critici che invitano a cercare nuove modalità per la sicurezza dei sistemi. I problemi precedenti vengono accresciuti di molto dagli usi moderni. Il problema di distribuire a ciascuno una chiave particolare pone enormi problemi gestionali. L’idea della chiave pubblica L’idea è di mettere a disposizione di ogni utente una chiave personale, segreta, che lo identifica e che, solo a lui, permette di decifrare i messaggi a lui indirizzati. Questa è l’idea della chiave pubblica,opposta all’idea della chiave condivisa, segreta, da sempre utilizzata nei cifrari. La chiave pubblica sarà nota a tutti, perché è utile per cifrare i messaggi… ma non per decifrarli. Sarà a conoscenza anche del famigerato intercettatore. Neppure il trasmettitore, che usa la funzione cifrante sarebbe in grado di decifrare il messaggio che ha mandato (ma peraltro non ne ha bisogno). L’idea della chiave pubblica La sicurezza di questi sistemi dipende dall’uso di funzioni ‘un po’ strane’, che sono funzioni invertibili – devono servire sia per cifrare che per decifrare – facili da calcolare in una direzione ma estremamente difficili da calcolare in senso inverso...a meno che non sia nota qualche informazione in più. La cifratura del messaggio avviene con una di queste funzioni, la decifratura con la funzione inversa (che è nota solo a chi riceve il messaggio). Si tratta di un canale asimmetrico – contrariamente alla simmetria implicita fra trasmettitore e ricevitore che si ha nel caso della chiave condivisa. L’idea della chiave pubblica Fra le funzioni che sono state escogitate, quella più nota – e utilizzata nel sistema RSA – si basa sulla difficoltà pratica nella scomposizione di un intero in fattori primi: se il numero dato ha molte cifre decimali, anche le tecniche più raffinate e i calcolatori più veloci risultano inefficaci. Una stima attendibile, che mette il tempo di fattorizzazione in dipendenza dal numero di cifre, è la seguente Alice, Bob … e Eva Come funziona? Il messaggio M viene ‘chiuso’ in un recipiente mediante una chiave a e spedito al ricevitore R durante il trasferimento è al sicuro, ma R non può entrarne in possesso perché non conosce la chiave. Allora, a sua volta, R applica una propria chiave b al recipiente e lo rispedisce al trasmettitore T. Alice, Bob … e Eva A questo punto, neanche T è in grado di aprire il contenitore (ma non gli interessa,conosce già il contenuto). Però può togliere la propria chiave, rispedirlo e, questa volta, mettere in condizione R di aprire il contenitore: Sono occorsi tre passaggi, però in ogni caso il messaggio è transitato ogni volta al sicuro dalle intercettazioni. Alice, Bob … e Eva L'ordine è fondamentale perfino in una semplice sostituzione. Se l'ordine è scorretto, iI risultato è senza senso. Se Bob decifrasse prima di Alice, il risultato avrebbe coinciso col messaggio iniziale L’aritmetica dell’orologio Il crittosistema RSA implementa le idee della chiave pubblica mediante alcuni teoremi elementari di teoria dei numeri. Ecco gli elementi fondamentali, i quali costituiscono la base della cosiddetta aritmetica modulare, la quale riguarda essenzialmente le operazioni aritmetiche, rese modulari rispetto ad un intero assoluto n. Definizione. Due interi (relativi) a e b si dicono congruenti modulo n (intero assoluto) se la loro differenza è un multiplo intero di n. Si scrive così: L’aritmetica dell’orologio Due interi sono congruenti modulo n esattamente quando hanno lo stesso resto rispetto alla divisione per n. Inoltre, la relazione di congruenza modulo n è una relazione di equivalenza (vale a dire soddisfa le proprietà: riflessiva, simmetrica e transitiva) dunque permette di suddividere l’insieme Z degli interi relativi in classi di equivalenza, rappresentate, ciascuna dal resto rispetto alla divisione per n. Con Zn indichiamo l’insieme delle classi di resti modulo n: Zn = {0,1,2,…, n-1} È chiaro che ogni intero relativo appartiene ad una ed una sola classe di resti. L’aritmetica dell’orologio L’aritmetica modulare è l’aritmetica di Zn, un aritmetica fatta più che con i numeri in sé, con i loro resti della divisione per n; essa è possibile grazie al fatto che la relazione di congruenza è stabile rispetto alle operazioni di somma e prodotto: Teorema. In Zn l’equazione di primo grado ax = 1 ha un’unica soluzione se e solo se MCD(a,n) = 1. Così, per gli interi modulo n, ammettono inverso solo quelli che sono primi con n . L’aritmetica dell’orologio Teorema (piccolo teorema di Fermat). Se p è un numero primo che non divide a, allora a p−1 ≡ 1 (mod p) . In realtà, per implementare il metodo RSA, occorre una generalizzazione del piccolo teorema di Fermat, ottenuta un secolo dopo da Eulero e che utilizza una funzione particolare: la Φ di Eulero: Definizione. Φ (n) è il numero di interi minori di n e primi con n. I primi valori della Φ sono facili da calcolare: Φ(1) = 1, Φ(2) = 1, Φ(3) = 2, Φ(4) = 2, Φ(5) = 4, Φ(6) = 2, Φ(7) = 6, …… L’aritmetica dell’orologio ma in generale il calcolo di Φ(n) ha la stessa complessità di calcolo della scomposizione di n in fattori primi. Infatti, è immediato calcolare Φ(p) quando p è un numero primo (Φ(p) = p-1) ed è facile il calcolo di Φ(n) quando si conosce la scomposizione di n in fattori, questo risulta dal teorema che afferma: Se MCD(m, n) = 1, allora Φ(m·n) = Φ(m)·Φ(n). Ecco ora la generalizzazione necessaria del piccolo teorema di Fermat: Teorema (di Eulero-Fermat). Se MCD (a, Φ (n)) = 1 allora a Φ (n) ≡ 1 (mod n). I passaggi matematici della RSA (1) Alice sceglie due numeri primi molto grandi, p e q. Per semplificare p = 17 e q =11. Questi numeri dovranno essere tenuti segreti. (2) Alice moltiplica p e q, e ottiene N. In questo caso, N = 187. Poi, Alice deve scegliere un altro numero, e; supponiamo che scelga e = 7 (3) A questo punto, Alice è libera di pubblicare e e N in un elenco accessibile a tutti. e e N sono le «chiavi pubbliche» dì Alice. I passaggi matematici della RSA (4) Bob vuole cifrare un messaggio per Alice, questo deve innanzitutto essere trasformato in un numero, M. Per esempio, una parola viene trasformata in cifre binarie ASCII. M è quindi cifrato in modo da originare C, il crittogramma, secondo la formula: C=Me(modN) (5) Supponiamo che Bob voglia mandare ad Alice una semplice lettera X, in codice ASCII, 1011000, cioè 88 in notazione decimale. Quindi, M = 88. I passaggi matematici della RSA (6) Per crittare il messaggio, Bob comincia col procurarsi la chiave pubblica di Alice, e constata che N= 187 e e= 7. Così egli può utilizzare la formula necessaria a crittare il messaggio di Alice. Per M = 88, la formula da:C=887(mod187) 887(mod 187) = 894.432 (mod 187)= 11 (mod 187) Bob può quindi inviare ad Alice il testo cifrato, C = 11. (7) Le funzioni esponenziali in aritmetica dei moduli sono unidirezionali; è quindi molto difficile ritrovare M, partendo da C = 11. Perciò, Eva non è in grado di decifrare il messaggio. I passaggi matematici della RSA (8) Alice, al contrario, può decifrare il messaggio perché conosce i valori di p e q. Alice calcola un numero speciale, d, la sua personale chiave per la decifrazione, nota anche come chiave privata. ex=1mod Φ(n) ex=1[mod (p - 1)(q-1)] 7x=1(mod 16x10) 7x=1 (mod 160) d=23 1123=(887)23=887x23=88 k·Φ(n) + 1=(88 Φ(n) )k88=88(mod 187) Essendo m Φ(n) ≡ 1 per il teorema di Eulero-Fermat si ha che (m Φ(n) )k ≡ 1(mod n). La sicurezza della RSA Per violare il codice RSA è necessario ottenere d, la chiave privata; è quindi necessario conoscere Φ (n). Osserviamo che da Φ (n) e n si ricavano facilmente p e q: Φ(n) = (p-1)(q-1) = n-(p+q)+1 =) quindi p e q sono le soluzioni dell'equazione x2 -(p + q)x + pq = 0 Dal punto di vista della complessita computazionale trovare Φ(n) senza la fattorizzazione n = pq è equivalente alla fattorizzazione, ma la fattorizzazione è un problema difficile per i numeri grandi e questa è la sicurezza di RSA. La sicurezza della RSA La RSA Security pubblica sfide per rompere il codice RSA. RSA-129 -129 cifre decimali (prima sfida, 1977) fattorizzato nel 1994 in 8 mesi con 600 computer in rete; RSA-200 -200 cifre decimali: fattorizzato nel 2005 in 3 mesi su un cluster di 80 CPU di 2.2 GHz, ecco i numeri N=279978339112213278708294676387226016210704467869554285 375600099293261284001076093456710529553608560618223519 109513657886371059544820065767750985805576135790987349 50144178863178946295187237869221823983 p=3532461934402770121272604978198464368671197400197625023 649303468776121253679423200058547956528088349 q=792586995447833303334708584148005968773797585736421996 0734330341455767872818152135381409304740185467 La sicurezza della RSA Il solo punto debole della crittografia RSA è che in futuro potrebbe essere disponibile un algoritmo più veloce per scomporre N in fattori primi. Una scoperta simile renderebbe inutilizzabile la RSA, tuttavia i matematici la cercano invano da più di duemila anni. La maggior parte dei matematici ritiene che ciò non sia casuale, ma dipenda dalle proprietà dei numeri interi. Comunque, vedremo … per il momento la cifratura RSA resta affidabile. Applicazioni della RSA La crittografia RSA può essere utilizzata come firma digitale. Sia M il messaggio, il mittente firma M grazie alla sua chiave privata C=Md(modN) Il destinatario decifra C grazie alla chiave pubblica M=Ce(modN) del mittente M. Tutti possono decifrare C ma vi è la garanzia che il mittente è uno solo, infatti solo il mittente autentico possiede la chiave privata d associata a quella pubblica e utilizzata per decifrare. Conclusioni Ormai la crittografia non si occupa più soltanto di spie e di generali, ma riguarda tutti noi, quando compiamo operazioni a distanza che vogliamo mantenere riservate, ad esempio transazioni on line o altre comunicazioni. Attualmente, la crittografia è un potente settore di ricerca nel quale si intrecciano la teoria dei numeri, statistica e probabilità e le tecniche più raffinate dell’informatica moderna. Conclusioni La battaglia tra crittografi e crittoanalisti continua. Nella storia le vittorie degli uni hanno stimolato la rivincita degli altri. Quindi confidiamo nel RSA, nella crittografia moderna, sicuramente più scienza che arte, ma con prudenza. Mi resta, infatti, la convinzione che, alla fine, il fattore umano riuscirà a sorprendere, anche nelle future evoluzioni. In fondo, nel corso della seconda guerra mondiale, un sistema crittografico particolare non è stato decrittato: il linguaggio naturale della tribù navajo. Bibliografia • • • • • Simon Singh Codici & segreti, BUR PC Professionale 07/09 pp. 86 -97 R. Betti Codici segreti: l’antica arte della crittografia diventa una scienza moderna Ferragina, Luccio Crittografia. Principi, algoritmi, applicazioni Bollati Boringhieri M.du Sautoy L'Enigma dei numeri primi Rizzoli