Checksum vs. Hash: ¿Diferencias y similitudes?

2

¿Cuáles son similitudes y diferencias entre un "checksum" y una función "hash" ?

¿Se pueden usar en lugar de uno del otro? ¿O su uso es diferente?

Por ejemplo, para verificar la integridad de un texto, ¿cuál es mejor para usar?

Y si son diferentes, ¿cuáles son algoritmos específicos para cada uno? ¿Significa que el algoritmo es apropiado para "suma de comprobación" y cuál para la función "hash" ?

    
pregunta sas 27.09.2018 - 16:00
fuente

3 respuestas

3

Una suma de comprobación (como CRC32) es para evitar cambios accidentales . Si un byte cambia, la suma de control cambia. No es seguro proteger la suma de comprobación contra cambios maliciosos: es bastante fácil crear un archivo con una suma de comprobación en particular.

Una función hash asigna algunos datos a otros datos. A menudo se utiliza para acelerar las comparaciones o crear una tabla hash. No todas las funciones de hash son seguras y el hash no cambia necesariamente cuando los datos cambian.

Una función hash criptográfica (como SHA1) es una suma de comprobación segura contra cambios maliciosos. Es bastante difícil crear un archivo con un hash criptográfico específico.

Para hacer las cosas más complicadas, las funciones de hash criptográficas a veces se denominan simplemente funciones de hash.

    
respondido por el Sjoerd 27.09.2018 - 16:08
fuente
2
  

¿Cuáles son las similitudes y diferencias entre un algoritmo de "suma de comprobación" y una función "hash"?

Se utiliza una suma de comprobación para determinar si algo es lo mismo.

Si ha descargado un archivo, nunca puede estar seguro de si se corrompió de camino a su máquina. Puede utilizar cksum para calcular una suma de comprobación (basada en CRC-32) de la copia que tiene ahora y puede comparar con la suma de comprobación que el archivo debería tener . Así es como se verifica la integridad del archivo.

Se utiliza una función hash para asignar una fecha a otra fecha de tamaño fijo. Una función hash perfecta es inyectiva, por lo que no hay colisiones. Cada entrada tiene una salida fija.

Se utiliza una función de cifrado criptográfico para la verificación. Con una función hash criptográfica no debería poder calcular la entrada original.

Un caso de uso muy común es el hashing de contraseñas. Esto permite la verificación de una contraseña sin tener que guardar la contraseña en sí. Un proveedor de servicios solo guarda un hash de una contraseña y no puede calcular la contraseña original. Si la base de datos de hashes de contraseña se ve comprometida, un atacante no debería poder calcular estas contraseñas también. Este no es el caso, porque existen algoritmos fuertes y débiles para el hashing de contraseñas. Puede encontrar más sobre esto en este mismo sitio.

TL; DR:

Las sumas de verificación se utilizan para comparar dos piezas de información para verificar si dos partes tienen exactamente lo mismo.

Se utilizan

hashes (en criptografía) para verificar algo, pero esta vez, solo una parte tiene acceso a la fecha que se debe verificar, mientras que la otra parte solo tiene acceso al hash .

    
respondido por el Tom K. 27.09.2018 - 16:44
fuente
1

Básicamente son lo mismo, pero las sumas de comprobación tienden a ser más pequeñas (unos pocos bytes).

Integridad

Tanto las funciones hash como las sumas de comprobación se utilizan para verificar la integridad de los datos. Las funciones hash criptográficas son funciones hash para las que se desconoce una colisión. Es por esto que las funciones criptográficas de hash se usan para construir cosas como un MAC (ver más abajo).

Pérdida de información

Otra propiedad de las funciones hash y las sumas de comprobación es que la información se pierde durante el cálculo. Esto debe ser cierto si convierte algunos datos en una suma de comprobación / hash con menos bits. Esta es la razón por la que no puede volver a los datos originales con solo una suma de comprobación o un hash.

HMAC

Lo que creo que estás buscando es un MAC (Código de autenticación de mensaje). Dicho código se utiliza para detectar la manipulación de datos. La mayoría de las veces es solo una combinación de una función hash y algún valor secreto, como una contraseña. Véase también:

enlace

Contraseñas

Las contraseñas a veces se almacenan como un hash. Para verificar la contraseña, se calcula un hash de la contraseña que ingresa y se compara con el hash de la contraseña almacenada. Las sumas de comprobación no se utilizan para tales cosas porque generalmente son más cortas y más propensas a colisiones, lo que significa que puede probar contraseñas aleatorias y tiene la posibilidad de que su entrada tenga la misma suma de comprobación que la contraseña original.

Pero tenga en cuenta que el uso de funciones hash normales (resumen) no es la forma correcta de almacenar contraseñas. Debido a que se crean para digerir rápidamente los datos, los atacantes pueden romper esos hashes a altas velocidades. Los programadores deben usar una función hash diseñada para almacenar contraseñas, como bcrypt o Argon2.

Editar: ejemplos de algoritmos

Para responder a tu pregunta final sobre algoritmos específicos: consulta la página de Wikipedia que enumera las funciones de hash. Como mencioné anteriormente, son básicamente los mismos. En Wikipedia, las sumas de comprobación se enumeran como un subconjunto de funciones hash.

enlace

    
respondido por el Graa 27.09.2018 - 17:24
fuente

Lea otras preguntas en las etiquetas