ALGORITMI ASIMMETRICI

I problemi sopra citati vengono risolti dalla crittografia a chiave pubblica.

Un utente possiede una coppia univoca di chiavi, ed è importantissimo che sia univoca, composta da una chiave per cifrare il messaggio che viene resa pubblica e da una che è in grado di decifrare il messaggio, e solo questa è in grado di farlo, che viene tenuta segreta dall’utente in modo che solo lui possa utilizzarla.

Le due chiavi sono create matematicamente in maniera tale che un messaggio cifrato da una delle due può essere decifrato solo dall’altra. In pratica se si vuole spedire un messaggio ad una certa persona lo si critta con la sua chiave pubblica, e si è sicuri che solo quella persona con la propria chiave privata sarà in grado di decifrarla, paradossalmente neanche chi critta il messaggio può più decrittarlo con la chiave pubblica in suo possesso nonostante sia servita per crittarlo.

Gli algoritmi simmetrici possono essere utilizzati per creare le cosiddette firme digitali.

Dunque il vantaggio principale fornito dalla crittografia asimmetrica o a chiave pubblica sta nella facilita con cui vengono gestite le chiavi, infatti non c'è più la necessità di un canale sicuro per lo scambio, poiché se un utente necessita di ricevere un messaggio cifrato da un altro, non fa altro che spedirgli la sua chiave pubblica, sicuro che solo lui con la chiave privata potrà decifrare il messaggio, dunque se la chiave pubblica cadesse in mani sbagliate non sarebbe un grosso problema.

USO COMBINATO

Ma neanche questi algoritmi risolvono del tutto i problemi infatti ci sono vari motivi per cui è consigliabile propendere per un uso combinato dei due sistemi a chiave segreta e a chiave pubblica :

Nel caso in cui si debbano crittare grandi quantità di dati la crittografia asimmetrica impiegherebbe molto tempo per l’operazione rispetto ad  un algoritmo simmetrico, e sarebbe dunque obbligata la scelta di quest’ultimo.
E se il messaggio è diretto a più destinatari, la cifratura asimmetrica va ripetuta per ognuno, infatti per ogni destinatario bisogna creare una coppia di chiavi diversa.

 RSA

Il codice RSA nasce nel 1977 dopo circa un anno di intenso lavoro da parte di tre studiosi del MIT di Boston R. Rivest, A. Shamir, L. Adelman i quali volevano mettere in pratica la teoria formulata da Diffie e Hellman: un cifrario a doppia chiave pubblica e privata .

L’RSA è dunque un cifrario a chiave pubblica che permette di cifrare un messaggio attraverso un procedimento che sfrutta i numeri primi.

Espongo il procedimento con relativo esempio:

Il destinatario sceglie due numeri primi molto elevati p e q e calcola il loro prodotto N. I due numeri primi devono essere molto elevati in modo da rendere difficile la fattorizzazione di N, cioè non deve essere impossibile risalire a p e q. Utilizzando dei numeri primi dell’ordine di 10350 i tempi di fattorizzazione diverrebbero cosi lunghi anche per tutti i computer del mondo collegati a lavorare insieme che si potrebbe parlare di funzione univoca, cioè solo sapendo p e q si può risalire ad N e non viceversa conoscendo N risalire a p e q.

p = 17, q = 11
n = p*q = 17*11 = 187

Sempre il destinatario sceglie un altro numero e che deve essere primo con [(p-1)*(q-1)]

e = 7

A questo punto il destinatario divulga e ed n che saranno la chiave pubblica.
Ora tocca al mittente che per prima cosa in base alle regole stabilite pubblicamente divide il messaggio in blocchi che trasforma in numeri Mi sempre in base alle regole concordate, ottenendo cosi un vettore di numeri che cifrerà uno alla volta.

Per comodità cifriamo una sola lettera X che in ASCII è 1011000 cioè 88 in decimale.
M = 88

Il mittente deve ora cifrare M dando origine al crittogramma C attraverso la formula: C = Me(mod N)

C = 11

Il crittogramma è così concluso e il mittente lo può spedire al destinatario.
Il destinatario in possesso di p e q calcola d la sua chiave privata per la decifrazione, d è data dalla formula: e*d = 1*[mod[(p-1)*(q-1)]] che viene risolta tramite un algoritmo che usa una variante del teorema di Euclide per trovare l’m.c.d..

7*d = 1*[mod(16*10)]
7*d = 1*mod(160)
d = 23

L’ultima cosa da fare a questo punto per il destinatario per poter leggere il messaggio è applicare la formula di decifrazione, M = Cd [mod(p*q)], e una volta trovato M risalire al testo tramite le regole concordate pubblicamente. 

M = Cd [mod(p*q)]
M = 1123 [mod(187)]
M = 88
M = 1011000 corrispondente a X

Questo protocollo asimmetrico e tutt’ora considerato sicurissimo se usato bene e se viene tenuta ben segreta la fattorizzazione di N cioè p e q, in quanto non e possibile per motivi di calcolo risalire a essi che sono indispensabili per decifrare il testo.

L’unico e grosso inconveniente dell’RSA è che con l’aumentare della grandezza del messaggio diventa lungo e pesante da applicare, ma per la sicurezza si fa questo ed altro!

Precedente Su