Pregunta gpg cifrado simétrico utilizando tuberías


Estoy intentando generar claves para bloquear mi disco (usando DM-Crypt con LUKS) extrayendo datos de /dev/random y luego encriptar eso usando GPG.

En la guía que estoy usando, sugiere usar el siguiente comando:

dd if=/dev/random count=1 | gpg --symmetric -a >./[drive]_key.gpg

Si lo haces sin una tubería, y le das de comer un archivo, aparecerá un aviso de (n?) Maldiciones para que ingreses una contraseña. Sin embargo, cuando canalizo los datos, repite el siguiente mensaje cuatro veces y se queda allí congelado:

pinentry-curses: no LC_CTYPE known assuming UTF-8

También dice can't connect to '/root/.gnupg/S.gpg-agent': File or directory doesn't existSin embargo, supongo que esto no tiene nada que ver con esto, ya que aparece incluso cuando la entrada proviene de un archivo.

Así que supongo que mi pregunta se reduce a esto: ¿hay alguna manera de forzar a gpg a aceptar la frase de contraseña desde la línea de comando, o de alguna otra manera hacer que esto funcione, o tendré que escribir los datos desde /dev/random a un archivo temporal, y luego encriptar ese archivo? (Que por lo que sé debería estar bien debido al hecho de que estoy haciendo esto en el LiveCD y aún no he creado el intercambio, por lo que no debería haber forma de que se escriba en el disco).


4


origen


gpg --no-use-agent debería decirle a gpg que no use un programa de agente, y acepte la frase de contraseña escrita en la terminal ... al menos en gpg 1.x, esa versión todavía parece utilizada en las versiones actuales de Ubuntu & Mint - Xen2050


Respuestas:


Asegúrate de tener el tty:

# ls -l $(tty)
crw--w----. 1 foo tty 136, 0 Mar  1 16:53 /dev/pts/0
# chown root $(tty)

Establezca GPG_TTY:

# export GPG_TTY=$(tty)

gpg / pinentry debería funcionar después de estos pasos.


10



¡Muchas gracias! Esto me ayudó a conectarme a gpg manualmente, y también solucionó un problema que estaba teniendo con el cliente de la línea de comandos de la base de datos, que se conecta a gpg detrás de escena. - ajk


Bueno ... al final, decidí simplemente escribir en un archivo, y luego encriptar ese archivo, suponiendo que como no había intercambio, y el sistema de archivos estaba en memoria RAM, que moriría con el siguiente apagado.

Sin embargo, para la referencia de cualquiera que encuentre esta pregunta (y para cimentar la idea en mi cabeza), escribiré un procedimiento que encontré que funcionaría mucho después de que me enterara al crear el initramfs.

Lo que necesita hacer es volver a una versión de gpg antes de que comenzaran a usar el programa de entrada de contraseña externo para ingresar la contraseña. Por lo que sé, eso sucedió con la versión 2. Suponiendo que tenga una instalación de Linux que esté funcionando actualmente, querrá obtener una versión compilada estáticamente de gpg <2.0.

Esto es extremadamente fácil de hacer con Gentoo, solo requiere el siguiente comando:

USE="static" emerge -a1 "<gnupg-2"

Solo asegúrate de usar ldd para confirmar que, de hecho, son estáticos antes de copiarlos a su memoria USB para que pueda usarlos durante la instalación.

En otras distribuciones, sugiero que busque @ su gestor de paquetes, y si eso no funciona, entonces intentaré descargar las fuentes y compilar a partir de ellas.


3