Main Menu
Home
Assint
Formazione
Canale Lavoro
Documenti
Area Tecnica
Weblog
Photo Gallery
Advertisement
  Home arrow Area Tecnica arrow Protocolli e tecnologie arrow VPN ovvero Reti Private Virtuali: Tecnologia IPsec v3 – III parte C

VPN ovvero Reti Private Virtuali: Tecnologia IPsec v3 – III parte C

Di Salvatore Valerio

L’autenticazione è realizzata dall'uso di firme digitali hash.

 

firme HASH per garantire l’integrità dei dati

1.      SHA

2.      MD5

3.      AES-XCBC

autenticazione

1.      con MAC e poi con HMAC

2.      con la firma digitale

 

 

Hashing

L’hashing garantisce l’integrità del messaggio. Un hash crittografico anche chiamato Digest o Message Digest o Firma, è un tipo di impronta digitale di un documento elettronico. La somma di un imput di un documento elettronico di lunghezza variabile è l’hash che ne è l’output compatto di lunghezza fissa. L’hash viene generato da una funzione matematica (algoritmo di hashing) che è una operazione One-Way. L’hash rappresenta quindi una sintesi (digest) dello stream di dati che è una vera e propria impronta digitale elettronica. Come analogia si può indicare l’impronta digitale per le persone. Per quanto possano essere identiche le fisionomie di persone differenti l’impronta digitale è unica per ognuno. L’operazione di Hashing gode di importanti caratteristiche:

 

  1. dato un documento elettronico di imput si può facilmente calcolare il suo valore di hash, dipendendo dall’algoritmo utilizzato.

  2. L’hash deve cambiare sensibilmente se il contenuto del documento di imput viene alterato anche di un solo bit e quindi può essere utilizzato per rilevare se un documento informatico è stato modificato in qualsiasi modo.

  3. non deve essere possibile dato il valore di hash risalire al contenuto originale del documento che l’ha originato (per questo l’hash è una funzione One-Way). Questa proprietà è valida se il documento ha una dimensione sufficiente, pari almeno a quella dell’impronta. Come analogia per questo tipo di operazione si può indicare l’uovo, da cui con una semplice operazione si può ottenere una frittata ma da cui non è possibile invertire l’operazione e ricavare l’uovo originale.

  4. non deve essere possibile generare un documento che produca un’impronta informatica nota a priori.
  5. non deve essere possibile generare due messaggi che abbiano lo stesso valore di hash. La probabilità di collisione (due documenti diversi che generano lo stesso valore di hash) deve essere molto bassa.

Con il termine non è possibile si intende che non è computazionalmente fattibile, con le tecnologie attuali e con quelle ragionevolmente prevedibili per i prossimi anni riuscire ad ottenere il risultato indicato in tempo utile.

I codici di autenticazione MAC

Per garantire la verifica dell’autenticità e dell’integrità di un documento o di un dato è necessario utilizzare un codice di autenticazione. Ovvero, viene generato un valore di controllo della integrità e dell’autenticità di un messaggio, associando e concatenando ad esso una chiave segreta conosciuta solamente dai due pari.

 

I codici di autenticazione che consentono la verifica dell’integrità di un dato, basati sull’uso di una chiave segreta, sono chiamati MAC (Message Authentication Codes). Il MAC può essere utilizzato da due entità che devono comunicare in modo sicuro e fornisce la possibilità di verificare autenticità e integrità dei messaggi scambiati mediante la condivisione della conoscenza della chiave segreta utilizzata per il suo calcolo.

Chiunque non sia in possesso della chiave segreta non sarà in grado di ricreare il codice di autenticazione corretto.

 

HMAC (Hashed Message Authentication Codes) 

Il meccanismo di calcolo del MAC basato sull’utilizzo di un algoritmo di HASH viene chiamato HMAC (Hashed Message Authentication Codes) ed è definito nella RFC 2104. Il principio che sta alla base del funzionamento di un HMAC è che se si concatena al messaggio da trasmettere una chiave segreta e si calcola il suo hash, questo hash dipenderà sia dal messaggio sia dalla chiave segreta. Il destinatario del messaggio, ripetendo lo stesso calcolo con la chiave segreta in suo possesso, potrà verificarne l’integrità e l’autenticità del messaggio controllando che HMAC calcolato e HMAC ricevuto coincidano. Questo darà la prova che anche il mittente è in possesso della stessa chiave segreta.

 

L’algoritmo di autenticazione HMAC è indipendente dall’algoritmo di hash utilizzato, è richiesto solamente che sia basato su un calcolo iterato su blocchi a lunghezza fissa di dati. Gli algoritmi che vedremo sono adatti per realizzare in IPsec degli HMAC e operano con blocchi di dati pari a 128 e 160 byte.

 

Funzionamento di HMAC

L'algoritmo di autenticazione HMAC coinvolge nel calcolo dell’hash sia il messaggio originale del mittente sia la sua chiave privata da cui viene ricavata una firma, un hash di lunghezza fissa come output. Questo valore di hash viene agganciato alla comunicazione come una firma hash (valore autenticatore)  e spedito a destinazione. Il pari di destinazione alla fine remota riceve quindi il messaggio originale + la sua firma hash. A questo punto il destinatario compie una operazione in due passi: 

