2012-06-29 13 views
7

Estoy tratando de descubrir cómo usar el MCSAPI para hacer el cifrado AES con el proveedor de servicios criptográficos (CSP) ncipher. Lo que me desconcierta es que el constructor AesCryptoServiceProvider no acepta una clase CspParameters, que se utiliza para especificar nCipher como csp.usando el CSP ncipher con el MSCAPI para hacer el cifrado AES

CspParameters cp = new CspParameters(24, "nCipher Enhanced RSA and AES Cryptographic Provider"); 
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(CspParameters) // works fine 
AesCryptoServiceProvider aes = new AesCryptoServiceProvider(); // Constructor takes no parameters. 

Por lo que puedo ver las clases Rijndael tampoco tienen una forma de especificar otro tercero CSP. ¿Qué me estoy perdiendo? ¿Hay alguna manera de inicializar todo mi sistema para cargar un CSP para todas las llamadas criptográficas posteriores? ¿Debo utilizar el CSP para administrar la clave simétrica y luego usar el valor predeterminado AesCryptoServiceProvider para encriptar/descifrar? RSACryptoServiceProvider(CspParameters) funciona bien. Pero estoy queriendo hacer una encriptación simétrica. Necesito hacer esto en C# .NET framework.

+0

Hola usuario1491745 y bienvenido. Cambié las etiquetas para que esta pregunta sea más visible (por ejemplo, usar C# en lugar de C# -4.0 hará que más personas vean esta pregunta). Además, le he dado una recompensa con la esperanza de que reciba algo de atención. –

Respuesta

1

AES es un algoritmo simétrico, por lo que no se pueden utilizar CspParameters.

nCipher es un estándar de hardware (ver http://technet.microsoft.com/en-us/library/dd277354) por lo que su token puede calcular el algoritmo AES, pero como todo el mundo (Alice y Bob) necesita saber la clave secreta, no hay beneficio para calcular o almacenar tecla en un token de hardware.

Puede ver cómo utilizar AesCryptoServiceProvider en el MSDN example, tal vez desee utilizar AesManaged (también hay un ejemplo).

8

Microsoft CAPI no es compatible con claves protegidas por hardware para algoritmos simétricos. Esta es una deficiencia de la API, no del nCipher CSP. Las únicas claves que pueden estar protegidas por hardware son el par de claves de Firma e Intercambio del contenedor CAPI. Cualquier clave simétrica creada se genera y se usa en el software.

Puede envolver (software) claves simétricas en las claves del contenedor (hardware) para protección y persistencia, pero eso no protege esas llaves simétricas.

Si está implementando en cualquier dispositivo Vista, Server 2008 o posterior, debe considerar CAPI Next Generation o CNG: admite la generación y uso de claves simétricas protegidas por hardware y Thales/nCipher CNG CSP tiene soporte para esto. Sin embargo, Thales/nCipher CNG CSP no es compatible con las claves simétricas persistentes, por lo que para hacerlo tendría que envolverlos en un par de claves contenedor igual que lo haría con el CAPI de la vieja escuela.

Trabajo para Thales, pero no estoy de acuerdo con ellos: póngase en contacto con el servicio de asistencia de Thales si tiene alguna pregunta y/o desea obtener información acerca de cómo obtener asistencia técnica para desarrolladores.

+0

Las respuestas negativas también son respuestas, y si nadie tiene una respuesta mejor mañana, le otorgaré la recompensa. –

+0

Sander gracias por el comentario, esta fue la misma información que finalmente pude obtener del representante de Thales. Seguí adelante e implementé nuestra solución utilizando la técnica de envoltura de clave. – user1491745

+0

Chicos ¿Cuál es la forma correcta de reconocer que un usuario ha respondido suficientemente mi pregunta original? Ya voté por su respuesta. ¿Hay algo mas? Gracias de nuevo. – user1491745

Cuestiones relacionadas