1 votos

Descifrar y cifrar un archivo usando gpg sin volver a escribir la contraseña

[Aviso: mi problema es similar a este. Y relacionado con esto]

Básicamente quiero editar una forma simétrica cifrada presentada y, a continuación, cifrar de nuevo el uso de la misma frase de contraseña, sin la necesidad de volver a escribir.

Va como esto:

gpg --output $file_to_edit --decrypt $ecrypted_file
echo "Some edit" >> $file_to_edit
gpg --output $ecrypted_file --symmetric $file_to_edit

Ahora, gpg pregunta 3 veces la frase de paso (1 para el descifrado y 2 para el cifrado). Lo que me gustaría es que escriba la frase de contraseña de una sola vez (para el descifrado) y, si es correcta, utilice de nuevo para el cifrado. Hay una segura forma de hacer esto?

1voto

Xen2050 Puntos 2860

Hay varias opciones, pero todas ellas podría dejar con un archivo descifrado en el disco, a la espera de ser recuperados más tarde. Triturar incluso podría tener problemas de forma segura de borrar un archivo (si hay un registro de diario, redundante escribe / RAID, temporales, cachés, comprimido sistemas de ficheros) y un SSD podría cambiar de sectores en silencio también. Incluso el uso de un tmpfs sistema de ficheros está sujeto a ser escrito para intercambiar. Y el programa de edición que podría salir aún más temporales, archivos de caché. Si todo el sistema de archivos y el intercambio cifrado que ayuda mucho, pero entonces, ¿usted realmente necesita más de cifrado?

Si sólo estás de ahorro de texto básico (como contraseñas) me gustaría sugerir el uso de un programa como KeePass(X/XC), LastPass, etc. O un diferente método de cifrado, que cifra los archivos de eCryptfs, EncFS, o que cifra dispositivos como LUKS, o un TrueCrypt sucesor.


Pero sólo con GPG, puedes utilizar una de estas opciones

  • --passphrase-fd n
    Leer la frase de paso de descriptor de fichero n. Sólo la primera línea será lectura de descriptor de fichero n. Si utiliza 0 para n, la frase de paso será leer desde la entrada estándar STDIN. Esto sólo puede ser utilizado si sólo una frase de paso se suministra.

    Tenga en cuenta que esta contraseña se utiliza sólo si la opción --batch también ha ha sido dado. Esto es diferente de GnuPG versión 1.x.

  • --passphrase-file file
    Leer la frase de contraseña de archivo file. Sólo la primera línea se lee de archivo file. Esto sólo puede ser utilizado si sólo una frase de paso se suministra. Obviamente, una frase de contraseña se almacena en un archivo es de dudosa seguridad si otros usuarios pueden leer este archivo. No use esta opción si usted puede evitar . Tenga en cuenta que esta contraseña se utiliza sólo si la opción --lote también se le ha dado. Esto es diferente de GnuPG versión 1.x.

  • --passphrase string
    El uso de la cadena como la frase de contraseña. Esto sólo puede ser utilizado si sólo uno de los la contraseña es suministrado. Obviamente, esta es de muy dudosa seguridad en un sistema multi-usuario. No utilice esta opción si se puede evitar. Nota que esta contraseña se utiliza sólo si la opción --batch también ha sido dado. Esto es diferente de GnuPG versión 1.x.

Para las opciones anteriores, es probable que necesite ya sea --pinentry-mode loopback (permite la introducción de nueva información, por ejemplo un nombre de archivo nuevo si hay un conflicto) o --batch de lo contrario gpg sólo ignorar la frase de opciones y pedir al agente de una frase de paso (un error de la OMI). Esto podría ser útil también:

  • --passphrase-repeat n
    Especificar cuántas veces gpg solicitará una nueva frase de contraseña se repite. Esto es útil para ayudar a memorizar una frase de contraseña. Por defecto es 1 repetición.

Usted podría sólo escriba la frase de contraseña una vez y read / tienda en un shell/bash variable (digamos, $password), recordando más tarde con --passphrase="$password". Algo como

until gpg --pinentry-mode loopback --passphrase="$password" --output $file_to_edit $ecrypted_file;
do read -r password;
done

#Got out of the loop with a correct password, now
echo "Some edit" >> $file_to_edit

gpg --pinentry-mode loopback --passphrase="$password" --output $ecrypted_file --yes --symmetric $file_to_edit

(--yes sobrescribir)

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: