Aritmetica modulare: un applicazione alla crittografia

Documenti analoghi
Scambiarsi messaggi segreti: la matematica della crittografia

Alessandro Musesti - Università Cattolica del Sacro Cuore

Il Ricevente comunica pubblicamente una chiave e. Il Mittente codifica il messaggio usando la funzione f(m, e) = C e

sia G un gruppo ciclico di ordine n, sia g un generatore di G bisogna determinare l unico intero x con 1 x n 1 tale che g x = y

(G, ) un gruppo moltiplicativo di ordine n l ordine di un elemento g G, o(g), è il minimo intero positivo m tale che g m = 1

sia G un gruppo ciclico di ordine n, sia g un generatore di G

A cosa serve la crittografia? La crittografia serve ad aiutare due utenti, Alice e Bob, a comunicare in modo sicuro...

sia G un gruppo ciclico di ordine n, sia g un generatore di G

Crittografia per la sicurezza dei dati

problema del logaritmo discreto

CENNI SULLA CRITTOGRAFIA MODULO 5

logaritmo discreto come funzione unidirezionale

Crittografia simmetrica (a chiave condivisa)

sia G un gruppo ciclico di ordine n, sia g un generatore di G bisogna determinare l unico intero x con 1 x n 1 tale che g x = y

Crittografia con Python

Scuola di Specializzazione in Fisica Sanitaria a.a. 2005/2006. Corso di Informatica e Statistica Medica. Crittografia

(corso di laurea in Informatica Musicale)

crittografia a chiave pubblica

CODICI. Crittografia e cifrari

Elementi di Algebra e di Matematica Discreta Cenno di un applicazione alla crittografia

idea della crittografia a chiave pubblica

una possibile funzione unidirezionale

Seminario sulla Crittografia. Corso: T.A.R.I Prof.: Giulio Concas Autore: Ivana Turnu

crittografia a chiave pubblica

la crittografia tratta delle "scritture nascoste", dei metodi per rendere un messaggio "offuscato"

Breve storia della crittografa

idea della crittografia a chiave pubblica

Aritmetica modulare, numeri primi e crittografia

funzione φ di Eulero, o funzione toziente è definita sugli interi positivi φ(n) è il numero di interi positivi n che sono coprimi con n

Elementi di Algebra e di Matematica Discreta Cenno alla crittografia

LICEO STATALE ENRICO MEDI CON INDIRIZZI:

Progetto Lauree Scientifiche Crittografia V incontro

NUMERI PRIMI E CRITTOGRAFIA

Elementi di Crittografia

si cerca di scegliere e non troppo grande e tale che nella scrittura binaria di e ci siano pochi 1 e piccolo = cifratura più veloce

Livello Applicazioni Elementi di Crittografia

La crittografia. La crittografia è un'arte antica, risale almeno ai Greci (Tucidide, scitala lacedemonica).

Gestione della chiave

crittografia a chiave pubblica

Elementi di crittografia

idea della crittografia a chiave pubblica

Università degli Studi di Milano

CRITTOGRAFIA 2014/15 Appello del 13 gennaio Nome: Cognome: Matricola:

CRITTOGRAFIA E NUMERI PRIMI TFA A059 ANNA NOBILI OTTAVIANO ROSI

Corso di Crittografia Prof. Dario Catalano. Introduzione alla crittografia asimmetrica

Sicurezza delle informazioni

Crittografia ed Aritmetica Modulare VI incontro

Crittografia a chiave pubblica

Sicurezza della comunicazione tra due entità. Prof.ssa Gaia Maselli

Crittografia con Python

Tesina di Vittoria Melchiori Anno scolastico 2012/2013 ISISS Carlo Anti

Crittografia: dagli antichi codici di Cesare ai protocolli avanzati

funzione φ di Eulero, o funzione toziente è definita sugli interi positivi φ(n) è il numero di interi positivi n che sono coprimi con n

Crittografia: Servizi richiesti

Introduzione alla crittografia. Diffie-Hellman e RSA

Ancora sui criteri di divisibilità di Marco Bono

una possibile funzione unidirezionale

Storia della Crittografia. dalle origini al XVI secolo

Crittografia e firma digitale. Prof. Giuseppe Chiumeo

Esercizi di Algebra. Anna Bigatti. 13 Novembre Ora vogliamo definire una operazione +, cioè dobbiamo definire quando fa a + b.

RACCOLTA DI ALCUNI ESERCIZI TRATTI DA COMPITI D ESAME SUL SISTEMA CRITTOGRAFICO RSA

Elementi di crittografia

crittosistema: definizione

CODICI SEGRETI: UN VIAGGIO NELLA CRITTOGRAFIA

da chi proviene un messaggio?

Aritmetica e Crittografia

NUMERI PRIMI E CRITTOGRAFIA

Crittografia. Steganografia

Definizione. La crittografia serve per: Crittografia deriva dal greco = scrittura nascosta

una possibile funzione unidirezionale

Dal messaggio a sequenze di numeri

crittografia a chiave pubblica

Il nano sulle spalle del gigante

L'enigma dei numeri primi

Crittografia ed Aritmetica Modulare II incontro

La codifica. dell informazione

Crittografia Moderna

La fattorizzazione dei polinomi

schema di firma definizione formale

una possibile funzione unidirezionale

da chi proviene un messaggio?

cifrario di Feistel cifrario di Feistel

UD 1.2e: La codifica Digitale dei Numeri CODIFICA DIGITALE DEI NUMERI

Modulo 1: Le I.C.T. UD 1.2e: La codifica Digitale dei Numeri

una possibile funzione unidirezionale

clic per iniziare 6/9/05 1

RSA e firma digitale

Corso di Crittografia Prof. Dario Catalano. Primitive Asimmetriche

Cifratura Asimmetrica

1 (UNO) INDICA LA QUANTITÀ DI ELEMENTI DELL INSIEME UNITARIO B = (CLASSI CHE HANNO LA LIM) SOLO LA 4ª A HA LA LIM QUINDI L INSIEME È UNITARIO.

Agostino Dovier. Dip di Matematica e Informatica, Univ. di Udine

Crittografia da Whatsapp a Wikileakes, tra spie e segreti di stato

IMPLEMENTAZIONI DIDATTICHE DI ALGORITMI DI CIFRATURA PER SICUREZZA INFORMATICA

MESSAGGI SEGRETI. di Massimo Iuliani

Sistemi di Elaborazione delle Informazioni

da chi proviene un messaggio?

Transcript:

Aritmetica modulare: un applicazione alla crittografia a cura di Alessandro Musesti Università Cattolica del Sacro Cuore, Brescia 10 marzo 2016

Parte I I cifrari a sostituzione

L inizio della storia: il metodo Atbash Il metodo Atbash consiste nel sostituire la prima lettera dell alfabeto con l ultima, la seconda con la penultima, e così via. Chiaro a b c d e f g h i j k l m Cifrato Z Y X W V U T S R Q P O N Chiaro n o p q r s t u v w x y z Cifrato M L K J I H G F E D C B A

L inizio della storia: il metodo Atbash Il metodo Atbash consiste nel sostituire la prima lettera dell alfabeto con l ultima, la seconda con la penultima, e così via. Chiaro a b c d e f g h i j k l m Cifrato Z Y X W V U T S R Q P O N Chiaro n o p q r s t u v w x y z Cifrato M L K J I H G F E D C B A Il metodo prende il nome dallo scambio delle lettere nell alfabeto ebraico:.( atbash )אתבש,( shin )ש da cui il nome ( bet )ב con,( tav )ת ( alef )א con Il metodo è molto antico: ad esempio, nel libro di Geremia si trova parecchie volte la parola ( Sheshakh )ששך che sta per.( Babel )בבל

