El sistema RSACryptoServiceProvider CryptographicException no puede encontrar el archivo especificado en ASP.NET

Tengo una aplicación que utiliza el RSACryptoServiceProvider para descifrar algunos datos utilizando una clave privada conocida (almacenada en una variable).

Cuando el grupo de aplicaciones de IIS está configurado para usar el servicio de red, todo funciona bien.

Sin embargo, cuando configuramos el grupo de aplicaciones IIS para ejecutar el código bajo una identidad diferente, obtenemos lo siguiente:

System.Security.Cryptography.CryptographicException: The system cannot find the file specified.

   at System.Security.Cryptography.Utils.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer)
   at System.Security.Cryptography.RSACryptoServiceProvider.ImportParameters(RSAParameters parameters)
   at System.Security.Cryptography.RSA.FromXmlString(String xmlString)

El código es algo así:

byte[] input; 
byte[] output; 
string private_key_xml; 

var provider = new System.Cryptography.RSACryptoServiceProvider(this.m_key.Key_Size);
provider.FromXmlString(private_key_xml); // Fails Here when Application Pool Identity != Network Service

ouput = provider.Decrypt(input, false); // False = Use PKCS#1 v1.5 Padding

Hay recursos que intentan responder indicando que debe otorgarle al usuario acceso de lectura al almacén de claves de la máquina; sin embargo, no hay una respuesta definitiva para resolver este problema.

Entorno: IIS 6.0, Windows Server 2003 R2, .NET 3.5 SP1

Respuestas a la pregunta(4)

Su respuesta a la pregunta