strongly strong name .net strongname snk

.net - strong - ¿Para qué sirve un.snk?



strongly named key (5)

En el mundo .Net, el archivo SNK se usa para firmar los archivos binarios compilados. Esto permite que sucedan un par de cosas:

  1. Puede registrar la Asamblea en el GAC (Global Assembly Cache) . Básicamente, puede hacer referencia desde muchos lugares en la misma máquina sin tener que mantener varias copias).
  2. Puedes usar tus Binarios desde otros binarios que también están firmados (este es un extraño tipo de comportamiento viral con respecto a los ensambles firmados).
  3. Su conjunto no puede (fácilmente) ser modificado por terceros que no tienen acceso al archivo SNK, proporcionando al menos una pequeña cantidad de seguridad.

No estoy familiarizado con el funcionamiento del servidor BizTalk , por lo que no creo poder arrojar demasiada luz sobre el propósito específico al que sirven en ese entorno.

Espero que esto haya sido útil.

¿Para qué sirve un archivo .snk? Sé que significa Strongly Named Key , pero todas las explicaciones de lo que es y cómo funciona van por mi cabeza.

¿Hay alguna explicación simple sobre cómo se usa una clave con un nombre fuerte y cómo funciona?


El archivo .snk se usa para aplicar un nombre seguro a un ensamblado .NET . un nombre tan fuerte consiste en

un nombre de texto simple, número de versión e información cultural (si se proporciona), más una clave pública y una firma digital.

El SNK contiene un par de claves único: una clave pública y privada que se puede usar para garantizar que tenga un nombre sólido exclusivo para el ensamblaje. Cuando el ensamblado tiene un nombre fuerte, se construye un "hash" a partir del contenido del ensamblaje, y el hash se cifra con la clave privada. A continuación, este hash firmado se coloca en el conjunto junto con la clave pública de .snk.

Más adelante, cuando alguien necesita verificar la integridad del ensamblado fuertemente nombrado, construye un hash de los contenidos del ensamblaje, y usa la clave pública del ensamblado para descifrar el hash que viene con el ensamblado, si los dos hashes coinciden, la verificación de ensamblaje pasa.

Es importante poder verificar los ensamblados de esta manera para garantizar que nadie canjee un ensamblaje por uno malicioso que subvertirá toda la aplicación. Esta es la razón por la que no se confía en los ensamblajes no fuertes de la misma manera que los ensamblados con nombres fuertes, por lo que no pueden colocarse en el GAC. Además, existe una cadena de confianza: no se puede generar un ensamblado con un nombre fuerte que haga referencia a ensamblajes no fuertemente nombrados.

El artículo " Los secretos del nombre fuerte ". Hace un excelente trabajo al explicar estos conceptos con más detalle. Con imagenes.


El archivo .snk se utiliza para firmar los ensamblajes para poder agregarlos al Caché de ensamblados global (GAC).

El archivo .snk contiene los tokens públicos y privados para su clave. Cuando desee firmar algunos datos (o binarios) con esa clave, se calcula una suma de comprobación en los datos, que luego se cifra con el token privado. La suma de comprobación encriptada se agrega a los datos. Cualquiera puede usar el token público de su clave para descifrar la suma de comprobación y compararla con la suma de comprobación que calcularon para verificar que los datos firmados no se hayan alterado.

Puede leer más sobre la criptografía de clave pública en http://en.wikipedia.org/wiki/Public-key_cryptography .


Un archivo .snk es una versión persistente de su "clave" producida por la utilidad sn en el conjunto de utilidades de framework. A continuación, utiliza este archivo para ''firmar digitalmente'' sus ensamblajes. Es una clave de 2 partes .. combinación de clave público-privada. La parte pública de la clave se publica, es decir, es conocida por todos. La parte privada solo la conoce usted, el desarrollador del componente / aplicación, y debe mantenerse de esa manera.

Cuando firma su ensamblaje, utiliza la clave privada y un valor hash para su ensamblaje para crear una firma digital que está integrada en su ensamblaje. A partir de entonces, cualquier persona que cargue su ensamblaje pasa por un paso de verificación. La clave pública se usa para validar si el ensamblado realmente proviene de usted ... solo necesita la clave pública para esto (que también está incrustada en un formulario tokenizado en el manifiesto de ensamblaje). Si se manipuló el ensamblaje, el valor del hash sería diferente y la carga del ensamblaje se anularía. Este es un mecanismo de seguridad.


Un archivo .snk se utiliza para garantizar que otra persona no pueda deslizar un ensamblaje propio en su lugar. Proporciona un par de claves de cifrado / descifrado.

Cuando se utiliza un archivo .snk para firmar un ensamblaje, se calcula un valor de código de hash a partir del archivo de ensamblaje y se cifra con la clave privada. Ese "compendio" encriptado se agrega al ensamblado junto con la clave pública del archivo .snk.

Luego, cuando alguien recibe su ensamblaje, también pueden calcular ese valor de código hash. Usan la clave pública para descifrar la que calculó y comparar los valores calculados. Si el ensamblaje se ha modificado, esos valores serán diferentes y el usuario del conjunto sabrá que el conjunto que tiene no es el que proporcionó.

En el contexto de BizTalk Server, quien construya cualquier ensamblaje personalizado que use su solución BizTalk necesitará usar un archivo .snk para firmar el ensamblado, de modo que el servidor BizTalk pueda cargarlo en el GAC y usarlo.