Stavo testando due diverse impostazioni di Apache2.
Nel primo caso, ho utilizzato l'elenco offerto dal link che offre il certificato gratuito. L'elenco ha il seguente aspetto:
SSLHonorCipherOrder on
SSLCompression off
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256
:ECDHE-ECDSA-AES128-GCM-SHA256
:ECDHE-RSA-AES256-GCM-SHA384
:ECDHE-ECDSA-AES256-GCM-SHA384
:DHE-RSA-AES128-GCM-SHA256
:DHE-DSS-AES128-GCM-SHA256
:kEDH+AESGCM
:ECDHE-RSA-AES128-SHA256
:ECDHE-ECDSA-AES128-SHA256
:ECDHE-RSA-AES128-SHA
:ECDHE-ECDSA-AES128-SHA
:ECDHE-RSA-AES256-SHA384
:ECDHE-ECDSA-AES256-SHA384
:ECDHE-RSA-AES256-SHA
:ECDHE-ECDSA-AES256-SHA
:DHE-RSA-AES128-SHA256
:DHE-RSA-AES128-SHA
:DHE-DSS-AES128-SHA256
:DHE-RSA-AES256-SHA256
:DHE-DSS-AES256-SHA
:DHE-RSA-AES256-SHA
:AES128-GCM-SHA256
:AES256-GCM-SHA384
:AES128-SHA256
:AES256-SHA256
:AES128-SHA
:AES256-SHA
:AES
:CAMELLIA
:DES-CBC3-SHA
:!aNULL
:!eNULL
:!EXPORT
:!DES
:!RC4
:!MD5
:!PSK
:!aECDH
:!EDH-DSS-DES-CBC3-SHA
:!EDH-RSA-DES-CBC3-SHA
:!KRB5-DES-CBC3-SHA
ATTENZIONE: L'elenco dei cypher dovrebbe essere una lunga riga in Apache2, ma per renderlo leggibile qui, l'ho rotto con un codice per riga.
Quando provo quella lista con
https://www.ssllabs.com/ssltest/analyze.html?d=<domain.tld>
Ottengo:
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f) ECDH secp256r1 FS 128 (eq. 3072 bits RSA)
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (0xc030) ECDH secp256r1 FS 256 (eq. 3072 bits RSA)
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (0x9e) DH 2048 bits FS 128
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (0x9f) DH 2048 bits FS 256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027) ECDH secp256r1 FS 128 (eq. 3072 bits RSA)
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013) ECDH secp256r1 FS 128 (eq. 3072 bits RSA)
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (0xc028) ECDH secp256r1 FS 256 (eq. 3072 bits RSA)
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014) ECDH secp256r1 FS 256 (eq. 3072 bits RSA)
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 (0x67) DH 2048 bits FS 128
TLS_DHE_RSA_WITH_AES_128_CBC_SHA (0x33) DH 2048 bits FS 128
TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 (0x6b) DH 2048 bits FS 256
TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x39) DH 2048 bits FS 256
TLS_RSA_WITH_AES_128_GCM_SHA256 (0x9c) 128
TLS_RSA_WITH_AES_256_GCM_SHA384 (0x9d) 256
TLS_RSA_WITH_AES_128_CBC_SHA256 (0x3c) 128
TLS_RSA_WITH_AES_256_CBC_SHA256 (0x3d) 256
TLS_RSA_WITH_AES_128_CBC_SHA (0x2f) 128
TLS_RSA_WITH_AES_256_CBC_SHA (0x35) 256
TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA (0x88) DH 2048 bits FS 256
TLS_RSA_WITH_CAMELLIA_256_CBC_SHA (0x84) 256
TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA (0x45) DH 2048 bits FS 128
TLS_RSA_WITH_CAMELLIA_128_CBC_SHA (0x41) 128
TLS_RSA_WITH_3DES_EDE_CBC_SHA (0xa) 112
Ora capisco il concetto di mettere prima il DHE e l'ECDHE. Questi sono chiaramente contrassegnati con "FS" che significa Forward Secrecy (cioè i tuoi messaggi rimarranno segreti in futuro anche se un hacker può in qualche modo ottenere la tua chiave privata.) Almeno fino a quando i qubit sono una realtà.)
Quello che mi chiedo è la colonna con i numeri "128" e "256". Perché dovremmo prima mettere un cifrario con meno bit di cifratura? La crittografia è sicura ma sarà più veloce perché ha bisogno di meno bit per crittografare i dati? O dovremmo avere prima tutto il 256, poi il 128 e infine il 112 (se vogliamo mantenere quello brutto ...)
Oppure sto fraintendendo quel numero e l'ordine è già buono come può essere?
Più tardi ho provato con un setup che ho ottenuto eseguendo il controllo PCI Compliance su un server e ho trovato un setup che genera quell'elenco. Il setup è simile a questo:
SSLCipherSuite HIGH:MEDIUM:!ADH:!MD5:!aNULL:!eNULL:!LOW:!EXP:!RC4
Semplicemente! Tuttavia, tale impostazione non supporta l'opzione SSLHonerCipherOrder
. Se l'opzione è on o no, l'ordine viene detto non specificato dal server (che è probabilmente vero).
In questo caso, il sito Web Qualys SSL Labs termina l'ordinamento delle cifre come segue: tutti i più piccoli prima (112) e poi l'ultimo più grande (256). Sarebbe quello che i browser farebbero? Cercando di ottenere il minor numero di bit per procedere con la crittografia? Non sarebbe il modo meno sicuro di trasmettere dati?
TLS_RSA_WITH_3DES_EDE_CBC_SHA (0xa) 112
TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA (0x16) DH 2048 bits FS 112
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA (0xc012) ECDH sect571r1 FS 112 (eq. 15360 bits RSA)
TLS_RSA_WITH_AES_128_CBC_SHA (0x2f) 128
TLS_DHE_RSA_WITH_AES_128_CBC_SHA (0x33) DH 2048 bits FS 128
TLS_RSA_WITH_CAMELLIA_128_CBC_SHA (0x41) 128
TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA (0x45) DH 2048 bits FS 128
TLS_RSA_WITH_SEED_CBC_SHA (0x96) 128
TLS_DHE_RSA_WITH_SEED_CBC_SHA (0x9a) DH 2048 bits FS 128
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013) ECDH sect571r1 FS 128 (eq. 15360 bits RSA)
TLS_RSA_WITH_AES_128_CBC_SHA256 (0x3c) 128
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 (0x67) DH 2048 bits FS 128
TLS_RSA_WITH_AES_128_GCM_SHA256 (0x9c) 128
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (0x9e) DH 2048 bits FS 128
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027) ECDH sect571r1 FS 128 (eq. 15360 bits RSA)
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f) ECDH sect571r1 FS 128 (eq. 15360 bits RSA)
TLS_RSA_WITH_AES_256_CBC_SHA (0x35) 256
TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x39) DH 2048 bits FS 256
TLS_RSA_WITH_CAMELLIA_256_CBC_SHA (0x84) 256
TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA (0x88) DH 2048 bits FS 256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014) ECDH sect571r1 FS 256 (eq. 15360 bits RSA)
TLS_RSA_WITH_AES_256_CBC_SHA256 (0x3d) 256
TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 (0x6b) DH 2048 bits FS 256
TLS_RSA_WITH_AES_256_GCM_SHA384 (0x9d) 256
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (0x9f) DH 2048 bits FS 256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (0xc028) ECDH sect571r1 FS 256 (eq. 15360 bits RSA)
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (0xc030) ECDH sect571r1 FS 256 (eq. 15360 bits RSA)