R S A (1)
Transcript
R S A (1)
R S A (1) • Prima di fornire alcuni cenni sulla struttura dell’algoritmo di cifratura asimmetrica RSA è indispensabile ricordare che la sicurezza dello stesso si fonda su una grandissima difficoltà di decrittazione, soprattutto con riferimento al tempo richiesto, non su una assoluta impossibilità matematica. • Di conseguenza, poiché la difficoltà di decrittazione è proporzionale alla lunghezza della chiave (e chiavi di lunghezza ridotta sono già state violate) attualmente la lunghezza minima accettabile è stata fissata in 1024 bit (2048 per le chiavi più importanti). • Si ricordi fin da adesso che quando si parla di lunghezza della chiave ci si riferisce in realtà alla lunghezza in bit del modulo, cioè dell’insieme numerico di cui la chiave è un elemento componente; così non ci si meraviglierà di trovare talvolta delle chiavi pubbliche di pochi bit. Cenni di aritmetica modulare verranno comunque forniti nel corso di questa stessa lezione. 1 a.a. 2013/2014 1° sem. <[email protected]> R S A (2) • La previsione di RSA, esposta alla pagina http://www.rsasecurity.com/rsalabs/node.asp?id=2004#table1, è che tale dimensione di chiave (1024 bit) possa essere sicura fino al 2010. E’ evidente allora l’opportunità di passare ad una chiave a 2048 bit, anche se quella precedente è tuttora ben solida. • La stessa RSA promuoveva sfide (challenge) con premi in denaro per i ricercatori che volessero cimentarsi con la fattorizzazione di chiavi numeriche proposte pubblicamente: nell’agosto del 1999 un gruppo di ricercatori, facendo lavorare ininterrottamente quasi trecento computer per quasi quattro mesi, ha completato la fattorizzazione della chiave di 512 bit proposta come sfida. Ai primi di novembre 2005 è stata completata la fattorizzazione di 640 bit, in cinque mesi di lavoro con una forza computazionale pari a 30 anni di lavoro di una CPU a 2.2 MHz. Dopo il 2007 RSA ha deciso di non proseguire con le sfide. 2 a.a. 2013/2014 1° sem. <[email protected]> R S A (3) • UN ESEMPIO DI SFIDA : RSA-1024 Vince il premio chi riesce a fattorizzare il numero Prize: $100,000 Status: Not Factored Decimal Digits: 309 13506641086599522334960321627880596993888147560566 70275244851438515265106048595338339402871505719094 41798207282164471551373680419703964191743046496589 27425623934102086438320211037295872576235850964311 05640735015081875106765946292055636855294752135008 52879416377328533906109750544334999811150056977236 890927563 Decimal Digit Sum: 1369 • (http://www.rsasecurity.com/rsalabs/node.asp?id=2093 ) • • • • 3 a.a. 2013/2014 1° sem. <[email protected]> L’algoritmo RSA (1) • Trattandosi di un sistema a due chiavi asimmetriche, richiede l’individuazione di due funzioni strettamente correlate, ciascuna delle quali sia in grado di invertire l’ output dell’altra, in modo che il risultato finale dell’applicazione delle due chiavi sia esattamente lo stato iniziale (cifra / decifra). • Se consideriamo ad es. le due funzioni inverse: elevazione a potenza / estrazione di radice, notiamo che l’applicazione consecutiva delle due funzioni (non importa quale sia la prima) dà come risultato lo stesso numero iniziale, mentre l’applicare due volte la stessa chiave non fornisce il risultato desiderato: ne discende che l’utilizzo di funzioni inverse sta alla base della crittografia a chiavi asimmetriche (inverse). 4 a.a. 2013/2014 1° sem. <[email protected]> L’algoritmo RSA (2) • Ricordando che nella moltiplicazione l’elemento neutro è 1, e che avremo a che fare con tale operazione anche a livello di esponenti, diremo, data una coppia di numeri, che sono l’uno l’ inverso (moltiplicativo) dell’altro quando il loro prodotto dà come risultato 1. • Nella normale aritmetica è facilissimo individuare l’inverso di un numero, per tutti gli interi: dato l’intero x, l’inverso sarà 1/x (infatti il loro prodotto dà come risultato x/x, cioè 1). • Analogamente, a livello di esponenti, se nx è la potenza x-esima, n1/x rappresenterà la radice x-esima. 5 a.a. 2013/2014 1° sem. <[email protected]> L’algoritmo RSA (3) • Tuttavia, a differenza delle normali operazioni con radicali, in cui è comunissimo imbattersi in numeri non interi, le operazioni del cifrario RSA avvengono utilizzando solo numeri interi, e per di più in un range predefinito (modulo), cioè in un insieme limitato che va da 0 fino ad un altro numero qualunque, comprendendo tutti gli interi intermedi. Come è possibile ottenere questo? • E’ possibile utilizzando l’ aritmetica modulare , in cui il modulo n definisce la composizione dell’insieme in cui si può operare, l’ambiente di lavoro, che sarà composto appunto di una serie di n numeri, che partono da 0 e arrivano fino a n-1. 6 a.a. 2013/2014 1° sem. <[email protected]> L’aritmetica modulare (1) • E’ chiamata anche aritmetica dell’orologio, perché il collocare gli elementi dell’insieme MODULO circolarmente, su un anello (come le ore o i minuti di un orologio), suggerisce un’efficace analogia con il comportamento aritmetico del modulo stesso. • E’ chiamata anche aritmetica dei resti , perché, essendo escluso p. def. dall’insieme modulo n ogni numero =>n, con tali numeri si possono però individuare delle classi di equivalenza, dette congruenze, risultanti dal resto della divisione per il modulo (ad es. 30 è congruo con 3 modulo 9) . 7 a.a. 2013/2014 1° sem. <[email protected]> L’aritmetica modulare (2) • Possiamo anche pensare alla congruenza come ad una funzione che mappa l’infinito sul finito, attraverso una serie di classi infinite (classi di congruenza). • Sono possibili nel modulo le consuete operazioni aritmetiche sugli interi, tenendo sempre presente che i risultati molto spesso saranno diversi da quelli cui siamo abituati, e che di ogni risultato eventualmente maggiore del modulo n si considera solo il resto della divisione per n. – – – 8 7 + 7 = 5 ( mod 9 ) 6 * 8 = 0 (mod 12) 33 = 3 (mod 12) a.a. 2013/2014 1° sem. <[email protected]> L’aritmetica modulare (3) Alcune semplici operazioni di aritmetica modulare vengono calcolate anche nell’esperienza quotidiana e nel parlare comune, con l’aritmetica dell’orologio: se, per esempio, quando sono le undici, dico “tra quattro ore saranno le tre”, ho compiuto un’addizione modulo 12. Così pure, se alle 11.55 dico che arriverò tra un quarto d’ora, a mezzogiorno e dieci, ho compiuto anche un’addizione modulo 60. 9 a.a. 2013/2014 1° sem. <[email protected]> Il problema degli inversi nel modulo (1) • Come abbiamo già visto, per il nostro sistema crittografico ci servono funzioni inverse : in analogia con quanto detto prima definiremo, all ‘interno di un modulo n, un numero x inverso moltiplicativo di un numero y se xy = 1 (mod n) • Ad es. , all’interno dell’insieme modulo 17, - l’ inverso di 3 è il numero 6, perché 6*3 = 1 (mod 17), - l’ inverso di 5 è il numero 7, perché 7*5 = 1 (mod 17) • Il problema è che però, a differenza dell’ aritmetica consueta, nell’aritmetica modulare non tutti i numeri hanno un inverso moltiplicativo (sono invertibili). 10 a.a. 2013/2014 1° sem. <[email protected]> Il problema degli inversi nel modulo (2) • Già l’esperienza comune dell’aritmetica dell’orologio ci mostra che, in modulo 60, i quarti d’ora (15) e le mezz’ore (30) non sono invertibili (non ammettono inverso) perché per qualunque numero si moltiplichi sia 15 come 30 non si arriverà mai ad ottenere 1. • Infatti, nel caso delle mezz’ore si avrà la serie ciclica 0,30,0,30,0,30…… (mod 60), mentre nel caso dei quarti d’ora si otterrà la serie ciclica 0,15,30,45,0,15,30,45….. (mod 60). 11 a.a. 2013/2014 1° sem. <[email protected]> Il problema degli inversi nel modulo (3) • Una minima riflessione ci fa capire che un simile comportamento si ha quando il numero x ed il modulo n hanno dei fattori in comune (le fette della torta), per cui x viene anche chiamato “divisore dello zero”. • Potremmo quindi supporre che un elemento sia invertibile solo quando i due numeri sono coprimi. • Un’ulteriore riflessione ci fa ritenere che, se il modulo n è un numero primo, allora, per definizione, nessun elemento x dell’insieme modulo avrà fattori in comune con n (sempre tralasciando l’1), per cui tutti gli elementi saranno coprimi con n, ed avranno il proprio inverso. 12 a.a. 2013/2014 1° sem. <[email protected]> Il problema degli inversi nel modulo (4) • Se invece il modulo N non è un numero primo, allora si troveranno sia casi di numeri invertibili sia casi di numeri non invertibili. • Comunque, un teorema di algebra modulare ci dà una mano, stabilendo che è garantita l’esistenza di un inverso se e solo se mcd (n,x)=1, il che è un altro modo di dire che n e x sono coprimi (il loro massimo comun divisore è 1). • Per esercitarsi, e prendere maggiore confidenza con le moltiplicazioni e le potenze modulari è opportuno dare un’occhiata al file “moduli_10-15.xls” , disponibile tra il materiale didattico. 13 a.a. 2013/2014 1° sem. <[email protected]> La funzione di Eulero • Abbiamo visto che in un modulo n l’insieme dei suoi elementi si divide nettamente, in relazione alla loro coprimalità con n , in due sottogruppi: quello dei non invertibili (detti anche divisori dello zero, perché sono i fattori/divisori del modulo n), gruppo non utilizzabile per le nostre esigenze, e quello degli invertibili , che costituisce la base del funzionamento dell’algoritmo RSA. • La cosiddetta funzione phi (Φ) di Eulero (detta anche indicatore di Eulero o anche funzione toziente) indica, all’interno di un modulo n, il numero dei coprimi con n, cioè il numero dei numeri che ammettono l’inverso in n. 14 a.a. 2013/2014 1° sem. <[email protected]> La funzione phi e il teorema di Eulero • Per la definizione di primo, se n è UN NUMERO PRIMO, allora Φ(n) = n- 1. • Si dimostra facilmente che, se n NON E’ UN NUMERO PRIMO ma è il prodotto di due numeri primi (p,q), allora Φ(n) = (p-1)*(q-1) • Teorema di Eulero : Dato un modulo n, per ogni elemento x >1 e coprimo con n si ha : x Φ(n) = 1 mod n (o anche x Φ(n)+1 = x mod n) (Controllare il funzionamento del teorema su “moduli_10-15.xls”) 15 a.a. 2013/2014 1° sem. <[email protected]> Il cifrario RSA (1) • A questo punto dovremmo possedere tutti gli strumenti per poter comprendere il funzionamento del cifrario RSA, che basa la sua forza crittografica sull’utilizzo di un modulo n molto grande (cfr. la sfida RSA citata prima, con più di 300 decimali per 1024 bit), risultato del prodotto di due numeri primi p e q. • Mentre la moltiplicazione dei due primi p e q è un’operazione assolutamente banale, l’ operazione inversa, cioè il recupero dei due primi p e q dato il modulo n richiede la fattorizzazione di n, operazione semplice per numeri piccoli ma che, per numeri assai grandi, considerata l’inesistenza ad oggi di un algoritmo risolutivo, richiede tempi esponenziali per i tentativi di soluzione (v. RSA challenges). 16 a.a. 2013/2014 1° sem. <[email protected]> Il cifrario RSA (2) FASI FUNZIONALI 1. CREAZIONE del MODULO : si scelgono due numeri primi (p e q) molto grandi (un centinaio e più di cifre esadecimali) e si prende il loro prodotto come modulo n. Il modulo costituisce l’ambiente di lavoro per ogni operazione di cifratura e decifratura, e quindi NON PUO’ NON essere conosciuto. Viene comunicato insieme con la chiave pubblica ed è contenuto, sempre insieme con essa, nel certificato di ogni titolare di firma digitale. Il modulo è talmente essenziale che, in alcune descrizione dell’algoritmo RSA, viene considerato la vera chiave pubblica, mentre alla chiave viene riservato un ruolo non primario, tanto che può essere uguale per gruppi di utenti. 17 a.a. 2013/2014 1° sem. <[email protected]> Il cifrario RSA (3) 2. CREAZIONE delle CHIAVI : si calcola la funzione di Eulero relativa al modulo n : Φ(n) = (p-1)*(q-1), e subito dopo il calcolo si procede alla eliminazione (per motivi di sicurezza) dei due primi p e q. La generazione delle chiavi avviene all’interno del modulo Φ(n), con queste modalità: • • 18 Si sceglie un intero coprimo con Φ(n), e quindi invertibile all’interno del modulo. Questo numero, detto e (encrypt), costituisce la chiave pubblica, che viene resa nota insieme con il modulo n (assolutamente NON Φ(n) !!!) Si calcola l’inverso di e all’interno del modulo Φ(n) : questa è la chiave segreta d (decrypt), che deve essere in possesso (utilizzabile, anche se non necessariamente nota, ad esempio in Italia è racchiusa nel ‘secure device’ (smartcard) e non risulta accessibile nemmeno al titolare) unicamente del titolare della chiave. a.a. 2013/2014 1° sem. <[email protected]> Il cifrario RSA (4) 3. CIFRATURA del MESSAGGIO: il messaggio M viene codificato in modo che risulti come un numero intero membro dell’insieme modulo n (se fosse più grande verrebbe diviso in blocchi compatibili). Il messaggio viene cifrato elevandolo alla potenza indicata dall’esponente e (chiave pubblica) all’interno del modulo n. Si ottiene così il messaggio cifrato (crittogramma) C. • 4. DECIFRATURA del MESSAGGIO: il crittogramma C viene decodificato elevandolo alla potenza indicata dalla chiave privata d all’interno del modulo n. Ricordiamo che le due chiavi sono l’una inversa dell’altra in Φ(n). • 19 C = Me (mod n) M = Cd (mod n) a.a. 2013/2014 1° sem. <[email protected]> Il cifrario RSA (5) • I più attenti si saranno chiesti come è possibile il funzionamento della cifratura/decifratura RSA, dato che avviene all’interno del modulo n, mentre le chiavi sono state scelte come inverse all’interno di un altro modulo, più piccolo, Φ(n)=(p-1)*(q-1) (tanto per fare un esempio minimo, se p=7 e q=11, • 20 n=77 e Φ(n)=60). Ebbene, e questo è il “trucco” che consente il funzionamento del cifrario RSA, attraverso il teorema di Eulero si dimostra che, nonostante i due moduli siano diversi, nello specifico caso del modulo toziente l’esito della decifratura è proprio il messaggio originale M. a.a. 2013/2014 1° sem. <[email protected]> Il cifrario RSA (6) • Se l’inverso di e venisse calcolato all’interno del modulo n sarebbe banale, visto che n e la chiave pubblica e sono conosciute, ricavarne la chiave segreta d, togliendo quindi qualunque efficacia all’algoritmo crittografico. • In realtà, grazie al teorema di Eulero, l’inverso di e viene calcolato in modulo (p-1)*(q-1), ed è allora del tutto evidente che, per conoscere tale modulo, occorre prima conoscere p e q, ossia aver fattorizzato n. Di conseguenza il conoscere la chiave pubblica non porta alcun contributo sensibile al problema della fattorizzazione. 21 a.a. 2013/2014 1° sem. <[email protected]> Perché RSA funziona? (1) (approfondimento assolutamente facoltativo) • Il messaggio iniziale M (plain text) viene cifrato: C = Me mod n • Il messaggio cifrato (crittogramma) viene decifrato: M’ = Cd mod n • Se l’algoritmo funziona, allora M’ = M. Scriviamo allora, per esteso: M’ = (Me mod n) d mod n = M e d mod n • Ricordando che e*d = 1 mod Φ(n), scriviamo M’ = M 1 mod Φ(n) mod n. Ora il problema è come passare un valore (cioè l’1) da un modulo ad un altro, cioè da Φ(n) a n. • Agganciandoci alle classi di congruità, ricordiamo anche che un numero x in modulo n rappresenta, nell’insieme degli interi, uno degli infiniti numeri x +kn (k da 0 a infinito) (Es. 3 mod 7 può corrispondere a 3,10,17, 24, 31 …) • Possiamo allora scrivere 1 mod Φ(n) come 1+ k * Φ(n) 22 a.a. 2013/2014 1° sem. <[email protected]> Perché RSA funziona? (2) (approfondimento assolutamente facoltativo) • Avremo quindi : M’ = M 1+ k * Φ(n) mod n , e così abbiamo eliminato l’ambiente modulo Φ(n). Ora, ricordando le proprietà degli esponenti, possiamo isolare sia M 1 (= M) come k : M’ = M * (M Φ(n)) k mod n. • Ora interviene il teorema di Eulero: siamo in ambiente modulo n, e quindi M Φ(n) = 1 ! E allora non ha più nessuna importanza il fatto che non conosciamo il valore di k, perché qualunque esso sia il risultato di 1k sarà sempre 1. • Di conseguenza avremo che : • M’ = M * 1k mod n, e cioè M’ = M : vale a dire che il messaggio risultato dal deciframento (M’) si rivela assolutamente identico al messaggio originale (M) . L’RSA funziona ! 23 a.a. 2013/2014 1° sem. <[email protected]> Esercitazione 1° (consigliata) • Utilizzando “rsa.xls”, introdurre nel foglio i seguenti dati (presi dall’esempio 8.4 del testo “Handbook of Applied Cryptography”, di Menezes, van Oorschot e Vanstone): Modulo = 6012707 (p=2357 * q=2551) Chiave pubblica e = 3674911 Chiave privata d = 422191 • Calcolare i messaggi C corrispondenti ai seguenti messaggi M: 5555555 , 1234567, 2 , 999 , 7000000, e notate se c’è qualche caso particolare. 24 a.a. 2013/2014 1° sem. <[email protected]> Esercitazione 2° (consigliata) • Provare ad effettuare qualche operazione di cifratura RSA utilizzando RSATool2, sia nella versione 11 come nella 17. • Modificate i parametri che specificano la lunghezza del modulo e la base numerica di rappresentazione. • Descrivete le differenze individuate tra le due versioni del programma. 25 a.a. 2013/2014 1° sem. <[email protected]>