Reading Time: 5 minutes

IPsec AH: Authentication Protocol

Il servizio di autenticazione, previsto dallo standard IPsec, è gestito dal protocollo denominato Authentication Protocol.

Il servizio è fruibile introducendo, in un datagramma IP, un’intestazione di tipo AH.

Il protocollo di autenticazione, sviuluppato da IPsec, risolve molte delle lacune presenti nella versione del protocollo IP attuale.

Impedisce attacchi di Address Spoofing, consentendo di autenticare la sorgente del datagramma IP.

Elimina la possibilità di alterare i dati in transito sull’Internet pubblica, sostituendo il semplice concetto di checksum del messaggio con un più complesso meccanismo per il calcolo di un codice di autenticazione del messaggio (MAC), che permette di verificare l’integrità del messaggio trasmesso. Scongiura ogni forma di replay attack inserendo, all’interno del datagramma, dei numeri seriali che non si ripetono mai, prima di calcolarne la segnatura.

Perché il protocollo di autenticazione possa svolgere il proprio compito (essenzialmente calcolare e verificare la segnatura del messaggio), è necessario che le stazioni coinvolte posseggano un segreto comune.

Il protocollo di autenticazione non descrive come ottenere la condivisione di questa chiave comune, ma solo il suo uso all’interno del servizio. È compito di ISAKMP far condividere tale segreto alle entità coinvolte.

Il segreto condiviso tra entità IP è solo uno dei parametri necessari per implementare le diverse funzioni crittografiche. Per poter proteggere i messaggi scambiati, oltre a una chiave segreta, le entità IP coinvolte devono condividere anche un comune sistema crittografico.

Lo scambio bidirezionale di pacchetti avviene mediante una coppia di SA valide (una SA per gestire i pacchetti IP trasmessi in una direzione, l’altra il flusso in direzione opposta).

Ogni pacchetto trasmesso entro una SA AH è dotato di una intestazione composta dai seguenti campi:

  • il campo Next Payload (8 bit) indica la natura dei dati incapsulati nel datagramma IP;
  • il campo Lunghezza (8 bit) indica la lunghezza del campo dati. La lunghezza dell’intestazione AH non è fissa e può essere dedotta, sottraendo il precedente valore dalla lunghezza riportata nell’intestazione IP standard;
  • il successivo campo (16 bit) è per usi futuri;
  • il campo SPI (32 bit) indica a quale SA appartiene il datagramma IP;
  • il campo Numero Seriale (32 bit) indica la posizione del datagramma, all’interno del flusso di messaggi scambiati entro una data SA;
  • il campo finale, di lunghezza variabile, riporta invece la Segnatura del datagramma.

Al momento della creazione di una nuova SA, il numero seriale viene inizializzato e messo a zero.

Il valore è incrementato di una unità per ogni pacchetto trasmesso (sia per AH che per ESP).

In questo modo non esistono mai due datagrammi identici all’interno della stessa SA.

Anche nel caso di ritrasmissione di uno stesso datagramma IP, per esempio in seguito al rilevamento di errori in trasmissione da parte del livello TCP della stazione destinazione, non vengono mai prodotte due repliche uguali dello stesso pacchetto (differiscono almeno per il valore riportato come Numero Seriale dell’intestazione AH).

Il numero seriale inserito nell’intestazione AH, non svolge lo stesso ruolo del Sequence Number presente all’interno dell’intestazione TCP.

Nel protocollo TCP il numero seriale iniziale viene generato casualmente, per consentire alle entità coinvolte di distinguere i pacchetti appartenenti a due sessioni successive in possesso degli stessi descrittori (numeri di porta e indirizzi IP).

In IPsec il numero seriale viene invece incrementato in maniera deterministica, senza preoccuparsi della sua predicibilità, in quanto inserito solo per indicare l’ordine di trasmissione del pacchetto entro una data SA.

