Un client SSL può inviare CLIENT HELLO con la versione 3.2 e NON negoziare 3.1

3

Un client SSL può inviare CLIENT HELLO con la versione 3.2 e NON negoziare 3.1. Per sslv2 e 3, è possibile farlo inviando ssl23 CLIENT HELLO o SSL3. Si prega di fornire informazioni su come si può supportare 3.2 ma NON 3.1 o se è addirittura possibile.

    
posta doon 23.10.2013 - 14:48
fonte

1 risposta

4

Esiste un modo teorico che è spiegato in appendice E di RFC 5246 ; ma la sua implementazione non è necessariamente facile.

Nel messaggio ClientHello , il client invia una "versione del protocollo" che è la più alta che il client supporta (ed è disposta ad usare). Questo include il messaggio implicito "ma potrei supportare anche alcune versioni precedenti". Il server sceglie quindi la versione che verrà utilizzata e la indicherà nel suo messaggio ServerHello . Ad esempio, il client potrebbe aver inviato "fino a TLS 1.1" (codificato come 0x0302) e il server potrebbe rispondere "faremo TLS 1.0" (codificato come 0x0301).

Non c'è modo per il cliente di annunciare in modo proattivo le esclusioni (come in: "Supporto TLS 1.1 ma I non voglio fare TLS 1.0"). Tuttavia, se il server tenta di utilizzare una versione di protocollo che il client non desidera supportare, il client ha sempre la possibilità di chiudere la connessione. L'Appendice E dice che:

If the version chosen by the server is not supported by the client (or not acceptable), the client MUST send a "protocol_version" alert message and close the connection.

In tutte le generalità , se il cliente desidera supportare solo un insieme non contiguo di versioni di protocollo, può applicarlo forzatamente utilizzando diversi tentativi di connessione. Ad esempio, supponiamo che, per qualche motivo, il client desideri eseguire TLS 1.1 o SSL 3.0, ma non TLS 1.0. In tal caso, il client può prima inviare un ClientHello che specifica TLS 1.1 come versione supportata più alta e, se il server tenta di utilizzare TLS 1.0, il client può chiudere la connessione (preferibilmente con il messaggio di avviso "protocol_version"), e quindi riconnettiti, inviando una ClientHello specificando SSL 3.0 come versione supportata più alta.

Funziona solo se il contesto di utilizzo è tale che il client può provare diverse connessioni (ad esempio stiamo parlando di HTTPS, con connessioni TCP che il client può aprire a volontà).

In pratica , un server o un client di solito supporta un intervallo contiguo di versioni di protocollo (ad esempio supporta TLS 1.1 e 1.2, ma non 1.0 o SSL 3.0). In tal caso, è sufficiente un singolo tentativo di handshake: il server sceglierà al primo tentativo una versione di protocollo che sarà accettabile per il client, oppure non esiste una versione accettabile sia per il client che per il server e non funzionerà mai.

Indipendentemente dal fatto che una determinata implementazione di un client SSL offra un'API per disabilitare il supporto di una vecchia versione del protocollo, è un'altra domanda, naturalmente.

    
risposta data 23.10.2013 - 15:05
fonte

Leggi altre domande sui tag