Crittografia, istruzioni per l'utilizzo
Le firme digitali saranno presto protette dal sistema basato sull'algoritmo Rsa
La cifratura del messaggio garantirà assoluta sicurezza ai documenti elettronici


di
Leonardo Felician
(Docente di Sistemi informativi presso il dipartimento di Ingegneria elettrotecnica, elettronica e informatica dell'Università di Trieste)

Per trovare piena applicazione in Italia, la validità giuridica del documento elettronico sancita dal secondo comma dell'articolo 15 della legge 15 marzo 1997 n. 59 (cosiddetta «Bassanini 1»), necessita ancora del regolamento in fase di emanazione a cura dell'Autorità informatica nella Pubblica amministrazione (Aipa). E' già noto però che le firme digitali che autenticheranno i documenti elettronici verranno garantite con metodi di crittografia a chiave pubblica, il più moderno dei sistemi crittografici, basato sull'algoritmo Rsa pubblicato per la prima volta nel 1978 da Rivest, Shamir e Adleman.

La scelta di questa tecnica non è un fatto di moda, ma di praticità da un lato e di sicurezza dall'altro. L'algoritmo Rsa è di tipo asimmetrico: vengono usate due chiavi, una per crittografare, l'altra per decifrare, ma non è necessario scambiarsi chiavi prima di inviare il messaggio crittografato, perché la chiave di cifratura può tranquillamente essere resa pubblica (ad esempio, messa a disposizione su Internet o stampata in un bollettino ad ampia diffusione). La conoscenza della nostra chiave pubblica permette a chiunque di mandarci messaggi cifrati, che solo noi potremo decifrare, ma non dà alcuna informazione sulla nostra chiave di decifrazione segreta.

Il sistema basa la sua sicurezza proprio sul fatto che è computazionalmente molto impegnativo trovare la chiave privata a partire da quella pubblica.

Il problema della fattorizzazione di un numero grande, diciamo di 200 cifre, cioè la sua scomposizione in numeri primi, è stato studiato fin dal tempo degli antichi greci, ma a tutt'oggi richiederebbe su un grande computer un tempo di calcolo di un miliardo di anni.

Facciamo un esempio semplice e scomponiamo il numero 29.083. Dopo qualche ora di tentativi si può giungere alla fattorizzazione 127x229. L'operazione contraria, cioè la verifica che il prodotto dei due fattori dà il numero originale, richiede invece pochi secondi: ecco perché la fattorizzazione costituisce un ottimo punto di partenza per la realizzazione di una funzione unidirezionale che protegga i nostri messaggi segreti.

E' noto che con la funzione modulo, indicata "mod", si intende il resto della divisione intera per un numero, ad esempio 18 mod 7=4 (perché 18:7=2 con resto di 4). Per familiarizzare con l'Rsa può servire allora un esempio semplice, con numeri piccoli, che non offrono certo una buona protezione, ma aiutano a capire il meccanismo. Partiamo dalla costruzione delle chiavi pubblica e privata, secondo l'algoritmo in tabella 1. Per mantenere semplici i calcoli sia p=3, q=5, da cui n=15. Scegliamo ad esempio D=11; allora 11E mod 8=1 da cui E=3. La chiave pubblica è pertanto (3,15) e la chiave privata (11,15).

La cifratura del messaggio avviene ora in due passi: nel primo, il testo da cifrare, solitamente alfanumerico, viene convertito in un numero, solitamente piuttosto lungo; nel secondo, il numero risultante viene sottoposto alla cifratura a chiave pubblica.

La conversione di un testo in numero è ben collaudata e usata in parecchi altri campi dell'informatica, ad esempio nelle funzioni hash, che stanno alla base di molte tecniche di archiviazione di dati, o ancora nelle tecniche di indicizzazione e ricerca nei testi. Fondamentalmente basta prendere la rappresentazione di bit alfanumerica del testo e leggerla come se fosse un numero per ottenere la conversione: ad esempio, la lettera "A", indicata in forma binaria 11110001 nella codifica Ebcdic usata dai grandi elaboratori, letta come numero binario significa 241. Vengono solitamente adottati accorgimenti che risparmiano spazio, comprimendo le sequenze generate per non renderle troppo lunghe, ma - al di là dei dettagli - un qualunque testo, lungo o breve, può essere facilmente convertito in un numero, sufficientemente lungo.

A questo punto il messaggio "m" da inviare (per fare un esempio molto maneggevole, sia esso m=13) viene crittografato adottando il procedimento Rsa e usando la chiave pubblica del destinatario, nell'esempio (3,15). Il processo di cifratura è semplicissimo (come in tabella 2): c=m3 mod 15, che nell'esempio significa calcolare il resto intero della divisione per 15 di 13 elevato alla terza potenza (2197): il testo cifrato cioè vale c=7.

Questo testo può essere decifrato per ritornare al valore originale soltanto se si conosce la coppia di chiavi segrete, nell'esempio (11,15). Basta infatti eseguire l'operazione m=711 mod 15 per ottenere m=13. Riottenere questo risultato senza conoscere la coppia che costituisce la chiave segreta non è impossibile, ma è molto lungo. Con chiavi lunghe 200 cifre (considerate strategiche negli Stati Uniti, al punto che il software che le manipola non può essere esportato) la ricostruzione della chiave segreta è praticamente impossibile in tempi ragionevoli anche per il più potente computer oggi esistente.

(Ndr: ripreso da Il Sole-24 ore del 13 febbraio 1998)