哪些密鑰 gpg 導出以及密鑰環中有什麼?
我最近一直在瀏覽網際網路上有關的內容
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
並開始導出密鑰,看看會發生什麼:
$ 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_ID
s 是可以互換的,除非你在它們後面加上驚嘆號。但是對於--delete-key
,--delete-secret-key
即使使用驚嘆號鍵,它們也可以互換。UPD根據
gpg --list-packets
我的說法似乎是錯誤的,並且與手冊頁沒有矛盾。--export-secret-keys
畢竟必須導出密鑰。只是可以從私鑰推斷出公鑰。但是,畢竟還剩下一件事。主鍵和子鍵之間有什麼樣的聯繫?為什麼當我導出子鍵時,我也會得到主鍵?
UPD哦,每個密鑰對共享一個相同的 id。