Crittografia
Lunedì 29 Gennaio, 2007Visto che si parla sempre più spesso di crittografia, decifrazione di codici, violazione delle protezioni adottate sui DVD e quant’altro, ecco alcuni accenni utili per comprendere, almeno a grandi linee, un’argomento estremamente vario, interessante e complesso.
L’arte della critografia, cioè la capacità di nascondere un messaggio a tutti tranne che ad uno specifico destinatario, risale a tempi antichissimi. In generale crittografare un messaggio significa scegliere un metodo di codifica, e ve ne sono di svariati. L’inconveniente, sino a poco tempo fa, era che tale metodo doveva essere conosciuto non solo dal mittente (colui che criptava il messaggio) ma - ovviamente - anche dal destinatario. In altre parole mittente e destinatario devono trovare un modo per scambiarsi il metodo di codifica.
Questa semplice operazione di scambio del codice, tuttavia, poteva rendere vana l’intera operazione. Basta infatti intercettare il metodo e saremo tutti in grado di decifrare il messaggio.
Con l’avvento di Internet e la necessità di transizioni sicure, un metodo del genere (a chiave privata) renderebbe la rete sovraccarica. Inoltre ci sarebbero altre probabilità di vedersi intercettati i codici per decodificare i messaggi. Ad esempio, nel momento in cui volessimo inviare alcuni dati riservati verso un sito Web, quest’ultimo dovrebbe informarci su come codificare tali informazioni. Questo scambio sarebbe altamente rischioso oltre che oneroso a livello di comunicazione.
Fortunatamente per il Web, nel 1976 - in tempi non sospetti, due matematici della Stanford University in California, Whit Diffie e Martin Hellman, proposero pubblicamente per la prima volta un metodo del tutto diverso: la crittografia a chiave pubblica.
Per capire esattamente come funziona la crittografia a chiave pubblica pensiamo alla codifica e alla decodifica di un messaggio come all’apertura di un porta! Nella codifica standard, quella discussa all’inizio di questo Post, la chiave per aprire la porta corrisponde al metodo utilizzato per codificare il messaggio. La porta (il messaggio) si chiude (codifica) e si apre (decodifica) sempre con la stessa chiave (metodo). Diventa così chiaro che mittente e destinatario devono possedere la medesiva chiave per poter aprie/chiudere la porta. Recapitare questa chiave diventa quindi un lavoro immane se proiettato su Internet - ognuno dovrebbe possedere una chiave diversa!
La crittografia a chiave pubblica, al contrario, prevede l’uso di due chiavi distinte: una chiave A per chiudere la porta e una chiave B per aprirla! Geniale! Risulta immediatamente evidente che scompare la necessità di nascondere al mondo la chiave A. Entrare a conoscenza della chiave A, infatti, non compromette in alcun modo la sicurezza della nostra porta. Riportando su Internet questo metodo quello che accade è semplice e sicuro. Quando un sito Web - come una banca - vuole far effettuare transizioni sicure ai suoi clienti, invia a questi una chiave A. Badate che questa è uguale per tutti i clienti, in quanto serve solo a codificare - ovvero a proteggere - i dati e non è sufficente per decodificarli. In pratica tutti i clienti della banca usano la medesima chiave per proteggere i lori dati. Tuttavia la conoscenza della sola chiave A non basta per decoficare i dati protetti; serve la chiave B. Quest’ultima è - ovviamente - conosciuta e tenuta in gran segreto dalla banca stessa, l’unica che conosce sia la chiave A che la chiave B. In questo modo siamo certi che solo la banca sarà in grado di decodificare i dati inviati, come il nostro numero di carta di credito.
Ma come è possibile creare un codice che rispetti questi requisiti? Com’è possibile, in altre parole, essere sicuri che con la sola chiave A nessuno riesca a determinare la chiave B?
Dopo l’articolo del 1976 di Diffie e Hellman qualcuno cominciò a dubitare che una chiave di tipo pubblica fosse davvero realizzabile. Alla fine, tuttavia, la soluzione fu trovata da tre matematici del MIT, Ron Rivest, Adi Shamir e Leonard Adleman.
Ho segnato in neretto l’iniziali dei loro cognomi in quanto il codice da loro escogitato è oggi conosciuto con la sigla cifratura RSA.
Visto che mi sono già dilungato più del dovuto, non entro nei dettagli matematici spinti - che potrebbero non interessare a tutti (mi ripropongo di parlarne in modo più approfondito su Pensieri Sottili quanto prima) - tuttavia, tanto per avere un’idea di quello che sta alla base della cifratura RSA, sappiate questo: se faccio moltiplicare a un computer due numeri primi molto grandi, quest’ultimo è in grado di eseguire l’operazione in breve tempo. Se provo ad eseguire il compito inverso (dato un prodotto, quali sono i due numeri primi in cui lo si può scomporre?), un computer impiegherebbe migliaia di anni.
N = p x q ; Dato N è praticamente impossibile ottenere p e q in tempi ragionevoli
I numeri primi, dunque, sono alla base delle moderne teniche di codifica. La difficoltà di scomporre in fattori primi numeri molto grandi è cruciale per la sicurezza degli odierni metodi di commercio.





















Giovambattista Fazioli ha detto:
Vedere anche il sito ufficiale del RSA
La cifratura RSA | Undolog.com ha detto:
[...] Crittografia Web Developer [...]