L inizio della storia: il metodo Atbash Il metodo Atbash consiste nel sostituire la prima lettera dell alfabeto con l ultima, la seconda con la penultima, e così via. Chiaro a b c d e f g h i j k l m Cifrato Z Y X W V U T S R Q P O N Chiaro n o p q r s t u v w x y z Cifrato M L K J I H G F E D C B A Il metodo prende il nome dallo scambio delle lettere nell alfabeto ebraico:.( atbash )אתבש,( shin )ש da cui il nome ( bet )ב con,( tav )ת ( alef )א con Il metodo è molto antico: ad esempio, nel libro di Geremia si trova parecchie volte la parola ( Sheshakh )ששך che sta per.( Babel )בבל Provate a decifrare la parola NZGVNZGRXZ

L inizio della storia: il metodo Atbash Il metodo Atbash consiste nel sostituire la prima lettera dell alfabeto con l ultima, la seconda con la penultima, e così via. Chiaro a b c d e f g h i j k l m Cifrato Z Y X W V U T S R Q P O N Chiaro n o p q r s t u v w x y z Cifrato M L K J I H G F E D C B A Il metodo prende il nome dallo scambio delle lettere nell alfabeto ebraico:.( atbash )אתבש,( shin )ש da cui il nome ( bet )ב con,( tav )ת ( alef )א con Il metodo è molto antico: ad esempio, nel libro di Geremia si trova parecchie volte la parola ( Sheshakh )ששך che sta per.( Babel )בבל Provate a decifrare la parola matematica

Il cifrario di Cesare Consiste nel sostituire ogni lettera con quella che viene tre lettere dopo nell alfabeto (si chiama anche spostamento di 3). Il numero 3 in questo caso è la chiave di cifratura. Chiaro a b c d e f g h i j k l m Cifrato D E F G H I J K L M N O P Chiaro n o p q r s t u v w x y z Cifrato Q R S T U V W X Y Z A B C Caio Giulio Cesare usava questo metodo per comunicare con le truppe. Naturalmente può essere usata qualsiasi altra chiave (compresa tra 1 e 25).

Il cifrario di Cesare Consiste nel sostituire ogni lettera con quella che viene tre lettere dopo nell alfabeto (si chiama anche spostamento di 3). Il numero 3 in questo caso è la chiave di cifratura. Chiaro a b c d e f g h i j k l m Cifrato D E F G H I J K L M N O P Chiaro n o p q r s t u v w x y z Cifrato Q R S T U V W X Y Z A B C Caio Giulio Cesare usava questo metodo per comunicare con le truppe. Naturalmente può essere usata qualsiasi altra chiave (compresa tra 1 e 25). Un algoritmo tuttora usato (per gioco) è il ROT13, in cui la chiave scelta è 13 (in questo modo per crittare e decrittare si usa lo stesso algoritmo): 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

Il cifrario di Cesare Consiste nel sostituire ogni lettera con quella che viene tre lettere dopo nell alfabeto (si chiama anche spostamento di 3). Il numero 3 in questo caso è la chiave di cifratura. Chiaro a b c d e f g h i j k l m Cifrato D E F G H I J K L M N O P Chiaro n o p q r s t u v w x y z Cifrato Q R S T U V W X Y Z A B C Caio Giulio Cesare usava questo metodo per comunicare con le truppe. Naturalmente può essere usata qualsiasi altra chiave (compresa tra 1 e 25). Provate a decrittare la frase GLHFLPLOD QHPLFL DO IURQWH

Il cifrario di Cesare Consiste nel sostituire ogni lettera con quella che viene tre lettere dopo nell alfabeto (si chiama anche spostamento di 3). Il numero 3 in questo caso è la chiave di cifratura. Chiaro a b c d e f g h i j k l m Cifrato D E F G H I J K L M N O P Chiaro n o p q r s t u v w x y z Cifrato Q R S T U V W X Y Z A B C Caio Giulio Cesare usava questo metodo per comunicare con le truppe. Naturalmente può essere usata qualsiasi altra chiave (compresa tra 1 e 25). Provate a decrittare la frase diecimila nemici al fronte

Cifrari per sostituzione Si possono anche usare alfabeti mescolati per la sostituzione, ad esempio 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 Q M W N C B R V T E Y X S Z I O A P U L D K F J G H

Cifrari per sostituzione Si possono anche usare alfabeti mescolati per la sostituzione, ad esempio In tutto ci sono 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 Q M W N C B R V T E Y X S Z I O A P U L D K F J G H!26 = 148 362 637 348 470 135 821 287 825 possibilità, cioè all incirca 148 milioni di miliardi di miliardi di modi di scambiare tutte le lettere!

Cifrari per sostituzione Si possono anche usare alfabeti mescolati per la sostituzione, ad esempio In tutto ci sono 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 Q M W N C B R V T E Y X S Z I O A P U L D K F J G H!26 = 148 362 637 348 470 135 821 287 825 possibilità, cioè all incirca 148 milioni di miliardi di miliardi di modi di scambiare tutte le lettere! Ma c è un problema... a simbolo uguale corrisponde lettera uguale al-kindi, scienziato arabo del IX secolo d.c, cominciò a studiare l analisi delle frequenze. Alessandro Musesti - Università Cattolica del Sacro Cuore

Analisi delle frequenze 0.12 0.1 0.08 0.06 0.04 0.02 0 e a i o n l r t s c d p u m v g h f b q z Frequenze delle lettere nella lingua italiana

Analisi delle frequenze 0.14 0.12 0.1 0.08 0.06 0.04 0.02 0 e t a o i n s h r d l c u m w f g y p b v k j x q z Frequenze delle lettere nella lingua inglese

I rischi di codici non sicuri Alessandro Musesti - Università Cattolica del Sacro Cuore

I rischi di codici non sicuri Maria Stuarda (1542-1587), regina di Scozia, tradita da un cifrario troppo debole, decifrato da Thomas Phelippes.

Parte II I cifrari a sostituzione polialfabetica

Il cifrario di Vigenère (1586) Storicamente è stato inventato da Giovan Battista Bellaso, nato a Brescia nel 1505. In questo metodo bisogna stabilire una parola, o una frase (anche lunga) comune: questa sarà la chiave segreta del cifrario. Per esempio, la chiave segreta sia la parola RICERCA e supponiamo di voler cifrare la frase la matematica è bella. In una tabella scriviamo la frase da cifrare e sotto di essa, ripetutamente, la parola-chiave. Poi ad ogni lettera sommiamo il valore della lettera corrispondente della parola-chiave (da A=0 a Z=25), trovando una nuova lettera:

Il cifrario di Vigenère (1586) Storicamente è stato inventato da Giovan Battista Bellaso, nato a Brescia nel 1505. In questo metodo bisogna stabilire una parola, o una frase (anche lunga) comune: questa sarà la chiave segreta del cifrario. Per esempio, la chiave segreta sia la parola RICERCA e supponiamo di voler cifrare la frase la matematica è bella. In una tabella scriviamo la frase da cifrare e sotto di essa, ripetutamente, la parola-chiave. Poi ad ogni lettera sommiamo il valore della lettera corrispondente della parola-chiave (da A=0 a Z=25), trovando una nuova lettera: Chiaro l a m a t e m a t i c a e b e l l a Chiave R I C E R C A R I C E R C A R I C E Cifrato C I O E K G M R B K G R G B V T N E

