Compartir a través de


Escenario de nombre seguro

Actualización: noviembre 2007

El siguiente escenario describe el proceso de firma de un ensamblado con un nombre seguro y de hacer, posteriormente, referencia a él con ese nombre.

  1. El ensamblado A se crea con un nombre seguro mediante uno de los métodos siguientes:

    • Utilizando un entorno de desarrollo que permita la creación de nombres seguros, como Visual Studio 2005

    • Creando un par de claves criptográficas mediante la herramienta Strong Name (Sn.exe) y asignando ese par de claves al ensamblado a través de un compilador de línea de comandos o la herramienta Assembly Linker (Al.exe). El Kit de desarrollo de software de Windows (SDK) proporciona Sn.exe y Al.exe.

  2. El entorno de programación o la herramienta firman el código hash del archivo que contiene el manifiesto del ensamblado con la clave privada del programador. Esta firma digital se guarda en el archivo ejecutable portable (PE) que contiene el manifiesto del ensamblado A.

  3. El ensamblado B es un consumidor del ensamblado A. La sección de referencia del manifiesto del ensamblado B contiene un símbolo (token) que representa la clave pública del ensamblado A. Un símbolo es una parte de la clave pública y se usa en lugar de la propia clave para ahorrar espacio.

  4. Common Language Runtime comprueba la firma del nombre seguro cuando se ubica el ensamblado en la caché de ensamblados global. Cuando se enlaza por nombre seguro en tiempo de ejecución, Common Language Runtime compara la clave almacenada en el manifiesto del ensamblado B con la clave utilizada para generar el nombre seguro del ensamblado A. Si se pasan las comprobaciones de seguridad de .NET Framework y el enlace es correcto, el ensamblado B tiene la garantía de que los bits del ensamblado A no se han manipulado y proceden sin duda de los programadores del ensamblado A.

Nota:

Este escenario no se ocupa de los aspectos de confianza. Los ensamblados pueden llevar firmas completas de Microsoft Authenticode además de un nombre seguro. Las firmas de Authenticode incluyen un certificado que establece la confianza. Es importante recordar que los nombres seguros no requieren que el código se firme de esta forma. De hecho, las claves utilizadas para generar la firma del nombre seguro no tienen que ser las mismas que se utilizan para generar una firma de Authenticode.

Omitir la comprobación de firmas de ensamblados de confianza

A partir de .NET Framework versión 3.5 Service Pack 1, las firmas con nombre seguro no se validan cuando un ensamblado se carga en un dominio de aplicación de plena confianza, como el dominio de aplicación predeterminado de la zona MyComputer. Esto es lo que se denomina característica de omisión de nombres seguros. En un entorno de plena confianza, las peticiones de StrongNameIdentityPermission siempre se realizan correctamente en los ensamblados firmados de plena confianza, independientemente de su firma. La característica de omisión de nombres seguros evita la sobrecarga innecesaria que supone la comprobación de firmas del nombre seguro de los ensamblados de plena confianza en esta situación, lo que permite que los ensamblados se carguen con mayor rapidez.

La característica de omisión se aplica a cualquier ensamblado que esté firmado con un nombre seguro y que tenga las siguientes características:

  • Sea de plena confianza y no tenga la evidencia StrongName (que tenga, por ejemplo, la evidencia de zona MyComputer).

  • Esté cargado en un objeto AppDomain de plena confianza.

  • Se haya cargado desde una ubicación situada bajo la propiedad ApplicationBase de ese objeto AppDomain.

  • No se haya firmado con retraso.

Esta característica puede deshabilitarse en aplicaciones concretas o en un equipo. Visite Cómo: Deshabilitar la característica de omisión de nombres seguros.

Vea también

Referencia

Herramienta de nombre seguro (Sn.exe)

Herramienta Assembly Linker (Al.exe)

Otros recursos

Crear y utilizar ensamblados con nombre seguro