Firma Digitale e Hash function.

La firma digitale è la tecnologia con cui possono essere effettivamente soddisfatti tutti i requisiti richiesti per dare validità legale ad un documento elettronico firmato digitalmente; garantisce i servizi di integrità, autenticazione e non ripudio.
In particolare le proprietà che deve avere una firma digitale per essere ritenuta valida sono:

  • Autenticità della firma: la firma deve assicurare il destinatario che il mittente ha deliberatamente sottoscritto il contenuto del documento.
  • Non falsificabilità: la firma è la prova che solo il firmatario e nessun altro ha apposto la firma sul documento.
  • Non riusabilità: la firma fa parte integrante del documento e non deve essere utilizzabile su un altro documento.
  • Non alterabilità: una volta firmato, il documento non deve poter essere alterato.
  • Non contestabilità: il firmatario non può rinnegare la paternità dei documenti firmati; la firma attesta la volontà del firmatario di sottoscrivere quanto contenuto nel documento.

I metodi crittografici a chiave pubblica possono essere utilizzati per la costruzione di strumenti per la firma digitale, variamente concepiti. Mentre nella crittografia la chiave pubblica viene usata per la cifratura, ed il destinatario usa quella privata per leggere in chiaro il messaggio, nel sistema della firma digitale il mittente utilizza la funzione di cifratura e la sua chiave privata per generare un’informazione che (associata al messaggio) ne verifica la provenienza, grazie alla segretezza della chiave privata. Chiunque può accertare la provenienza del messaggio utilizzando la chiave pubblica.

La firma digitale viene realizzata tramite tecniche crittografiche a chiave pubblica insieme all’utilizzo di particolari funzioni matematiche, chiamate funzioni hash unidirezionali. Il processo di firma digitale passa attraverso tre fasi:

  1. Generazione dell’impronta digitale.
  2. Generazione della firma.
  3. Apposizione della firma.

Nella prima fase viene applicata al documento in chiaro una funzione di hash appositamente studiata che produce una stringa binaria di lunghezza costante e piccola, normalmente 128 o 160 bit, chiamata digest message, ossia impronta digitale. Queste funzioni devono avere due proprietà:

  • unidirezionalità, ossia dato x è facile calcolare f(x), ma data f(x) è computazionalmente difficile risalire a x.
  • prive di collisioni (collision-free), ossia a due testi diversi deve essere computazionalmente impossibile che corrisponda la medesima impronta.

Poiché la dimensione del digest message è fissa, e molto più piccola di quella del messaggio originale; la generazione della firma risulta estremamente rapida.

L’utilità dell’uso delle funzioni hash consente di evitare che per la generazione della firma sia necessario applicare l’algoritmo di cifratura, che è intrinsecamente inefficiente, all’intero testo che può essere molto lungo.

Mediante un software adatto, nel nostro caso quello di Entrsut, al sistema crittografico adottato, si genera una coppia di chiavi da utilizzare: una, che verrà mantenuta segreta, per l’apposizione della firma; l’altra, destinata alla verifica, che verrà resa pubblica.

Quindi la seconda fase, la generazione della firma, consiste semplicemente nella cifratura con la propria chiave privata dell’impronta digitale generata il precedenza.

In questo modo la firma risulta legata, da un lato (attraverso la chiave privata usata per la generazione) al soggetto sottoscrittore, e dall’altro (per il tramite dell’impronta) al testo sottoscritto. In realtà l’operazione di cifratura viene effettuata, anziché sulla sola impronta, su una struttura di dati che la contiene insieme con altre informazioni utili, quali ad esempio l’indicazione della funzione hash usata per la sua generazione. Sebbene tali informazioni possano essere fornite separatamente rispetto alla firma, la loro inclusione nell’operazione di codifica ne garantisce l’autenticità.

Nell’ultima fase, la firma digitale generata precedentemente viene aggiunta in una posizione predefinita, normalmente alla fine del testo del documento.

A questo punto possiamo capire come funziona la firma digitale, cioè come si può dare a un testo chiaro la certezza dell'identità del mittente e dell'integrità del contenuto, cioè avere la sicurezza che il documento non è stato modificato da nessuno dopo che il firmatario ha posto la propria firma.

Nel caso dell’utilizzo della forma scritta, l’imputazione del contenuto di un documento a un determinato soggetto è assicurata dalla firma: chi sottoscrive un documento ne assume la paternità.

La diffusione del documento informatico ha consentito di distinguere il suo contenuto dal supporto sul quale esso è stato conservato. In questo modo le correzioni apportate non sono riconoscibili, chi legge il documento finale non è in grado di capire quante e quali modifiche sono state effettuate. Per fare questo è necessaria la "firma digitale" o più precisamente un processo di crittografia a chiavi asimmetriche.

Nel caso in cui Bob debba trasmettere ad Alice un documento informatico assicurandone l’ integrità e l’autenticità, lo cripterà con la propria chiave privata e lo invierà ad Alice che, procuratasi la chiave pubblica di Bob, lo decifrerà.


Invio messaggio cifrato da Bob ad Alice con chiave privata.

Un documento decifrato con una determinata chiave privata potrà essere decifrato solo con la corrispondente chiave pubblica e viceversa. Rimane il problema della segretezza. Infatti, se per la decifratura di un messaggio crittografato con una chiave privata è necessaria e sufficiente la chiave pubblica, accessibile a chiunque, il documento cifrato è, per definizione, pubblico o, quantomeno, può essere reso intelleggibile da tutti. Il sistema a chiavi asimmetriche offre la soluzione anche a questo problema, essendo sufficiente invertire l’uso delle chiavi sopra indicato, di modo che il mittente Bob cifrerà il messaggio utilizzando la chiave pubblica del destinatario, che, quindi sarà l’unico in grado di leggerlo perché titolare della corrispondente chiave privata.


Invio messaggio cifrato da Bob ad Alice con chiave pubblica

Le due funzioni possono poi essere combinate per assicurare l’integrità, l’autenticità del documento e la sua riservatezza. E qui interviene la firma digitale.

Poiché la cifratura di un intero documento è una procedura lunga, ad abbreviare i tempi e conseguire il risultato di assicurare al destinatario che il documento proviene da un determinato soggetto e non è stato alterato, soccorre la procedura di firma digitale che consiste in questo.

Al documento viene applicata una determinata funzione, denominata "hash function", che produce un riassunto chiamato "impronta" di lunghezza fissa (20 caratteri), indipendentemente dalle dimensioni dell’originale.

L’impronta è unica, nel senso che modificando anche un solo carattere del testo si otterrà un’impronta diversa. L’impronta, e non l’intero documento, viene quindi criptata con la chiave privata del mittente in questo modo si ottiene la generazione della "firma digitale" che verrà apposta al documento originale. Al destinatario vengono spediti: il documento con la "firma digitale" in calce e il certificato rilasciato dalla competente autorità di certificazione a garanzia della titolarità della chiave pubblica necessaria per decriptare la firma digitale.

Chi riceve il messaggio procederà all’apertura e/o verifica dello stesso mediante il proprio software per l’attività di firma. Il programma acquisirà dal certificato annesso al documento firmato, la chiave pubblica del mittente. Con tale chiave viene decifrata la stringa della "firma digitale" che darà come risultato l’impronta del documento. Il destinatario prenderà il documento originario, lo farà passare attraverso la funzione di "hash" e genererà l’impronta: se coincide con quella decrittata del mittente allora sarà sicuro dell’ integrità e provenienza del documento.


Generazione e verifica della firma digitale
La firma digitale si genera applicando la propria chiave privata all'impronta del testo

top