710 likes | 968 Views
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. Cifrare con l’addizione. Un messaggio può essere cifrato utilizzando una permutazione
E N D
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
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 Zne… [a] è invertibile in Zn se e solo se MCD(a, n) = 1 La funzione di decifratura è:
Cifrario affine Un cifrario affine è un’applicazione Ckche 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.
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…..
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]:
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
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.
Analisi delle frequenze Testo cifrato: MQAOPT HIPPA FT FQHT LEAHT EGLAZEOVA QH TPPTVVI ZE OINLNAOT. ZIGTHE OVAHZANAGI T RTFFA.
Analisi delle frequenze Possibile decifrazione del testo cifrato: MQeOPaHIPPe FaFQHaLEeHaEGLeZEOVe QH aPPaVVI ZE OINLNeOa. ZIGaHEOVeHZeNeGIaRaFFe.
Analisi delle frequenze Possibile decifrazione del testo cifrato: MQeOPaHIPPe FaFQHaLEeHaEGLeZEOVe QH aPPaVVI ZE OINLNeOa. ZIGaHEOVeHZeNeGIaRaFFe. 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: MQeOtaHItte FaFQHaLEeHaEGLeZEOVe QH attaVVI ZE OINLNeOa. ZIGaHEOVeHZeNeGIaRaFFe. Allora forse VV può essere cc…..
Analisi delle frequenze …e la I può essere una o.. Possibile decifrazione del testo cifrato: MQeOtaHotte FaFQHaLEeHaEGLeZEOce QH attacco ZE OoNLNeOa. ZoGaHEOceHZeNeGIaRaFFe.
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: aaab ac ad…babbbcbd…. ….. zuzvzz 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): Questa ma tt in aunb at tagl io ne de lnostroe se rcit oh aperlu strato le coltivaz io niabband on at eallep 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. 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? 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 * q1 + r1 b = r1 * q2 + r2 r1 = r2 * q3 + r3 r2 = r3 * q4 + r4 MCD (44880, 5292) = 12
MCD (1547, 560) = 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”!