RELAZIONE FINALE PROGETTO LAUREE SCIENTIFICHE Dipartimento di Matematica, Università degli Studi di Ferrara I.T. “V.Bachelet” – Ferrara Laboratorio di Crittografia Argomento Referente del Laboratorio Docenti coinvolti Classe coinvolta Prerequisiti Contenuti Crittografia -Prof.ssa Fornasiero Marianna, docente di matematica presso IT “V. Bachelet” -Prof. Stumbo Fabio, docente di Algebra, Dipartimento di Matematica email: [email protected] -Prof.ssa Fornasiero Marianna, docente di matematica presso IT “V. Bachelet” email: [email protected] -Prof ssa Mandrioli Marina, tecnico di Laboratorio presso IT “V. Bachelet” email: [email protected] -Studenti della classe 4C – IT “V. Bachelet” – Ferrara (n. alunni: 22) (si rimanda all’elenco degli alunni in allegato 1) Concetto di numero primo Concetto di elemento invertibile Saper operare coi numeri naturali/interi Terminologia fondamentale dell’aritmetica modulare Operazioni con le aritmetiche finite: calcolo di somme, prodotti, compilazione di tabelle moltiplicative ed additive Lettura, comprensione ed interpretazione di formule di aritmetica modulare Algoritmo euclideo per il calcolo del M.C.D. Teorema di Bezout e sue applicazioni per il calcolo dell’inverso modulo n di un numero Potenze grandi di una classe di congruenza: algoritmo “square and multiply” Teorema di Eulero e sue semplici applicazioni alla crittografia Conoscenza delle principali tappe della storia della Crittografia, dall’antichità ad oggi Metodo crittografico RSA e sue applicazioni informatiche Abilità Conoscenze Terminologia fondamentale dell’aritmetica Scegliere e classificare dati e informazioni modulare Raccogliere e strutturare informazioni anche in Operazioni con le aritmetiche finite: calcolo di modo cooperativo (lezione dialogica) somme, prodotti, compilazione di tabelle Confrontare le informazioni provenienti da fonti moltiplicative ed additive diverse; selezionarle criticamente in base Lettura, comprensione ed interpretazione di all’attendibilità, alla funzione, al proprio scopo formule di aritmetica modulare Collegare un testo scientifico al contesto storico Conoscenza dell’algoritmo euclideo per il di riferimento calcolo del M.C.D. Sapere cosa si intende per aritmetiche finite, Conoscenza del Teorema di Bezout e sue saper operare in aritmetica modulare applicazioni per il calcolo dell’inverso modulo Saper applicare correttamente l’algoritmo n di un numero euclideo per il calcolo del M.C.D. tra due numeri Conoscenza dell’algoritmo “Square&Mutliply” ed il Teorema di Bezout Conoscenza del Teorema di Eulero e sue Saper calcolare l’inverso di una classe di semplici applicazioni alla crittografia congruenza modulo n Conoscenza del concetto di crittografia a Saper calcolare potenze grandi di una classe di chiave privata e pubblica, delle principali congruenza tappe della storia della Crittografia, Saper applicare correttamente il teorema di dall’antichità ad oggi Eulero Conoscere in cosa risiede la sicurezza di un Sapere operare con i principali metodi sistema crittografico (principio di Kerckhoffs) crittografici descritti (cifrario di Cesare, Vigenere, Conoscenza del Metodo crittografico RSA e cifrario di Hill) sue applicazioni a livello informatico Sapere come funziona il metodo RSA, in cosa consistono la chiave pubblica e quella privata Fase di applicazione -10 ore di lezione frontale/dialogica e di Laboratorio di Informatica svolte dalla Prof.ssa Fornasiero, prof.ssa di Matematica dell’ IT. “V. Bachelet”, di cui 5 ore in copresenza con prof.ssa Mandrioli -10 ore di lezione frontale/dialogica svolte dal docente Prof. Stumbo del Dipartimento di Matematica, Università degli Studi di Ferrara RELAZIONE FINALE PROGETTO LAUREE SCIENTIFICHE Dipartimento di Matematica, Università degli Studi di Ferrara I.T. “V.Bachelet” – Ferrara Laboratorio di Crittografia Tempi (numero di ore di attività svolte, tutte in orario CURRICOLARE) Prospetto riepilogativo presenze docenti Metodologia Strumenti Valutazione Il lavoro relativo al Progetto occupa il secondo pentamestre di scuola. Di seguito sono indicate le ore di effettivo lavoro svolte in classe ed in Laboratorio di Informatica, dal docente di Matematica dell’Istituto e dal docente di Algebra del Dipartimento di Matematica: -Prof.ssa Fornasiero (IT “V.Bachelet”) come relatore, in copresenza con prof.ssa Mandrioli Marina: 1 ora: introduzione all’argomento da parte del docente: cosa si intende per crittografia, messaggio cifrato, chiave, decifratura, alcuni esempi di cifrari 1 ora: introduzione alle aritmetiche finite, esercizi sulle tabelle moltiplicative, additive con compilazione tabelle in Excel 1 ora: ricerca di materiale dal web inerente l’argomento “aritmetica modulare e applicazioni alla crittografia moderna” 2 ore: algoritmo euclideo delle sottrazioni successive e divisioni successive. Esercizi in Laboratorio di Informatica con Word ed Excel (si rimanda al materiale consegnato dal docente agli alunni in allegato 2) -Prof.ssa Fornasiero (IT “V.Bachelet”) come relatore: 1 ora: esposizione alla classe di presentazione in PowerPoint sulla storia della crittografia, da parte di alcuni alunni della classe 2E dell’Istituto 1 ora: ripasso di esercizi per la verifica scritta 1 ora: verifica scritta sommativa conclusiva del progetto 2 ore: visione in aula video del film “Enigma”. -Prof. Stumbo (Dip. di Matematica) come relatore e prof.ssa Fornasiero come uditore: 1 ora: introduzione alla crittografia: concetti di base 1 ora: introduzione alle aritmetiche finite 2 ore: algoritmo euclideo per calcolo MCD tra due numeri, formula di Bezout e calcolo inverso mod n. 2 ore: calcolo di potenze grandi di un numero mod n, elementi invertibili di Zn, Phi di Eulero, Teorema di Eulero 2 ore: storia della crittografia: esempi di cifrari nell’antichità (cifrario di Cesare, Vigenere, Hill,…), macchina Enigma 2 ore: metodo RSA, crittografia ed applicazioni informatiche -Prof.ssa Fornasiero: -10 ore di presenza come relatore -10 ore di presenza come uditore -Prof.ssa Mandrioli: -5 ore di presenza come uditore -Prof. Stumbo: -10 ore di presenza come relatore Lezione frontale Lezione dialogica Laboratorio con utilizzo del software Excel Ricerca individuale e/o di coppie/gruppo Studio individuale Verifica sommativa finale Visione film Computer Internet, LIM Programma PowerPoint Libri / testi di consultazione Excel Aula video Oggetto di valutazione: Verifica scritta sommativa finale con esercizi e domande aperte (si rimanda al testo della prova in allegato 3) Allegato1 Elenco alunni coinvolti nel Laboratorio di Crittografia n. Cognome Nome 1 2 ANDRIUTA BECHERESCU 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 BRUNELLI BUBLITCHI BUZZONI CALZOLARI CAMOZZI CASTELLARI CUOGHI DELLA MORTE FERRONI GATTINI GAVIOLI GUIATI LAMBERTINI MAGLIACANE MALAVASI MONCO NARDI OLIYNYK POGGI RAMINI DIANA LUCIANA MARILENA DEBORA RADU SARA MICHAEL SIMONE NICOLO’ MANUELA FILIPPO ERICA FEDERICO WALID LUNA GIULIA CHIARA ANDREA GIACOMO FRANCESCA ANASTASIYA MATTIA FILIPPO Presenza (n° ore su 20 totali) 18 18 Voto prova finale (in decimi) 7 6 Esito POSITIVO/NEGATIVO 18 17 17 15 15 20 18 20 20 18 16 19 16 18 18 20 18 18 18 18 8 e 1/2 9 e 1/2 9 10 8 8 e 1/2 7 5 e 1/2 9 7 7 e 1/2 8 e 1/2 9 7 7 6 e 1/2 6 e 1/2 9 8 8 POSITIVO POSITIVO POSITIVO POSITIVO POSITIVO POSITIVO POSITIVO NEGATIVO POSITIVO POSITIVO POSITIVO POSITIVO POSITIVO POSITIVO POSITIVO POSITIVO POSITIVO POSITIVO POSITIVO POSITIVO POSITIVO POSITIVO Allegato 2 Algoritmo euclideo per calcolo del MCD tra due numeri 0 – Cos’è un algoritmo? Intuitivamente si dispone di un algoritmo per risolvere un problema se si ha un elenco finito di istruzioni tali che: 1) a partire dai dati iniziali le istruzioni sono applicabili in maniera rigorosamente deterministica, cioè in modo che ad ogni passo sia sempre possibile stabilire univocamente quale è l’istruzione che deve essere applicata al passo successivo; 2) si disponga di un criterio univoco per stabilire quando si è raggiunto uno stato finale, quando cioè il processo deve considerarsi terminato e il risultato, se esiste, è stato ottenuto. Uno stato finale deve sempre essere raggiungibile in un numero finito di passi. Il termine deriva dal nome del matematico persiano Al-Khwarizmi (780 – 850 ca) in quanto egli fu uno dei primi a far riferimento esplicito al concetto di algoritmo nel suo “Libro della matematica orientale”. Dalla definizione di algoritmo è possibile evincere le due proprietà fondamentali di un algoritmo finitezza, ovvero la sequenza delle istruzioni di un algoritmo deve essere finita; effettività, ovvero ogni algoritmo deve portare ad un risultato. Un algoritmo deve inoltre essere non ambiguo, cioè le sue istruzioni devono essere comprensibili a chiunque le voglia applicare. Per le caratteristiche di finitezza e di determinismo, un algoritmo si presta a essere automatizzato, cioè ad essere eseguito da una macchina opportunamente progettata. La teoria della calcolabilità nasce nella terza decade del nostro secolo con l’esigenza, nata nell’ambito degli studi di logica, di fornire un equivalente rigoroso del concetto intuitivo di algoritmo, e di indagare le possibilità ed i limiti dei metodi effettivi. Esempi di algoritmi tautologia. Un altro esempio di algoritmo Calcolare il M.C.D. (massimo comun divisore) di due numeri naturali diversi da zero 1. 2. 3. 4. Scomporre i numeri in fattori primi Scegliere i fattori comuni Scegliere quelli con esponente più piccolo Moltiplicare tra loro i numeri scelti 1 - L'algoritmo originale di Euclide, basato su sottrazioni successive Il matematico greco Euclide (323 a.C. – 285 a.C.) è stato il più importante studioso della storia antica. Egli è noto per i suoi Elementi, un’importantissima opera costituita da 13 libri. Il matematico fu chiamato da Tolomeo I ad Alessandria d’Egitto per operare all’interno della più grande e famosa Biblioteca del mondo antico. All’intendo dei suoi Elementi, Euclide presenta due metodi per il calcolo del M.C.D. di due numeri. L'algoritmo per il calcolo del MCD di due interi positivi, nella sua versione più semplice, si basa sulla seguente proprietà: Se due numeri, m, n, sono divisibili per un terzo numero, x, allora anche la loro differenza è divisibile per x. Per dimostrarla, si può utilizzare la proprietà distributiva. Supponiamo m>n: m=kx, n=hx m-n=kx-hx=x(k-h). Dunque si può dire che: MCD(m,n) = MCD((m-n),n) Come si vede, questa regola permette di passare, per mezzo di sottrazioni successive, a MCD di numeri sempre più piccoli, fino ad ottenere: MCD(a,0)=a L'algoritmo può essere scritto così: Finché m>0 se n>m allora scambia m con n Sottrai n da m e assegna ad m il valore della differenza (m=m-n) Ripeti il ciclo n è il MCD cercato Questo algoritmo è implementato in linguaggio javascript nel sito http://utenti.quipo.it/base5/numeri/euclidalgor.htm Potete utilizzarlo per fare degli esperimenti. La traccia dei calcoli vi farà capire come funziona. 2 - Un algoritmo più veloce, basato su divisioni successive Euclide descrisse questo algoritmo nel suo libro degli Elementi. Invece di usare i numeri interi, però, utilizzò i segmenti di retta. Perciò il suo algoritmo serve anche a determinare il massimo comune divisore di due segmenti. In certi casi l'algoritmo può richiedere numerosissimi passaggi, risultando molto lento (provate con MCD (900,15)). Conviene quindi renderlo più veloce e si può fare ricorrendo ad una serie di divisioni con resto anziché sottrazioni. Tale metodo si basa sull’esistenza del seguente teorema della divisione euclidea: Teorema: siano a,b numeri naturali, con a>=b . Esistono e sono unici due numeri naturali q, detto quoziente, e r, detto resto, tali che: a=b*q+r con q>=0 e 0<= r<b. Esempio. Se si considerano i numeri 19 e 5, esistono e sono unici i numeri 3 e 4 tali che: 19=3*5+4. Quindi, se r è il resto della divisione intera di due numeri naturali a e b, con a>=b, allora: r=0 , si ha che MCD(a,b) =b; r≠0 , si ha che MCD(a,b) =MCD(b,r); Quindi, per trovare il MCD(a,b) basta eseguire le divisioni finché il resto non sarà uguale a zero. Come si vede, questa regola permette di passare rapidamente, per mezzo di divisioni con resto successive, a MCD di numeri sempre più piccoli, fino ad ottenere il risultato. Questo algoritmo è implementato in linguaggio javascript nel sito http://utenti.quipo.it/base5/numeri/euclidalgor.htm Potete utilizzarlo per fare degli esperimenti. E' molto più veloce del primo. La traccia dei calcoli vi farà capire come funziona. Spiegazione dell'algoritmo basato sulle divisioni con resto successive Prendiamo a,b interi con a,b>0 e supponiamo 0<a<b. Dividiamo b per a, avremo che: b = q1a+r1, con 0 <= r1<a. Osserviamo che: i) se r1=0, allora b = q1a e abbiamo già che MCD(a,b)=a; ii) altrimenti, preso un intero positivo d 1) se d divide sia a che b, allora dividerà anche r1 in quanto combinazione lineare di a e b; 2) viceversa, se d divide a e r1, dividerà anche b per la stessa proprietà sopra. Quindi possiamo concludere che MCD(a,b) = MCD(a,r1), con il vantaggio che r1<a<b. Ora ripetiamo lo stesso procedimento sostituendo al posto di a e b i nuovi valori a e r1 con r1<a: a = q2r1+r2 , con 0<=r2<r1 dove i) se r2=0, si ha che r2|a, quindi MCD(a,b) = MCD(a,r1) = r2; ii) altrimenti, si ripetono le stesse conclusioni giungendo a definire che MCD(a,b)=MCD(a,r1)=MCD(r1,r2). Continuiamo a costruire queste successioni di resto sino ad arrivare all'i-esima iterazione dove ri-1=qi+1ri+ri+1, con 0<=ri+1<ri e avremo che i) se ri=0, allora MCD(a,b) = ri-1; ii) altrimenti, continuiamo il procedimento. Poiché gli ri sono interi non negativi e la successione di resti è decrescente, ad un certo punto ci dovremo fermare, cioè esisterà un rn diverso da zero tale che rn+1=0, allora il nostro MCD(a,b) sarà uguale all'ultimo resto diverso da zero della catena di divisioni. Questo procedimento è vantaggioso perché non dobbiamo scomporre in fattori primi e si utilizzano divisioni sempre più facili. Proviamo ora a ricostruire s,t procedendo a ritroso nell'algoritmo euclideo: presi MCD(a,b) = rn e sa+tb = rn, possiamo scrivere rn = rn-2 - qn×rn-1, e andiamo a sostituire il valore di rn-1 che si ricava dall'uguaglianza rn-3 = qn-1×rn-2 + rn-1: rn = rn-2 - qn(rn-3-qn-1rn-2) = (1+qnqn-1) rn-2 - qnrn-3. Ora sostituiamo in questa equazione il valore di rn-2 che si ottiene da rn-4 = qn-2rn-3 + rn-2 e avremo rn come espressione in rn-3 e rn-4, quindi andremo a sostituire rn-3 e continueremo questo procedimento fino ad ottenere rn come combinazione lineare dei soli a e b. Tratto da: http://www.dm.unibo.it/matematica/Congruenze/html/pag2/pag2.htm Esempio. Determinare MCD(72,16) . 72 : 16 = 4 con resto r=8 MCD(72,16)=MCD(16,8). 16 : 8 = 2 con resto r=0 MCD(72,16)= 8 Esercizio. Calcolare il M.C.D. delle seguenti coppie di numeri, con il metodo delle divisioni successive e con il metodo delle sottrazioni successive. a) 21, 49 e) 78, 12 b) 76,57 f) 98, 42 c) 240, 160 g) 102, 18 d) 80, 78 h) 468, 624 Risoluzione: a) 49 : 21 = 2 con resto r= 7 MCD(49,21)=MCD(21,7) 21 : 7 = 3 con resto r=0 MCD(49,21)=7 49-21= 28, MCD(49,21)=MCD(28,21), 28-21=7 MCD(28,21)=MCD(21,7), 21-7=14 MCD(21,7)=MCD(14,7), 14-7=7 MCD(14,7)=MCD(7,7), 7-7=0 MCD(49,21)=7 b) 76:57= 1 con resto r=19 MCD(76,57)=MCD(57,19) 57:19=3 con resto r=0 MCD(76,57)=19 ….. c) 240: 160=1 con resto r=80 MCD(240,160)=MCD(160,80) 160:80=2 con resto r=0 MCD(240,160)=80 …. Formula di Bezout: Dati a,b numeri naturali, esistono m,n numeri interi (non necessariamente positivi), tali che MCD(a,b)=m*a+n*b cioè tali che MCD(a,b) si possa esprimere come combinazione lineare di a e b. Ripercorrendo al contrario il metodo delle divisioni successive euclideo per il calcolo del MCD(a,b), riusciamo a determinare questi due numeri m,n. Infatti Esempio 1: supponiamo di avere a=49 e b=21. Abbiamo calcolato MCD(49,21)=7. Partiamo dall’ultimo resto 7 diverso da zero. Questo è già il MCD, quindi abbiamo che 49= 21 * 3 + 7, da cui 7= 1*49 – 3*21, cioè m=1 e n=– 3. Esempio 2: supponiamo di avere a=17 e b=3. Calcolo MCD(17,3): 17:3=5 con r=2 MCD(17,3)=MCD(3,2) 3:2=1 con r=1 MCD(3,2)=MCD(2,1) 2:1=2 con r=0 MCD(17,3)= 1 A ritroso, parto dall’ultimo resto diverso da zero, scrivo 3=1*2+1(=r2), quindi (r=)1=3 – 1*2, ora 17= 3*5+2, cioè 2=17 – 3*5. Quindi 1=3– 1*(17–3*5)= –1*17 +3*5+3*1=–1*17+6*3. Inversi di numeri modulo N: Possiamo utilizzare la Formula di B´ezout per calcolare gli inversi degli elementi modulo N: • Dati a ed N, sappiamo che a ha inverso modulo N solo se MCD(a, N) =1, cioè sse a ed N sono numeri primi fra loro. • Applichiamo l’algoritmo Euclideo per calcolare MCD(a, N): se `e diverso da 1, allora l’inverso modulo N non esiste. Se, invece, MCD(a, N) =, proseguiamo. • Percorrendo l’algoritmo Euclideo a ritroso possiamo scrivere la formula di Bezout: Nn + am = 1. • Se m è compreso tra 0 ed N − 1, m `e l’inverso di a modulo N ed abbiamo finito. • Se m è negativo o maggiore di N − 1, poichè abbiamo scelto di rappresentare gli elementi di ZN con i numeri interi tra 0 ed N − 1, non possiamo prendere m come inverso modulo N, ma dovremo modificarlo un po’. Se m è negativo, aggiungeremo tante volte N fino ad ottenere un numero tra 0 ed N − 1. Il risultato è l’inverso di a modulo N che cercavamo. Se m ≥ N, toglieremo ad m tante volte N fino ad ottenere un numero tra 0 ed N − 1. Il risultato sarà l’inverso di a modulo N. Esempio: a=17 e N=3 Abbiamo già calcolato MCD(17,3)=1, dunque 17 è invertibile modulo 3 Per calcolare il suo inverso modulo 3 scriviamo la formuladi Bezout +6*3–1*17=1,. quindi n=6 e m=–1. Poiché m non è compreso tra 0 e 2, aggiungo 3=N e ottengo m=–1+3=2. Quindi 2 è l’inverso modulo 3 di 17 . Infatti 17 è congruente a 2modulo 3 e 2*2=4 che è congruente a 1 modulo 3, cioè 2*2=1(mod3) Allegato 3 Verifica sommativa su Progetto Lauree Scientifiche Argomento: “Crittografia” Docente referente I.T. “V. Bachelet” - Ferrara: prof.ssa Marianna Fornasiero Docente del Dipartimento di Matematica, Università di Ferrara: prof. Fabio Stumbo Aritmetica modulare: Esercizio 1 (PUNTI 6): Costruire le tabelle additiva e moltiplicativa di Z7. Additiva: Moltiplicativa: + x Elenca quali sono gli elementi invertibili di Z7. Quanti sono? Esercizio 2 (PUNTI 5): Calcolare 352 mod 11 e 661 mod 11. Sono invertibili? Perché? Calcolare inoltre (352 + 661) mod 11 e (352 x 661) mod 11. Esercizio 3 (PUNTI 6): Calcolare con l’algoritmo euclideo delle divisioni successive il MCD tra 350 e 48. Esercizio 4 (PUNTI 6): Calcolare con la formula di Bezout l’inverso di 11 in Z13. Chi sono gli elementi invertibili di Z13? Quanti sono? Esercizio 5 (PUNTI 5): 10 è invertibile in Z20? Perché? Elenca tutti gli elementi invertibili in Z20. Esercizio 6 (PUNTI 5): Trovare l’inverso di 7 in Z10. Elencare tutti gli elementi invertibili di Z10. Esercizio 7 (PUNTI 6): Calcolare 728 mod 29 e 1528 mod 29. Quale teorema hai applicato? Enuncialo. Esercizio 8 (PUNTI 6): Calcolare ϕ(18), ϕ(19) e ϕ(22). (FACOLTATIVO) Esercizio 9 (PUNTI 5): Calcolare 992 mod 38. Crittografia e sistema RSA: Domanda 1 (PUNTI 5): cosa si intende col termine crittografia? Spiega brevemente le principali componenti di un sistema crittografico. Domanda 2 (PUNTI 6): quali sistemi crittografici conosci? Cosa si intende per chiave privata e chiave pubblica? Spiega brevemente le differenze tra i due sistemi. Domanda 3 (PUNTI 6): Elenca qualche cifrario usato nell’antichità, illustrando il metodo su cui si basa. Domanda 4 (PUNTI 6): Cosa si intende per cifrario mono e poli- alfabetico? Dai alcuni esempi. Domanda 5 (PUNTI 5) : Decifrare la seguente frase con il cifrario di Cesare: FKLGRUPHQRQSLJOLDSHVFKH (gli spazi non vanno considerati). Domanda 6 (PUNTI 6): Decifrare la frase “TFALHROJEWIBGCBXFDUJIXXATR”usando la tavola di Vigenere, che trovi sul retro del foglio e la parola chiave “CRITTOGRAFIA” (gli spazi non vanno considerati) . Domanda 7 (PUNTI 5): Cosa dice il principio di Kerckhoffs? Domanda 8 (PUNTI 6): Che cosa è la macchina Enigma? Quando e da chi venne utilizzata? (FACOLTATIVO) Domanda 9 (PUNTI 5): spiega brevemente come funziona il sistema RSA. Quali sono in questo sistema le due chiavi privata e pubblica utilizzate? Tavola di Vigenere: Alunno/a: ……………………………………… Classe:………. Data:…………… Punti: ……../100 Voto: ……../10 ESITO: ………………… PUNTEGGIO: Totale: punti 100 (punti 90 se si escludono l’esercizio n. 9 e la domanda n.9 facoltativi) Esito POSITIVO: punti >= 60 Griglia di valutazione: il punteggio in centesimi si traduce in corrispondente voto da 1 a 10. Esito POSITIVO voto >= 6.