La matematica dell'orologio - Dipartimento di Matematica e Informatica

41 downloads 179 Views 2MB Size Report
La matematica dell'orologio. Un'aritmetica inusuale: I numeri del nostro ambiente sono: 0,1,2,...,11 e corrispondono alle ore di un nostro orologio. Le operazioni ...
La matematica dell’orologio Un’aritmetica inusuale: I numeri del nostro ambiente sono: 0, 1, 2, . . . , 11 e corrispondono alle ore di un nostro orologio Le operazioni sono intese in questo modo: 1

2

somma: a + b `e l’ora che si ottiene spostando la lancetta dalla posizione a in avanti di b ore; prodotto: a · b `e l’ora che si ottiene sommando a a s´e stessa b volte.

I risultati nella matematica dell’orologio vengono distinti dagli altri mediante l’espressione (mod 12)

La matematica dell’orologio Un’aritmetica inusuale: I numeri del nostro ambiente sono: 0, 1, 2, . . . , 11 e corrispondono alle ore di un nostro orologio Le operazioni sono intese in questo modo: 1

2

somma: a + b `e l’ora che si ottiene spostando la lancetta dalla posizione a in avanti di b ore; prodotto: a · b `e l’ora che si ottiene sommando a a s´e stessa b volte.

I risultati nella matematica dell’orologio vengono distinti dagli altri mediante l’espressione (mod 12)

Esercizio 1 Calcolare 7 · 3 (mod 12), 8 · 4 (mod 12), 10 · 5 (mod 12)

La matematica dell’orologio Un’aritmetica inusuale: I numeri del nostro ambiente sono: 0, 1, 2, . . . , 11 e corrispondono alle ore di un nostro orologio Le operazioni sono intese in questo modo: 1

2

somma: a + b `e l’ora che si ottiene spostando la lancetta dalla posizione a in avanti di b ore; prodotto: a · b `e l’ora che si ottiene sommando a a s´e stessa b volte.

I risultati nella matematica dell’orologio vengono distinti dagli altri mediante l’espressione (mod 12)

Esercizio 1 Calcolare 7 · 3 (mod 12), 8 · 4 (mod 12), 10 · 5 (mod 12)

Esercizio 2 Riflettere sul rapporto che c’`e fra i risultati usuali e i risultati (mod 12).

Problema 1 Provare a dare una definizione matematica di a + b (mod 12) e di a · b (mod 12) che non faccia uso dell’orologio.

Problema 1 Provare a dare una definizione matematica di a + b (mod 12) e di a · b (mod 12) che non faccia uso dell’orologio. Quindi: 1

a + b (mod 12) `e il resto della divisione di a + b per 12;

2

a · b (mod 12) `e il resto della divisione di a · b per 12.

Problema 1 Provare a dare una definizione matematica di a + b (mod 12) e di a · b (mod 12) che non faccia uso dell’orologio. Quindi: 1

a + b (mod 12) `e il resto della divisione di a + b per 12;

2

a · b (mod 12) `e il resto della divisione di a · b per 12.

Gara 1 Calcolare 715 (mod 12) nel minor tempo possibile senza calcolatrice

Problema 1 Provare a dare una definizione matematica di a + b (mod 12) e di a · b (mod 12) che non faccia uso dell’orologio. Quindi: 1

a + b (mod 12) `e il resto della divisione di a + b per 12;

2

a · b (mod 12) `e il resto della divisione di a · b per 12.

Gara 1 Calcolare 715 (mod 12) nel minor tempo possibile senza calcolatrice Idea chiave: elevare a potenza nella matematica dell’orologio pu`o essere un’operazione molto pi` u veloce di quello che si potrebbe immaginare

Generalizziamo: Aritmetica modulare Non c’`e niente di speciale nel numero 12. Sostituiamolo con un numero intero n qualsiasi, purch`e maggiore di 1. I numeri del nostro ambiente sono: 0, 1, 2, . . . , n − 1 Le operazioni sono intese in questo modo: 1 2

a + b (mod n) `e il resto della divisione di a + b per n; a · b (mod n) `e il resto della divisione di a · b per n.

Generalizziamo: Aritmetica modulare Non c’`e niente di speciale nel numero 12. Sostituiamolo con un numero intero n qualsiasi, purch`e maggiore di 1. I numeri del nostro ambiente sono: 0, 1, 2, . . . , n − 1 Le operazioni sono intese in questo modo: 1 2

a + b (mod n) `e il resto della divisione di a + b per n; a · b (mod n) `e il resto della divisione di a · b per n.

Questo insieme numerico viene indicato con il simbolo Zn = {0, 1, . . . , n − 2, n − 1}

Generalizziamo: Aritmetica modulare Non c’`e niente di speciale nel numero 12. Sostituiamolo con un numero intero n qualsiasi, purch`e maggiore di 1. I numeri del nostro ambiente sono: 0, 1, 2, . . . , n − 1 Le operazioni sono intese in questo modo: 1 2

a + b (mod n) `e il resto della divisione di a + b per n; a · b (mod n) `e il resto della divisione di a · b per n.

Questo insieme numerico viene indicato con il simbolo Zn = {0, 1, . . . , n − 2, n − 1} Quando `e chiaro che ci stiamo riferendo ad operazioni in Zn possiamo omettere l’espressione (mod n).

Generalizziamo: Aritmetica modulare Non c’`e niente di speciale nel numero 12. Sostituiamolo con un numero intero n qualsiasi, purch`e maggiore di 1. I numeri del nostro ambiente sono: 0, 1, 2, . . . , n − 1 Le operazioni sono intese in questo modo: 1 2

a + b (mod n) `e il resto della divisione di a + b per n; a · b (mod n) `e il resto della divisione di a · b per n.

Questo insieme numerico viene indicato con il simbolo Zn = {0, 1, . . . , n − 2, n − 1} Quando `e chiaro che ci stiamo riferendo ad operazioni in Zn possiamo omettere l’espressione (mod n).

Esercizio 3 Calcolare: 21 + 23 (mod 14), 21 · 23 (mod 19), 2210 (mod 20), senza usare la calcolatrice

Esempio crittografico: n = 21 Gli elementi di Z21 sono identificati con le lettere dell’alfabeto A B C D E F G H I L M N O P Q R S T U V Z

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Il cifrario di Cesare: Testi in chiaro: Z21 Testi cifrati: Z21 Chiavi: Z21 Codifica: ek (x) = x + k (mod 21)

Il cifrario di Cesare: Testi in chiaro: Z21 Testi cifrati: Z21 Chiavi: Z21 Codifica: ek (x) = x + k (mod 21)

Una possibile generalizzazione: Testi in chiaro: Z21 Testi cifrati: Z21 Chiavi: Z21 × Z21

Codifica: ea,b (x) = a · x + b (mod 21)

Esperimento 1 A gruppi di 4, calcolate le funzioni di codifica relative alle seguenti chiavi: (3, 0), (3, 1), (2, 0), (2, 1). Discutere i risultati ottenuti.

Esperimento 1 A gruppi di 4, calcolate le funzioni di codifica relative alle seguenti chiavi: (3, 0), (3, 1), (2, 0), (2, 1). Discutere i risultati ottenuti. Perch`e le chiavi con a = 3 non sono adeguate mentre quelle con a = 2 s`ı?

Esperimento 1 A gruppi di 4, calcolate le funzioni di codifica relative alle seguenti chiavi: (3, 0), (3, 1), (2, 0), (2, 1). Discutere i risultati ottenuti. Perch`e le chiavi con a = 3 non sono adeguate mentre quelle con a = 2 s`ı? Quale `e secondo voi la motivazione di natura matematica?

Esperimento 1 A gruppi di 4, calcolate le funzioni di codifica relative alle seguenti chiavi: (3, 0), (3, 1), (2, 0), (2, 1). Discutere i risultati ottenuti. Perch`e le chiavi con a = 3 non sono adeguate mentre quelle con a = 2 s`ı? Quale `e secondo voi la motivazione di natura matematica?

a · x1 = a · x2 per qualche x1 6= x2

Esperimento 1 A gruppi di 4, calcolate le funzioni di codifica relative alle seguenti chiavi: (3, 0), (3, 1), (2, 0), (2, 1). Discutere i risultati ottenuti. Perch`e le chiavi con a = 3 non sono adeguate mentre quelle con a = 2 s`ı? Quale `e secondo voi la motivazione di natura matematica?

a · x1 = a · x2 per qualche x1 6= x2

Quale congettura di carattere generale vi sentireste di formulare al riguardo? Come si distinguono le chiavi valide da quelle non valide (se necessario, provate anche altre chiavi!)

Esperimento 1 A gruppi di 4, calcolate le funzioni di codifica relative alle seguenti chiavi: (3, 0), (3, 1), (2, 0), (2, 1). Discutere i risultati ottenuti. Perch`e le chiavi con a = 3 non sono adeguate mentre quelle con a = 2 s`ı? Quale `e secondo voi la motivazione di natura matematica?

a · x1 = a · x2 per qualche x1 6= x2

Quale congettura di carattere generale vi sentireste di formulare al riguardo? Come si distinguono le chiavi valide da quelle non valide (se necessario, provate anche altre chiavi!) Come provereste a dimostrare tale congettura?

Esperimento 1 A gruppi di 4, calcolate le funzioni di codifica relative alle seguenti chiavi: (3, 0), (3, 1), (2, 0), (2, 1). Discutere i risultati ottenuti. Perch`e le chiavi con a = 3 non sono adeguate mentre quelle con a = 2 s`ı? Quale `e secondo voi la motivazione di natura matematica?

a · x1 = a · x2 per qualche x1 6= x2

Quale congettura di carattere generale vi sentireste di formulare al riguardo? Come si distinguono le chiavi valide da quelle non valide (se necessario, provate anche altre chiavi!) Come provereste a dimostrare tale congettura? deve esistere x con ax = 1 (mod 21) ⇒ ax = c · 21 + 1. Ci` o` e implica MCD(a, 21) = 1. Viceversa, se MCD(a, 21) = 1 allora ax1 = ax2 non pu` o mai verificarsi dato che 21 divide a(x1 − x2 )

Cifrario affine Testi in chiaro: Z21 Testi cifrati: Z21 Chiavi: A × Z21 dove A = {a ∈ Z21 | MCD(a, 21) = 1} = {1, 2, 4, 5, 8, 10, 11, 13, 16, 17, 19, 20}

Codifica: ea,b (x) = a · x + b (mod 21)

Cifrario affine Testi in chiaro: Z21 Testi cifrati: Z21 Chiavi: A × Z21 dove A = {a ∈ Z21 | MCD(a, 21) = 1} = {1, 2, 4, 5, 8, 10, 11, 13, 16, 17, 19, 20}

Codifica: ea,b (x) = a · x + b (mod 21)

Gara 2 Decodificare il seguente messaggio, sapendo che `e stato cifrato con un cifrario affine: lo qtpobzh avb pmt eohvdo ctznvt od rmtcgh ponbvgoztdgh ntv sb nvhccozb stuohdt link verifica: www.dmi.unipg.it/giuliet/MIP.txt