Il cifrario di Vigenère (1586) Storicamente è stato inventato da Giovan Battista Bellaso, nato a Brescia nel 1505. In questo metodo bisogna stabilire una parola, o una frase (anche lunga) comune: questa sarà la chiave segreta del cifrario. Per esempio, la chiave segreta sia la parola RICERCA e supponiamo di voler cifrare la frase la matematica è bella. In una tabella scriviamo la frase da cifrare e sotto di essa, ripetutamente, la parola-chiave. Poi ad ogni lettera sommiamo il valore della lettera corrispondente della parola-chiave (da A=0 a Z=25), trovando una nuova lettera: Chiaro l a m a t e m a t i c a e b e l l a Chiave R I C E R C A R I C E R C A R I C E Cifrato C I O E K G M R B K G R G B V T N E Questo codice è piuttosto robusto (non basta l analisi delle frequenze per forzarlo) ma dipende molto dalla lunghezza della parola-chiave: se questa è corta, diventa abbastanza debole.

Il cifrario di Vigenère (1586) Storicamente è stato inventato da Giovan Battista Bellaso, nato a Brescia nel 1505. In questo metodo bisogna stabilire una parola, o una frase (anche lunga) comune: questa sarà la chiave segreta del cifrario. Per esempio, la chiave segreta sia la parola RICERCA e supponiamo di voler cifrare la frase la matematica è bella. In una tabella scriviamo la frase da cifrare e sotto di essa, ripetutamente, la parola-chiave. Poi ad ogni lettera sommiamo il valore della lettera corrispondente della parola-chiave (da A=0 a Z=25), trovando una nuova lettera: Chiaro l a m a t e m a t i c a e b e l l a Chiave R I C E R C A R I C E R C A R I C E Cifrato C I O E K G M R B K G R G B V T N E Questo codice è piuttosto robusto (non basta l analisi delle frequenze per forzarlo) ma dipende molto dalla lunghezza della parola-chiave: se questa è corta, diventa abbastanza debole. Inoltre, bisogna prima condividere la chiave! Alessandro Musesti - Università Cattolica del Sacro Cuore

Cifrario di Vigenère Alessandro Musesti - Università Cattolica del Sacro Cuore 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 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 A C D E F G H I J K L M N O P Q R S T U V W X Y Z A B D E F G H I J K L M N O P Q R S T U V W X Y Z A B C E F G H I J K L M N O P Q R S T U V W X Y Z A B C D F G H I J K L M N O P Q R S T U V W X Y Z A B C D E G H I J K L M N O P Q R S T U V W X Y Z A B C D E F H I J K L M N O P Q R S T U V W X Y Z A B C D E F G I J K L M N O P Q R S T U V W X Y Z A B C D E F G H J K L M N O P Q R S T U V W X Y Z A B C D E F G H I K L M N O P Q R S T U V W X Y Z A B C D E F G H I J L M N O P Q R S T U V W X Y Z A B C D E F G H I J K M N O P Q R S T U V W X Y Z A B C D E F G H I J K L N O P Q R S T U V W X Y Z A B C D E F G H I J K L M O P Q R S T U V W X Y Z A B C D E F G H I J K L M N P Q R S T U V W X Y Z A B C D E F G H I J K L M N O Q R S T U V W X Y Z A B C D E F G H I J K L M N O P R S T U V W X Y Z A B C D E F G H I J K L M N O P S S T U V W X Y Z A B C D E F G H I J K L M N O P Q R T U V W X Y Z A B C D E F G H I J K L M N O P Q R S U V W X Y Z A B C D E F G H I J K L M N O P Q R S T V W X Y Z A B C D E F G H I J K L M N O P Q R S T U W X Y Z A B C D E F G H I J K L M N O P Q R S T U V X Y Z A B C D E F G H I J K L M N O P Q R S T U V W Y Z A B C D E F G H I J K L M N O P Q R S T U V W X Z 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

I blocchetti monouso (cifrario di Vernam, 1917) Se nel cifrario di Vigenère prendiamo una parola-chiave lunga come il messaggio e formata da caratteri completamente casuali, otteniamo il cosiddetto cifrario di Vernam. È stato dimostrato che questo è il modo più sicuro di scambiarsi un messaggio, ma ha una pecca: come condividere la chiave segreta, così lunga? Il serpente si morde la coda...

I blocchetti monouso (cifrario di Vernam, 1917) Se nel cifrario di Vigenère prendiamo una parola-chiave lunga come il messaggio e formata da caratteri completamente casuali, otteniamo il cosiddetto cifrario di Vernam. È stato dimostrato che questo è il modo più sicuro di scambiarsi un messaggio, ma ha una pecca: come condividere la chiave segreta, così lunga? Il serpente si morde la coda... Nella realtà questo metodo è stato usato davvero: ad esempio durante la II Guerra Mondiale venivano distribuite alcune copie di blocchi monouso, pagine e pagine di caratteri casuali (spesso creati mediante estrazione delle lettere da un urna) opportunamente etichettati. Il messaggio da trasmettere mostrava all inizio (in chiaro) il codice della pagina corrispondente, e poi veniva codificato con le lettere di quella pagina.

I blocchetti monouso (cifrario di Vernam, 1917) Se nel cifrario di Vigenère prendiamo una parola-chiave lunga come il messaggio e formata da caratteri completamente casuali, otteniamo il cosiddetto cifrario di Vernam. È stato dimostrato che questo è il modo più sicuro di scambiarsi un messaggio, ma ha una pecca: come condividere la chiave segreta, così lunga? Il serpente si morde la coda... Nella realtà questo metodo è stato usato davvero: ad esempio durante la II Guerra Mondiale venivano distribuite alcune copie di blocchi monouso, pagine e pagine di caratteri casuali (spesso creati mediante estrazione delle lettere da un urna) opportunamente etichettati. Il messaggio da trasmettere mostrava all inizio (in chiaro) il codice della pagina corrispondente, e poi veniva codificato con le lettere di quella pagina. Ma questo metodo non si può usare per trasmettere il nostro numero di carta di credito a un negoziante: prima dovremmo andare fisicamente nel negozio e consegnargli un blocchetto monouso!

