Какие шаги необходимо выполнить для кэширования парольных фраз, введенных через pinentry с использованием gpg-preset-passphrase в 2.1.15?

8

Я пытаюсь кэшировать парольные фразы для использования на автоматической машине. Поскольку это создает некоторый риск, я бы предпочел выбрать, какие парольные фразы кэшируются, и избегать установки обоих значений, равно как default-cache-ttlи max-cache-ttlслишком высоких, а также избегать необходимости gpg-agentпериодически очищать весь кэш - поэтому я ищу решение с помощью gpg-preset-passphrase. Некоторая информация, найденная мной при устранении неполадок, относится к более старым версиям GnuPG, поэтому я не уверен, достаточно ли я учел все различия.

Во-первых, как это предписано man 1 gpg-agent, я имею export GPG_TTY=$(tty)в моем .bashrc.

Теперь предположим, что я запускаю eval $(gpg-agent --daemon --allow-preset-passphrase --default-cache-ttl 1 --max-cache-ttl 31536000)gpg-agent, отметив, что gpg-preset-passphrase по-прежнему учитывает --max-cache-ttl (по умолчанию 2 часа).

Затем я получаю ключ $KEYGRIPот нужного секретного подраздела с помощью gpg --with-keygrip -K.

С этим я пытаюсь /path/to/gpg-preset-passphrase -c $KEYGRIP. По возвращении, это печатает:

   gpg-preset-passphrase: caching passphrase failed: Not implemented

Попытка снова добавить --verbose --debug 6 --log-file /path/to/gpg-agent.logк gpg-agent, мой журнал добавляется с

   gpg-agent[4206] listening on socket /run/user/1000/gnupg/S.gpg-agent
   gpg-agent[4207] gpg-agent (GnuPG) 2.1.15 started
   gpg-agent[4207] handler 0x7f86ef783700 for fd 5 started
   gpg-agent[4207] command PRESET_PASSPHRASE failed: Not implemented
   gpg-agent[4207] handler 0x7f86ef783700 for fd 5 terminated

Я не уверен, что делать дальше, кроме углубления в источник, поэтому мне интересно, сможет ли кто-нибудь сначала исправить мои шаги.

user5255922
источник
Вы когда-нибудь решали это?
AlMehdi
Я незначительно уверен, что парольную фразу нужно отправить на стандартный ввод gpg-preset-passphrase, мое первое конкретное руководство по этому вопросу - из этого списка рассылки lists.gnupg.org/pipermail/gnupg-users/2010-January/037876.html
ThorSummoner
как отправить его из stdin, а не из echo? это вовсе не звучит безопасно
Холмс

Ответы:

0

Звучит так, как будто вы хотите отправить пароль на стандартный gpg-preset-passphraseввод, не повторяя его (чтобы не отображать его в списке процессов):

/path/to/gpg-preset-passphrase -c $KEYGRIP <<< $PASSPHRASE

Если вы заботитесь о переносимости за пределами Bash:

/path/to/gpg-preset-passphrase -c $KEYGRIP <<EOF
$PASSPHRASE
EOF

Этот ответ о синтаксисе «Здесь документы» (EOF) был неоценим для меня: https://unix.stackexchange.com/a/88492

Вы также нуждаетесь allow-preset-passphraseв своем, ~/.gnupg/gpg-agent.confкак упомянуто Холмс.

Если вы хотите сделать это с помощью симметричного шифрования (так как я уже потерял здравый смысл в этом, возможно, вам не придется), посмотрите мой ответ здесь, чтобы найти правильную keygrip / cacheid, чтобы использовать для предварительной установки ключевой фразы в gpg- агент: https://superuser.com/a/1485486/1093343

evnp
источник