Crittografia

Cifrari a chiave pubblica (o asimmetrica)

 

 

I cifrari a chiave pubblica si basano su un concetto totalmente diverso da quello dei sistemi di cifratura con chiave simmetrica (tutti i sistemi elencati nelle altre sezioni). La differenza esterna consiste nel dover utilizzare una chiave per la cifratura (chiave detta pubblica), ma una chiave diversa per riportare il testo in chiaro (la chiave privata). La prima chiave può anche essere resa pubblica, dato che offre solo la possibilità di cifrare, ma non decifrare il messaggio. La differenza interna basilare consiste nell'utilizzo di una funzione unidirezionale, ovvero, la cui funzione inversa sia difficile da calcolare.

 

Perchè questa necessità?

Lo scopo per cui è stato inventato questo metodo, è da ricercarsi nella difficoltà di comunicare la chiave di decrittazione al destinatario. Nei metodi a chiave simmetrica, infatti, per comunicare la chiave, è necessario accordarsi di persona con il destinatario incontrandosi in un luogo sicuro, oppure utilizzare un canale di comunicazione sicuro. Ovvio però che se esistesse un canale di comunicazione sicuro non servirebbe neanche cifrare i messaggi! Ecco intervenire quindi i metodi a chiave pubblica che risolvono il problema.

 

Come si usa?

Immaginiamo che due persone (A e B), vogliano comunicare in segreto.

Entrambe sceglieranno una loro chiave segreta, ognuno per conto proprio: A sceglie "PassA" e B "PassB". Queste chiavi non le comunicheranno a nessuno. Tramite una funzione velocemente calcolabile, ma quasi impossibile da invertire, A e B generano la loro propria chiave pubblica che potranno fornire a chiunque. Se adesso A vuole mandare un messaggio a B, è sufficiente utilizzare la chiave pubblica di B per cifrare il messaggio e spedirglielo. Solo B tramite la sua chiave segreta, potrà riconvertire in chiaro e velocemente, il messaggio di A. E` da notare che dopo la cifratura, nemmeno A (ovvero colui che cifra) ha più modo di riconvertire il messaggio in chiaro. Viceversa, se B vuole rispondere, è sufficiente che utilizzi la chiave pubblica di A per cifrare il messaggio.

 

Cosa si intende per funzione quasi impossibile da invertire?

Facciamo un esempio comprensibile a tutti: un numero elevato ad una potenza richiede un certo lavoro di calcolo, ma tornare indietro tramite la radice ennesima, necessita di un lavoro maggiore. Ancora meglio, calcolare il prodotto di due numeri primi impegna meno tempo che dover determinare i numeri primi conoscendo solo il loro prodotto. Nell'RSA, il più noto degli algoritmi a chiave pubblica, è proprio il prodotto di due numeri primi elevati ad essere utilizzato come funzione.

Tanto per chiarire con delle cifre, eseguire il prodotto di due numeri primi di cento cifre ciascuno, richiede con gli attuali calcolatori, un tempo dell’ordine di un milionesimo di secondo, mentre per fattorizzare un numero di duecento cifre decimali necessita qualche miliardo di anni.

Altre funzioni sono quelle di

  1. Diffie-Hellman, considerato sicuro soprattuto nello scambio di chiavi simmetriche, quando usato con chiavi abbastanza lunghe preferibilmente di almeno 1024 bit. Sfrutta i logaritmi.

  2. Curve ellittiche, è un algoritmo emergente, ma molto lento. E` considerato estremamente sicuro ma non è stato ancora sottoposto agli stessi test a cui è stato sottoposto RSA.

  3. DSS (Digital Signature Standard) usato principalmente per la firma digitale ed adottatto dal governo USA

Perchè non utilizzare esclusivamente questa categoria di cifratori?

Il sistema ha come tutte le cose, pregi e difetti.

  • Il pregio è ovvio: il metodo è il più adatto che possa esistere per effettuare comunicazioni verso destinatari persino ignoti, dato che non necessita più concordare una password.

  • Il difetto consiste nella sua lentezza di elaborazione dovuta ai pesanti calcoli matematici, tanto che viene generalmente utilizzato solo in sistemi composti, per trasmettere la password segreta di un altro sistema di crittografazione a chiave simmetrica (come ad esempio il DES). Non ha alcuno scopo, quindi, utilizzare un tale algoritmo per proteggere i dati sul proprio computer. Non solo: oltre alla lentezza, è da tenere presente che a parità di lunghezza della chiave, gli algoritmi a chiave simmetrica sono sempre molto più sicuri.

  • In questi sistemi la chiave non viene digitata, ma sta su hard disk e potrebbe essere rubata

Altre caratteristiche

Il sistema permette anche l'autentica del mittente e l'integrità del messaggio.Utilizzando un algoritmo di hashing, è possibile creare un'impronta del messaggio (detta hash o message-digest) e cifrarlo con la propria chiave privata. Il piccolo testo cifrato che ne deriva rappresenta la cosiddetta firma digitale. Dato che chiave privata e pubblica sono complementari, il destinatario, ricevuto il messaggio e conoscendo la chiave pubblica del mittente, sarà in grado di:

  1. Riportare in chiaro il testo del messaggio

  2. Riportare in chiaro il message-digest

