Compartir a través de


Consideraciones de seguridad del ensamblado

Al compilar un ensamblado, puede especificar un conjunto de permisos que el ensamblado requiere para ejecutarse. La concesión de permisos específicos para un ensamblado se basa en la evidencia.

Hay dos formas distintas de usar la evidencia:

  • La evidencia de entrada se combina con la evidencia recopilada por el cargador para crear un conjunto final de evidencias usadas para la resolución de directivas. Los métodos que usan esta semántica incluyen Assembly.Load, Assembly.LoadFrom y Activator.CreateInstance.

  • La evidencia de entrada se usa sin modificar como conjunto final de evidencia utilizada para la resolución de directivas. Los métodos que usan esta semántica incluyen Assembly.Load(byte[]) y AppDomain.DefineDynamicAssembly().

    Los permisos opcionales pueden ser concedidos por la directiva de seguridad establecida en el equipo donde se ejecutará el ensamblaje. Si desea que el código controle todas las posibles excepciones de seguridad, puede realizar una de las siguientes acciones:

  • Inserte una solicitud de permiso para todos los permisos que debe tener el código y controle por adelantado el error de tiempo de carga que se produce si no se conceden los permisos.

  • No use una solicitud de permiso para obtener los permisos que puede necesitar el código, pero esté preparado para controlar las excepciones de seguridad si no se conceden permisos.

    Nota:

    La seguridad es un área compleja y tiene muchas opciones entre las que elegir. Para obtener más información, consulte Conceptos clave de seguridad.

En el momento de la carga, se utiliza la evidencia del ensamblado como entrada para la directiva de seguridad. La directiva de seguridad se establece mediante la empresa y el administrador del equipo, así como por la configuración de directiva de usuario, y determina el conjunto de permisos que se conceden a todo el código administrado cuando se ejecuta. La directiva de seguridad se puede establecer para la compañía del ensamblado (si tiene una firma generada utilizando la herramienta de firma), para el sitio y la zona Web (que era un concepto de Internet Explorer) de los que se descargó el ensamblado o para el nombre seguro del ensamblado. Por ejemplo, el administrador de un equipo puede establecer una directiva de seguridad que permita que todo el código descargado de un sitio web y firmado por una empresa de software determinada acceda a una base de datos en un equipo, pero no concede acceso para escribir en el disco del equipo.

Ensamblados con nombre seguro y herramientas de firma

Advertencia

No confíe en nombres seguros para la seguridad. Solo proporcionan una identidad única.

Puede firmar un ensamblado de dos maneras diferentes pero complementarias: con un nombre seguro o mediante SignTool.exe (Herramienta de firma). La firma de un ensamblado con un nombre seguro agrega cifrado de clave pública al archivo que contiene el manifiesto del ensamblado. La firma mediante nombres seguros ayuda a comprobar la unicidad del nombre, impide la simulación de nombres y proporciona a los llamadores alguna identidad cuando se resuelve una referencia.

No hay ningún nivel de confianza asociado a un nombre seguro, lo que hace que SignTool.exe (Herramienta de firma) sea importante. Las dos herramientas de firma requieren que un publicador demuestre su identidad en una entidad de terceros y obtenga un certificado. A continuación, este certificado se inserta en el archivo y un administrador puede usarlo para decidir si confiar en la autenticidad del código.

Puede asignar tanto un nombre seguro como una firma digital creada mediante SignTool.exe (Herramienta de firma) a un ensamblado, o puede usar cada uno por separado. Las dos herramientas de firma solo pueden firmar un archivo a la vez; para un ensamblado de varios archivos, firma el archivo que contiene el manifiesto del ensamblado. Un nombre seguro se almacena en el archivo que contiene el manifiesto del ensamblado, pero una firma creada con SignTool.exe (Herramienta de firma) se almacena en una ranura reservada en el archivo ejecutable portátil (PE) que contiene el manifiesto de ensamblado. La firma de un ensamblado mediante SignTool.exe (Herramienta de firma) se puede usar (con o sin un nombre seguro) cuando ya tiene una jerarquía de confianza que se basa en firmas generadas por SignTool.exe (Herramienta de firma), o cuando su política usa solo la parte de clave y no comprueba una cadena de confianza.

Nota:

Cuando se utiliza tanto un nombre seguro como una firma generada por una herramienta de firma en un ensamblado, es importante asignar el nombre seguro primero.

El entorno común de ejecución también realiza una verificación de hash; el manifiesto del ensamblaje contiene una lista de todos los archivos que componen el ensamblaje, incluido un hash de cada archivo tal y como existía cuando se creó el manifiesto. A medida que se carga cada archivo, se aplica un hash a su contenido y se compara con el valor hash almacenado en el manifiesto. Si los dos hash no coinciden, el ensamblado no se puede cargar.

La nomenclatura segura y la firma mediante SignTool.exe (Sign Tool) garantizan la integridad a través de firmas digitales y certificados. Todas las tecnologías mencionadas, es decir, la comprobación de hash, la nomenclatura segura y la firma mediante SignTool.exe (Herramienta de firma) funcionan conjuntamente para asegurarse de que el ensamblado no se ha modificado de ninguna manera.

Consulte también