la matematica dell’orologiogiuliet/miplezione1.pdfla matematica dell’orologio un’aritmetica...

Post on 28-May-2020

2 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

La matematica dell’orologioUn’aritmetica inusuale:

I numeri del nostro ambiente sono: 0, 1, 2, . . . , 11 ecorrispondono alle ore di un nostro orologio

Le operazioni sono intese in questo modo:1 somma: a+ b e l’ora che si ottiene spostando la lancetta dalla

posizione a in avanti di b ore;2 prodotto: a · b e l’ora che si ottiene sommando a a se stessa b

volte.

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

La matematica dell’orologioUn’aritmetica inusuale:

I numeri del nostro ambiente sono: 0, 1, 2, . . . , 11 ecorrispondono alle ore di un nostro orologio

Le operazioni sono intese in questo modo:1 somma: a+ b e l’ora che si ottiene spostando la lancetta dalla

posizione a in avanti di b ore;2 prodotto: a · b e l’ora che si ottiene sommando a a se stessa b

volte.

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

Esercizio 1

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

La matematica dell’orologioUn’aritmetica inusuale:

I numeri del nostro ambiente sono: 0, 1, 2, . . . , 11 ecorrispondono alle ore di un nostro orologio

Le operazioni sono intese in questo modo:1 somma: a+ b e l’ora che si ottiene spostando la lancetta dalla

posizione a in avanti di b ore;2 prodotto: a · b e l’ora che si ottiene sommando a a se stessa b

volte.

I risultati nella matematica dell’orologio vengono distinti dagli altrimediante 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 dia · b (mod 12) che non faccia uso dell’orologio.

Problema 1

Provare a dare una definizione matematica di a+ b (mod 12) e dia · 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 dia · 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 senzacalcolatrice

Problema 1

Provare a dare una definizione matematica di a+ b (mod 12) e dia · 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 senzacalcolatrice

Idea chiave: elevare a potenza nella matematica dell’orologio puoessere un’operazione molto piu veloce di quello che si potrebbeimmaginare

Generalizziamo: Aritmetica modulareNon c’e niente di speciale nel numero 12. Sostituiamolo con unnumero intero n qualsiasi, purche maggiore di 1.

I numeri del nostro ambiente sono: 0, 1, 2, . . . , n − 1

Le operazioni sono intese in questo modo:1 a+ b (mod n) e il resto della divisione di a + b per n;2 a · b (mod n) e il resto della divisione di a · b per n.

Generalizziamo: Aritmetica modulareNon c’e niente di speciale nel numero 12. Sostituiamolo con unnumero intero n qualsiasi, purche maggiore di 1.

I numeri del nostro ambiente sono: 0, 1, 2, . . . , n − 1

Le operazioni sono intese in questo modo:1 a+ b (mod n) e il resto della divisione di a + b per n;2 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 modulareNon c’e niente di speciale nel numero 12. Sostituiamolo con unnumero intero n qualsiasi, purche maggiore di 1.

I numeri del nostro ambiente sono: 0, 1, 2, . . . , n − 1

Le operazioni sono intese in questo modo:1 a+ b (mod n) e il resto della divisione di a + b per n;2 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 modulareNon c’e niente di speciale nel numero 12. Sostituiamolo con unnumero intero n qualsiasi, purche maggiore di 1.

I numeri del nostro ambiente sono: 0, 1, 2, . . . , n − 1

