¿Por qué el certificado de cliente en el protocolo de enlace de TLS?

1

TLS permite que el certificado de cliente se use para inicializar una conexión TLS a un servidor. Sin embargo, lo mismo se puede lograr mediante:

  1. Inicialice la conexión TLS como un cliente anónimo con una clave privada generada aleatoriamente.
  2. El servidor proporciona un número aleatorio como desafío en un formulario web o encabezado HTTP.
  3. El cliente, por ejemplo, un navegador, utiliza la clave privada (a través de window.crypto javascript API) para generar una llamada RESTful API para identificarse en el servidor firmando el desafío y proporcionando el certificado.

¿Los dos métodos: certificado de cliente y llamada a javascript-API son los mismos en términos de seguridad?

El escenario detrás de esta pregunta es que estamos usando una clave pública de blockchain para establecer una conexión TLS. Dado que no hay un certificado de cliente firmado por la autoridad, el cliente proporciona una ruta del árbol Merkle como prueba en su lugar.

Al parecer, el servidor HTTPS no comprende el formato de dicha prueba cuando se utiliza como reemplazo del certificado del cliente, por lo que estamos modificando el servidor.

Entonces alguien plantea la pregunta: ¿hay alguna ventaja de seguridad que podamos obtener para implementar Merkle tree proof como certificado de cliente? Parece perfectamente seguro si lo implementamos en la capa de lógica de negocios comenzando con una conexión TLS anónima y luego requiere autenticación.

Comencé a darme cuenta de que hay otras ventajas para realizar la autenticación después de establecer la conexión TLS, por ejemplo. da la oportunidad de una mejor interfaz de usuario, por ejemplo, al mostrar mensajes como este "Su prueba Merkle parece apuntar a la red de prueba; solo aceptamos la prueba Merkle de la red principal".

Luego me pregunto, ¿cuál fue la razón para usar el certificado del cliente para iniciar TLS en primer lugar? ¿Por qué TLS incluye el concepto de inicializar TLS con certificado de cliente? Solo busca hacer que los sistemas sean más difíciles de usar sin ventajas de seguridad.

    
pregunta Peer Gynt 19.06.2018 - 09:46
fuente

1 respuesta

2
  

¿Los dos métodos: certificado de cliente y llamada a javascript-API son los mismos en términos de seguridad?

Ambos métodos se basan en que el cliente tenga una clave privada firmada por alguna autoridad en la que el servidor confíe. Entonces, en teoría, pueden ser equivalentes: en la práctica, el código de la biblioteca TLS del cliente es probablemente mucho más investigado que cualquier API que planifique. Eso no quiere decir que no se puede asegurar; solo tenga cuidado y haga que lo revisen las personas que entienden criptografía.

  

Luego me pregunto, ¿cuál fue la razón para usar el certificado del cliente?   ¿Inicializar TLS en primer lugar? Por qué TLS incluye el concepto de   ¿Inicializando TLS con certificado de cliente? Se ve solo para hacer   Sistemas más difíciles de usar sin ventajas de seguridad.

Los

certificados de cliente TLS son un método en línea opcional para proporcionar autenticación. Estás viendo la parte en línea de eso como algo negativo, porque te gustaría ser elegante y hacer algo diferente. Sin embargo, para muchos usos, ese aspecto en línea es una ventaja.

El tipo de contorsión que está proponiendo, donde está agregando un paso de capa de aplicación, solo es útil cuando tiene el control del cliente, el servidor y el protocolo. Pero recuerde que TLS ha sido una capa de seguridad atornillada que a menudo se ha utilizado para aplicaciones y protocolos que no tienen idea de que se está utilizando, donde no hay capacidad para ejecutar código personalizado en el cliente. Para esas situaciones, tener un método uniforme y confiable de autenticación de clientes integrado en las bibliotecas es una gran ganancia.

    
respondido por el gowenfawr 19.06.2018 - 17:13
fuente

Lea otras preguntas en las etiquetas