·      Primo passo -- il destinatario fa passare attraverso l’algoritmo HMAC  il messaggio ricevuto con la chiave che è in suo possesso e ricava un valore di hash ricalcolato. 

·      Secondo passo -- il ricevente compara l’hash ricalcolato con il valore di hash ricevuto che è stato attaccato al messaggio spedito. Se l’hash originale e l’hash ricalcolato coincidono, l'integrità della comunicazione è garantita. Se la comunicazione originale viene modificata durante il transito, i valori di hash ricevuto e hash ricalcolato saranno diversi.

 

 

Gli algoritmi HMAC vengono indicati come HMAC- seguito dal nome dell’algoritmo di hash, come per esempio : HMAC-MD5(Message Digest 5), HMAC-SHA-1(Secure Hash Algorithm 1),  AES-XCBC-MAC-96 che sono tre algoritmi usati da IPsec.

 

  • HMAC-MD5 – Conosciuto anche come HMAC-MD5-96 (RFC 1321), questa tecnica di hashing è basata su l’algoritmo MD5 sviluppato da Ronald Rivest del MIT, della RSA Data Security Incorporated, ed è descritto nel documento RFC 1321. Il messaggio a lunghezza variabile e la chiave segreta condivisa a 128-bit sono combinate attraversano l'algoritmo di hash HMAC-MD5 per produrre un l’hash di 128-bit (16 byte).  In IPsec una volta prodotto, il valore di 128-bit è troncato a solamente i primi 96 bit e questo è il valore authenticator che viene immagazzinato nel campo authenticator nell'AH o dell’ESP del nuovo pacchetto. Quando il pacchetto giunge al pari di destinazione, sul messaggio viene ricalcolato l’hash di 128-bit, ed i primi 96 bit ricalcolati che formano il valore authenticator (ICV) sono comparati al valore immagazzinato nel campo authenticator di 96 bit del pacchetto. ATTENZIONE: Ultimamente dopo il rilascio da parte di Patrick Stach, un ricercatore crittologo, di un sorgente in C di un particolare tipo di attacco che rende la falsificazione di questo hash alla portata di tutti, MD5 è stato definitivamente infranto e pertanto ne viene sconsigliato l’uso.

 

  • HMAC-SHA-1 Conosciuto anche come HMAC-SHA-1-96 (RFC 2404), creato dal NIST (National Institute of Standards and Technology), questa tecnica di hashing è basata su SHA-1 specificato in FIPS-190-1 combinato con la tecnologia HMAC. Il messaggio di lunghezza variabile e la chiave segreta condivisa di 160-bit sono combinati attraversano l'algoritmo di hash di HMAC-SHA-1 per produrre un valore hash di 160-bit (20 byte). In IPsec una volta prodotto, questo hash viene troncato ai primi 96 bit, questo forma il valore authenticator che viene immagazzinato nel campo authenticator dell'AH o dell’ESP  del nuovo pacchetto. Giunto al pari di destinazione, sul messaggio viene ricalcolato l’hash di 160-bit, ed i primi 96 bit ricalcolati che formano il valore authenticator (ICV) sono comparati al valore immagazzinato nel campo authenticator di 96 bit del pacchetto ricevuto. 

 

  • AES-XCBC-MAC-96 Questo algoritmo (RFC 3566 )  sviluppato sull’algoritmo CBC-MAC con l’uso dell’algoritmo AES in modalità denominata CBC (Cipher-Block-Chaining) e con un set di estensioni (X) garantisce un HMAC che fornisce integrità ai dati e l'autenticazione per l'origine dei dati.  AES-XCBC-MAC-96  usa i blocchi cifrati AES, con la grandezza di blocco di 128 bit e la lunghezza delle chiavi di 128 bit che producono un valore di hash di 128-bit (16 byte). In IPsec una volta prodotto, questo hash viene troncato ai primi 96 bit, e viene immagazzinato nel campo authenticator dell'AH o dell’ESP  del nuovo pacchetto. Giunto al pari di destinazione, sul messaggio viene ricalcolato l’hash di 128-bit, ed i primi 96 bit ricalcolati che formano il valore authenticator (ICV) sono comparati al valore immagazzinato nel campo authenticator di 96 bit del pacchetto ricevuto.  AES-XCBC-MAC-96 è un relativamente nuovo algoritmo di hash che ha l’abilità di anticipare, resistere e rendere impraticabili le attuali tecniche criptoanalitiche e computazionali.  La sicurezza fornita da AES-XCBC-MAC-96 è basata sulla forza dell’algoritmo AES. Al momento in cui si scrive non esiste nessun attacco crittografico pratico contro AES o AES-XCBC-MAC-96. 

La pratica di troncare l’HMAC ai primi 96 bit è dettata dalla volontà di garantire maggiore sicurezza perché mette un attaccante nella impossibilità di analizzare compiutamente l’HMAC ottenuto.

 

