4

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

jeremy@localhost ~ 
$ gpg -k
/home/jeremy/.gnupg/pubring.gpg
-------------------------------
pub   4096R/35E40FA7 2015-04-14
uid                  keybase.io/jeremytwfortune <jeremytwfortune@keybase.io>
uid                  Jeremy Fortune <jeremytwfortune@gmail.com>
uid                  Jeremy Fortune <jeremy.fortune@uvmhealth.org>
sub   2048R/73671EAD 2015-04-14 [expires: 2023-04-12]
sub   2048R/0690427C 2015-04-14 [expires: 2023-04-12]
sub   4096R/AEE9FB5F 2015-12-06 [expires: 2025-12-03]
sub   4096R/757D1A1D 2015-12-06 [expires: 2025-12-03]
sub   2112R/9B5BAC36 2015-12-06 [expires: 2025-12-03]
sub   4096R/5A8F548A 2015-12-06 [expires: 2025-12-03]


jeremy@localhost ~ 
$ gpg -K
/home/jeremy/.gnupg/secring.gpg
-------------------------------
sec   4096R/35E40FA7 2015-04-14
uid                  keybase.io/jeremytwfortune <jeremytwfortune@keybase.io>
ssb   2048R/73671EAD 2015-04-14
ssb   2048R/0690427C 2015-04-14

Когда я шифрую сообщение для себя, используется новейший ключ шифрования (9b5bac36). Это может показаться неплохим, поскольку это подраздел, но при расшифровке gpg все еще ищет только этот закрытый ключ. Он даже не пытается использовать 0690427c.

jeremy@localhost ~ 
$ echo -e "\nAn encrypted message." | gpg -vver 35e40fa7 | gpg -vvd
gpg: using subkey 9B5BAC36 instead of primary key 35E40FA7
gpg: using PGP trust model
gpg: key 35E40FA7: accepted as trusted key 
gpg: checking the trustdb
gpg: 1 keys cached (11 signatures)
gpg: 1 keys processed (0 validity counts cleared)
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: This key belongs to us
gpg: reading from `[stdin]'
gpg: writing to stdout
gpg: RSA/AES256 encrypted for: "9B5BAC36 keybase.io/jeremytwfortune <jeremytwfortune@keybase.io>"
:pubkey enc packet: version 3, algo 1, keyid 743409AA9B5BAC36
        data: [2111 bits]
gpg: public key is 9B5BAC36
:encrypted data packet:
        length: 76
        mdc_method: 2
gpg: using subkey 9B5BAC36 instead of primary key 35E40FA7
gpg: encrypted with 2112-bit RSA key, ID 9B5BAC36, created 2015-12-06
      "keybase.io/jeremytwfortune <jeremytwfortune@keybase.io>"
gpg: decryption failed: secret key not available

Когда я отменяю новые ключи шифрования, все работает как положено.

jeremy@localhost ~
$ gpg -k
/home/jeremy/.gnupg/pubring.gpg
-------------------------------
pub   4096R/35E40FA7 2015-04-14
uid                  keybase.io/jeremytwfortune <jeremytwfortune@keybase.io>
uid                  Jeremy Fortune <jeremytwfortune@gmail.com>
uid                  Jeremy Fortune <jeremy.fortune@uvmhealth.org>
sub   2048R/73671EAD 2015-04-14 [expires: 2023-04-12]
sub   2048R/0690427C 2015-04-14 [expires: 2023-04-12]
sub   4096R/AEE9FB5F 2015-12-06 [expires: 2025-12-03]
sub   4096R/5A8F548A 2015-12-06 [expires: 2025-12-03]

jeremy@localhost ~
$ echo -e "\nAn encrypted message." | gpg -vver 35e40fa7 | gpg -vvd
gpg: using subkey 0690427C instead of primary key 35E40FA7
gpg: using PGP trust model
gpg: key 35E40FA7: accepted as trusted key
gpg: This key belongs to us
gpg: reading from `[stdin]'
gpg: writing to stdout
gpg: RSA/AES256 encrypted for: "0690427C keybase.io/jeremytwfortune <jeremytwfortune@keybase.io>"
:pubkey enc packet: version 3, algo 1, keyid 60A3F13E0690427C
        data: [2045 bits]
gpg: public key is 0690427C
gpg: no secret subkey for public subkey AEE9FB5F - ignoring
gpg: no secret subkey for public subkey 5A8F548A - ignoring
gpg: using subkey 0690427C instead of primary key 35E40FA7

You need a passphrase to unlock the secret key for
user: "keybase.io/jeremytwfortune <jeremytwfortune@keybase.io>"
gpg: using subkey 0690427C instead of primary key 35E40FA7
2048-bit RSA key, ID 0690427C, created 2015-04-14 (main key ID 35E40FA7)
gpg: gpg-agent is not available in this session
gpg: public key encrypted data: good DEK
:encrypted data packet:
        length: 76
        mdc_method: 2
gpg: encrypted with 2048-bit RSA key, ID 0690427C, created 2015-04-14
      "keybase.io/jeremytwfortune <jeremytwfortune@keybase.io>"
gpg: AES256 encrypted data
:compressed packet: algo=1
:literal data packet:
        mode b (62), created 1458172973, name="",
        raw data: 23 bytes
gpg: original file name=''

An encrypted message.
gpg: decryption okay

Но, конечно, это потому, что теперь шифруется с помощью 0690427c. Могу ли я действительно иметь только один подраздел шифрования? Если нет, нужно ли хранить все секретные подразделы на каждой машине?

1 ответ1

3

Реализации OpenPGP (включая GnuPG) по умолчанию выберут самый новый действующий (sub) ключ шифрования и зашифруют его. Невозможно определить, что данный подраздел каким-либо образом связан с данным компьютером или идентификатором пользователя в OpenPGP, и вы не можете принудительно установить шифрование для всех допустимых ключей шифрования.

Можно очень хорошо вручную выбрать ключ, который будет использоваться для шифрования с GnuPG, используя выбранный идентификатор ключа в качестве получателя, но затем ! , Например, если есть старый ключ шифрования DEADBEEF , и вы хотите переопределить использование по умолчанию другого более нового подраздела шифрования:

gpg --recipient DEADBEEF! --encrypt

Если ! опущено, GnuPG вместо этого разрешает идентификатор ключа в первичном ключе и снова выбирает новейший соответствующий подключ. Используя тот же метод, вы можете принудительно использовать первичный ключ (если у него установлена возможность шифрования).

Если вы хотите использовать разные ключи шифрования на разных компьютерах, вам придется использовать разные первичные ключи. Это один из основных недостатков OpenPGP.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .