簡單介紹
何謂 PGP?簡言之,就是一款可以方便使用者進行加密、簽署驗證的一個應用。
主要功能涵蓋但不限於:
- 用於 Email 或任何通訊軟體,加密傳輸任何機密訊息、檔案。
- 建立校驗機制,保證軟體、檔案不被修改。
- 對文件實施電子簽名,作為一種身份驗證(簽章)的概念。
PGP 運作原理
首先,要使用 PGP,必須先生成一組公鑰、私鑰。何謂公鑰、私鑰?公鑰,全名公開金鑰,簡單來說就是一個特製的鑰匙,可以放心的散播、外流沒有關係,反之,私鑰就是不可以外洩的機密鑰匙。
假如,Bob 要傳送一個機密訊息給 Alice,它就要把公鑰告訴 Alice,Alice 用那個公鑰把訊息加密後,再把加密後的訊息傳給 Bob,Bob 能用他持有的私鑰進行解密。
相當於,Bob 寄送了一個帶有鎖頭的盒子給 Alice,Alice 收到後,把機密裝在盒子裡,並關上盒子(上鎖),一旦鎖上,連 Alice 也無法打開盒子,因為 Alice 沒有鑰匙,只有 Bob 擁有鑰匙打開盒子。之後 Alice 再把已經裝了機密訊息並鎖上的盒子寄回給 Bob,Bob 收到後,能夠用 Bob 擁有的私鑰解開鎖頭,打開盒子,拿到裡面的機密訊息。
這就是所謂的「非對稱加密」,這裡就不細說原理了,有興趣的讀者可以搜尋一下「RSA」等相關算法。
PGP Key Server(金鑰伺服器)
一旦擁有屬於自己的 PGP 金鑰對後,你就可以把自己的公開金鑰上傳到網路上,有一些專門的伺服器就是用來存放這些公開金鑰的,例如我下面列出的這些網站,Ubuntu 的金鑰伺服器、MIT 的金鑰伺服器等。
這些伺服器都是開放給任何人使用的,你可以把你的公鑰上傳,別人就能透過搜尋你的 Email 找到你上傳的公鑰。
下圖就是搜尋到我上傳的公鑰,身份為 Weil Jimmer <me@weils.net>
。
如何生成 PGP 金鑰
您可以透過網路上的一些免費軟體來生成金鑰對,例如我做的一個線上生成金鑰的工具。進入網頁後,填入名字 (Name)、電子郵件 (Email)、密碼 (Password),然後按下最左邊的生成金鑰按鈕 (Generate Keypair) 即可。
或是使用其他工具也能生成,我在 Windows 上是安裝 Kleopatra。
公鑰範例
下面這一串亂碼就是生成的「公開金鑰」(Public Key)。
通常由 -----BEGIN PGP PUBLIC KEY BLOCK-----
和 -----END PGP PUBLIC KEY BLOCK-----
包裹住。
這一段金鑰必須完整一字不漏的上傳到公開的金鑰伺服器,或是分享給寄件者的。這樣他們才能用你的公鑰加密機密訊息傳給你。
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
Lm9yZyPFkGMOMeVyD7ajCtH3nPwAJ1ABYNC4dd017xWEqlzIApsMFiEExKFq
MWLE1byhQ3LI0CPP3POB6JMAACgrEADFJe3O8HDmOXNqS3nlJZm2dvp0jGk3
mOsHW/EIbjMF2upF+1I5pAgKAkm5Bq4wi1MctazEzqjNyqjBl/YFPId9VLls
Gy6Yknw0LgHuaFdDJgrDv2xe5IxUajJ4JZJUBVgIooFVlDxOgGQa/nIbAvBi
KTztUAvKq/zs/dYqCNVp/hnDqsOtsu5LXhQuNylOIrVEwY5V2je4gsTQ1P4u
L+LuHfKCQ62pgwOezciZZqKZU2pqt8nXk/QSetP+gKais7HuNPpNI137Tb8W
ez4h+YAvxUi6Dzw4GhIPEdnQyLcRUj6/NDkPQk5xcCmuEJdP+C8omUapJYNi
e63INod4JK0vi838HzNTMYEjqyD12cGr6dH9jOawQ2RwWlCfobxnbadjHiDE
gANwTWsSfeMCteyh7Qobr+2GNVcGaO5ksb5b3gIUsntzPdheJaJjlKvDQ+ru
sKwbn/9+NsNy67dx6hCpjak6GigjcO85JXueFyywo+O+sTWCYFr1AwLL7y6r
JXRn06pU0vN21/Q9fMkh1lb+s6jkgfcI9F6u2b/HNfUpAP95F92ZjhQnz4t/
LoDwQb/l+Qv+Bj3mpVqHkxHLBrlS/49eKnQ1jU7j6dp3Ric6Xi+SypiShMjq
5s4ZEIti4d7LoyscfyWKWb7dL2AGUNafHdgmn7Ih3C4QARt6US7vig==
=mU5T
-----END PGP PUBLIC KEY BLOCK-----
私鑰範例
而私鑰通常由 -----BEGIN PGP PRIVATE KEY BLOCK-----
和 -----END PGP PRIVATE KEY BLOCK-----
夾住。長得像是如下:
-----BEGIN PGP PRIVATE KEY BLOCK-----
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
Jp+yIdwuEAEbelEu74o=
=h6Cl
-----END PGP PRIVATE KEY BLOCK-----
私鑰通常都有密碼保護,並且建議需要密碼保護,不然任何人取得後,都能解密機密訊息。
如果私鑰帶有密碼的話,在解密訊息時,需要輸入密碼才能解密,可以多一層保障。
PGP 金鑰包含的資訊介紹
通常生成的公鑰裡面會夾帶一些資訊:像是 金鑰 ID、Email、姓名、使用的加密方法、用途等。
這是解碼上面的範例後,得到的結果:
[Main-Key]
Key ID: d023cfdcf381e893
Fingerprint: c4a16a3162c4d5bca14372c8d023cfdcf381e893
Algorithm: RSA 4096-bit
Not-Before: Sat Sep 27 2025 22:18:14 GMT+0800 (台北標準時間)
Not-After: Never
Key Usage: Certify, Sign
[User-ID]
Alice <alice@weils.net>
Not-Before: Sat Sep 27 2025 22:18:14 GMT+0800 (台北標準時間)
Not-After: Never
[Self-Certification]
Issuer Key ID: d023cfdcf381e893
Issuer Fingerprint: c4a16a3162c4d5bca14372c8d023cfdcf381e893
Created: Sat Sep 27 2025 22:18:14 GMT+0800 (台北標準時間)
Expired: Never
Key Usage: Certify, Sign
[Sub-Key]
Key ID: 5c560e520ccfc542
Fingerprint: 2a7c0cd288b68ae30d6a508b5c560e520ccfc542
Algorithm: RSA 4096-bit
Not-Before: Sat Sep 27 2025 22:18:14 GMT+0800 (台北標準時間)
Not-After: Never
Key Usage: Encrypt-Communicate, Encrypt-Files
[Binding-Signature]
Issuer Key ID: d023cfdcf381e893
Issuer Fingerprint: c4a16a3162c4d5bca14372c8d023cfdcf381e893
Created: Sat Sep 27 2025 22:18:14 GMT+0800 (台北標準時間)
Expired: Never
Key Usage: Encrypt-Communicate, Encrypt-Files
PGP 公鑰除了包含姓名、電子郵件、加密所用的資訊外,還帶有過期時間等內容。其結構並不單純只是使用者資訊和 RSA 加密所用的 e 或 N 。
PGP 公鑰的基礎結構
不論是私鑰或公鑰都會帶有可以被解碼的公開資訊。結構如下:
主金鑰 (Main Key)
├─使用者 (User ID)
│ ├─使用者自簽章 (Self-Certification)
│ ├─其他使用者簽章 (Other-Certification)
│ └─撤銷簽章 (Revocation-Certification)
└─子金鑰 (Sub Key)
├─綁定簽章 (Binding-Signature)
└─撤銷簽章 (Revocation-Signature)
原則上一個 PGP 公鑰,可以包含無數個使用者,不一定一個公鑰只能有一個 Email,可以有很多個 User ID 都綁定到同個公鑰上。
使用者 ID
每個使用者 ID 都由它下面的簽章來認證,也就是 Self-Sign 的部分,也可以由其他使用者認證,你如果有多個聯絡人,而且把那些聯絡人的公鑰設定為信任,那麼由那些聯絡人(簽章)保證的公鑰 User ID 就是有效的。
在通常情況下,只有自簽章(由主金鑰所簽發)的證書是有效的。所以即便其他人保證簽名,但不受信任網允許的話,仍然不可信。
如果這個身份(Name、Email)不再使用了,你也可以使用主金鑰去簽發一個撤銷簽章(Revocation-Certification),完全不用擔心一旦換了 Email 怎麼辦?
當然,如果撤銷了身份 ID,必須要把撤銷後的公鑰上傳到公開的 PGP 金鑰伺服器,向全世界宣告該公鑰上的身份 ID 不再有效。
子金鑰 (Sub-Key)
在 PGP 中,還有所謂的子金鑰隱藏在其中,通常建立 PGP 公鑰都會有至少有兩把鑰匙,其中一把是主金鑰,另一把是子金鑰。
主金鑰負責簽發身份 ID,以及簽發子金鑰,用於將子金鑰關聯到主金鑰上。像是一個群組管理員的概念。就像使用者 ID 一樣,主金鑰可以簽發無數個子金鑰,並把每個子金鑰關聯到主金鑰上。
每個子金鑰都由它之下的綁定簽名(Binding-Signature)所保證合法性。每個綁定簽名的簽發者通常是主金鑰。
為何需要那麼多子金鑰?
在 PGP 中,每個金鑰都有不同的職權,像是主金鑰只擁有簽發能力,不允許用於檔案加密、通訊加密。
你可以為每個子金鑰 (Sub-Key) 設計不同的用途。
在 RFC 4880 中規定了金鑰的用途:
0x01 - This key may be used to certify other keys.
0x02 - This key may be used to sign data.
0x04 - This key may be used to encrypt communications.
0x08 - This key may be used to encrypt storage.
0x10 - The private component of this key may have been split by a secret-sharing mechanism.
0x20 - This key may be used for authentication.
0x80 - The private component of this key may be in the possession of more than one person.
主金鑰擁有的職權為 (0x01) 負責簽發其他金鑰。而通常子金鑰都是用來加密用途 (0x04、0x08)。
在這種設計中,你可以定期地撤銷子金鑰,或添加其他子金鑰用於其他用途,例如認證 (x020) SSH 等。
撤銷簽名 Revocation-Certification
前面提到過,可以自由的撤銷子金鑰、使用者ID,具體如何進行的呢?
其實非常簡單,只需要用主金鑰在 User-ID 或 Sub-Key 建立一個撤銷簽名,這樣就可以讓該 User-ID 或 Sub-Key 不再視為有效。
如果要讓整個主金鑰撤銷怎麼辦?一樣通過主金鑰發布緊急的撤銷聲明,加在主金鑰的簽名區即可。
當然也必須要把這個聲明傳到公開的金鑰伺服器,這樣其他人也能透過專用的軟體去更新他們自己電腦儲存的金鑰。
金鑰被撤銷,在 RFC 4880 甚至還規定了一些理由,可以附加在撤銷簽名的聲明中,像是:沒有理由、金鑰外洩了等,或是自訂理由附在裡面。
0 - No reason specified (key revocations or cert revocations)
1 - Key is superseded (key revocations)
2 - Key material has been compromised (key revocations)
3 - Key is retired and no longer used (key revocations)
32 - User ID information is no longer valid (cert revocations)
有效期
不論是 User-ID 或 Sub-Key 都能設定一個過期的時間,像是指定 bob@email.com 這個身份只能使用一年,然後其他身份是永久的。
通常金鑰 (Key) 本身是不包括期限的,不論是主金鑰還是次金鑰,都是由它的簽名帶給他的期限,也就是所謂的期限其實是可以修改的。
而 User-ID 下的 Self-Cert 規定了主金鑰的使用期限,只要延長了自簽章的期限,主金鑰的期限就會跟著增加。
而子金鑰 (Sub-Key) 則是由綁定簽名決定有效期,當然這些都是可以修改的。重複簽發綁定簽名就能替換掉原本的子金鑰期限。
總結:
PGP 作為一個隱私保障的工具,是非常好的傳輸機密訊息的一個方式。不僅可以生成只有本人才能驗證的專屬憑證外,也能建立信任網路,簽發其他人的公鑰,使其他人的公鑰也受信任。
一些人可能以為 PGP 只能針對單個身份驗證其實是錯誤的,PGP 允許多使用者驗證,甚至允許同時使用兩個公鑰加密,使得寄送者、收件者都能解密該機密訊息。
通過釋放自己的公鑰到有一定名氣的公鑰伺服器,可以建立起與陌生人的安全加密通訊的環境。