Blocchetto monouso 001 T S W V W D M F T D Y W W Z Q B T R Z B Y A Y N I H E J M H P E O R I R W M D Y Q D Q Z Z B C A A I O L Y C A V E I K K L K A G R P Y T R X A I D R O X X M N G R Z E T S Z X C I Z K B T C Y M A B Y Z V C I A N M G X X N O J B Q G Q Q G W P Z J W U B R J S C Z K U U R U X J F H P T B V P K S R P H I X I S F J C Q W V G I Y P C Y Z H J S S O Q Z D J S U I Q Q K O U A N Z M D P T S R R L K F Y I R M E P Q B H J C R J G L M B Q G W S N A H B W F R O W R Y U B V J G I I A F V I R L B Z H H W Z U K V K O F A E E Z G N A P S O D B L A D J Z Y A C K G Q P H M P S H R Z O R O U F N W C L V X W Q D I Z F R Y X I D N Z D E X R P T E N K O J F B E U W W B L D I G K C L Q W R P B W R A Z C A M X Z G G P B M P E M C C L K C Y E W G S Z W R Y U M M Z R K I C D R C D Y I H X M K T K C Y F Q E I V Y T Y J N K J Y G M A S B J N I I I H W I Q U Z G O Z J Z Z C V S O B V S O V H V K Y E I B G H R W Q O R S Z D A P E R C K P G O U S T Y X F B K F B S T X N R S D I X O O C M A D S M R R B F G L T P X G D N T H W K F I X O J Y U K X S O T B D O S S C W R C E C E R O F I D Q D N A P B A C X T F M M P S A T S B E H A C W W U B O R W Z K Y W F M T A M G E Q Z T B P U E B L W V K T U X V S E M Z E C S V I X U I G L U J L N A G M S J X W T C L Y B F Q O X Y I P L W S T Y P M M L K T F C Y L A K B T S A V J K O E I T O U E T L A W H O S N J F A B G L S H I T Z Y X U F W B Z U K L B H S J G O R I Y O D K U Y K V Q O R T Y D J C O J W E B B V G M S O Y L P P Z Y Z R F W K N X P B A F Q Y G A S F E U A O C N K J I D P X M H E F O I D Y Y Q Z B Y M K V U A A M Z L H G Z N P J W C F N Y R B N A O K X O K Q A Y I I F N U X I O F W I P E Y A Z Q B K Y Z O H K E L C K Y G B F E O X I L J B Z A Z D Z B H Y A E R H A B U P U H O A G O L O L O N U L H X U N Y N K S O K Q G H X P M F Z E M X C N J Z E C E V W J T T I A F X U Z I E Y O Y Y V I D Q N W K W P X D E K A N C U E A Q O F T D H H Y H C H C K B B O Y U P E P Z H P B E Q Q V Q G X E F J Z A T V H V O A W Y Z O J O H K Y S F L F Z W V G J H M F F J V O A N G Q H B B X Q L U A I L Q D H Q W P U O N T R F T Q Z Z F G I J W G B W Q L G O J J C W V G J O W I D P W I I B W Y R B I E V Y W N K K R D I K W N W F E R L U V R I T U Z T G X J V E X Q H A I Y L I U O S Q M X H H Z N Y U R W T S Z L D T U P W S L S U W X N J I T U U J V O I U Y K Q S C F C R W A V Q W L H Q Y C L N A H N H U C X V S V J N W H F R W N R W M C T G P P F T Y Q Y O F F X V I I A T D A L P T Q S K D D U I F H X D N P H J Y R L I T A U O J O Z K Z O C R V O L Q C E Q U W W I U L M G P I J W G M V B M U R Z U S K L G M Q P K V M D M L Q C O N Q G S D U F X D A A L L D X R

Blocchetto monouso 002 W J A E Y G D G V P X E X Q W A E I Q G J K M S Y F U U R S O S X R L F K Q F A W U Y D E O D O P J J P E V C N C X I E X J V K W M Q J Q I E Q V I G I J Y V L G M S I P I A I P K B L O F S V Z J J L P D W R A Z U X O N C L B G H H I K F W E G Q F Z B I T K Z T O E E K H D B M F O S Z G L Q H S M Q G U R S R W Q E N U M M M Q Z N C G X C Z X R X X P I A N L S H D K T R R E O O M Q G G V Q F R J P I F O Z W Q D L T O D V C W H M W U D I P C U Z W I Q J G R C W K N B V F D G D I C R P C Z G R T O R S C A I R X W L L F D P S Q J K S D X O V F N I B U H Y P W C L R K S T O A N T V I N N S E K T I M F V D O Q E O U B U N Q K B M W S S R Z N G N J C K N O O M T H G P G J C L A W P G S W W J H H Y U J X L D E U I N U D U B K I T C A X B U S P M I K K E L N V E M G P F K Y W G A M H M L R D S G X C N L F M K H S J O X O L N G I V F V T F W J B O Y Q S S F H T F B E Z Z V L X D A B C D Y O T P Q D J E P F C G H E S G W L U G N J L C O P H V I X P F I J V T X B W F X V S B I C O F O Z K L Y Y N E P Z E F S T W Z V C Y H T O X N B C V S W J H E D Y M Y F M Y K X V E D A O G M C F R P G N J O I C D O A P N O C J K C Q X K J R C P X W O F U E Z O P N P X B W V Z P A S W R Q K P I W S V X M G X I J D C W W T H T U K Q V A K G V C F X R B Z C Q N S E U J N O K Y M B E Y J G M L U G L H M I U Y U Z I L O Q O T L Q E S B Q V R J U W I T I C E J U L F M N V N H B I C G V R Y L S S G O G M E Z Z N G O O A R Z N M N M B L V U Q R Z J C L C S H D L K Q B V K K F F R Y H F K M N W V F T N A L J B G S A S U G R J T A K W Y T O K K Z Q N Z L G C M W B E A S P C N G Q V H L C U C K P F R N R G O J D T O J I W O Y A Z G G O V P C B F U A M A Z Q M A M E Y X F R K S J G N S W N H I B B E L A E V G K S J E L R V Z F I A A V Q G V H O H Z P C A B H J B R Y L Z V M F B C Z G Q D F D C H R A X O U V Q U H V R M Y A D B B G G S W X M O D X C K B W U G D H I Y N G Z E X P Y I B N E R H K Y P H M D F W Y A U N J E P L C A S E C K Z W H F F D U Z P A E T I I B R U C S T N V N C Y G A Q H Z P F Z N Z D X O G L U K S X M Y C G R Y A Q H R L R D Q C L U V H U D Q W K W Z C J K Q G N G Q H M S I A C W T B R G V J N M G W W X F L R N X Z K M M E U F D O G M G Q S M U U F H C V E O F O X X V X F K Z H J R N C V X D C V D K J U C I X S J X S H N R N D T R N J V M K L N T W W L A M V X L X J O F K L J G A O V V P T J R O Y Y R Q I M B A I Z F Q K G N W K M N V L Y E T O P F Z L B Q H I V G Y T I P Y C Q X Z Y J C B Q L U C E I P U L L C H L Y G K Y Y U Z Q D S Z Y G A C Q Z W D E L H P M Z G K A O N B B J C S G T I M X U Q E F H W H W S I N I K Z E E Z Q Q N P A D W R H B T X V D X V F K W J M O

La macchina ENIGMA È una macchina tedesca usata per codificare i messaggi durante la II Guerra Mondiale. Basata su tre rotori (scelti tra cinque disponibili), posizionati all inizio in una posizione concordata e che poi continuavano a ruotare ad ogni lettera, cambiando cifrario ogni volta.

Alan Turing Alan Turing (1912 1954), tra i più grandi matematici del XX secolo, uno dei padri dell informatica. Inventa il concetto di macchina di Turing e il test di Turing. Durante la II Guerra Mondiale lavora a Bletchley Park, dove risulta determinante nella decrittazione del codice Enigma, perfezionando il progetto della Bomba, il capostipite dei calcolatori elettronici, progettato inizialmente in Polonia. Turing era un ottimo corridore: aveva un personale sulla maratona di 2h46 3, un tempo di solo 11 minuti più alto del vincitore dei Giochi Olimpici di Londra del 1948 Delfo Cabrera.

Verso i cifrari contemporanei: i cifrari poligrafici Nei cifrari contemporanei non si usa più codificare una lettera alla volta, ma si suddivide il messaggio in blocchi di due o più lettere, e sono i blocchi ad essere codificati singolarmente. In questo modo la procedura si complica, poiché aumenta molto il numero dei simboli e si rende molto più difficile l analisi delle frequenze.

Verso i cifrari contemporanei: i cifrari poligrafici Nei cifrari contemporanei non si usa più codificare una lettera alla volta, ma si suddivide il messaggio in blocchi di due o più lettere, e sono i blocchi ad essere codificati singolarmente. In questo modo la procedura si complica, poiché aumenta molto il numero dei simboli e si rende molto più difficile l analisi delle frequenze. Ad esempio, esistono 26 2 = 676 coppie di lettere possibili e 26 3 = 17576 terne di lettere possibili.

