Você está na página 1de 6

Crittografia asimmetrica (o a chiave pubblica)

Introduzione:

La crittografia simmetrica a chiave privata come ad esempio il DES, non il metodo


crittografico ideale per le comunicazioni e le transazioni su Internet: il limite fondamentale
rappresentato dalla necessit di un canale sicuro e di un accordo preventivo per lo scambio
delle chiavi e questo non funzionale nei casi in cui necessario stabilire connessioni
sicure estemporanee.

La crittografia a chiave pubblica nacque nel maggio del 1975, come conseguenza questo
problema.

L'idea alla base delle crittografia asimmetrica quello di avere due chiavi diverse, una
pubblica per la criptazione e una privata per la decriptazione, che deve essere mantenuta
segreta. In questo caso non necessario lo scambio delle chiavi, che per la maggior parte
saranno pubbliche.

Se si riesce a rendere impossibile o molto complesso dedurre la chiave privata dalla chiave
pubblica, allora la chiave pubblica pu essere resa nota e messa a disposizione di tutti gli
utenti, in un ipotetico elenco di chiavi di codifica.

Vediamo levoluzione del funzionamento degli algoritmi mediante un esempio con la


comunicazione tra due utenti ( Anna e Bruno) che pone sul messaggio una chiave, mediante
un lucchetto immaginario:

-Anna manda a Bruno il messaggio in una scatola chiusa con un suo lucchetto A: n Bruno
n gli intrusi possono aprirlo;

-Bruno lo rispedisce ad Anna aggiungendo un suo lucchetto B: nessuno ora in grado di


aprirlo;

- Anna toglie il suo lucchetto e rimanda il pacco a Bruno, che ora ha solo il suo lucchetto e
che alla sua ricezione pu aprirlo e leggere il messaggio.
In questo caso per il messaggio deve essere trasmesso tre volte con enorme dispendio di
risorse: l' idea migliore quella descritta di seguito, dove viene inviato il "lucchetto" e non
il messaggio:

-Bruno manda ad Anna il proprio lucchetto aperto e questa lo conserva fino a che ha
necessit di spedire qualcosa a Bruno:

-Quando Anna deve spedire un messaggio a Bruno, lo chiude con il suo lucchetto e glielo
invia: senza il triplo invio del messaggio ci siamo riportati nella situazione descritta in
precedenza.

Formalmente necessario trovare una funzione ("il lucchetto") la cui trasmissione su canali
insicuri non comprometta l'algoritmo, che sia facile da applicare (parte pubblica che chiude
il lucchetto) ma difficile da invertire (parte privata che apre il lucchetto).

La chiusura del lucchetto viene effettuata con una specifica chiave pubblica che ciascun
utente mette a disposizione di tutti gli altri utenti che necessitano di tramettergli messaggi.
La chiave privata invece segreta, in possesso a ogni utente, che la utilizza per "aprire" il
lucchetto e leggere il messaggio.

Questo meccanismo implementato ancora meglio negli algoritmi di crittografa


asimmetrica, come ad esempio nell'algoritmo RSA (dal nome dei suoi creatori Rivest,
Shamir e Adleman).
Naturalmente le due chiavi devono essere tra loro indipendenti, in modo che dalla prima
non si possa in nessun modo ricavare la seconda.

Con la crittografia asimmetrica:

- si risolve il problema della riservatezza: criptando il messaggio con la chiave pubblica


solo il possessore della chiave privata in grado di decriptarlo;
- si risolve il problema dell autenticit del mittente: criptando il messaggio con la chiave
privata solo con la corrispettiva chiave pubblica questo pu essere decriptato e la chiave
pubblica conservata in registri consultabili ma gestiti in modo sicuro dove a ogni chiave
pubblica associata l'identit certa del proprietario.

Cifrario RSA (o MIT)


L'algoritmo RSA stato descritto nel 1977 da Ronald Rivest, Adi Shamir e Lonard
Adleman al MIT ( Massachusetts Institute of Technology).
L' algoritmo RSA "lavora" sfruttando i numeri primi e come chiave utilizza un numero n
ottenuto proprio dal prodotto di due numeri primi p e q, cio n = p * q.
inoltre importante che i due numeri primi siano molto grandi, in modo da rendere difficile
risalirvi partendo dal valore moltiplicato.

Descrizione dell'algoritmo

Il funzionamento dell'algoritmo RSA il seguente:

- A deve spedire un messaggio segreto a B;


