la crittografia a doppia chiave in INTERNET

La crittografia è l'arte (arte in senso lato, ma arte perché richiede immaginazione, tecnica e ingegnosità) delle scritture segrete. Etimologicamente deriva dalle parole greche kriptos = nascosto e graphos = scrittura.

Le scritture segrete possono raggrupparsi in tre classi fondamentali:

La terza classe di scritture segrete è quella che presenta maggiori garanzie di sicurezza dall'attacco dei decriptatori (hacker), i decifratori non autorizzati. Le scritture cifrate richiedono la conoscenza di una chiave con la quale si stabiliscono le regole per passare dal messaggio in chiaro al messaggio criptato e viceversa. Purtoppo, la necessità di concordare un codice tra A e B comporta che le parti devono scambiarsi la chiave e dunque devono disporre di un canale "sicuro". Facile, certo... ma non pratico. Se A e B non possono incontrarsi fisicamente cosa fanno? Si chiamano per telefono o inviano una e-mail? Poco sicuro. Meglio un piccione viaggiatore (se non arriva la chiave è stata intercettata)!

Nel 1976, due criptologi statunitensi misero a punto un sistema che eliminava il problema: il sistema prende il nome di crittografia a chiave pubblica.
netsacpe (893 bytes)Coloro che usano il browser di Netscape, avranno notato il simbolo di una chiave spezzata nell'angolo in basso a sinistra (o sulla barra di stato). Bene, quando le parti della chiave si ricompongono, la trasmissione è a prova di hacker. Infatti, il browser sta trasmettendo le informazioni codificate con la chiave pubblica del sito che stiamo consultando. Anche Explorer lo fa, ma il simbolo della chiave non si vede (anche perché l'utente sa quando sta trasmettendo un codice sicuro).

Le conoscenze teoriche alla base della criptatura a chiave pubblica sono piuttosto articolate (aritmetica con insiemi finiti, funzione di Eulero, teorema di Fermat-Eulero); tuttavia, anche limitandoci ad applicare le semplici formule algebriche necessarie, possiamo renderci realmente conto di come funziona il metodo. Poi, completeremo la discussione con alcune note chiarificatrici.

public key (3,5 Kb)Per criptare un testo si usa un algoritmo controllato da una chiave di codifica detta pubblica, ma per decodificarlo si usa un algoritmo correlato al primo ma controllato da una chiave detta privata.
La strategia di questa codifica è legata al fatto che l'algoritmo di decodificazione non funziona con la chiave pubblica: occorre necessariamente la chiave privata.

public key (3,5 Kb) Le chiavi pubbliche vengono distribuite in rete, mentre quelle private sono note soltanto ai destinatari. Per esempio, il gestore di un negozio on-line che vende i suoi prodotti su INTERNET, fornisce ai suoi clienti la chiave pubblica con cui possono crittografare (con adatti programmi on-line) il numero della propria carta di credito. A questo punto, il messaggio criptato può essere decodificato solo dal gestore del negozio in quanto unico possessore della chiave privata.
Questa strategia comporta che qualora un malintenzionato (cliente o meno) riuscisse ad accedere al file che contiene i numeri criptati delle carte di credito memorizzati nel data base del negozio, non potrebbe utilizzarli in quanto non conosce la chiave privata. Ciò indipendentemente dal fatto che tutti i clienti utilizzano la stessa chiave pubblica.

private key (3,5 Kb)

La questione può essere compresa pienamente solo ricorrendo ad un esempio pratico.

L'esempio che abbiamo esaminato era basato su numeri primi piccoli (e quindi non dà ragione della complessità del metodo). In realtà, vengono usate coppie di numeri primi formati da almeno 40 cifre che, elaborati al computer forniscono le chiavi pubbliche e private. E' evidente allora come anche l'utente che codifica il proprio messaggio, poiché non conosce nessuno dei numeri primi generatori, p e q, (è facile trovare i generatori di 35, ma non lo è per un numero di oltre 1600 cifre: anche con un supercomputer occorrono anni) non è in grado di ricavare la chiave privata necessaria per gestire l'algoritmo di decodifica.

L'operatore MOD n implica che i numeri con cui si sta trattando sono interi, finiti e pari ad n; nel nostro caso gli interi fra 1 e 35. Questo significa che in una matematica finita MOD n non esistono i decimali: in questo caso non sono necessari in quanto il metodo si fonda sull'uso di numeri primi.

Il calcolo 37 MOD 35 si sviluppa con questa formula (dove INT[...] corrisponde al risultato intero, eliminando i decimali):

37 - INT[37/35]x35 = 2187 - INT[62,465...]x35 = 2187-62x35 = 17

Il calcolo 177 MOD 35 si sviluppa con questa formula:

317 - INT[177/35]x35 = 3

La correlazione tra l'algoritmo di codifica e quello di decodifica, permette anche di risolvere un problema non marginale...
Come fa il ricevente ad essere sicuro che il messaggio crittografato sia inviato proprio da X e non da qualcuno che si spaccia per lui? Questa è un'importantissima questione, particolarmente nella trasmissione di messaggi militari e di acquisto-vendita di grandi pacchetti di titoli azionari, che oltre a non dover essere decifrati, devono garantire la loro origine.

Ecco il protocollo da adottare:

Se avete qualche dubbio, è facile chiarirlo: gli algoritmi di codifica e decodifica, essendo uno l'inverso dell'altro, sono intercambiambiabili, ovviamente con le loro rispettive chiavi.

L'utilizzo di un sistema di crittografia a chiave pubblica costituisce al momento la forma di protezione più sicura, ma occore tener conto che il suo impiego non è lo standard per la corrispondenza on-line... attenzione!

nemesi

copyright Marcello Guidotti, 1999
Questo articolo può essere liberamente pubblicato su qualsiasi rivista interamente o in estratto, purché sia citata la fonte e l'indirizzo di questo sito.