Crear y utilizar ensamblados con nombre seguro
Un nombre seguro se compone de la identidad del ensamblado, es decir, de su nombre de texto simple, número de versión e información sobre referencia cultural (si se proporciona), más una clave pública y una firma digital. Se genera de un archivo de ensamblado mediante la clave privada correspondiente. El archivo de ensamblado contiene el manifiesto del ensamblado, que contiene los nombres y códigos hash de todos los archivos que forman el ensamblado.
Un ensamblado con nombre seguro sólo puede utilizar tipos de otros ensamblados con nombre seguro. De lo contrario, se pondría en peligro la seguridad del ensamblado con nombre seguro.
Esta información general contiene las siguientes secciones:
Escenario de nombre seguro
Omitir la comprobación de firmas de ensamblados de confianza
Temas relacionados
Escenario de nombre seguro
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.
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.
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.
El ensamblado B es un consumidor del ensamblado A. La sección de referencia del manifiesto del ensamblado B contiene un 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.
Common Language Runtime comprueba la firma del nombre seguro cuando se ubica el ensamblado en la caché global de ensamblados. Al enlazar mediante 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 superan las comprobaciones de seguridad de .NET Framework y el enlace se realiza correctamente, el ensamblado B tiene la garantía de que los bits del ensamblado A no se han manipulado y que estos bits proceden realmente de los desarrolladores 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. |
Volver al principio
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. Vea Cómo: Deshabilitar la característica de omisión de nombres seguros.
Volver al principio
Temas relacionados
Título |
Descripción |
---|---|
Describe cómo se crea un par de claves criptográficas para firmar un ensamblado. |
|
Describe cómo se crea un ensamblado con nombre seguro. |
|
Describe cómo hacer referencia a tipos o recursos en un ensamblado con nombre seguro en tiempo de compilación o en tiempo de ejecución. |
|
Cómo: Deshabilitar la característica de omisión de nombres seguros |
Describe cómo deshabilitar la característica que omite la validación de firmas de nombre seguro. Esta característica puede estar deshabilitada para todas las aplicaciones o para aplicaciones concretas. |
Proporciona información general sobre ensamblados de un único archivo y de varios archivos. |
|
Explica cómo firmar un ensamblado con un nombre seguro después de haber creado el ensamblado. |
|
Describe la herramienta incluida en .NET Framework que ayuda a crear ensamblados con nombres seguros. Esta herramienta proporciona opciones para la administración de claves, así como para la generación y comprobación de firmas. |
|
Describe la herramienta incluida en .NET Framework que genera un archivo que tiene un manifiesto de ensamblado de módulos o de archivos de recursos. |
Volver al principio