如何在另一台机器上提高最终信任的密钥?

信息安全 pgp gnupg 打开pgp
2021-08-23 14:18:06

我创建了一个带有两个子密钥的主密钥:一个用于签名,另一个用于加密。最后,我将这两个子项导出到了一台新机器上。

我如何告诉新机器将主人视为“终极”,即使机器上没有它?有关系吗?

3个回答

您可以通过打开密钥编辑命令行将每个密钥设置为最终信任

gpg --edit-key [key-id]

并运行trust命令。现在将提示您选择信任级别:

Please decide how far you trust this user to correctly verify other users' keys
(by looking at passports, checking fingerprints from different sources, etc.)

  1 = I don't know or won't say
  2 = I do NOT trust
  3 = I trust marginally
  4 = I trust fully
  5 = I trust ultimately
  m = back to the main menu

Your decision? 

显然,5将是获得最终信任的正确决定。最后,save提交更改并退出 GnuPG。相同的命令适用于 GnuPG 1.4 和 GnuPG 2(及更新版本)。

Ultimate 使密钥能够在 OpenPGP 信任网络中引入信任,换句话说,所有最终受信任的密钥都充当信任路径的起点。您应该设置自己的密钥以获得最终信任,但通常不会为其他人这样做。

要在以更简单的方式(没有交互模式)导入后更改密钥的 Ownertrust 信任级别,--edit-key我在一行中使用以下方式找到了这种方式gpg --import-ownertrust

根据Gnupg-users 邮件列表中的此邮件,可以使用更改信任级别gpg --import-ownertrust

您只需要获取fingerprint密钥的 和您在...中使用的trust level number是哪个(不要问我为什么,但我已经测试了每个级别)trust level numbergpg --edit-key [key-id] trust trust level as 1,2,3,4,5+ 1

1 = I don't know or won't say => will be = 2
2 = I do NOT trust => will be = 3
3 = I trust marginally => will be = 4
4 = I trust fully => will be = 5
5 = I trust ultimately => will be = 6

将 Ownertrust 信任级别更改ultimate为示例:

如果已经导入,则获取密钥的指纹(公共或私有)(如果gpg --with-fingerprint mykey.gpg在导入密钥之前不使用获取指纹)

gpg --list-keys [key-id]
gpg --list-secret-keys [key-id]

FINGERPRINT:LEVEL:通过回显来更改 Ownertrust 信任级别gpg --import-ownertrust

echo "07C9F77F0E8134E64A7FF0AA666B4C8DC27B4A0A:6:" | gpg --import-ownertrust

查看密钥的新 Ownertrust 信任级别

gpg --list-keys [key-id]
gpg --list-secret-keys [key-id]

您可以导出之前所有密钥的 Ownertrust 信任级别或备份它们

gpg --export-ownertrust > trustlevel.txt

并在需要时重新导入它们

gpg --import-ownertrust < trustlevel.txt

使用gpg --import-ownertrust您可以在导入密钥之前设置密钥的 Ownertrust 信任级别,然后根据导入操作后定义的信任级别信任该密钥,或者导入密钥然后更改导入密钥的信任级别。

以下是如何为新导入的密钥自动执行此操作 ( gpg --edit-key; trust; 5; ),从而有效地将它们导入为最终受信任的。save

$ gpg --import <key.asc
$ (echo 5; echo y; echo save) |
  gpg --command-fd 0 --no-tty --no-greeting -q --edit-key "$(
  gpg --list-packets <key.asc |
  awk '$1=="keyid:"{print$2;exit}')" trust