Il Protocollo IpSec
IpSec utilizza diversi protocolli per stabilire una connessione fra i peer e criptare il traffico.
IKE (Internet Key Exchange, porta UDP 500) viene usato per negoziare una nuova connessione.
Si divide in due fasi:
- La prima fase, di autenticazione, stabilisce una SA (Security Association) fra i due peer
- La seconda fase, di scambio chiavi, usa la SA creata per negoziare una nuova SA da usare per la criptazione dei dati.
L'autenticazione si può basare su chiavi predefinite (PSK, PreShare Keys), chiavi RSA o certificati x509.
AH (Authentication header, IP type 51) e ESP (Encapsulating security payload, IP type 50) sono due diversi protocolli che possono essere usati per il trasporto dei dati nel tunnel. Possono coesistere o essere usati singolarmente, anche se si tende a preferire ESP perchè oltre a garantire autenticità e integrità dei dati, ne preserva la confidenzialità, criptandoli.
IpSec può lavorare in due diverse modalità: transport mode e tunnel mode.
Nel primo i dati sono criptati a livello di protocollo di trasporto (TCP, UDP) e lo scambio avviene direttamente fra i due peer della VPN, nel secondo è viene criptato l'intero pacchetto IP, non rivelando, al di fuori del tunnel, indirizzi IP e porte usate da sorgente e destinazione. In questa modalità si usano collegare fra loro due diverse reti, con i rispettivi client inconsapevoli della presenza di un tunnel.
L'integrità dei dati viene garantita da algoritmi di hash come MD5 o SHA.
Per la confidenzialità si usano algoritmi di criptazione simmetrici come 3DES, AES e Blowfish.
Lavorando a livello di rete, AH o ESP possono trasportare sia traffico UDP che TCP ma hanno seri problemi quando uno dei due peer del tunnel viene nattato. Le RFC 3947 e 3948 definiscono i metodi per negoziare IKE e incapsulare ESP in pacchetti UDP per permettere il Nat Traversal (NAT-T).