La firma digitale , certificati digitali, algoritmi a chiave simmetrica e asimmetrica. Crittografia Pt. 2.0

Introduzione

La firma digitale ci permette di conoscere con certezza il fautore del messaggio,  pertanto ci consente di applicare il principio di Non Ripudiabilità, secondo il quale il soggetto che ha creato il messaggio non può rinnegare di essere stato lui il creatore . 

Come funziona la firma digitale ? 

L’utente possiede un dispositivo di firma sicuro rilasciato da un ente certificato in modo che il destinatario ha la certezza che la chiave che sta utilizzando è proprio la sua o che non si a rubata a terzi. Il dispositivo che viene rilasciato è dotato di un PIN in modo da avere un’autenticazione forte e sicura. 

Durante l’apposizione della firma digitale sul documento che potrà essere un PDF un DOC o un altro qualsiasi file , quest’ultimo verrà incapsulato in una busta crittografata. Il file che prima aveva un’estensione .doc .pdf ecc… con questo imbustamento avrà un’estensione .p7m, ovvero il formato PKCS#7

Ma nel pratico come avviene questo processo ? 

Immaginiamo un’ipotetica situazione in cui abbiamo un mittente di nome Faustino e un destinatario di nome Paolino. Il mittente Faustino scrive un messaggio in chiaro, questo messaggio viene ricalcolato mediate una funzione chiamata funzione HASH, questa funzione permette di mutare il messaggio in chiaro in un messaggio solitamente di 32 caratteri. Sulla funzione HASH ci torniamo successivamente in modo da risolvere tutti i dubbi. 

Quindi Faustino crea un messaggio, tramite la funzione HASH questo messaggio diventa di circa 32 caratteri, circa 128 bit. Faustino cifra il messaggio con la sua chiave privata quindi con la chiave privata del mittente e invia al destinatario Paolino sia il messaggio in chiaro che è diventato un HASH sia il messaggio criptato. 

Entrambi i file arriveranno al destinatario, Paolino con la chiave pubblica di Faustino decifra il messaggio criptato e lo confronta al messaggio in chiaro che inizialmente è stato inviato. Se i due messaggi corrispondono siamo sicuri che il file non ha avuto cambiamenti e che quindi è arrivato integro al destinatario (principio di integrità) e sappiamo anche che ad inviare il messaggio è stato proprio Faustino perché ha usato la sua chiave privata che solo lui conosce. 

  1. Faustino scrive un messaggio 
  2. Questo messaggio viene ricalcolato con la funzione HASH 
  3. Il messaggio HASH (ancora messaggio in chiaro) viene cifrato con la chiave privata di Faustino, cioè con la chiave privata del mittente
  4. Faustino invia sia il file cifrato con la sua chiave privata sia il messaggio in chiaro cioè il file HASH. 
  5. I file arrivano al destinatario Paolino. Paolino decifra il file criptato con la chiave pubblica di Faustino, avendo così la certezza che ad inviare il messaggio è stato proprio Fausto.  (Autenticazione)
  6. Prende il file decriptato (che è ancora un file HASH), e lo confronta al messaggio in chiaro che Fausto ha mandato senza cifrarlo. Se i due file sono identici, il messaggio non è stato cambiato o manomesso  (Integrità)

La firma digitale del mittente è sicura se la chiave privata non è compromessa e il destinatario conosce la chiave pubblica del mittente. Per far si che il destinatario sia sicuro che la chiave pubblica del mittente sia corretta ha bisogno di una certificazione di cui parlavamo in precedenza. 

Per far ciò è necessario un ente di cui sia il mittente che il destinatario si fidano, questo ente si occuperà di distribuire le chiavi pubbliche degli utenti e garantirà per loro la veridicità di quella chiave.

Questa terza parte viene chiamata Autorità di Certificazione, acronimo CA (Certification Authority). 

Questo certificato contiene : 

  • Chiave pubblica del proprietario 
  • Identità del proprietario
  • Tempo di validità 
  • Numero di serie
  • Firma digitale della CA

Il messaggio cifrato che invieremo con il formato PKCS#7 comprenderà al suo interno anche il certificato rilasciato dalla CA che garantirà la veridicità della chiave pubblica oltre al messaggio cifrato. 

Lo scopo della firma digitale non è garantire la sicurezza dei dati, tutti possono leggere ciò che ce scritto perché tutti possono decifrarla con la chiave pubblica, lo scopo della firma digitale è verificare l’autenticità del mittente. In modo da essere sicuri che a comunicare sia proprio quel mittente e non un altro.