Как сопоставить экспортированные пары открытого и закрытого ключей OpenPGP?

У меня есть несколько резервных копий файлов открытого и закрытого ключей. Как проверить, какой файл открытого ключа соответствует какому файлу закрытого ключа?

Я сгенерировал 2048 байтных открытых и закрытых пар ключей GnuPG, используя

gpg --gen-key

Чтобы сделать резервную копию открытых ключей, я экспортировал их, используя

gpg --armor --output ~/gpg_keys_backup/<Public Key Id>-public.key --export <Public Key Id>

Для резервного копирования закрытых ключей я экспортировал их, используя

gpg --armor --output ~/gpg_keys_backup/<Private Key ID>-private.key --export-secret-keys <Private Key ID>

Как определить, какие ключи резервного копирования принадлежат паре?

2 ответа

Решение

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

gpg --list-packets [secret-key-file] | head
:secret key packet:
        version 4, algo 1, created 1356475387, expires 0
        pkey[0]: [8192 bits]
        pkey[1]: [17 bits]
        gnu-dummy S2K, algo: 0, simple checksum, hash: 0
        protect IV: 
        keyid: 4E1F799AA4FF2279

Последняя строка цитируется keyid содержит идентификатор длинного ключа открытого ключа.

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

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

gpg --import private.key


Но если предположить, что имена файлов по какой-то причине не совпадают, вы можете запустить

gpg yourfile.key, который напечатает что-то вроде:

pub  2048R/1234ABCD 2016-12-31
sub  2048R/5678EFGH 2016-12-31

Сопоставьте идентификаторы ключей закрытых / открытых ключей (в этом примере 1234ABCD).


Если у вас есть тонна ключей, вместо того, чтобы сопоставлять их, может быть проще просто проигнорировать экспортированные открытые ключи и восстановить их из ваших закрытых ключей.

gpg --import private.key
gpg --armor --output <Key Id>-public.key --export <Key Id>
Другие вопросы по тегам