Límites de seguridad de la autenticación del cliente TLS (desde los navegadores)

2

Diga que hay dos servidores que realizan TLS. Ambos servidores tienen certificados de punto final válidos. En otras palabras, ninguno de ellos emitirá una advertencia de los navegadores después de que se haya establecido la conexión.

¿Hay alguna forma de que la autenticación del cliente solicitada por un servidor pueda abusarse para crear una conexión válida con el otro servidor? Para TLS 1.2, la autenticación final se realiza utilizando el mensaje Finished que contiene verify_data , que se calcula sobre todos los mensajes de intercambio. ¿Es esto suficiente para evitar un ataque de intermediario incluso si hay un servidor malicioso de confianza en juego? ¿Qué pasa con los protocolos anteriores TLS 1.1, 1.0 y SSLv3?

Uno de los dos servidores puede considerarse malicioso. El servidor malintencionado puede usar la misma dirección web con un certificado de cliente válido de una cadena y clave privada diferente. Cualquier conjunto de cifrado es válido, aunque los que normalmente están habilitados en los navegadores tienen, por supuesto, preferencia a un atacante. No creo que importe mucho, pero supongamos que la autenticación del cliente se realiza mediante certificados X509v3 con PKCS # 1 v1.5 con SHA-256 como algoritmo de firma.

    
pregunta Maarten Bodewes 11.07.2015 - 10:52
fuente

1 respuesta

3

Si bien su pregunta parece compleja, creo que se reduce a la siguiente configuración:

  • dos servidores, el cliente no sabe cuál es el correcto
  • ambos requieren autenticación con certificados de cliente

Y su pregunta es, si el cliente se autentica contra el servidor A: ¿puede este servidor usar la autenticación exitosa del cliente para autenticarse contra el servidor B? La respuesta es no, porque el servidor A no tiene la clave privada del cliente, solo la prueba de que el cliente conoce la clave privada. Y como no conoce el servidor de claves privadas A, no se puede probar a B que conoce la clave. Para obtener más información acerca de este proceso, consulte ¿Cómo funciona SSL / TLS? donde se indica : "CertificateVerify: una firma digital calculada por el cliente sobre todos los mensajes anteriores del protocolo de enlace". Y debido a que los mensajes de intercambio son diferentes entre el cliente y B para el cliente y A, no es posible reproducir simplemente CertificateVerify, pero la clave privada del cliente es necesaria para crear un nuevo CertificateVerify.

La situación sería diferente si no estuvieran involucrados certificados de clientes, es decir, solo el nombre de usuario y las contraseñas. En este caso, el servidor A obtendría las credenciales y las usaría para identificarse con el servidor B (phishing clásico).

La situación también sería diferente si el servidor A solo reenvía entre el cliente y el servidor B sin modificar los mensajes. En este caso, no es posible que A rastree o modifique los datos, pero si el servidor B considera la dirección IP de la que obtuvo el certificado de cliente como de confianza para otros fines, el servidor A podría utilizar esta confianza.

    
respondido por el Steffen Ullrich 11.07.2015 - 11:50
fuente

Lea otras preguntas en las etiquetas