Gpg

哪些密鑰 gpg 導出以及密鑰環中有什麼?

  • June 5, 2015

我最近一直在瀏覽網際網路上有關的內容gpg。我必須說這很令人困惑。

特別是導入/導出部分。當你生成一個密鑰時,​​你基本上預設得到 4 個密鑰。導出密鑰的可能方法是什麼(一次只有一個密鑰,幾個密鑰)?刪除密鑰的可能方法有哪些(相同)?另外,我現在不確定,如果我解釋gpg --list-keysgpg --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

並開始導出密鑰,看看會發生什麼:

$ 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

這是我的結論,這與手冊頁中的內容有些矛盾:

`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)

gpg --export-secret-subkeys就像gpg --export-secret-keys,但不導出私有主鍵(或者像他們說的那樣使它無用sec#)。通常,PRI_ID, SUB_IDs 是可以互換的,除非你在它們後面加上驚嘆號。但是對於--delete-key--delete-secret-key即使使用驚嘆號鍵,它們也可以互換。

UPD根據gpg --list-packets我的說法似乎是錯誤的,並且與手冊頁沒有矛盾。--export-secret-keys畢竟必須導出密鑰。只是可以從私鑰推斷出公鑰。

但是,畢竟還剩下一件事。主鍵和子鍵之間有什麼樣的聯繫?為什麼當我導出子鍵時,我也會得到主鍵?

UPD哦,每個密鑰對共享一個相同的 id。

引用自:https://unix.stackexchange.com/questions/207815