Verso i cifrari contemporanei: i cifrari poligrafici Nei cifrari contemporanei non si usa più codificare una lettera alla volta, ma si suddivide il messaggio in blocchi di due o più lettere, e sono i blocchi ad essere codificati singolarmente. In questo modo la procedura si complica, poiché aumenta molto il numero dei simboli e si rende molto più difficile l analisi delle frequenze. Ad esempio, esistono 26 2 = 676 coppie di lettere possibili e 26 3 = 17576 terne di lettere possibili. Gli attuali cifrari (DES, AES) si basano su questo principio.

Verso i cifrari contemporanei: i cifrari poligrafici Nei cifrari contemporanei non si usa più codificare una lettera alla volta, ma si suddivide il messaggio in blocchi di due o più lettere, e sono i blocchi ad essere codificati singolarmente. In questo modo la procedura si complica, poiché aumenta molto il numero dei simboli e si rende molto più difficile l analisi delle frequenze. Ad esempio, esistono 26 2 = 676 coppie di lettere possibili e 26 3 = 17576 terne di lettere possibili. Gli attuali cifrari (DES, AES) si basano su questo principio. Ma rimane sempre il problema di scambiarsi la chiave!

Parte III La matematica della crittografia

Condivisione di una chiave: l esempio con i colori Alice e Bob vogliono poter scambiare messaggi senza che altri (rappresentati da Eve, il malvagio) li capiscano. Per fare questo devono entrambi avere una chiave che apra lo stesso lucchetto. Come possono fare a condividere questa chiave? Vediamo un esempio, fatto coi colori, che si basa su un colore segreto (la chiave privata) e un colore noto a tutti (la chiave pubblica). Entrambi giungono a condividere un colore senza che Eve ne sia a conoscenza.

È facile mescolare i colori, ma è difficile capire quali colori formano una miscela. Si parla di funzione unidirezionale

Come fare nella realtà? La matematica ci viene in aiuto: una funzione unidirezionale è una funzione facile da calcolare ma difficile da invertire.

Come fare nella realtà? La matematica ci viene in aiuto: una funzione unidirezionale è una funzione facile da calcolare ma difficile da invertire. Esempio importante: è facile (magari con una calcolatrice!) calcolare 59 31 = 1829

Come fare nella realtà? La matematica ci viene in aiuto: una funzione unidirezionale è una funzione facile da calcolare ma difficile da invertire. Esempio importante: è facile (magari con una calcolatrice!) calcolare 59 31 = 1829 ma è mooolto più difficile (perché ci vuole tanto tempo!) scoprire che 1829 è composto da 59 e 31.

Come fare nella realtà? La matematica ci viene in aiuto: una funzione unidirezionale è una funzione facile da calcolare ma difficile da invertire. Esempio importante: è facile (magari con una calcolatrice!) calcolare 59 31 = 1829 ma è mooolto più difficile (perché ci vuole tanto tempo!) scoprire che 1829 è composto da 59 e 31. Provate a fattorizzare il numero 390900163...

Come fare nella realtà? La matematica ci viene in aiuto: una funzione unidirezionale è una funzione facile da calcolare ma difficile da invertire. Esempio importante: è facile (magari con una calcolatrice!) calcolare 59 31 = 1829 ma è mooolto più difficile (perché ci vuole tanto tempo!) scoprire che 1829 è composto da 59 e 31. Provate a fattorizzare il numero 390900163... E invece verificate, con la calcolatrice, quanto fa 14087 27749

Come fare nella realtà? La matematica ci viene in aiuto: una funzione unidirezionale è una funzione facile da calcolare ma difficile da invertire. Esempio importante: è facile (magari con una calcolatrice!) calcolare 59 31 = 1829 ma è mooolto più difficile (perché ci vuole tanto tempo!) scoprire che 1829 è composto da 59 e 31. Provate a fattorizzare il numero 390900163... E invece verificate, con la calcolatrice, quanto fa 14087 27749 Nelle attuali applicazioni informatiche si usano numeri di 1024 bit, che superano le 300 cifre decimali, e addirittura di 2048 bit!

RSA Factoring Challenge Nel 1991 fu lanciato un concorso che chiedeva di fattorizzare alcuni numeri grandi, per stimolare la ricerca sulla sicurezza dell algoritmo RSA, che si basa sulla fattorizzazione. Nel 2007 il concorso si è ufficialmente chiuso, ma tuttora alcuni gruppi stanno tentando di risolvere alcune delle sfide proposte. Nel settembre del 2013 è stato fattorizzato il numero RSA-210, composto da 210 cifre decimali! 2452466449002782119765176635730880184670267876783327597434144517150616 0083003858721695220839933207154910362682719167986407977672324300560059 2035631246561218465817904100131859299619933817012149335034875870551067 = 43595856832594079179995196538721440638547091026522019 6318705482144524085345275999740244625255428455944579 56254576172688410375627700730444748174387694400751054 5104946851094548396577479473472146228550799322939273

Un attrezzo matematico: le moltiplicazioni e le potenze sull orologio Se un orologio segna le 9 e si aggiungono 5 ore, che ora segnerà?

Un attrezzo matematico: le moltiplicazioni e le potenze sull orologio Se un orologio @10²@10 @10 @10 @10Š@10 segna le 9 e si aggiungono 5 ore, che ora segnerà? Ovviamente, le 2.

Un attrezzo matematico: le moltiplicazioni e le potenze sull orologio Se un orologio @10²@10 @10 @10 @10Š@10 segna le 9 e si aggiungono 5 ore, che ora segnerà? Ovviamente, le 2. Se l orologio segna le 5 si moltiplica quest ora per 8, che ora risulterà? @10²@10 @10 @10 @10ž@10 @10 @10 Le 4, poiché 5 8 = 40 = 12 3 + 4. Quindi la lancetta delle ore fa tre giri e finisce sulle 4.

Un attrezzo matematico: le moltiplicazioni e le potenze sull orologio Se un orologio @10²@10 @10 @10 @10Š@10 segna le 9 e si aggiungono 5 ore, che ora segnerà? Ovviamente, le 2. Se l orologio segna le 5 si moltiplica quest ora per 8, che ora risulterà? @10²@10 @10 @10 @10ž@10 @10 @10 Le 4, poiché 5 8 = 40 = 12 3 + 4. Quindi la lancetta delle ore fa tre giri e finisce sulle 4. Nell aritmetica dell orologio non interessa il numero dei giri, ma solo quello che avanza alla fine (il resto della divisione).

Un attrezzo matematico: le moltiplicazioni e le potenze sull orologio Se un orologio @10²@10 @10 @10 @10Š@10 segna le 9 e si aggiungono 5 ore, che ora segnerà? Ovviamente, le 2. Se l orologio segna le 5 si moltiplica quest ora per 8, che ora risulterà? @10²@10 @10 @10 @10ž@10 @10 @10 Le 4, poiché 5 8 = 40 = 12 3 + 4. Quindi la lancetta delle ore fa tre giri e finisce sulle 4. Nell aritmetica dell orologio non interessa il numero dei giri, ma solo quello che avanza alla fine (il resto della divisione). Questa si chiama aritmetica modulare. Alessandro Musesti - Università Cattolica del Sacro Cuore

L aritmetica modulare con numeri primi Risulta particolarmente utile usare orologi con p ore, dove p è un numero primo. Le operazioni fatte su questi orologi verranno indicate col suffisso (modp) (si legge modulo p).

