it-swarm-es.com

¿Alguien está usando certificados de navegador del cliente?

Los certificados de navegador del cliente parecen ser una buena manera de proteger los sitios de intrusos: es imposible de adivinar y debería ser más difícil de robar. Por supuesto, no resuelven todos los problemas, pero agregan seguridad.

Sin embargo, no encontré ningún sitio público que los usara. ¿Hay sitios que los usan? ¿Hay algún defecto en ellos que impida el uso, incluso cuando la seguridad es importante o alguna otra razón por la que hay tan poco uso de ellos?

43
StasM

El lado del cliente certificado simplemente no ha tenido una buena relación costo/beneficio. Son muy confusos para los usuarios, por lo que los costos de soporte aumentan. Y siguen siendo solo bits y, por lo tanto, "algo que sabes" y son vulnerables a una variedad de ataques de software en el navegador, el esquema de distribución, el phishing, etc.

Los esquemas de token de hardware (autenticación de dos factores) son mejores para una buena autenticación. Los esquemas de inicio de sesión único (SSO), potencialmente federados y potencialmente respaldados por tokens de hardware, resuelven más problemas y son más fáciles de implementar.

Administrar muchos certificados sería mucho más complicado para un usuario que el problema actual de múltiples contraseñas espinosas, y los navegadores no ofrecen un buen soporte para seleccionar el certificado correcto. Y si un usuario usa un solo certificado para muchos sitios, entonces hay problemas de privacidad ya que el uso del certificado identifica al usuario.

A lo largo de las décadas, muchos de nosotros hemos pensado que la era del cripto PK-usuario final estaba a la vuelta de la esquina, especialmente aquellos como yo enamorados de la belleza de RSA. Simplemente resulta que la forma en que ha evolucionado, la mesa de ayuda y los costos de desarrollo y las sutilezas y complejidades y enredos legales de la PKI del mundo real siguen consumiendo los beneficios.

El equipo parece más costoso que las brocas, pero no si las brocas no funcionan o si el uso efectivo de las mismas consume productividad.

20
nealmcb

Uso certificados de navegador para un puñado de sitios, pero como dijiste en su mayoría no sitios públicos.

La principal dificultad en los certificados del lado del cliente es distribuirlos . Es decir, ¿cómo puedo darle de forma segura el certificado "todopoderoso" que le otorgará acceso a mi sistema, si no lo conozco?
Los sistemas corporativos son más fáciles, por supuesto, al igual que los sistemas abiertos a un pequeño círculo de socios. Pero la distribución de claves siempre es un rompecabezas difícil de resolver. Es mucho más difícil que simplemente compartir una contraseña entre dos partes, teniendo en cuenta los aspectos de la clave privada y la protección del certificado ...

En realidad hay soluciones a esto, por supuesto, e incluso uso una para un sitio web "público". (Resulta que está en el negocio de la identidad, por lo que vale la pena los gastos generales para ellos ...). Esa solución se basa en la autenticación primaria a través de contraseña, y después de que esté completamente autenticado, tengo la opción de descargar mi certificado, suponiendo que sepa qué hacer con él.
No mucho mejor, ya que el canal de contraseña todavía está abierto ... pero eso al menos me da la posibilidad de cambiar la contraseña a algo imposible e inutilizable, y tener solo el CSC ...

Pero esto no es trivial, y es un poco complejo de implementar correctamente. La distribución todavía molestaría a la mayoría de los usuarios.

18
AviD

