Crittografia e numeri primi Piano Lauree Scientifiche Crittografia e numeri primi III incontro lunedì 22 novembre 2010
Le dispense degli incontri “Crittografia e numeri primi” sono sul sito matheteresa.wikidot.com
Scaletta dell’incontro (per gli insegnanti) Analisi delle frequenze Algoritmo euclideo Identità di Bezout Cifrario di Vigenére
Cifrare con l’addizione Un messaggio può essere cifrato utilizzando una permutazione dell’alfabeto (e di eventuali altri caratteri). Il Codice Cesare cifra utilizzando una cifratura per traslazione del tipo Qualsiasi valore dello spostamento 0 < [a] < n va bene. Questa cifratura è molto semplice da decifrare poiché è sufficiente determinare lo spostamento di una lettera per ottenere di conseguenza tutti gli altri.
Cifrare con la moltiplicazione Un’altra permutazione dell’alfabeto può essere ottenuta utilizzando la funzione moltiplicativa La funzione f è però una funzione di cifratura se e solo se [a] è invertibile in Zn e… [a] è invertibile in Zn se e solo se MCD(a, n) = 1 La funzione di decifratura è:
[m] [m’] = [a] [m] + [b] Cifrario affine Un cifrario affine è un’applicazione Ck che contenga una moltiplicazione e una traslazione (in modo che lo [0] non abbia come immagine sé stesso). La nostra chiave sarà una coppia di numeri k = ([a], [b]) e la funzione cifrante sarà f : Zn Zn [m] [m’] = [a] [m] + [b] La funzione Ck va bene se e solo se è biunivoca, cioè se e solo se è invertibile. Si mostra facilmente che ciò accade esattamente quando [a] invertibile.
Come determinare la chiave di decifratura? m’ = a m + b [m’] = [a] [m] + [b]
Determina la chiave di decifratura relativa alla chiave di cifratura Ck = ([5], [4])
Determina la chiave di decifratura relativa alla chiave di cifratura Ck = ([11], [6])
Analisi delle frequenze Se si associa un ordine anche all’elenco dei caratteri del nostro alfabeto, la funzione di cifratura Ck produce una permutazione dell’ordine con cui compaiono i caratteri. a b c d e f g h i l m n o p q r s t u v z H D N B G M Q A T R L V C P F O U Z E S I
Analisi delle frequenze Quante sono le possibili permutazioni del nostro alfabeto di 21 lettere? A partire dalla prima lettera (A) possiamo pensare di posizionarla In 21 posizioni, la seconda in 20 e così via….. a b c d e f g h i l m n o p q r s t u v z A …
Analisi delle frequenze Quante sono le possibili permutazioni del nostro alfabeto di 21 lettere? A partire dalla prima lettera (A) possiamo pensare di posizionarla In 21 posizioni, la seconda in 20 e così via….. Pertanto, in totale abbiamo 21•20•19•18•……•2•1 permutazioni possibili del nostro alfabeto 21! = 51090942171709440000 ~ 5•1019 possibili riordinamenti del nostro alfabeto Con le funzioni affini abbiamo 20*12 possibili permutazioni
Analisi delle frequenze Tutti questi 21! = 51090942171709440000 possibili riordinamenti del nostro alfabeto si portano però dietro la stessa informazione: la distribuzione di frequenze dei caratteri è costante
Analisi delle frequenze Testo da cifrare: Questa mattina un battaglione del nostro esercito ha perlustrato le coltivazioni abbandonate alle pendici del monte. Possiamo calcolare il numero di volte in cui ciascun carattere è stato utilizzato nel testo [totale 100 caratteri]: a b c d e f g h i l m n o p q r s t u v z 12 3 4 1 8 2 9
Analisi delle frequenze Testo da cifrare: Questa mattina un battaglione del nostro esercito ha perlustrato le coltivazioni abbandonate alle pendici del monte.
Analisi delle frequenze Aggiungiamo altro testo, altri 100 caratteri siamo quindi a 200: Questa mattina un battaglione del nostro esercito ha perlustrato le coltivazioni abbandonate alle pendici del monte. Gli abitanti hanno bruciato tutte le colture in modo da non lasciare nulla al nemico che avanzava. Domani sera partiremo.
Analisi delle frequenze Confrontiamo la nostra distribuzione di frequenze con quella ottenuta considerando il primo capitolo dei promessi sposi
Analisi delle frequenze Possiamo confrontare la distribuzione di frequenze della lingua italiana Nei secoli, per esempio confrontando i promessi sposi con La Divina Commedia
Analisi delle frequenze Possiamo confrontare anche le distribuzioni di frequenze nelle varie Lingue: inglese, francese, italiano.
Analisi delle frequenze Tutti i messaggi cifrati con un sistema monoalfabetico si portano dietro una informazione che può essere utilizzata per decriptare. Conoscendo la distribuzione di frequenze teorica possiamo tentare qualche accoppiamento per ridurre il numero di possibili permutazioni. a b c d e f g h i l m n o p q r s t u v z 10,4% 1,1% 4,6% 3,9% 12,3% 0,9% 2,0% 1,2% 10,0% 5,7% 2,6% 7,6% 9,6% 2,9% 0,7% 6,6% 5,4% 6,1% 3,5% 2,2%
Analisi delle frequenze Testo cifrato: MQAOPT HIPPA FT FQHT LEAHT EGLAZEOVA QH TPPTVVI ZE OINLNAOT. ZIGTHE OVAHZANAGI T RTFFA. A B C D E F G H I L M N O P Q R S T U V Z frequenze nel messaggio cifrato 14% 0% 7% 6% 4% 8% 1% possibili accoppiamenti e a i distribuz. Teorica delle frequenze 10,4% 1,1% 4,6% 3,9% 12,3% 0,9% 2,0% 1,2% 10,0% 5,7% 2,6% 7,6% 9,6% 2,9% 0,7% 6,6% 5,4% 6,1% 3,5% 2,2%
Analisi delle frequenze B C D E F G H I L M N O P Q R S T U V Z frequenze nel messaggio cifrato 14% 0% 7% 6% 4% 8% 1% possibili accoppiamenti e a i distribuz. Teorica delle frequenze 10,4% 1,1% 4,6% 3,9% 12,3% 0,9% 2,0% 1,2% 10,0% 5,7% 2,6% 7,6% 9,6% 2,9% 0,7% 6,6% 5,4% 6,1% 3,5% 2,2% Possibile decifrazione del testo cifrato: MQeOPa HIPPe Fa FQHa LEeHa EGLeZEOVe QH aPPaVVI ZE OINLNeOa. ZIGaHE OVeHZeNeGI a RaFFe.
Analisi delle frequenze Possibile decifrazione del testo cifrato: MQeOPa HIPPe Fa FQHa LEeHa EGLeZEOVe QH aPPaVVI ZE OINLNeOa. ZIGaHE OVeHZeNeGI a RaFFe. Per la decifrazione completa ci possiamo anche aiutare osservando che ci sono alcuni caratteri ripetuti che fanno pensare alle doppie: Ci sono nel testo due gruppi di PP: proviamo a sostituire la lettera T: Possibile decifrazione del testo cifrato: MQeOta HItte Fa FQHa LEeHa EGLeZEOVe QH attaVVI ZE OINLNeOa. ZIGaHE OVeHZeNeGI a RaFFe. Allora forse VV può essere cc…..
Analisi delle frequenze …e la I può essere una o.. Possibile decifrazione del testo cifrato: MQeOta Hotte Fa FQHa LEeHa EGLeZEOce QH attacco ZE OoNLNeOa. ZoGaHE OceHZeNeGI a RaFFe.
Analisi delle frequenze Come possiamo bloccare l’analisi delle frequenze? Non usando un codice monoalfabetico, modificando cioè la funzione con la posizione (cambiando per esempio la chiave) Cifrando i caratteri più frequenti con caratteri diversi (Leon Battista Alberti nel De Cifris) Cifrando non i caratteri singoli, ma a gruppi di due o tre lettere consecutive. In questo caso il numero di “caratteri” utilizzati aumenta notevolmente . Lavorando per esempio con gruppi di due lettere: aa ab ac ad… ba bb bc bd…. ….. zu zv zz AA AB AC AD… BA BB BC BD…. ….. ZU ZV ZZ
Testo da cifrare: Questa mattina un battaglione del nostro esercito ha perlustrato le coltivazioni abbandonate alle pendici del monte. Posso per esempio eliminare gli spazi Questamattinaunbattaglionedelnostroesercitohaperlustrato lecoltivazioniabbandonateallependicidelmonte. e suddividere poi il messaggio in tanti digrammi (cioè blocchi di due lettere): Qu es ta ma tt in au nb at ta gl io ne de ln os tr oe se rc it oh ap er lu st ra to le co lt iv az io ni ab ba nd on at ea ll ep en di ci de lm on te. Ogni digramma viene trattato come un unico carattere e, volendolo poi trattare con una funzione matematica, ogni digramma corrisponde a un numero.
Ci possiamo chiedere quanti sono i digrammi che andremo ad utilizzare. b c d e f g h i l m n o p q r s t u v z cb eg ge qu st Osservazione: possiamo costruire il prodotto cartesiano Z21×Z21 e determinare il numero di “caratteri” utilizzati.
Associando le lettere a gruppi di due lavoriamo con 21×21=441 caratteri. Quindi in questo caso l’insieme diventa Z441 Se invece raggruppassimo i caratteri a gruppi di tre o quattro, ecc.. il numero degli elementi dell’insieme su cui viene applicata la funzione di cifratura aumenterebbe notevolmente: Trigrammi (gruppi di tre lettere): Z21×21×21=Z9261 gruppi di quattro lettere: Z21×21×21×21=Z194481
Supponiamo di associare le lettere del nostro messaggio a gruppi come possiamo dare un valore numerico a ciascun digramma? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 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 Esempio: digramma gl viene tradotto nel numero 6×21+11=137 Esempio: trigramma ndo viene tradotto nel numero 13×212 +3×21+14=5810
Analisi delle frequenze Lavorando con i digrammi si ottiene una distribuzione di frequenze, ma molto meno utilizzabile. In figura otteniamo la distribuzione dei digrammi in lingua inglese:
Bloccare l’analisi delle frequenze si traduce in insiemi più numerosi. I numeri utilizzati diventano più grandi e potrebbe non essere più così semplice calcolare il MCD(a,n) e determinare l’inverso di [a] per decifrare.
Proviamo a determinare il MCD (1633 , 3763) Si ha: 1633 = 23 71 3763 = 71 53 MCD (1633, 3763) = 71
Definizione Dati due numeri interi a e b, il loro Massimo Comun Divisore è un intero positivo d tale che: d divide a e d divide b 2. se d’ divide sia a che b, allora d’ divide d
Algoritmo euclideo per il calcolo del MCD (presente negli Elementi di Euclide, permette il calcolo del MCD tra due numeri senza ricorrere alla fattorizzazione) MCD (44880, 5292)
a = b * quoziente + resto 44880 = 5292 * 8 + 2544 a = b * q1 + r1 5292 = 2544 * 2 + 204 b = r1 * q2 + r2 2544 = 204 * 12 + 96 r1 = r2 * q3 + r3 204 = 96 * 2 + 12 r2 = r3 * q4 + r4 96 = 12 * 8 + MCD (44880, 5292) = 12
MCD (1547, 560) = MCD (3522, 321) =
1547 = 560 * + = * + = * + = * + = * + MCD (1547, 560) = a = b * quoziente + resto 1547 = 560 * + = * + = * + = * + = * + MCD (1547, 560) =
3522 = 321 * + = * + = * + = * + = * + MCD (3522, 321) = a = b * quoziente + resto 3522 = 321 * + = * + = * + = * + = * + MCD (3522, 321) =
Verifichiamo che l’ultimo resto non nullo divide tutti i resti che lo precedono L’ultimo resto non nullo (12) divide il resto precedente (96) Infatti nell’ultima riga si legge: 96 = 12 * 8 + 0
L’ultimo resto non nullo (12) divide anche 204 Infatti nelle ultime due righe si legge: 204 = 96 * 2 + 12 96 = 12 * 8 + 0 E sostituendo si ha: 204 = (12 * 8) * 2 + 12 = 12 * (8 * 2 + 1) = 12 * 17
L’ultimo resto non nullo (12) divide anche 2544 2544 = 204 * 12 + 96 204 = 96 * 2 + 12 = 12 * 17 96 = 12 * 8 + 0 E sostituendo si ha: 2544 = 204 * 12 + 96 = (12 * 17) * 12 + 12 * 8 = = 12 * (12 * 17 + 8) = 12 * 212
Dunque l’ultimo resto non nullo divide tutti i resti che lo precedono
Verifichiamo che l’ultimo resto non nullo divide a e b Infatti dall’uguaglianza 5292 = 2544 * 2 + 204 , si deduce che: Se 12 divide i resti 2544 e 204, allora 12 divide 5292 E dall’uguaglianza 44880 = 5292 * 8 + 2544, si deduce che: Se 12 divide 52592 e 2544, allora 12 divide 44880 Dunque l’ultimo resto non nullo (12) divide sia a (44880) che b (5292)
Si può concludere che l’ultimo resto non nullo è un divisore comune di a e b, e divide quindi il loro MCD! Verifichiamo, viceversa, che ogni divisore comune di a e b è anche divisore dell’ultimo resto non nullo
Riscriviamo l’uguaglianza 44880 = 5292 * 8 + 2544 al modo seguente: 44880 - 5292 * 8 = 2544 Se n è un divisore comune di 44880 e 5292, allora n divide anche il resto 2544
Riscriviamo l’uguaglianza 5292 = 2544 * 2 + 204 al modo seguente: 5292 - 2544* 2 = 204 Se n è un divisore comune di 44880 e 5292, allora n divide anche il resto 204
Riscriviamo l’uguaglianza 2544 = 204 * 12 + 96 al modo seguente: 2544 – 204 * 12 = 96 Se n è un divisore comune di 44880 e 5292, allora n divide anche il resto 96
Riscriviamo l’uguaglianza 204 = 96 * 2 + 12 al modo seguente: 204 – 96 * 2 = 12 Se n è un divisore comune di 44880 e 5292, allora n divide anche il resto 12
Si può concludere che “ogni divisore comune di a e b (e quindi anche il MCD (a, b)) divide l’ultimo resto non nullo”!
Se l’ultimo resto non nullo divide il MCD (a, b) e il MCD (a, b) divide l’ultimo resto non nullo, allora l’ultimo resto non nullo è uguale al MCD (a, b)
Étienne Bézout (1730 – 1783)
Massimo Comun Divisore Dati due numeri interi a e b un loro massimo comun divisore è un intero positivo d tale che d divide a e d divide b se t divide sia a che b allora t divide d Si dimostra, che ogni coppia di numeri interi a, b ammette un massimo comun divisore, che risulta essere unico, ed è indicato con il simbolo MCD(a,b). Due numeri interi a, b tali che MCD(a,b) = 1 si dicono coprimi o relativamente primi
a = b * quoziente + resto 44880 = 5292 * 8 + 2544 2 204 12 96
Identità di Bèzout L’algoritmo di Euclide ci permette, una volta individuato MCD (a, b), di trovare due numeri interi s, t tali che d = s ´ a + t ´ b Questa relazione si chiama IDENTITA’ DI BEZOUT.
44880 = 5292 ´ 8+2544 r1= 2544=44880 - 5292 ´ 8 5292 = 2544 ´ 2+204 r2=204 = 5292 - 2544 ´ 2 2544 = 204 ´ 12+96 r3 = 96 = 2544 - 204 ´ 12 204 = 96 ´ 2+12 MCD = r4= 12=204 - 96 ´ 2
r1=2544=44880 - 5292 ´ 8 r2 = 204 = 5292 - 2544 ´ 2 r3 = 96 = 2544 - 204 ´ 12 MCD= 12 = 204 –96´2 = 204 – (2544 - 204 ´ 12) ´ 2 = 204 – 2544 ´ 2 + 204 ´ 24 = 204 ´ 25 – 2544 ´ 2 = (5292 - 2544 ´ 2) ´ 25 – 2544 ´ 2= = 5292 ´ 25 – 2544 ´ 52 = 5292 ´ 25 –(44880 –5292 ´ 8) ´ 52= = 5292 ´ 441 – 44880 ´ 52 12 = 441 ´ 5292 – 52 ´ 4480
Come determinare l’inverso a è invertibile modulo n se e solo se MCD(a,n)= 1. MCD(a,n)= 1 = s a+n t (Bezout) Modulo n [1] = [s a+n t] = [s a]+[n t] = [s] [a]+[n] [t]
Nascita dei codici polialfabetici 1466 Leon Battista Alberti – disco cifrante 1553 Giovan Battista Bellaso – tavola reciproca 1586 Blaise de Vigenère – cifrario di Vigenère
Cifrari polialfabetici Giovan Battista Bellaso (Brescia1505 - ….) contrassegno : VIRTVTIOMNIAPARENTVIRTVTIOMNIAPARENTVI testo chiaro : larmataturchescapartiraacinquediluglio testo cifrato: fyboueyldanuofszlpiincupnshmlrnxoiznrd
Le chiffre indéchiffrable
Blaise de Vigenère (1523 – 1596)
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 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 testo in chiaro 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 26 =
y L U C E testo in chiaro a p u n t m e o l s A b c d f g h i j k q r v w J x R y Y z
y L U C E testo in chiaro a p u n t m e o l s b c d f g h i j k q r v w J x R y Y z N Q P H V S F O D
V E N T O testo cifrato M I H Z F X R 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
V E N T O testo cifrato M I H Z F X R 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
f : ( Z26 , Zp) (Z26 ) p: dimensione della chiave Cifrare con il metodo Vigenère e la matematica: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 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 f : ( Z26 , Zp) (Z26 ) p: dimensione della chiave ([m],[Kp]) ([m’])
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 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
f-1 : ( Z26 , Zp) (Z26 ) p: dimensione della chiave Decifrare Vigenère …..conoscendo la chiave…. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 a b c d e f g h i l m n o p q r s t u v z Determinazione della chiave di decifratura: P:{[11],[20],[2],[4]} decifratura 10 1 19 17 P’:{[10],[1],[19],[17]} M B V T f-1 : ( Z26 , Zp) (Z26 ) p: dimensione della chiave ([m’],[K’p]) ([m])