Disabilitazione del protocollo TLS a livello di protocollo o livello di elenco di codici: qual è la differenza?

8

Quindi, mi sono imbattuto in questa domanda: Perché il protocollo TLS non funziona senza le crittografie SSLv3? In questa domanda OP ha tentato di disabilitare SSLv3 disattivandolo sia in protocollo che in elenco di crittografia (aggiungendo !SSLv3 ). Il risultato è che il suo TLSv1 non funziona, quindi ha solo bisogno di disabilitarlo a livello di protocollo.

Bene, sono confuso riguardo a queste due cose, protocollo e elenco di crittografia di OpenSSL.

  • Questa pagina ha dichiarato che questi due erano parametri importanti di OpenSSL, ma perché abbiamo bisogno separare questi due parametri? Perché non usare solo la lista di cifrature?
  • Qual è la differenza tra disabilitare SSLv3 (o altro) a livello di protocollo e livello di elenco di cifre?
  • Se l'utente disabilita SSLv3 e SSLv2 nella sua lista di cifrari (aggiungendo !SSLv3:!SSLv2 ) ma non lo disabilita a livello di protocollo, cosa è successo allora? Qualcuno può stabilire una connessione con SSLv2?
posta masegaloeh 10.03.2015 - 14:59
fonte

2 risposte

15

La confusione deriva dal modo in cui OpenSSL esprime le sue opzioni di configurazione.

Nel protocollo ci sono due cose ben distinte:

  • La versione del protocollo . Questo può essere SSL 3.0, TLS 1.0, TLS 1.1 o TLS 1.2 (o qualcos'altro, non ancora definito). Internamente, la versione è codificata come numero intero a 16 bit del valore 0x0300, 0x0301, 0x0302 o 0x0303, rispettivamente (quindi TLS 1.0 è davvero "SSL 3.1" sul filo). (Non sto parlando di SSL 2.0 qui.)

  • Le suite di crittografia . Questi sono identificativi a 16 bit (sul cavo) per le combinazioni di algoritmi crittografici che il client e il server sono disposti a utilizzare. Il client invia una lista, il server sceglie quella che verrà utilizzata. La maggior parte delle suite di crittografia funziona con SSL 3.0, TLS 1.0 e TLS 1.1; alcune suite di crittografia recenti funzionano solo con TLS 1.2 perché utilizzano le funzionalità di protocollo disponibili solo con TLS 1.2.

OpenSSL utilizza, nella sua stringa di configurazione per specificare un elenco di pacchetti di crittografia, alcuni mnemonici come "SSLv3". In quel contesto , "SSLv3" non significa "versione del protocollo 0x0300"; significa "l'elenco di pacchetti di crittografia che possono funzionare con SSLv3". Quando scrivi "! SSLv3" nella configurazione per l'elenco delle suite di crittografia supportate, dovresti leggerlo come "rimuovere tutte le suite di crittografia che potrebbero funzionare con SSL 3.0". Ma questo NON è: "rimuovi tutti i pacchetti di crittografia che potrebbero funzionare con SSL 3.0 quando effettivamente usi SSL 3.0 ". La rimozione è tutto-o-niente; non è possibile rimuovere il supporto in modo condizionale sulla versione del protocollo (ciò sarebbe concettualmente possibile, ma OpenSSL non funziona così).

Quindi, se si rimuove il supporto per tutte le suite di crittografia che potrebbero funzionare con SSL 3.0, si rimuovono anche le suite di crittografia per ulteriori versioni del protocollo. In particolare, poiché SSL 3.0, TLS 1.0 e TLS 1.1 utilizzano tutte le stesse suite di crittografia, le uniche suite di crittografia rimanenti nell'elenco sono quelle specifiche per TLS 1.2. In effetti, hai appena ucciso anche il supporto per TLS 1.0 e 1.1.

Se si utilizza " !SSLv3:!SSLv2 ", il server può fingere di supportare ancora SSL 2.0, ma con un elenco vuoto di suite di crittografia supportate, quindi non andrà lontano; una vera stretta di mano non accadrà. È come dare la chiave per la tua auto ma rimuovere le ruote.

    
risposta data 10.03.2015 - 15:21
fonte
2
  • Poiché sono cose diverse, il protocollo tratta di come gestire l'handshake e così, l'elenco di cifrari riguarda i codici che sei disposto ad accettare per le tue connessioni.
  • Se disattivi il protocollo, non sarai in grado di parlare con un server che supporta solo questo protocollo.
  • Se disattivi i cifrari, sarai in grado di avviare l'handshake ma non troverai alcuna cifra comune da concordare.

(Si noti che sulla domanda che si collega, in base alla prima risposta, è più un problema di denominazione di OpenSSL, TLS dovrebbe funzionare bene se solo i cifrari SSLv3 efficaci sono disabilitati)

    
risposta data 10.03.2015 - 15:06
fonte

Leggi altre domande sui tag