Questo dà luogo al vantaggio che meno informazioni sul HASH vengono date, meno informazioni risultano disponibili ad un attaccante il quale, si trova nello svantaggio di dover predire un hash completo avendo a disposizione solo un hash incompleto.

 

HMAC-SHA-1 attualmente viene considerato ancora un algoritmo sufficientemente robusto ed affidabile ma, in diverse implementazioni si pensa di rimpiazzarlo con HMAC-SHA-256 che non è altro che una versione del primo SHA portato da 160 bit a 256 bit e quindi con un valore di chiave più lungo. Il più nuovo algoritmo di hash AES-XCBC-MAC-96 è un algoritmo che garantisce una buona performance di velocità con una alta sicurezza ed è considerato più robusto dei precedenti.

 

L’uso di questi algoritmi durante gli scambi deve sottostare negli Stati Uniti a delle direttive di sicurezza valide per le Agenzie federali Statunitensi le quali sono obbligate ad utilizzare solo degli algoritmi che hanno superato particolari test e ricevuto l’approvazione FIPS (Federal Information Processing Standards). Mentre HMAC-SHA-1 e AES-XCBC-MAC-96 sono algoritmi approvati FIPS e sono considerati sicuri ed affidabili, MD5 che è stato recentemente infranto da Patrick Stach, il suo HMAC non viene più considerato sicuro, non è un algoritmo approvato FIPS e ne viene pertanto sconsigliato l’uso.

 

La generazione dei numeri casuali (Nonces)

Come corollario necessario ma, imprescindibile di un sistema crittografico (Cryptosystem) è necessario parlare della generazione dei numeri casuali (nonces).  Un nonce è l’acronimo di “number used once” cioè, un numero usato una sola volta. Un nonce è di solito un valore casuale o pseudo-casuale che viene usato come valore di imput in molti tipi di calcoli all’interno di un Cryptostystem. Questo nonce viene generato all’interno di un sistema informatico. Ed è di fondamentale importanza ai fini della sicurezza che questo valore sia impredicibile.

 

Poiché i sistemi informatici, i computer sono macchine che operano in base a procedure completamente prevedibili sono cioè, dei sistemi assolutamente deterministici. Vale a dire che sono coerenti e che seguono sempre la stessa logica lineare. In sistemi del genere è piuttosto difficile generare dei numeri che siano realmente casuali.

 

Ma i Nonces cioè, i numeri casuali usati una sola volta sono indispensabili per il corretto funzionamento di un Cryptosystem. Per questo motivo sono stati progettati degli algoritmi che generano dei numeri casuali chiamati RNG (Random Number Generator) e PRNG (Pseudo-Random Number Generator). Questi generatori di numeri pseudo casuali si trovano comunque all’interno di un sistema deterministico. Devono comunque seguire delle regole matematiche. Regole che per quanto complesse possano essere, generano numeri che possono essere predetti.

 

Per un attaccante particolarmente preparato questi numeri, proprio perché generati all’interno di un sistema deterministico, si possono trovare all’interno di un range di imprevedibilità molto ristretto. Range che per tentativi ed errori è possibile restringere fino ad ottenere il corretto valore generato. I valori ottenuti con questi generatori non sono quindi utilizzabili in crittografia, perché forniscono numeri che in una certa maniera sono predicibili.

 

Un numero è veramente casuale quando è veramente imprevedibile. Questa imprevedibilità è particolarmente importante quando i nonce vengono usati nel campo crittografico. Per ottenere questa imprevedibilità è stato necessario creare un particolare generatore di numeri casuali, che però, fosse sicuro e che fosse utilizzabile nel campo della crittografia. Un generatore di numeri casuali all’interno di un Cryptosystem deve essere crittograficamente sicuro.

 

Un CSPRNG (Cryptographically Secure Pseudo-Random Number Generator) è un generatore di numeri pseudo-casuali crittograficamente sicuro. Questo generatore è un algoritmo particolarmente impredicidibile (ne esistono diversi tipi anche in versione Hardware ad esempio citiamo Fortuna, metodo Monte Carlo, Blum Blum Shub, Mersenne Twister). L’uso di questo tipo di generatore è fondamentale in crittografia in quanto permette di generare dei valori che sono veramente casuali cioè, che hanno un range di imprevedibilità molto ampio. È possibile per questi algoritmi raccogliere valori di imput dall’ambiente circostante come il rumore dovuto all’agitazione termica o da altri fenomeni entropici.

 

 

 

Continua…..

Il problema dell’autenticazione viene risolto dal calcolo dell’Hashing

< Prec.   Succ. >
   
   
   
   
Newsflash

Packet Tracer è considerato da molti una vera rivoluzione nella didattica del Cisco Networking Academy Program: consente di creare delle topologie composte da dispositivi generici e/o Cisco, simulare la Command Line Interface del sistema operativo Cisco IOS, svolgere delle analisi di tipo "what if" creando scenari di traffico ed osservando il corrispondente comportamento della rete, ispezionare dinamicamente in ogni momento lo stato di ciascun dispositivo e il formato di ciascun pacchetto attivo sulla topologia di rete.

Per maggiori dettagli leggi la presentazione Packet Tracer