1 / 25

Torniamo al primo problema.

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. R ivest - S hamir - A delman.

Download Presentation

Torniamo al primo problema.

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Per salvaguardare la sicurezza dei pagamenti via Internet o delle procedure Bancomat, si utilizza spesso il sistema crittografico RSA. Rivest - Shamir - Adelman

  3. RSA è un moderno sistema di crittografia basato sull’aritmetica modulare... Occorre un breve riassunto degli ingredienti-base!

  4. Indichiamo con N = {0,1,2, ...} l’insieme 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 pse 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.

  5. 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.

  6. 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).

  7. 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 3 partizione di Z modulo 2 [0]={...-2,0,2,4,...} [2] [1] [0] [1]={...-3,1,3,5,...}

  8. In generale: Zp è l’insiemedi tutte le classi modulo p cioè 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]. Zp partizione di Z modulo p [0] [1] [2] [0] [1] [2] ... [p-1] [p-1]

  9. 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.

  10. 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.

  11. Ingredienti del sistema RSA: (in rosso quelli segreti, in blu quelli pubblici) • 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))

  12. 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é?

  13. 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}

  14. 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]!!!

  15. Quindi la nostra procedura funziona se proviamo che [x(p-1)(q-1)]m =[1]m. Qui ci vuole un po’ più di matematica!

  16. 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: ap a(mod p), cioè [ap]p=[a]p in Zp. In particolare, se [a]p [0]p , allora: ap-1 1 (mod p), cioè [ap -1]p=[1]p in Zp.

  17. 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…

  18. [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.

  19. Non manca che un esempio“concreto”cioèNUMERICO.

  20. Siano: x = 123 p = 127 q = 251 m = 31877 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. Scelgo h=1 e calcolo (p-1)(q-1)+1 =31501. Fattorizzo: 31501= 172109 v w

  21. 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 !!!

  22. E la sicurezza? • Viene trasmessoy=xv • Il ricevente conosce w ed m. • Il ricevente divide yw per m: il resto è x. Domande: Se y e v sono pubblici, si potrebbe calcolare x = vy. 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.

  23. In pratica, è impossibile! In realtà, y e v sono molto grandi: quindi vy non si riesce a calcolare . 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…

  24. Conclusione: I grandi numeri primi proteggono la segretezza!

More Related