¿Forzar la autenticación del certificado de cliente SSL / TLS incluso si el servidor no la solicita?

5

Por lo general, el servidor especifica en el mensaje de saludo del servidor si se necesita / desea un certificado de cliente.

¿Alguien sabe si es posible realizar una autenticación a través del certificado de cliente si el servidor no lo solicita?

Y si es posible, ¿alguien conoce a un cliente que permita forzar una autenticación de certificado de cliente?

    
pregunta Robert 17.05.2013 - 11:05
fuente

2 respuestas

6

El cliente no enviará un certificado a menos que el servidor lo solicite con un mensaje Certificate Request (consulte el estándar , sección 7.4.4). Si el servidor no solicita un certificado, es probable que el envío de un mensaje Certificate y CertificateVerify desde el cliente implique una terminación inmediata del servidor (con una alerta unexpected_message ). La redacción de la norma no es demasiado clara sobre ese tema, pero aún incluye este párrafo en la sección 7.4:

  

Los mensajes del protocolo de protocolo de enlace se presentan a continuación en el orden en que aparecen.      Debe ser enviado; Enviar mensajes de apretón de manos en un orden inesperado.      resulta en un error fatal. Los mensajes innecesarios de apretón de manos pueden ser      omitido, sin embargo. Tenga en cuenta una excepción a la ordenación: la      El mensaje de certificado se utiliza dos veces en el protocolo de enlace (del servidor al      cliente, luego de cliente a servidor), pero descrito solo en su primera      posición. El único mensaje que no está limitado por estas reglas de ordenación      es el mensaje HelloRequest, que puede enviarse en cualquier momento, pero que      DEBE ser ignorado por el cliente si llega en medio de un      apretón de manos.

Esto sugiere bastante fuertemente que un mensaje inesperado Certificate del cliente no será ignorado, y en lugar de eso "resultará en un error fatal".

Ahora puede imaginar una modificación activa por una entidad Man-in-the-Middle , que inyecta un mensaje Certificate Request adicional en el flujo desde el servidor y bloquea los Certificate y Certificate Verify del cliente. Esto es posible, ya que el apretón de manos inicial se realiza, por necesidad, con registros no protegidos.

Sin embargo, esto hará que falle el intercambio cuando se intercambien los mensajes Finished . Estos mensajes están protegidos (se producen después del cambio a los parámetros de seguridad recién negociados). El contenido de los mensajes Finished es un hash de todos los mensajes de intercambio enviados hasta el momento. Dado que el cliente y el servidor no vieron los mismos mensajes (desde el punto de vista del cliente, hubo mensajes extra de Certificate Request , Certificate y Certificate Verify ), los valores hash no coincidirán y el cliente y el servidor dejará la conexión.

Por lo tanto, no solo no está claro qué ganaría un atacante al forzar una autenticación de cliente que el servidor no solicitó, sino que tampoco funcionará en absoluto debido a la forma en que se calculan los mensajes Finished .

    
respondido por el Thomas Pornin 17.05.2013 - 13:41
fuente
5
  

¿Alguien sabe si es posible realizar una autenticación a través de   certificado de cliente si el servidor no lo solicita?

No. Si el servidor no ha solicitado un certificado de cliente y el cliente intenta enviarlo de todos modos, es muy probable que el servidor simplemente aborte el intento de conexión ya que no coincide con la respuesta esperada.

  

Y si es posible, ¿alguien conoce a un cliente que le permita forzar una   autenticación de certificado de cliente?

Lo encontraría más que curioso si un cliente pudiera forzar a un servidor a aceptar un certificado si no se ha solicitado. La respuesta a esa pregunta debe ser, por lo tanto, un número bastante calificado.

Por ejemplo; La sección 7.4.7 en RFC5246 indica que el mensaje de intercambio de claves del cliente DEBE ser el primer mensaje, a menos que se haya solicitado un certificado. Dado que no se ha solicitado ningún certificado y el cliente aún intenta enviar uno, el servidor NO DEBE continuar negociando una conexión con el cliente.

    
respondido por el Christoffer 17.05.2013 - 13:12
fuente

Lea otras preguntas en las etiquetas