Mi objetivo es implementar el cifrado asimétrico en un sitio web de ASP.NET para asegurar los números de seguridad social ingresados por el usuario. Quiero cifrar los SSN con una clave pública y solo mostrar una versión enmascarada al usuario (es decir, XXX-XX-1234
). (Una aplicación separada que se ejecute aparte del sitio web tendrá acceso a la clave privada y desencripta los SSN para transferirlos a otro sistema).
Estoy intentando usar el RSACryptoServiceProvider
incorporado pero recibo un error:
The system cannot find the file specified.
Se ejecuta muy bien en mi propia máquina, porque soy un administrador en mi máquina. Pero en el servidor (Windows 2008 R2 Standard), se produce un error. El sitio web se ejecuta como IIS APPPOOL\MyWebSiteName
.
En un tutorial vi que tendría que dar permiso de IIS NTFS para C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA
. La razón es que supuestamente la API RSA escribe archivos temporales en esa carpeta, incluso si le da las claves en la memoria. Pero he probado diferentes combinaciones de usuarios y permisos y nada ha funcionado.
Me doy cuenta de que podría colocar el par de claves pública / privada en un contenedor de claves y utilizar aspnet_regiis.exe
para otorgar acceso a IIS a la clave, pero eso no sirve para mantener la clave privada separada del sitio web. También me preocupa que otorgar acceso IIS a esta carpeta también pondría en peligro los otros contenedores de claves del sistema almacenados allí.
¿Cómo consigo que ASP.NET funcione con RSACryptoServiceProvider
? ¿O debería simplemente usar algún otro método para realizar el cifrado RSA?