Deshabilitar el protocolo TLS en el nivel del protocolo o en el nivel de la lista de cifrado: ¿Cuál es la diferencia?

8

Entonces, me topé con esta pregunta: ¿Por qué no funciona el protocolo TLS sin los conjuntos de cifrado SSLv3? En esa pregunta, OP intentó desactivar SSLv3 desactivándolo tanto en el protocolo como en la lista de cifrado (agregando !SSLv3 ). El resultado es que su TLSv1 no funciona, por lo que solo necesita desactivarlo en el nivel de protocolo.

Bueno, estoy confundido acerca de esas dos cosas, el protocolo y la lista de cifrado de OpenSSL.

  • Esta página declaró que estos dos eran parámetros importantes de OpenSSL, pero por qué necesitamos separar esos dos parametros? ¿Por qué no usar solo la lista de cifrado?
  • ¿Cuál es la diferencia entre deshabilitar SSLv3 (u otro) en el nivel de protocolo y nivel de lista de cifrado?
  • Si el usuario deshabilita SSLv3 y SSLv2 en su lista de cifrado (agregando !SSLv3:!SSLv2 ) pero no lo desactiva a nivel de protocolo, ¿qué sucedió entonces? ¿Alguien puede hacer conexión con SSLv2?
pregunta masegaloeh 10.03.2015 - 14:59
fuente

2 respuestas

15

La confusión proviene de la forma en que OpenSSL expresa sus opciones de configuración.

En el protocolo, hay dos cosas muy distintas:

  • La versión del protocolo . Esto puede ser SSL 3.0, TLS 1.0, TLS 1.1 o TLS 1.2 (o algo más, aún no definido). Internamente, la versión se codifica como un entero de 16 bits de valor 0x0300, 0x0301, 0x0302 o 0x0303, respectivamente (por lo que TLS 1.0 realmente es "SSL 3.1" en el cable). (No estoy hablando de SSL 2.0 aquí).

  • Las suites de cifrado . Estos son identificadores de 16 bits (por cable) para las combinaciones de algoritmos criptográficos que el cliente y el servidor están dispuestos a usar. El cliente envía una lista, el servidor elige la que se utilizará. La mayoría de las suites de cifrado funcionan para SSL 3.0, TLS 1.0 y TLS 1.1; Algunas suites de cifrado recientes solo funcionan con TLS 1.2 porque utilizan funciones de protocolo que están disponibles solo con TLS 1.2.

OpenSSL utiliza, en su cadena de configuración para especificar una lista de conjuntos de cifrado, algunos mnemónicos como "SSLv3". En ese contexto , "SSLv3" no significa "protocolo versión 0x0300"; significa "la lista de conjuntos de cifrado que pueden funcionar con SSLv3". Cuando escriba "! SSLv3" en la configuración de la lista de conjuntos de cifrado admitidos, debe leerlo como "eliminar todos los conjuntos de cifrado que puedan funcionar con SSL 3.0". Pero esto NO es: "elimine todos los conjuntos de cifrado que podrían funcionar con SSL 3.0 cuando en realidad use SSL 3.0 ". La eliminación es todo o nada; no puede eliminar el soporte de forma condicional en la versión del protocolo (eso sería conceptualmente factible, pero OpenSSL no funciona así).

Por lo tanto, si elimina la compatibilidad con todas las suites de cifrado que podrían funcionar con SSL 3.0, también eliminará las suites de cifrado para versiones de protocolo posteriores. En particular, dado que SSL 3.0, TLS 1.0 y TLS 1.1 usan todos los mismos conjuntos de cifrado, los únicos conjuntos de cifrado que quedan en su lista son los que son específicos de TLS 1.2. En efecto, también acabas de eliminar la compatibilidad con TLS 1.0 y 1.1.

Si usa " !SSLv3:!SSLv2 ", el servidor puede fingir para seguir soportando SSL 2.0, pero con una lista vacía de conjuntos de cifrado admitidos, por lo que no llegará muy lejos; un apretón de manos real no va a suceder. Es como dar la llave de tu auto, pero quitar las ruedas.

    
respondido por el Thomas Pornin 10.03.2015 - 15:21
fuente
2
  • Como son cosas diferentes, el protocolo trata sobre cómo manejar el apretón de manos y, por lo tanto, la lista de cifrado es sobre qué cifrados está dispuesto a aceptar para sus conexiones.
  • Si deshabilita el protocolo, no podrá hablar con un servidor que solo admita este protocolo.
  • Si desactivas los cifrados, podrás iniciar el apretón de manos, pero no encontrarás ningún cifrado común para acordar.

(Tenga en cuenta que en la pregunta que vincula, según la primera respuesta, es más un problema de denominación de OpenSSL, TLS debería funcionar bien si solo los cifrados SSLv3 efectivos están desactivados)

    
respondido por el Dillinur 10.03.2015 - 15:06
fuente

Lea otras preguntas en las etiquetas