¿Cómo soluciono "ADVERTENCIA: el mensaje no estaba protegido por integridad" cuando utilizo el cifrado simétrico GPG?

45

Cifré un archivo usando cifrado simétrico como este:

gpg --symmetric myfile

que da como resultado un archivo myfile.gpg.

Bien. Ahora desencriptemos el archivo nuevamente:

gpg -o myfile --decrypt myfile.gpg

Me piden la frase de contraseña que puse, y luego veo

gpg: CAST5 encrypted data
gpg: encrypted with 1 passphrase
gpg: WARNING: message was not integrity protected

No estoy seguro de la primera y última línea allí.

  • ¿Cuál es el cifrado CAST5 y es seguro? Sé 3DES y AES y sé que esos son seguros.
  • ¿Por qué no está protegido por integridad?
  • Y además, ¿cómo soluciono esto?
gertvdijk
fuente
Por cierto, solo puede gpg -c myfilecifrar y gpg myfile.gpgdescifrar, la salida se descifrará myfilede forma predeterminada.
cprn
1
@CyprianGuerra gpg myfile.gpgdará como resultado una salida descifrada enviada a stdout en mi sistema ...
gertvdijk
Interesante. Lo tengo en los valores predeterminados ...
cprn
Descargué la GUI desde aquí y descifré el archivo usándolo. ¡Funcionó! pgptool.github.io
Iftikhar Ahmad Dar

Respuestas:

69

Antecedentes

CAST-5 es un algoritmo de cifrado más antiguo utilizado por GnuPG porque AES aún no existía en el momento en que GnuPG se creó inicialmente como fuente . No se usa ampliamente (aparte de GnuPG por razones de compatibilidad).

Esto WARNING: message was not integrity protectedse debe a que esta función no está activada de manera predeterminada en el momento del cifrado. Si esto estaba activado, GnuPG podría decir si el archivo ha sido alterado en tránsito.

Actualización: las versiones modernas de GnuPG incluidas con Ubuntu / Debian ahora tienen MDC habilitado de forma predeterminada y nunca debería volver a ver este mensaje para nada firmado con estas versiones más nuevas.

Soluciones

Para utilizar un AES-256 más fuerte, debe especificarlo en la línea de comando o en su archivo de configuración.

  • Línea de comando: agregue la --cipher-algo AES256opción para que la línea completa para encriptar se convierta

    gpg -o myfile.gpg --cipher-algo AES256 --symmetric myfile
    
  • Archivo de configuración (recomendado): agregue la siguiente línea a su ~/.gnupg/gpg.confarchivo de configuración.

    cipher-algo AES256
    

    Recomiendo este enfoque porque se usará para todas las futuras operaciones de GPG en esta cuenta de usuario.

No hay nada que cambiar para que el usuario descifre el archivo: GnuPG lo detectará automáticamente.

Tenga en cuenta que al usar el cifrado AES-256, el mensaje se protege automáticamente por integridad. Para habilitar manualmente la protección de integridad en otros cifrados para los que esto no está habilitado (como CAST-5), agregue la --force-mdcopción al cifrar.

Aún mejor: ¡firme!

Un enfoque aún mejor sería firmar sus archivos con su par de claves (si lo tiene). Simplemente agregue la --signopción al comando de cifrado, de esta manera:

gpg -o myfile.gpg --cipher-algo AES256 --sign --symmetric myfile

Esto no solo validará la integridad del archivo, sino que también hará posible que el destinatario del archivo verifique el origen. Cualquier alteración en el archivo tendría la verificación de firma para fallar.

gertvdijk
fuente
¿No necesito un certificado para firmar?
bilal fazlani
@bilalfazlani para firmar necesitará un par de llaves GnuPG, sí. No es necesario hacerlo público si no lo desea. Simplemente comparta la clave pública con los compañeros con los que comparte los archivos cifrados y ellos deben verificar la huella digital de la clave con usted.
gertvdijk
Gracias por la respuesta detallada. ¿Puedes explicar más sobre cómo usar el par de llaves?
ben-Nabiy Derush
"el mensaje no estaba protegido por integridad" ocurre en el lado del destinatario y usted le dice cómo solucionarlo en el lado del remitente. La cuestión es cómo hacer caso omiso de la cuestión en el lado receptor sea capaz de descifrar los mensajes más antiguos (en enigmail)
ensonic
@ ben-NabiyDerush Estos dos artículos pueden aclarar sus preguntas sobre cómo (y por qué) usar un par de claves público y privado. Criptografía de clave pública . Web of Trust
jpaugh