Torniamo al primo problema. Come fare acquisti sicuri via Internet? Come trasmettere informazioni in...

25
Torniamo al primo problema. Come fare acquisti sicuri via Internet? Come trasmettere informazioni in modo riservato?

Transcript of Torniamo al primo problema. Come fare acquisti sicuri via Internet? Come trasmettere informazioni in...

Page 1: Torniamo al primo problema. Come fare acquisti sicuri via Internet? Come trasmettere informazioni in modo riservato?

Torniamo al primo problema.

Come fare acquisti sicuri via Internet?

Come trasmettere informazioni in modo riservato?

Page 2: Torniamo al primo problema. Come fare acquisti sicuri via Internet? Come trasmettere informazioni in modo riservato?

Per salvaguardare la sicurezza dei pagamenti via Internet o delle procedure Bancomat, si utilizza spesso il

sistema crittografico RSA.

Rivest - Shamir - Adelman

Page 3: Torniamo al primo problema. Come fare acquisti sicuri via Internet? Come trasmettere informazioni in modo riservato?

RSAè un moderno sistema di crittografia basato sull’aritmetica modulare...

Occorre un breve riassunto degli ingredienti-base!

Page 4: Torniamo al primo problema. Come fare acquisti sicuri via Internet? Come trasmettere informazioni in modo riservato?

Indichiamo con N = {0,1,2, ...} l’insieme dei numeri naturalie con Z = {... -2,-1,0,1,2, ...} quello dei numeri interi.

Se p N, diciamo che due interi x e y sono congrui modulo p se hanno lo stesso resto dalla divisione per p, cioè se:

x = ap + r e y = bp + r

o, equivalentemente, se la loro differenza è un multiplo di p:

x-y = kp, per qualche k Z.

Page 5: Torniamo al primo problema. Come fare acquisti sicuri via Internet? Come trasmettere informazioni in modo riservato?

Scriveremo: xy (mod p)che si legge: “x è congruo a y modulo p”.

Ad esempio, se p=2, due numeri sono congrui modulo 2 se sono entrambi pari o entrambi dispari.

Se x=4 e y=10, poiché x-y= -6 = (-3) 2, allora

410 (mod 2).

Altro esempio:

9 23 (mod 7), poiché 9-23 = -14 = (-2) 7.

Page 6: Torniamo al primo problema. Come fare acquisti sicuri via Internet? Come trasmettere informazioni in modo riservato?

E ora raggruppiamo gli interi!Lavoriamo con gli interi modulo p.Fissiamo x Z e raggruppiamo tutti gli interi congrui ad x. Questi formano la cosiddetta classe di x modulo p, cioè:[x] = {y Z tali che xy (mod p)}=

{... x-3p, x-2p, x-p, x, x+p, x+2p, ...}.Ovviamente (basta riflettere un po’) due interi congrui tra loro hanno la stessa classe:

xy (mod p) se e solo se [x]=[y] (mod p).

Page 7: Torniamo al primo problema. Come fare acquisti sicuri via Internet? Come trasmettere informazioni in modo riservato?

In questo modo si ottiene una partizione di Z.

• Infatti ogni intero appartiene ad una ed una sola classe: x [x] !

• Inoltre l’unione di tutte le classi è Z.

• Vediamo graficamente:

partizione di Z modulo 2

[0]={...-2,0,2,4,...}

[1]={...-3,1,3,5,...}

[0] [1] [2]

partizione di Z modulo 3

Page 8: Torniamo al primo problema. Come fare acquisti sicuri via Internet? Come trasmettere informazioni in modo riservato?

In generale: Zp è l’insiemedi tutte le classi modulo pcioè Zp = {[0],[1],[2], ... , [p-1]}.

Infatti: [p] = [0], [p+1]=[1], ecc., quindi non occorre ripeterle!

Ad esempio, in Z6 l’elemento [10] coincide con [4], [-2], [16], ... Utilizzeremo sempre il “rappresentante” più piccolo di 6 e positivo. In questo caso: [4].

partizione di Z modulo p

[0] [1] [2] ... [p-1]

Zp