L aritmetica modulare con numeri primi Risulta particolarmente utile usare orologi con p ore, dove p è un numero primo. Le operazioni fatte su questi orologi verranno indicate col suffisso (modp) (si legge modulo p). Scrivere (modp) significa che delle operazioni che si fanno bisogna tenere solo il resto della divisione per p.

L aritmetica modulare con numeri primi Risulta particolarmente utile usare orologi con p ore, dove p è un numero primo. Le operazioni fatte su questi orologi verranno indicate col suffisso (modp) (si legge modulo p). Scrivere (modp) significa che delle operazioni che si fanno bisogna tenere solo il resto della divisione per p. Ad esempio, scegliendo p = 11, avremo 7 + 9 = 5(mod11),

L aritmetica modulare con numeri primi Risulta particolarmente utile usare orologi con p ore, dove p è un numero primo. Le operazioni fatte su questi orologi verranno indicate col suffisso (modp) (si legge modulo p). Scrivere (modp) significa che delle operazioni che si fanno bisogna tenere solo il resto della divisione per p. Ad esempio, scegliendo p = 11, avremo 7 + 9 = 5(mod11), 5 8 = 7(mod11),

L aritmetica modulare con numeri primi Risulta particolarmente utile usare orologi con p ore, dove p è un numero primo. Le operazioni fatte su questi orologi verranno indicate col suffisso (modp) (si legge modulo p). Scrivere (modp) significa che delle operazioni che si fanno bisogna tenere solo il resto della divisione per p. Ad esempio, scegliendo p = 11, avremo 7 + 9 = 5(mod11), 5 8 = 7(mod11), 2 6 = 9(mod11)

L aritmetica modulare con numeri primi Risulta particolarmente utile usare orologi con p ore, dove p è un numero primo. Le operazioni fatte su questi orologi verranno indicate col suffisso (modp) (si legge modulo p). Scrivere (modp) significa che delle operazioni che si fanno bisogna tenere solo il resto della divisione per p. Ad esempio, scegliendo p = 11, avremo 7 + 9 = 5(mod11), 5 8 = 7(mod11), 2 6 = 9(mod11) L insieme dei numeri {0, 1,..., p 1} dotato di queste operazioni particolari si denota con Z p.

Generatori di Z p Un generatore g in Z p è un numero più piccolo di p tale che calcolando g, g 2, g 3,..., g p 2, g p 1 (modp) si esauriscano tutti i numeri tra 1 e p 1. Ad esempio, si può verificare che 2 è un generatore per p = 11, poiché n 1 2 3 4 5 6 7 8 9 10 2 n (mod11) 2 4 8 5 10 9 7 3 6 1

Generatori di Z p Un generatore g in Z p è un numero più piccolo di p tale che calcolando g, g 2, g 3,..., g p 2, g p 1 (modp) si esauriscano tutti i numeri tra 1 e p 1. Ad esempio, si può verificare che 2 è un generatore per p = 11, poiché n 1 2 3 4 5 6 7 8 9 10 2 n (mod11) 2 4 8 5 10 9 7 3 6 1 Se p è primo, esiste sempre almeno un generatore in Z p, anche se potrebbe non essere semplice trovarlo.

Lo scambio di chiavi Diffie Hellman Merkle (1976) È un metodo per condividere un numero tra due persone, in modo che solo loro due lo conoscano. Questo numero potrà poi servire a scambiarsi messaggi in codice.

Lo scambio di chiavi Diffie Hellman Merkle (1976) È un metodo per condividere un numero tra due persone, in modo che solo loro due lo conoscano. Questo numero potrà poi servire a scambiarsi messaggi in codice. È basato sull elevamento a potenza e sull aritmetica dell orologio. Si prende un numero primo p, ad esempio p = 17, e un generatore g di Z 17.

Lo scambio di chiavi Diffie Hellman Merkle (1976) È un metodo per condividere un numero tra due persone, in modo che solo loro due lo conoscano. Questo numero potrà poi servire a scambiarsi messaggi in codice. È basato sull elevamento a potenza e sull aritmetica dell orologio. Si prende un numero primo p, ad esempio p = 17, e un generatore g di Z 17. Ad esempio, si verifica che 6 è un generatore per p = 17, poiché n 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 6 n 6 2 12 4 7 8 14 16 11 15 5 13 10 9 3 1

Lo scambio di chiavi Diffie Hellman Merkle (1976) È un metodo per condividere un numero tra due persone, in modo che solo loro due lo conoscano. Questo numero potrà poi servire a scambiarsi messaggi in codice. È basato sull elevamento a potenza e sull aritmetica dell orologio. Si prende un numero primo p, ad esempio p = 17, e un generatore g di Z 17. Ad esempio, si verifica che 6 è un generatore per p = 17, poiché n 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 6 n 6 2 12 4 7 8 14 16 11 15 5 13 10 9 3 1 Questi numeri p e g sono noti a tutti e decisi una volta per tutte. Nella pratica p è un numero molto grande (1024 bit), mentre g può anche essere piccolo.

Lo scambio di chiavi Diffie Hellman Merkle (1976) È un metodo per condividere un numero tra due persone, in modo che solo loro due lo conoscano. Questo numero potrà poi servire a scambiarsi messaggi in codice. È basato sull elevamento a potenza e sull aritmetica dell orologio. Si prende un numero primo p, ad esempio p = 17, e un generatore g di Z 17. Ad esempio, si verifica che 6 è un generatore per p = 17, poiché n 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 6 n 6 2 12 4 7 8 14 16 11 15 5 13 10 9 3 1 Questi numeri p e g sono noti a tutti e decisi una volta per tutte. Nella pratica p è un numero molto grande (1024 bit), mentre g può anche essere piccolo. Poi si esegue la procedura seguente:

1) Alice sceglie un numero a caso a tra 1 e p 1, e lo stesso fa Bob con un numero b. Questi numeri sono le chiavi private di Alice e Bob, e vanno tenuti segreti. Nel nostro esempio, scegliamo a = 10 e b = 14. Alessandro Musesti - Università Cattolica del Sacro Cuore

1) Alice sceglie un numero a caso a tra 1 e p 1, e lo stesso fa Bob con un numero b. Questi numeri sono le chiavi private di Alice e Bob, e vanno tenuti segreti. Nel nostro esempio, scegliamo a = 10 e b = 14. 2) Alice calcola il numero A = g a (modp) = 6 10 (mod17) =

1) Alice sceglie un numero a caso a tra 1 e p 1, e lo stesso fa Bob con un numero b. Questi numeri sono le chiavi private di Alice e Bob, e vanno tenuti segreti. Nel nostro esempio, scegliamo a = 10 e b = 14. 2) Alice calcola il numero A = g a (modp) = 6 10 (mod17) = 6 n : 6 2 12 4 7 8 14 16 11 15 5 13 10 9 3 1

1) Alice sceglie un numero a caso a tra 1 e p 1, e lo stesso fa Bob con un numero b. Questi numeri sono le chiavi private di Alice e Bob, e vanno tenuti segreti. Nel nostro esempio, scegliamo a = 10 e b = 14. 2) Alice calcola il numero A = g a (modp) = 6 10 (mod17) = 15 e Bob calcola il numero B = g b (modp) = 6 14 (mod17) = 9. 6 n : 6 2 12 4 7 8 14 16 11 15 5 13 10 9 3 1

1) Alice sceglie un numero a caso a tra 1 e p 1, e lo stesso fa Bob con un numero b. Questi numeri sono le chiavi private di Alice e Bob, e vanno tenuti segreti. Nel nostro esempio, scegliamo a = 10 e b = 14. 2) Alice calcola il numero A = g a (modp) = 6 10 (mod17) = 15 e Bob calcola il numero B = g b (modp) = 6 14 (mod17) = 9. I numeri A e B sono le chiavi pubbliche e vengono divulgati. Chiunque li può conoscere. 6 n : 6 2 12 4 7 8 14 16 11 15 5 13 10 9 3 1

