es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Es posible calcular un hash por pequeños fragmentos?

Actualmente estoy trabajando en un mecanismo de actualización de firmware para un sistema integrado con baja memoria.

Parte del sistema requiere hashear (con SHA-256) el archivo binario antes de enviar el archivo (se añaden otras medidas de seguridad que no afectan a esta pregunta). El dispositivo debe verificar este hash antes de validarlo, pero tiene muy poca memoria. Recibirá los datos en pequeños trozos y me pregunto si es posible calcular un hash parcial “sobre la marcha” para evitar cargar de nuevo todo el binario después de la transferencia completa.

Por ejemplo, supongamos que los datos a hashear son “parte1parte2parte3”. El hash de los datos completos es “hash”, el hash de “parte1” es “hash1”, el hash de “parte2” es “hash2” y el hash de “parte3” es “hash3”.

¿Existe alguna operación matemática que pueda convertir hash parciales en el completo? Algo como lo siguiente:

hashRecibido = hash
tempHash = operación(hash1,hash2)
tempHash = operación(tempHash, hash3)
if(hashRecibido == tempHash)
… continuar
else
… fallar

Estoy buscando una propiedad matemática (algo como la propiedad distributiva) de SHA-256 que permita este comportamiento sin romper ninguna de las propiedades de SHA-256.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible calcular hashes parciales y convertirlos en el hash completo utilizando una operación matemática. Esta operación se llama construcción de Merkle-Damgard. Esta construcción se utiliza para construir una función hash criptográfica a partir de una función de compresión unidireccional. Es una forma de combinar varios hashes parciales en un solo hash.

    La construcción de Merkle-Damgard funciona tomando los hashes parciales y combinándolos de una manera específica. El resultado es un hash único que es equivalente al hash de los datos completos. Esto permite que el dispositivo verifique el hash sin tener que cargar el archivo binario completo.

Comments are closed.