In una rete privata (come in uno spazio di indirizzi IP privato) presso un provider cloud, altri clienti hanno accesso alla stessa rete privata. Ho assicurato la comunicazione tra molti host e servizi con TLS fornito da Stunnel.
Sfondo: configurazione Stunnel corrente
Per semplificare la situazione attuale, concentriamoci sulla comunicazione tra due nodi, A (indirizzo IP IP_A
) e B ( IP_B
). Un esempio di Stunnel, dall'host A:
; [ This config only shows the crypto-relevant parts ]
; Disable support for insecure SSLv2 protocol and low-strength ciphers
ciphers = TLSv1.2:TLSv1.1:TLSv1:SSLv3:!SSLv2:!SSLv1:!LOW:!eNULL:!aNULL:!ADH:!EXP:!MD5@STRENGTH
sslVersion = TLSv1
; The following options provide additional security at some performance penalty
; Default ECDH/DH parameters are strong/conservative, so it is quite safe to
; comment out these lines in order to get a performance boost
options = SINGLE_ECDH_USE
options = SINGLE_DH_USE
verify = 2
[my-service-B]
client = yes
accept = 127.0.0.1:15674
connect = IP_B:15675
CApath = /etc/stunnel/ssl/my-service/certs
CRLfile = /etc/stunnel/ssl/my-service/ca-crl.pem
cert = /etc/stunnel/ssl/my-service/certs/my-service-cert.pem
key = /etc/stunnel/ssl/my-service/private/my-service-key.pem
La configurazione Stunnel sull'host B è identica, tranne per il fatto che la sezione del servizio è stata sostituita da:
[my-service-localhost]
client = no
accept = IP_B:15675
connect = localhost:15674
; [ … the key and certificates are the same … ]
I certificati utilizzano una chiave RSA a 2048 bit. Quando includo il debug dell'output nel log, i report Stunnel
Could not load DH parameters from /etc/stunnel/ssl/my-service/certs/my-service-cert.pem
Using hardcoded DH parameters
DH initialized with 2048-bit key
ECDH initialized with curve prime256v1
durante l'avvio. Inoltre, quando l'host A si connette, il registro include le voci
SSL accepted: new session negotiated
Negotiated TLSv1/SSLv3 ciphersuite: ECDHE-RSA-AES256-SHA (256-bit encryption)
IPSec
Ora, mi chiedo quale configurazione IPSec fornirà lo stesso livello di sicurezza del trasporto della suddetta configurazione TLS / Stunnel, sia rispetto agli algoritmi di crittografia e chiavi utilizzate per le intestazioni di autenticazione IPSec (AH), che incapsulano il carico utile di sicurezza (ESP), e politiche di sicurezza? So che IPSec protegge tutto il traffico di rete tra gli host interessati, mentre TLS protegge solo il traffico per le porte / applicazioni configurate, quindi non è quello che sto chiedendo.
In base alla pagina man di setkey(8)
, gli algoritmi di autenticazione disponibili per AH sono:
algorithm keylen (bits)
hmac-md5 128 ah: rfc2403
128 ah-old: rfc2085
hmac-sha1 160 ah: rfc2404
160 ah-old: 128bit ICV (no document)
keyed-md5 128 ah: 96bit ICV (no document)
128 ah-old: rfc1828
keyed-sha1 160 ah: 96bit ICV (no document)
160 ah-old: 128bit ICV (no document)
null 0 to 2048 for debugging
hmac-sha256 256 ah: 96bit ICV
(draft-ietf-ipsec-ciph-sha-256-00)
256 ah-old: 128bit ICV (no document)
hmac-sha384 384 ah: 96bit ICV (no document)
384 ah-old: 128bit ICV (no document)
hmac-sha512 512 ah: 96bit ICV (no document)
512 ah-old: 128bit ICV (no document)
hmac-ripemd160 160 ah: 96bit ICV (RFC2857)
ah-old: 128bit ICV (no document)
aes-xcbc-mac 128 ah: 96bit ICV (RFC3566)
128 ah-old: 128bit ICV (no document)
tcp-md5 8 to 640 tcp: rfc2385 (tcp-md5 support only on BSD)
e gli algoritmi di crittografia disponibili per ESP sono:
algorithm keylen (bits)
des-cbc 64 esp-old: rfc1829, esp: rfc2405
3des-cbc 192 rfc2451
null 0 to 2048 rfc2410
blowfish-cbc 40 to 448 rfc2451
cast128-cbc 40 to 128 rfc2451
des-deriv 64 ipsec-ciph-des-derived-01
3des-deriv 192 no document
rijndael-cbc 128/192/256 rfc3602
twofish-cbc 0 to 256 draft-ietf-ipsec-ciph-aes-cbc-01
aes-ctr 160/224/288 draft-ietf-ipsec-ciph-aes-ctr-03
camellia-cbc 128/192/256 rfc4312
Note that the first 128 bits of a key for aes-ctr will be used as AES
key, and the remaining 32 bits will be used as nonce.
Naturalmente, nel caso in cui diverse combinazioni di algoritmi AH ed ESP e lunghezze di chiavi forniscano un livello di sicurezza equivalente alla precedente configurazione di STunnel, vorrei ottimizzare per una maggiore larghezza di banda e un minore utilizzo della CPU.
Inoltre, esiste un elenco di coppie di configurazioni (approssimative e lunghezze chiave) equivalenti (approssimativamente) TLS e IPSec?
Aggiornamento
Quando ho scritto "livello di sicurezza" sopra, probabilmente avrei dovuto essere più specifico e riferito a un concetto come "forza di sicurezza" o "bit di sicurezza", come definito dall'Istituto nazionale degli standard e della tecnologia statunitense ( NIST) in Pubblicazione speciale NIST 800-57: Raccomandazione per la gestione delle chiavi - Parte 1: Generale ( Revisione 3) :
A number associated with the amount of work (that is, the number of operations) that is required to break a cryptographic algorithm or system. In this Recommendation, the security strength is specified in bits and is a specific value from the set {80, 112, 128, 192, 256}
Tuttavia, tieni presente che i bit di sicurezza non sono (necessariamente) uguali alla lunghezza della chiave utilizzata per un particolare codice. Inoltre, nella sezione "5.6.1 Potenziali algoritmi comparabili", annotano (enfasi aggiunta da me):
[...] two algorithms are considered to be of comparable strength for the given key sizes (X and Y) if the amount of work needed to “break the algorithms” or determine the keys (with the given key sizes) is approximately the same using a given resource. The security strength of an algorithm for a given key size is traditionally described in terms of the amount of work it takes to try all keys for a symmetric algorithm with a key size of "X" that has no short cut attacks (i.e., the most efficient attack is to try all possible keys).
Pertanto, quando ho chiesto quale configurazione IPSec fornirà lo stesso livello di sicurezza del trasporto della precedente configurazione TLS / Stunnel, la risposta dovrebbe probabilmente dipendere dalla forza di crittografia del cifrario negoziato da Stunnel, come menzionato sopra, combinato con qualsiasi conoscenza su come il modello di sicurezza IPSec rispetto al modello di sicurezza TLS possa influire sull'efficacia del cifrario e / o sulla sicurezza generale del trasporto.