¿Cómo debo cambiar el cifrado de acuerdo con *** ADVERTENCIA: derivación de clave obsoleta utilizada

15

Cuando cifro o descifro un archivo obtengo *** WARNING : deprecated key derivation used. Using -iter or -pbkdf2 would be better.

No entiendo lo que esto significa, cómo debo cambiar mis procedimientos. ¿Usted me podría ayudar? Cifro openssl des3 <input >output.des3y descifro con openssl des3 -d <input.des3 >output

Acerca del medio ambiente

Ubuntu 18.10

~$ openssl version OpenSSL 1.1.1 11 Sep 2018

Tommy Pollák
fuente
1
3DES como método de encriptación está siendo retirado. La advertencia solo sugiere que use otro método, tal vez consulte crypto.stackexchange.com/questions/51629/… para obtener más detalles.
guiverc
1
Ese error ocurre para cualquier tipo de cifrado. Debe agregar -pbkdf2 a los comandos de cifrado y descifrado.
Daniele Dellafiore
Lo sentimos, pero ¿podría dar un ejemplo de cómo agregar -pbkdf2 a los comandos? No entiendo cómo debería agregarse.
Tommy Pollák
1
En su ejemplo, solo necesita hacer openssl des3 -e -pbkdf2 < input > output.des3y openssl des3 -d -pbkdf2 < input.des3 > output. También estoy de acuerdo con el primer comentario de que debe usar un cifrado de bloque diferente en lugar de 3DES (DES es de 1977), una forma fácil de hacerlo es cambiar aes256donde tiene actualmente des3esos comandos, usar AES ( AES de 256 bits cumple con los estándares de seguridad actuales).
joelhardi
¡Gracias! Ahora funciona y sin advertencias utilizando aes256. Entonces la pregunta es respondida.
Tommy Pollák

Respuestas:

12

Comparando las sinopsis de las dos versiones principales y recientes de OpenSSL, permítanme citar las páginas del manual.

OpenSSL 1.1.0

openssl enc -ciphername [-help] [-ciphers] [-in filename] [-out filename] [-pass arg] [-e] [-d] [-a/-base64] [-A] [-k password] [-kfile filename] [-K key] [-iv IV] [-S salt] [-salt] [-nosalt] [-z] [-md digest] [-p] [-P] [-bufsize number] [-nopad] [-debug] [-none] [-engine id]

OpenSSL 1.1.1

openssl enc -cipher [-help] [-ciphers] [-in filename] [-out filename] [-pass arg] [-e] [-d] [-a] [-base64] [-A] [-k password] [-kfile filename] [-K key] [-iv IV] [-S salt] [-salt] [-nosalt] [-z] [-md digest] [-iter count] [-pbkdf2] [-p] [-P] [-bufsize number] [-nopad] [-debug] [-none] [-rand file...] [-writerand file] [-engine id]

Obviamente hay algunas diferencias mayores, es decir, considerando esta pregunta, faltan estos dos interruptores en el 1.1.0:

  • pbkdf2

  • iter


Tienes básicamente dos opciones ahora. Ignore la advertencia o ajuste su comando de cifrado a algo como:

openssl enc -aes-256-cbc -md sha512 -pbkdf2 -iter 100000 -salt -in InputFilePath -out OutputFilePath

Donde estos interruptores:

  • -aes-256-cbces lo que debe usar para obtener la máxima protección o la versión de 128 bits, el 3DES (Triple DES) se abandonó hace algún tiempo, vea que Triple DES ha quedado en desuso por parte de NIST en 2017 , mientras que AES es acelerado por todas las CPU modernas por mucho; simplemente puede verificar si su CPU tiene el conjunto de instrucciones AES-NI, por ejemplo, utilizando grep aes /proc/cpuinfo; ganar ganar

  • -md sha512 es la variante más rápida de la familia de funciones SHA-2 en comparación con SHA-256, aunque podría ser un poco más segura; ganar ganar

  • -pbkdf2: utilice el algoritmo PBKDF2 (función de derivación de clave basada en contraseña 2)

  • -iter 100000 está anulando el recuento predeterminado de iteraciones para la contraseña, citando la página de manual:

    Use un número dado de iteraciones en la contraseña para derivar la clave de cifrado. Los valores altos aumentan el tiempo requerido para aplicar fuerza bruta al archivo resultante. Esta opción permite el uso del algoritmo PBKDF2 para derivar la clave.

LinuxSecurityFreak
fuente
1
Entonces, cómo descifrarlo cuando se usa openssl enc -aes-256-cbc -md sha512 -pbkdf2 -iter 1000 -salt -in InputFilePath -out OutputFilePath
l mingzhi
1
Simplemente agregando -dal comando:openssl enc -aes-256-cbc -md sha512 -pbkdf2 -iter 1000 -salt -d -in InputFilePath
Eduard Itrich
1
Estoy bastante seguro de que hay algunos problemas con esta sugerencia. Según en.wikipedia.org/wiki/Key_derivation_function , desea la variante más lenta del algoritmo de derivación de clave. En otras palabras, no use sha512 Según en.wikipedia.org/wiki/PBKDF2 in the year 2000 the recommended minimum number of iterations was 1000, but the parameter is intended to be increased over time as CPU speeds increase - así que recomiendo alguna parte entre 10.000 y 100.000 iteraciones en lugar de 1000.
oskarpearson
@oskarpearson Cierto, lo he leído hace un momento. Actualizando respuesta.
LinuxSecurityFreak
@oskarpearson ¿Qué hash me recomiendan entonces?
Anthony