E` quindi chiaro che il messaggio proviene dal mittente la cui chiave pubblica è appena stata usata con successo per decifrare il message-digest (non fare confusione con il messaggio, che il destinatario decritta invece con la sua chiave privata). Per essere poi sicuri che il messaggio sia arrivato integro e senza manomissioni, basta ricreare un nuovo message-digest e controllare se è identico a quello allegato dal mittente.

Ma, tornando un passo indietro, se possiamo essere sicuri che un messaggio arriva realmente dal possessore di una data chiave privata utilizzata per la creazione del message-digest, come si possono conoscere realmente le generalità del mittente? Grazie ad appositi enti detti Autorità di certificazione, è possibile compilare un modulo con i propri dati e la propria chiave pubblica. L'ente verifica tali dati e se tutto corrispondente, rilascia un certificato firmato (sempre in digitale ovviamente) che funge da carta d'identità e può essere allegato ai propri messaggi.

 

Note sul message-digest

Come abbiamo già detto, per la creazione di un message-digest, vengono utilizzati algoritmi detti di hash. Questi algoritmi eseguono una serie di operazioni matematiche e logiche talvolta molto complesse il cui scopo è creare una specie di riassunto del messaggio (tipo checksum dei files) ottenendone una stringa più breve. Per la precisione, sono algoritmi one-way che producono, a partire da una stringa a lunghezza variabile, una stringa a lunghezza fissa (generalmente tra 64 e 255 bit) che è caratteristica della stringa data. Essendo l'algoritmo un one-way, si perdono le informazioni necessarie per invertire l'operazione, adempiendo l'altro requisito del digest che è appunto la sua irreversibilità in testo originale. La segretezza dell'algoritmo è fondamentale, dato che non dovrebbe neanche essere possibile riuscire a creare un messaggio fasullo che abbia lo stesso digest, cosa semplicissima conoscendone il funzionamento. Ad oggi si sono messi a punto algoritmi di hashing che riducono la possibilità di avere 2 digests uguali da messaggi diversi in 1 su circa 4 miliardi di possibilità.

Gli algoritmi di hash più diffusi sono:

  1. MD5 (Message Digest Algorithm 5), sviluppato da RSA Data Security inc. Produce una stringa di hash a 128 bit da stringhe di lunghezza arbitraria. Largamente usato e ragionevolmente sicuro.

  2. SHA (Secure Hash Algorithm), sviluppato dal NIST (National Institute of Standards and Technology) e dalla NSA (National Security Agency). Produce stringhe di hash a 160 bit da stringhe di lunghezza arbitraria. E` considerato abbastanza sicuro. Usato dal governo americano lo si trova solitamente associato all'utilizzo del metodo a chiave pubblica DSS.

Curiosità e considerazioni

Samuel Wagstaff, docente di informatica all’Università dell’Indiana, è riuscito a fattorizzare un numero di 167 cifre in centomila ore di tempo computer. Il numero della prova era:

 

1637901955805366239217413015

4670449583923965684832704024

9837817092396946863513212041

5650964922608054197182470755

5797144568969073877772973038

883717449030628887379284041

 

Questa notizia dovrebbe far riflettere: considerando che ad oggi si scoprono ancora nuovi algoritmi matematici per decrittare sempre più velocemente e che la potenza dei calcolatori aumenta vertiginosamente di mese in mese (e non parliamo dei computers dei laboratori segreti!), sarà una buona scelta affidare dati importantissimi ad un metodo che si basa esclusivamente  sulla lentezza dei calcolatori attuali?

 

Vogliamo anche far notare che una chiave da 1024 bit in un sistema a chiave pubblica, vale circa quanto una a 64 bit di un sistema a chiave simmetrica a causa del fatto che nel sistema a chiave pubblica esiste sempre un legame tra chiave privata e segreta che permette di ridurre le combinazioni necessarie per trovare il codice di accesso.

Stabilita tale corrispondenza di sicurezza tra le lunghezze delle chiavi dei due sistemi, è interessante notare quando detto alla conferenza Crypto '93 (notare che sono già passati diversi anni), da M. Wiener del Bell Northern Research, il quale ha descritto come con 1 milione di dollari sia realizzabile un chip speciale da 50 milioni di test al secondo che, in parallelo ad altri 57.000, può condurre un attacco con successo mediamente in 3,5 ore. Con un costo di 10 milioni di dollari il tempo si abbassa a 21 minuti, e con 100 milioni a disposizione, il codice è infranto in pochi secondi. Meditiamo!

 

Fatto sta che il commercio elettronico ha già iniziato a farne uso e qualche anno fa, il 5 Agosto 1997, il Consiglio dei Ministri Italiano ha approvato il regolamento di attuazione dell’art.15 della legge 57/97, nota anche come legge Bassanini-1, con il quale si stabilisce che l’originale di un documento può essere anche quello depositato su di un file. Tale documento su file ha valore probante sia sul contenuto sia sulla provenienza se corredato da firma elettronica legalmente riconosciuta.