При расшифровке файла предпринимается попытка использовать подключ, а затем выдается ошибка «Нет секретного ключа»

При расшифровке файла предпринимается попытка использовать подключ, а затем выдается ошибка «Нет секретного ключа»

Использую: gpg (GnuPG) 2.0.22 libgcrypt 1.5.3

Я пытаюсь расшифровать файл с удаленного сайта. Я экспортировал наш ключ в файл. gpg <filename>возвращает: (ID ключей изменены)

pub 2048R/656CC421 2018-04-19
sub 2048R/99F89J32 2018-04-19

Я отправил его отправителю и попросил его импортировать, подписать и доверить его.

Они прислали мне два разных файла ключей. Использование gpg <filename>возвратов:

1. pub 2048R/62568LK1 2015-09-03

2. pub 2048R/J561VE25 2015-09-23

Если я нажму edit-key, то получу следующее:

Мой ключ:

Secret key is available.

pub 2048R/656CC421 created: 2018-04-19 expires: never usage: SC
trust: ultimate validity: ultimate
sub 2048R/99F89J32 created: 2018-04-19 expires: never usage: E
[ultimate] (1).

Их ключи:

1. pub 2048R/62568LK1 created: 2015-09-23 expires: never usage: SCE
trust: full validity: full
[ full ] (1).

2. pub 2048R/99F89J32 created: 2015-09-03 expires: never usage: SC
trust: full validity: full
[ full ] (1).

Я запускаю команду расшифровки в скрипте bash со следующими параметрами.

echo $passphrase | /usr/bin/gpg --verbose --passphrase-fd 0 --no-tty --output $output_file --recipient myuser --decrypt $input_file

Ниже приведен вывод команды:

Version: GnuPG v1.2.4 (MingW32)
gpg: armor header:
gpg: public key is 99F89J32
gpg: using subkey 99F89J32 instead of primary key 656CC421
gpg: using subkey 99F89J32 instead of primary key 656CC421
gpg: cancelled by user
gpg: encrypted with 2048-bit RSA key, ID 99F89J32, created 2018-04-19
"usrname (Description) <[email protected]>"
gpg: public key decryption failed: Operation cancelled
gpg: decryption failed: No secret key

Из всего этого я делаю вывод, что отправитель должен отправить мне свой открытый ключ в том же формате, в котором я отправил ему. Например:

pub 2048R/J561VE25 2015-09-23

sub 2048R/SOM3NUMB 2015-09-23

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

Может ли кто-нибудь сказать мне, ошибаюсь ли я или мои мысли верны?

Спасибо!

решение1

Version: GnuPG v1.2.4 (MingW32)

Святые шарыэто старая версия – версия 1.2.4 была выпущена в2003. Судя по всему, отправитель не слишком заботится об обновлении своего программного обеспечения безопасности.

(Ваша собственная версия 2.0.22 не намного лучше, поскольку выпущена в 2013 году.)

gpg: public key is 99F89J32
gpg: using subkey 99F89J32 instead of primary key 656CC421
gpg: using subkey 99F89J32 instead of primary key 656CC421

Это нормально. «Основная» пара ключей используется только для подписи (т. е. сертификации) других ключей; часто также для подписи сообщений. Она не может использоваться для шифрования — у вас всегда есть подключ для этой цели.

(Разделение также допускает такие вещи, как офлайн-подписание или частая ротация ключей шифрования.)

gpg: cancelled by user
gpg: encrypted with 2048-bit RSA key, ID 99F89J32, created 2018-04-19 "usrname (Description) <[email protected]>"
gpg: public key decryption failed: Operation cancelled
gpg: decryption failed: No secret key

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

Запрос пароля отображается GnuPGпиночниккомпонент, который сам запускается черезgpg-агентЯ действительно не знаю, с чего начать устранение неполадок в Windows – возможно,более новая версиябудет работать лучше. (Ваш GnuPG 2.0.22 был выпущен в 2013 году.)

Более новые версии, начиная с GnuPG 2.1, поддерживают режим «обратного ввода пароля», который может работать безпиночниккомпонент. Если обновление само по себе не помогает, попробуйте активировать эту опцию.

что отправитель должен отправить мне свой открытый ключ

Открытый ключ отправителя бесполезен для расшифровки и необходим только для проверки подписи.

Такой как:

pub 2048R/J561VE25 2015-09-23

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

Нет. Эта информация предназначена дляты, пользователь – он суммирует тип ключа, короткий (бесполезный) идентификатор и дату истечения срока действия. GnuPG прекрасно может извлечь его из самого ключа, хотя ему это и не нужно.

решение2

Ну что ж, после долгих раздумий я нашел решение, внесшее два изменения.

  1. pinentry-program /usr/bin/pinentry-cursesНеобходимо было добавить gpg-agent.conf .

  2. Автору сценария необходимо было что-то добавить --batchв командную строку.

После этого gpg смог получить секретный ключ и расшифровать его.

Спасибо grawity за ответ. Мы ценим ваше время.

Связанный контент