1) Alice sceglie un numero a caso a tra 1 e p 1, e lo stesso fa Bob con un numero b. Questi numeri sono le chiavi private di Alice e Bob, e vanno tenuti segreti. Nel nostro esempio, scegliamo a = 10 e b = 14. 2) Alice calcola il numero A = g a (modp) = 6 10 (mod17) = 15 e Bob calcola il numero B = g b (modp) = 6 14 (mod17) = 9. I numeri A e B sono le chiavi pubbliche e vengono divulgati. Chiunque li può conoscere. 3) Infine Alice prende la chiave pubblica di Bob, B = 9, e calcola B a (modp) = 9 10 (mod17) = 13.

1) Alice sceglie un numero a caso a tra 1 e p 1, e lo stesso fa Bob con un numero b. Questi numeri sono le chiavi private di Alice e Bob, e vanno tenuti segreti. Nel nostro esempio, scegliamo a = 10 e b = 14. 2) Alice calcola il numero A = g a (modp) = 6 10 (mod17) = 15 e Bob calcola il numero B = g b (modp) = 6 14 (mod17) = 9. I numeri A e B sono le chiavi pubbliche e vengono divulgati. Chiunque li può conoscere. 3) Infine Alice prende la chiave pubblica di Bob, B = 9, e calcola B a (modp) = 9 10 (mod17) = 13. Bob prende la chiave pubblica di Alice, A = 15, e calcola A b (modp) = 15 14 (mod17) = 13.

1) Alice sceglie un numero a caso a tra 1 e p 1, e lo stesso fa Bob con un numero b. Questi numeri sono le chiavi private di Alice e Bob, e vanno tenuti segreti. Nel nostro esempio, scegliamo a = 10 e b = 14. 2) Alice calcola il numero A = g a (modp) = 6 10 (mod17) = 15 e Bob calcola il numero B = g b (modp) = 6 14 (mod17) = 9. I numeri A e B sono le chiavi pubbliche e vengono divulgati. Chiunque li può conoscere. 3) Infine Alice prende la chiave pubblica di Bob, B = 9, e calcola B a (modp) = 9 10 (mod17) = 13. Bob prende la chiave pubblica di Alice, A = 15, e calcola A b (modp) = 15 14 (mod17) = 13. È un caso che sia risultato lo stesso numero? Certamente no: si ha sempre A b = (g a ) b = g ab = (g b ) a = B a (modp). Quindi Alice e Bob hanno una chiave in comune: il numero 13.

Un esempio con numeri più grandi p = 34121249 è un numero primo e g = 5 è un generatore di Z 34121249.

Un esempio con numeri più grandi p = 34121249 è un numero primo e g = 5 è un generatore di Z 34121249. Scegliamo (a caso) le chiavi private: a = 32359975, b = 6431846.

Un esempio con numeri più grandi p = 34121249 è un numero primo e g = 5 è un generatore di Z 34121249. Scegliamo (a caso) le chiavi private: a = 32359975, b = 6431846. Allora le chiavi pubbliche sono A = g a = 19135999, B = g b = 5444512.

Un esempio con numeri più grandi p = 34121249 è un numero primo e g = 5 è un generatore di Z 34121249. Scegliamo (a caso) le chiavi private: a = 32359975, b = 6431846. Allora le chiavi pubbliche sono A = g a = 19135999, B = g b = 5444512. E si ha A b = B a = 18352668, che è la chiave condivisa.

Sicurezza della procedura Che cosa conosce Eve? Conosce: il numero primo p, il generatore g, le chiavi pubbliche A = g a e B = g b. Da questi dati si può scoprire la chiave comune A b = B a? L unico modo per farlo è scoprire almeno una delle due chiavi segrete a oppure b.

Sicurezza della procedura Che cosa conosce Eve? Conosce: il numero primo p, il generatore g, le chiavi pubbliche A = g a e B = g b. Da questi dati si può scoprire la chiave comune A b = B a? L unico modo per farlo è scoprire almeno una delle due chiavi segrete a oppure b. Nel nostro esempio, sapendo che p = 17, g = 6 e A = g a = 15, si può scoprire a: scorrendo tutta la tabella delle potenze del generatore si va a cercare quale potenza di 6 risulta 15 (modulo 17), e si trova n = 10. Quindi la chiave segreta di Alice è 10.

Sicurezza della procedura Che cosa conosce Eve? Conosce: il numero primo p, il generatore g, le chiavi pubbliche A = g a e B = g b. Da questi dati si può scoprire la chiave comune A b = B a? L unico modo per farlo è scoprire almeno una delle due chiavi segrete a oppure b. Nel nostro esempio, sapendo che p = 17, g = 6 e A = g a = 15, si può scoprire a: scorrendo tutta la tabella delle potenze del generatore si va a cercare quale potenza di 6 risulta 15 (modulo 17), e si trova n = 10. Quindi la chiave segreta di Alice è 10. Ma allora dove sta la sicurezza della procedura? Nella realtà si usano numeri primi molto grandi, fatti da almeno 300 cifre, e la lista da scorrere per individuare l esponente a a partire dalla conoscenza di g a è molto, molto lunga!

Sicurezza della procedura Che cosa conosce Eve? Conosce: il numero primo p, il generatore g, le chiavi pubbliche A = g a e B = g b. Da questi dati si può scoprire la chiave comune A b = B a? L unico modo per farlo è scoprire almeno una delle due chiavi segrete a oppure b. Nel nostro esempio, sapendo che p = 17, g = 6 e A = g a = 15, si può scoprire a: scorrendo tutta la tabella delle potenze del generatore si va a cercare quale potenza di 6 risulta 15 (modulo 17), e si trova n = 10. Quindi la chiave segreta di Alice è 10. Ma allora dove sta la sicurezza della procedura? Nella realtà si usano numeri primi molto grandi, fatti da almeno 300 cifre, e la lista da scorrere per individuare l esponente a a partire dalla conoscenza di g a è molto, molto lunga! Questa operazione si chiama logaritmo discreto, ed è una funzione unidirezionale: è abbastanza facile calcolare A = g a, ma è molto difficile scoprire l esponente a conoscendo g e A. Anche i computer attualmente più potenti impiegherebbero centinaia di anni.

Utilizzo della chiave condivisa Una volta ottenuta una chiave condivisa, si può procedere a crittografare un messaggio in vari modi. Ad esempio, se Alice vuole comunicare a Bob un numero segreto, per esempio il numero della sua carta di credito 2442 4243 5089 4523, può moltiplicarlo per la chiave comune 13, ottenendo 31751516561628799. Bob, ricevuto il numero, lo divide per 13 riottenendo il numero di partenza. Il malvagio Eve, sempre in ascolto, vedrebbe passare il numero 31751516561628799, ma non potrebbe collegarlo al numero di carta di credito di Alice (a meno che non conosca la chiave comune). Oppure la chiave comune potrebbe essere il punto di partenza per un cifrario di Cesare, significando uno spostamento di 13 lettere: il nome ALESSANDRO diventerebbe NYRFFNAQEB (nell alfabeto a 26 lettere) e Bob potrebbe facilmente decodificarlo. Attualmente il metodo più usato per codificare messaggi con una chiave condivisa è l algoritmo AES (Advanced Encryption Standard).

L algoritmo RSA (Rivest, Shamir, Adleman, 1977) È tuttora usato in quasi tutte le transazioni sicure online (https).

