Información general sobre la configuración protegida

Actualización: noviembre 2007

Se puede utilizar la configuración protegida para cifrar información confidencial, como nombres de usuarios y contraseñas, cadenas de conexión a bases de datos y claves de cifrado, en el archivo de configuración de una aplicación Web, como por ejemplo el archivo Web.config. El cifrado de la información de configuración puede mejorar la seguridad de la aplicación dificultando a un atacante el acceso a la información confidencial aunque este logre el acceso al archivo de configuración.

Por ejemplo, es posible que un archivo de configuración sin cifrar contenga una sección en la que se especifiquen las cadenas de conexión utilizadas para conectar a la base de datos, como se muestra en el ejemplo siguiente:

<configuration>
  <connectionStrings>
    <add name="SampleSqlServer" connectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;" />
   </connectionStrings>
</configuration>

Un archivo de configuración que cifra los valores de las cadenas de conexión mediante configuración protegida no muestra dichas cadenas en texto no cifrado, sino que las almacena en formato cifrado, como se muestra en el ejemplo siguiente:

<configuration>

  <connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">
    <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
      xmlns="http://www.w3.org/2001/04/xmlenc#">
      <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
      <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
        <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
          <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
          <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
            <KeyName>RSA Key</KeyName>
          </KeyInfo>
          <CipherData>
            <CipherValue>RXO/zmmy3sR0iOJoF4ooxkFxwelVYpT0riwP2mYpR3FU+r6BPfvsqb384pohivkyNY7Dm4lPgR2bE9F7k6TblLVJFvnQu7p7d/yjnhzgHwWKMqb0M0t0Y8DOwogkDDXFxs1UxIhtknc+2a7UGtGh6Di3N572qxdfmGfQc7ZbwNE=
            </CipherValue>
          </CipherData>
        </EncryptedKey>
      </KeyInfo>
      <CipherData>
        <CipherValue>KMNKBuV9nOid8pUvdNLY5I8R7BaEGncjkwYgshW8ClKjrXSM7zeIRmAy/cTaniu8Rfk92KVkEK83+UlQd+GQ6pycO3eM8DTM5kCyLcEiJa5XUAQv4KITBNBN6fBXsWrGuEyUDWZYm6Eijl8DqRDb11i+StkBLlHPyyhbnCAsXdz5CaqVuG0obEy2xmnGQ6G3Mzr74j4ifxnyvRq7levA2sBR4lhE5M80Cd5yKEJktcPWZYM99TmyO3KYjtmRW/Ws/XO3z9z1b1KohE5Ok/YX1YV0+Uk4/yuZo0Bjk+rErG505YMfRVtxSJ4ee418ZMfp4vOaqzKrSkHPie3zIR7SuVUeYPFZbcV65BKCUlT4EtPLgi8CHu8bMBQkdWxOnQEIBeY+TerAee/SiBCrA8M/n9bpLlRJkUb+URiGLoaj+XHym//fmCclAcveKlba6vKrcbqhEjsnY2F522yaTHcc1+wXUWqif7rSIPhc0+MT1hB1SZjd8dmPgtZUyzcL51DoChy+hZ4vLzE=
        </CipherValue>
      </CipherData>
    </EncryptedData>
  </connectionStrings>

Cuando se solicita la página, .NET Framework descifra la información de las cadenas de conexión y la pone a disposición de la aplicación.

Nota:

No se puede utilizar la configuración protegida para cifrar la sección configProtectedData de un archivo de configuración. Tampoco se puede utilizar la configuración protegida para cifrar las secciones de configuración que no utilizan un controlador de secciones ni aquellas que forman parte de la configuración de criptografía administrada. A continuación se muestra una lista de secciones de configuración que no se pueden cifrar utilizando la configuración protegida: processModel, runtime, mscorlib, startup, system.runtime.remoting, configProtectedData, satelliteassemblies, cryptographySettings, cryptoNameMapping y cryptoClasses. Se recomienda el uso de otros medios de cifrado de información confidencial, como la herramienta (Aspnet_setreg.exe) de la aplicación de consola ASP.NET Set Registry, para proteger la información confidencial de estas secciones de configuración. Para obtener información sobre la aplicación de consola ASP.NET Set Registry (Aspnet_setreg.exe), vea el artículo Q329290, "How to use the ASP.NET utility to encrypt credentials and session state connection strings" en Microsoft Knowledge Base, en el sitio Web de soporte técnico de Microsoft.

Nota de seguridad:

La información de la configuración cifrada se descifra cuando se carga en la memoria utilizada por la aplicación. Si la memoria de la aplicación queda expuesta, también puede quedar expuesta la información confidencial de la sección de configuración protegida.

Trabajar con la configuración protegida

Se puede administrar la configuración protegida utilizando la herramienta Registro de IIS de ASP.NET (Aspnet_regiis.exe) o las clases de la configuración protegida en el espacio de nombres System.Configuration.

La herramienta Aspnet_regiis.exe (ubicada en la carpeta %RaízSistema%\Microsoft.NET\Framework\versión) incluye opciones para cifrar y descifrar secciones de un archivo Web.config, crear o eliminar contenedores de claves, exportar e importar información de los contenedores de claves, y administrar el acceso a un contenedor de claves.

El cifrado y el descifrado del contenido de un archivo Web.config se realiza utilizando una clase ProtectedConfigurationProvider. En la lista siguiente se describen los proveedores de configuración protegida incluidos en .NET Framework:

Ambos proveedores proporcionan cifrado de alta seguridad de datos; sin embargo, si se tiene previsto utilizar el mismo archivo de configuración cifrada en varios servidores, como una batería de servidores Web, sólo RsaProtectedConfigurationProvider permite exportar las claves de cifrado utilizadas para cifrar los datos e importarlas a otro servidor.

Se puede especificar el ProtectedConfigurationProvider que se desea utilizar configurándolo en el archivo Web.config, o se puede utilizar una de las instancias de ProtectedConfigurationProvider configuradas en el archivo Machine.config. Para obtener más información, vea Especificar un proveedor de configuración protegida.

Una vez especificado el proveedor que se va a utilizar, se puede cifrar o descifrar el contenido del archivo Web.config para la aplicación. Para obtener más información, vea Cifrar y descifrar secciones de configuración.

Nota:

Un procedimiento recomendado para proteger las aplicaciones Web consiste en mantener siempre actualizado el servidor de la aplicación con las últimas revisiones de seguridad de Microsoft Windows e Internet Information Services (IIS), así como las revisiones de seguridad de Microsoft SQL Server o de otros orígenes de datos de suscripciones. Para obtener más información sobre los procedimientos recomendados para escribir código seguro y garantizar la seguridad de las aplicaciones, consulte el libro "Writing Secure Code", de Michael Howard y David LeBlanc, y lea la especificación proporcionada en el sitio Web Microsoft Patterns and Practices.

Vea también

Tareas

Tutorial: Cifrar la información de configuración mediante la configuración protegida

Otros recursos

Cifrar información de configuración mediante una configuración protegida