2009-08-26 12 views
23

¿Qué tiene que ver la firma digital con los ensamblajes nombrados fuertes? Leí que una asamblea fuertemente nombrada tiene clave pública y firma digital con ella.Firma de .NET Assemblies

Desde el Wikipedia article "Assembly (CLI)":

"La firma de la asamblea consiste en tomar un hash de las partes importantes de la asamblea y luego cifrar el hash con la clave privada El hash firmado se almacena en el montaje junto con el público. La clave pública descifrará el hash firmado. Cuando el CLR carga un ensamblado con un nombre fuerte, generará un hash del ensamblaje y luego lo comparará con el hash descifrado. Si la comparación tiene éxito, significa que la clave pública en el archivo (y, por lo tanto, el token de clave pública) está asociado con la clave privada utilizada para firmar el ensamblado. Esto significa que la clave pública del ensamblado es la clave pública del editor de ensamblaje y, por lo tanto, una sp. el ataque de oofing se frustra ".

¿Es precisa la información anterior? No tiene ninguna referencia a la firma digital. No pude encontrar una página de MSDN que explica cómo se firman los ensambles, cómo se verifica la firma y cómo se elimina la posibilidad de piratear. Me gustaría saber más sobre esto.

+0

Estás pidiendo mucho. Es un tema complicado, y parece estar interesado en aprender cómo funciona de principio a fin. – Will

+1

Me gustaría tener una idea general de cómo funciona. – devnull

Respuesta

45

Tanto fuerte de nombres y firmas digitales utilizan la criptografía de clave pública para proporcionar pruebas sobre la origen de un montaje, por lo que se puede aplicar política de seguridad para determinar qué permisos se conceden al ensamblaje.

No se diferencian en sus detalles técnicos, sino en los problemas que están destinados a resolver.

El propósito de un nombre seguro es únicamente para asegurar que cuando carga un ensamblado por su nombre, está cargando exactamente el ensamblaje que cree que está cargando. Ese es el único por diseño de un nombre seguro. Usted dice "Quiero cargar Frobber, versión 4, que vino de FooCorp". El equipo de nombre seguro asegura que realmente cargue con precisión esa DLL, y no otro ensamble llamado Frobber, versión 4, que vino de Dr. Evil Enterprises.

Para lograr esto, todo lo que se requiere es que conozca el token de clave pública asociado con la clave privada de FooCorp. Cómo se llega a saber que el token de clave pública es completamente su negocio. No existe una infraestructura diseñada para ayudarlo a obtener esa información de manera segura. Se espera que sepas lo que es, de alguna manera.

El propósito de una firma digital de un certificado de editor es establecer una cadena de identidad y confianza verificables. La cadena de confianza va desde un trozo de código de origen desconocido o incierto hasta una "raíz de confianza", una entidad en la que ha configurado su sistema operativo para confiar. Usted descarga un código y el código tiene una firma digital con un certificado de FooCorp. Usted examina el certificado y dice "este programa proviene de FooCorp. VeriSign avala la precisión de este certificado". Dado que VeriSign es una de sus raíces de confianza, ahora tiene la certeza de que este código realmente proviene de FooCorp.

Observe cuánto más complejo es el problema resuelto por las firmas digitales. No estamos tratando simplemente de determinar "¿este pedazo de código está asociado con este nombre, o no?" En cambio, estamos tratando de determinar de dónde vino este código, y quién garantiza la existencia de la compañía presuntamente responsable, y ¿deberíamos confiar en esa compañía?

La diferencia entre los nombres fuertes y las firmas digitales enfatiza lo difícil que es la seguridad basada en la criptografía. El problema difícil no es la criptografía; eso es solo matemática El problema difícil es gestionar de forma segura la distribución de la información sobre las claves y asociarlas con las entidades correctas. Los nombres fuertes, porque intentan resolver un problema muy pequeño pero importante, no tienen problemas de gestión de claves. O, más bien, le ocultan el problema de la administración de claves a usted, el usuario. Las firmas digitales tratan de automatizar la distribución segura de información clave a través de certificados, a fin de resolver problemas mucho más complejos de confianza e identidad.

¿Está claro?

(Gran pregunta, lo que va a subir en my blog el 3 de septiembre.)

1

La digital signature es esencialmente la parte que evita la manipulación. Una vez que se firma el ensamblado, cualquier cambio invalidará la firma y el clr sabrá que no debe cargarlo.

Lea el artículo de wikipedia. Las firmas digitales evitan la manipulación de cualquier documento digital. No solo asambleas. Lo explica mucho mejor que nunca.

3

Como puede leer en este previous related question, evitar manipular un ensamblado con nombre fuerte no es tan sencillo como se puede esperar.

0

me encontré con una interesante explicación here. Publicando aquí para el rastro de papel. Espero que pueda ayudar a alguien.

Cuestiones relacionadas