L algoritmo RSA (Rivest, Shamir, Adleman, 1977) È tuttora usato in quasi tutte le transazioni sicure online (https). Si prendono due numeri primi grandi p, q e si calcolano N = p q e r = (p 1) (q 1)

L algoritmo RSA (Rivest, Shamir, Adleman, 1977) È tuttora usato in quasi tutte le transazioni sicure online (https). Si prendono due numeri primi grandi p, q e si calcolano N = p q e r = (p 1) (q 1) Si sceglie un numero e tale che 1 < e < r e che non abbia fattori in comune con r

L algoritmo RSA (Rivest, Shamir, Adleman, 1977) È tuttora usato in quasi tutte le transazioni sicure online (https). Si prendono due numeri primi grandi p, q e si calcolano N = p q e r = (p 1) (q 1) Si sceglie un numero e tale che 1 < e < r e che non abbia fattori in comune con r Si cerca quel numero d tale che e d = 1(modr)

L algoritmo RSA (Rivest, Shamir, Adleman, 1977) È tuttora usato in quasi tutte le transazioni sicure online (https). Si prendono due numeri primi grandi p, q e si calcolano N = p q e r = (p 1) (q 1) Si sceglie un numero e tale che 1 < e < r e che non abbia fattori in comune con r Si cerca quel numero d tale che e d = 1(modr) Si rende pubblica la coppia (N, e) (chiave pubblica) e si tiene segreto il numero d (chiave privata).

L algoritmo RSA (Rivest, Shamir, Adleman, 1977) È tuttora usato in quasi tutte le transazioni sicure online (https). Si prendono due numeri primi grandi p, q e si calcolano N = p q e r = (p 1) (q 1) Si sceglie un numero e tale che 1 < e < r e che non abbia fattori in comune con r Si cerca quel numero d tale che e d = 1(modr) Si rende pubblica la coppia (N, e) (chiave pubblica) e si tiene segreto il numero d (chiave privata). Ad esempio: scegliendo p = 3, q = 19, si ha N = 57 e r = 36.

L algoritmo RSA (Rivest, Shamir, Adleman, 1977) È tuttora usato in quasi tutte le transazioni sicure online (https). Si prendono due numeri primi grandi p, q e si calcolano N = p q e r = (p 1) (q 1) Si sceglie un numero e tale che 1 < e < r e che non abbia fattori in comune con r Si cerca quel numero d tale che e d = 1(modr) Si rende pubblica la coppia (N, e) (chiave pubblica) e si tiene segreto il numero d (chiave privata). Ad esempio: scegliendo p = 3, q = 19, si ha N = 57 e r = 36. Scegliamo e = 5, che non ha fattori in comune con 36.

L algoritmo RSA (Rivest, Shamir, Adleman, 1977) È tuttora usato in quasi tutte le transazioni sicure online (https). Si prendono due numeri primi grandi p, q e si calcolano N = p q e r = (p 1) (q 1) Si sceglie un numero e tale che 1 < e < r e che non abbia fattori in comune con r Si cerca quel numero d tale che e d = 1(modr) Si rende pubblica la coppia (N, e) (chiave pubblica) e si tiene segreto il numero d (chiave privata). Ad esempio: scegliendo p = 3, q = 19, si ha N = 57 e r = 36. Scegliamo e = 5, che non ha fattori in comune con 36. Si verifica che 5 29 = 1(mod36), quindi prendiamo d = 29.

L algoritmo RSA (Rivest, Shamir, Adleman, 1977) È tuttora usato in quasi tutte le transazioni sicure online (https). Si prendono due numeri primi grandi p, q e si calcolano N = p q e r = (p 1) (q 1) Si sceglie un numero e tale che 1 < e < r e che non abbia fattori in comune con r Si cerca quel numero d tale che e d = 1(modr) Si rende pubblica la coppia (N, e) (chiave pubblica) e si tiene segreto il numero d (chiave privata). Ad esempio: scegliendo p = 3, q = 19, si ha N = 57 e r = 36. Scegliamo e = 5, che non ha fattori in comune con 36. Si verifica che 5 29 = 1(mod36), quindi prendiamo d = 29. Ora teniamo segreta la chiave privata 29 e rendiamo pubblica la coppia (57, 5), ad esempio scrivendola su un sito.

Chiave pubblica: (57, 5), chiave privata 29 Supponiamo ora che qualcuno voglia comunicarci segretamente un numero m, ad esempio m = 10. Deve procedere così:

Chiave pubblica: (57, 5), chiave privata 29 Supponiamo ora che qualcuno voglia comunicarci segretamente un numero m, ad esempio m = 10. Deve procedere così: prende (57, 5), che è pubblica, e calcola poi ci comunica il risultato 22. 10 5 (mod57) = 22;

Chiave pubblica: (57, 5), chiave privata 29 Supponiamo ora che qualcuno voglia comunicarci segretamente un numero m, ad esempio m = 10. Deve procedere così: prende (57, 5), che è pubblica, e calcola poi ci comunica il risultato 22. 10 5 (mod57) = 22; Noi poi calcoliamo 22 29 (mod57) usando la nostra chiave privata.

Chiave pubblica: (57, 5), chiave privata 29 Supponiamo ora che qualcuno voglia comunicarci segretamente un numero m, ad esempio m = 10. Deve procedere così: prende (57, 5), che è pubblica, e calcola poi ci comunica il risultato 22. 10 5 (mod57) = 22; Noi poi calcoliamo 22 29 (mod57) usando la nostra chiave privata. Risulta che è proprio il numero di partenza. 22 29 (mod57) = 10 Se vuole comunicarci il numero 13, calcola 13 5 (mod57) = 52, ce lo comunica e noi poi calcoliamo 52 29 (mod57) = 13.

Sicurezza dell RSA In teoria, conoscendo (57, 5) è possibile trovare la chiave privata 29:

Sicurezza dell RSA In teoria, conoscendo (57, 5) è possibile trovare la chiave privata 29: basta fattorizzare 57 = 3 19, poi calcolare r = 2 18 = 36, e infine cercare d tale che 5 d = 1(mod36).

Sicurezza dell RSA In teoria, conoscendo (57, 5) è possibile trovare la chiave privata 29: basta fattorizzare 57 = 3 19, poi calcolare r = 2 18 = 36, e infine cercare d tale che 5 d = 1(mod36). Ma per fattorizzare N bisogna andare per tentativi! Nelle transazioni si usano di solito numeri primi di più di 300 cifre! Sarebbero richieste centinaia di anni di calcoli con un super-computer...

Sicurezza dell RSA In teoria, conoscendo (57, 5) è possibile trovare la chiave privata 29: basta fattorizzare 57 = 3 19, poi calcolare r = 2 18 = 36, e infine cercare d tale che 5 d = 1(mod36). Ma per fattorizzare N bisogna andare per tentativi! Nelle transazioni si usano di solito numeri primi di più di 300 cifre! Sarebbero richieste centinaia di anni di calcoli con un super-computer... a meno di non trovare un metodo alternativo

Sicurezza dell RSA In teoria, conoscendo (57, 5) è possibile trovare la chiave privata 29: basta fattorizzare 57 = 3 19, poi calcolare r = 2 18 = 36, e infine cercare d tale che 5 d = 1(mod36). Ma per fattorizzare N bisogna andare per tentativi! Nelle transazioni si usano di solito numeri primi di più di 300 cifre! Sarebbero richieste centinaia di anni di calcoli con un super-computer... a meno di non trovare un metodo alternativo (che nessuno ha ancora scoperto!)