La matematica dell’orologiogiuliet/MIPLezione1.pdfLa matematica dell’orologio Un’aritmetica...
Transcript of La matematica dell’orologiogiuliet/MIPLezione1.pdfLa matematica dell’orologio Un’aritmetica...
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!