Para ver el artículo en inglés, active la casilla Inglés. También puede ver el texto en inglés en una ventana emergente si pasa el puntero del mouse por el texto.
Traducción
Inglés

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 a partir de un archivo de ensamblado mediante la clave privada correspondiente. (El archivo de ensamblado contiene el manifiesto del ensamblado, que a su vez contiene los nombres y códigos hash de todos los archivos que forman el ensamblado).

Un ensamblado con nombre seguro solo puede usar 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:

En el siguiente escenario se firma un ensamblado con un nombre seguro y después se hace referencia a él con ese nombre.

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

    • Usar un entorno de desarrollo que admita la creación de nombres seguros, como Visual Studio 2005.

    • Crear un par de claves criptográficas mediante la herramienta de nombre seguro (Sn.exe) y asignar ese par de claves al ensamblado con un compilador de línea de comandos o Assembly Linker (Al.exe). El Kit de desarrollo de Software (SDK) de Windows proporciona ambas utilidades Sn.exe y Al.exe.

  2. El entorno de desarrollo o la herramienta firma el hash del archivo que contiene el manifiesto del ensamblado con la clave privada del programador. Esta firma digital se almacena en el archivo portable ejecutable (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 token que representa la clave pública del ensamblado A. Un token es una parte de la clave pública completa y se usa en lugar de la propia clave para ahorrar espacio.

  4. Common Language Runtime comprueba la firma de nombre seguro cuando el ensamblado se ubica en la caché global de ensamblados. Al enlazar por nombre seguro en tiempo de ejecución, Common Language Runtime compara la clave almacenada en el manifiesto del ensamblado B con la clave usada 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 alterado y que esos bits proceden realmente de los desarrolladores del ensamblado A.

System_CAPS_noteNota

Este escenario no soluciona los problemas 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 tener en cuenta que los nombres seguros no requieren que el código se firme de esta manera. De hecho, las claves usadas para generar la firma de nombre seguro no tienen por qué ser las mismas que las usadas para generar una firma Authenticode.

Volver al principio

A partir de .NET Framework 3.5 Service Pack 1, las firmas de 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 para la zona MyComputer. Esta característica se denomina omisión de nombres seguros. En un entorno de plena confianza, las peticiones de StrongNameIdentityPermission siempre se realizan correctamente para los ensamblados de plena confianza firmados, independientemente de su firma. En esta situación, la característica de omisión de nombres seguros evita la sobrecarga innecesaria por comprobación de firmas del nombre seguro de los ensamblados de plena confianza, lo que permite cargar los ensamblados 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 sin la evidencia StrongName (por ejemplo, que tenga la evidencia de zona MyComputer);

  • se cargue en un AppDomain de plena confianza;

  • se cargue desde una ubicación situada bajo la propiedad ApplicationBase de ese AppDomain;

  • no tenga firma retrasada.

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

Título

Descripción

Cómo: Crear un par de claves privada y pública

Describe cómo crear un par de claves criptográficas para firmar un ensamblado.

Cómo: Firmar un ensamblado con un nombre seguro

Describe cómo crear un ensamblado con nombre seguro.

Nombres seguros mejorados

Describe las mejoras en nombres seguros en .NET Framework 4.5.

Cómo: Hacer referencia a 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 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 deshabilitarse para todas las aplicaciones o para aplicaciones específicas.

Crear ensamblados

Proporciona información general sobre los ensamblados de archivos individuales y múltiples archivos.

NIB: How to: Delay Sign an Assembly (Visual Studio)

Explica cómo firmar un ensamblado con un nombre seguro después de haber creado el ensamblado.

Sn.exe (Strong Name Tool)

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.

Al.exe (Assembly Linker)

Describe la herramienta incluida en .NET Framework que genera un archivo que tiene un manifiesto de ensamblado a partir de archivos de recursos o módulos.

Mostrar: