BLAKE2b 256 o 512?

0

Me gustaría usar una función hash para la comprobación de integridad de archivos y estoy influenciado por la elección de BLAKE2b como la función hash predeterminada en Sodio . Mi biblioteca me da la opción de elegir resúmenes entre 8 y 512 bits de largo. Supongo que 256 o 512 bits estarían bien, pero como tengo la opción, ¿qué factores debo considerar? ¿Hay alguna razón para no elegir 512?

    
pregunta David Braun 20.09.2016 - 22:02
fuente

2 respuestas

1

Básicamente se trata de dos parámetros, rendimiento y seguridad .

  • Seguridad: en RFC 7693 , puede ver la diferencia de defensa de colisión de la siguiente manera:

            Algorithm | Target | Collision | Hash | Hash ASN.1 |
           Identifier |  Arch  |  Security |  nn  | OID Suffix |
       ---------------+--------+-----------+------+------------+
        id-blake2b160 | 64-bit |   2**80   |  20  |   x.1.5    |
        id-blake2b256 | 64-bit |   2**128  |  32  |   x.1.8    |
        id-blake2b384 | 64-bit |   2**192  |  48  |   x.1.12   |
        id-blake2b512 | 64-bit |   2**256  |  64  |   x.1.16   |
       ---------------+--------+-----------+------+------------+
        id-blake2s128 | 32-bit |   2**64   |  16  |   x.2.4    |
        id-blake2s160 | 32-bit |   2**80   |  20  |   x.2.5    |
        id-blake2s224 | 32-bit |   2**112  |  28  |   x.2.7    |
        id-blake2s256 | 32-bit |   2**128  |  32  |   x.2.8    |
       ---------------+--------+-----------+------+------------+
    
  • Rendimiento: necesita comparar con muchos otros algoritmos para averiguar cuánto afectará este factor al rendimiento de su dispositivo. aquí puede encontrar sitios de evaluación comparativa con casi todos los algoritmos y tipos de CPU.

Después de todo, siempre se recomienda usar tamaños más grandes, y el único escenario que podría afectar su rendimiento es si está instalando esto en un chip de hardware de CPU muy limitado. "FPGA por ejemplo"

PS : es posible que necesites revisar this para el problema de configuración de Blake2.

    
respondido por el Emadeddin 21.09.2016 - 10:00
fuente
1

El tamaño del bloque BLAKE2 es constante, independientemente del tamaño de salida. El estado final simplemente se trunca al tamaño de salida deseado. Por lo tanto, el tamaño de salida no afecta el rendimiento.

Cualquier tamaño de salida > = 160 bits garantizará la resistencia a la colisión. 256 bits es una opción conservadora, que también agrega un margen de seguridad cómodo si alguna vez la función tiene un pequeño sesgo.

Los tamaños de salida más grandes son útiles; La derivación clave es un caso de uso común. Pero no son necesarios para la resistencia a la colisión.

Con libsodium, simplemente puede escribir crypto_generichash_BYTES para referirse al tamaño de salida recomendado.

    
respondido por el Frank Denis 01.02.2018 - 10:04
fuente

Lea otras preguntas en las etiquetas