2 Differenze di impatto

Se escludiamo implementazioni hardware, di cui non ci si occuperà in questa sede, l'utilizzo di IPsec richiede in genere l'aggiornamento del sistema operativo su tutte le macchine che devono fare elaborazioni IPsec, e questa può essere una difficoltà; tuttavia IPsec è parte integrante di IPv6 e sarà quindi in futuro integrato nell'implementazione TCP/IP dei vari sistemi operativi. TLS, da questo punto di vista, crea meno problemi perché è implementato all'interno dell'applicazione o come libreria. D'altra parte, come già evidenziato, TLS ha basso impatto sul sistema ma maggiore impatto sulle applicazioni, perché richiede esplicite modifiche in tutte i programmi che lo vogliono utilizzare; IPsec può essere invece utilizzato in maniera totalmente trasparente, senza cioè dover modificare le applicazioni. Il problema di quest'ultimo approccio, come evidenziato in [12], è che in molti casi l'applicazione potrebbe non volere questa trasparenza perché potrebbe voler comunicare ad IPsec le proprie esigenze di sicurezza e controllare che siano soddisfatte dalle security association negoziate. Questo è più che altro un problema che riguarda le attuali implementazioni di IPsec, in quanto una tale interfaccia verso l'applicazione è espressamente prevista da [2], seppure solo come possibilità. Come si è visto, con IPsec l'intero header TCP o UDP è cifrato, e non è nemmeno possibile sapere se il protocollo di trasporto è TCP o UDP: questo impedisce qualsiasi elaborazione da parte di sistemi intermedi che necessitino di accedere a dati che si trovano oltre l'header IP39, quali ad esempio i proxy e i firewall di tipo proxy server, oppure in alcune applicazioni che riguardano la qualità del servizio. TLS non presenta questo problema, e può essere utilizzato con i proxy. Una proposta che tenta di risolvere questo inconveniente è quella del Multi-Layer IPsec [19], che suddivide il pacchetto in varie ``zone'' cifrate con chiavi diverse. La soluzione proposta è tuttavia molto complessa e richiederebbe molte operazioni ai sistemi intermedi che vi partecipano (mantenere un complesso stato per ogni connessione, effettuare operazioni crittografiche di cifratura/decifratura e autenticazione, partecipare a protocolli di scambio delle chiavi -- che tra l'altro diventano di tipo multicast, e non sono analizzati in [19]), contrastando in pieno una certa tendenza a spostare l'intelligenza ai bordi esterni della rete. Oltre a ciò, la proposta comporta la modifica dei protocolli del nucleo di IPsec (AH ed ESP, ma anche IKE), e questo al momento non è probabilmente molto realistico. Un altro inconveniente di IPsec da cui TLS è invece immune, discusso in [20], riguarda il NAT (Network Address Translation): infatti AH autentica anche l'header IP che non può quindi essere modificato, ESP cifra l'header TCP rendendo inaccessibili i numeri di porta (utilizzati dal NAPT40), e IKE, per come utilizza gli indirizzi IP, non può attraversare il NAT. Per questo le operazioni del NAT devono necessariamente essere effettuate prima dell'elaborazione IPsec, per cui non deve essere applicato IPsec sugli host al traffico che verrà sottoposto al NAT, e la macchina che effettua il NAT deve stare anch'essa (come gli host) dietro il security gateway, oppure coincidere con esso. Con l'avvento di IPv6 comunque la principale motivazione del NAT, ovvero l'attuale scarsità di indirizzi IP con IPv4, verrà meno e quindi questo non dovrebbe costituire più un grosso problema, ma bisogna considerare il fatto che il NAT è utilizzato anche per ragioni di sicurezza, ovvero per nascondere la struttura interna di una rete e renderla inaccessibile dall'esterno. Il protocollo HIP, di cui si parlerà nel capitolo 5, risolve anche questo problema nell'ambito di comunicazioni host-to-host.

Tabella 4.1: Principali differenze tra IPsec e TLS.
IPsec TLS
architettura complessa singolo protocollo
peer-to-peer client-server
livello rete livello sessione
canale tra due macchine canale tra due applicazioni
può proteggere tutto il traffico IP può proteggere solo il traffico TCP
protegge tutto ciò che segue l'header IP protegge i dati del livello applicazione
impatto maggiore sul sistema operativo impatto maggiore sulle applicazioni
poco consolidato consolidato e diffuso




Footnotes

... IP39
Se si usa la modalità tunnel non è nemmeno possibile accedere all'header IP originale.
... NAPT40
Nel NAPT (Network Address Port Translation) si utilizzano i numeri di porta per distinguere le connessioni. Questo è il modo in cui viene effettuato il masquerading (nome utilizzato in ambiente Linux), in cui un certo numero di host viene mascherato dietro un solo indirizzo IP (quello dell'host che effettua il masquerading).
©2001 Davide Cerri