[0] [1] [2]

[p-1]

Page 9: Torniamo al primo problema. Come fare acquisti sicuri via Internet? Come trasmettere informazioni in modo riservato?

Facciamo un po’ di esercizio...

• Il detto “facile come 2 e 2 fa 4” non è sempre vero! Calcoliamo [2] + [2] in Z4.

• Calcoliamo il più piccolo rappresentante positivo di [213] in Z5. Cioè troviamo x tale che [x] = [213] e x è il più piccolo intero positivo con tale proprietà.

[2] + [2] = [2+2] = [4] = [0] in Z4.

Dividiamo 213 per 5... 213 = 5 · 42 + 3. Quindi[213] = [5 · 42] + [3] = [3] in Z5.

Page 10: Torniamo al primo problema. Come fare acquisti sicuri via Internet? Come trasmettere informazioni in modo riservato?

E ora il problema della sicurezza.

Supponiamo di voler proteggere delle informazioni da un uso non autorizzato.

Per prima cosa trasformiamo i dati in numeri (ad esempio il PIN del Bancomat).

Il sistema RSA codifica un numero in un numero segreto e può decodificarlo in quello iniziale.

Page 11: Torniamo al primo problema. Come fare acquisti sicuri via Internet? Come trasmettere informazioni in modo riservato?

Ingredienti del sistema RSA:

• Due numeri primi p e q (segreti);(nella pratica: molto grandi, più del numero da criptare)

• un “modulo” m = pq (pubblico);• una chiave codificatrice v N (pubblica);• una chiave decodificatrice w N (segreta)in modo che

vw 1 (mod (p-1)(q-1))

(in rosso quelli segreti, in blu quelli pubblici)

Page 12: Torniamo al primo problema. Come fare acquisti sicuri via Internet? Come trasmettere informazioni in modo riservato?

Sia x il numero che si vuole trasmettere.

• Trasmettiamo y=xv (via Internet o ...)

• Il ricevente conosce w ed m.

• Il ricevente divide yw per m: il resto è x!!!

Perché?

Page 13: Torniamo al primo problema. Come fare acquisti sicuri via Internet? Come trasmettere informazioni in modo riservato?

Consideriamo Zm = {[0],[1],[2], ... , [m-1]}

• Abbiamo scelto x << p e x << q, quindi sarà anche x << m=pq.

• Quindi (questa è l’idea-chiave!), l’elemento [x] compare tra quelli “canonici” di Zm!

Per maggior chiarezza, usiamo questa notazione (stiamo per lavorare con vari Zm, con m diversi...):

Zm = {[0]m,[1]m,[2]m, ... , [m-1]m}

Page 14: Torniamo al primo problema. Come fare acquisti sicuri via Internet? Come trasmettere informazioni in modo riservato?

Vogliamo provare che dividendo yw per m si ha x come resto...

...cioè che [yw]m = [x]m.Facciamo i conti: ricordiamo che abbiamo trasmesso y=xv , quindi yw = xvw.Ma abbiamo scelto v e w in modo che

vw 1 (mod (p-1)(q-1))cioè vw-1 = h(p-1)(q-1) per qualche intero h.Allora:

[yw]m = [xvw]m = [xh(p-1)(q-1) +1]m = [xh(p-1)(q-1)]m · [x]m.

deve essere [1]!!!

Page 15: Torniamo al primo problema. Come fare acquisti sicuri via Internet? Come trasmettere informazioni in modo riservato?

Quindi la nostra procedura funziona se proviamo che

[x(p-1)(q-1)]m =[1]m.

Qui ci vuole

un po’ più di matematica!

Page 16: Torniamo al primo problema. Come fare acquisti sicuri via Internet? Come trasmettere informazioni in modo riservato?

Spostiamoci in Zp e Zq

(p e q sono i primi “grandi” scelti all’inizio)

• Piccolo teorema di Fermat

Sia p un numero primo.

Allora, per ogni intero a, risulta:

a p a (mod p), cioè [a p ]p=[a]p in Zp.

In particolare, se [a]p [0]p , allora:

