¿El rango del parámetro s2k-count en GPG sigue siendo adecuado?

2

En el manual: el parámetro s2k-count especifica cuántas veces se repite la modificación de la contraseña para el cifrado simétrico. Este valor puede oscilar entre 1024 y 65011712 inclusive.

Al parecer, en muchas distribuciones de Linux, el valor predeterminado es 65536 (solo marcado en la mía).

Aparentemente, todos estos valores (rango y predeterminado) se definieron hace varios años, en un momento en que las computadoras eran mucho más lentas. Intenté crear un archivo cifrado utilizando el mayor valor posible (65011712), y descifrar toma una fracción de segundo en mi PC de todos modos. El valor predeterminado (65536) me parece demasiado pequeño.

¿Por lo tanto, estos valores siguen siendo adecuados hoy, y por cuánto tiempo seguirán siendo significativos antes de que se necesite una modificación de GPG?

    
pregunta reed 13.09.2018 - 20:28
fuente

1 respuesta

2

El valor predeterminado hoy es la mitad de la recomendación mínima de hace 20 años . *

El algoritmo específico de fortalecimiento de clave utilizado es S2K con sal e iterado , que combina la contraseña de entrada Y la sal y la repite numerosas veces, picando la concatenación. El valor de conteo real que está utilizando es el número de bytes para continuar el hashing, por lo que el valor más alto de hash es solo alrededor de 65 MB de datos. El valor predeterminado de 65536 es bastante bajo. Cada bloque de hash SHA-256 tiene un tamaño de 64 bytes, y PBKDF2 usa la construcción HMAC que llama a SHA-256 dos veces por cada iteración (procesando 128 bytes), por lo que la fuerza predeterminada es equivalente a solo 512 invocaciones de la función hash. Obviamente, cualquier KDF que utilice pocas iteraciones de hash no será particularmente seguro. El valor máximo de 65011712 es equivalente a más de 500,000 iteraciones de hash, lo que es mejor.

El problema no es solo que el valor sea demasiado bajo, pero que no sea duro en la memoria. Esto significa que es muy fácil paralizar masivamente los intentos de craqueo sin correr con las limitaciones de memoria. Este es el mismo problema que tiene PBKDF2. Una alternativa adecuada sería una función de memoria dura como Argon2 , pero GnuPG no lo admite. Por desgracia, se limita a S2K. Debes usar una contraseña más fuerte.

* Estoy comparando PBKDF2 y S2K. La recomendación mínima de las iteraciones de PBKDF2 fue de 1k en 2000. Si cada iteración es equivalente a dos SHA de 64 bytes -256 hashes, entonces podemos considerar que el recuento de S2K dividido por 128 es aproximadamente igual a una sola iteración de PBKDF2. Como tal, 65536/128 = 512, aproximadamente la mitad de la recomendación de 2000.

    
respondido por el forest 14.09.2018 - 03:04
fuente

Lea otras preguntas en las etiquetas