Hash de huellas dactilares

2

A los efectos de la toma de huellas dactilares, los datos con la menor probabilidad de colisión combinarán la longitud (como un entero sin signo de 32 bits almacenado además del hash) de los datos de entrada y / o muestreando algunos bytes de la entrada, fortalecen significativamente la salida resultante combinada con el hash?

Por ejemplo:

sha256(data) + length + first_2_bytes_of_data = 304 bits

Nota: (actualizado )

  • La privacidad de los datos de entrada no es primordial, más la capacidad de detectar si los datos han cambiado.
  • También utilizo una función hash de 256 bits en este ejemplo, pero la pregunta es menos acerca de la elección final de la función hash y más acerca de cómo agregar la ayuda de 6 bytes adicionales.
  • La longitud en bytes de los datos de entrada siempre será variable pero siempre menor o igual a 2 a la potencia de 32.
  • La salida resultante se usará para la verificación de integridad y como clave de diccionario para hasta 2 ^ 64 elementos (si la colisión de la clave se considera poco práctica o imposible)
pregunta Bernie White 21.06.2012 - 10:54
fuente

4 respuestas

5

No, agregar esa información complementaria no ayuda realmente a fortalecer la resistencia a las colisiones, para una función hash criptográficamente segura como SHA-256 ya tiene en cuenta la longitud (a través de la inclusión explícita en el relleno, consulte §5.1.1, página 13 de FIPS 180-3 standard ), así como cada bit de los datos de entrada para calcular el resumen. No hay colisión conocida para SHA-256 ni existe un método prometedor conocido públicamente para encontrar una.

    
respondido por el cryptopathe 21.06.2012 - 16:45
fuente
1
Se cree que

SHA-256 es una construcción hash segura, y es el estándar de facto para hashes criptográficos fuertes . No agregará ninguna seguridad adicional agregando la longitud o unos pocos bytes, ambos pueden imitarse fácilmente (mientras que el hash SHA-256 no puede).

Incluir la longitud del mensaje tiene una ventaja práctica: cuando encuentra un mensaje con el hash incorrecto e intenta investigar si puede ser un problema accidental, saber la longitud puede ayudar a dirigir su investigación hacia un mensaje truncado. , o ciertos tipos de corrupción típica (por ejemplo, un mensaje que debería ser datos comprimidos y es aproximadamente 1 / 256th por mucho tiempo puede haber convertido sus nuevas líneas de formato unix a formato de Windows como si hubiera sido texto).

Incluir los dos primeros bytes del mensaje es casi completamente inútil. Es inútil para la seguridad y rara vez es útil para la depuración, excepto ocasionalmente para detectar que envió el mensaje en el formato incorrecto. Podría ser útil verificar que el mensaje parece estar en el formato deseado, pero esto generalmente requiere algunos bytes más, y un tipo MIME o una indicación de formato similar serviría mejor para este propósito.

    
respondido por el Gilles 21.06.2012 - 19:32
fuente
0

Todas las funciones de hash que toman una entrada de longitud arbitraria tienen colisiones, eso es lo que es una función de hash. De hecho, dada la distribución equitativa de los valores dentro de la salida del hash y un rango infinito de entradas, también es posible que haya un número infinito de entradas en colisión para cualquier valor de hash dado.

Idealmente, esas colisiones son raras y pocas veces se ven, pero es significativamente menos probable que dos cuerdas en colisión tengan la misma longitud.

Por lo tanto, tiene mucho sentido usar el hash más la longitud para identificar de forma única una cadena, y tampoco eres la primera persona en pensar eso. Sin embargo, esos dos elementos solos son probablemente suficientes. La inclusión de cualquier "texto sin formato" del contenido en sí probablemente no agregue ningún valor medible.

    
respondido por el tylerl 23.06.2012 - 08:35
fuente
-2

Parece una excelente manera (mecanismo) para reducir / minimizar las posibilidades de colisión de hash. No estoy muy seguro de las características y especificación de los algoritmos hash; Matemáticamente hay algunas preocupaciones:

  1. si 2 datos del mismo tamaño que tienen la misma longitud con los primeros 2 bytes producen el mismo hash, la lógica fallará y la detección de manipulación de datos por parte del receptor fallará. Sí, el hecho de que AFAIK tenga tal conjunto de datos no es prácticamente posible, e incluso si alguien los encuentra, dichos datos no tendrán ningún caso comercial.
respondido por el Mohit Sethi 21.06.2012 - 13:37
fuente

Lea otras preguntas en las etiquetas