- B sceglie due numeri primi molto grandi, li moltiplica tra loro ed esegue i passaggi per la
generazione delle chiavi;
- B invia ad A "in chiaro" la chiave pubblica che ha ottenuto;
- A usa questa chiave per crittografare il messaggio;
- A manda il messaggio a B, che chiunque pu vedere ma non decodificare;
- B riceve il messaggio e utilizza la sua chiave privata, che solo lui conosce, per decifrare il
messaggio.

Possiamo scomporre lalgoritmo in due componenti principali:


1- la generazione delle chiavi;
2- l'algoritmo crittografico vero e proprio.

Generazione delle chiavi

Il primo passo dell'algoritmo di generazione delle chiavi quello di scegliere due numeri
primi p e q e di calcolare il loro prodotto n.

Quindi viene scelto un numero e , coprimo e pi piccolo di (p - l ) ( q - 1).

(Due numeri interi a e b si dicono coprimi, o primi tra loro, se e solo se essi non hanno
nessun divisore comune eccetto 1 e 1)

L'algoritmo RSA procede calcolando un numero d tale che:

(d * e) mod (p - l ) ( q - 1) = 1

dove mod indica l'operazione modulo, ovvero il resto della divisione intera.
Per calcolare d andiamo per tentativi sostituendo un numero intero a k nella seguente
relazione, ottenuta dalla formula inversa della precedente

( ( 1)( 1)) + 1
=

Da questa espressione si ottiene:


- la chiave pubblica composta dalla coppia (e, n);
- la chiave privata composta dalla coppia (d, n).

Esempio:

Prendiamo ad esempio come numeri RSA p = 3, q = 11.


Isoliamo
n = p * q = 33 e (p - l ) ( q - 1) = 2 10 = 20

Come numero coprimo minore di 20 scegliamo e = 7 e da questo individuiamo d tale che:

d * 7 mod 20 = 1

Sostituiamo la costante k nella formula inversa partendo da 1 e facendolo crescere fino a che
si ottiene un numero intero:

Nel nostro caso viene subito soddisfatta per k = 1:

(1 20) + 1 21
= = =3
7 7

-la chiave pubblica (7,33);


-la chiave privata (3.33).

Algoritmo crittografico

Cifratura del messaggio da parte del mittente

Il messaggio m che deve essere trasmesso viene innanzi tutto espresso in forma di numero
e deve essere minore di n: questo pu anche essere ottenuto convertendo il messaggio in
codice ASCII e suddividendolo in blocchi.

La dimensione dei blocchi deve essere tale da richiedere un numero k di bit tale che
Corrisponda al numero di bit corrispondenti alla lunghezza di n tradotto in codice binario.

Nel nostro esempio simbolico, con n=33 possiamo operare con blocchi massimi di
6 bit ciascuno, mentre in realt si opera su 64 256 bit.
Se il nostro messaggio fosse composto dalla semplice codifica ASCII della parola ABC, la
sua codifica originale sarebbe, in forma binaria:

A = 01000001
B = 01000010
C = 01000011

Raggruppandoli in informazioni di 6 bit :

01000001
01000010
01000011

Si ottiene il messaggio in chiaro:

16 20 9 3

Il crittogramma c viene codificato calcolando come c = me mod n (c risulta minore di n).

traducendoli in decimale e applicando la formula c = me mod n, otteniamo:

167 mod 33 = 25
207 mod 33 = 26
97 mod 33 = 15
37 mod 33 = 9

Quindi il messaggio crittografato sar:

25 26 15 9

inoltre importante specificare nel messaggio che i numeri sono da 6 cifre binarie.

utile ricordare che chiunque pu inviare questo messaggio, in quanto la chiave


di trasmissione pubblica. Il destinatario invece l'unico che pu decrittare questo testo,
utilizzando la formula inversa, cio:

m = cd mod n

Decifrazione del messaggio da parte del destinatario

Il messaggio crittografato c che giunge al destinatario viene decodificato calcolando

cd mod n

Considerando il messaggio cifrato del nostro esempio si dovr calcolare i seguenti valori:

253 mod 33= 16


263 mod 33 = 20
153 mod 33 = 9
93 mod 33 = 3

e si riotterr il messaggio originale:

16 20 9 3

Traducendo i numeri in binario


16 = 010000
20 = 010100
9 = 001001
3= 000011
unendoli in gruppi di 8 bit:
01000001
01000010
01000011

E convertendo i tre numeri trovati in codice ACII si otterr la stringa ABC.

Fonti:

Dispense fornite dal prof. Ganzetti

Você também pode gostar