Hashing mensaje grande para integridad

2

Leí acerca de la integridad de los mensajes usando hashing.

Como sé, la integridad de los mensajes consiste en hash del contenido del mensaje y se envía al destinatario. Si el destinatario recibió este mensaje, vuelva a hacer hash para comparar con dos valores de hashing.

Tengo una pregunta sobre eso.

El tamaño del archivo puede ser superior a 100 MB o algo así.

En mi opinión, puede llevar demasiado tiempo.

Por lo tanto, me gustaría usar algunos campos como el tamaño del archivo y la fecha de creación en el hashing. ¿Es esa una forma posible o segura de hash?

    
pregunta user1156041 24.11.2016 - 08:06
fuente

2 respuestas

2
  

¿Cómo puedo administrar el hash para archivos de gran tamaño? Puede que el tamaño del archivo sea superior a 100 MB o algo así. En mi opinión, puede llevar demasiado tiempo.

Si desea verificar la integridad de un archivo, debe ejecutar todo el archivo. No hay forma de omitir ningún bit porque exactamente estos pueden verse afectados por un cambio. Calcular el hash sobre un archivo requiere exactamente una ejecución secuencial sobre todo el archivo y los algoritmos están diseñados para ser rápidos. Probablemente no lo conseguirás más rápido.

  

Por lo tanto, me gustaría usar algunos campos como el tamaño del archivo y la fecha de creación en el hashing. ¿Es esa una forma posible o segura de hash?

No, no lo es. El contenido del archivo se puede cambiar sin afectar el tamaño y la fecha de creación. Aparte de eso, la fecha de creación no es una propiedad del archivo sino una propiedad del almacenamiento, es decir, se puede cambiar sin que afecte al contenido del archivo. Esto significa que con esta propuesta, un hash coincidente no prueba la integridad ni una falta de coincidencia de hash muestra pérdida de integridad.

    
respondido por el Steffen Ullrich 24.11.2016 - 08:11
fuente
2

antes de que se pueda responder a su pregunta, debe especificar por qué que desea la integridad de los datos en primer lugar: la protección contra cambios accidentales es algo muy diferente a la protección contra modificaciones del adversario. También debe especificar en qué contexto tiene lugar la validación: ¿cómo sabe el actor que realiza la validación cuál debe ser la suma de comprobación adecuada?

  

Me gustaría usar algunos campos como el tamaño del archivo y la fecha de creación en el hashing. ¿Es esa una forma posible o segura de hash?

En términos generales, no: eso no proporciona mucha información significativa. Estos elementos se denominan metadatos: son datos sobre datos y, bueno, son un conjunto diferente de datos por sí mismos. Cuando lo lee, confía implícitamente en el medio de almacenamiento (sistema de archivos) para proporcionarle información precisa. Esta es una suposición que es simplemente errónea, incluso si solo está tratando de protegerse contra cambios accidentales (no falsificaciones).

En casos específicos muy limitados, podría ser útil: por ejemplo, si tiene un archivo de registro creado en un servidor seguro, puede usar el tamaño del archivo / la última fecha de escritura para saber cuándo ha cambiado el archivo y, por lo tanto, saber si tienes que volver a analizarlo Pero esto implica que la información es correcta, actualizada y que tiene un estado anterior para compararla.

De una manera más general

Como Steffen insinuó, el hash puede ser realmente muy rápido: debe leer el archivo solo una vez y, a menos que esté trabajando con recursos muy limitados (sistemas integrados, etc.), el retraso introducido por el proceso de hashing debe ser Mínimo y mucho más pequeño que la propia operación de E / S en la mayoría de los casos (a menos que esté operando estrictamente desde la memoria). Como siempre, el demonio está en los detalles: no proporcionó ninguna información sobre lo que pretendía hacer, por lo que no hay manera de proporcionar una respuesta más útil.

    
respondido por el Stephane 24.11.2016 - 08:39
fuente

Lea otras preguntas en las etiquetas