¿Cómo verifico un archivo GPG cifrado simétricamente?

¿Cómo verifico un archivo GPG cifrado simétricamente?

Creé un archivo cifrado con cifrado simétrico.

gpg -c 50GBfile

Ahora quiero borrar el original. Antes de eliminar el original, quiero verificar la integridad del archivo cifrado. (Similar a la forma en que los archivos ZIP usan CRC). ¿Ofrece gpg una forma de verificar el contenido de archivos cifrados simétricamente?

Respuesta1

Si cifró el archivo con gpg -c, entonces no hay forma de verificar qué contiene el archivo sin conocer la frase de contraseña. Esa es una propiedad fundamental del cifrado simétrico. Como de todos modos necesitarás proporcionar la frase de contraseña, haz la prueba real: descomprime el archivo y compáralo con el original. En Linux u otra variante de Unix:

gpg -d <50GBfile.gpg | cmp - 50GBfile

Si desea una garantía adicional de integridad, puede firmar el archivo con su clave privada agregando la -sopción al cifrar el archivo.

gpg -c -s 50GBfile

Luego puedes verificar la firma con gpg --verify 50GBfile.gpg. Tenga en cuenta que esto solo garantiza que el archivo es uno de los archivos que ha firmado, esto no lo protege contra un error por el cual firmó el archivo incorrecto.

Si utilizó cifrado asimétrico (con la clave pública del destinatario, su propia clave pública), verificar que el archivo tenga el contenido deseado requeriría la clave privada del destinatario. Con varios destinatarios, la clave privada de cualquier destinatario sería suficiente. Por lo general, colocaría su propia clave como destinatario de todos los mensajes cifrados, con encrypt-too hidden-encrypt-toen el archivo de configuración GPG.

Respuesta2

La única operación de "verificación" en gnupg es la verificación de firma., que básicamente cifra elpicadillodel archivo cifrado con una clave pública (=signo).

En mi opinión, esto significa que si los bits de salida se dañan mientras se cifra el archivo, el hash se calculará con respecto alarchivo dañado. Nunca descubrirás esto al verificar elfirmade ese archivo desde que firmó un archivo ya dañado.

Parece que la única forma de verificar positivamente un archivo cifrado contra la corrupción es pasar por el largo proceso de descifrar el archivo generado y comparar su hash con el original.

Y esto es lo que Sepero ofreció arriba, pero en lugar de"Podrías verificar..."debería ser"Elsolomanera de verificar..."

Actualización: para aclarar el punto:

Hace unos minutos hice precisamente eso: dividir un archivo de respaldo de 9,8 GB en 5 partes rar, y cada parte encriptada simétricamente por gnupg. Antes de eliminar las piezas rar, verifiqué la integridad de las piezas cifradas como mencioné anteriormente: 1 de cada 5 no pasó la prueba de hash. Descifré nuevamente esa pieza, y ahora el hash de la pieza descifrada coincidió con la pieza rar original.

Comparé binariamente la parte rar mal descifrada con la buena descifrada, y la única diferencia en esos archivos de 2 GB fue un byte: C8 frente a 48, que es causado por un cambio de 1 bit (es decir, 11001000 frente a 01001000).

La moraleja de la historia es que si, en un buen sistema WIN7 y un buen disco duro, gnupg puede cambiar un poco el descifrado, también podría hacerlo con el cifrado. Nunca más me saltaré este paso de verificación de integridad.

Respuesta3

Puede verificarlo extrayendo y comparando md5sum con el original.

$ gpg -d 50GBfile | md5sum
gpg: AES256 encrypted data
gpg: gpg-agent is not available in this session
gpg: encrypted with 1 passphrase
1df1aaffb20c5255e282d6f584489993  -
$ md5sum 50GBfile
1df1aaffb20c5255e282d6f584489993  50GBfile

Respuesta4

En caso de que desee verificar la integridad, debefirmarel archivo original también.

gpg --encriptar --firmararchivo

Finalmente puedes verificar la integridad (basada en la firma) descifrando el archivo (la integridad se verifica automáticamente)

gpg --descifrararchivo.asc

información relacionada