2010-01-29 7 views
13

Estoy implementando un cliente con python's twisted que comprueba el certificado SSL del servidor cuando se conecta, siguiendo básicamente la receta this. He visto en muchos HOWTO, como este, que el servidor comprueba la autenticidad del cliente a través de un certificado SSL también. Actualmente autentico a mis clientes usando una identificación única y una cadena de 1024 caracteres (son clientes automáticos sin interacción humana).¿Por qué debería autenticar a un cliente que usa un certificado?

Lo que no entiendo es qué razón tendría que usar la cosa ssl para esto en vez de solo enviar la "contraseña" al servidor. Después de todo, la conexión ya está codificada en ssl, verificando el certificado del servidor y todo. This es una pregunta similar, pero quiero saber por qué personas usan certificados de cliente SSL y no solo cuál es la mejor manera de hacerlo.

Respuesta

-1

Al verificar el certificado, se asegura que se está conectando con la persona a la que espera conectarse. Evita un ataque de "hombre en el medio".

Consulte el caso relacionado http://www.thoughtcrime.org/software/sslsniff/ donde los clientes no estaban revisando correctamente la cadena de certificados, lo que resulta en una manera bastante fácil de explotar SSL usando un ataque de hombre en el medio.

+0

Correcto, en este caso, los canales entre el cliente y el intermediario, el intermediario y el servidor seguían siendo seguros, el cliente simplemente no validó el certificado. Al servidor no le importa: si el servidor puede verificar los certificados del cliente, por ejemplo, una aplicación no pública o alguna aplicación donde los certificados se emiten y se firman como se esperaba, esto no sería posible. –

-2

Poseer certificados SSL firmados por una autoridad certificadora significa que los propietarios del certificado SSL han pasado por la molestia de ser verificados por la CA que el propietario es quien dice ser. Por ejemplo, si tiene una tienda de comercio electrónico llamada widgetsdeluxe.com y tiene un certificado para el dominio widgetsdeluxe.com que ha sido firmado por Verisign, et. Al., Los compradores sabrán que cuando van a ese sitio y el nombre en el certificado coincide con el nombre de dominio real que visitaron, entonces pueden confiar en que la información está asegurada y proviene del dominio widgetsdeluxe.com (esto es para evitar los ataques de spoofing y man-in-the-middle).

+0

Esta respuesta solo se refiere a los certificados del servidor, el OP preguntaba por qué un certificado del lado del cliente sería útil. –

4

Un certificado de cliente restringe el acceso a personas autorizadas con certificados. Suponiendo que sus certificados se distribuyan y administren correctamente, esto hace que sea más difícil conectarse desde una ubicación no autorizada (o, por ejemplo, una red bot), ya que necesita más que solo un nombre de usuario y contraseña.

certificados de cliente son un potencial parte de una estrategia de defensa en profundidad, si se encuentra en un entorno donde se pueden gestionar los certificados de cliente.

+0

El cliente está verificando el certificado del servidor, por lo que solo se puede establecer una conexión con el servidor real. Si la conexión está encriptada usando la configuración del servidor SSL, ¿alguien puede hacer un ataque de mitch? Supongo que un certificado de cliente podría dificultar que ddos ​​mi servidor con solicitudes de autenticación no válidas, pero no estoy seguro. Lo que quiero decir es que me parece que el certificado del cliente es básicamente una contraseña elegante, no veo la diferencia. Gracias por tu respuesta. –

+1

Se supone que el ataque MITM no es posible con SSL (verifique los certificados del servidor, obviamente). Sin embargo, un nombre de usuario/contraseña se divulga fácilmente. Entonces, para otra capa, un certificado de cliente es más que un usuario/contraseña elegante: es un artefacto firmado con un sistema de administración de distribución y revocación, etc. Con un nombre de usuario/contraseña ordinario, puede probar diferentes ataques de contraseñas desde varias máquinas sin necesidad un certificado. Los certificados de cliente son para otro nivel de seguridad, por lo general solo es posible en un entorno controlado. –

+0

Sí, la gestión y distribución de certificados es la parte difícil. –

2

Los certificados son fáciles de revocar. Las contraseñas pueden ser robadas, pero robar un certificado del lado del cliente sería mucho más difícil.

+2

El cliente que escribí no necesita ningún aporte humano, por lo que la contraseña ya está en un archivo de texto que el cliente lee y envía al servidor. Si alguien puede robar el archivo de contraseña, también puede robar el archivo cert del cliente. Si necesito "revocar" la contraseña del cliente, simplemente puedo cambiarla en la base de datos/lo que sea. Entonces, en este caso, ¿cuáles son las ventajas de usar un cert sobre una secuencia de pwd en un archivo? –

+1

¿La contraseña se envía por el cable en texto claro? Si es así, puede ser robado. La mayoría de los certificados de cliente de la tienda OS se almacenan en una tienda cifrada específica para el inicio de sesión utilizado. – Greg

2

El uso de certificados de cliente de autenticación mutua basada evita que al menos los ataques siguientes/problemas:

  • phishing la contraseña
  • Clave registrar la contraseña
  • hombro que navegan por la contraseña
  • adivinar la contraseña
  • Reutilización de la contraseña en varios servicios

Además, usar certificados de cliente le brinda la posibilidad de almacenar certificados de clientes (y la clave privada correspondiente) en una tarjeta inteligente, token USB u otro módulo de seguridad de hardware (HSM), pasando de "algo que usted conoce" (contraseña) a " algo que posees físicamente "(token, tarjeta) más" algo que sabes "(PIN). Esto también se llama two-factor authentication.

En el caso específico de la utilización de contraseñas como claves compartidas en una técnica, el sistema de enlace de comunicación del sistema, el uso de certificados tiene dos ventajas:

  • escalas mejor: con claves compartidas, cada nodo tiene que compartir una diferente clave/contraseña con cada otro nodo, lo que resulta en (n-1)! contraseñas, mientras que con los certificados, cada nodo necesita solo un certificado y clave privada (n certificados más una CA)
  • la posibilidad de almacenar la clave en un HSM y así evitar que se copie o se robe digitalmente.
0

La principal ventaja de la autenticación del lado del cliente (es decir, cuando el certificado de cliente servidor comprueba) es que si el servidor es comprometida, el secreto del cliente, que es clave privada del certificado, no se vea comprometida. Mientras que si el cliente usa credenciales, podrían verse comprometidos junto con el servidor.

Cuestiones relacionadas