проверить подпись gpg без установки ключа

Как проверить подпись gpg (cli или с узлом js) без установки открытого ключа? у меня есть открытый ключ, но я не хочу добавлять его в связку ключей. Любые подсказки?

Спасибо, Флориан.


person Florian    schedule 02.02.2012    source источник


Ответы (2)


Вот сценарий оболочки, который я использую именно для этой цели. Он создает временный брелок, устанавливает в него указанный открытый ключ, запускает указанную команду, затем удаляет временный брелок.

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

Обновление: см. https://github.com/Keith-S-Thompson/gpg-tmp.

#!/bin/sh

keyid=$1
shift
case "$keyid" in
    ????????)
        ;;
    *)
        echo "Usage: $0 key args..." 1>&2
        exit 1
esac

tmp_keyring=$HOME/$keyid-keyring.gpg

gpg --no-default-keyring --keyring $tmp_keyring --recv-keys $keyid
gpg --no-default-keyring --keyring $tmp_keyring "$@"
rm -f $tmp_keyring

Она действует как команда gpg, но принимает дополнительный начальный аргумент, указывающий 8-значный идентификатор ключа.

Пример использования:

$ gpg coreutils-8.9.tar.gz.sig
gpg: Signature made Tue 04 Jan 2011 07:04:25 AM PST using RSA key ID 000BEEEE
gpg: Can't check signature: public key not found
$ gpg-tmp 000BEEEE coreutils-8.9.tar.gz.sig
gpg: keyring `/home/kst/000BEEEE-keyring.gpg' created
gpg: requesting key 000BEEEE from hkp server subkeys.pgp.net
gpg: key 000BEEEE: public key "Jim Meyering <[email protected]>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
gpg: Signature made Tue 04 Jan 2011 07:04:25 AM PST using RSA key ID 000BEEEE
gpg: Good signature from "Jim Meyering <[email protected]>"
gpg:                 aka "Jim Meyering <[email protected]>"
gpg:                 aka "Jim Meyering <[email protected]>"
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 155D 3FC5 00C8 3448 6D1E  EA67 7FD9 FCCB 000B EEEE

Имейте в виду, что это абсолютно ничего не говорит о надежности ключа, но полезно для проверки целостности.

(Интересно, сколько ключей сгенерировал Джим Мейеринг, прежде чем он получил этот?)

person Keith Thompson    schedule 02.02.2012

Мне не нужно было много, gpg --dry-run (или gpg -n) работало на меня. Я запускал gpg 1.4.12 на Mac через Homebrew, но, похоже, это стандартный вариант. Не знаю, как это сравнивается с другими методами, упомянутыми здесь.

person Louis St-Amour    schedule 15.05.2012
comment
У меня это не работает (gpg 1.4.16, Linux Mint 17). gpg --dry-run coreutils-8.9.tar.gz.sig дает мне gpg: Can't check signature: public key not found. (В моей связке ключей нет ключа Джима Мейеринга.) - person Keith Thompson; 07.10.2014
comment
Хм. Ты прав. Через два года не могу воспроизвести. Я пробовал почти все, например. gpg --dry-run --trust-model direct --keyserver-options auto-key-retrieve --auto-key-locate keyserver --keyserver keys.gnupg.net --verify-options pka-lookups --verify coreutils-8.9.tar.gz.sig coreutils-8.9.tar.gz, но продолжает говорить gpg: Can't check signature: public key not found. Ну, я полагаю, если вы действительно хотите избежать скрипта, вы можете написать команду вместо этого использовать временный дом/связку ключей и удалить ее после. Но смысл GPG в том, чтобы завоевать доверие: вот почему они усложняют задачу. - person Louis St-Amour; 07.10.2014
comment
В защиту GPG говорится, что пробный прогон реализован наполовину, и, конечно, это то, что вы хотите видеть в такой функции безопасности. Здесь пробный запуск предотвращает добавление команды в связку ключей, что означает, что проверка никогда не знает, какой ключ использовать (очевидно). Когда я использовал его, у меня, должно быть, уже был добавлен ключ, поэтому пробный прогон, я полагаю, практически ничего не дал. (О, и verify-options pka-lookups просто добавляет дополнительные проверки, он не загружается автоматически...) - person Louis St-Amour; 07.10.2014