Pgp

一個 OpenPGP 密鑰上的多個簽名。它們是如何結合的?它們儲存在 OpenPGP 證書中的什麼位置?

  • August 21, 2017

當一個 OpenPGP 公鑰由不同的密鑰多次簽名時,這些多個簽名如何在一個 OpenPGP 證書/密鑰上變得可見?

例如,我參加了一個密鑰簽名派對,我的公鑰由不同的人簽名,有些人通過電子郵件將我的簽名密鑰發送給我,有些人自己將簽名的密鑰上傳到密鑰伺服器,所有這些簽名如何在我的公眾中可見密鑰(在 OpenPGP 證書中)?

OpenPGP證書可以多長時間?例如,如果我的密鑰由 10.000 人簽名,它會是什麼樣子?

OpenPGP 密鑰由一大堆單獨的 OpenPGP 數據包組成,例如公鑰本身、使用者 ID 以及證書。RFC 4880,OpenPGP提供了規範和可能的數據包列表及其解釋(確實非常技術性,但您現在正在深入了解 OpenPGP 的內部細節)。

當從任何來源獲取更新的密鑰副本時(讓它成為本地文件導入,從密鑰伺服器網路,從本地文件,…),GnuPG 或 OpenPGP 的其他實現只需將各個數據包合併在一起,添加那些它還不知道。對簽名或其他數據包的數量沒有人為的限制,但個別實現可能會有一些技術性的限制(32 位整數、可定址記憶體等)。

gpg --list-packets您可以使用或查看鍵的結構pgpdump。我自己的密鑰的範例輸出並添加了一些解釋,最初這是一個大流:

gpg --export a4ff2279 | gpg --list-packets | less

公鑰:

# off=0 ctb=99 tag=6 hlen=3 plen=1037
:public key packet:
       version 4, algo 1, created 1356475387, expires 0
       pkey[0]: [8192 bits]
       pkey[1]: [17 bits]
       keyid: 4E1F799AA4FF2279

一個使用者ID包:

# off=1040 ctb=b4 tag=13 hlen=2 plen=49
:user ID packet: "Jens Erat (born 1988-01-19 in Stuttgart, Germany)"

綁定簽名連接密鑰和使用者ID,並攜帶配置:

# off=1091 ctb=89 tag=2 hlen=3 plen=1083
:signature packet: algo 1, keyid 4E1F799AA4FF2279
       version 4, created 1356516623, md5len 0, sigclass 0x13
       digest algo 2, begin of digest 18 46
       hashed subpkt 27 len 1 (key flags: 03)
       hashed subpkt 11 len 5 (pref-sym-algos: 9 8 7 3 2)
       hashed subpkt 21 len 5 (pref-hash-algos: 8 2 9 10 11)
       hashed subpkt 22 len 3 (pref-zip-algos: 2 3 1)
       hashed subpkt 30 len 1 (features: 01)
       hashed subpkt 23 len 1 (keyserver preferences: 80)
       hashed subpkt 2 len 4 (sig created 2012-12-26)
       hashed subpkt 25 len 1 (primary user ID)
       subpkt 16 len 8 (issuer key ID 4E1F799AA4FF2279)
       data: [8189 bits]

較新的綁定簽名:

# off=2177 ctb=89 tag=2 hlen=3 plen=1080
:signature packet: algo 1, keyid 4E1F799AA4FF2279
       version 4, created 1356475387, md5len 0, sigclass 0x13
       digest algo 2, begin of digest 44 77
       hashed subpkt 2 len 4 (sig created 2012-12-25)
       hashed subpkt 27 len 1 (key flags: 03)
       hashed subpkt 11 len 5 (pref-sym-algos: 9 8 7 3 2)
       hashed subpkt 21 len 5 (pref-hash-algos: 8 2 9 10 11)
       hashed subpkt 22 len 3 (pref-zip-algos: 2 3 1)
       hashed subpkt 30 len 1 (features: 01)
       hashed subpkt 23 len 1 (keyserver preferences: 80)
       subpkt 16 len 8 (issuer key ID 4E1F799AA4FF2279)
       data: [8192 bits]
# off=3260 ctb=89 tag=2 hlen=3 plen=284

另一個密鑰頒發的證書:

:signature packet: algo 1, keyid CBC2613CD745722B
       version 4, created 1356529414, md5len 0, sigclass 0x13
       digest algo 2, begin of digest d3 ec
       hashed subpkt 2 len 4 (sig created 2012-12-26)
       subpkt 16 len 8 (issuer key ID CBC2613CD745722B)
       data: [2048 bits]

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