La divisione in Zn . Abbiamo visto che in Z21 vale la seguente propriet`a: MCD(a, 21) = 1 ⇔ esiste b in Z21 con ab = 1 (mod 21)

La divisione in Zn . Abbiamo visto che in Z21 vale la seguente propriet`a: MCD(a, 21) = 1 ⇔ esiste b in Z21 con ab = 1 (mod 21) ` facile dimostrare che la stessa propriet` E a vale in Zn : MCD(a, n) = 1 ⇔ esiste b in Zn con ab = 1 (mod n)

La divisione in Zn . Abbiamo visto che in Z21 vale la seguente propriet`a: MCD(a, 21) = 1 ⇔ esiste b in Z21 con ab = 1 (mod 21) ` facile dimostrare che la stessa propriet` E a vale in Zn : MCD(a, n) = 1 ⇔ esiste b in Zn con ab = 1 (mod n) Nell’ambiente numerico Zn la divisione non `e sempre possibile: 1 a esiste se e solo se MCD(a, n) = 1

La divisione in Zn . Abbiamo visto che in Z21 vale la seguente propriet`a: MCD(a, 21) = 1 ⇔ esiste b in Z21 con ab = 1 (mod 21) ` facile dimostrare che la stessa propriet` E a vale in Zn : MCD(a, n) = 1 ⇔ esiste b in Zn con ab = 1 (mod n) Nell’ambiente numerico Zn la divisione non `e sempre possibile: 1 a esiste se e solo se MCD(a, n) = 1 Problema: come calcolare 1/a?

La divisione in Zn . Abbiamo visto che in Z21 vale la seguente propriet`a: MCD(a, 21) = 1 ⇔ esiste b in Z21 con ab = 1 (mod 21) ` facile dimostrare che la stessa propriet` E a vale in Zn : MCD(a, n) = 1 ⇔ esiste b in Zn con ab = 1 (mod n) Nell’ambiente numerico Zn la divisione non `e sempre possibile: 1 a esiste se e solo se MCD(a, n) = 1 Problema: come calcolare 1/a?

Esperimento 2 Calcolare (se possibile): 1 2 1 4 1 2 1

in Z23 in Z9 in Z22 in Z22

Un metodo pi`u veloce: l’algoritmo euclideo n dividendo; a divisore divisione euclidea: n = qa + r con 0 ≤ r ≤ a − 1 poniamo q := q0 e r := r1

Un metodo pi`u veloce: l’algoritmo euclideo n dividendo; a divisore divisione euclidea: n = qa + r con 0 ≤ r ≤ a − 1 poniamo q := q0 e r := r1 Passi successivi: a = q1 r1 + r2 r1 = q2 r2 + r3 r2 = q3 r3 + r4 ... ri −1 = qi ri + ri +1 ...

Un metodo pi`u veloce: l’algoritmo euclideo n dividendo; a divisore divisione euclidea: n = qa + r con 0 ≤ r ≤ a − 1 poniamo q := q0 e r := r1 Passi successivi: a = q1 r1 + r2 r1 = q2 r2 + r3 r2 = q3 r3 + r4 ... ri −1 = qi ri + ri +1 ... Ad un certo punto il resto diventa uguale a 0. L’ultimo resto non nullo `e il Massimo Comun Divisore di n e a.

Un metodo pi`u veloce: l’algoritmo euclideo n dividendo; a divisore divisione euclidea: n = qa + r con 0 ≤ r ≤ a − 1 poniamo q := q0 e r := r1 Passi successivi: a = q1 r1 + r2 r1 = q2 r2 + r3 r2 = q3 r3 + r4 ... ri −1 = qi ri + ri +1 ... Ad un certo punto il resto diventa uguale a 0. L’ultimo resto non nullo `e il Massimo Comun Divisore di n e a. Nel caso in cui MCD(n, a) = 1 `e facile trovare x, y tali che 1 = nx + ay .

Un metodo pi`u veloce: l’algoritmo euclideo n dividendo; a divisore divisione euclidea: n = qa + r con 0 ≤ r ≤ a − 1 poniamo q := q0 e r := r1 Passi successivi: a = q1 r1 + r2 r1 = q2 r2 + r3 r2 = q3 r3 + r4 ... ri −1 = qi ri + ri +1 ... Ad un certo punto il resto diventa uguale a 0. L’ultimo resto non nullo `e il Massimo Comun Divisore di n e a. Nel caso in cui MCD(n, a) = 1 `e facile trovare x, y tali che 1 = nx + ay . Conseguenza: y mod n `e proprio 1/a in Zn

Esempio Come trovare l’inverso di 12 in Z53 ?

Esempio Come trovare l’inverso di 12 in Z53 ? Algoritmo euclideo 53 = 4 · 12 + 5 12 = 2 · 5 + 2 5=2·2+1 2=2·1+0

Esempio Come trovare l’inverso di 12 in Z53 ? Algoritmo euclideo 53 = 4 · 12 + 5 ⇒ 5 = 53 − 4 · 12 12 = 2 · 5 + 2 ⇒ 2 = 12 − 2 · 5 5=2·2+1 ⇒1 =5−2·2 2=2·1+0 Risalendo le uguaglianze dal basso si scopre che... 1 = 5−2·2 1 = 5 − 2(12 − 2 · 5) 1 = (53 − 4 · 12) − 2(12 − 2 · (53 − 4 · 12)) 1 = 5 · 53 − 22 · 12

Esempio Come trovare l’inverso di 12 in Z53 ? Algoritmo euclideo 53 = 4 · 12 + 5 ⇒ 5 = 53 − 4 · 12 12 = 2 · 5 + 2 ⇒ 2 = 12 − 2 · 5 5=2·2+1 ⇒1 =5−2·2 2=2·1+0 Risalendo le uguaglianze dal basso si scopre che... 1 = 5−2·2 1 = 5 − 2(12 − 2 · 5) 1 = (53 − 4 · 12) − 2(12 − 2 · (53 − 4 · 12)) 1 = 5 · 53 − 22 · 12 Pertanto −22 · 12 = 1

(mod 53) ⇒

1 = −22 = 31 12

(mod 53)

Esempio Come trovare l’inverso di 12 in Z53 ? Algoritmo euclideo 53 = 4 · 12 + 5 ⇒ 5 = 53 − 4 · 12 12 = 2 · 5 + 2 ⇒ 2 = 12 − 2 · 5 5=2·2+1 ⇒1 =5−2·2 2=2·1+0 Risalendo le uguaglianze dal basso si scopre che... 1 = 5−2·2 1 = 5 − 2(12 − 2 · 5) 1 = (53 − 4 · 12) − 2(12 − 2 · (53 − 4 · 12)) 1 = 5 · 53 − 22 · 12 Pertanto −22 · 12 = 1

(mod 53) ⇒

Gara 3 Determinare 1/11 in Z63

1 = −22 = 31 12

(mod 53)

L’algoritmo euclideo nel linguaggio MAGMA

Istruzioni

r:=(a mod b); while (r ne 0) do a:=b; b:=r; r:=(a mod b); end while; MCD:=b; MCD;

L’algoritmo euclideo nel linguaggio MAGMA Istruzioni con contapassi

r:=(a mod b); cont:=1; while (r ne 0) do a:=b; b:=r; r:=(a mod b); cont:=cont+1; end while; MCD:=b; MCD; cont;

Esperimento 3 Calcolare con MAGMA i MCD di coppie di numeri sempre pi` u grandi e il numero di divisioni effettuate. Quanti passi vi aspettavate in teoria? (ordine di grandezza rispetto a b)

Esperimento 3 Calcolare con MAGMA i MCD di coppie di numeri sempre pi` u grandi e il numero di divisioni effettuate. Quanti passi vi aspettavate in teoria? (ordine di grandezza rispetto a b) Quanti passi sono stati necessari in realt` a?

Esperimento 3 Calcolare con MAGMA i MCD di coppie di numeri sempre pi` u grandi e il numero di divisioni effettuate. Quanti passi vi aspettavate in teoria? (ordine di grandezza rispetto a b) Quanti passi sono stati necessari in realt` a? Quale congettura potreste formulare relativamente a tale numero di passi? (Suggerimento: provare divisori che siano potenze di 2)

Esperimento 3 Calcolare con MAGMA i MCD di coppie di numeri sempre pi` u grandi e il numero di divisioni effettuate. Quanti passi vi aspettavate in teoria? (ordine di grandezza rispetto a b) Quanti passi sono stati necessari in realt` a? Quale congettura potreste formulare relativamente a tale numero di passi? (Suggerimento: provare divisori che siano potenze di 2) Come potreste provare tale congettura?

Esperimento 3 Calcolare con MAGMA i MCD di coppie di numeri sempre pi` u grandi e il numero di divisioni effettuate. Quanti passi vi aspettavate in teoria? (ordine di grandezza rispetto a b) Quanti passi sono stati necessari in realt` a? Quale congettura potreste formulare relativamente a tale numero di passi? (Suggerimento: provare divisori che siano potenze di 2) Come potreste provare tale congettura? ri −1 ≥ ri + ri +1 ≥ 2ri +1

Confronto con il metodo della scuola media... Esperimento 4 Provate ad usare MAGMA per calcolare il massimo comun divisore di numeri sempre pi` u grandi. Potete usare direttamante il comando GCD(a,b) Sempre con MAGMA, fattorizzate quegli stessi numeri con il comando Factorization(n); Confrontate i tempi di esecuzione.

Confronto con il metodo della scuola media... Esperimento 4 Provate ad usare MAGMA per calcolare il massimo comun divisore di numeri sempre pi` u grandi. Potete usare direttamante il comando GCD(a,b) Sempre con MAGMA, fattorizzate quegli stessi numeri con il comando Factorization(n); Confrontate i tempi di esecuzione. Esempio: a = 1000000000000000000000000000060 3000000000000000000000000001881 b = 10000000000000000000000000000000 00000000000000001231231231234 Confrontare GCD(a,b) con Factorization(a)

Primo Riepilogo

Nell’aritmetica modulare: Somma e prodotto:

Primo Riepilogo

Nell’aritmetica modulare: Somma e prodotto: veloci

Primo Riepilogo

Nell’aritmetica modulare: Somma e prodotto: veloci Divisione:

Primo Riepilogo

Nell’aritmetica modulare: Somma e prodotto: veloci Divisione: veloce - algoritmo euclideo

Primo Riepilogo

Nell’aritmetica modulare: Somma e prodotto: veloci Divisione: veloce - algoritmo euclideo Fattorizzazione:

Primo Riepilogo

Nell’aritmetica modulare: Somma e prodotto: veloci Divisione: veloce - algoritmo euclideo Fattorizzazione: lenta

Primo Riepilogo

Nell’aritmetica modulare: Somma e prodotto: veloci Divisione: veloce - algoritmo euclideo Fattorizzazione: lenta Elevamento a potenza: ?

Primo Riepilogo

Nell’aritmetica modulare: Somma e prodotto: veloci Divisione: veloce - algoritmo euclideo Fattorizzazione: lenta Elevamento a potenza: ? Logaritmo: ?

