|
La firma digitale
La crittografia a chiave pubblica può essere usata per apporre
una firma digitale ad un documento. Con firma digitale si intende l'operazione
di codifica di una stringa tra 128 e 512 bit, detta message digest,
che identifica
univocamente il messaggio. Il message digest di un messaggio viene ottenuto
applicando una funzione, detta hash, ad un messaggio di qualunque
dimensione. Nelle funzioni hash è sufficiente modificare anche un solo bit nel
messaggio di ingresso per ottenere un
digest diverso. Inoltre è praticamente impossibile risalire
al messaggio dal suo digest.
Consideriamo l'esempio illustrato in figura:

esempio di messaggio con firma digitale
Per verificare che il messaggio ricevuto sia proprio quello inviato dal mittente,
e non da un impostore, occorre utilizzare la chiave pubblica del mittente e
controllare la autenticità della firma.
Un apposito programma di firma digitale, eseguito dal ricevente, che usa la chiave pubblica del mittente, svolge le seguenti operazioni:
- separa dal messaggio la firma digitale che si trova in fondo ad esso;
- decodifica la firma digitale con la chiave pubblica del mittente, ottenendo
il digest;
- ricalcola quindi il message disgest del messaggio rimanente e lo confronta
con quello decodificato;
- se i due coincidono, il ricevente avrà la garanzia che il messaggio
non abbia subito modifiche durante il trasporto in rete e che il messaggio sia
inequivocabilmente quello del mittente.
La firma digitale è quindi un meccanismo che garantisce sia
l'integrità sia la non repudiabilità
di un messaggio, quando è garantita l'autenticità della chiave
pubblica del mittente (vedi paragrafo La fiducia nella firma).
I principali algoritmi per il calcolo di un message digest sono:
- MD5 (Message Digest 5)
- E' una funzione hash ideata da Ron Rivest.
L'algoritmo, che si basa sulla manipolazione di blocchi di dati
composti di 512 bit, a loro volta suddivisi in sottoblocchi di 32 bit l'uno,
produce un valore hash lungo 128 bit, rendendo disponibili 2128
valori differenti. La sicurezza dell'algoritmo si basa essenzialmente sulla
difficoltà di determinare due messaggi che portino allo stesso valore
hash. L'attacco più efficiente a questo algoritmo è quello basato
su forza bruta.
- SHA (Secure Hash Algorithm)
- Algoritmo ideato dal National Institute of Standards and Technology
(NIST, http://www.nist.gov)
e dalla National Security Agency
(NSA, http://www.nsa.gov)
per essere utilizzato con l'algoritmo Digital Signature Algorithm, DSA, produce
un message digest di 160 bit a partire da un input
di lunghezza inferiore a 264 bit.
Il message digest viene poi dato in input al DSA che produce la firma del
messaggio. Viene considerato sicuro per la dimensione del
digest prodotto.
|