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]>