In che modo i browser negoziano i parametri di connessione SSL / TLS?

6

Ai fini di questa domanda, supponiamo che una connessione SSL / TLS abbia 4 parametri:

  • protocol ,
  • symmetric encryption method ,
  • asymmetric encryption method ,
  • MAC .

Durante la negoziazione dei parametri SSL, un browser tenta di raggiungere i migliori parametri possibili . Quindi, le mie domande sono:

  1. Che cos'è l'ordine corretto dell'elenco precedente ? So che sono tutti importanti (necessari). Ma presumo che nel codice uno di loro sia scelto come primo, poi c'è il secondo, il terzo e il quarto. Credo che scegliere TLSv1.2 con DES sia più sicuro di SSLv3 con AES256. Quindi la domanda è come è implementata nel browser.
  2. Dove memorizza il browser queste informazioni e se può essere modificato dall'utente?

So che probabilmente ci sono un paio di risposte dipendenti dal browser, ma forse ci sono alcune regole generali applicate dal protocollo SSL / TLS.

    
posta boleslaw.smialy 24.07.2015 - 13:54
fonte

3 risposte

4

@ La risposta di ThomasPornin risolve la tua prima domanda. La seconda domanda, quindi, è "come si configura il protocollo e la suite di crittografia nel browser?"

Firefox

Il protocollo è configurato modificando a proposito di: variabili di configurazione security.tls.version.min e security.tls.version .max . Puoi impostare il minimo e il massimo su:

  • 0: SSL 3.0 è il protocollo di crittografia minimo richiesto / massimo supportato.
  • 1: TLS 1.0 è il protocollo di crittografia minimo richiesto / massimo supportato.
  • 2: TLS 1.1 è il protocollo di crittografia minimo richiesto / massimo supportato.
  • 3: TLS 1.2 è il protocollo di crittografia minimo richiesto / massimo supportato.

L'elenco delle suite di crittografia offerte da Firefox è controllato da about: config variables security.ssl3. (cipher suite). Non riesci a controllare l'ordine con questa interfaccia, ma non mi preoccuperei di ciò; l'ordine sul client è solo un " preferenza ", è l'ordine del server che domina la selezione di cifrario. L'uso di "ssl3" nel nome non significa che impatta solo ssl3; influisce sulle suite di crittografia che possono essere offerte da tutte le versioni SSL3 o TLS *.

Nonpuoisemplicementeaggiungereunachiaveconunnomecifrato;lacrittografiadeveesseresupportatadalsoftwareeleversionipiùrecentidiFirefoxsupportanolibreriemiglioratedisuitedicrittografiainquantolesuitemenorecentienonsicurevengonoritirateevengonoaggiuntenuovesuite.

Holettocheèpossibilepercompilarelalibrerianecessariaperaggiungereunanuovasuitedicrittografiapersonalizzata,manonriescoatrovarlaoraenonlaconsigliereicomeregolagenerale.

Chrome

Il protocollo è configurato utilizzando l'opzione della riga di comando --ssl-version-min. Ad esempio, per disabilitare SSLv3:

--ssl-version-min=tls1

L'elenco delle suite di crittografia può essere ridotto dall'impostazione predefinita utilizzando - switch della riga di comando di cipher-suite-blacklist , che fa riferimento ai valori di Registro IRA TLS Cipher Suite .

--cipher-suite-blacklist=0x0005,0x0004

C'è un'eccellente discussione qui che tocca come i diversi browser fanno il loro cifrario suite accessibili, e più in particolare come non fanno di tutto per renderlo facile o possibile.

    
risposta data 24.07.2015 - 16:58
fonte
4

In SSL, lo scambio di chiavi, la crittografia simmetrica e l'algoritmo MAC sono tutti raggruppati in un'unica nozione di aggregazione chiamata suite di crittografia .

Nell'handshake iniziale, il client invia:

  • la versione di protocollo più elevata che supporta;
  • l'elenco delle suite di crittografia supportate, in ordine di preferenza;
  • altre cose che non sono rilevanti qui.

Quindi il server seleziona la versione del protocollo e la suite di crittografia che verranno utilizzati. La teoria è che un server cortese sceglierà la versione del protocollo che è la più alta che sia il supporto client e server, e onorerà le preferenze del client selezionando la prima suite di crittografia nell'elenco dei client supportata dal server. I server esistenti non sono tutti cortesi.

Si noti che la versione del protocollo non è del tutto indipendente dalla suite di crittografia: alcune suite di crittografia funzionano solo con alcune versioni di protocollo (ad esempio suite di crittografia con AES / GCM come crittografia + MAC funzionano solo con TLS 1.2).

In ogni caso, non esiste una selezione indipendente di scambio di chiavi, crittografia simmetrica e MAC: il protocollo non è ortogonale a tale riguardo. Non tutte le combinazioni hanno senso; e non tutte le combinazioni che hanno senso sono effettivamente definite, cioè hanno una cifra assegnata identificativo della suite .

Per ulteriori informazioni su questo processo, puoi iniziare leggendo questo rispondere .

I browser sono più o meno configurabili per quanto riguarda le suite di crittografia supportate e l'ordine in cui vengono inviate. Di solito è possibile attivare o disattivare le suite di crittografia (ad es. Vedere questo ) ma il l'ordine è sotto controllo della logica del browser (che può variare in base alla versione). In ogni caso, il server alla fine sceglie, non il client (anche se ovviamente il client può sempre forzare l'uso di una specifica suite di cifratura inviando una lista ristretta a quella singola suite di crittografia).

Si può sostenere che la nozione di "ordine di preferenza" ha poco significato. In pratica, il client invia una lista di pacchetti di crittografia che è disposto a usare , e quindi è utilizzabile. Se una suite di cifratura è "debole", il client non dovrebbe metterlo giù abbastanza nel suo elenco di preferenze in modo che il server, si spera, non lo selezionerà; invece, il client non dovrebbe includerlo affatto. Debole è debole.

    
risposta data 24.07.2015 - 14:52
fonte
3

Sia il client (browser) che il server supportano un set di pacchetti di crittografia.

Il browser invia il suo elenco al server, quindi il server sceglie dalla sua lista (ordinata) qualcosa che entrambi supportano.

I 4 parametri non vengono scelti in modo indipendente. Tutti e 4 appartengono a una suite di crittografia.

Quale suite di crittografia supporta il tuo browser puoi vedere qui . Scorri verso il basso fino a "Suite Cipher (in ordine di preferenza)".

Puoi vedere l'elenco per un determinato server qui .

    
risposta data 24.07.2015 - 14:38
fonte

Leggi altre domande sui tag