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.  

Funzioni HASH

Le funzioni Hash si basano su un paio di concetti di base : 
  • Qualsiasi file gli viene passato di qualsiasi dimensione, viene calcolato e viene riscritto sotto forma di  una stringa di circa 32 caratteri, 128 byte.
  • Deve essere facile fare l'operazione inversa e quindi ricavare il messaggio iniziale ma deve essere anche difficile trovare una copia uguale della stringa di 32 caratteri, quindi non deve essere possibile avere un omonimo file Hash. 


Algoritmi a chiave simmetrica e asimmetrica. 

Nello scorso post abbiamo detto che esistono degli algoritmi importantissimi di cifratura e decifratura iniziamo parlando degli algoritmi per chiavi Simmetriche.

DES (Data Encryption Standard) : fu uno dei primi algoritmi simmetrici a chiave segreta. 
La chiave segreta era composta da 64 bit : 
          •  8 bit di controllo
          • 56 bit lunghezza della chiave 
DES fu violato nel 1998 in soli 2 giorni di ricerca con il metodo brute force. 
   
Venne creata allora la 3DES, l'algoritmo era uguale ma invece che una sola chiave, vennero usate 3 chiavi con un totale di 168 bit. 

Nel 2001 AES (Advanced Encryption Standard) ha sostituito l'algoritmo 3DES poiché risultava nettamente più sicuro. 
Utilizza delle chiavi di lunghezza minima di 128 bit con una lunghezza massima di 256 bit, le operazioni che l'algoritmo compie sono molto complesse e veloci tanto da essere il primo standard ad essere approvato dalla NSA (national Security Agency), tuttora risulta inviolato. 

Limite degli algoritmi simmetrici : Scambio delle chiavi 

Algoritmi a chiave Asimmetrica 

Uno tra gli algoritmi più utilizzati tutt'ora e l'algoritmo RSA, questo algoritmo sfrutta i numeri primi e il prodotto tra di essi. Questo è un algoritmo formidabile, ancora usato perché estremamente difficile da bypassare.

Un altro algoritmo divenuto uno standard nel 1991 è il MD5
Questo algoritmo HASH che prende in input un messaggio di qualsiasi lunghezza e lo converte in una stringa fissa di 128 bit, solitamente 32 caratteri, è stato dimostrato che utilizzando l'algoritmo MD5 per un normale PC occorrono circa 10 ore per trovare eventuali omonimi Hash.  

Esistono altri tipi di algoritmi Hash come gli algoritmi SHA. 
Gli algoritmi SHA sono una famiglia di funzioni Hash sviluppate a partire dal 1993.
  • SHA-0 : obsoleto, fu la prima funzione SHA che verrà subito dopo sostituito da SHA-1
  • SHA-1 : Era l'evoluzione di Sha-0, ma comunque poco efficiente poiché fu violato nel 2005 da crittoanalisti cinesi
  • SHA-2 : fu una funziona che su suddivisa in sottofamiglie a seconda della lunghezza in bit che si utilizzavano, questo fu uno tra i primissimi algoritmi utilizzati nel web 2.0 per proteggere transazioni online o siti e-commerce
  • SHA-3 : l'evoluzione più prestante di SHA-2, attualmente in uso. Questa funziona Hash ha rimpiazzato quasi completamente la precedente. 



Commenti