Saltar al contenido

C#: ¿por qué firmar un ensamblado?

Luego de de esta extensa compilación de datos resolvimos este asunto que pueden tener algunos los lectores. Te regalamos la respuesta y esperamos serte de mucha apoyo.

Solución:

¿Por qué el autor anterior habría firmado las asambleas de esta manera?

Ni idea, tal vez quería que todos sus ensamblajes estuvieran firmados con el mismo key.

¿Es necesario firmar asambleas y qué tendría de malo no firmarlo?

No, no es necesario pero es un mecanismo que te permite asegurar la autenticidad de un montaje. Le permite asegurarse de que un ensamblaje no haya sido manipulado y, de hecho, se origine en este autor. También es necesario si desea incluirlos en el GAC.

¿Qué desventajas hay en la firma de asambleas? ¿Provoca retrasos?

Los ensamblados firmados solo pueden cargar otros ensamblados firmados. También están vinculados a una versión específica, lo que significa que debe usar redireccionamientos vinculantes o volver a compilar la aplicación si desea usar una versión diferente. También hay una pequeña sobrecarga de rendimiento debido a la verificación de la firma, pero es tan pequeña que no debería preocuparte.

Debe firmar ensamblajes si desea incluirlos en el GAC.

Si firma un ejecutable, entonces cualquier biblioteca de clases a la que se vincule también debe estar firmada. Esto puede ser difícil si está usando una biblioteca de terceros (especialmente si necesita usar un control ActiveX o similar).

Richard Grimes ha escrito un buen taller sobre seguridad en .NET y eso incluye un capítulo sobre esto: Taller de seguridad

La razón por la que todos los ensamblajes se firmaron con el mismo archivo .snk podría ser si usó pruebas unitarias con cobertura de código. Para poder cubrir el código (al menos con las herramientas integradas en la versión de prueba de Visual Studio 2005) y si los ensamblajes están firmados, debe especificar qué archivos .snk se usan para la firma, pero creo que solo puede especifique un archivo .snk para toda la solución, de modo que si firma las distintas bibliotecas de clases con diferentes archivos .snk, solo puede verificar la cobertura del código en uno de ellos a la vez.

Una razón muy importante para firmar una asamblea es que pueda estar seguro de que es su asamblea. Desde lo privado key es tuyo, nadie más puede firmar una asamblea con ese mismo key. Esto significa que cuando el público key de un ensamblaje es uno que conoce (puede recuperarlo usando el GetType().Assembly.GetName().GetPublicKey() función), el conjunto es suyo y no ha sido manipulado.

Aquí tienes las reseñas y calificaciones

Si piensas que ha resultado útil nuestro post, te agradeceríamos que lo compartas con el resto programadores y nos ayudes a dar difusión a esta información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *