¿Puede el hashing de un archivo alterar el archivo?

3

¿Es una función hash una función de RO o habrá una posibilidad de que la función hash altere el archivo (como parte de la función o en caso de accidente) de que está haciendo hashing?

    
pregunta Timothy Wong 18.02.2017 - 13:07
fuente

4 respuestas

9

Una función hash funciona con datos, es decir, datos de entrada y salida. Si los datos provienen de un archivo o red o similar y si se escriben en un archivo o en algún otro lugar, no tiene nada que ver con la función hash en sí, sino con un programa que utiliza esta función hash para un propósito particular. Este propósito puede ser imprimir solo el valor hash resultante en la salida estándar sin modificar el archivo de entrada. Pero una función hash también se puede usar en el proceso de agregar una firma a alguna sección de un archivo, en cuyo caso el archivo se modifica.

    
respondido por el Steffen Ullrich 18.02.2017 - 14:06
fuente
5

En el caso general, crear un hash de un archivo no modificará el archivo original.

Por ejemplo, en linux, el comando md5sum se puede usar para crear un hash de un archivo.

user@host:/etc$ md5sum /etc/hosts d060f54470d55f7c02e639ed92bff5d3 /etc/hosts

el hash se imprime de nuevo en la pantalla y no modifica el archivo original.

    
respondido por el Rоry McCune 18.02.2017 - 13:15
fuente
2

Hay dos partes en un archivo: el contenido del archivo (incluidos los flujos primarios y alternativos) y los metadatos sobre el archivo. Hashing un archivo no cambiará el contenido del archivo, pero puede cambiar los metadatos del archivo. Entonces, si tu intención era obtener el hash de un archivo y que nadie te supiera que lo has hecho, entonces los metadatos podrían revelarlo. Como ejemplo en Windows, cuando accede a un archivo, termina cambiando la última fecha de acceso del archivo.

    
respondido por el Itsme2003 18.02.2017 - 21:01
fuente
1

Preguntó si podría alterarlo en un accidente ... sí, pero tendría que ser un gran accidente (o un codificador muy malicioso y muy estúpido).

Un programa que hace un hash de un archivo necesita leer ese archivo. Esto significa que tiene que abrirlo. Los archivos deben estar abiertos para leer o escribir o ambos. No se puede escribir en un archivo abierto para leer. Un archivo abierto para escritura no puede ser leído. Así que es extremadamente improbable que este tipo de error ocurra, y mucho menos que pase las pruebas más básicas.

OTOH un codificador malintencionado podría intentar alterar su archivo. Este es un ataque extremadamente improbable ya que será cegadoramente obvio lo que sucedió, y también cegadoramente obvio en el código. Ese código no duraría mucho.

Puede protegerse contra esto con permisos de archivo, hacer que el archivo sea de solo lectura y el programa no pueda escribir en él (algunos sistemas operativos y sistemas de archivos pueden permitir que el propietario del archivo o el superusuario escriban de todos modos). Sin embargo, si el programa es ejecutado por el propietario del archivo, el programa puede cambiar los permisos del archivo, alterarlo y volver a cambiarlo. Eso incluye todos sus metadatos. Como dije, este tipo de código malintencionado extremadamente fácil de detectar y extremadamente improbable que exista en la naturaleza.

La verdadera respuesta es usar un software criptográfico bien probado, revisado y bien probado, y no algo que haya copiado de Internet.

    
respondido por el Schwern 18.02.2017 - 22:26
fuente

Lea otras preguntas en las etiquetas