a p-1 1 (mod p), cioè [[aap p -1-1]]pp=[1]=[1]pp in Zp.

Page 17: Torniamo al primo problema. Come fare acquisti sicuri via Internet? Come trasmettere informazioni in modo riservato?

Applichiamo questo teorema:• l’intero a dell’enunciato è, per noi, xq-1.• Se fosse [xq-1]p [0]p , potremmo applicare il

teorema, ottenendo:

[x(q-1)(p-1)]p=[1]p .

• Vediamo perché [xq-1]p [0]p . Per assurdo, se fosse [xq-1]p = [0]p, allora xq-1 sarebbe multiplo di p. Ma p è primo, quindi x sarebbe multiplo di p: impossibile perché abbiamo scelto x << p!

• Quindi il teorema si può applicare, provando che…

Page 18: Torniamo al primo problema. Come fare acquisti sicuri via Internet? Come trasmettere informazioni in modo riservato?

[x(q-1)(p-1)]p=[1]p . (*)

Se facciamo lo stesso ragionamento, scambiando i ruoli di p e q, ovviamente troviamo che:

[x(q-1)(p-1)]q=[1]q . (**)

Le relazioni (*) e (**) significano che: x(q-1)(p-1)-1 è un multiplo sia di p che di q, dunque di m=pq, cioè

[x(p-1)(q-1)]m =[1]m,

come volevamo.

Page 19: Torniamo al primo problema. Come fare acquisti sicuri via Internet? Come trasmettere informazioni in modo riservato?

Non manca che un esempio“concreto”

cioèNUMERICO.

Page 20: Torniamo al primo problema. Come fare acquisti sicuri via Internet? Come trasmettere informazioni in modo riservato?

Riassumiamo gli ingredienti:• il numero x (da trasmettere);

• due numeri primi p e q (segreti);

• il “modulo” m = pq (pubblico);

• chiave codificatrice v (pubblica);

• chiave decodificatrice w (segreta)in modo che

vw 1 (mod (p-1)(q-1)),cioè

vw = h (p-1)(q-1) + 1.

Siano:

x = 123

p = 127

q = 251

m = 31877

Scelgo h=1 e calcolo

(p-1)(q-1)+1 =31501.

Fattorizzo:

31501= 172 109

v w

Page 21: Torniamo al primo problema. Come fare acquisti sicuri via Internet? Come trasmettere informazioni in modo riservato?

Quindi i dati sono:

x = 123

p = 127

q = 251

m = 31877

v = 289

w = 109

PROCEDIAMO!

• Invio y=xv = 123289 =...

• Il ricevente conosce w ed m.• Il ricevente divide yw = ... per m = 31877.• Il resto è 123 !!!

Page 22: Torniamo al primo problema. Come fare acquisti sicuri via Internet? Come trasmettere informazioni in modo riservato?

E la sicurezza?• Viene trasmesso y=xv

• Il ricevente conosce w ed m.

• Il ricevente divide yw per m: il resto è x.

Domande:

1. Se y e v sono pubblici, si potrebbe calcolare x = vy.

2. Oppure, visto che m=pq è pubblico, si potrebbe fattorizzare e trovare p e q. Poiché vw 1 (mod (p-1)(q-1)), si potrebbe poi cercare di trovare w.

Page 23: Torniamo al primo problema. Come fare acquisti sicuri via Internet? Come trasmettere informazioni in modo riservato?

In pratica, è impossibile!

1. In realtà, y e v sono molto grandi: quindi vy non si riesce a calcolare .

2. Anche l’altro metodo risulta impossibile: ciò è dovuto alla grandezza di p e q. Infatti sono stati scelti dei numeri “enormi” e quindi m=pq non può essere fattorizzato con i computer disponibili…

Page 24: Torniamo al primo problema. Come fare acquisti sicuri via Internet? Come trasmettere informazioni in modo riservato?

Conclusione:Conclusione:

I grandi numeri primiI grandi numeri primi

proteggono la segretezza!proteggono la segretezza!

Page 25: Torniamo al primo problema. Come fare acquisti sicuri via Internet? Come trasmettere informazioni in modo riservato?