Le operazioni sono intese in questo modo:1 a+ b (mod n) e il resto della divisione di a + b per n;2 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 0B 1C 2D 3E 4F 5G 6H 7I 8L 9M 10N 11O 12P 13Q 14R 15S 16T 17U 18V 19Z 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 seguentichiavi: (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 seguentichiavi: (3, 0), (3, 1), (2, 0), (2, 1). Discutere i risultati ottenuti.

Perche le chiavi con a = 3 non sono adeguate mentre quellecon a = 2 sı?

Esperimento 1

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

Perche le chiavi con a = 3 non sono adeguate mentre quellecon 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 seguentichiavi: (3, 0), (3, 1), (2, 0), (2, 1). Discutere i risultati ottenuti.

Perche le chiavi con a = 3 non sono adeguate mentre quellecon 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 seguentichiavi: (3, 0), (3, 1), (2, 0), (2, 1). Discutere i risultati ottenuti.

Perche le chiavi con a = 3 non sono adeguate mentre quellecon 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 diformulare al riguardo? Come si distinguono le chiavi valide daquelle non valide (se necessario, provate anche altre chiavi!)

Esperimento 1

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

Perche le chiavi con a = 3 non sono adeguate mentre quellecon 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 diformulare al riguardo? Come si distinguono le chiavi valide daquelle 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 seguentichiavi: (3, 0), (3, 1), (2, 0), (2, 1). Discutere i risultati ottenuti.

Perche le chiavi con a = 3 non sono adeguate mentre quellecon 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 diformulare al riguardo? Come si distinguono le chiavi valide daquelle 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. Cio e implica MCD(a, 21) = 1. Viceversa, se

MCD(a, 21) = 1 allora ax1 = ax2 non puo mai verificarsi dato che 21 divide a(x1 − x2)

Cifrario affine

Testi in chiaro: Z21

Testi cifrati: Z21

Chiavi: A× Z21 doveA = {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 doveA = {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 conun cifrario affine:lo qtpobzh avb pmt eohvdo ctznvt od rmtcgh ponbvgoztdgh ntv sbnvhccozb stuohdtlink verifica: www.dmi.unipg.it/giuliet/MIP.txt

La divisione in Zn

.Abbiamo visto che in Z21 vale la seguente proprieta: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 proprieta:MCD(a, 21) = 1 ⇔ esiste b in Z21 con ab = 1 (mod 21)

E facile dimostrare che la stessa proprieta 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 proprieta:MCD(a, 21) = 1 ⇔ esiste b in Z21 con ab = 1 (mod 21)

E facile dimostrare che la stessa proprieta 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:1aesiste se e solo se MCD(a, n) = 1

La divisione in Zn

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

E facile dimostrare che la stessa proprieta 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:1aesiste 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 proprieta:MCD(a, 21) = 1 ⇔ esiste b in Z21 con ab = 1 (mod 21)

E facile dimostrare che la stessa proprieta 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:1aesiste se e solo se MCD(a, n) = 1

Problema: come calcolare 1/a?

Esperimento 2

Calcolare (se possibile):12 in Z23

14 in Z9

12 in Z22

13 in Z22

Un metodo piu veloce: l’algoritmo euclideo

n dividendo; a divisoredivisione euclidea: n = qa + r con 0 ≤ r ≤ a− 1poniamo q := q0 e r := r1

Un metodo piu veloce: l’algoritmo euclideo

n dividendo; a divisoredivisione euclidea: n = qa + r con 0 ≤ r ≤ a− 1poniamo q := q0 e r := r1

Passi successivi:a = q1r1 + r2r1 = q2r2 + r3r2 = q3r3 + r4. . .ri−1 = qi ri + ri+1

. . .

Un metodo piu veloce: l’algoritmo euclideo

n dividendo; a divisoredivisione euclidea: n = qa + r con 0 ≤ r ≤ a− 1poniamo q := q0 e r := r1

Passi successivi:a = q1r1 + r2r1 = q2r2 + r3r2 = q3r3 + r4. . .ri−1 = qi ri + ri+1

. . .

Ad un certo punto il resto diventa uguale a 0. L’ultimo restonon nullo e il Massimo Comun Divisore di n e a.

Un metodo piu veloce: l’algoritmo euclideo

n dividendo; a divisoredivisione euclidea: n = qa + r con 0 ≤ r ≤ a− 1poniamo q := q0 e r := r1

Passi successivi:a = q1r1 + r2r1 = q2r2 + r3r2 = q3r3 + r4. . .ri−1 = qi ri + ri+1

. . .

Ad un certo punto il resto diventa uguale a 0. L’ultimo restonon nullo e il Massimo Comun Divisore di n e a.

Nel caso in cui MCD(n, a) = 1 e facile trovare x , y tali che1 = nx + ay .

Un metodo piu veloce: l’algoritmo euclideo

n dividendo; a divisoredivisione euclidea: n = qa + r con 0 ≤ r ≤ a− 1poniamo q := q0 e r := r1

Passi successivi:a = q1r1 + r2r1 = q2r2 + r3r2 = q3r3 + r4. . .ri−1 = qi ri + ri+1

. . .

Ad un certo punto il resto diventa uguale a 0. L’ultimo restonon nullo e il Massimo Comun Divisore di n e a.

Nel caso in cui MCD(n, a) = 1 e facile trovare x , y tali che1 = nx + ay .

Conseguenza: y mod n e proprio 1/a in Zn

EsempioCome trovare l’inverso di 12 in Z53?

EsempioCome trovare l’inverso di 12 in Z53?Algoritmo euclideo53 = 4 · 12 + 512 = 2 · 5 + 25 = 2 · 2 + 12 = 2 · 1 + 0

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

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

−22 · 12 = 1 (mod 53) ⇒ 1

12= −22 = 31 (mod 53)

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

−22 · 12 = 1 (mod 53) ⇒ 1

12= −22 = 31 (mod 53)

Gara 3

Determinare 1/11 in Z63

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 piugrandi e il numero di divisioni effettuate.

Quanti passi vi aspettavate in teoria? (ordine di grandezzarispetto a b)

Esperimento 3

Calcolare con MAGMA i MCD di coppie di numeri sempre piugrandi e il numero di divisioni effettuate.

Quanti passi vi aspettavate in teoria? (ordine di grandezzarispetto a b)

Quanti passi sono stati necessari in realta?

Esperimento 3

Calcolare con MAGMA i MCD di coppie di numeri sempre piugrandi e il numero di divisioni effettuate.

Quanti passi vi aspettavate in teoria? (ordine di grandezzarispetto a b)

Quanti passi sono stati necessari in realta?

Quale congettura potreste formulare relativamente a talenumero di passi? (Suggerimento: provare divisori che sianopotenze di 2)

Esperimento 3

Calcolare con MAGMA i MCD di coppie di numeri sempre piugrandi e il numero di divisioni effettuate.

Quanti passi vi aspettavate in teoria? (ordine di grandezzarispetto a b)

Quanti passi sono stati necessari in realta?

Quale congettura potreste formulare relativamente a talenumero di passi? (Suggerimento: provare divisori che sianopotenze di 2)

Come potreste provare tale congettura?

Esperimento 3

Calcolare con MAGMA i MCD di coppie di numeri sempre piugrandi e il numero di divisioni effettuate.

Quanti passi vi aspettavate in teoria? (ordine di grandezzarispetto a b)

Quanti passi sono stati necessari in realta?

Quale congettura potreste formulare relativamente a talenumero di passi? (Suggerimento: provare divisori che sianopotenze 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 comundivisore di numeri sempre piu grandi. Potete usaredirettamante il comando GCD(a,b)

Sempre con MAGMA, fattorizzate quegli stessi numeri con ilcomandoFactorization(n);

Confrontate i tempi di esecuzione.

Confronto con il metodo della scuola media...

Esperimento 4

Provate ad usare MAGMA per calcolare il massimo comundivisore di numeri sempre piu grandi. Potete usaredirettamante il comando GCD(a,b)

Sempre con MAGMA, fattorizzate quegli stessi numeri con ilcomandoFactorization(n);

Confrontate i tempi di esecuzione.

Esempio:a = 10000000000000000000000000000603000000000000000000000000001881b = 1000000000000000000000000000000000000000000000001231231231234Confrontare 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 diZp, 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 unintero casuale compreso fra 1 e p − 2, diciamo C e invia, ivalori (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 diZp, 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 unintero casuale compreso fra 1 e p − 2, diciamo C e invia, ivalori (M · (AB)C ,AC ).

Decodifica di un messaggio (α, β): M = α/βB .

Gara 4

Divisi in tre squadre, impersonate i ruoli di mittente, opponente edestinatario. Supponiamo che parte della chiave pubblica deldestinatario sia p = 29, A = 2. La squadra destinatario sceglie B ecomunica 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 en − 1, quante moltiplicazioni in Zn sono necessarie per calcolareAB (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 en − 1, quante moltiplicazioni in Zn sono necessarie per calcolareAB (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 en − 1, quante moltiplicazioni in Zn sono necessarie per calcolareAB (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 piu veloce, altrimenti nonpotremmo 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 en − 1, quante moltiplicazioni in Zn sono necessarie per calcolareAB (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 piu veloce, altrimenti nonpotremmo 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 en − 1, quante moltiplicazioni in Zn sono necessarie per calcolareAB (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 piu veloce, altrimenti nonpotremmo 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 (mod 832);

apparentemente il problema non sembra semplificato.

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 lepotenze di 2 e calcolare 354 (mod 832): basta osservare che354 = 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 potenzemodulo 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 compresofra 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 compresofra 1 e 200

Ripetere lo stesso conteggio modulo p, con p = 557

Discutere i risultati ottenuti

Conseguenza: Non esistono algoritmi veloci per il calcolo dilogaritmi 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 φ sichiama 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 φ sichiama 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 φ sichiama funzione toziente di Eulero

Se n e un numero primo, quanto vale φ(n)? n-1

Il caso piu interessante per noi e quello in cui n = pq, dove p e qsono 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 φ sichiama funzione toziente di Eulero

Se n e un numero primo, quanto vale φ(n)? n-1

Il caso piu interessante per noi e quello in cui n = pq, dove p e qsono 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 φ sichiama funzione toziente di Eulero

Se n e un numero primo, quanto vale φ(n)? n-1

Il caso piu interessante per noi e quello in cui n = pq, dove p e qsono numeri primi.

Esperimento 7

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

Congetturare una regola generale per φ(n) nel caso n = pqcon 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 φ sichiama funzione toziente di Eulero

Se n e un numero primo, quanto vale φ(n)? n-1

Il caso piu interessante per noi e quello in cui n = pq, dove p e qsono numeri primi.

Esperimento 7

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

Congetturare una regola generale per φ(n) nel caso n = pqcon 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 dia = 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 dia = a0, a1, a2, . . ., tutte calcolate (mod p)

Per qualche 0 ≤ i ≤ j ≤ p − 1 si avranno due potenze uguali:ai = aj (mod p) (perche?)

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

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

Per qualche 0 ≤ i ≤ j ≤ p − 1 si avranno due potenze uguali:ai = aj (mod p) (perche?)

Questo vuol dire che aj−i = 1 (mod p) (perche?)

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

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

Per qualche 0 ≤ i ≤ j ≤ p − 1 si avranno due potenze uguali:ai = aj (mod p) (perche?)

Questo vuol dire che aj−i = 1 (mod p) (perche?)

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 dia = a0, a1, a2, . . ., tutte calcolate (mod p)

Per qualche 0 ≤ i ≤ j ≤ p − 1 si avranno due potenze uguali:ai = aj (mod p) (perche?)

Questo vuol dire che aj−i = 1 (mod p) (perche?)

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. Dopodiche,dato che as = 1, si ripetono.

Per ogni b ∈ Zp, gli elementi b, ba, ba2, . . . , bas−1 sono innumero di s

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

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

Per qualche 0 ≤ i ≤ j ≤ p − 1 si avranno due potenze uguali:ai = aj (mod p) (perche?)

Questo vuol dire che aj−i = 1 (mod p) (perche?)

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. Dopodiche,dato che as = 1, si ripetono.

Per ogni b ∈ Zp, gli elementi b, ba, ba2, . . . , bas−1 sono innumero di s

L’insieme degli elementi non nulli di Zp e ripartito in taligruppi 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 dia = a0, a1, a2, . . ., tutte calcolate (mod p)

Per qualche 0 ≤ i ≤ j ≤ p − 1 si avranno due potenze uguali:ai = aj (mod p) (perche?)

Questo vuol dire che aj−i = 1 (mod p) (perche?)

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. Dopodiche,dato che as = 1, si ripetono.

Per ogni b ∈ Zp, gli elementi b, ba, ba2, . . . , bas−1 sono innumero di s

L’insieme degli elementi non nulli di Zp e ripartito in taligruppi di s elementi

s divide p − 1

Il Teorema di Eulero - forma deboleL’argomento vale per ogni n sostituendo l’espressione elementi nonnulli di Zp con elementi invertibili in Zn.

Il Teorema di Eulero - forma deboleL’argomento vale per ogni n sostituendo l’espressione elementi nonnulli 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 cheMCD(a, n) = 1. Allora

akφ(n)+1 = a (mod n)

Il Teorema di Eulero - forma deboleL’argomento vale per ogni n sostituendo l’espressione elementi nonnulli 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 cheMCD(a, n) = 1. Allora

akφ(n)+1 = a (mod n)

Esercizio 5

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

Il Teorema di Eulero - forma deboleL’argomento vale per ogni n sostituendo l’espressione elementi nonnulli 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 cheMCD(a, n) = 1. Allora

akφ(n)+1 = a (mod n)

Esercizio 5

Verificare il Teorema di Eulero in forma debole per le seguenticoppie 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 comandoMAGMA per la funzione di Eulero e EulerPhi(n).

Il Teorema di Eulero - forma deboleL’argomento vale per ogni n sostituendo l’espressione elementi nonnulli 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 cheMCD(a, n) = 1. Allora

akφ(n)+1 = a (mod n)

Esercizio 5

Verificare il Teorema di Eulero in forma debole per le seguenticoppie 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 comandoMAGMA 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 aun 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 aun 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 diMagma.

Il crittosistema RSA: esempioChiave pubblica di Ryanair:Modulo (1024 bit):AE 64 DD 3D 64 45 D9 56 AB 5B 18 D1 03 3F 68 6B F4 F7 735B A1 C7 B3 1D CE A8 3E 57 FC B0 51 86 81 E0 81 AC C1 72F5 4F E0 F5 8E 47 5B 93 D6 33 D6 21 F9 9F 81 10 18 C5 47 C133 94 1B D1 3A 88 5B 3B 32 92 49 75 0A 92 8E 17 0A 74 F7 EAC0 E5 A9 BD E2 02 84 FC 86 C2 F3 98 64 74 FE AA D4 8D 8D8F CD 95 65 83 25 B9 DE D3 47 C1 A6 33 C9 F2 A8 A8 DC 023F 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=122463632067233237685492934786911990404770932108216049460931235788797236176105263908162964225569626674489521384482266087210944781649755406053639321717623493398190382750848442616120715097041738231236128611955073508554768311206520492762180030935394395072324941947924722132784355728552674799561849761300834948581

Esponente pubblico:e=65537

RSA

Chiave pubblica: n, e

RSA

Chiave pubblica: n, e

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

RSA

Chiave pubblica: n, e

Chiave privata:1 p, q numeri primi tali che n = p · q2 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 p, q numeri primi tali che n = p · q2 d ∈ Zφ(n) tale che d = 1/e (mod φ(n))

Codifica di un messaggio M ∈ Zn:

Me (mod n)

Decodifica di un messaggio

M = (Me)d

RSA

Chiave pubblica: n, e

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

Codifica di un messaggio M ∈ Zn:

Me (mod n)

Decodifica di un messaggio

M = (Me)d

Perche e corretta la decodifica?

RSA

Chiave pubblica: n, e

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

Codifica di un messaggio M ∈ Zn:

Me (mod n)

Decodifica di un messaggio

M = (Me)d

Perche e corretta la decodifica?Grazie al Teorema di Euleroed = 1 (mod φ(n)) ⇒ ed = k · φ(n) + 1 ⇒(Me)d = Med = Mkφ(n)+1 = M

Fattibilita

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

Fattibilita

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

Fattibilita

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 piu grande numero primo conosciuto della forma22

n+ 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 velocizzaresquare and multiply

Sicurezza

Risalire da Me 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 Me 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 sistemapuo considerarsi sicuro.

Sicurezza

Risalire da Me 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 sistemapuo considerarsi sicuro.

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

Sicurezza

Risalire da Me 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 sistemapuo considerarsi sicuro.

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

SOLUZIONE Usare numeri che sono primi con probabilitaarbitrariamente alta (per capirci, 99.9999999999999 per cento)

Esperimento 11

Considerare due numeri primi molto grandi:

p :=NextPrime(10150 + 321412043120372103472104721047120412304712034712304712412)q := NextPrime(p + 100000)

Esperimento 11

Considerare due numeri primi molto grandi:

p :=NextPrime(10150 + 321412043120372103472104721047120412304712034712304712412)q := NextPrime(p + 100000)

Calcolarne il prodotto n

Esperimento 11

Considerare due numeri primi molto grandi:

p :=NextPrime(10150 + 321412043120372103472104721047120412304712034712304712412)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 + 321412043120372103472104721047120412304712034712304712412)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 delvostro denaro?

Esperimento 11

Considerare due numeri primi molto grandi:

p :=NextPrime(10150 + 321412043120372103472104721047120412304712034712304712412)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 delvostro denaro?

Provare con questo algoritmo:trovato:=false; i:=1;while not trovato do

m:=n + i2;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 percaso

n+ i2 e un quadrato perfetto (test veloce)

Cosa e successo?

Idea dell’algoritmo: per tentativi provare a controllare se percaso

n+ i2 e un quadrato perfetto (test veloce)

In tal caso da n + i2 = t2 segue

n = t2 − i2 = (t − i) · (t + i)

Cosa e successo?

Idea dell’algoritmo: per tentativi provare a controllare se percaso

n+ i2 e un quadrato perfetto (test veloce)

In tal caso da n + i2 = t2 segue

n = t2 − i2 = (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, eabbiamo visto che ha successo nel caso in cui p e q sianorelativamente vicini

Chiavi deboli

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

Ne esistono altri di algoritmi di fattorizzazione cherisultano veloci se p e q hanno determinate proprieta

Chiavi deboli

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

Ne esistono altri di algoritmi di fattorizzazione cherisultano veloci se p e q hanno determinate proprieta

Un altro esempio di chiave debole e quella in cui p− 1 o q− 1si fattorizzano in tanti fattori primi piccoli

Chiavi deboli

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

Ne esistono altri di algoritmi di fattorizzazione cherisultano veloci se p e q hanno determinate proprieta

Un altro esempio di chiave debole e quella in cui p− 1 o q− 1si fattorizzano in tanti fattori primi piccoli

Per questo si tende a scegliere p = 2p1 + 1 e q = 2q1 + 1 conp1 e q1 primi

Chiavi deboli

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

Ne esistono altri di algoritmi di fattorizzazione cherisultano veloci se p e q hanno determinate proprieta

Un altro esempio di chiave debole e quella in cui p− 1 o q− 1si fattorizzano in tanti fattori primi piccoli

Per questo si tende a scegliere p = 2p1 + 1 e q = 2q1 + 1 conp1 e q1 primi

Pare che una percentuale rilevante (compresa fra 1 e 10 percento) delle chiavi RSA sia debole

Funzioni hash

L’hash (o digest) di un file ha gli stessi scopi dell’impronta digitaledi un individuo.

Sintetizza un individuo/file in un formato unico (160 bit per ifile)

Si ottiene con relativa facilita

Praticamente impossibile data un’impronta digitale, risalire alfile/individuo

Praticamente impossibile dato un file/individuo, trovarne unaltro con la stessa impronta

Praticamente impossibile trovare due file/individui con lastessa impronta

Perche c’e bisogno di una funzione hash?

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

Perche c’e bisogno di una funzione hash?

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

Autenticazione di un documento. Si calcola l’impronta delfile ottenuto combinando documento e chiave simmetrica.

Perche c’e bisogno di una funzione hash?

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

Autenticazione di un documento. Si calcola l’impronta delfile ottenuto combinando documento e chiave simmetrica.

Firma digitale. Non si firma l’intero documento, ma la suaimpronta.

Perche c’e bisogno di una funzione hash?

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

Autenticazione di un documento. Si calcola l’impronta delfile ottenuto combinando documento e chiave simmetrica.

Firma digitale. Non si firma l’intero documento, ma la suaimpronta.

Per questi scopi e fondamentale che sia praticamente impossibiletrovare due file con la stessa hashUna funzione hash deve essere resistente alle collisioni

Un modello ideale

La funzione hash e calcolata da un oracolo in modo totalmenteoscuro, che nessuno conosce. Casuale ma riproducibile.

Un modello ideale

La funzione hash e calcolata da un oracolo in modo totalmenteoscuro, che nessuno conosce. Casuale ma riproducibile.

Si cerca di riprodurre per quanto possibile il modello oracolocasuale.

Un modello ideale

La funzione hash e calcolata da un oracolo in modo totalmenteoscuro, che nessuno conosce. Casuale ma riproducibile.

Si cerca di riprodurre per quanto possibile il modello oracolocasuale.

In tutti i nostri computer esistono algoritmi che simulano talemodello. Il piu utilizzato al momento e SHA1. SHA=Secure HashAlgorithmFCIV - md5, sha1 nomefile.con.path in Windows, sha1sum nomefile in Linux

Un modello ideale

La funzione hash e calcolata da un oracolo in modo totalmenteoscuro, che nessuno conosce. Casuale ma riproducibile.

Si cerca di riprodurre per quanto possibile il modello oracolocasuale.

In tutti i nostri computer esistono algoritmi che simulano talemodello. Il piu utilizzato al momento e SHA1. SHA=Secure HashAlgorithmFCIV - md5, sha1 nomefile.con.path in Windows, sha1sum nomefile in Linux

SHA1 calcola un’impronta di 160 bit

Perche proprio 160 bit sono necessari per un impronta?

Il paradosso del compleanno

In una classe di 23 alunni la probabilita che ve ne siano 2 conla stessa data di nascita supera il 50 per cento

Il paradosso del compleanno

In una classe di 23 alunni la probabilita che ve ne siano 2 conla 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 probabilita che ve ne siano 2 conla 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 puoassumere M valori. Sia dato un insieme di

√2M ln 2 file/individui.

Allora la probabilita di trovare due file/individui a cui e associato lostesso valore supera il 50 per cento

Il paradosso del compleanno

In una classe di 23 alunni la probabilita che ve ne siano 2 conla 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 puoassumere M valori. Sia dato un insieme di

√2M ln 2 file/individui.

Allora la probabilita di trovare due file/individui a cui e associato lostesso valore supera il 50 per cento

Se l’hash ha k bit, i possibili esiti di un hash sono 2k .Pertanto in un insieme di circa

√2k = 2k/2 file sarebbe

abbastanza probabile trovare una collisione. Per questomotivo, ad esempio, un hash di 80 bit non sarebbe sicuro.

Dimostrazione del paradosso del compleanno

Si consideri un insieme di n individui. La probabilita ditrovarne due con lo stesso compleanno e

P = 1− 365 − 1

365· 365− 2

365· · · 365 − (n − 1)

365.

Dimostrazione del paradosso del compleanno

Si consideri un insieme di n individui. La probabilita ditrovarne due con lo stesso compleanno e

P = 1− 365 − 1

365· 365− 2

365· · · 365 − (n − 1)

365.

O anche

P = 1− (1− 1

365) · (1− 2

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

365).

Dimostrazione del paradosso del compleanno

Si consideri un insieme di n individui. La probabilita ditrovarne due con lo stesso compleanno e

P = 1− 365 − 1

365· 365− 2

365· · · 365 − (n − 1)

365.

O anche

P = 1− (1− 1

365) · (1− 2

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

365).

Per capirci qualcosa occorre considerare che per numeri xvicini allo zero si ha

1− x ∼ e−x

Dimostrazione del paradosso del compleanno

Si consideri un insieme di n individui. La probabilita ditrovarne due con lo stesso compleanno e

P = 1− 365 − 1

365· 365− 2

365· · · 365 − (n − 1)

365.

O anche

P = 1− (1− 1

365) · (1− 2

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

365).

Per capirci qualcosa occorre considerare che per numeri xvicini 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−12 ·(n−1)·(n−2)

365

P ∼ e−1+2+...+(n−1)

365 = e−12 ·(n−1)·(n−2)

365

Eseguendo il logaritmo di ambo i membri

lnP ∼ −n2 − 3n + 2

2 · 365

P ∼ e−1+2+...+(n−1)

365 = e−12 ·(n−1)·(n−2)

365

Eseguendo il logaritmo di ambo i membri

lnP ∼ −n2 − 3n + 2

2 · 365

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

lnP ∼ − n2

2 · 365

P ∼ e−1+2+...+(n−1)

365 = e−12 ·(n−1)·(n−2)

365

Eseguendo il logaritmo di ambo i membri

lnP ∼ −n2 − 3n + 2

2 · 365

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

lnP ∼ − n2

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

P ∼ e−1+2+...+(n−1)

365 = e−12 ·(n−1)·(n−2)

365

Eseguendo il logaritmo di ambo i membri

lnP ∼ −n2 − 3n + 2

2 · 365

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

lnP ∼ − n2

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

In generale, se abbiamo M esiti (es. 2160 per SHA1) allora peravere P = 1/2 occorre

ln 1/2 · 2 ·M ∼ −n2 ⇒ n ∼√2 · ln 2 ·M

Quale proprieta 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, 9n = 15 1, 2, 4, 7, 8, 11, 13, 14n = 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, 9n = 15 1, 2, 4, 7, 8, 11, 13, 14n = 22 1, 3, 5, 7, 9, 13, 15, 17, 19, 21

Osservazione: la somma degli elementi invertibili di Zn edivisibile per n

Il Teorema del Quinto A

Esperimento: scrivere tutti gli elementi invertibili di Zn:

n = 10 1, 3, 7, 9n = 15 1, 2, 4, 7, 8, 11, 13, 14n = 22 1, 3, 5, 7, 9, 13, 15, 17, 19, 21

Osservazione: la somma degli elementi invertibili di Zn edivisibile per n

Congettura: per ogni intero positivo n > 1,

a∈Zn,MCD(a,n)=1

a = 0 (mod n)

Dimostrazione:1 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 quindidi a

2 Siano a1, . . . , as sono gli elementi di Zn primi con n e minori din/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 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 quindidi a

2 Siano a1, . . . , as sono gli elementi di Zn primi con n e minori din/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,

a∈Zn,MCD(a,n)=1

a = 0 (mod n)

La firma digitale

Idea: la firma di un documento consiste nel mascherare ildocumento con la propria chiave privata

La firma digitale

Idea: la firma di un documento consiste nel mascherare ildocumento con la propria chiave privata

Firma digitale RSA: chiave pubblica di Alice (n, e), chiaveprivata (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 ildocumento con la propria chiave privata

Firma digitale RSA: chiave pubblica di Alice (n, e), chiaveprivata (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 ildocumento con la propria chiave privata

Firma digitale RSA: chiave pubblica di Alice (n, e), chiaveprivata (p, q, d) con n = p · q e e · d = 1 (mod φ(n))

Documento da firmare: D ∈ Zn

Firma del documento: F = Dd (mod n) ∈ Zn

La firma digitale

Idea: la firma di un documento consiste nel mascherare ildocumento con la propria chiave privata

Firma digitale RSA: chiave pubblica di Alice (n, e), chiaveprivata (p, q, d) con n = p · q e e · d = 1 (mod φ(n))

Documento da firmare: D ∈ Zn

Firma del documento: F = Dd (mod n) ∈ Zn

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

La firma digitale

Idea: la firma di un documento consiste nel mascherare ildocumento con la propria chiave privata

Firma digitale RSA: chiave pubblica di Alice (n, e), chiaveprivata (p, q, d) con n = p · q e e · d = 1 (mod φ(n))

Documento da firmare: D ∈ Zn

Firma del documento: F = Dd (mod n) ∈ Zn

Documento firmato: (D,F ) con F = Dd (mod n)Verifica della firma:

F e = D (mod n) ???

La firma digitale

Idea: la firma di un documento consiste nel mascherare ildocumento con la propria chiave privata

Firma digitale RSA: chiave pubblica di Alice (n, e), chiaveprivata (p, q, d) con n = p · q e e · d = 1 (mod φ(n))

Documento da firmare: D ∈ Zn

Firma del documento: F = Dd (mod n) ∈ Zn

Documento firmato: (D,F ) con F = Dd (mod n)Verifica della firma:

F e = D (mod n) ???

Il punto chiave e che se F e = D (mod n), allora (F e)d = Dd

(mod n) e quindi per il Teorema di Eulero F = Dd (mod n).

La firma digitale

Idea: la firma di un documento consiste nel mascherare ildocumento con la propria chiave privata

Firma digitale RSA: chiave pubblica di Alice (n, e), chiaveprivata (p, q, d) con n = p · q e e · d = 1 (mod φ(n))

Documento da firmare: D ∈ Zn

Firma del documento: F = Dd (mod n) ∈ Zn

Documento firmato: (D,F ) con F = Dd (mod n)Verifica della firma:

F e = D (mod n) ???

Il punto chiave e che se F e = D (mod n), allora (F e)d = Dd

(mod n) e quindi per il Teorema di Eulero F = Dd (mod n).Ma solo Alice conosce d

Falsificazioni firma digitale RSA

Se faccio finta di essere Alice e spedisco (F e ,F ), allora laverifica della firma e accettata:

F e = F e (mod n)

Falsificazioni firma digitale RSA

Se faccio finta di essere Alice e spedisco (F e ,F ), allora laverifica della firma e accettata:

F e = F e (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 laverifica della firma e accettata:

F e = F e (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 = F e1 · F e

2 = D1 · D2 (mod n)

Falsificazioni firma digitale RSA

Se faccio finta di essere Alice e spedisco (F e ,F ), allora laverifica della firma e accettata:

F e = F e (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 = F e1 · F e

2 = 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 laverifica della firma e accettata:

F e = F e (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 = F e1 · F e

2 = D1 · D2 (mod n)

D1 · D2 probabilmente e un documento senza senso.

La facilita di ottenere firme false e un problema

Falsificazioni firma digitale RSA

Se faccio finta di essere Alice e spedisco (F e ,F ), allora laverifica della firma e accettata:

F e = F e (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 = F e1 · F e

2 = D1 · D2 (mod n)

D1 · D2 probabilmente e un documento senza senso.

La facilita di ottenere firme false e un problemaUn altro problema e che un documento/file non sempre puo nonessere 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 laverifica della firma e accettata:

F e = F e (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 = F e1 · F e

2 = D1 · D2 (mod n)

D1 · D2 probabilmente e un documento senza senso.

La facilita di ottenere firme false e un problemaUn altro problema e che un documento/file non sempre puo nonessere 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 dimensionepraticamente 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 dimensionepraticamente arbitraria

Si calcola l’hash di D con l’algoritmo SHA1, diciamo H(D), elo 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 dimensionepraticamente arbitraria

Si calcola l’hash di D con l’algoritmo SHA1, diciamo H(D), elo 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 dimensionepraticamente arbitraria

Si calcola l’hash di D con l’algoritmo SHA1, diciamo H(D), elo 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 dimensionepraticamente arbitraria

Si calcola l’hash di D con l’algoritmo SHA1, diciamo H(D), elo 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 dimensionepraticamente arbitraria

Si calcola l’hash di D con l’algoritmo SHA1, diciamo H(D), elo 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 EuleroF = H(D)d (mod n). Ma solo Alice conosce d .

Falsificazioni di SHA1-RSA?

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

Falsificazioni di SHA1-RSA?

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

Allo stesso modo, non e piu accettata (D1D2,F1F2) perche

H(D1D2)d 6= H(D1)

dH(D2)d = F1F2

Firma digitale in pratica

www.digitpa.gov.it“Per dotarsi di firma digitale necessario rivolgersi aicertificatori accreditati autorizzati da DigitPA chegarantiscono lidentita dei soggetti che utilizzano la firmadigitale.”

Firma digitale in pratica

www.digitpa.gov.it“Per dotarsi di firma digitale necessario rivolgersi aicertificatori accreditati autorizzati da DigitPA chegarantiscono lidentita dei soggetti che utilizzano la firmadigitale.”

http://www.digitpa.gov.it/firma-digitale/certificatori-accreditati/certificatori-attiviEsempio forse piu 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 aicertificatori accreditati autorizzati da DigitPA chegarantiscono lidentita dei soggetti che utilizzano la firmadigitale.”

http://www.digitpa.gov.it/firma-digitale/certificatori-accreditati/certificatori-attiviEsempio forse piu conosciuto in TV: Aruba.(http://www.pec.it/FirmaDigitale.aspx)

http://www.digitpa.gov.it/firma-elettronica/liste-certificatiOgni Autorita di Certificazione e a sua volta Certificata dalGoverno/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’identita di Alice e lerilascia una chiavetta usb e un PIN.

Firma digitale in pratica

Alice si reca fisicamente dalla Certification Authority.

La Certification Authority riconosce l’identita di Alice e lerilascia 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’identita di Alice e lerilascia 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’identita di Alice e lerilascia una chiavetta usb e un PIN.

La chiavetta USB contiene:

La chiave privata p, q, d di AliceIl certificato di Alice. Il certificato C di Alice contiene la chiavepubblica 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’identita di Alice e lerilascia una chiavetta usb e un PIN.

La chiavetta USB contiene:

La chiave privata p, q, d di AliceIl certificato di Alice. Il certificato C di Alice contiene la chiavepubblica n, e di Alice, ed e firmato dalla Certification Authority

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

Firma digitale in pratica

Alice si reca fisicamente dalla Certification Authority.

La Certification Authority riconosce l’identita di Alice e lerilascia una chiavetta usb e un PIN.

La chiavetta USB contiene:

La chiave privata p, q, d di AliceIl certificato di Alice. Il certificato C di Alice contiene la chiavepubblica n, e di Alice, ed e firmato dalla Certification Authority

Quando Alice vuole firmare un file inserisce la chiavetta eavvia il programma di firma inserendo il PIN. Il risultato e unfile .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’identita di Alice e lerilascia una chiavetta usb e un PIN.

La chiavetta USB contiene:

La chiave privata p, q, d di AliceIl certificato di Alice. Il certificato C di Alice contiene la chiavepubblica n, e di Alice, ed e firmato dalla Certification Authority

Quando Alice vuole firmare un file inserisce la chiavetta eavvia il programma di firma inserendo il PIN. Il risultato e unfile .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’identita di Alice e lerilascia una chiavetta usb e un PIN.

La chiavetta USB contiene:

La chiave privata p, q, d di AliceIl certificato di Alice. Il certificato C di Alice contiene la chiavepubblica n, e di Alice, ed e firmato dalla Certification Authority

Quando Alice vuole firmare un file inserisce la chiavetta eavvia il programma di firma inserendo il PIN. Il risultato e unfile .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 lafirma della Certification Authority)

Firma digitale in pratica

Bob riceve il file contratto.pdf.p7m, che consiste diD =contratto.pdf, F , CQuali passi compie per verificare la firma di Alice?

Firma digitale in pratica

Bob riceve il file contratto.pdf.p7m, che consiste diD =contratto.pdf, F , CQuali passi compie per verificare la firma di Alice?

Controlla la firma del certificato: deve essere sicuro che ilcertificato C sia stato firmato da una Certification Authority.Il browser si collega al sito governativo dove e sicuro di trovarela VERA chiave pubblica della Certification Authority. Talechiave pubblica e cio che serve per controllare l’autenticita delcertificato.

Firma digitale in pratica

Bob riceve il file contratto.pdf.p7m, che consiste diD =contratto.pdf, F , CQuali passi compie per verificare la firma di Alice?

Controlla la firma del certificato: deve essere sicuro che ilcertificato C sia stato firmato da una Certification Authority.Il browser si collega al sito governativo dove e sicuro di trovarela VERA chiave pubblica della Certification Authority. Talechiave pubblica e cio che serve per controllare l’autenticita delcertificato.

Dopo aver controllato il certificato, Bob e sicuro che la chiavepubblica di Alice e quella riportata nel certificato stesso.Quindi

Firma digitale in pratica

Bob riceve il file contratto.pdf.p7m, che consiste diD =contratto.pdf, F , CQuali passi compie per verificare la firma di Alice?

Controlla la firma del certificato: deve essere sicuro che ilcertificato C sia stato firmato da una Certification Authority.Il browser si collega al sito governativo dove e sicuro di trovarela VERA chiave pubblica della Certification Authority. Talechiave pubblica e cio che serve per controllare l’autenticita delcertificato.

Dopo aver controllato il certificato, Bob e sicuro che la chiavepubblica 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 diD =contratto.pdf, F , CQuali passi compie per verificare la firma di Alice?

Controlla la firma del certificato: deve essere sicuro che ilcertificato C sia stato firmato da una Certification Authority.Il browser si collega al sito governativo dove e sicuro di trovarela VERA chiave pubblica della Certification Authority. Talechiave pubblica e cio che serve per controllare l’autenticita delcertificato.

Dopo aver controllato il certificato, Bob e sicuro che la chiavepubblica 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 diD =contratto.pdf, F , CQuali passi compie per verificare la firma di Alice?

Controlla la firma del certificato: deve essere sicuro che ilcertificato C sia stato firmato da una Certification Authority.Il browser si collega al sito governativo dove e sicuro di trovarela VERA chiave pubblica della Certification Authority. Talechiave pubblica e cio che serve per controllare l’autenticita delcertificato.

Dopo aver controllato il certificato, Bob e sicuro che la chiavepubblica 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 transmissionfrom the source to a receiver. Error detection techniques allow detecting such errors, while error correction enablesreconstruction of the original data.Development of error-correction codes was tightly coupled with the history of deep-space missions due to theextreme dilution of signal power over interplanetary distances, and the limited power availability aboard spaceprobes. Whereas early missions sent their data uncoded, starting from 1968 digital error correction wasimplemented.The Reed-Muller code was well suited to the noise the spacecraft was subject to (approximately matching a bellcurve), 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 amongstscientific information of Jupiter and Saturn. This resulted in increased coding requirements, and thus thespacecraft were supported by (optimally Viterbi-decoded) convolutional codes that could be concatenated with anouter Golay (24,12,8) code.The Voyager 2 probe additionally supported an implementation of a Reed-Solomon code: the concatenatedReed-Solomon-Viterbi (RSV) code allowed for very powerful error correction, and enabled the spacecraft’s extendedjourney 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 0 0E 0 1O 1 0S 1 1

Un esempio elementare

N 0 0 0E 0 1 1O 1 0 1S 1 1 0

Un esempio elementare

N 0 0 0 0 0E 0 1 1 1 0O 1 0 1 0 1S 1 1 0 1 1

Un esempio elementare

N 0 0 0 0 0E 0 1 1 1 0O 1 0 1 0 1S 1 1 0 1 1

Un qualunque errore puo essere corretto automaticamente!

Un esempio elementare

N 0 0 0 0 0E 0 1 1 1 0O 1 0 1 0 1S 1 1 0 1 1

Un qualunque errore puo essere corretto automaticamente!

Idea: Codificare le parole del nostro linguaggio in modo tale chesiano 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 codicecorregge 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 + a1X + a2X2 + . . .+ akX

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 + a1X + a2X2 + . . .+ akX

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 diReed-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 diReed-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 diReed-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 puo 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 diReed-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 puo 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 diReed-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 puo avere f − g? k

Pertanto D ≥ m − k e quindi il codice di Reed-Solomon correggefino a (m − k)/2 errori!

top related