¿Cómo distribuir certificados de clientes sin exponer la clave privada?

9

Estoy diseñando un servicio web B2B basado en WCF. Como el número de clientes es relativamente pequeño y la seguridad es una prioridad, elegí los certificados de cliente X509 para la autenticación del cliente.

Estoy firmando los certificados de cliente con mi propia CA autofirmada (que, por supuesto, se mantiene segura). También he verificado que la configuración está funcionando en un conjunto local de computadoras.

Un problema me sigue molestando. Siempre que los certificados puedan ser entregados "físicamente" no tengo ningún problema. Sin embargo, parece que no puedo encontrar una solución para transferir de forma segura los certificados de cliente a los clientes reales. Estas son las opciones que he encontrado hasta ahora:

1) Encriptación de certificados utilizando encriptación simétrica en formato PFX. Luego enviaré el certificado por correo electrónico y enviaré la clave para descifrar el certificado con un correo postal antiguo (es decir, una carta física)

2) Cree un sitio web sencillo que permita a los clientes iniciar sesión con una URL temporal (las credenciales enviadas a la dirección de correo electrónico) y luego descargar el certificado. El sitio sería asegurado utilizando HTTPS. Entonces, la seguridad se basa totalmente en la seguridad del correo electrónico de los clientes y nadie lo recoge en la dirección de correo electrónico

Tiendo a preferir la opción 1) como la única falla de seguridad que existe para que alguien robe la clave de la letra física. Sin embargo, parece un poco tedioso usar una carta física.

¿Hay algún estándar de facto para resolver este problema que estoy pasando por alto y ofrece una seguridad razonable?

    
pregunta Henrikmh 12.11.2012 - 07:55
fuente

3 respuestas

13

La forma "normal" de hacer certificados es que la clave privada nunca abandone el sistema cliente. Las cosas van así:

  • El par de claves privada / pública se genera en el sistema cliente.
  • La clave pública se envía a la CA como parte de una solicitud de certificado (normalmente formato PKCS # 10).
  • La CA crea y firma el certificado, que se envía de vuelta al cliente.

La parte crítica ahora es asegurarse de que la CA esté hablando con el cliente correcto en el momento de la emisión; pero, al menos, solo se transfieren datos públicos, lo que simplifica las cosas.

Le sugiero que envíe a sus clientes potenciales una contraseña única por correo, no correo electrónico , sino el correo en papel más tradicional. Luego lo usan para inscribirse en su CA (dentro de HTTPS, por supuesto). Haga su vida más fácil: use un producto de CA que ya incluye el software y el proceso necesarios.

    
respondido por el Thomas Pornin 12.11.2012 - 13:23
fuente
2

Su análisis del problema parece implicar la idea de una ventana de tiempo infinita.

Considere la posibilidad de transmitir el certificado a través de HTTPS y que su backend permita que el certificado se transfiera solo una vez. A menos que la conexión de transferencia sea MITM'd, su cliente tendrá un certificado que nadie más tiene o sabrá que otra persona lo ha recuperado. Terminará revocando algunos certificados de cantidades no despreciables debido a fallas de los clientes para guardar, etc. cuando soliciten reemisiones, pero sabrá que solo una persona ha aceptado el certificado o que debería ser invalidado.

    
respondido por el Jeff Ferland 12.11.2012 - 08:10
fuente
2

Puede hacer que el cliente genere una solicitud de firma de certificado y se la envíe para que la CA la firme. La generación de la CSR en el cliente creará el par de claves públicas / privadas, y la CSR solo contendrá la clave pública y la información de identidad. De esa manera, la clave privada nunca se transfiere a través de la red.

Hay productos por ahí que harán justamente esto y tienen autenticación multifactor integrada. Tendrás que buscarlos.

Si desea codificar lo anterior, los sistemas MS usan un ActiveX y html5 tiene una función keygen que hará lo que describí anteriormente.

    
respondido por el Fearmonger 12.11.2012 - 17:15
fuente

Lea otras preguntas en las etiquetas