3 Connessioni gateway-to-gateway: la opportunistic encryption

La opportunistic encryption è una caratteristica dell'implementazione FreeS/WAN per Linux di IPsec, ed ha lo scopo di proteggere la maggior parte possibile del traffico Internet. È ancora in fase sperimentale, sia per quanto riguarda l'implementazione che per quanto riguarda la definizione e la specifica [25]. Questa procedura permette a due host qualsiasi che la supportano di instaurare una connessione IPsec, senza che essi debbano avere una qualsiasi conoscenza reciproca precedente, utilizzando DNSSEC per reperire la chiave pubblica dell'interlocutore. Anche se può essere utilizzata in un ambito end-to-end, la opportunistic encryption sembra adatta soprattutto ad uno scenario di tipo gateway-to-gateway, instaurando sostanzialmente delle connessioni dinamiche simili a VPN.

L'algoritmo è descritto in dettaglio in [26], comunque il funzionamento in linea generale è il seguente:

  1. L'iniziatore (security gateway della sorgente) intercetta il pacchetto in uscita, e fa un'interrogazione al DNS sull'indirizzo di destinazione chiedendo un record TXT che contenga l'indirizzo del security gateway (ricevitore) associato alla destinazione42. L'iniziatore chiede poi al DNS un record KEY associato al ricevitore, ottenendone così la chiave pubblica43.
  2. L'iniziatore inizia uno scambio IKE fase 1 con il ricevitore.
  3. Il ricevitore riceve il primo messaggio, risponde, e nel frattempo interroga il DNS chiedendo un record KEY associato all'iniziatore per ottenerne la chiave pubblica (che verrà utilizzata nel corso dello scambio IKE fase 1).
  4. Al termine dello scambio IKE fase 1, l'iniziatore inizia uno scambio IKE fase 2 (quick mode) con il ricevitore.
  5. Il ricevitore, dal primo messaggio del quick mode, viene a conoscenza dell'indirizzo della sorgente. A meno che questo non coincida con quello dell'iniziatore, il ricevitore interroga il DNS chiedendo un record TXT associato alla sorgente, per verificare che l'iniziatore sia autorizzato a rappresentarla.
  6. Al termine dello scambio IKE fase 2, la security association IPsec è stata negoziata e la comunicazione protetta può procedere.

La opportunistic encryption non è implementata nella versione 1.9 di FreeS/WAN, ed è stata inclusa solo a partire dalla versione 1.91 (giugno 2001): per le prove di laboratorio che sono state condotte per verificarne le funzionalità si sono utilizzati alcuni snapshot sperimentali di sviluppo successivi alla release 1.9 (per le misurazioni sull'handshake, che verrano illustrate nel capitolo 6, si è utilizzata la versione 1.91). Si sono utilizzate solamente due macchine (quindi in un'ottica end-to-end e non gateway-to-gateway), installando su una di esse anche un server DNS; le macchine sono state lasciate collegate alla rete locale per vedere l'effetto di altro traffico in entrata e uscita.

Un problema evidenziato è il seguente: con la opportunistic encryption il sistema intercetta ogni pacchetto in uscita e invoca il demone IKE per cercare di instaurare una connessione IPsec. Per questo deve però interrogare il server DNS, e quindi generare altri pacchetti in uscita, i quali vengono intercettati e così via. Il problema è risolvibile ad esempio installando manualmente una route in chiaro verso il server DNS44, oppure inserendo una regola che esclude dall'elaborazione IPsec il traffico DNS45 (per autenticare le risposte del DNS si usa DNSSEC46, mentre la riservatezza in questo caso potrebbe non essere importante).

Un altro problema riscontrato durante i test è questo: quando un pacchetto viene intercettato, si installa una regola di tipo ``hold'' per la destinazione, il che significa che il pacchetto viene tenuto in attesa finché la negoziazione opportunistic non è terminata (con esito positivo o negativo), mentre in caso di arrivo di altri pacchetti per la stessa destinazione viene tenuto in attesa soltanto il più recente, scartando i pacchetti precedenti. Si è visto però che in condizioni di alto carico è possibile che non si ottenga risposta dal DNS, il che comporta che la regola di ``hold'' rimane al suo posto bloccando qualsiasi comunicazione con la destinazione. Il problema è stato segnalato al team di sviluppo di FreeS/WAN, ed è stato risolto inserendo un timeout associato a tali regole.

Quello che appare probabilmente il problema maggiore di questo approccio è comunque legato agli attacchi di denial of service: è infatti sufficiente inviare ad un gateway con opportunistic encryption dei pacchetti ICMP echo request (ovvero dei ping) con indirizzi mittente fasulli per costringere il gateway ad una query DNS sincrona per ognuno di questi indirizzi, e ad iniziare degli handshake IKE (con tutto il carico computazionale che comportano) nel caso da tali interrogazioni si ottengano le informazioni sufficienti per farlo. Questo rischio è notevole, anche in considerazione del fatto che ci si occupa di protocolli di sicurezza, e purtroppo il problema non sembra di facile soluzione a meno di cambiare profondamente i protocolli che entrano in gioco.

Dal punto di vista della definizione del protocollo, il formato dei pacchetti di IKE e la struttura dell'handshake non vengono intaccati. L'impatto di questa proposta, più che sulla definizione di IKE, ricade sulla sua implementazione: un demone IKE ``opportunistic'' deve infatti essere in grado di gestire le interrogazioni e le risposte DNS coinvolte nel processo (con i record KEY e TXT) e deve essere pronto a negoziare security association con qualunque altra macchina (il che può comportare grandi necessità di risorse per mantenere gli stati associati alle connessioni e grandi necessità di entropia per generare dati casuali quali i nonce). Per quanto riguarda quest'ultimo aspetto, che può rientrare anch'esso negli svantaggi di questo approccio dal punto di vista del denial of service, si vedrà nel prossimo paragrafo che il protocollo HIP è invece pensato con una maggiore attenzione in proposito.



Footnotes

... destinazione42
L'uso del record TXT è considerato temporaneo, in attesa che venga definito un record apposito.
... pubblica43
La chiave può essere inserita anche nel record TXT, per evitare una doppia interrogazione al DNS.
... DNS44
Questo se la macchina è configurata per interrogare un certo server DNS. Se, come nel caso esaminato in laboratorio, il server DNS è sulla macchina stessa questo dovrà comunicare con molti altri server DNS e dunque la situazione appare più problematica.
... DNS45
Questo è fattibile discriminando in base al numero di porta. Tale possibilità è prevista da [2], ma non è attualmente implementata in FreeS/WAN.
... DNSSEC46
Questo non è stato però ancora implementato in FreeS/WAN.
©2001 Davide Cerri