Public-Key

為什麼 gnupg 創建 4 個單獨的鍵,sub 和 ssb 是什麼意思?

  • August 4, 2021

使用 gpg 創建單個密鑰時,​​我得到:

$  gpg --list-keys
-------------------------------
pub   2048R/0C0EA301 2018-01-01
uid       [ultimate] 
sub   2048R/023A0509 2018-01-01


$ gpg --list-secret-keys
-------------------------------
sec   2048R/0C0EA301 2018-01-01
uid                  
ssb   2048R/023A0509 2018-01-01

使用 bouncycastle 查看密鑰時(在 ~/.gnupg/pubring.gpg 和 ~/.gnupg/secring.gpg 中),我發現創建了四個密鑰:

(#gpg.public[9AB238A08EF3EAB0A7D01E1284AB64C10C0EA301] 
#gpg.public[A841D2BA6635154081F3A5176DE7FF9B023A0509])

(#gpg.secret[9AB238A08EF3EAB0A7D01E1284AB64C10C0EA301] 
#gpg.secret[A841D2BA6635154081F3A5176DE7FF9B023A0509])

為什麼 gpg 會創建四個密鑰(public/private/sub/ssb),它們的用途是什麼?

縮寫代表以下內容:

  1. pub公共主鍵
  2. sub– 公共密鑰
  3. secsec ret 主鍵
  4. ssb–秘密s u b -key _

在非對稱密碼學中,您總是有密鑰對:要加密的公鑰,要解密的私鑰(秘密)。這裡我們有兩個密鑰對:(1, 3) 和 (2, 4)。他們可以通過相同的指紋來辨識。

但是為什麼有兩個密鑰對呢?當使用 GnuPG 生成 OpenPGP 密鑰時,預設情況下會創建一個主密鑰(對),也稱為主密鑰,以及一個子密鑰(對)。主密鑰,也稱為主密鑰,包含一個或多個使用者 ID(姓名、電子郵件地址),用於簽名。由主密鑰簽名並因此確認屬於其使用者 ID 的子密鑰用於加密/解密。

這裡很好地描述了擁有帶有子密鑰的主密鑰的想法。如果您想偏離預設行為並獲得對密鑰生成的更多控制,例如僅創建單個密鑰對或選擇某種加密算法,您應該嘗試gpg --full-gen-key(在 GnuPG 2.1.17 中引入)。

引用自:https://crypto.stackexchange.com/questions/63100