Вопрос gpg симметричное шифрование с использованием труб


Я пытаюсь сгенерировать ключи для блокировки моего диска (используя DM-Crypt с LUKS), потянув данные из /dev/random а затем шифрование, использующее GPG.

В руководстве, которое я использую, предлагается использовать следующую команду:

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

Если вы делаете это без трубы и подаете файл, он выдает подсказку (n?) Curses для ввода пароля. Однако, когда я транслирую данные, он четыре раза повторяет следующее сообщение и сидит там:

pinentry-curses: no LC_CTYPE known assuming UTF-8

Он также говорит can't connect to '/root/.gnupg/S.gpg-agent': File or directory doesn't exist, однако я предполагаю, что это не имеет к этому никакого отношения, поскольку оно появляется даже тогда, когда вход из файла.

Поэтому я предполагаю, что мой вопрос сводится к следующему: есть ли способ заставить gpg принять кодовую фразу из командной строки или каким-то другим способом заставить ее работать, или мне придется записывать данные из /dev/random во временный файл, а затем зашифровать этот файл? (Что, насколько я знаю, должно быть в порядке из-за того, что я делаю это на LiveCD и еще не создал своп, поэтому не должно быть никакого способа записать его на диск.)


4
2018-06-03 03:49


происхождения


компании GPG --no-use-agent должен указывать gpg, чтобы не использовать программу-агент, и принять кодовую фразу, введенную в терминал ... по крайней мере в gpg 1.x, эта версия по-прежнему используется в текущих выпусках Ubuntu & Mint - Xen2050


ответы:


Убедитесь, что у вас есть tty:

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

Установите GPG_TTY:

# export GPG_TTY=$(tty)

gpg / pinentry должен работать после этих шагов.


10
2017-07-18 20:25



Большое спасибо! Это помогло мне подключиться к gpg вручную, а также устранить проблему, с которой я столкнулся с клиентом командной строки keybase, который подключается к gpg за кулисами. - ajk


Ну ... в конце концов, я решил просто записать в файл, а затем зашифровать этот файл, предположив, что, поскольку не было обмена, и файловая система была в ram, что она умрет при следующем завершении работы.

Тем не менее, для ссылки на тех, кто находит этот вопрос (и чтобы закрепить идею в моей голове), я напишу процедуру, которую я нашел, которая будет работать после того, как я узнаю, когда создаю initramfs.

Что вам нужно сделать, так это вернуться к версии gpg, прежде чем они начнут использовать внешнюю программу pinentry для ввода пароля. Насколько я знаю, это случилось с версией 2. Предполагая, что у вас есть текущая работающая установка Linux, вам нужно получить статически скомпилированную версию gpg <2.0.

Это очень легко сделать с Gentoo, но требуется только следующая команда:

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

Просто убедитесь, что вы используете ldd чтобы убедиться, что они на самом деле статичны, прежде чем копировать их на свой флэш-накопитель, чтобы вы могли использовать их во время установки.

В других дистрибутивах я предлагаю вам посмотреть @ ваш менеджер пакетов, и если это не сработает, я попробую загрузить исходники и скомпилировать их.


3
2018-06-11 23:13