¿Cómo se ve la clave privada para un certificado basado en HSM?

3

¿Alguien puede explicar qué constituye la anatomía de la clave privada de un certificado cuando la clave se almacena en un HSM? Estoy usando nShield en este ejemplo, pero asumo que los principales son los mismos para cualquier HSM que cree certificados con punteros de clave privada de HSM.

Hay dos áreas en las que me cuesta entenderlo y no hay mucha información ahí fuera ... o estoy buscando las palabras clave incorrectas.

  1. Cuando abro el certificado en el administrador de certificados (Windows), muestra que tengo una clave privada para el certificado. Me doy cuenta de que esto es solo el puntero pero, sin embargo, Windows reconoce los datos como una clave privada válida, ¿cómo es eso posible? ¿Cómo puede engañar a Windows para que piense que es una verdadera clave privada?
  2. Si intento usar la clave privada del certificado (es decir, para firmar algo), redirige las operaciones de la clave privada al HSM. Asumo que el CSP es responsable de esto, pero ¿cómo sabe el certificado qué CSP usar?

Estoy tratando de obtener una mejor comprensión para poder escribir un software que permita a los usuarios aprovechar los certificados para las operaciones criptográficas en lugar de tener que depender de PKCS11 o la API del proveedor.

¡Gracias!

    
pregunta Brian Mitchell 31.01.2017 - 09:28
fuente

1 respuesta

2

A nivel teórico, esto es posible porque la clave pública y la clave privada de un par de claves están vinculadas matemáticamente. Esto significa que es posible consultar a un proveedor de almacenamiento de claves si contiene la clave privada de un certificado determinado. En Windows, sí, es el proveedor de servicios criptográficos (CSP) el que maneja esto. El proveedor de HSM ha proporcionado software que se integra con la API de criptografía de Windows. Se pueden encontrar algunos detalles sobre la arquitectura en este artículo de MSDN: Almacenamiento y recuperación de claves

No es necesario profundizar en los detalles profundos de la arquitectura criptográfica de Windows para escribir software. Microsoft proporciona API que exponen esta funcionalidad a los desarrolladores de aplicaciones. Si está utilizando .NET Framework, puede consultar los espacios de nombres de System.Security.Cryptography y System.Security.Cryptography.X509Certificates.

    
respondido por el pgianna 01.02.2017 - 13:24
fuente

Lea otras preguntas en las etiquetas