2011-10-19 20 views
5

Si desea asegurarse de que el archivo es válido (untampered y vino de la fuente correcta/esperada), hay dos cosas que puede hacer: hash, y firma.Hashing vs binarios de firma

Para los fines de mi pregunta, hash significa proporcionar un hash del archivo (junto con el archivo) para descargar. El cliente descarga el hash y el archivo, vuelve a calcular el hash y verifica que coincida con el hash descargado; esto "prueba" que el archivo no estaba moderado.

Firma medios usando un esquema de cifrado pública-privada, en la que se inscribe el binario con una clave pública, y el cliente utiliza la clave privada para verificar que realmente se inscribió la tecla.

En base a estas definiciones, realmente no veo cuál es el principal beneficio de firmar algo contra algo. Se supone que ambos deben probar que el archivo no fue manipulado.

La única cosa que puedo ver es que con hash, un servidor comprometido también podría significar que alguien comprometer el hash y la sustitución de un binario malicioso con una llave adecuada; pero con un esquema público-privado, mientras la clave privada permanezca privada, no hay forma de falsificar un archivo malicioso.

¿O me está faltando algo?

+0

Esta es quizás una mejor pregunta para http://security.stackexchange.com. –

+0

@MattBall en ese caso, nomínalo para mudarse. – ashes999

Respuesta

6

La diferencia es como usted ha dicho: un hacker puede actualizar un hash para que coincida con el manipulado, con archivo, pero no puede generar una firma válida.

La firma se realiza con la clave privada, la verificación con la clave pública. Usted dijo lo opuesto arriba. También se suele hacer en el hash del archivo y no en el archivo por razones prácticas.

+0

¿Qué le impide reemplazar la clave pública? – u0b34a0f6ae

+0

@ u0b34a0f6ae No coincidirá con la clave privada utilizada ... – Bohne

2

La firma verifica dos cosas: que el archivo no se ha alterado, y la identidad del firmante. Si puede estar seguro de que la entidad que le otorga el hash es absolutamente la entidad que supuestamente le está entregando el archivo, entonces los dos son equivalentes. Las autoridades de firma y certificación son una forma de garantizar esa relación de confianza.

2

La gran diferencia entre proporcionar algunos datos (un documento ejecutable, lo que sea) junto con un hash y proporcionar los mismos datos con una firma es con el hash, tanto los datos como el valor hash provienen del mismo lugar. Entonces, si alguien puede comprometer a uno de ellos, probablemente también pueda comprometer al otro.

Por ejemplo, si puedo cortar en su servidor web, puedo fácilmente reemplazar el ejecutable con mi propia versión y sustituya el valor hash con el hash correcto para mi ejecutable.

Si firma su ejecutable, no puedo producir otra firma para un ejecutable diferente y reemplazar su firma original. La firma verifica tanto el hash de los datos originales (los datos no han cambiado desde que se firmó) y que la firma fue generada por su clave privada.

Por supuesto, todo esto supone que las personas que reciben su ejecutable firmado han recibido su clave pública en alguna forma de confianza. Si puedo engañar a las personas para que usen mi clave pública en lugar de la tuya, entonces puedo piratear tu sitio web y reemplazar tu ejecutable firmado por el mío. Es por eso que tenemos autoridades de certificación.

This page tiene una visión general de alto nivel de las firmas digitales.

3

Hash es una salida con longitud fija de caracteres (o bits si se representa en binario) para datos específicos que se pasan a una función. El hash es irreversible. El valor de hash para un dato en particular siempre es el mismo. Si se modifica un solo bit en los datos, se cambia el hash casi completo para los datos alterados. El proceso de calcular un hash se llama hash.

En la criptografía asimétrica cada parte comunicante tiene su propio par de claves (clave privada y clave pública). Como su nombre lo sugiere, la clave privada generalmente se mantiene en secreto y la clave pública se comparte. Estas claves son como tales en la naturaleza que si se utiliza para cifrar, el único otro par de claves puede descifrar.

Para lograr el no repudio (el remitente no puede negar que envió el mensaje) y para autenticar una entidad específica para recibir datos, se les comparte una clave pública para que puedan desencriptar todo lo que el remitente cifre utilizando la clave privada correspondiente con el remitente (solo con el remitente, es decir, secreto) Pero tenga en cuenta que la confidencialidad es la semana en este ejemplo, ya que el remitente no sabe y no puede garantizar si la clave pública se ha visto comprometida a una desconocida.

cuando se utiliza una clave privada para encriptar un Hash, se convierte en una firma y el proceso se denomina firma. Esto logra Autenticidad (que los datos provienen de un tipo genuino como se usa la clave privada) y también la Integridad está asegurada porque el receptor verifica el Hash al recibir datos descifrando el hash usando la clave pública correspondiente que le dio el remitente y luego calcula el mismo hash por su cuenta y haciendo juego.