Poiché ogni SA ha un diverso SPI che la identifica, nell’architettura IPsec non occorre generare il numero seriale dell’intestazione AH casualmente, in quanto non esiste il rischio di interpretare vecchi pacchetti trasmessi come datagrammi IP appartenenti alla nuova associazione.

La sola condizione necessaria è che il numero seriale non deve mai essere ripetuto.

Per questo motivo quando sono stati trasmessi 232 – 1 datagrammi IP, la SA viene chiusa e se ne apre una nuova.

Il raggiungimento di tale valore viene segnato variando lo stato del flag relativo alla SA.

Il protocollo IP non garantisce la consegna alla destinazione dei datagrammi nello stesso ordine con cui sono stati prodotti dalla sorgente.

La ricezione di datagrammi IPsec fuori ordine può dar luogo a problemi di decodifica e validazione e può essere sfruttata da un attaccante per conseguire effetti DoS o tentare attacchi di replicazione.

Per superare questo inconveniente, entrambi i protocolli di trasporto definiti da IPsec, implementano un meccanismo a finestra mobile (denominato anti-replay window) che consente alla destinazione di stabilire se i datagrammi ricevuti posseggono numeri seriali validi.

Sono ritenuti validi solo i pacchetti con un numero seriale recente.

La larghezza della finestra mobile è fissa e vale 64 unità.

Il bordo della finestra avanza ogni volta che si riceve un nuovo datagramma IP, con numero seriale più grande dei precedenti.

Un datagramma IP viene ritenuto valido se trasporta un numero seriale compreso all’interno della finestra (ovvero non inferiore al più grande numero seriale ricevuto fino a quel momento diminuito dell’ampiezza della finestra mobile pari a 64 unità).

Un simile approccio sembra permettere un facile attacco di tipo denial of service.

Molti meccanismi di controllo a finestra mobile possono essere bloccati inviando un pacchetto con un numero seriale molto elevato, nel tentativo di far traslare la finestra mobile per portare allo scarto dei datagrammi legittimi ricevuti.

Se l’attaccante riesce a far traslare la finestra con i suoi pacchetti malevoli, i datagrammi IP prodotti dalla sorgente legittima sono scartati perché giudicati dalla destinazione privi di un numero seriale valido.

Lo schema IPsec non si presta a una forma di attacco così elementare.

L’attacco può essere portato con successo solo se l’hacker conosce il segreto comune condiviso dalle entità IP coinvolte.

Un datagramma IP appartenente a una generica SA viene infatti accettato solo dopo averne verificata l’integrità.

Esclusivamente i datagrammi IP correttamente verificati contribuiscono alla traslazione della finestra mobile.

Per produrre la segnatura del datagramma IP il protocollo AH utilizza lo schema HMAC dove, come algoritmi di digest è prevista la possibilità di scegliere tra diversi standard generali (MD5, SHA-1).

Per stare al passo con i tempi, e con le crescenti capacità di calcolo che un attaccante può utilizzare per condurre un attacco per forza bruta, l’elenco degli standard supportati viene costantemente aggiornato, inserendo algoritmi di digest più robusti non appena questi divengono disponibili.

La segnatura viene calcolata sul risultato della concatenazione delle seguenti componenti:

  • intestazione IP standard;
  • intestazione di tipo AH (con il campo Segnatura messo a zero);
  • campo dati contenuto nel datagramma IP.

Dei campi presenti nell’intestazione IP del datagramma origine quelli utilizzati nel calcolo del MAC consistono essenzialmente nella coppia indirizzi sorgente e destinazione.

Vengono invece messi a zero prima di effettuare il digest i valori di campi come TTL e Checksum.

 

[avatar user=”MattiaFelici” size=”thumbnail” align=”center” link=”https://www.computersec.it/informazioni/”]Mattia Felici[/avatar]

error: Content is protected !!

Complimenti! Ti sei iscritto alla nostra Newsletter

C'è stato un errore durante l'invio della richiesta. Per favore riprova.

Computer Security will use the information you provide on this form to be in touch with you and to provide updates and marketing.