Estoy interesado en utilizar TLS de autenticación mutua para mejorar la seguridad de mis servicios web basados en javascript . He examinado el elemento Keygen y teniendo en cuenta todos sus problemas , no estoy seguro de si esto se puede usar para esto propósito.
Si tengo razón al pensar que la autenticación mutua TLS es una de las formas más seguras de TLS (en pocas palabras), ¿es razonable o una buena idea usar el material criptográfico enviado por Keygen para este propósito? / p>
Actualizar:
Mi modelo de amenaza es proteger de un ataque al estilo Diginotar. La solución se vería así:
Enrollment
- El usuario inicia sesión en el sitio web o crea una cuenta.
- Si la máquina nunca se ha visto antes (nueva cuenta) en lugar de agregar una cookie persistente, se le solicita al usuario que cree un certificado del lado del cliente.
- El certificado del lado del cliente está firmado por el servidor y se importa al navegador web con el fin de autenticar al cliente
- El servidor registra los detalles del certificado del cliente (huella digital / hash / clave pública) y lo usará más adelante para la verificación de la sesión.
Autenticación
- El usuario inicia sesión en el sitio web (n + 1 visita)
- Se solicita al usuario un certificado de cliente
- El servidor verifica el certificado de cliente.
- Se estableció el TLS mutuo.
- El servidor verifica la llamada autenticada con un certificado de cliente conocido. Si el certificado de llamada está en blanco o es de otro usuario, entonces se puede realizar un MITM y se deniega el acceso.