it-swarm-es.com

¿Cómo uso C # para cifrar / descifrar datos donde la clave privada está en una tarjeta inteligente, módulo de seguridad de hardware, chip TPM, etc.?

¿Alguien tiene conocimiento de una muestra de código C # para interactuar con la tarjeta inteligente, el módulo de seguridad del hardware, los chips TPM (etc.) que me permitan cifrar y descifrar datos?

Mi objetivo es permitir que mi aplicación admita una variedad de almacenes de claves, y si el administrador decide que desea que la clave privada resida en esos dispositivos, quiero poder admitir eso.

¿Existe una forma uniforme o universal de acceder a estos dispositivos? ¿Hay alguna forma de pasar por C #?

4
goodguys_activate

En el mundo de Windows, la criptografía con hardware especial pasa por los "Proveedores de servicios criptográficos" (CSP). Un CSP es un módulo registrado en el sistema operativo, que ofrece acceso a este tipo de hardware.

Desde C #, puede mirar RSACryptoServiceProvider , que se puede crear con algunos parámetros que designan un CSP específico.

El mundo que no es de Windows tiende a usar PKCS # 11 para eso. Google encuentra algunos paquetes de software que aparentemente pueden usar un PKCS # 11 DLL (es decir, el controlador para el hardware criptográfico) de C #; p. Ej. pkcs11.net y NCryptoki (el primero parece ser de código abierto, no el segundo).

6
Thomas Pornin