Crittografia a chiave pubblica

Solo quello che ti interessa | Crittografia a chiave pubblica - Algoritmo RSA
Copyright admin [email protected]
http://www.belloma.it/crittografia-a-chiave-pubblica-algoritmo-rsa/
Crittografia a chiave pubblica - Algoritmo RSA
- Nel 1977, Martin Gardner (divulgatore scientifico americano) pubblico nella
rivista Scientific American un articolo intitolato “Un nuovo tipo di cifrario, per
cui ci vorrebbero milioni di anni per poterlo decifrare”. Qui spiegò il sistema a
chiave pubblica adottato ed espose il messaggio cifrato insieme alla sua
chiave pubblica N di 130 cifre. Gardner sfidò i lettori a decifrare il messaggio,
a partire dall’informazione data e indicò come traccia che la soluzione
richiedeva di fattorizzare N nei suoi componenti primi p e q.
- Gli ideatori di questo sistema furono i ricercatori del MIT, Ron Rivest, Adi
Shamir e Len Adelman. - La risposta corretta fu ricevuta 17 anni più tardi e per trovarla fu necessaria la
collaborazione di più di 600 persone. Le chiavi p e q individuate avevano ben
64 cifre ed il messaggio cifrato fu “le parole magiche sono schizzinose
ossifraghe”. - L’algoritmo presentato era l’RSA acronimo dei cognomi dei suoi inventori. Si
tratta della prima realizzazione pratica del modello a chiave pubblica proposto
da Diffie ed oggi è impiegata abitualmente. Come dimostra questa storia, il
processo di decifrazione è incredibilmente laborioso, ma comunque non
impossibile (si ricorda che il problema della sicurezza è individuare un sistema
che duri abbastanza per crearne uno ancora più difficile da “rompere”).
- I sistema RSA è fondato sulle proprietà dei numeri primi. Di seguito le
nozioni principali che ne sono la base:
- Il numero di interi minori di n che sono primi (comprimi) con n si chiama
funzione di Eulero e si esprime con φ(n). Es: φ(8) = 4 poiché 8 è primo
con 1,3,5,7.
- Se n=pq dove p e q sono numeri primi, allora φ(n)=(p-1)(q-1).
- Dal piccolo teorema di Fermat (ap ≡ a mod. p), si deduce che ap-1 ≡ 1
mod. p dove a è comprimo (cioè MCD(n,a)=1) rispetto a p (p è un numero
primo).
- Per il teorema di Eulero, se n e a sono comprimi (MCD(n,a)=1), allora a
φ(n) ≡ 1 mod. n.
- Il sistema è detto a chiave pubblica per il fatto che la chiave di criptazione è
messa a disposizione degli emittenti interessati ad inviare i messaggi. Ogni
ricevente possiede una chiave pubblica.
- Mario genera un valore n come prodotto tra due numeri primi n=pq e si sceglie
un valore e in modo che MCD(φ(n),e) = 1. I dati che diventano pubblici sono il
valore di n ed il valore di e. La coppia (n,e) rappresenta quindi la chiave
pubblica del sistema. I valori p e q si chiamano numeri RSA.
- Mario calcola il valore d tale per cui de ≡ 1 mod. φ(n), cioè de ≡ 1 mod.
(p-1)(q-1). La coppia (n,d) rappresenta la chiave privata del sistema.
- La forza dell'algoritmo sta nel fatto che per calcolare d da e o viceversa, non
basta la conoscenza di n, ma serve il numero (p-1)(q-1) infatti fattorizzare
(cioè scomporre un numero nei suoi divisori) è un'operazione molto lenta. La
sicurezza di RSA, dunque è basato sull'elevata complessità
page 1 / 4
Solo quello che ti interessa | Crittografia a chiave pubblica - Algoritmo RSA
Copyright admin [email protected]
http://www.belloma.it/crittografia-a-chiave-pubblica-algoritmo-rsa/
computazionale della fattorizzazione in numeri primi: fattorizzare un
numero grande, diciamo con oltre 100 cifre, come prodotto di due numeri
primi è un’operazione improponibile (non esiste un metodo conosciuto), tempi
computazionali di millenni.
- Pietro impiega la chiave pubblica di Mario (n,e) per criptare un messaggio m,
mediate la funzione M = me mod. n. Il messaggio cifrato M viene inviato a
Mario. Poiché, l’operazione Md=(me)d mod. n, equivale a dire che Md = m
mod. n, allora Mario, con la sua chiave privata può ottenere il messaggio
originario m.
- Esempio:
- p=3 e q=11,
- quindi n=pq=33
- quindi φ(33)=(3-1)(11-1)=20
- Scelgo e <20 in modo che non abbia divisori comuni con 20 (è comprimo)
(non è necessario che sia primo). Supponiamo e=7 , quindi la chiave
pubblica di Mario sarà (33,7).
- Individuo la chiave privata d che sarà l’inverso di 7 modulo 20, cioè 7d ≡
1 mod 20, visto che 21/20 da resto 1, 7*3 = 21 ≡ 1 mod 20, per tanto d
=3. La chiave privata sarà (33,3).
- Supponiamo che Pietro vuole inviare a Mario il messaggio m=9, la sua
criptazione sarà data da M = 97 = 4.782.969 ≡ 15 mod. 33. Quindi il
messaggio cifrato è 15.
- Mario riceve il messaggio e lo decifra con m = 153 = 3.475 ≡ 9 mod. 33. Il
messaggio è stato quindi decifrato correttamente.
- E’ evidente che al crescere di p e q, la decifrazione è un’operazione laboriosa,
in quanto occorre una grande capacità di calcolo per trovare la congruenza, es:
se p=23 e q=17, n=391, e=3, d=235, volendo cifrare il messaggio “34”,
avremo 343=39.304≡204 mod. 391 occorrerà risolvere la seguente
congruenza 204235 ≡ 34 mod. 391! Si osservi il grado della potenza! Elementi sui numeri primi utilizzati nella crittografia
- Lavorare con modulo di numeri primi, costituisce la base dei moderni
sistemi crittografici.
- Il prodotto di numeri primi costituisce una funzione non reversibile, nel
senso che non esiste un calcolo efficace che consenta di ottenere
immediatamente il valore dei due fattori originari. Questo principio è usato
nell’algoritmo RSA.
- I numeri primi sono un sottoinsieme dei numeri naturali. Il teorema
fondamentale dell’aritmetica stabilisce che qualsiasi numero maggiore di 1
può essere rappresentato da un unico prodotto di potenze di numeri primi (
fattorizzazione).
- Ad eccezione del 2, tutti i numeri primi sono dispari e gli unici numeri primi
consecutivi sono 2 e 3.
- I numeri primi consecutivi, che si trovano cioè ad una distanza numerica di 2,
come 11 e 13, o 17 e 19, vengono detti numeri primi gemelli.
page 2 / 4
Solo quello che ti interessa | Crittografia a chiave pubblica - Algoritmo RSA
Copyright admin [email protected]
http://www.belloma.it/crittografia-a-chiave-pubblica-algoritmo-rsa/
- Numero primo di Marsenne: è un numero primo Mn esprimibile nel seguente
modo Mn=2n-1. Sono numeri primi di Marsenne M2, M3, M5, M7, M13, M17, M19,
M31. Attualmente si conoscono solo una quarantina di numeri di Marsenne. Il
più grande, individuato nel 2013, è M57885161. Questo numero ha oltre 17
milioni di cifre. Si pensi che il numero di particelle di tutto l’universo è minore
di 2300.
- Numero primo di Fermat: è un numero primo Fn esprimibile nel seguente
modo (n numero naturale): Si conoscono solo 5 numeri primi di Fermat: F0, F1 , F2, F3 , F4.
- Piccolo teorema di Fermat: ap ≡ a mod. p, dove p è un numero primo e a un
qualunque intero (che equivale a ap-1 ≡ 1 mod. p).
I principi usati da RSA - Identità di Bézout: Se a e b sono numeri interi positivi, allora MCD(a,b)=k se
esistono due numeri interi p e q che verificano pa+qb=k. Es: MCD(15,6)=3 ,
15(1) + 6(-2)= 15-12=3, p=1 e q=-2.
- Lavorando in modulo n, possiamo stabilire che se MCD(a,n)=1 (a ed n sono
primi tra loro, comprimi) esisteranno gli interi p e q tali per cui pa+qn=1.
Poiché stiamo lavorando in modulo n , qn=0 mod. n, quindi pa=1, ovvero p è
l’inverso di a in modulo n.
- Il numero di interi con inverso in modulo n sarà il numero di naturali a minori di
n che verificano MCD(a,n)=1. Il numero di valori (di a) che verificano tale
condizione, e cioè sono primi con n si indica con φ(n) e si chiama Funzione di
Eulero.
- Se la scomposizione in fattori primi di n è n = p1a1 p2a2… pkan , allora
- Ad esempio n=1.600, abbiamo che n=2652. Per tanto φ
(1600)=1600(1-1/2)(1-1/5)=640. Ciò significa che ci sono 640 numeri a tali che
MCD(a,1600)=1.
- Se n è un numero primo, per qualsiasi valore di a<n, MCD(a,n)=1, quindi φ
(n)=n-1.
page 3 / 4
Solo quello che ti interessa | Crittografia a chiave pubblica - Algoritmo RSA
Copyright admin [email protected]
http://www.belloma.it/crittografia-a-chiave-pubblica-algoritmo-rsa/
Perché funziona RSA - Mettendo insieme tutte queste argomentazioni, è possibile capire l’algoritmo
RSA.
- L’algoritmo codifica una corrispondenza numerica m di un messaggio in M
attraverso la funzione M = me mod. n, dove e è tale che MCD(φ(n),e) = 1 con
n=pq (p e q numeri primi; φ(n)=(p-1)(q-1))
- L’algoritmo consente una decodifica di M in m attraverso la funzione Md = m
mod. n, dove d è tale che de ≡ 1 mod. j(n).
- Dimostrazione
- Il piccolo teorema di Fermat afferma che dato un numero primo p,
allora per qualunque intero a si ha: ap ≡ a mod. p; ma si può esprimere
anche in questo modo: dato un numero primo p e un numero a coprimo
con p, allora ap-1 ≡ 1 mod. p (che si ottiene dividendo ambo i membri
dell'equazione per a).
- Il teorema di Eulero è una generalizzazione del piccolo teorema di
Fermat e stabilisce che dato un intero a e un intero positivo n coprimo
con a, allora aφ(n) ≡ 1 mod. n
- Md=(me) d mod. n = med mod. n
- Siccome ed mod. φ(n) = 1, ed=kj(n)+1=k(p−1)(q−1)+1,
- Sostituendo med mod. n = mk(p-1)(q-1)+1 mod. n = mmk(p-1)(q-1) mod. n
- Dal teorema di Eulero-Fermat mk(p-1)(q-1) mod. p = (m(p-1)) k(q-1) mod. p =
1 k(q-1) mod. p=1 (essendo m(p-1)mod. p = 1).
- Analogamente m(p-1)(q-1) mod. q = (m(q-1)) k(p-1) mod. q = 1 k(p-1) mod. q = 1
(essendo m(q-1) mod. q = 1).
- Di conseguenza abbiamo le due uguaglianze mk(p-1)(q-1) mod. p = 1 e
(p-1)(q-1) mod. q = 1
- Per il teorema cinese del resto possiamo scrivere mk(p-1)(q-1) mod.
(pq)=1, ovvero mk(p-1)(q-1) mod. n = 1
- Sostituendo med mod. n = mmk(p-1)(q-1) mod. n = m1 = m.
page 4 / 4