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
RSA è un moderno sistema di crittografia basato sullaritmetica modulare... Occorre un breve riassunto degli ingredienti-base!
Indichiamo con N = {0,1,2,...} linsieme dei numeri naturali e 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.
Scriveremo: x y (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 4 10 (mod 2). Altro esempio: 9 23 (mod 7), poiché 9-23 = -14 = (-2) 7.
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 x y (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: x y (mod p) se e solo se [x]=[y] (mod p).
In questo modo si ottiene una partizione di Z. Infatti ogni intero appartiene ad una ed una sola classe: x [x] ! Inoltre lunione 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
In generale: Z p è linsieme di tutte le classi modulo p cioè Z p = {[0],[1],[2],..., [p-1]}. Infatti: [p] = [0], [p+1]=[1], ecc., quindi non occorre ripeterle! Ad esempio, in Z 6 lelemento [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] Z p [0] [1] [2] [p-1]
Facciamo un po di esercizio... Il detto facile come 2 e 2 fa 4 non è sempre vero! Calcoliamo [2] + [2] in Z 4. Calcoliamo il più piccolo rappresentante positivo di [213] in Z 5. Cioè troviamo x tale che [x] = [213] e x è il più piccolo intero positivo con tale proprietà. [2] + [2] = [2+2] = [4] = [0] in Z 4. Dividiamo 213 per = 5 · Quindi [213] = [5 · 42] + [3] = [3] in Z 5.
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.
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)
Sia x il numero che si vuole trasmettere. Trasmettiamo y=x v (via Internet o...) Il ricevente conosce w ed m. Il ricevente divide y w per m: il resto è x!!! Perché?
Consideriamo Z m = {[0],[1],[2],..., [m-1]} Abbiamo scelto x << p e x << q, quindi sarà anche x << m=pq. Quindi (questa è lidea-chiave!), lelemento [x] compare tra quelli canonici di Z m ! Per maggior chiarezza, usiamo questa notazione (stiamo per lavorare con vari Z m, con m diversi...): Z m = {[0] m,[1] m,[2] m,..., [m-1] m }
Vogliamo provare che dividendo y w per m si ha x come resto......cioè che [y w ] m = [x] m. Facciamo i conti: ricordiamo che abbiamo trasmesso y=x v, quindi y w = x vw. 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: [y w ] m = [x vw ] m = [x h(p-1)(q-1) +1 ] m = [x h(p-1)(q-1) ] m · [x] m. deve essere [1]!!!
Quindi la nostra procedura funziona se proviamo che [x (p-1)(q-1) ] m =[1] m. Qui ci vuole un po più di matematica!
Spostiamoci in Z p e Z q (p e q sono i primi grandi scelti allinizio) 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 Z p. In particolare, se [a] p [0] p, allora: [a p -1 ] p =[1] p a p-1 1 (mod p), cioè [a p -1 ] p =[1] p in Z p.
Applichiamo questo teorema: lintero a dellenunciato è, per noi, x q-1. Se fosse [x q-1 ] p [0] p, potremmo applicare il teorema, ottenendo: [x (q-1)(p-1) ] p =[1] p. Vediamo perché [x q-1 ] p [0] p. Per assurdo, se fosse [x q-1 ] p = [0] p, allora x q-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…
[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.
Non manca che un esempio concreto cioè NUMERICO.
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 = Scelgo h=1 e calcolo (p-1)(q-1)+1 = Fattorizzo: 31501= vw
Quindi i dati sono: x = 123 p = 127 q = 251 m = v = 289 w = 109 PROCEDIAMO! Invio y=x v = =... Il ricevente conosce w ed m. Il ricevente divide y w =... per m = Il resto è 123 !!!
E la sicurezza? Viene trasmesso y=x v Il ricevente conosce w ed m. Il ricevente divide y w per m: il resto è x. Domande: 1.Se y e v sono pubblici, si potrebbe calcolare x = v y. 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.
In pratica, è impossibile! 1.In realtà, y e v sono molto grandi: quindi v y non si riesce a calcolare. 2.Anche laltro 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…
Conclusione: I grandi numeri primi proteggono la segretezza!