Pregunta

Ok, debo ser tonto porque ya he leído esto: http://www.csharp411.com/ net-assembly-faq-part-3-strong-names-and-sign /

Y todavía no lo entiendo ...

Digamos que abro las propiedades de mi proyecto y voy a "Firmar" pestaña, luego verifico " Firmar el ensamblaje " y generar un nuevo conjunto con una contraseña. Se creó un archivo de clave de nombre seguro con la extensión .pfx, con las claves pública y privada, y VS firmará digitalmente mi ensamblaje en la compilación, ¿verdad?

¿Qué pasa con la clave privada? ¿No debería ser privado y yo, el desarrollador, ser el único en tenerlo? ¿No debería firmarse la asamblea solo con la clave pública?

¿Alguien puede explicarme esto? Básicamente, quiero firmar el ensamblaje de mi proyecto y permitir que los usuarios comprueben si el ensamblado fue realmente desarrollado por mí, donde soy el único que mantiene la clave privada (que creo que se supone que debo).

¿Fue útil?

Solución

Básicamente tienes razón.

Crea un par de claves y lo usa para firmar. Pero no envíe el archivo pfx (o snk), contiene claves públicas y privadas y debe mantenerse a salvo.

La clave pública se agrega al ensamblado como parte del proceso de firma.

Esta firma se verifica cuando se carga un ensamblaje en una aplicación. Los usuarios finales también pueden verificar el token de clave pública en el GAC, pero ese no es realmente un proceso conveniente. Y tienes que decirles tu token de clave pública de alguna manera.

Y todo es tan confiable como su capacidad para mantener privado el archivo de clave.

También tenga en cuenta que, idealmente, solo debe tener 1 clave por empresa. Si le preocupa compartirlo con (muchos) compañeros de trabajo, investigue la firma con retraso.

Otros consejos

La firma digital implica calcular un hash de su binario y luego cifrar el hash generado utilizando la clave privada del par de claves que generó. Además de esto, VS también agregará la clave pública al ensamblado. Ahora, cuando esto se ejecute en el lado del cliente, el tiempo de ejecución utilizará la clave pública en el ensamblado para descifrar la firma (hash) y luego coincidirá con el hash calculado del binario en el cliente. Si coinciden, significa que el binario no ha sido manipulado.

La firma de ensamblaje se basa en cryptogrpahy de clave pública (PKI). El concepto general en pocas palabras es que cuando firma criptográficamente algo con PKI, la clave privada se usa para firmar, pero la clave pública se usa para verificar la firma. No se puede usar una clave privada para verificar la firma, solo crearla. Una clave pública no se puede utilizar para crear una firma, solo verificarla.

Dado eso, es muy importante que mantenga su clave privada segura y privada. Si desea mantener el nivel más alto de seguridad y proporcionar el nivel más alto de autenticidad a sus clientes, probablemente sería mejor usar la firma de retraso, y hacer que un solo individuo o departamento sea responsable de administrar sus pares de claves públicas / privadas completas . Los desarrolladores no deben tener acceso a la clave privada y pueden usar la opción de firma de retraso para desarrollar ensamblados con nombres seguros sin comprometer la seguridad y la autenticidad.

Signing = Cifrar el hash SHA1 del ensamblado utilizando la clave privada
Verificación = Comparar la firma descifrada con clave pública con el hash calculado de la asamblea

Entonces, cualquier persona con PublicKey puede verificar el ensamblado, pero solo el Autor con PrivateKey puede firmar un ensamblaje.

Token PublicKey = últimos 64 bits de hash SHA1 de PublicKey en orden de bytes little-endian.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top