Il vero cifrario di Diffie-Hellman Chiave pubblica: (1) un numero primo p; (2) un elemento di Zp , diciamo A; (3) una potenza di A, diciamo AB (mod p). Chiave privata: l’esponente B (compreso fra 1 e p − 2). Codifica di un messaggio M ∈ Zp : il mittente sceglie un intero casuale compreso fra 1 e p − 2, diciamo C e invia, i valori (M · (AB )C , AC ). Decodifica di un messaggio (α, β): M = α/β B .

Il vero cifrario di Diffie-Hellman Chiave pubblica: (1) un numero primo p; (2) un elemento di Zp , diciamo A; (3) una potenza di A, diciamo AB (mod p). Chiave privata: l’esponente B (compreso fra 1 e p − 2). Codifica di un messaggio M ∈ Zp : il mittente sceglie un intero casuale compreso fra 1 e p − 2, diciamo C e invia, i valori (M · (AB )C , AC ). Decodifica di un messaggio (α, β): M = α/β B .

Gara 4 Divisi in tre squadre, impersonate i ruoli di mittente, opponente e destinatario. Supponiamo che parte della chiave pubblica del destinatario sia p = 29, A = 2. La squadra destinatario sceglie B e comunica a tutta la classe AB (mod p). Misuriamo i tempi in cui: la squadra mittente codifica un messaggio scelto a caso la squadra destinatario decodifica tale messaggio la squadra opponente decodifica tale messaggio

Elevamento a potenza in Zn Sia n un numero di 1024 cifre binarie (circa 308 cifre decimali). Problema: Fissato A in Zn , e B esponente compreso fra 1 e n − 1, quante moltiplicazioni in Zn sono necessarie per calcolare AB (mod n)?

Elevamento a potenza in Zn Sia n un numero di 1024 cifre binarie (circa 308 cifre decimali). Problema: Fissato A in Zn , e B esponente compreso fra 1 e n − 1, quante moltiplicazioni in Zn sono necessarie per calcolare AB (mod n)?

Esperimento 5 Scegliere un numero n con 300 cifre (esempio: 10300 + 1378543) Scegliere due numeri A e B minori di n Provare a calcolare con MAGMA il prodotto A · A · A · · · (mod n) per B volte

Elevamento a potenza in Zn Sia n un numero di 1024 cifre binarie (circa 308 cifre decimali). Problema: Fissato A in Zn , e B esponente compreso fra 1 e n − 1, quante moltiplicazioni in Zn sono necessarie per calcolare AB (mod n)?

Esperimento 5 Scegliere un numero n con 300 cifre (esempio: 10300 + 1378543) Scegliere due numeri A e B minori di n Provare a calcolare con MAGMA il prodotto A · A · A · · · (mod n) per B volte Deve esistere un metodo molto pi` u veloce, altrimenti non potremmo usare Diffie-Hellman!

Elevamento a potenza in Zn Sia n un numero di 1024 cifre binarie (circa 308 cifre decimali). Problema: Fissato A in Zn , e B esponente compreso fra 1 e n − 1, quante moltiplicazioni in Zn sono necessarie per calcolare AB (mod n)?

Esperimento 5 Scegliere un numero n con 300 cifre (esempio: 10300 + 1378543) Scegliere due numeri A e B minori di n Provare a calcolare con MAGMA il prodotto A · A · A · · · (mod n) per B volte Deve esistere un metodo molto pi` u veloce, altrimenti non potremmo usare Diffie-Hellman! Tentiamo con il comando Modexp(A,B,n)

Elevamento a potenza in Zn Sia n un numero di 1024 cifre binarie (circa 308 cifre decimali). Problema: Fissato A in Zn , e B esponente compreso fra 1 e n − 1, quante moltiplicazioni in Zn sono necessarie per calcolare AB (mod n)?

Esperimento 5 Scegliere un numero n con 300 cifre (esempio: 10300 + 1378543) Scegliere due numeri A e B minori di n Provare a calcolare con MAGMA il prodotto A · A · A · · · (mod n) per B volte Deve esistere un metodo molto pi` u veloce, altrimenti non potremmo usare Diffie-Hellman! Tentiamo con il comando Modexp(A,B,n) Quale potrebbe essere l’idea alla base di Modexp?

Square and Multiply Supponiamo di voler calcolare 35637 (mod 832)

Square and Multiply Supponiamo di voler calcolare 35637 (mod 832) Sfruttiamo la scrittura di 637 in base 2: 637 = 1001111101 = 512 + 64 + 32 + 16 + 8 + 4 + 1 e quindi 35637

(mod 832) = 35512 ·3564 ·3532 ·3516 ·358 ·354 ·351

apparentemente il problema non sembra semplificato.

(mod 832);

Square and Multiply Supponiamo di voler calcolare 35637 (mod 832) Sfruttiamo la scrittura di 637 in base 2: 637 = 1001111101 = 512 + 64 + 32 + 16 + 8 + 4 + 1 e quindi 35637

(mod 832) = 35512 ·3564 ·3532 ·3516 ·358 ·354 ·351

(mod 832);

apparentemente il problema non sembra semplificato. Ma 352 = 79 (mod 832) e possiamo proseguire con le potenze di 2 e calcolare 354 (mod 832): basta osservare che 354 = 352 · 352 (mod 832) e quindi 354 = 792 = 129 (mod 832)

Procedendo con lo stesso sistema si ottengono: 352 = 79 (mod 832) 354 = 792 = 129 (mod 832) 358 = 1292 = 215 (mod 832) 3516 = 2152 = 3 (mod 832) 3532 = 32 = 9 (mod 832) 3564 = 92 = 81 (mod 832) 35128 = 812 = 67 (mod 832) 35256 = 672 = 287 (mod 832) 35512 = 2872 = 239 (mod 832)

Procedendo con lo stesso sistema si ottengono: 352 = 79 (mod 832) 354 = 792 = 129 (mod 832) 358 = 1292 = 215 (mod 832) 3516 = 2152 = 3 (mod 832) 3532 = 32 = 9 (mod 832) 3564 = 92 = 81 (mod 832) 35128 = 812 = 67 (mod 832) 35256 = 672 = 287 (mod 832) 35512 = 2872 = 239 (mod 832) Quindi 35637 (mod 832) = 239 · 81 · 9 · 3 · 215 · 129 · 35 (mod 832). Il risultato finale 35367 = 121 (mod 832)

Procedendo con lo stesso sistema si ottengono: 352 = 79 (mod 832) 354 = 792 = 129 (mod 832) 358 = 1292 = 215 (mod 832) 3516 = 2152 = 3 (mod 832) 3532 = 32 = 9 (mod 832) 3564 = 92 = 81 (mod 832) 35128 = 812 = 67 (mod 832) 35256 = 672 = 287 (mod 832) 35512 = 2872 = 239 (mod 832) Quindi 35637 (mod 832) = 239 · 81 · 9 · 3 · 215 · 129 · 35 (mod 832). Il risultato finale 35367 = 121 (mod 832)

Esercizio 4 Calcolare col metodo square and multiply le seguenti potenze modulo n = 92: 1

7237

2

2453

Secondo Riepilogo

Nell’aritmetica modulare: Somma e prodotto: veloci Divisione: veloce - algoritmo euclideo Elevamento a potenza: veloce - square and multiply Fattorizzazione: lenta

Secondo Riepilogo

Nell’aritmetica modulare: Somma e prodotto: veloci Divisione: veloce - algoritmo euclideo Elevamento a potenza: veloce - square and multiply Fattorizzazione: lenta Logaritmo: ?

Logaritmo in Zn

Esperimento 6 Scrivere tutte le potenze di 2 in R con esponente compreso fra 1 e 200 Ripetere lo stesso conteggio modulo p, con p = 557 Discutere i risultati ottenuti

Logaritmo in Zn

Esperimento 6 Scrivere tutte le potenze di 2 in R con esponente compreso fra 1 e 200 Ripetere lo stesso conteggio modulo p, con p = 557 Discutere i risultati ottenuti

Conseguenza: Non esistono algoritmi veloci per il calcolo di logaritmi in aritmetica modulare

Riepilogo

Nell’aritmetica modulare: Somma e prodotto: veloci Divisione: veloce - algoritmo euclideo Elevamento a potenza: veloce - square and multiply Logaritmo: lento Fattorizzazione: lenta

La funzione toziente di Eulero Problema: Quanti sono gli elementi invertibili in Zn ?

La funzione toziente di Eulero Problema: Quanti sono gli elementi invertibili in Zn ? Il numero di questi elementi si indica con φ(n). La funzione φ si chiama funzione toziente di Eulero

La funzione toziente di Eulero Problema: Quanti sono gli elementi invertibili in Zn ? Il numero di questi elementi si indica con φ(n). La funzione φ si chiama funzione toziente di Eulero Se n `e un numero primo, quanto vale φ(n)?

La funzione toziente di Eulero Problema: Quanti sono gli elementi invertibili in Zn ? Il numero di questi elementi si indica con φ(n). La funzione φ si chiama funzione toziente di Eulero Se n `e un numero primo, quanto vale φ(n)? n-1 Il caso pi` u interessante per noi `e quello in cui n = pq, dove p e q sono numeri primi.

La funzione toziente di Eulero Problema: Quanti sono gli elementi invertibili in Zn ? Il numero di questi elementi si indica con φ(n). La funzione φ si chiama funzione toziente di Eulero Se n `e un numero primo, quanto vale φ(n)? n-1 Il caso pi` u interessante per noi `e quello in cui n = pq, dove p e q sono numeri primi.

Esperimento 7 Determinare φ(n) per n = 6, 10, 15, 21, . . ..

La funzione toziente di Eulero Problema: Quanti sono gli elementi invertibili in Zn ? Il numero di questi elementi si indica con φ(n). La funzione φ si chiama funzione toziente di Eulero Se n `e un numero primo, quanto vale φ(n)? n-1 Il caso pi` u interessante per noi `e quello in cui n = pq, dove p e q sono numeri primi.

Esperimento 7 Determinare φ(n) per n = 6, 10, 15, 21, . . .. Congetturare una regola generale per φ(n) nel caso n = pq con p, q primi.

La funzione toziente di Eulero Problema: Quanti sono gli elementi invertibili in Zn ? Il numero di questi elementi si indica con φ(n). La funzione φ si chiama funzione toziente di Eulero Se n `e un numero primo, quanto vale φ(n)? n-1 Il caso pi` u interessante per noi `e quello in cui n = pq, dove p e q sono numeri primi.

Esperimento 7 Determinare φ(n) per n = 6, 10, 15, 21, . . .. Congetturare una regola generale per φ(n) nel caso n = pq con p, q primi. Provare a dimostrare tale congettura.

Il piccolo Teorema di Fermat Esperimento 8 Scrivere le potenze di tutti gli elementi non nulli di Z5 ;

Il piccolo Teorema di Fermat Esperimento 8 Scrivere le potenze di tutti gli elementi non nulli di Z5 ; Scrivere le potenze di tutti gli elementi non nulli di Z7 ;

Il piccolo Teorema di Fermat Esperimento 8 Scrivere le potenze di tutti gli elementi non nulli di Z5 ; Scrivere le potenze di tutti gli elementi non nulli di Z7 ; Scrivere le potenze di tutti gli elementi non nulli di Z11 ;

