
我一直在測試 GPG 金鑰,並研究在金鑰上新增/刪除用戶時金鑰的變化。如果我新增一個用戶愛麗絲密鑰產生後。我匯出金鑰對的公鑰和私鑰。然後添加用戶鮑伯到同一個鍵。最後導出相同的金鑰,除了鮑伯新增為用戶。然後我比較愛麗絲和愛麗絲/鮑伯鍵。這愛麗絲公鑰有一個很大的區塊類似於愛麗絲/鮑伯公鑰,並且在許多地方也有一些差異。這愛麗絲/鮑伯公鑰比公鑰長得多愛麗絲鑰匙。我注意到這同樣適用於私鑰。我發現有趣的是,如果我使用愛麗絲公鑰並使用解密愛麗絲/鮑伯私鑰,我收到同樣的訊息。
以下是我的問題:
- 電子郵件/使用者 ID 是否會影響公鑰和私鑰?
- 你能從公鑰中提取用戶 ID 嗎?如果是,它是如何工作的?
- 加密是如何進行的愛麗絲並解密愛麗絲/鮑伯工作?
- 每個金鑰的特定部分是否用於加密/解密,而其他部分是否留給使用者 ID 和電子郵件?
答案1
然後將用戶Bob加入到同一個金鑰中
最重要的是,這不是 PGP 金鑰「用戶 ID」的用途。
使用者 ID 只是標籤。它們不能用於任何類型的存取控制——它們只能告知其他人密鑰的所有者。密鑰應該只有一個所有者,並且單個密鑰上的所有使用者 ID 都應該描述同一個人。
(您可以新增多個使用者 ID 的原因很簡單,因為同一個人可以擁有多個電子郵件地址,甚至多個名稱。)
如果多人需要使用 PGP,每個人都應該建立自己的金鑰。然後您將在加密時列出他們的所有密鑰(例如使用多個--recipient
選項)。
- Alice 的加密和 Alice/Bob 的解密如何運作?
當您新增第二個使用者 ID 時,它實際上仍然是相同的 RSA 金鑰材料,您只是更改了上面寫的標籤。使用者 ID 不用於存取控制。
- 電子郵件/使用者 ID 是否會影響公鑰和私鑰?
- 你能從公鑰中提取用戶 ID 嗎?如果是,它是如何工作的?
- 每個金鑰的特定部分是否用於加密/解密,而其他部分是否留給使用者 ID 和電子郵件?
當您談論 PGP 中的“公鑰”和“私鑰”時,才不是通常意味著原始公鑰資料(例如,僅 RSA 參數),就像在其他一些系統中一樣。相反,您實際獲得的gpg --export
是 OpenPGP鍵盤塊或者證書包含公鑰以及各種元資料(使用者 ID、簽名等)。
因此,當您新增使用者 ID 時,它並不會真正更改實際的關鍵參數 - 它會作為元資料包新增至公鑰資料包旁邊。
當人們共享他們的「PGP 公鑰」時,他們將整個金鑰+元資料包作為一個單元共享。總體而言,整個想法與 X.509 憑證非常相似,X.509 憑證在金鑰本身旁邊有一個「主題」欄位。
您可以使用pgpdump
或等工具gpg --list-packets
以文字格式顯示匯出的資料。