¿Se puede deducir el soporte de firma SHA256 de las suites de cifrado TLS o cualquier otra parte de ClientHello (si no se envía el algoritmo de firma)?

2

Los sitios web que buscan mantener la máxima compatibilidad con los navegadores (heredados) pueden desear servir cadenas de certificados firmados por SHA2 a aquellos agentes de usuarios que los admiten, y SHA1 a aquellos que no lo hacen.

La especificación TLS 1.2 ( enlace ) define una nueva extensión signature_algorithm que, cuando lo envía el navegador, se puede usar para detectar el soporte para SHA2. Por ejemplo, si el navegador incluye "SHA256 / RSA" le dice al servidor que admite este par de algoritmo de firma / hash específico. Luego, el servidor puede seleccionar una cadena compatible y devolverla, o retroceder a algo como "SHA / RSA".

Sin embargo, hay dos problemas principales relacionados con esta extensión:

  1. RFC 5246 especifica que es opcional (consulte la sección 7.4.1.4.1)
  

Si el cliente admite solo los algoritmos de hash y firma predeterminados (enumerados en esta sección), PUEDE omitir la extensión signature_algorithms. Si el cliente no admite los algoritmos predeterminados, o admite otros algoritmos hash y de firma (y está dispuesto a usarlos para verificar los mensajes enviados por el servidor, es decir, certificados de servidor e intercambio de claves del servidor), DEBE enviar la extensión signature_algorithms, listando los algoritmos que está dispuesto a aceptar.

  1. Algunos navegadores (por ejemplo, Android 2.3-4.3) admiten SHA2 pero no TLS 1.2 (consulte matriz de características )
    1. Si la lógica del lado del servidor requiere la extensión, puede "sobrepasar" los certificados SHA1 a los clientes que de otro modo podrían procesar SHA2.

Dadas las dos deficiencias anteriores, ¿hay alguna otra parte del mensaje de TLS ClientHello que se pueda usar para detectar el soporte SHA2?

La idea original era ver si SHA256 aparecía en el campo PRF / MAC de un conjunto de cifrado (por ejemplo, el SHA256 al final de TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256), pero parece que estos también estarán presentes a partir de TLS 1.2). / p>     

pregunta Patrick 07.09.2015 - 02:26
fuente

1 respuesta

3

Los únicos lugares confiables para saber qué algoritmos de firma son compatibles que ya detectó:

  • la extensión signature_algorithms
  • y la versión TLS ofrecida por el cliente, que muestra que el cliente implementa (con suerte) al menos los requisitos mínimos de esta versión TLS

Todo lo demás es adivinar. Puede intentar hacer una huella digital del cliente en función de los cifrados ofrecidos y del orden de los cifrados (consulte pruebas de cliente de SSLLabs ). Puede agregar el uso de otras extensiones como SNI a la huella digital. Y luego podría asignar la huella digital a las firmas compatibles.

Pero recomendaría contra tales hacks poco confiables. Muchos sitios grandes como Facebook se mudan o ya se han movido a SHA-256 y esos romperán a todos los clientes que no admiten estos algoritmos de firma. Esto debería poner mucha presión sobre los clientes para que admitan SHA-256.

    
respondido por el Steffen Ullrich 07.09.2015 - 06:00
fuente

Lea otras preguntas en las etiquetas