Il piccolo Teorema di Fermat Esperimento 8 Scrivere le potenze di tutti gli elementi non nulli di Z5 ; Scrivere le potenze di tutti gli elementi non nulli di Z7 ; Scrivere le potenze di tutti gli elementi non nulli di Z11 ; Osservare i risultati

Il piccolo Teorema di Fermat Esperimento 8 Scrivere le potenze di tutti gli elementi non nulli di Z5 ; Scrivere le potenze di tutti gli elementi non nulli di Z7 ; Scrivere le potenze di tutti gli elementi non nulli di Z11 ; Osservare i risultati Formulare una congettura generale sul valore di ap (mod p)

Il piccolo Teorema di Fermat Esperimento 8 Scrivere le potenze di tutti gli elementi non nulli di Z5 ; Scrivere le potenze di tutti gli elementi non nulli di Z7 ; Scrivere le potenze di tutti gli elementi non nulli di Z11 ; Osservare i risultati Formulare una congettura generale sul valore di ap (mod p) Provare a dimostrare tale congettura

Il piccolo Teorema di Fermat Esperimento 8 Scrivere le potenze di tutti gli elementi non nulli di Z5 ; Scrivere le potenze di tutti gli elementi non nulli di Z7 ; Scrivere le potenze di tutti gli elementi non nulli di Z11 ; Osservare i risultati Formulare una congettura generale sul valore di ap (mod p) Provare a dimostrare tale congettura

Teorema 1 (Piccolo teorema di Fermat) Sia p un numero primo e sia a un intero qualsiasi. Allora ap = a

(mod p)

Se a = 0 (mod p), allora ap = a = 0 (mod p)

Se a = 0 (mod p), allora ap = a = 0 (mod p) Se a 6= 0 (mod p), allora possiamo consideriamo le potenze di a = a0 , a1 , a2 , . . ., tutte calcolate (mod p)

Se a = 0 (mod p), allora ap = a = 0 (mod p) Se a 6= 0 (mod p), allora possiamo consideriamo le potenze di a = a0 , a1 , a2 , . . ., tutte calcolate (mod p) Per qualche 0 ≤ i ≤ j ≤ p − 1 si avranno due potenze uguali: ai = aj (mod p) (perch`e?)

Se a = 0 (mod p), allora ap = a = 0 (mod p) Se a 6= 0 (mod p), allora possiamo consideriamo le potenze di a = a0 , a1 , a2 , . . ., tutte calcolate (mod p) Per qualche 0 ≤ i ≤ j ≤ p − 1 si avranno due potenze uguali: ai = aj (mod p) (perch`e?) Questo vuol dire che aj−i = 1 (mod p) (perch´e?)

Se a = 0 (mod p), allora ap = a = 0 (mod p) Se a 6= 0 (mod p), allora possiamo consideriamo le potenze di a = a0 , a1 , a2 , . . ., tutte calcolate (mod p) Per qualche 0 ≤ i ≤ j ≤ p − 1 si avranno due potenze uguali: ai = aj (mod p) (perch`e?) Questo vuol dire che aj−i = 1 (mod p) (perch´e?) Sia s ≤ p − 1 il minimo intero positivo tale che as = 1 (mod p)

Se a = 0 (mod p), allora ap = a = 0 (mod p) Se a 6= 0 (mod p), allora possiamo consideriamo le potenze di a = a0 , a1 , a2 , . . ., tutte calcolate (mod p) Per qualche 0 ≤ i ≤ j ≤ p − 1 si avranno due potenze uguali: ai = aj (mod p) (perch`e?) Questo vuol dire che aj−i = 1 (mod p) (perch´e?) Sia s ≤ p − 1 il minimo intero positivo tale che as = 1 (mod p) Le potenze distinte di a sono 1, a, a2 , . . . , as−1 . Dopodich`e, dato che as = 1, si ripetono. Per ogni b ∈ Zp , gli elementi b, ba, ba2 , . . . , bas−1 sono in numero di s

Se a = 0 (mod p), allora ap = a = 0 (mod p) Se a 6= 0 (mod p), allora possiamo consideriamo le potenze di a = a0 , a1 , a2 , . . ., tutte calcolate (mod p) Per qualche 0 ≤ i ≤ j ≤ p − 1 si avranno due potenze uguali: ai = aj (mod p) (perch`e?) Questo vuol dire che aj−i = 1 (mod p) (perch´e?) Sia s ≤ p − 1 il minimo intero positivo tale che as = 1 (mod p) Le potenze distinte di a sono 1, a, a2 , . . . , as−1 . Dopodich`e, dato che as = 1, si ripetono. Per ogni b ∈ Zp , gli elementi b, ba, ba2 , . . . , bas−1 sono in numero di s L’insieme degli elementi non nulli di Zp `e ripartito in tali gruppi di s elementi

