1 / 66

Crittografia a chiave asimmetrica o pubblica (PKC)

Crittografia a chiave asimmetrica o pubblica (PKC). Proposta pubblicamente nel 1976 da Diffie e Hellman ma nota alla NSA dalla metà degli anni 60, rappresenta l’avanzamento più significativo nella lunga storia della criptografia Usa due chiavi: pubblica e privata

Download Presentation

Crittografia a chiave asimmetrica o pubblica (PKC)

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. Crittografia a chiave asimmetrica o pubblica (PKC) • Proposta pubblicamente nel 1976 da Diffie e Hellman ma nota alla NSA dalla metà degli anni 60, rappresenta l’avanzamento più significativo nella lunga storia della criptografia • Usa due chiavi: pubblica e privata • Sistema asimmetrico poichè le due estremità non si trovano nella stessa condizione • Rappresenta un complemento e non una sostituzione della criptografia a chiave privata • Fondata sull’applicazione di concetti inerenti la teoria dei numeri

  2. Crittografia a chiave asimmetrica Perchè? • Due importanti problemi da risolvere • Distribuzione delle chiavi • Come avere delle comunicazioni sicure senza dovere • ottenere le chiavi da un KDC fiduciale • Firma digitale • Come verificare che un messaggio provenga • effettivamente da chi se dichiara autore

  3. Crittografia a chiave pubblica • Anche se può assicurare la segretezza, la crittografia asimmetrica non viene utilizzata per questo scopo a causa dei lunghi tempi computazionali. • Viene utilizzata in prevalenza per garantire autenticazione.

  4. Crittografia a chiave asimmetrica • Ciascun utente dispone di una coppia di chiavi (Kpu, Kpr), da lui stesso generate: • Kpu viene resa pubblica in un elenco centrale, consultabile liberamente, mentre Kpr deve restare segreta (la conosce solo il proprietario), • un msg cifrato con una chiave può essere decifrato solo con l’altra e viceversa, • dalla conoscenza di Kpu non è possibile risalire a Kpr

  5. Kd Testo in chiaro Testo cifrato Ki Crittografia a chiave asimmetrica

  6. Crittografia a chiave pubblica (msg privato e incertezza sull’identità del mittente  segretezza) • A cifra un messaggio in chiaro X con la chiave KUb (pubblica) di B, genera il testo cifrato Y e lo recapita a destinazione. • B utilizza la sua chiave KRb (privata e segreta) per decifrare Y e ottenere il messaggio X. Nessuno, eccetto B, può decifrare il messaggio X, neanche A che lo ha cifrato.

  7. Crittografia a chiave pubblica Segretezza

  8. Crittografia a chiave pubblica (msg pubblico e certezza identità mittente  autenticazione) • A cifra un messaggio X con la propria chiave KRb(privata) e lo invia a n persone. • Chiunque delle n persone decifra il testo cifrato Y con KUb (pubblica) di A ottenendo X e la certezza sull’identità del mittente perché solo A conosce la sua chiave segreta

  9. Crittografia a chiave pubblica Autenticazione

  10. Crittografia a chiave pubblica (msg privato e certezza identità mittente  segretezza e autenticazione) • A cifra un messaggio X con la propria chiave KRa (privata)Y (certezza su identità del mittente), poi cifra Y con KUb (pubblica) di B ( privatezza del msg) e lo recapita a destinazione  Z • B decifra Z con la propria chiave KRb (privata)Y, (privatezza del msg) poi decifra Y con KUa (pubblica) di A (certezza identità di A) riottenendo X. • Solo B può leggere il msg (privato) ed avere la certezza sull’identità del mittente.

  11. Crittografia a chiave pubblica Segretezza eAutenticazione

  12. Crittografia a chiave pubblica Vari sistemi applicabili per • Encryption/decryption (segretezza) • Firma digitale (autenticazione) • Scambio delle chiavi (per le chiavi di sessione) Non tutti gli algoritmi adatti per tutti gli usi, alcuni sono specifici

  13. Crittografia a chiave pubblica: considerazioni ◘Nello schema visto viene crittografato l’intero messaggio ◘ Richiede una grande area di memorizzazione poiché è necessario conservare copia del testo in chiaro ◘Una copia di testo cifrato deve essere conservata per verificare l’origine e il contenuto in caso di disputa ◘L’algoritmo di crittografia a chiave pubblica lento e complesso deve essere applicato 4 volte Soluzione Viene crittografato solo un piccolo blocco di bit che rappresenta una funzione del documento che funziona come blocco di autenticazione

  14. Crittografia a chiave pubblica: sicurezza ◘Come negli schemi a chiave privata è sempre possibile in via teorica l’attacco con ricerca esaustiva a forza bruta ◘ Possibilità pratica di attacco dipende dalla lunghezza delle chiavi (tipicamente 512 - 1024 – 2048 bit) ◘Sicurezza basata su differenza tra difficoltà di un pesante problema di criptanalisi e facilità di encrypt/decrypt ◘Bisogno di usare numeri grandissimi ◘Lentezza nei confronti degli schemi a chiave privata

  15. Funzioni one-way Could One be Fundamentally Harder than the Other? ? Seating Tour

  16. Funzioni one-way • soluzione per ottenere una coppia di chiavi: funzioni one-way con trapdoor • idea: una funzione f:    è one-way se: • dato x, calcolare f(x) è facile • dato y, calcolare x tale che f(x) = y è difficile • la funzione one-way è con trapdoor se: • dato y, calcolare x tale che f(x) = y è facile conoscendo un’informazione segreta k • dato y, calcolare x tale che f(x) = y è difficile se non si conosce k

  17. definizione formale: f:    è one-way se: f è calcolabile in tempo polinomiale da una MdT (Macchina di Touring) deterministica (cioè è facile da calcolare) esistono due polinomi p( ) e q( ) tali che: p(|x|)  |f(x)|  q(|x|) (cioè non deve produrre un output troppo corto) per ogni algoritmo A eseguibile su una MdT probabilistica, e per ogni polinomio p( ) esiste un numero naturale nA,p tale che: Funzioni one-way

  18. Funzioni one-way • osservazione: se P = NP, allora non esistono funzioni one-way ! • contronominale: se esiste una funzione one-way, allora P  NP • d’altra parte, potrebbe essere P  NP senza che esistano funzioni one-way • (l’inversione di una funzione one-way deve essere “quasi sempre” difficile) • in crittografia, spesso si lavora con permutazioni (su {0,1}n) one-way • non sapendo se P = NP oppure P  NP, si suppone che esistano funzioni one-way

  19. Funzioni one-way • La classe dei problemi che hanno un algoritmo di soluzione che lavora in tempo polinomiale viene denotata P, • La classe di complessità NP è l’insieme di tutti i problemi decisionali per cui la risposta SI può essere verificata in un tempo polinomiale avendo una informazione extra detta certificato (non è detto che però sia semplice ottenerlo). • La classe di complessità co-NP è l’analogo del precedente, ma riguardante la risposta NO.

  20. Esponenziazione modulare • primo esempio di funzione che sembra essere one-way: l’esponenziazione modulare • sia p un numero primo • consideriamo il campo p, e in particolare il suo gruppo moltiplicativo p* = {1,2,…,p-1} • si dimostra che p* è un gruppo ciclico  g p* tale che p* = {g0, g1,…, gp-2} • l’esponenziazione modulare è la funzione f :  p* definita come segue: f(z) = gzmod p

  21. Esponenziazione modulare Esempio: • 5* = {1,2,3,4} è il gruppo moltiplicativo contenuto nel campo 5 = {0,1,2,3,4} • 2 è un generatore di 5*; infatti: 5* = {20,21,22,23} = {1,2,4,3} • possiamo definire la seguente esponenziazione modulare: f(z) = 2zmod 5 • ogni esponenziazione modulare produce una permutazione (one-way) degli elementi di p*

  22. Esponenziazione modulare • dato x, possiamo calcolare gxmod p in tempo polinomiale • possiamo supporre che 0  x  p-2 • la dimensione dell’input è il numero di bit necessari per rappresentare gli elementi di p*, quindi n = log2 p • vale: dove (xn-1,…,x1,x0 ) è la rappresentazione binaria di x

  23. Esponenziazione modulare • Approccio immediato per il calcolo di gx mod p: ModExp(p, g, x) risultato = 1 while x > 0 do risultato = risultato * g mod p x = x – 1 return risultato • in pratica, nella variabile risultato si ottiene: g0, g1, g2, …, gx (sempre mod n) • problema: il numero di iterazioni è elevato e pari a x  2n (esponenziale rispetto a n)

  24. Esponenziazione modulare • soluzione migliore: poiché vale: allora ci basta calcolare i valori g2j, per j  {0,1,…,n-1}, e moltiplicare tra loro solo quelli per cui xj=1 • il tutto può essere fatto in tempo polinomiale (rispetto a n) tramite il cosiddetto algoritmo “square-and-multiply”

  25. Esponenziazione modulare • algoritmo “square-and-multiply”: ModExp(p, g, x) ris = 1 for j = n-1 downto 0 do ris = (ris * ris) mod p if xj = 1 then ris = (ris * g) mod p return ris • esempio: 87 mod 11 p = 11, g = 8, x = 7, n = 4 osservazione: 87 = 2097152

  26. Esponenziazione modulare • esecuzione dell’algoritmo: nella prima colonna, il valore di ris all’inizio della j-esima iterazione • nelle ultime due colonne, non è stata fatta la riduzione modulo p

  27. Logaritmi discreti • l’operazione inversa si chiama logaritmo discreto • definizione del problema: dati: • p primo • g generatore di p* • y p* calcolare x  {0,1,…,p-2} tale che gx y mod p • il calcolo dei logaritmi discreti sembra essereintrattabile: non si conoscono algoritmi che lo risolvono in tempo polinomiale (rispetto a n = log2 p) per tutte le istanze • per farsi un’idea, provare a calcolare a mano i logaritmi in base 3 in 113*

  28. Logaritmi discreti • osservazioni: • 113 è troppo piccolo per applicazioni crittografiche • elencare gli elementi di p* richiede tempo O(p) = O(2n) • quindi, l’esponenziazione modulare può essere usata per “nascondere” il valore di x  {0,1,2,…,p-2} in gxmod p • è come chiudere x in una cassetta che non può più essere aperta • abbiamo la funzione one-way, manca la trapdoor

  29. Fattorizzazione • altro esempio di funzione che sembra essere one-way: il prodotto tra numeri interi • definizione molto semplice: dati due numeri primip e q, calcolare n = p q • il problema inverso è la fattorizzazione: dato un numero interon, che si sa essere il prodotto di due numeri primi p e q, calcolare p (o q)

  30. Fattorizzazione • la dimensione dell’input è il numero di bit necessari per rappresentare gli elementi n, peq; poniamo quindi m = log2 n • algoritmo banale: si prova a dividere n per tutti gli interi compresi tra 2 e  questo algoritmo richiede però tempo che è esponenziale rispetto a m • altri algoritmi, in generale possono richiedere un tempo esponenziale

  31. Crittografia a chiave asimmetrica • Caratteristiche • Sicurezza dei msg da chiunque verso chiunque • Il numero di chiavi è proporzionale al numero di utenti • Il segreto risiede nella chiave • Si possono distribuire le chiavi pubbliche come si vuole

  32. Crittografia a chiave asimmetrica • R.S.A. (Rivest-Shamir-Adleman Algorithm) • D.S.A. (Digital Signature Algorithm) ALGORITMI CONSENTITI DALLA LEGGE PER IL CALCOLO DELLA FIRMA DIGITALE

  33. Crittografia a chiave asimmetrica • Problematiche • Tempi di computazione lunghi (i numeri -testo e chiave- coinvolti nei calcoli sono estremamente grandi ) • E’ necessario avere chiavi molto lunghe per ridurre al minimo la probabilità di forzature • Inadatti per testi molto lunghi • Resta problema certezza attributi associati alla chiave pubblica  certificati digitali firmati da C.A.

  34. Rivest, Shamir, Adleman (RSA) • Rivest, Shamir e Adleman del MIT nel 1977 • Sistema a chiave pubblica più noto e usato • Sicurezza dovuta alla difficoltà di fattorizzare grandi numeri • Chiavi funzioni di una coppia di grandi numeri primi • Cifrario a blocco • Basato sulla esponenziazione modulo un primo, • di numeri interi in un campo di Galois • Utilizza grandi numeri interi (tipicamente > 512 bit) • Brevetto scaduto nel 2000

  35. Rivest, Shamir, Adleman (RSA)cenni preliminari • Generazione delle chiavi • Selezionare due numeri primi p, q • Calcolare n = p · q • Calcolare Ф(n) = (p – 1) · (q – 1) • Scegliere e primo relativamente a Ф(n) • Scegliere d tale che d · e modulo Ф(n) = 1 • KPub = [e,n] • Kpri = [d,n]

  36. Rivest, Shamir, Adleman (RSA)

  37. Rivest, Shamir, Adleman (RSA)

  38. Rivest, Shamir, Adleman (RSA)

  39. Rivest, Shamir, Adleman (RSA)

  40. Rivest, Shamir, Adleman (RSA)

  41. RSA … altro esempio

  42. Rivest, Shamir, Adleman (RSA)

  43. Rivest, Shamir, Adleman (RSA)

  44. RSA

  45. Uso di RSA

  46. RSA

  47. RSA + -------------------------------- + | From: Alice | | To: Bob | | Subject: TOP SECRET! | + -------------------------------- + Parte 1: | | chiave di sessione C | | crittata con RSA | | + -------------------------------- + | | | | | | Parte 2: | | messaggio M | | crittato con DES | | | | | | | | • ------------------------------------------------------------ +

  48. RSA

  49. RSA

  50. RSA: esempio • supponiamo che Bob scelga p = 101 e q = 113, da cui nB = p q = 11413 e (nB) = (p-1)(q-1) = 11200 • ora Bob deve scegliere dB, compreso tra 2 e (nB)-1 = 11199, tale che MCD(dB,(nB)) = MCD(dB, 11200) = 1. Supponiamo che scelga • dB = 6597 • usando l’algoritmo di Euclide esteso, Bob calcola eB dB-1mod(nB) 3533 mod 11200 • la chiave pubblica di Bob è (nB, eB) = (11413, 3533), mentre la chiave privata è dB = 6597

More Related