¿Cómo negocian los navegadores los parámetros de conexión SSL / TLS?

6

A los efectos de esta pregunta, supongamos que una conexión SSL / TLS tiene 4 parámetros:

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

Durante la negociación de los parámetros SSL, un navegador intenta lograr los mejores parámetros posibles . Por lo tanto, mis preguntas son:

  1. ¿Cuál es el orden correcto de la lista anterior ? Sé que todos ellos importantes (necesarios). Pero supongo que en el código uno de ellos es elegido como el primero, luego hay el segundo, el tercero y el cuarto. Creo que elegir TLSv1.2 con DES es más seguro que SSLv3 con AES256. Entonces, la pregunta es cómo se implementa en el navegador.
  2. ¿Dónde almacena el navegador esta información y si el usuario puede modificarla?

Sé que probablemente puede haber un par de respuestas que dependen del navegador, pero tal vez hay algunas reglas generales impuestas por el protocolo SSL / TLS.

    
pregunta boleslaw.smialy 24.07.2015 - 13:54
fuente

3 respuestas

4

la respuesta de @ ThomasPornin responde a su primera pregunta. Su segunda pregunta, entonces, es "¿cómo se configura el protocolo y la suite de cifrado en el navegador?"

Firefox

El protocolo se configura modificando acerca de: variables de configuración security.tls.version.min y security.tls.version .max . Puede establecer los valores mínimo y máximo para:

  • 0: SSL 3.0 es el protocolo de cifrado mínimo requerido / máximo admitido.
  • 1: TLS 1.0 es el protocolo de cifrado mínimo requerido / máximo admitido.
  • 2: TLS 1.1 es el protocolo de cifrado mínimo requerido / máximo admitido.
  • 3: TLS 1.2 es el protocolo de cifrado mínimo requerido / máximo admitido.

La lista de suites de cifrado ofrecida por Firefox está controlada por las variables about: config security.ssl3. (suite de cifrado). No puedes controlar el orden con esta interfaz, pero no me preocuparía por eso; el pedido en el cliente es una " preferencia " solamente, es el orden del servidor que domina la selección de cifrado. El uso de "ssl3" en el nombre no significa que solo afecte a ssl3; afecta a las suites de cifrado que pueden ofrecer todas las versiones SSL3 o TLS *.

Nopuedesimplementeagregarunaclaveconunnombrecifrado;elsoftwaredebeadmitirelcifrado,ylasversionesmásrecientesdeFirefoxadmitenbibliotecasmejoradasdeconjuntosdecifrado,yaquelosantiguos,losinsegurosseretiranylosnuevosseagregan.

Heleídoqueesposiblecompilarlabibliotecanecesariaparaagregarunnuevoconjuntodecifradopersonalizado,peroahoranopuedoencontraresareferenciaynolorecomendaríacomoreglageneral.

Chrome

Protocolo se configura usando el interruptor de línea de comandos --ssl-version-min. Por ejemplo, para deshabilitar SSLv3:

--ssl-version-min=tls1

La lista de suites de cifrado se puede reducir de la predeterminada usando - interruptor de línea de comando de la lista negra de cipher-suite , que hace referencia a los valores del IANA TLS Cipher Suite Registry .

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

Hay una excelente discusión aquí que toca cómo los diferentes navegadores hacen su cifrado. suites accesibles, y más particularmente cómo no hacen todo lo posible para que sea fácil o posible.

    
respondido por el gowenfawr 24.07.2015 - 16:58
fuente
4

En SSL, el intercambio de claves, el cifrado simétrico y el algoritmo MAC se agrupan en una única noción agregada llamada conjunto de cifrado .

En el saludo inicial, el cliente envía:

  • la versión de protocolo más alta que admite;
  • la lista de suites de cifrado que admite, en orden de preferencia;
  • otras cosas que no son relevantes aquí.

Luego, el servidor selecciona la versión del protocolo y el conjunto de cifrado que se utilizará. La teoría es que un servidor cortés elegirá la versión de protocolo más alta que el cliente y el servidor admitan, y cumplirá con las preferencias del cliente seleccionando el primer conjunto de cifrado en la lista de clientes que el servidor también admite. Los servidores existentes no son todos corteses.

Tenga en cuenta que la versión del protocolo no es totalmente independiente del conjunto de cifrado: algunos conjuntos de cifrado solo funcionan con algunas versiones de protocolo (por ejemplo, conjuntos de cifrado con AES / GCM como cifrado + MAC solo con TLS 1.2).

En cualquier caso, no hay una selección independiente de intercambio de claves, cifrado simétrico y MAC: el protocolo no es ortogonal a ese respecto. No todas las combinaciones tienen sentido; y no todas las combinaciones que tienen sentido están realmente definidas, es decir, tienen un cifrado asignado identificador de la suite .

Para obtener más información sobre este proceso, puede comenzar por leer esto contestar .

Los navegadores son más o menos configurables con respecto a los conjuntos de cifrado que admiten y el orden en el que los envían. Por lo general, puede activar o desactivar las suites de cifrado (p. Ej., Ver this ) pero la el orden está bajo el control de la lógica del navegador (que puede cambiar dependiendo de la versión). En cualquier caso, el servidor finalmente elige, no el cliente (aunque, por supuesto, el cliente siempre puede forzar el uso de un conjunto de cifrado específico enviando una lista restringida a ese único conjunto de cifrado).

Se puede argumentar que la noción de "orden de preferencia" tiene poco significado. En la práctica, el cliente envía una lista de suites de cifrado que está dispuesto a usar y, por lo tanto, cualquiera de ellas es utilizable. Si un conjunto de cifrado es "débil", el cliente no debería dejarlo lo suficiente en su lista de preferencias para que el servidor, con suerte, no lo seleccione; en cambio, el cliente no debe incluirlo en absoluto. Débil es débil.

    
respondido por el Thomas Pornin 24.07.2015 - 14:52
fuente
3

Tanto el cliente (navegador) como el servidor admiten un conjunto de conjuntos de cifrado.

El navegador envía su lista al servidor, luego el servidor selecciona de su lista (ordenada) algo que ambos admiten.

Los 4 parámetros no se eligen de forma independiente. Los 4 pertenecen a una suite de cifrado.

En qué paquete de cifrado admite su navegador, puede ver aquí . Desplácese hacia abajo hasta "Cipher Suites (en orden de preferencia)".

Puede ver la lista de un servidor dado aquí .

    
respondido por el HorstKevin 24.07.2015 - 14:38
fuente

Lea otras preguntas en las etiquetas