Colección de citas famosas - Slogan de motivación - ¿Por qué la colección a la que hace referencia C# no es un nombre seguro?

¿Por qué la colección a la que hace referencia C# no es un nombre seguro?

Cambiar el nombre del proyecto A~ Puede entrar en conflicto con otros espacios de nombres~ Es decir, tiene el mismo nombre

El nombre seguro se identifica mediante el ensamblado: su nombre de texto simple y número de versión e información cultural (si se proporciona), además de la clave pública y la firma digital. Los nombres seguros se generan a partir del archivo de ensamblaje (el archivo que contiene el manifiesto del ensamblaje y, por lo tanto, los nombres y hashes de todos los archivos que componen el ensamblaje) utilizando la clave privada correspondiente. Microsoft® Visual Studio .NET® y otras herramientas de desarrollo proporcionadas en el SDK de .NET Framework pueden asignar un nombre seguro a un ensamblado. Los ensamblados con el mismo nombre seguro deben ser idénticos.

Al firmar un ensamblado con un nombre seguro, se asegura de que el nombre sea globalmente único. Los nombres seguros también cumplen específicamente los siguientes requisitos:

Los nombres seguros dependen de un par de claves único para garantizar la unicidad del nombre. Nadie generará nunca el mismo nombre de ensamblaje que usted, porque el nombre de un ensamblaje generado con una clave privada no es el mismo que el nombre de un ensamblaje generado con una clave privada diferente.

Los nombres seguros protegen el linaje de versiones de un ensamblado. Los nombres seguros garantizan que nadie pueda crear versiones posteriores de su ensamblaje. Los usuarios pueden estar seguros de que la versión del ensamblado que cargan proviene del mismo editor que creó la versión con la que se creó la aplicación.

Los nombres sólidos proporcionan controles de integridad confiables. Al pasar la verificación de seguridad de .NET Framework, puede estar seguro de que el contenido del ensamblado no ha cambiado desde que se creó. Sin embargo, tenga en cuenta que un nombre seguro no implica un nivel de confianza, como el que proporcionan las firmas digitales y los certificados de respaldo.

Al hacer referencia a un ensamblado con un nombre seguro, debería poder beneficiarse de funciones como el control de versiones y la protección de nombres. Si este ensamblado con nombre seguro luego hace referencia a un ensamblado con nombre simple (que no tiene estos beneficios), perderá los beneficios de usar un ensamblado con nombre seguro y aún así obtendrá un conflicto de DLL. Por lo tanto, un ensamblado con un nombre seguro solo puede hacer referencia a otros ensamblados con un nombre seguro.

El siguiente escenario ilustra el proceso de firmar un ensamblado con un nombre seguro y luego hacer referencia a él con ese nombre.

Cree el ensamblado A con un nombre seguro utilizando uno de los siguientes métodos:

Utilice un entorno de desarrollo que admita la creación de nombres seguros, como Visual Studio .NET.

Utilice la herramienta Nombre seguro (Sn.exe) para crear un par de claves de cifrado y utilice el compilador de línea de comandos o el vinculador de ensamblaje (Al.exe) para asignar el par de claves al ensamblaje. El SDK de .NET Framework proporciona Sn.exe y Al.exe.

El entorno o herramienta de desarrollo utiliza la clave privada del desarrollador para firmar el archivo que contiene el manifiesto del ensamblado. La firma digital se almacena en un archivo ejecutable portátil (PE) que contiene el manifiesto del ensamblado A.

El conjunto B es consumidor del conjunto A. La parte de referencia del manifiesto del ensamblado B incluye un token que representa la clave pública del ensamblado A. El token es parte de la clave pública completa y este token (en lugar de la clave en sí) se puede utilizar para ahorrar espacio.

El tiempo de ejecución del lenguaje público *** verifica las firmas de nombres seguras cuando el ensamblado se coloca en la caché global de ensamblados. Cuando se vincula un nombre seguro en tiempo de ejecución, el tiempo de ejecución del lenguaje público compara la clave almacenada en el manifiesto del ensamblado B con la clave utilizada para generar el nombre seguro para el ensamblado A. Si se pasan las comprobaciones de seguridad de .NET Framework y el enlace es exitoso, el Ensamblaje B garantiza que los bits del Ensamblaje A no han sido manipulados, pero esos bits en realidad provienen del desarrollador del Ensamblaje A.

Nota Este escenario no maneja problemas de confianza.

Además del nombre fuerte, el ensamblaje está completamente firmado por Microsoft® Authenticode®. Las firmas de código de autenticación incluyen certificados que establecen confianza. Es importante tener en cuenta que los nombres seguros no requieren que el código esté firmado de esta manera. De hecho, la clave utilizada para generar una firma de nombre seguro no tiene que ser la misma clave utilizada para generar una firma Authenticode.