suite di crittografia consigliate da JSSE

7

Sulla scia di POODLE, sto rivedendo la configurazione di un certo numero di server Tomcat in esecuzione sul connettore JSSE.

Per capire quali cifrari supportati da JSSE ho scritto un piccolo frammento che ha emesso tutti i cifrari disponibili, il risultato è stato:

SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA
SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA
SSL_DHE_DSS_WITH_DES_CBC_SHA
SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA
SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA
SSL_DHE_RSA_WITH_DES_CBC_SHA
SSL_DH_anon_EXPORT_WITH_DES40_CBC_SHA
SSL_DH_anon_EXPORT_WITH_RC4_40_MD5
SSL_DH_anon_WITH_3DES_EDE_CBC_SHA
SSL_DH_anon_WITH_DES_CBC_SHA
SSL_DH_anon_WITH_RC4_128_MD5
SSL_RSA_EXPORT_WITH_DES40_CBC_SHA
SSL_RSA_EXPORT_WITH_RC4_40_MD5
SSL_RSA_WITH_3DES_EDE_CBC_SHA
SSL_RSA_WITH_DES_CBC_SHA
SSL_RSA_WITH_NULL_MD5
SSL_RSA_WITH_NULL_SHA
SSL_RSA_WITH_RC4_128_MD5
SSL_RSA_WITH_RC4_128_SHA
TLS_DHE_DSS_WITH_AES_128_CBC_SHA
TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
TLS_DHE_DSS_WITH_AES_128_GCM_SHA256
TLS_DHE_RSA_WITH_AES_128_CBC_SHA
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
TLS_DH_anon_WITH_AES_128_CBC_SHA
TLS_DH_anon_WITH_AES_128_CBC_SHA256
TLS_DH_anon_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_NULL_SHA
TLS_ECDHE_ECDSA_WITH_RC4_128_SHA
TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_NULL_SHA
TLS_ECDHE_RSA_WITH_RC4_128_SHA
TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDH_ECDSA_WITH_NULL_SHA
TLS_ECDH_ECDSA_WITH_RC4_128_SHA
TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDH_RSA_WITH_NULL_SHA
TLS_ECDH_RSA_WITH_RC4_128_SHA
TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA
TLS_ECDH_anon_WITH_AES_128_CBC_SHA
TLS_ECDH_anon_WITH_NULL_SHA
TLS_ECDH_anon_WITH_RC4_128_SHA
TLS_EMPTY_RENEGOTIATION_INFO_SCSV
TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5
TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA
TLS_KRB5_EXPORT_WITH_RC4_40_MD5
TLS_KRB5_EXPORT_WITH_RC4_40_SHA
TLS_KRB5_WITH_3DES_EDE_CBC_MD5
TLS_KRB5_WITH_3DES_EDE_CBC_SHA
TLS_KRB5_WITH_DES_CBC_MD5
TLS_KRB5_WITH_DES_CBC_SHA
TLS_KRB5_WITH_RC4_128_MD5
TLS_KRB5_WITH_RC4_128_SHA
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_NULL_SHA256

Ho disabilitato SSL completamente sul server, quindi sono disponibili solo TLSv1.0-2 . Voglio limitare solo a cifre forti. Non ho dubbi sulla compatibilità con le versioni precedenti.

Riduci l'elenco utilizzando principalmente il consiglio di Mozilla insieme a uno rispondi su SO e questo blog post Ho ristretto l'elenco a:

TLS_DHE_RSA_WITH_AES_128_CBC_SHA
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_128_GCM_SHA256

Questa è una serie ragionevole di cifre? Ho rimosso alcuni che non dovrei avere? Qualcuno in quella lista non ha un alto livello di sicurezza?

    
posta Boris the Spider 22.10.2014 - 11:43
fonte

1 risposta

11

È sempre possibile essere più paranoici, quindi puoi restringere ulteriormente la lista, a seconda di quanto sei preoccupato. In sostanza:

  • Rimuovi le suite di crittografia DH_anon: non autenticano il server, quindi sono deboli contro gli attacchi MitM .
  • Non utilizzare RC4 , poiché ha pregiudizi noti.
  • Non utilizzare 3DES perché la sua dimensione di blocco breve (8 byte) rende problematico dopo i primi pochi gigabyte di i dati.
  • Non utilizzare codici a blocchi che funzionano in modalità CBC perché la modalità CBC nella modalità MAC-then-encrypt utilizzata da SSL / TLS è difficile da implementare correttamente (vedi tutti gli attacchi BEAST e Poodle).
  • Utilizza sempre una suite di crittografia DHE o ECDHE per ottenere inoltrare la segretezza .
  • Non usare SHA-1 se vuoi avere un bell'aspetto con il folle panico che non capisce esattamente cos'è una collisione basata sull'analisi differenziale del percorso.

A quel punto, si finisce con l'applicazione di TLS 1.2 (e il rifiuto delle versioni precedenti), e il seguente elenco:

TLS_DHE_DSS_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

Ovviamente, questo elenco sarà ulteriormente ridotto, a seconda del tipo di chiave contenuta nel certificato del server. Se la chiave ha tipo DSS, puoi utilizzare solo la prima suite di crittografia. Se ha tipo ECDSA, si applica solo la seconda. Se, come il 99,3% del mondo, utilizzi RSA per il tuo certificato, puoi scegliere tra le ultime due suite di crittografia; preferirai l'ECDHE se vuoi scatenare il tuo hipster interiore.

In pratica , la scelta della suite di crittografia SSL è estremamente improbabile che sia il punto debole attraverso il quale si verificherà il compromesso. Quando gli aggressori attaccano il tuo server, non lo faranno affrontando con la cripto upfront. Quindi non pensarci troppo. Siate consapevoli del fatto che la maggior parte dei vostri sforzi per sfoltire l'elenco di suite di cifrari è destinata a placare audaci auditor e manager preoccupati, quindi l'importante questione operativa non è "cosa garantirà la massima sicurezza?" ma "cosa indurrà il più strong sentimento di sicurezza?".

    
risposta data 22.10.2014 - 15:24
fonte

Leggi altre domande sui tag