Supporto protocollo SSL

1

Se mi collego a un server utilizzando una specifica versione del protocollo SSL, ma non ci sono pacchetti di crittografia offerti in tale protocollo, il protocollo sarebbe ancora considerato supportato?

Ad esempio, connettendosi a un server usando SSLv2: il server accetta il mio client SSLv2-hello, ma nella risposta non ci sono suite di crittografia supportate. SSLv2 non è sicuro e non dovrebbe mai essere supportato, ma se il protocollo è abilitato e non sono disponibili suite di crittografia, è ancora considerato supportato?

    
posta Jak 12.01.2017 - 12:26
fonte

4 risposte

4

Una versione di protocollo è considerata supportata se è possibile terminare correttamente l'handshake TLS con questa versione di protocollo. Poiché una stretta di mano riuscita include uno scambio di chiavi che richiede un codice, non conta come se non fosse possibile trovare un codice comune.

    
risposta data 12.01.2017 - 12:50
fonte
2

Se il tuo client è implementato secondo le specifiche, dovrebbe interrompersi se non riceve una cifra corrispondente nel server ciao.

In SSL 2.0 [1] questo apparirebbe come segue:

NO-Cipher-ERRORE Questo errore viene restituito dal client al server quando non riesce a trovarlo un cifrario o una dimensione della chiave che supporta che è anche supportato dal server. Questo errore non è recuperabile.

E in TLS 1.2 [2] come segue:

handshake_failure       La ricezione di un messaggio di avviso handshake_failure indica che il       il mittente non è stato in grado di negoziare un set di sicurezza accettabile       parametri dati le opzioni disponibili. Questo è un errore fatale.

[1] link

[2] link

    
risposta data 12.01.2017 - 12:54
fonte
0

No.

SSL / TLS decide sulla versione del protocollo come segue:

  • Il client invia un messaggio ClientHello contenente la versione SSL / TLS più alta supportata dal client.
  • Il server confronta la sua versione massima SSL / TLS supportata con quella supportata dal client e tenta di scegliere la versione più alta supportata da client e server.
  • Se viene selezionata una versione appropriata, viene inviata nuovamente nel messaggio ServerHello. In caso contrario, la connessione viene chiusa con un messaggio di errore.

Nel caso in cui il vostro client provasse a usare SSLv2, il vostro pacchetto ClientHello iniziale segnalerebbe la versione massima come SSLv2. Se il server non supporta SSLv2, rifiuta la connessione. Se il client ha segnalato una versione supportata più alta in ClientHello, il server non risponderebbe con alcuna suite di crittografia SSLv2 e quindi una connessione SSLv2 non sarebbe possibile.

    
risposta data 12.01.2017 - 12:50
fonte
0

Sulla base delle risposte finora, ho fatto un po 'di debug usando una vecchia versione di httpd di Apache con SSLv2 abilitato e ho ottenuto i seguenti log di debug; uno con SSLv2 abilitato (ma senza cifrari) e uno con SSLv2 disabilitato:

SSLv2 non abilitato:

[info] [client 192.168.56.1] Connection to child 66 established (server 127.0.1.1:443)
[info] Seeding PRNG with 656 bytes of entropy
[debug] ssl_engine_kernel.c(1901): OpenSSL: Handshake: start
[debug] ssl_engine_kernel.c(1909): OpenSSL: Loop: before/accept initialization
[debug] ssl_engine_io.c(1881): OpenSSL: read 11/11 bytes from BIO#7f86fdb62540 [mem: 7f86fdb69e70] (BIO dump follows)
[debug] ssl_engine_io.c(1814): +-------------------------------------------------------------------------+
[debug] ssl_engine_io.c(1853): | 0000: 80 25 01 00 02 00 0c 00-00 00 10                 .%.........      |
[debug] ssl_engine_io.c(1859): +-------------------------------------------------------------------------+
[debug] ssl_engine_kernel.c(1938): OpenSSL: Exit: error in SSLv2/v3 read client hello A
[info] [client 192.168.56.1] SSL library error 1 in handshake (server 127.0.1.1:443)
[info] SSL Library Error: 336027900 error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol speaking not SSL to HTTPS port!?
[info] [client 192.168.56.1] Connection closed to child 66 with abortive shutdown (server 127.0.1.1:443)

SSLv2 abilitato, ma nessuna offerta di codice:

[info] [client 192.168.56.1] Connection to child 6 established (server 127.0.1.1:443)
[info] Seeding PRNG with 656 bytes of entropy
[debug] ssl_engine_kernel.c(1901): OpenSSL: Handshake: start
[debug] ssl_engine_kernel.c(1909): OpenSSL: Loop: before/accept initialization
[debug] ssl_engine_io.c(1881): OpenSSL: read 11/11 bytes from BIO#7fefb8bd5540 [mem: 7fefb8bdce70] (BIO dump follows)
[debug] ssl_engine_io.c(1814): +-------------------------------------------------------------------------+
[debug] ssl_engine_io.c(1853): | 0000: 80 25 01 00 02 00 0c 00-00 00 10                 .%.........      |
[debug] ssl_engine_io.c(1859): +-------------------------------------------------------------------------+
[debug] ssl_engine_io.c(1881): OpenSSL: read 28/28 bytes from BIO#7fefb8bd5540 [mem: 7fefb8bec11b] (BIO dump follows)
[debug] ssl_engine_io.c(1814): +-------------------------------------------------------------------------+
[debug] ssl_engine_io.c(1853): | 0000: 05 00 80 03 00 80 01 00-80 07 00 c0 42 8e 70 80  ............B.p. |
[debug] ssl_engine_io.c(1853): | 0010: 2f 51 05 45 fe d2 37 a8-57 38 04 eb              /Q.E..7.W8..     |
[debug] ssl_engine_io.c(1859): +-------------------------------------------------------------------------+
[debug] ssl_engine_kernel.c(1909): OpenSSL: Loop: SSLv2 read client hello A
[debug] ssl_engine_kernel.c(1909): OpenSSL: Loop: SSLv2 write server hello A
[debug] ssl_engine_io.c(1881): OpenSSL: read 2/2 bytes from BIO#7fefb8bd5540 [mem: 7fefb8bec110] (BIO dump follows)
[debug] ssl_engine_io.c(1814): +-------------------------------------------------------------------------+
[debug] ssl_engine_io.c(1853): | 0000: 80 03                                            ..               |
[debug] ssl_engine_io.c(1859): +-------------------------------------------------------------------------+
[debug] ssl_engine_io.c(1881): OpenSSL: read 3/3 bytes from BIO#7fefb8bd5540 [mem: 7fefb8bec112] (BIO dump follows)
[debug] ssl_engine_io.c(1814): +-------------------------------------------------------------------------+
[debug] ssl_engine_io.c(1853): | 0000: 00 00 01                                         ...              |
[debug] ssl_engine_io.c(1859): +-------------------------------------------------------------------------+
[debug] ssl_engine_kernel.c(1933): OpenSSL: Exit: failed in SSLv2 read client master key A
[info] [client 192.168.56.1] SSL library error 1 in handshake (server 127.0.1.1:443)
[info] SSL Library Error: 335982795 error:1406B0CB:SSL routines:GET_CLIENT_MASTER_KEY:peer error no cipher
[info] [client 192.168.56.1] Connection closed to child 6 with abortive shutdown (server 127.0.1.1:443)

L'handshake non funziona in entrambi i casi, per diversi motivi. Un errore di handshake è quindi equivalente al protocollo non supportato (come da risposta accettata).

    
risposta data 12.01.2017 - 15:53
fonte

Leggi altre domande sui tag