Is openssl aes-256-cbc cifrado seguro para la copia de seguridad externa

4

Tengo alrededor de 20000 archivos (alrededor de 9 GB), cada uno de los cuales está cifrado mediante el comando openssl enc -aes-256-cbc -in infile -out outfile -k mypassword . Cada archivo usa la misma contraseña. Mi versión de openssl es 1.1.0e .

¿Seré vulnerable a cualquier ataque conocido si hago una copia de seguridad de estos archivos en una ubicación remota? Si no, ¿cuáles son mis alternativas?

    
pregunta yasar 25.03.2018 - 23:34
fuente

1 respuesta

8

Nunca debe utilizar la utilidad de línea de comandos de OpenSSL para el cifrado de propósito general. En realidad, está diseñado solo como una prueba de las rutinas de cifrado internas de la biblioteca. Debido a esto, existen algunos problemas inherentes a su uso cuando se necesita verdadera confidencialidad e integridad:

  • Serás vulnerable a malleability ataques , ya que el modo CBC no está autenticado. Esto puede permitir que sus archivos se modifiquen de ciertas formas predecibles sin conocer la clave de cifrado.
  • Sin verificación de integridad significa que el descifrado con la clave incorrecta puede ser exitoso, a pesar de generar incoherencias corruptas. Las utilidades diseñadas para el cifrado de archivos le indicarán si la clave es incorrecta.
  • No se realiza el estiramiento de la clave, y la clave y la IV se derivan directamente de una función hash rápida única. Esto hace que los ataques de diccionario sean una amenaza mucho más grave.
  • El hash predeterminado utilizado para derivar la clave maestra es MD5, que está lejos de ser lo ideal. Es posible cambiar el hash, por ejemplo con -md sha512 , pero aún así no se utilizará el estiramiento de la clave.
  • No está bien probado. Para muchas versiones de OpenSSL, enc usando el cifrado en modo GCM funcionó, pero el descifrado no lo hizo. Esto podría incluso ser el caso.

Esto no es exclusivo del comando enc . La utilidad de línea de comandos OpenSSL tiene otros errores cuando uno intenta usarla para algo que no sea probar la biblioteca. Otro ejemplo es el comando s_client , que se usa para conectarse a un servidor a través de SSL o TLS, que no valida el certificado del objetivo. En general, no debe utilizar la utilidad OpenSSL . Solo usa GnuPG:

La única vez que usaría OpenSSL directamente es si tuviera que cifrar algo con una clave completamente aleatoria o una clave sin formato específica y IV y no me importó la integridad del mensaje. Por ejemplo, escribir una secuencia pseudoaleatoria sembrada por el kernel a la salida estándar se puede hacer con:

openssl aes-128-ctr -nosalt -k $(xxd -l16 -c16 -ps /dev/urandom) -in /dev/zero

Del mismo modo, descifrar un blob de datos encriptados cuando conoce tanto la clave bruta como la IV bruta en hexadecimal (evitando la necesidad de -md para la derivación de la clave) podría hacerse con:

openssl aes-128-cbc -d -nosalt -K $hex_key -iv $hex_iv -in infile -out outfile

¿Pero para el cifrado de archivos de propósito general? Solo usa GnuPG.

    
respondido por el forest 26.03.2018 - 00:19
fuente

Lea otras preguntas en las etiquetas