PROGETTO LAUREE SCIENTIFICHE ITGS PASCAL-UNIV. PARMA (è stato usato vario materiale di Alessandro Zaccagnini, Alessandro Languasco) Altro materiale è stato preso dal sito: http://avires.dimi.uniud.it/claudio/teach/sicurezza2012/lezione-02.pdf Docenti: BAROZZI -SIMEONE CORSO DI CRITTOGRAFIA Secondo incontro CRITTOGRAFIA CLASSICA ENIGMA Enigma era una macchina usata dai tedeschi durante la seconda guerra mondiale per criptare/decriptare messaggi. Fu violata dai crittanalisti inglesi, in particolare Alan Touring. Questo permise agli alleati di vincere la guerra. STRUTTURA La macchina Enigma aveva l'aspetto di una macchina per scrivere con due tastiere: una vera inferiore, e la seconda nella quale i tasti erano sostituiti da lettere luminose che si accendevano ogniqualvolta veniva premuto un tasto sulla tastiera effettiva: la sequenza delle lettere che si illuminavano dava il messaggio cifrato (o quello in chiaro, se si batteva il testo cifrato). Da Wikipedia FUNZIONAMENTO DI ENIGMA I tedeschi erano convinti che il loro metodo per criptare/decriptare messaggi tramite ENIGMA fosse inviolabile. L’elemento base di Enigma è il rotore (o scambiatore), una ruota dentata con 26 contatti elettrici su un lato (uno per ogni lettera dell’alfabeto tedesco), collegati in maniera casuale ad altri 26 contatti elettrici in uscita (ogni lettera veniva sostituita con un’altra). IL ROTORE CARATTERISTICHE DEI ROTORI Un rotore può ruotare (da cui il nome) attorno ad un perno: in questo modo con un singolo rotore si possono ottenere 26 cifrature monoalfabetiche diverse, a seconda della posizione del rotore. Se il rotore ruota ad ogni carattere cifrato, allora implementa una cifratura polialfabetica con 26 alfabeti diversi CARATTERISTICHE DEI ROTORI La macchina Enigma era dotata di tre rotori in cascata: il primo ruotava avanzando di una posizione ad ogni carattere cifrato, il secondo avanzava di una posizione ad ogni giro completo del primo, e il terzo avanzava di una posizione ad ogni giro completo del secondo. Realizza una cifratura polialfabetica basata sull’uso di 26x26x26 = 17576 alfabeti cifranti IL RIFLESSORE Per far sì che la macchina possa essere usata anche per decrittare i messaggi, viene introdotto il riflessore: in questo modo premendo la lettera A si ottiene la lettera C, ma anche premendo C si ottiene A. Grazie al riflessore la stessa macchina può essere usata sia per criptare che per decriptare un testo. IL PANNELLO A PRESE MULTIPLE Infine, la macchina Enigma era dotata di un pannello a prese multiple che, mediante l’utilizzo di 6 cavi, permetteva di scambiare tra loro 6 coppie di lettere, aggiungendo quindi un ulteriore livello di cifratura a sostituzione. In questo modo il numero di combinazioni possibili è molto alto: usando 6 cavi si possono ottenere 100.391.791.500 configurazioni differenti ROBUSTEZZA DI ENIGMA Per forzarlo occorrerebbe testare tutte le possibili configurazioni: queste con gli accorgimenti usati dai nazisti erano più di 1.764.486.127.404.000. Come detto prima i tedeschi ritenevano che Enigma fosse inviolabile, proprio grazie all’alto numero di configurazioni possibili. Come fu possibile violare Enigma? VIOLARE ENIGMA I crittanalisti inglesi, e in particolare Alan Turing, si basarono sull’ipotesi che alcuni messaggi riguardassero argomenti specifici. Per esempio i tedeschi trasmettevano sempre alla stessa ora le previsioni del tempo, oppure quando un sottomarino avvistava una nave ne comunicava la posizione. Turing costruì il primo esempio di computer, chiamato BOMBA, per il ticchettio che produceva, che era in grado di vagliare tutte le possibili combinazioni e di restituire il risultato. CRITTOGRAFIA ASIMMETRICA Si chiama crittografia asimmetrica un sistema per criptare/decriptare messaggi in cui anche se si conosce il metodo usato per criptare e la chiave pubblica, trovare la chiave privata e il metodo per decriptare risulta molto complesso, quindi richiede tempi molto lunghi. Per capire la crittografia asimmetrica occorre addentrarsi nelle proprietà dei numeri e in particolare di numeri primi, introducendo le classi resto modulo n. CLASSI RESTO MODULO n (Zn) Le classi resto modulo n sono classi di equivalenza. Dati tre numeri interi a,b,n con n≠0, diremo che a è congruente a b modulo n (e scriveremo ab mod n) se e solo se n divide a-b (e scriveremo n|(a-b)) Si noti che siccome il resto della divisione di a per n è un numero compreso tra 0 e n-1 ogni numero intero a è congruente ad un numero compreso tra 0 e n-1. CLASSI RESTO MODULO n (Zn) La relazione di congruenza modulo n è una relazione di EQUIVALENZA, infatti gode delle proprietà: RIFLESSIVA: infatti aZ, n divide a − a = 0, quindi a a (mod n) SIMMETRICA: infatti a,bZ, se n divide a − b, allora n divide anche b-a, quindi se a b (mod n) allora anche b a (mod n) TRANSITIVA: infatti a,b,cZ, se n divide a-b e b-c allora n divide anche la loro somma (a-b)+(b-c)=a-c , ovvero se a b (mod n) e b c (mod n) allora a c (mod n) CLASSI RESTO MODULO 10 Z10 Ovvero classi resto modulo 10 E’ formato dalle classi di equivalenza di : [0] 10, [1] 10, [2] 10, [3] 10, [4] 10, [5] 10, [6] 10, [7] 10, [8] 10, [9] 10 Ma come sono fatte queste classi? [0] 10 è formata da tutti i multipli di 10, cioè {0, 10, -10, 20, -20,…} [1] 10 è formata dai numeri x interi, tali che x-1 sia multiplo di 10, cioè: {1, 11, -9, 21, -19, 31, ….} Analogamente: [2] 10={2, 12, -8, 22, -18, 32, ….} [3] 10={3, 13, -7, 23, -17, 33, ….} [4] 10={4, 14, -6, 24, -16, 34, ….} [5] 10={5, 15, -5, 25, -15, 35, ….} [6] 10={6, 16, -4, 26, -14, 36, ….} [7] 10={7, 17, -3, 27, -13, 37, ….} [8] 10={8, 18, -2, 28, -12, 38, ….} [9] 10={9, 19, -1, 29, -11, 39, ….} CLASSI RESTO MODULO 10 Come si eseguono le operazioni in Z 10 ? + 0 1 2 3 4 5 6 7 8 9 * 0 1 2 3 4 5 6 7 8 9 0 0 1 2 3 4 5 6 7 8 9 0 0 0 0 0 0 0 0 0 0 0 1 1 2 3 4 5 6 7 8 9 0 1 0 1 2 3 4 5 6 7 8 9 2 2 3 4 5 6 7 8 9 0 1 2 0 2 4 6 8 0 2 4 6 8 3 3 4 5 6 7 8 9 0 1 2 3 0 3 6 9 2 5 8 1 4 7 4 4 5 6 7 8 9 0 1 2 3 4 0 4 8 2 6 0 4 8 2 6 5 5 6 7 8 9 0 1 2 3 4 5 0 5 0 5 0 5 0 5 0 5 6 6 7 8 9 0 1 2 3 4 5 6 0 6 2 8 4 0 6 2 8 4 7 7 8 9 0 1 2 3 4 5 6 7 0 7 4 1 8 5 2 9 6 3 8 8 9 0 1 2 3 4 5 6 7 8 0 8 6 4 2 0 8 6 4 2 9 9 0 1 2 3 4 5 6 7 8 9 0 9 8 7 6 5 4 3 2 1 CLASSI RESTO MODULO 11 Z11 Ovvero classi resto modulo 11 E’ formato dalle classi di equivalenza di : [0] 11, [1] 11, [2] 11, [3] 11, [4] 11, [5] 11, [6] 11, [7] 11, [8] 11, [9] 11, [10]11 Ove: [0] 11 = {0, 11, -11, 22, -22,…} [1] 11 = {1, 12, -10, 23, -21, 34 ….} [2] 11 = {2, 13, -9, 24, -20, 35, ….} [3] 11 = {3, 14, -8, 25, -19, 36, ….} ……………. [10] 11 = {10, 21, -1, 32, -12, 43, ….} CLASSI RESTO MODULO 11 Come si eseguono le operazioni in Z 11 ? + 0 1 2 3 4 5 6 7 8 9 10 * 0 1 2 3 4 5 6 7 8 9 10 0 0 1 2 3 4 5 6 7 8 9 10 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 3 4 5 6 7 8 9 10 0 1 0 1 2 3 4 5 6 7 8 9 10 2 2 3 4 5 6 7 8 9 10 0 1 2 0 2 4 6 8 10 1 3 5 7 9 3 3 4 5 6 7 8 9 10 0 1 2 3 0 3 6 9 1 4 7 10 2 5 8 4 4 5 6 7 8 9 10 0 1 2 3 4 0 4 8 1 5 9 2 6 10 3 7 5 5 6 7 8 9 10 0 1 2 3 4 5 0 5 10 4 9 3 8 2 7 1 6 6 6 7 8 9 10 0 1 2 3 4 5 6 0 6 1 7 2 8 3 9 4 10 5 7 7 8 9 10 0 1 2 3 4 5 6 7 0 7 3 10 6 2 9 5 1 8 4 8 8 9 10 0 1 2 3 4 5 6 7 8 0 8 5 2 10 7 4 1 9 6 3 9 9 10 0 1 2 3 4 5 6 7 8 9 0 9 7 5 3 1 10 8 6 4 2 10 10 0 1 2 3 4 5 6 7 8 9 10 0 10 9 8 7 6 5 4 3 2 1 Somiglianze tra Z10 e Z11 Per quanto riguarda le proprietà dell’addizione sia Z10 che Z11 godono delle seguenti proprietà: Esiste l’elemento neutro 0, tale che 0+a=a+0=a Ogni elemento a ammette opposto, ovvero esiste un elemento b tale che: a+b=b+a=0 Vale la proprietà associativa: (a+b)+c=a+(b+c) Vale la proprietà commutativa: a+b=b+a Ovvero Z10 e Z11 sono un GRUPPO COMMUTATIVO rispetto all’addizione Somiglianze tra Z10 e Z11 Per quanto riguarda la moltiplicazione sia Z10 che Z11 godono delle seguenti proprietà: Comunque presi a,b,c a* (b*c)=(a*b)*c (PROPRIETA’ ASSOCIATIVA di *) Comunque presi a,b,c a*(b+c)=a*b+a*c e (b+c)*a=b*a+c*a PROPRIETA’ DISTRIBUTIVA di * rispetto + Quindi sia Z10 che Z11 sono ANELLI Differenze tra Z10 e Z11 Sia in Z10 che in Z11 esiste un elemento neutro della moltiplicazione 1, infatti comunque preso un elemento a, a*1=1*a=a Infine sia in Z10 che in Z11 vale la proprietà commutativa della moltiplicazione Quindi sono anelli con unità commutativi, ma a differenza di Z10 in Z11 ogni elemento diverso da 0 ammette un inverso moltiplicativo, cioè Z11 è un CAMPO INVERTIBILITA’ IN Zn Un elemento aZn, è INVERTIBILE se esiste bZn tale che a*b=1 Osserviamo, quali elementi sono invertibili in Z10? 1, 3, 7, 9 E quali elementi sono invertibili in Z11? 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 Perché c’è questa differenza? ALGORITMO EUCLIDEO ALGORITMO EUCLIDEO PER CALCOLO MCD TRA DUE NUMERI: Dati due numeri a,bN, con a>b e b≠0 vogliamo calcolare il massimo comun divisore tra a e b: Divido a per b: ottengo a=bq1+r1 con 0≤r1<b Divido b per r1: ottengo b=r1q2+r2 con 0≤r2<r1 Divido r1 per r2: ottengo r1=r2q3+r3 con 0≤r3<r2 E così via ottenendo all’ultimo passo: rk-2=rk-1qk ossia rk=0, in questo caso rk-1 è l’MCD tra a e b. ESEMPIO CALCOLO MCD Voglio calcolare l’MCD tra 1547 e 560 utilizzando l’algoritmo euclideo: 1547/560=2 con resto 427 560/427=1 con resto 133 427/133=3 con resto 28 133/28=4 con resto 21 28/21=1 con resto 7 21/7=3 con resto 0 Quindi 7 è il massimo comun divisore tra 1547 e 560 FORMULA DI BEZOUT Sia d il massimo comun divisore tra a e b, con a>b e b≠0. Allora esistono u,vZ, tali che d=ua+vb. ESEMPIO: prendiamo i dati dell’esempio precedente MCD(1547;560)=7 7=281-21 ma 21=133-4 28, quindi 7=28 1-133+4 28=5 28-133 1 analogamente: 7=5 427-16 133=21 427-16 560= =21 1547-58 560 da cui segue u=21 e v=-58 INVERTIBILITA’ IN Zn TEOREMA: Gli elementi a di Zn che hanno inverso moltiplicativo sono tutti e soli quelli primi con n. DIMOSTRAZIONE: Sia d il massimo comun divisore tra a ed n, se d>1 non può esistere b tale che ab1 (mod n) perché se così fosse d dovrebbe dividere ab-1, ma siccome d divide a, d dovrebbe dividere anche 1 e questo è impossibile. Supponiamo ora che d=1, grazie alla formula di Bezout esistono u,vZ, tali che d=au+nv, cioè au+nv=1, quindi l’inverso di a è b=u