Según tengo entendido, existen numerosos problemas con el uso de certificados de cliente en la práctica. Estos son algunos de los problemas que he escuchado:

  1. Obteniendo certs de clientes. Es difícil para los usuarios obtener inicialmente un certificado de cliente en primer lugar. Obviamente, los sitios no quieren crear obstáculos innecesarios que los usuarios tengan que atravesar antes de que puedan comenzar a usar su sitio. (Incluso hacer que el sitio genere el certificado del cliente y se lo proporcione al cliente no es una operación familiar para un usuario, sin mencionar que tiene problemas de seguridad, ya que, idealmente, solo el cliente debe conocer la clave privada del cliente). Proporcionan formas de crear o importar claves privadas y certificados de clientes, pero la experiencia del usuario es horrible.

  2. Escuché que algunos servidores aparentemente no son compatibles con certificados de clientes (por ejemplo, http://osdir.com/ml/encryption.cryptlib/2005-09/msg00000.html).

  3. La movilidad es un problema. A pesar de todos sus problemas, las contraseñas son muy portátiles; los certificados del cliente no lo son. Incluso si el cliente logra generar una clave privada y obtener un certificado de cliente para ello, si desea comenzar a usar una segunda computadora, tendrá que hacer un baile complicado y confuso para transferir la clave privada y el certificado a la segunda computadora. Si su primera computadora muere (o sufre una falla en el disco duro) y tienen que volver a instalar su sistema operativo o comprar una nueva computadora, y si el cliente no ha hecho una copia de seguridad de su clave privada, no tendrá forma de poner su privado clave y cert en su nueva computadora; Están bastante jodidos. Un sitio puede crear un método de autenticación de respaldo para que los usuarios que perdieron su clave privada puedan generar y enviar una nueva clave privada, pero este método de autenticación de respaldo puede convertirse fácilmente en el eslabón más débil de la cadena. No importa cuán fuerte sea su método principal de autenticación, si su método de respaldo es fácilmente derrotado.

  4. No está claro si existe suficiente soporte de los navegadores para los certificados del cliente. No sé si todos los diferentes navegadores (incluidos los navegadores móviles) admiten adecuadamente los certificados de cliente.

  5. El modelo PKI está bastante roto de todos modos. Se suponía que la CA verificaría la identidad del usuario (por ejemplo, su nombre real) antes de darles un certificado de cliente, y el protocolo se diseñó en torno a esta suposición. Sin embargo, las AC actuales no verifican realmente la identidad. Esto crea un desajuste entre los supuestos de diseño y la realidad.

  6. Los certificados del cliente crean riesgos de privacidad para los usuarios. En algunos navegadores, permiten el seguimiento de usuarios a través de dominios. (Todos los navegadores aseguran que las cookies se defiendan cuidadosamente contra esta amenaza: solo el dominio que configuró la cookie puede leerla. Sin embargo, los navegadores no incorporan protecciones similares para los certificados de cliente SSL). No sé si los navegadores modernos han abordado efectivamente esto problema, pero es un área donde los certificados de cliente son relativamente inmaduros, que yo sepa.

  7. Hay problemas técnicos molestos, si el cliente genera y firma su propio certificado de cliente. Según el protocolo TLS, se supone que el servidor primero debe pedir una lista de CA que esté dispuesto a aceptar; el cliente posteriormente responde con un certificado de cliente emitido por esa CA, si tiene uno. (Tenga en cuenta que esto sucede antes de que el cliente haya enviado una solicitud HTTP, cualquier cookie HTTP, un nombre de usuario o cualquier otra información de identificación). Esto significa que, si desea utilizar certificados de cliente emitidos por el cliente (autofirmados), entonces el el servidor debe conocer el nombre de la CA que está utilizando el cliente antes de que el cliente se autentique o se identifique a sí mismo. Eso es complicado.

  8. Finalmente, la guinda del pastel: los certificados de cliente no resuelven el problema del phishing. Evitan el robo de la clave privada del cliente, pero no otra información personal. Los malos todavía pueden configurar un sitio bancario falso (que descarta cualquier certificado de cliente que se le envíe). El sitio de phishing no aprenderá la clave privada del usuario, pero si el usuario cree que se ha conectado al sitio del banco real, puede escribir su número de cuenta bancaria, SSN, PIN, etc., revelando esa información al atacante.

Todo esto se traduce en una pobre usabilidad y mayores costos de soporte (por ejemplo, llamadas al servicio de asistencia). En resumen, usted puede usar certificados de cliente, al menos en principio; es solo que, en la práctica, hacerlo es inconveniente para todos y la usabilidad apesta.

Más fundamentalmente, existe un problema de huevo y gallina: hasta que muchos sitios comiencen a usar certificados de clientes, los fabricantes de navegadores no asignarán una alta prioridad a hacer que los certificados de clientes sean utilizables; y hasta que los navegadores hagan utilizables los certificados de cliente, los sitios no los adoptarán. Para decirlo de otra manera, si queremos usar certificados de clientes para resolver el problema general de autenticación, tenemos que ambos convencer a todos los fabricantes de navegadores para que realicen cambios importantes a los navegadores, y convencer a los sitios para que adopten nuevas tecnologías. No se otorgarán beneficios a nadie hasta que todas estas partes realicen cambios coordinados. Ese es un gran obstáculo para la adopción.

Hay mejores soluciones para la autenticación segura en la web, que incluyen HTTPS, cookies persistentes seguras y recuperación basada en correo electrónico. Sin embargo, eso va más allá del alcance de su pregunta.

Último comentario: El desafío fundamental en la autenticación web segura es la usabilidad, usabilidad, usabilidad. Hacer sistemas que funcionen bien para los usuarios, y que sean seguros, cuando se usan como los usuarios comunes puedan usarlos, es muy desafiante y es lo único que importa. Crypto es solo una pequeña parte de este problema.

15
D.W.

Creo que principalmente no se usan porque la persona promedio (es decir, no usted, ya que hace esta pregunta) no puede comprender su uso. Hay algunos sitios comerciales que los usan, pero generalmente tienen un propósito muy especial o para la automatización. Por ejemplo, Oracle utiliza certificados de cliente para validar a los usuarios finales con contratos de soporte válidos para actualizaciones de paquetes. Pero incluso con usuarios altamente técnicos, obtener el intercambio de claves adecuado puede ser un desafío.

Dicho todo esto, utilizo certificados de clientes para proteger partes de mis sitios web que dejo abiertos al público, y creo que son fantásticos.

7
bahamat

Tarjeta de identidad nacional de Estonia es una tarjeta inteligente que contiene un certificado de cliente incrustado en ella. Puede obtener lectores de tarjetas inteligentes y usarlo en casa para solicitar servicios gubernamentales o autenticarse en los principales bancos estonios. Todo lo que ve el usuario es un aviso de tarjeta/pin y lo siguiente que sabe es que está autenticado.

6
blowdart

Uno de nuestros clientes utiliza certificados de clientes para autenticar sistemas de quioscos con pantalla táctil. Los sistemas se distribuyen a los distribuidores, y cada uno obtiene su certificado raíz de CA instalado, así como un certificado de cliente único.

El certificado del cliente se utiliza para autenticar el sistema de kiosco en el servidor web, sin requerir que el distribuidor realice la autenticación manual al iniciar el dispositivo. Si un sistema individual necesita ser cerrado, es fácil para nuestro cliente revocar el certificado.

5
Martijn Heemels

El Ministro de Economía francés publicó un sitio web público para la gestión de impuestos (pago de impuestos en línea, información sobre plazos, descarga de formularios ...) que utiliza un certificado SSL para la autenticación del usuario. El registro de usuario (este rol se atribuye a un Autoridad de registro en PKI) que AviD ha señalado como la principal dificultad en un proyecto de este tipo, se ha resuelto ya que esta administración ya tiene suficiente información para Identificar a los contribuyentes.

4
Jcs

Se utiliza una variación de certificados de navegador en el protocolo ActiveSync basado en HTTP/S.

Varios administradores de correo electrónico usan certificados para autenticar dispositivos móviles para que el correo electrónico móvil no deje de funcionar repentinamente cuando el usuario cambia su contraseña.

1
goodguys_activate

Los certificados de cliente tienen la mejor calidad para la autenticación. Pero debido a un problema de huevo y gallina, los usuarios no tienen razón para adquirir un certificado serio (cuesta dinero y tiempo porque la entrega debe ser una operación cara a cara) porque pocos sitios los usan y los administradores del sitio no tienen razón para apoyarlos activamente desde entonces. sus usuarios generalmente no tienen certificado.

Los sistemas corporativos son diferentes porque si los requisitos de seguridad son lo suficientemente altos, el costo global de una infraestructura PKI es perfectamente accesible.

Pero cuando recuerde cuál es el costo total real y el procedimiento para una tarjeta de identidad nacional (sin hablar de un pasaporte), agregar un certificado establecido por una administración nacional no agregaría mucho y resolvería muy bien todas las preguntas de autenticación con sitios institucionales como las administraciones, bancos, ... Por supuesto, no lo usaría para sitios de comerciantes o foros controlados poco

1
Serge Ballesta

Trabajo desarrollando un sitio que ofrece autenticación con tarjeta inteligente. El usuario conecta un lector de tarjetas USB, va al sitio y, cuando quiere iniciar sesión, inserta la tarjeta y le proporciona un PIN. El problema es que el sistema usa un Java Applet, y estas aplicaciones ya no son compatibles con Chrome o MS Edge. Se está desarrollando un nuevo middleware que funciona no use Java Applets, y es una carrera contra el tiempo ya que podemos ver que todos los principales navegadores se detienen Java Applets de interactuar con el hardware en su PC en el futuro.

0
Totoro53

Si ampliamos el alcance de OP para pasar el navegador. Los certificados de cliente también se pueden usar en el contexto que no sea del navegador. Por ejemplo, Docker usa TLS y certificados de cliente para asegurar sus conexiones entre un cliente de docker remoto a sus demonios.

Sin embargo, esto aún debería ser administrado, pero no necesita pasar por una CA completa, puede ser una CA interna de la compañía para administrar todos los certificados utilizados por las máquinas.

0
Archimedes Trajano