¿Qué es exactamente inseguro en el uso de openssl AES con una contraseña? [duplicar]

-1

Una respuesta sobre el cifrado AES comienza con un descargo de responsabilidad:

  

Tenga en cuenta: puede usar esto para ocultar birthday-gift-ideas.txt de su compañero de habitación, ¡pero no espere que esté seguro contra un atacante determinado!

¿Qué hace que no sea seguro usarlo para evitar que personas no autorizadas lean el archivo?

Supongo que este comentario La respuesta es relevante, pero no estoy seguro de tener las habilidades necesarias para entenderlo, y tampoco sé qué más debo hacer para garantizar la encriptación:

  

-1 Para recomendar el uso de OpenSSL de bajo nivel. No proporciona ninguna funcionalidad HMAC y, como señala @Lekensteyn, carece de KDF adecuado.

En otras palabras:

  • Si tengo una contraseña segura generada al ejecutar cat /dev/urandom | tr -dc a-fA-Z0-9 | head -c 45 ,

  • Y uno asumiría que la contraseña se mantiene segura,

¿cómo puedo cifrar un archivo mientras me aseguro de que un atacante determinado no podrá descifrarlo?

Aquí hay un ejemplo concreto. Estoy haciendo copias de seguridad fuera del sitio en un servidor en la nube. Antes de ser cargados, los archivos de copia de seguridad se cifran localmente mediante una contraseña generada desde /dev/urandom , y la contraseña nunca se almacena en el servidor de la nube. ¿Es openssl aes-256-cbc -in ... -out ... -pass file:1.key inapropiado para evitar que alguien de la empresa que hospeda el servidor en la nube pueda ver el contenido de la copia de seguridad?

    
pregunta Arseni Mourzenko 20.09.2018 - 13:28
fuente

1 respuesta

1

Uno de los problemas con el uso de OpenSSL AES-256 CBC es que no detecta si el texto cifrado ha sido alterado. Por lo tanto, si cifra un archivo y lo coloca en el servidor en la nube, el proveedor de alojamiento no puede leer el archivo original, pero puede alterar el texto cifrado. Esto se puede hacer de forma un tanto predecible para que cuando recupere el archivo cifrado y lo descifre, contenga otra cosa.

La propiedad en la que puede confiar que el contenido sea el mismo se llama integridad del mensaje. Usar una HMAC es una forma de proporcionar integridad: hash el mensaje cifrado antes de enviarlo al servidor de la nube. Cuando lo recuperas, verificas este hash nuevamente y sabes si el texto cifrado ha sido alterado.

Además, los esquemas de encriptación están hechos para trabajar con claves y no con contraseñas. Estos difieren en que las claves son cadenas de 16 caracteres de apariencia bastante aleatoria, mientras que las contraseñas son palabras elegidas por el usuario. Una función de derivación de clave (KDF) puede convertir una contraseña en una clave.

    
respondido por el Sjoerd 20.09.2018 - 15:45
fuente

Lea otras preguntas en las etiquetas