Pgp
一個 OpenPGP 密鑰上的多個簽名。它們是如何結合的?它們儲存在 OpenPGP 證書中的什麼位置?
當一個 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]