Se a = 0 (mod p), allora ap = a = 0 (mod p) Se a 6= 0 (mod p), allora possiamo consideriamo le potenze di a = a0 , a1 , a2 , . . ., tutte calcolate (mod p) Per qualche 0 ≤ i ≤ j ≤ p − 1 si avranno due potenze uguali: ai = aj (mod p) (perch`e?) Questo vuol dire che aj−i = 1 (mod p) (perch´e?) Sia s ≤ p − 1 il minimo intero positivo tale che as = 1 (mod p) Le potenze distinte di a sono 1, a, a2 , . . . , as−1 . Dopodich`e, dato che as = 1, si ripetono. Per ogni b ∈ Zp , gli elementi b, ba, ba2 , . . . , bas−1 sono in numero di s L’insieme degli elementi non nulli di Zp `e ripartito in tali gruppi di s elementi s divide p − 1

Il Teorema di Eulero - forma debole L’argomento vale per ogni n sostituendo l’espressione elementi non nulli di Zp con elementi invertibili in Zn .

Il Teorema di Eulero - forma debole L’argomento vale per ogni n sostituendo l’espressione elementi non nulli di Zp con elementi invertibili in Zn .

Teorema 2 (Teorema di Eulero - forma debole) Sia n un intero positivo e sia a un elemento di Zn tale che MCD(a, n) = 1. Allora akφ(n)+1 = a

(mod n)

Il Teorema di Eulero - forma debole L’argomento vale per ogni n sostituendo l’espressione elementi non nulli di Zp con elementi invertibili in Zn .

Teorema 2 (Teorema di Eulero - forma debole) Sia n un intero positivo e sia a un elemento di Zn tale che MCD(a, n) = 1. Allora akφ(n)+1 = a

(mod n)

Esercizio 5 Verificare il Teorema di Eulero in forma debole per le seguenti coppie di interi: n = 10, a = 3; n = 20, a = 3; n = 15, a = 7.

Il Teorema di Eulero - forma debole L’argomento vale per ogni n sostituendo l’espressione elementi non nulli di Zp con elementi invertibili in Zn .

Teorema 2 (Teorema di Eulero - forma debole) Sia n un intero positivo e sia a un elemento di Zn tale che MCD(a, n) = 1. Allora akφ(n)+1 = a

(mod n)

Esercizio 5 Verificare il Teorema di Eulero in forma debole per le seguenti coppie di interi: n = 10, a = 3; n = 20, a = 3; n = 15, a = 7.

Esperimento 9 L’ipotesi MCD(a, n) = 1 `e veramente necessaria. Il comando MAGMA per la funzione di Eulero `e EulerPhi(n).

Il Teorema di Eulero - forma debole L’argomento vale per ogni n sostituendo l’espressione elementi non nulli di Zp con elementi invertibili in Zn .

Teorema 2 (Teorema di Eulero - forma debole) Sia n un intero positivo e sia a un elemento di Zn tale che MCD(a, n) = 1. Allora akφ(n)+1 = a

(mod n)

Esercizio 5 Verificare il Teorema di Eulero in forma debole per le seguenti coppie di interi: n = 10, a = 3; n = 20, a = 3; n = 15, a = 7.

Esperimento 9 L’ipotesi MCD(a, n) = 1 `e veramente necessaria. Il comando MAGMA per la funzione di Eulero `e EulerPhi(n). controesempi per n = 8, 12, 16, 20, 24, 28, 32 e a = 2

Il Teorema di Eulero - forma RSA

Teorema 3 (Teorema di Eulero - forma debole) Sia n un intero positivo della forma n = pq con p e q primi, e sia a un elemento qualsiasi di Zn . Allora akφ(n)+1 = a

(mod n)

Il Teorema di Eulero - forma RSA

Teorema 3 (Teorema di Eulero - forma debole) Sia n un intero positivo della forma n = pq con p e q primi, e sia a un elemento qualsiasi di Zn . Allora akφ(n)+1 = a

(mod n)

Esperimento 10 Verificare il Teorema per un certo numero di casi con l’aiuto di Magma.

Il crittosistema RSA: esempio Chiave pubblica di Ryanair: Modulo (1024 bit): AE 64 DD 3D 64 45 D9 56 AB 5B 18 D1 03 3F 68 6B F4 F7 73 5B A1 C7 B3 1D CE A8 3E 57 FC B0 51 86 81 E0 81 AC C1 72 F5 4F E0 F5 8E 47 5B 93 D6 33 D6 21 F9 9F 81 10 18 C5 47 C1 33 94 1B D1 3A 88 5B 3B 32 92 49 75 0A 92 8E 17 0A 74 F7 EA C0 E5 A9 BD E2 02 84 FC 86 C2 F3 98 64 74 FE AA D4 8D 8D 8F CD 95 65 83 25 B9 DE D3 47 C1 A6 33 C9 F2 A8 A8 DC 02 3F C3 4F 4A A7 F3 D2 A4 69 A8 15 E5

Esponente pubblico: 01 00 01

Convertitore: http://www.darkfader.net/toolbox/convert/

Modulo: n=1224636320672332376854929347869119904 0477093210821604946093123578879723617610 5263908162964225569626674489521384482266 08721094478164975540605363932171762349 33981903827508484426161207150970417382312 3612861195507350855476831120652049276 218003093539439507232494194792472213278435 5728552674799561849761300834948581

Esponente pubblico: e=65537

RSA Chiave pubblica: n, e

RSA Chiave pubblica: n, e Chiave privata: 1 2

p, q numeri primi tali che n = p · q d ∈ Zφ(n) tale che d = 1/e (mod φ(n))

RSA Chiave pubblica: n, e Chiave privata: 1 2

p, q numeri primi tali che n = p · q d ∈ Zφ(n) tale che d = 1/e (mod φ(n))

Codifica di un messaggio M ∈ Zn : Me

(mod n)

RSA Chiave pubblica: n, e Chiave privata: 1 2

p, q numeri primi tali che n = p · q d ∈ Zφ(n) tale che d = 1/e (mod φ(n))

Codifica di un messaggio M ∈ Zn : Me

(mod n)

Decodifica di un messaggio M = (M e )d

RSA Chiave pubblica: n, e Chiave privata: 1 2

p, q numeri primi tali che n = p · q d ∈ Zφ(n) tale che d = 1/e (mod φ(n))

Codifica di un messaggio M ∈ Zn : Me

(mod n)

Decodifica di un messaggio M = (M e )d Perch´e `e corretta la decodifica?

RSA Chiave pubblica: n, e Chiave privata: 1 2

p, q numeri primi tali che n = p · q d ∈ Zφ(n) tale che d = 1/e (mod φ(n))

Codifica di un messaggio M ∈ Zn : Me

(mod n)

Decodifica di un messaggio M = (M e )d Perch´e `e corretta la decodifica? Grazie al Teorema di Eulero ed = 1 (mod φ(n)) ⇒ ed = k · φ(n) + 1 ⇒ (M e )d = M ed = M kφ(n)+1 = M

Fattibilit`a

calcolo di n a partire da p e q: moltiplicazione calcolo di d: divisione in Zφ(n) codifica: elevamento a potenza decodifica: elevamento a potenza

Fattibilit`a

calcolo di n a partire da p e q: moltiplicazione calcolo di d: divisione in Zφ(n) codifica: elevamento a potenza decodifica: elevamento a potenza calcolo di p e q: PROBLEMA

Fattibilit`a

calcolo di n a partire da p e q: moltiplicazione calcolo di d: divisione in Zφ(n) codifica: elevamento a potenza decodifica: elevamento a potenza calcolo di p e q: PROBLEMA Nota: 65537 `e il pi` u grande numero primo conosciuto della forma n 22 + 1 (in questo caso n = 4). Per questa caratteristica viene comunemente usato come esponente pubblico. Al tempo stesso `e (a) abbastanza grande (b) primo (c) in forma tale da velocizzare square and multiply

Sicurezza Risalire da M e a M conoscendo e e n? Serve d Risalire a d conoscendo e e n? Serve φ(n) Risalire a φ(n) conoscendo n? Servono p e q

Sicurezza Risalire da M e a M conoscendo e e n? Serve d Risalire a d conoscendo e e n? Serve φ(n) Risalire a φ(n) conoscendo n? Servono p e q Se si `e sicuri che nessuno riesca a fattorizzare n, allora il sistema pu`o considerarsi sicuro.

Sicurezza Risalire da M e a M conoscendo e e n? Serve d Risalire a d conoscendo e e n? Serve φ(n) Risalire a φ(n) conoscendo n? Servono p e q Se si `e sicuri che nessuno riesca a fattorizzare n, allora il sistema pu`o considerarsi sicuro.

Il PROBLEMA: Se non si conosce un metodo per fattorizzare un numero di 150 cifre, come faccio a costruire due numeri primi di 150 cifre?

Sicurezza Risalire da M e a M conoscendo e e n? Serve d Risalire a d conoscendo e e n? Serve φ(n) Risalire a φ(n) conoscendo n? Servono p e q Se si `e sicuri che nessuno riesca a fattorizzare n, allora il sistema pu`o considerarsi sicuro.

Il PROBLEMA: Se non si conosce un metodo per fattorizzare un numero di 150 cifre, come faccio a costruire due numeri primi di 150 cifre?

SOLUZIONE Usare numeri che sono primi con probabilit`a arbitrariamente alta (per capirci, 99.9999999999999 per cento)

Esperimento 11 Considerare due numeri primi molto grandi: p := NextPrime(10150 + 32141204312037210347210472104712 0412304712034712304712412) q := NextPrime(p + 100000)

Esperimento 11 Considerare due numeri primi molto grandi: p := NextPrime(10150 + 32141204312037210347210472104712 0412304712034712304712412) q := NextPrime(p + 100000)

Calcolarne il prodotto n

Esperimento 11 Considerare due numeri primi molto grandi: p := NextPrime(10150 + 32141204312037210347210472104712 0412304712034712304712412) q := NextPrime(p + 100000)

Calcolarne il prodotto n Provare a fattorizzare n con il comando Factorization

Esperimento 11 Considerare due numeri primi molto grandi: p := NextPrime(10150 + 32141204312037210347210472104712 0412304712034712304712412) q := NextPrime(p + 100000)

Calcolarne il prodotto n Provare a fattorizzare n con il comando Factorization Usereste questa chiave a tutela della vostra riservatezza e del vostro denaro?

Esperimento 11 Considerare due numeri primi molto grandi: p := NextPrime(10150 + 32141204312037210347210472104712 0412304712034712304712412) q := NextPrime(p + 100000)

Calcolarne il prodotto n Provare a fattorizzare n con il comando Factorization Usereste questa chiave a tutela della vostra riservatezza e del vostro denaro? Provare con questo algoritmo: trovato:=false; i:=1; while not trovato do m:=n + i 2 ; if IsSquare(m) then trovato:=true; bool,t:=IsSquare(m); t; P:=t-i; P; Q:=t+i; Q; end if; i:=i+1; end while;

Cosa `e successo?

Idea dell’algoritmo: per tentativi provare a controllare se per caso n + i 2 `e un quadrato perfetto (test veloce)

Cosa `e successo?

Idea dell’algoritmo: per tentativi provare a controllare se per caso n + i 2 `e un quadrato perfetto (test veloce) In tal caso da n + i 2 = t 2 segue n = t 2 − i 2 = (t − i ) · (t + i )

Cosa `e successo?

Idea dell’algoritmo: per tentativi provare a controllare se per caso n + i 2 `e un quadrato perfetto (test veloce) In tal caso da n + i 2 = t 2 segue n = t 2 − i 2 = (t − i ) · (t + i ) Secondo voi, quali sono le chiavi deboli per questo algoritmo?

Chiavi deboli

L’algoritmo appena visto si chiama Algoritmo di Fermat, e abbiamo visto che ha successo nel caso in cui p e q siano relativamente vicini

Chiavi deboli

L’algoritmo appena visto si chiama Algoritmo di Fermat, e abbiamo visto che ha successo nel caso in cui p e q siano relativamente vicini Ne esistono altri di algoritmi di fattorizzazione che risultano veloci se p e q hanno determinate propriet` a

Chiavi deboli

L’algoritmo appena visto si chiama Algoritmo di Fermat, e abbiamo visto che ha successo nel caso in cui p e q siano relativamente vicini Ne esistono altri di algoritmi di fattorizzazione che risultano veloci se p e q hanno determinate propriet` a Un altro esempio di chiave debole `e quella in cui p − 1 o q − 1 si fattorizzano in tanti fattori primi piccoli

Chiavi deboli

L’algoritmo appena visto si chiama Algoritmo di Fermat, e abbiamo visto che ha successo nel caso in cui p e q siano relativamente vicini Ne esistono altri di algoritmi di fattorizzazione che risultano veloci se p e q hanno determinate propriet` a Un altro esempio di chiave debole `e quella in cui p − 1 o q − 1 si fattorizzano in tanti fattori primi piccoli Per questo si tende a scegliere p = 2p1 + 1 e q = 2q1 + 1 con p1 e q1 primi

Chiavi deboli

L’algoritmo appena visto si chiama Algoritmo di Fermat, e abbiamo visto che ha successo nel caso in cui p e q siano relativamente vicini Ne esistono altri di algoritmi di fattorizzazione che risultano veloci se p e q hanno determinate propriet` a Un altro esempio di chiave debole `e quella in cui p − 1 o q − 1 si fattorizzano in tanti fattori primi piccoli Per questo si tende a scegliere p = 2p1 + 1 e q = 2q1 + 1 con p1 e q1 primi Pare che una percentuale rilevante (compresa fra 1 e 10 per cento) delle chiavi RSA sia debole

Funzioni hash L’hash (o digest) di un file ha gli stessi scopi dell’impronta digitale di un individuo. Sintetizza un individuo/file in un formato unico (160 bit per i file) Si ottiene con relativa facilit` a Praticamente impossibile data un’impronta digitale, risalire al file/individuo Praticamente impossibile dato un file/individuo, trovarne un altro con la stessa impronta Praticamente impossibile trovare due file/individui con la stessa impronta

Perch´e c’`e bisogno di una funzione hash?

Integrit` a dei dati. Trasferimenti file di grosse dimensioni (E-mule, torrent, etc).

Perch´e c’`e bisogno di una funzione hash?

Integrit` a dei dati. Trasferimenti file di grosse dimensioni (E-mule, torrent, etc). Autenticazione di un documento. Si calcola l’impronta del file ottenuto combinando documento e chiave simmetrica.

Perch´e c’`e bisogno di una funzione hash?

Integrit` a dei dati. Trasferimenti file di grosse dimensioni (E-mule, torrent, etc). Autenticazione di un documento. Si calcola l’impronta del file ottenuto combinando documento e chiave simmetrica. Firma digitale. Non si firma l’intero documento, ma la sua impronta.

Perch´e c’`e bisogno di una funzione hash?

Integrit` a dei dati. Trasferimenti file di grosse dimensioni (E-mule, torrent, etc). Autenticazione di un documento. Si calcola l’impronta del file ottenuto combinando documento e chiave simmetrica. Firma digitale. Non si firma l’intero documento, ma la sua impronta. Per questi scopi `e fondamentale che sia praticamente impossibile trovare due file con la stessa hash Una funzione hash deve essere resistente alle collisioni

Un modello ideale La funzione hash `e calcolata da un oracolo in modo totalmente oscuro, che nessuno conosce. Casuale ma riproducibile.

Un modello ideale La funzione hash `e calcolata da un oracolo in modo totalmente oscuro, che nessuno conosce. Casuale ma riproducibile.

Si cerca di riprodurre per quanto possibile il modello oracolo casuale.

Un modello ideale La funzione hash `e calcolata da un oracolo in modo totalmente oscuro, che nessuno conosce. Casuale ma riproducibile.

Si cerca di riprodurre per quanto possibile il modello oracolo casuale.

In tutti i nostri computer esistono algoritmi che simulano tale modello. Il pi` u utilizzato al momento `e SHA1. SHA=Secure Hash Algorithm FCIV - md5, sha1 nomefile.con.path in Windows, sha1sum nomefile in Linux

Un modello ideale La funzione hash `e calcolata da un oracolo in modo totalmente oscuro, che nessuno conosce. Casuale ma riproducibile.

Si cerca di riprodurre per quanto possibile il modello oracolo casuale.

In tutti i nostri computer esistono algoritmi che simulano tale modello. Il pi` u utilizzato al momento `e SHA1. SHA=Secure Hash Algorithm FCIV - md5, sha1 nomefile.con.path in Windows, sha1sum nomefile in Linux

SHA1 calcola un’impronta di 160 bit Perch´ e proprio 160 bit sono necessari per un impronta?

Il paradosso del compleanno In una classe di 23 alunni la probabilit` a che ve ne siano 2 con la stessa data di nascita supera il 50 per cento

Il paradosso del compleanno In una classe di 23 alunni la probabilit` a che ve ne siano 2 con la stessa data di nascita supera il 50 per cento In una classe di 40 alunni supera l’85 per cento

Il paradosso del compleanno In una classe di 23 alunni la probabilit` a che ve ne siano 2 con la stessa data di nascita supera il 50 per cento In una classe di 40 alunni supera l’85 per cento

Teorema 4 Sia h una funzione casuale, associata ad un file/individuo, che pu`o assumere M valori. Sia dato un insieme di √ 2M ln 2 file/individui. Allora la probabilit`a di trovare due file/individui a cui `e associato lo stesso valore supera il 50 per cento

Il paradosso del compleanno In una classe di 23 alunni la probabilit` a che ve ne siano 2 con la stessa data di nascita supera il 50 per cento In una classe di 40 alunni supera l’85 per cento

Teorema 4 Sia h una funzione casuale, associata ad un file/individuo, che pu`o assumere M valori. Sia dato un insieme di √ 2M ln 2 file/individui. Allora la probabilit`a di trovare due file/individui a cui `e associato lo stesso valore supera il 50 per cento k Se l’hash ha k bit, i possibili esiti √ di un hash sono 2 . Pertanto in un insieme di circa 2k = 2k/2 file sarebbe abbastanza probabile trovare una collisione. Per questo motivo, ad esempio, un hash di 80 bit non sarebbe sicuro.

Dimostrazione del paradosso del compleanno Si consideri un insieme di n individui. La probabilit`a di trovarne due con lo stesso compleanno `e P =1−

365 − 1 365 − 2 365 − (n − 1) · ··· . 365 365 365

Dimostrazione del paradosso del compleanno Si consideri un insieme di n individui. La probabilit`a di trovarne due con lo stesso compleanno `e P =1−

365 − 1 365 − 2 365 − (n − 1) · ··· . 365 365 365

O anche P = 1 − (1 −

1 2 (n − 1) ) · (1 − ) · · · (1 − ). 365 365 365

Dimostrazione del paradosso del compleanno Si consideri un insieme di n individui. La probabilit`a di trovarne due con lo stesso compleanno `e P =1−

365 − 1 365 − 2 365 − (n − 1) · ··· . 365 365 365

O anche P = 1 − (1 −

1 2 (n − 1) ) · (1 − ) · · · (1 − ). 365 365 365

Per capirci qualcosa occorre considerare che per numeri x vicini allo zero si ha 1 − x ∼ e −x

Dimostrazione del paradosso del compleanno Si consideri un insieme di n individui. La probabilit`a di trovarne due con lo stesso compleanno `e P =1−

365 − 1 365 − 2 365 − (n − 1) · ··· . 365 365 365

O anche P = 1 − (1 −

1 2 (n − 1) ) · (1 − ) · · · (1 − ). 365 365 365

Per capirci qualcosa occorre considerare che per numeri x vicini allo zero si ha 1 − x ∼ e −x Pertanto approssimiamo P come segue P ∼ e −1/365 · e −2/365 · e −3/365 · · · e −(n−1)/365

P ∼ e−

1+2+...+(n−1) 365

= e−

1 ·(n−1)·(n−2) 2 365

P ∼ e−

1+2+...+(n−1) 365

= e−

1 ·(n−1)·(n−2) 2 365

Eseguendo il logaritmo di ambo i membri ln P ∼ −

n2 − 3n + 2 2 · 365

P ∼ e−

1+2+...+(n−1) 365

= e−

1 ·(n−1)·(n−2) 2 365

Eseguendo il logaritmo di ambo i membri ln P ∼ −

n2 − 3n + 2 2 · 365

Ulteriore approssimazione: n2 − 3n + 2 ∼ n2 . Pertanto ln P ∼ −

n2 2 · 365

P ∼ e−

1+2+...+(n−1) 365

= e−

1 ·(n−1)·(n−2) 2 365

Eseguendo il logaritmo di ambo i membri ln P ∼ −

n2 − 3n + 2 2 · 365

Ulteriore approssimazione: n2 − 3n + 2 ∼ n2 . Pertanto ln P ∼ −

n2 2 · 365

Da qui segue l’asserto: per P = 1/2 basta n = 23.

P ∼ e−

1+2+...+(n−1) 365

= e−

1 ·(n−1)·(n−2) 2 365

Eseguendo il logaritmo di ambo i membri ln P ∼ −

n2 − 3n + 2 2 · 365

Ulteriore approssimazione: n2 − 3n + 2 ∼ n2 . Pertanto ln P ∼ −

n2 2 · 365

Da qui segue l’asserto: per P = 1/2 basta n = 23. In generale, se abbiamo M esiti (es. 2160 per SHA1) allora per avere P = 1/2 occorre ln 1/2 · 2 · M ∼ −n2 ⇒ n ∼



2 · ln 2 · M

Quale propriet`a delle derivate abbiamo usato?

Si veda fooplot.com

Il Teorema del Quinto A

Il Teorema del Quinto A Esperimento: scrivere tutti gli elementi invertibili di Zn :

Il Teorema del Quinto A Esperimento: scrivere tutti gli elementi invertibili di Zn : n = 10 1, 3, 7, 9 n = 15 1, 2, 4, 7, 8, 11, 13, 14 n = 22 1, 3, 5, 7, 9, 13, 15, 17, 19, 21

Il Teorema del Quinto A Esperimento: scrivere tutti gli elementi invertibili di Zn : n = 10 1, 3, 7, 9 n = 15 1, 2, 4, 7, 8, 11, 13, 14 n = 22 1, 3, 5, 7, 9, 13, 15, 17, 19, 21 Osservazione: la somma degli elementi invertibili di Zn `e divisibile per n

Il Teorema del Quinto A Esperimento: scrivere tutti gli elementi invertibili di Zn : n = 10 1, 3, 7, 9 n = 15 1, 2, 4, 7, 8, 11, 13, 14 n = 22 1, 3, 5, 7, 9, 13, 15, 17, 19, 21 Osservazione: la somma degli elementi invertibili di Zn `e divisibile per n Congettura: per ogni intero positivo n > 1, X a = 0 (mod n) a∈Zn ,MCD(a,n)=1

Dimostrazione: 1

2

Se MCD(a, n) = 1 allora anche MCD(n − a, n) = 1. Infatti ogni divisore d di n − a e n sarebbe un divisore di −a e quindi di a Siano a1 , . . . , as sono gli elementi di Zn primi con n e minori di n/2. Allora tutti gli elementi di Zn primi con n sono a1 , . . . , as , n − a1 , . . . , n − as

3

Pertanto la somma totale `e uguale a a1 + . . . + as + n − a1 + . . . + n − as = n + . . . + n = 0 (mod n)

Dimostrazione: 1

2

Se MCD(a, n) = 1 allora anche MCD(n − a, n) = 1. Infatti ogni divisore d di n − a e n sarebbe un divisore di −a e quindi di a Siano a1 , . . . , as sono gli elementi di Zn primi con n e minori di n/2. Allora tutti gli elementi di Zn primi con n sono a1 , . . . , as , n − a1 , . . . , n − as

3

Pertanto la somma totale `e uguale a a1 + . . . + as + n − a1 + . . . + n − as = n + . . . + n = 0 (mod n)

Teorema 5 Per ogni intero positivo n > 1, X a∈Zn ,MCD(a,n)=1

a=0

(mod n)

La firma digitale Idea: la firma di un documento consiste nel mascherare il documento con la propria chiave privata

La firma digitale Idea: la firma di un documento consiste nel mascherare il documento con la propria chiave privata Firma digitale RSA: chiave pubblica di Alice (n, e), chiave privata (p, q, d) con n = p · q e e · d = 1 (mod φ(n))

La firma digitale Idea: la firma di un documento consiste nel mascherare il documento con la propria chiave privata Firma digitale RSA: chiave pubblica di Alice (n, e), chiave privata (p, q, d) con n = p · q e e · d = 1 (mod φ(n)) Documento da firmare: D ∈ Zn

La firma digitale Idea: la firma di un documento consiste nel mascherare il documento con la propria chiave privata Firma digitale RSA: chiave pubblica di Alice (n, e), chiave privata (p, q, d) con n = p · q e e · d = 1 (mod φ(n)) Documento da firmare: D ∈ Zn Firma del documento: F = D d (mod n) ∈ Zn

La firma digitale Idea: la firma di un documento consiste nel mascherare il documento con la propria chiave privata Firma digitale RSA: chiave pubblica di Alice (n, e), chiave privata (p, q, d) con n = p · q e e · d = 1 (mod φ(n)) Documento da firmare: D ∈ Zn Firma del documento: F = D d (mod n) ∈ Zn Documento firmato: (D, F ) con F = D d (mod n)

La firma digitale Idea: la firma di un documento consiste nel mascherare il documento con la propria chiave privata Firma digitale RSA: chiave pubblica di Alice (n, e), chiave privata (p, q, d) con n = p · q e e · d = 1 (mod φ(n)) Documento da firmare: D ∈ Zn Firma del documento: F = D d (mod n) ∈ Zn Documento firmato: (D, F ) con F = D d (mod n) Verifica della firma: Fe = D

(mod n)

???

La firma digitale Idea: la firma di un documento consiste nel mascherare il documento con la propria chiave privata Firma digitale RSA: chiave pubblica di Alice (n, e), chiave privata (p, q, d) con n = p · q e e · d = 1 (mod φ(n)) Documento da firmare: D ∈ Zn Firma del documento: F = D d (mod n) ∈ Zn Documento firmato: (D, F ) con F = D d (mod n) Verifica della firma: Fe = D

(mod n)

???

Il punto chiave `e che se F e = D (mod n), allora (F e )d = D d (mod n) e quindi per il Teorema di Eulero F = D d (mod n).

La firma digitale Idea: la firma di un documento consiste nel mascherare il documento con la propria chiave privata Firma digitale RSA: chiave pubblica di Alice (n, e), chiave privata (p, q, d) con n = p · q e e · d = 1 (mod φ(n)) Documento da firmare: D ∈ Zn Firma del documento: F = D d (mod n) ∈ Zn Documento firmato: (D, F ) con F = D d (mod n) Verifica della firma: Fe = D

(mod n)

???

Il punto chiave `e che se F e = D (mod n), allora (F e )d = D d (mod n) e quindi per il Teorema di Eulero F = D d (mod n). Ma solo Alice conosce d

Falsificazioni firma digitale RSA Se faccio finta di essere Alice e spedisco (F e , F ), allora la verifica della firma `e accettata: Fe = Fe

(mod n)

Falsificazioni firma digitale RSA Se faccio finta di essere Alice e spedisco (F e , F ), allora la verifica della firma `e accettata: Fe = Fe

(mod n)

F e probabilmente `e un documento senza senso.

Falsificazioni firma digitale RSA Se faccio finta di essere Alice e spedisco (F e , F ), allora la verifica della firma `e accettata: Fe = Fe

(mod n)

F e probabilmente `e un documento senza senso. Se ho due documenti firmati da Alice, diciamo (D1 , F1 ) e (D2 , F2 ), e faccio finta di essere Alice e spedisco (D1 · D2 , F1 · F2 ), allora la verifica della firma `e accettata: (F1 · F2 )e = F1e · F2e = D1 · D2

(mod n)

Falsificazioni firma digitale RSA Se faccio finta di essere Alice e spedisco (F e , F ), allora la verifica della firma `e accettata: Fe = Fe

(mod n)

F e probabilmente `e un documento senza senso. Se ho due documenti firmati da Alice, diciamo (D1 , F1 ) e (D2 , F2 ), e faccio finta di essere Alice e spedisco (D1 · D2 , F1 · F2 ), allora la verifica della firma `e accettata: (F1 · F2 )e = F1e · F2e = D1 · D2

(mod n)

D1 · D2 probabilmente `e un documento senza senso.

Falsificazioni firma digitale RSA Se faccio finta di essere Alice e spedisco (F e , F ), allora la verifica della firma `e accettata: Fe = Fe

(mod n)

F e probabilmente `e un documento senza senso. Se ho due documenti firmati da Alice, diciamo (D1 , F1 ) e (D2 , F2 ), e faccio finta di essere Alice e spedisco (D1 · D2 , F1 · F2 ), allora la verifica della firma `e accettata: (F1 · F2 )e = F1e · F2e = D1 · D2

(mod n)

D1 · D2 probabilmente `e un documento senza senso. La facilit`a di ottenere firme false `e un problema

Falsificazioni firma digitale RSA Se faccio finta di essere Alice e spedisco (F e , F ), allora la verifica della firma `e accettata: Fe = Fe

(mod n)

F e probabilmente `e un documento senza senso. Se ho due documenti firmati da Alice, diciamo (D1 , F1 ) e (D2 , F2 ), e faccio finta di essere Alice e spedisco (D1 · D2 , F1 · F2 ), allora la verifica della firma `e accettata: (F1 · F2 )e = F1e · F2e = D1 · D2

(mod n)

D1 · D2 probabilmente `e un documento senza senso. La facilit`a di ottenere firme false `e un problema Un altro problema `e che un documento/file non sempre pu`o non essere rappresentato da un elemento di Zn (es.: DVD PS3)

Falsificazioni firma digitale RSA Se faccio finta di essere Alice e spedisco (F e , F ), allora la verifica della firma `e accettata: Fe = Fe

(mod n)

F e probabilmente `e un documento senza senso. Se ho due documenti firmati da Alice, diciamo (D1 , F1 ) e (D2 , F2 ), e faccio finta di essere Alice e spedisco (D1 · D2 , F1 · F2 ), allora la verifica della firma `e accettata: (F1 · F2 )e = F1e · F2e = D1 · D2

(mod n)

D1 · D2 probabilmente `e un documento senza senso. La facilit`a di ottenere firme false `e un problema Un altro problema `e che un documento/file non sempre pu`o non essere rappresentato da un elemento di Zn (es.: DVD PS3) Soluzione: utilizzo funzioni hash

Firma digitale SHA1-RSA Firma digitale SHA1-RSA: chiave pubblica (n, e), chiave privata (p, q, d) con n = p · q e e · d = 1 (mod φ(n))

Firma digitale SHA1-RSA Firma digitale SHA1-RSA: chiave pubblica (n, e), chiave privata (p, q, d) con n = p · q e e · d = 1 (mod φ(n)) Documento da firmare da Alice: D, file di dimensione praticamente arbitraria

Firma digitale SHA1-RSA Firma digitale SHA1-RSA: chiave pubblica (n, e), chiave privata (p, q, d) con n = p · q e e · d = 1 (mod φ(n)) Documento da firmare da Alice: D, file di dimensione praticamente arbitraria Si calcola l’hash di D con l’algoritmo SHA1, diciamo H(D), e lo si interpreta come elemento di Zn

Firma digitale SHA1-RSA Firma digitale SHA1-RSA: chiave pubblica (n, e), chiave privata (p, q, d) con n = p · q e e · d = 1 (mod φ(n)) Documento da firmare da Alice: D, file di dimensione praticamente arbitraria Si calcola l’hash di D con l’algoritmo SHA1, diciamo H(D), e lo si interpreta come elemento di Zn Firma del documento: F = H(D)d (mod n) ∈ Zn

Firma digitale SHA1-RSA Firma digitale SHA1-RSA: chiave pubblica (n, e), chiave privata (p, q, d) con n = p · q e e · d = 1 (mod φ(n)) Documento da firmare da Alice: D, file di dimensione praticamente arbitraria Si calcola l’hash di D con l’algoritmo SHA1, diciamo H(D), e lo si interpreta come elemento di Zn Firma del documento: F = H(D)d (mod n) ∈ Zn

Documento firmato: (D, F ) con F = H(D)d (mod n)

Firma digitale SHA1-RSA Firma digitale SHA1-RSA: chiave pubblica (n, e), chiave privata (p, q, d) con n = p · q e e · d = 1 (mod φ(n)) Documento da firmare da Alice: D, file di dimensione praticamente arbitraria Si calcola l’hash di D con l’algoritmo SHA1, diciamo H(D), e lo si interpreta come elemento di Zn Firma del documento: F = H(D)d (mod n) ∈ Zn

Documento firmato: (D, F ) con F = H(D)d (mod n) Verifica della firma: F e = H(D)

(mod n) ???

Firma digitale SHA1-RSA Firma digitale SHA1-RSA: chiave pubblica (n, e), chiave privata (p, q, d) con n = p · q e e · d = 1 (mod φ(n)) Documento da firmare da Alice: D, file di dimensione praticamente arbitraria Si calcola l’hash di D con l’algoritmo SHA1, diciamo H(D), e lo si interpreta come elemento di Zn Firma del documento: F = H(D)d (mod n) ∈ Zn

Documento firmato: (D, F ) con F = H(D)d (mod n) Verifica della firma: F e = H(D)

(mod n) ???

Il punto chiave `e che se F e = H(D) (mod n), allora (F e )d = H(D)d (mod n) e quindi per il Teorema di Eulero F = H(D)d (mod n). Ma solo Alice conosce d.

Falsificazioni di SHA1-RSA?

(F e , F ) non `e accettato perch`e F non `e l’hash di F . Dovrei trovare un file che abbia come impronta F , ma come sappiamo `e praticamente impossibile.

Falsificazioni di SHA1-RSA?

(F e , F ) non `e accettato perch`e F non `e l’hash di F . Dovrei trovare un file che abbia come impronta F , ma come sappiamo `e praticamente impossibile. Allo stesso modo, non `e pi` u accettata (D1 D2 , F1 F2 ) perch´e H(D1 D2 )d 6= H(D1 )d H(D2 )d = F1 F2

Firma digitale in pratica www.digitpa.gov.it “Per dotarsi di firma digitale necessario rivolgersi ai certificatori accreditati autorizzati da DigitPA che garantiscono lidentit` a dei soggetti che utilizzano la firma digitale.”

Firma digitale in pratica www.digitpa.gov.it “Per dotarsi di firma digitale necessario rivolgersi ai certificatori accreditati autorizzati da DigitPA che garantiscono lidentit` a dei soggetti che utilizzano la firma digitale.” http://www.digitpa.gov.it/firma-digitale/certificatoriaccreditati/certificatori-attivi Esempio forse pi` u conosciuto in TV: Aruba. (http://www.pec.it/FirmaDigitale.aspx)

Firma digitale in pratica www.digitpa.gov.it “Per dotarsi di firma digitale necessario rivolgersi ai certificatori accreditati autorizzati da DigitPA che garantiscono lidentit` a dei soggetti che utilizzano la firma digitale.” http://www.digitpa.gov.it/firma-digitale/certificatoriaccreditati/certificatori-attivi Esempio forse pi` u conosciuto in TV: Aruba. (http://www.pec.it/FirmaDigitale.aspx) http://www.digitpa.gov.it/firma-elettronica/liste-certificati Ogni Autorit`a di Certificazione `e a sua volta Certificata dal Governo/Unione Europea.

Firma digitale in pratica Alice si reca fisicamente dalla Certification Authority.

Firma digitale in pratica Alice si reca fisicamente dalla Certification Authority. La Certification Authority riconosce l’identit` a di Alice e le rilascia una chiavetta usb e un PIN.

Firma digitale in pratica Alice si reca fisicamente dalla Certification Authority. La Certification Authority riconosce l’identit` a di Alice e le rilascia una chiavetta usb e un PIN. La chiavetta USB contiene:

Firma digitale in pratica Alice si reca fisicamente dalla Certification Authority. La Certification Authority riconosce l’identit` a di Alice e le rilascia una chiavetta usb e un PIN. La chiavetta USB contiene: La chiave privata p, q, d di Alice

Firma digitale in pratica Alice si reca fisicamente dalla Certification Authority. La Certification Authority riconosce l’identit` a di Alice e le rilascia una chiavetta usb e un PIN. La chiavetta USB contiene: La chiave privata p, q, d di Alice Il certificato di Alice. Il certificato C di Alice contiene la chiave pubblica n, e di Alice, ed `e firmato dalla Certification Authority

Firma digitale in pratica Alice si reca fisicamente dalla Certification Authority. La Certification Authority riconosce l’identit` a di Alice e le rilascia una chiavetta usb e un PIN. La chiavetta USB contiene: La chiave privata p, q, d di Alice Il certificato di Alice. Il certificato C di Alice contiene la chiave pubblica n, e di Alice, ed `e firmato dalla Certification Authority

Quando Alice vuole firmare un file inserisce la chiavetta e avvia il programma di firma inserendo il PIN. Il risultato `e un file .p7m che contiene:

Firma digitale in pratica Alice si reca fisicamente dalla Certification Authority. La Certification Authority riconosce l’identit` a di Alice e le rilascia una chiavetta usb e un PIN. La chiavetta USB contiene: La chiave privata p, q, d di Alice Il certificato di Alice. Il certificato C di Alice contiene la chiave pubblica n, e di Alice, ed `e firmato dalla Certification Authority

Quando Alice vuole firmare un file inserisce la chiavetta e avvia il programma di firma inserendo il PIN. Il risultato `e un file .p7m che contiene: Il documento D (esempio file .doc o file .pdf)

Firma digitale in pratica Alice si reca fisicamente dalla Certification Authority. La Certification Authority riconosce l’identit` a di Alice e le rilascia una chiavetta usb e un PIN. La chiavetta USB contiene: La chiave privata p, q, d di Alice Il certificato di Alice. Il certificato C di Alice contiene la chiave pubblica n, e di Alice, ed `e firmato dalla Certification Authority

Quando Alice vuole firmare un file inserisce la chiavetta e avvia il programma di firma inserendo il PIN. Il risultato `e un file .p7m che contiene: Il documento D (esempio file .doc o file .pdf) La firma F = SHA1(D)d (mod n)

Firma digitale in pratica Alice si reca fisicamente dalla Certification Authority. La Certification Authority riconosce l’identit` a di Alice e le rilascia una chiavetta usb e un PIN. La chiavetta USB contiene: La chiave privata p, q, d di Alice Il certificato di Alice. Il certificato C di Alice contiene la chiave pubblica n, e di Alice, ed `e firmato dalla Certification Authority

Quando Alice vuole firmare un file inserisce la chiavetta e avvia il programma di firma inserendo il PIN. Il risultato `e un file .p7m che contiene: Il documento D (esempio file .doc o file .pdf) La firma F = SHA1(D)d (mod n) Il certificato C di Alice (quindi la chiave pubblica di Alice e la firma della Certification Authority)

Firma digitale in pratica Bob riceve il file contratto.pdf.p7m, che consiste di D =contratto.pdf, F, C Quali passi compie per verificare la firma di Alice?

Firma digitale in pratica Bob riceve il file contratto.pdf.p7m, che consiste di D =contratto.pdf, F, C Quali passi compie per verificare la firma di Alice? Controlla la firma del certificato: deve essere sicuro che il certificato C sia stato firmato da una Certification Authority. Il browser si collega al sito governativo dove `e sicuro di trovare la VERA chiave pubblica della Certification Authority. Tale chiave pubblica `e ci` o che serve per controllare l’autenticit`a del certificato.

Firma digitale in pratica Bob riceve il file contratto.pdf.p7m, che consiste di D =contratto.pdf, F, C Quali passi compie per verificare la firma di Alice? Controlla la firma del certificato: deve essere sicuro che il certificato C sia stato firmato da una Certification Authority. Il browser si collega al sito governativo dove `e sicuro di trovare la VERA chiave pubblica della Certification Authority. Tale chiave pubblica `e ci` o che serve per controllare l’autenticit`a del certificato. Dopo aver controllato il certificato, Bob `e sicuro che la chiave pubblica di Alice `e quella riportata nel certificato stesso. Quindi

Firma digitale in pratica Bob riceve il file contratto.pdf.p7m, che consiste di D =contratto.pdf, F, C Quali passi compie per verificare la firma di Alice? Controlla la firma del certificato: deve essere sicuro che il certificato C sia stato firmato da una Certification Authority. Il browser si collega al sito governativo dove `e sicuro di trovare la VERA chiave pubblica della Certification Authority. Tale chiave pubblica `e ci` o che serve per controllare l’autenticit`a del certificato. Dopo aver controllato il certificato, Bob `e sicuro che la chiave pubblica di Alice `e quella riportata nel certificato stesso. Quindi Calcola l’impronta di D =contratto.pdf: SHA1(D)

Firma digitale in pratica Bob riceve il file contratto.pdf.p7m, che consiste di D =contratto.pdf, F, C Quali passi compie per verificare la firma di Alice? Controlla la firma del certificato: deve essere sicuro che il certificato C sia stato firmato da una Certification Authority. Il browser si collega al sito governativo dove `e sicuro di trovare la VERA chiave pubblica della Certification Authority. Tale chiave pubblica `e ci` o che serve per controllare l’autenticit`a del certificato. Dopo aver controllato il certificato, Bob `e sicuro che la chiave pubblica di Alice `e quella riportata nel certificato stesso. Quindi Calcola l’impronta di D =contratto.pdf: SHA1(D) Calcola SHA1(D)e

Firma digitale in pratica Bob riceve il file contratto.pdf.p7m, che consiste di D =contratto.pdf, F, C Quali passi compie per verificare la firma di Alice? Controlla la firma del certificato: deve essere sicuro che il certificato C sia stato firmato da una Certification Authority. Il browser si collega al sito governativo dove `e sicuro di trovare la VERA chiave pubblica della Certification Authority. Tale chiave pubblica `e ci` o che serve per controllare l’autenticit`a del certificato. Dopo aver controllato il certificato, Bob `e sicuro che la chiave pubblica di Alice `e quella riportata nel certificato stesso. Quindi Calcola l’impronta di D =contratto.pdf: SHA1(D) Calcola SHA1(D)e Controlla che SHA1(D)e = F

Codici autocorrettori Da Wikipedia Error Detection and Correction:

Many communication channels are subject to channel noise, and thus errors may be introduced during transmission from the source to a receiver. Error detection techniques allow detecting such errors, while error correction enables reconstruction of the original data. Development of error-correction codes was tightly coupled with the history of deep-space missions due to the extreme dilution of signal power over interplanetary distances, and the limited power availability aboard space probes. Whereas early missions sent their data uncoded, starting from 1968 digital error correction was implemented. The Reed-Muller code was well suited to the noise the spacecraft was subject to (approximately matching a bell curve), and was implemented at the Mariner spacecraft for missions between 1969 and 1977. The Voyager 1 and Voyager 2 missions, which started in 1977, were designed to deliver color imaging amongst scientific information of Jupiter and Saturn. This resulted in increased coding requirements, and thus the spacecraft were supported by (optimally Viterbi-decoded) convolutional codes that could be concatenated with an outer Golay (24,12,8) code. The Voyager 2 probe additionally supported an implementation of a Reed-Solomon code: the concatenated Reed-Solomon-Viterbi (RSV) code allowed for very powerful error correction, and enabled the spacecraft’s extended journey to Uranus and Neptune. The CCSDS currently recommends usage of error correction codes with performance similar to the Voyager 2 RSV code as a minimum. Concatenated codes are increasingly falling out of favor with space missions, and are replaced by more powerful codes such as Turbo codes or LDPC codes.

Un esempio elementare

N E O S

0 0 1 1

0 1 0 1

Un esempio elementare

N E O S

0 0 1 1

0 1 0 1

0 1 1 0

Un esempio elementare

N E O S

0 0 1 1

0 1 0 1

0 1 1 0

0 1 0 1

0 0 1 1

Un esempio elementare

N E O S

0 0 1 1

0 1 0 1

0 1 1 0

0 1 0 1

0 0 1 1

Un qualunque errore pu`o essere corretto automaticamente!

Un esempio elementare

N E O S

0 0 1 1

0 1 0 1

0 1 1 0

0 1 0 1

0 0 1 1

Un qualunque errore pu`o essere corretto automaticamente!

Idea: Codificare le parole del nostro linguaggio in modo tale che siano tutte abbastanza diverse fra loro

Alfabeto: Zp , p primo

Alfabeto: Zp , p primo Parole del codice: alcune sequenze di n lettere dell’alfabeto

Alfabeto: Zp , p primo Parole del codice: alcune sequenze di n lettere dell’alfabeto Distanza di due parole: d((a1 , a2 , . . . , an ), (b1 , b2 , . . . , bn )) = #{i = 1, . . . , n | ai 6= bi }

Alfabeto: Zp , p primo Parole del codice: alcune sequenze di n lettere dell’alfabeto Distanza di due parole: d((a1 , a2 , . . . , an ), (b1 , b2 , . . . , bn )) = #{i = 1, . . . , n | ai 6= bi } Esempi: d((1, 2, 3), (0, 2, 3)) = 1,

d((0, 2, 3, 0), (1, 2, 1, 0)) = 2

Alfabeto: Zp , p primo Parole del codice: alcune sequenze di n lettere dell’alfabeto Distanza di due parole: d((a1 , a2 , . . . , an ), (b1 , b2 , . . . , bn )) = #{i = 1, . . . , n | ai 6= bi } Esempi: d((1, 2, 3), (0, 2, 3)) = 1,

d((0, 2, 3, 0), (1, 2, 1, 0)) = 2

Teorema 6 Se la distanza minima di due parole del codice `e D, allora il codice corregge fino a (D − 1)/2-errori

Codici di Reed-Solomon (versione soft) Si fissano k < m < p, con p primo

Codici di Reed-Solomon (versione soft) Si fissano k < m < p, con p primo Alfabeto: Zp , lunghezza delle parole: m

Codici di Reed-Solomon (versione soft) Si fissano k < m < p, con p primo Alfabeto: Zp , lunghezza delle parole: m Ogni parola `e associata a un polinomio f (X ) = a0 + a1 X + a2 X 2 + . . . + ak X k a coefficienti in Zp e grado minore o uguale di k: C = {(f (1), f (2), . . . f (m)) | f polinomio con deg(f ) ≤ k}

Codici di Reed-Solomon (versione soft) Si fissano k < m < p, con p primo Alfabeto: Zp , lunghezza delle parole: m Ogni parola `e associata a un polinomio f (X ) = a0 + a1 X + a2 X 2 + . . . + ak X k a coefficienti in Zp e grado minore o uguale di k: C = {(f (1), f (2), . . . f (m)) | f polinomio con deg(f ) ≤ k}

Teorema 7 (Ruffini) Un polinomio di grado k non nullo ha al massimo k radici.

Esempio: p = 7, m = 4, k = 2

Esempio: p = 7, m = 4, k = 2 Esempi di parole:

f (X ) = 1 + X 2 → (1 + 12 , 1 + 22 , 1 + 32 , 1 + 42 ) = (2, 5, 3, 3)

f (X ) = 1 + X + X 2 → ...

(3, 0, 6, 0) ...

Esempio: p = 7, m = 4, k = 2 Esempi di parole:

f (X ) = 1 + X 2 → (1 + 12 , 1 + 22 , 1 + 32 , 1 + 42 ) = (2, 5, 3, 3)

f (X ) = 1 + X + X 2 → ...

(3, 0, 6, 0) ...

Quanti errori si possono correggere con un codice di Reed-Solomon?

Esempio: p = 7, m = 4, k = 2 Esempi di parole:

f (X ) = 1 + X 2 → (1 + 12 , 1 + 22 , 1 + 32 , 1 + 42 ) = (2, 5, 3, 3)

f (X ) = 1 + X + X 2 → ...

(3, 0, 6, 0) ...

Quanti errori si possono correggere con un codice di Reed-Solomon? d((f (1), f (2), . . . , f (m)), (g (1), g (2), . . . , g (m))) `e uguale a m meno il numero di valori i = 1, . . . , m per cui (f − g )(i ) = 0

Esempio: p = 7, m = 4, k = 2 Esempi di parole:

f (X ) = 1 + X 2 → (1 + 12 , 1 + 22 , 1 + 32 , 1 + 42 ) = (2, 5, 3, 3)

f (X ) = 1 + X + X 2 → ...

(3, 0, 6, 0) ...

Quanti errori si possono correggere con un codice di Reed-Solomon? d((f (1), f (2), . . . , f (m)), (g (1), g (2), . . . , g (m))) `e uguale a m meno il numero di valori i = 1, . . . , m per cui (f − g )(i ) = 0 Quante radici al massimo pu`o avere f − g ?

Esempio: p = 7, m = 4, k = 2 Esempi di parole:

f (X ) = 1 + X 2 → (1 + 12 , 1 + 22 , 1 + 32 , 1 + 42 ) = (2, 5, 3, 3)

f (X ) = 1 + X + X 2 → ...

(3, 0, 6, 0) ...

Quanti errori si possono correggere con un codice di Reed-Solomon? d((f (1), f (2), . . . , f (m)), (g (1), g (2), . . . , g (m))) `e uguale a m meno il numero di valori i = 1, . . . , m per cui (f − g )(i ) = 0 Quante radici al massimo pu`o avere f − g ? k

Esempio: p = 7, m = 4, k = 2 Esempi di parole:

f (X ) = 1 + X 2 → (1 + 12 , 1 + 22 , 1 + 32 , 1 + 42 ) = (2, 5, 3, 3)

f (X ) = 1 + X + X 2 → ...

(3, 0, 6, 0) ...

Quanti errori si possono correggere con un codice di Reed-Solomon? d((f (1), f (2), . . . , f (m)), (g (1), g (2), . . . , g (m))) `e uguale a m meno il numero di valori i = 1, . . . , m per cui (f − g )(i ) = 0 Quante radici al massimo pu`o avere f − g ? k Pertanto D ≥ m − k e quindi il codice di Reed-Solomon corregge fino a (m − k)/2 errori!