最近我一直在浏览互联网上的内容gpg
。我必须说这很令人困惑。
特别是导入/导出部分。生成密钥时,默认情况下基本上会获得 4 个密钥。导出密钥的可能方法有哪些(只有一个密钥,一次有多个密钥)?删除键的可能方法有哪些(相同)?另外,我现在不确定,如果我解释gpg --list-keys
,gpg --list-secret-keys
结果是否正确。例如,我似乎只导出一个键(子键,gpg --export SUB_ID!
),但在导入时我也得到了主键。
我设法发现了什么。如果我错了纠正我。
有公钥和私钥,它们成对出现。有主键,每个主键可以有一个或多个子键。默认情况下,当您生成一个密钥时,您将获得四个密钥 ( (1) RSA and RSA (default)
)。一对用于签名和认证(主密钥),一对用于加密(子密钥)。此外,还有两个密钥环,分别用于私钥和公钥。
现在到了棘手的部分。我正在尝试导入/导出密钥。为此,我创建了一个带有 2 个子项的密钥。然后我以不同的方式导出它:
$ gpg --export PRI_ID > ~/_/export-1
$ gpg --export PRI_ID! > ~/_/export-2
$ gpg --export SUB_ID_1! > ~/_/export-3
$ gpg --export SUB_ID_2! > ~/_/export-4
$ gpg --export-secret-keys PRI_ID > ~/_/export-secret-keys-1
$ gpg --export-secret-keys PRI_ID! > ~/_/export-secret-keys-2
$ gpg --export-secret-keys SUB_ID_1! > ~/_/export-secret-keys-3
$ gpg --export-secret-keys SUB_ID_2! > ~/_/export-secret-keys-4
$ gpg --export-secret-subkeys PRI_ID > ~/_/export-secret-subkeys-1
$ gpg --export-secret-subkeys PRI_ID! > ~/_/export-secret-subkeys-2
$ gpg --export-secret-subkeys SUB_ID_1! > ~/_/export-secret-subkeys-3
$ gpg --export-secret-subkeys SUB_ID_2! > ~/_/export-secret-subkeys-4
Run Code Online (Sandbox Code Playgroud)
并开始导出密钥,看看会发生什么:
$ gpg --delete-secret-key PRI_ID; gpg --delete-key PRI_ID; gpg --import ~/_/export-1; gpg -k; gpg -K
$ gpg --delete-secret-key PRI_ID; gpg --delete-key PRI_ID; gpg --import ~/_/export-2; gpg -k; gpg -K
$ gpg --delete-secret-key PRI_ID; gpg --delete-key PRI_ID; gpg --import ~/_/export-3; gpg -k; gpg -K
$ gpg --delete-secret-key PRI_ID; gpg --delete-key PRI_ID; gpg --import ~/_/export-4; gpg -k; gpg -K
$ gpg --delete-secret-key PRI_ID; gpg --delete-key PRI_ID; gpg --import ~/_/export-secret-keys-1; gpg -k; gpg -K
$ gpg --delete-secret-key PRI_ID; gpg --delete-key PRI_ID; gpg --import ~/_/export-secret-keys-2; gpg -k; gpg -K
$ gpg --delete-secret-key PRI_ID; gpg --delete-key PRI_ID; gpg --import ~/_/export-secret-keys-3; gpg -k; gpg -K
$ gpg --delete-secret-key PRI_ID; gpg --delete-key PRI_ID; gpg --import ~/_/export-secret-keys-4; gpg -k; gpg -K
$ gpg --delete-secret-key PRI_ID; gpg --delete-key PRI_ID; gpg --import ~/_/export-secret-subkeys-1; gpg -k; gpg -K
$ gpg --delete-secret-key PRI_ID; gpg --delete-key PRI_ID; gpg --import ~/_/export-secret-subkeys-2; gpg -k; gpg -K
$ gpg --delete-secret-key PRI_ID; gpg --delete-key PRI_ID; gpg --import ~/_/export-secret-subkeys-3; gpg -k; gpg -K
$ gpg --delete-secret-key PRI_ID; gpg --delete-key PRI_ID; gpg --import ~/_/export-secret-subkeys-4; gpg -k; gpg -K
Run Code Online (Sandbox Code Playgroud)
以下是我的结论,与手册页中的内容有些矛盾:
`gpg --export PRI_ID` exports all public keys (3 keys)
`gpg --export PRI_ID!` exports primary public key (1 key)
`gpg --export SUB_ID!` exports public primary key and public subkey (2 keys)
`gpg --export-secret-keys PRI_ID` exports all 3 keypairs (6 keys)
`gpg --export-secret-keys PRI_ID!` exports primary keypair (2 key)
`gpg --export-secret-keys SUB_ID!` exports primary keypair and subkey keypair (4 keys)
Run Code Online (Sandbox Code Playgroud)
gpg --export-secret-subkeys
就像gpg --export-secret-keys
,但不导出私有主键(或者像他们所说的那样使其无用,sec#
)。通常,PRI_ID
, SUB_ID
s 是可以互换的,除非在它们后面加上感叹号。但是对于--delete-key
,--delete-secret-key
即使使用感叹号,它们也可以互换。
UPD按照gpg --list-packets
我的说法好像是错的,和手册页没有矛盾。--export-secret-keys
毕竟必须导出密钥。只是可以从私钥推断出公钥。
然而,毕竟还剩下一件事。主键和子键之间有什么样的联系?为什么当我导出子键时,我也会得到主键?
UPD哦,每个密钥对共享一个相同的 ID。
归档时间: |
|
查看次数: |
1024 次 |
最近记录: |