documenti informatici, cos’è l’impronta hash, a cosa serve l’impronta hash, la conformità, la firma digitale, l’applicazione per il calcolo.
Per comprendere appieno l’impronta hash è necessario soffermarsi sulla natura dei documenti informatici.
Abbiamo visto in un precedente articolo che tutti i documenti che elaboriamo sul nostro computer sono costituiti da “mattoncini” elementari, detti byte, ciascuno dei quali è composto da 8 bit, ovvero unità elementari di informazione che possono assumere valore 0 (zero) o 1 (uno).
Ne consegue che file diversi sono formati da sequenze di bit diverse a meno che un file non sia stato creato come “duplicato”, nel qual caso avrà la stessa identica sequenza di bit dell’originale.
Per approfondire l’argomento “documenti informatici, copie e duplicati” leggi l’articolo pubblicato.
L'impronta hash di un file informatico (o di un testo), indicata anche con il termine "evidenza informatica" oppure semplicemente "impronta", è una sequenza di lettere (a,b,c,d,e,f) e cifre (da 0 a 9), lunga solitamente 64 caratteri, ottenuta applicando un particolare algoritmo di calcolo alla sequenza di bit che formano il file (o il testo).
Questo algoritmo non fa altro che scandire sequenzialmente uno dopo l’altro tutti i byte che costituiscono il file e ricavare, passo dopo passo, una serie di "impronte intermedie", ciascuna delle quali dipende dalla precedente, ottenendo, al termine della scansione, l'impronta hash definitiva.
Ogni passo dell’elaborazione è influenzato da quelli precedenti e determina lo stato di quelli successivi, e per questo motivo è sufficiente modificare anche un solo bit di tutto il file per ottenere un'impronta hash diversa.
Una prima caratteristica dell'algoritmo di hash è quindi quella di generare impronte diverse a fronte di contenuti diversi.
Ad esempio, l'impronta hash della parola "applicazione" è:
07ae8b27c7596b3314601736f32d5f0ed 17fc8c0e27a0475e8ea2d8b2c788436
L' hash della parola "applicazioni" è invece:
9377d36b72f4f1455cace0b386b7242d9 5525832668d02a6cd805556d8306d19
Come si può vedere, è sufficiente cambiare anche una sola vocale per ottenere un'impronta completamente diversa.
In pratica non esistono file diversi tra loro che abbiano la stessa impronta hash.
Per completezza, anche se può sembrare ovvio, è bene precisare che applicando lo stesso algoritmo allo stesso contenuto si ottiene sempre la medesima impronta hash e che sul calcolo non influisce il decorso del tempo.
Un'altra caratteristica dell'impronta hash è quella di non permettere di risalire al testo originario (o al contenuto del file).
L'algoritmo di hash, infatti, è congeniato in modo da non consentire a nessuno di capire cosa abbia generato una determinata impronta. Non esiste infatti alcun algoritmo di decodifca che possa "svelare", ad esempio, che dietro alle impronte hash del nostro esempio si nascondono le parole "applicazione" e "applicazioni".
Infine, è bene evidenziare che l'impronta hash può essere calcolata per qualsiasi contenuto digitale, sia che si tratti di un documento Word, OpenOffice o PDF, sia che si tratti di un contenuto multimediale (fotografie digitali, filmati, brani musicali, pagine web ecc.), in quanto si tratta sempre di file informatici costituiti da sequenze di bit.
L'algoritmo di hash nasce innanzitutto per la necessità di 'nascondere' determinate informazioni (ad esempio le password degli utenti inserite in un database) in modo che nessuno, leggendo la rappresentazione hash, possa risalire al dato originario. Per questo motivo l'hash non può essere considerato una vera e propria "cifratura" in quanto, come noto, per ogni algoritmo di cifratura esiste sempre la possibilità di "decifrare" mentre, come abbiamo visto, l'hash non lo permette (non posso risalire al testo originario).
Un altro utilizzo dell'algoritmo di hash è quello di verificare la corrispondenza tra il contenuto di un documento inviato e quello ricevuto (ad esempio per posta elettronica oppure tramite download). Se il mittente calcola l'hash del documento e lo invia assieme al documento stesso, il destinatario è in grado di verificare che durante la trasmissione il documento non abbia subito alterazioni; gli basta infatti ricalcolare l'impronta hash del file ricevuto e confrontarla con quella che gli è stata inviata per essere sicuro dell'integrità del documento. Se infatti viene alterato anche un solo bit, l'algoritmo produrrà un'impronta hash diversa, rivelando quindi che il documento è diverso da quello originale. Per la precisione va detto che in questo caso si utilizza solitamente il formato MD5 che genera un'impronta più corta (32 caratteri anziché 64) ma comunque sufficiente ad attestare l'integrità di un duplicato scaricato tramite download (come ad esempio i duplicati informatici scaricabili dal PST).
Altri utilizzi dell’impronta hash li troviamo nella certificazione di conformità e nella firma digitale, come descritto qui di seguito.
(*) Le informazioni di questo paragrafo devono essere aggiornate con le nuove specifiche della DGSIA in vigore dal 9 gennaio 2016 pubblicate nel DM 28/12/2015 (v. articolo pubblicato). In particolare il DM restringe l'uso dell'impronta hash ai casi residuali dove non sia possibile garantire l'immodificabilità dei documenti (attestazione e documenti certificati come conformi).
Nell'ambito del CAD (Codice dell'Amministrazione Digitale) e del PCT l'impronta hash ha generalmente un duplice scopo:
garantire l' integrità dei documenti (come avviene ad esempio nella firma digitale),
permettere di certificare la conformità di un documento, ad esempio in una relata di notifica via PEC.
Quando si certifica la conformità di un file rispetto all'originale, è necessario che nella dichiarazione firmata vi sia un "elemento" che consenta a chiunque di identificare univocamente il file che stiamo certificando come "conforme all'originale".
Non è difficile intuire a questo punto che, per le caratteristiche sopra descritte, l'impronta hash è proprio l’ "elemento" di cui abbiamo bisogno.
Infatti, per la sua caratteristica di essere unica per ogni file, l'impronta hash è una sorta di “marchiatura” univoca del file e ci permette di affermare con certezza che stiamo certificando proprio quel determinato documento, e non un altro.
Così come le impronte digitali della mano individuano una determinata persona, l’impronta hash individua un file ben preciso, senza alcuna possibilità di errore.
Trasponendo il tutto in ambito processuale, possiamo dire che l’impronta hash nella conformità è l’equivalente informatico del cosiddetto “timbro di congiunzione” che si utilizzava per attestare la conformità dei documenti depositati in formato cartaceo.
Naturalmente è bene precisare che l'impronta hash entra in gioco quando la certificazione di conformità viene redatta in un documento separato, mentre non è necessaria se inserita all'interno del documento stesso che viene poi firmato digitalmente.
Per quanto riguarda la normativa, il legislatore ha previsto l'uso dell'impronta hash per questo scopo all' art. 6, comma 3 (copie o estratti informatici di documenti informatici) del DPCM 13/11/2014 nonché all’ art. 23 bis del CAD.
L'impronta hash di un file è utilizzata anche nella "firma digitale" per la quale esistono due formati: CADES e PADES.
Con il formato CADES (CMS Advanced Electronic Signatures), quando si firma digitalmente un documento tramite uno dei tanti programmi in commercio, viene creato un nuovo documento di estensione ".p7m" che sostanzialmente può essere visto come una sorta di contenitore (la cosiddetta "busta crittografica") che racchiude in sé varie informazioni tra cui il documento originario, l'identità di chi ha lo firmato, l'ente certificatore, una marca temporale e l'impronta hash del documento stesso.
I file ".p7m" non possono essere aperti dai normali programmi di gestione documenti ma hanno bisogno degli stessi software utilizzati per la firma. Quando un qualsiasi file ".p7m" viene aperto, il software controlla automaticamente, tra le altre informazioni, la corrispondenza tra l'impronta hash del documento e quella memorizzata nel contenitore, impedendo l'apertura del documento stesso nel caso in cui non vi sia corrispondenza, o avvisando l'utente della presenza di un'alterazione delle informazioni.
Il formato PADES (PDF Advanced Electronic Signatures) produce invece un file in formato PDF e consente di gestire versioni successive dello stesso documento, con la possibilità di apporre firme multiple anche in tempi diversi e senza necessità di utilizzare software particolari per la lettura dei documenti.
Nell'ambito del PCT segnaliamo che, con il provvedimento del 16/04/2014, il Ministero della Giustizia ha introdotto la possibilià di utilizzare anche il formato PADES per la formazione dei documenti informatici.
Su questo portale è disponibile un’applicazione gratuita per calcolare l’impronta hash di file e documenti informatici.
Con questa applicazione potete calcolare rapidamente l’impronta hash di più file contemporaneamente e verificare la loro corrispondenza con le impronte hash calcolate in precedenza.
Per ciascun file elaborato l’algoritmo fornisce le seguenti informazioni:
- il nome del file e le sue dimensioni in byte,
- un riferimento temporale preso dalla data di ultima modifica del file,
- l’impronta hash di 64 caratteri calcolata con l’algoritmo SHA256.
Un aspetto importante da non sottovalutare è che, per motivi di privacy e al tempo stesso di performance, l’applicazione non prevede un caricamento dei file sul server, ma l’elaborazione avviene direttamente sul computer dell’utente tramite apposite funzioni di libreria (nel nostro caso l’algoritmo SHA256 della libreria Asmcrypto).
Trattandosi di software che ha bisogno di tecnologie recenti, come il trascinamento dei file nel browser e le funzioni avanzate di lettura dei file, questa applicazione è l’unica, tra quelle sin qui realizzate, che non può essere compatibile con i browser di vecchia generazione, come ad esempio Internet Explorer 8 e 9.
Vi chiediamo infine di segnalarci ogni eventuale anomalia che doveste riscontrare.
Per maggiori dettagli rimandiamo alla pagina dell’applicazione.