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.)
Estás pidiendo mucho. Es un tema complicado, y parece estar interesado en aprender cómo funciona de principio a fin. – Will
Me gustaría tener una idea general de cómo funciona. – devnull