正在將 OpenPGP 私有金鑰匯入 Proton Mail
- 閱讀
- 4 分鐘
- 類別
- 加密和金鑰
Proton Mail 讓您能將現有的 OpenPGP 私有金鑰(或秘密金鑰)匯入其已加密的生態系統中。這將使您能繼續使用這些金鑰來簽署和解密您的電郵。
出於安全與相容性考量,您匯入的金鑰必須符合 Proton 的最低金鑰要求。
如果您的金鑰符合我們的最低要求,您應該可以直接匯入。
如果您的金鑰不符合我們的最低要求,在上載後將會顯示錯誤畫面。此錯誤畫面會說明金鑰被拒絕的原因。我們提供了修改金鑰的指南,以便您進行匯入。
如何將您的 OpenPGP 金鑰匯入至 Proton Mail
- 在 Proton Mail 網頁應用程式上登入您的 Proton 帳號
- 按一下 設定 → 所有設定 → 加密和金鑰 → 電郵金鑰。
- 選取與該金鑰相關聯的電郵位址,按一下顯示為 產生金鑰 的下拉式選單,然後按一下 匯入金鑰。

大功告成!您現在可以在 Proton Mail 上使用您的 OpenPGP 私有金鑰。
如何修改您的 OpenPGP 金鑰
如果您的金鑰不符合我們的要求,您將無法匯入您的金鑰。
我們將介紹最常見的金鑰被拒絕情境,並說明您可以如何解決此情況。
開始之前
如果您需要修改 OpenPGP 私有金鑰以將其上載至 Proton Mail,在開始之前您必須採取以下兩個步驟:
- 下載並設定 GnuPG 並匯入您的金鑰
- 在修改 OpenPGP 金鑰之前,請先建立備份版本
設定 GnuPG 並匯入您的金鑰
在本指南中,我們將使用 GnuPG (GNU Privacy Guard) 工具來修改我們想要匯入的私有金鑰。
如果您尚未安裝 GnuPG,請前往 https://gnupg.org/download/(新視窗) 以尋找適用於您裝置的應用程式。
如果您想匯入至 Proton Mail 的金鑰尚未匯入至 GnuPG,您需要使用以下命令進行匯入:
gpg --import
以下大多數操作將依賴基於以下內容的互動式命令
gpg --edit-key
重要提示:在修改金鑰之前請先進行備份
如果您嘗試匯入的私有金鑰除了 Proton 之外還用於其他應用程式, 請務必在修改任何金鑰之前建立其備份副本。
如果您已經將私有金鑰匯入至 GnuPG,您可以使用以下命令進行此操作:
gpg --armor --export-secret-keys > backup-key.asc
稍後您可以使用以下命令重新匯入原始金鑰:
gpg --import backup-key.asc
您的私有金鑰被拒絕的原因
您的金鑰設有過期日期

這代表的意思
OpenPGP 金鑰(及子金鑰)可以設有過期日期,過期後,所有符合 OpenPGP 標準的函式庫都將會拒絕它們。
為了確保您始終可以使用此 OpenPGP 金鑰在 Proton Mail 上接收您的電郵,我們要求所有匯入的金鑰都不得設定過期日期。
如果您嘗試匯入包含過期日期的金鑰,它將會被拒絕。
如何解決此問題
- 開啟 GnuPG,並透過執行以下命令來檢查金鑰是否設定了過期日期:
gpg --list-keys
其中「user id」為與該金鑰相關聯的電郵位址。
您將看到的輸出會類似於以下內容:
$ gpg --list-keys key.import.test@example.proton.mesec rsa3072 2022-09-21 [SC] [expires: 2024-09-20] C931E2A00A01EE4604049A4EA9C08446B1B88861uid Import key guide ssb rsa3072 2022-09-21 [E] [expires: 2024-09-20] |
在這裡,我們可以看到主金鑰和加密子金鑰的過期日期都設定為 2024-09-20。
若要匯入至 Proton Mail,我們需要編輯金鑰,使其沒有過期日期。
2. 若要編輯金鑰,請執行以下命令:
gpg --edit-key
GnuPG 將進入互動模式。您需要檢查每個子金鑰並編輯其過期日期。您可以使用以下命令選取子金鑰:
key
然後使用指令將其過期日期設定為 永不 :
expire 0
3. 使用以下指令儲存:
save
對於上方範例中的金鑰,整個記錄將如下所示:
$ gpg --edit-key key.import.test@example.proton.megpg> key 0gpg> expire 0gpg> key 1gpg> expire 0gpg> save |
4. 使用以下指令檢查金鑰的過期日期:
gpg --list-keys
您看到的輸出應該會像這樣:
$ gpg --list-keys key.import.test@example.proton.mepub rsa3072 2022-09-21 [SC] C931E2A00A01EE4604049A4EA9C08446B1B88861uid [ultimate] Import key guide sub rsa3072 2022-09-21 [E] |
如您所見,列出過期日期的部分現在已留空。
5. 我們現在可以使用以下指令從 GnuPG 匯出金鑰:
gpg --armor --export-secret-keys > exported-key.asc
6. 您現在可以將新匯出的金鑰匯入至 Proton Mail
您的金鑰身分不正確或具有多個身分

這代表的意思
OpenPGP 金鑰可以與一或多個具有指定電子郵件地址的使用者身分相關聯。
在某些 Proton 服務中,此身分可用於尋找指定位址的金鑰。
為確保您的金鑰與目標位址相關聯,並避免其與錯誤的位址相關聯,Proton 要求所有匯入的金鑰必須包含單一使用者 ID,且該 ID 使用與金鑰要匯入之 Proton 帳號相同的電子郵件地址。
如果您有多個 Proton Mail 位址, 請確保您將正確的金鑰匯入到正確的位址。

如果該位址具有多個使用者身分(其中一個可能與您要將金鑰匯入其中的 Proton Mail 位址相關聯),也可能會發生此錯誤。在此情況下,Proton 要求移除其他身分,因為如果該位址是外部位址(非 Proton Mail 位址),Proton 便無法確認金鑰是否由該位址的所有者 所建立。
如何解決此問題
- 開啟 GnuPG 並 檢查有哪些身分與您的金鑰相關聯。您可以使用指紋來選取您的金鑰,指紋可以在匯入對話方塊中找到。 您可以透過執行以下指令來存取此功能:
gpg --list-keys
您將會看到類似如下的輸出:
$ gpg --list-keys 5980f1c63aeb7534f36c3c669b838c4a93779a09pub rsa3072 2022-10-11 [SC] 5980F1C63AEB7534F36C3C669B838C4A93779A09uid [ultimate] Some identity sub rsa3072 2022-10-11 [E] |
在這裡我們可以看到,該金鑰具有一個與非 Proton 處理的電子郵件地址相關聯的使用者身分。
2. 藉由執行以下指令來編輯金鑰:
gpg --edit-key
然後使用以下指令建立新的使用者身分:
adduid
指定姓名與電子郵件地址(該電子郵件地址必須是您要將金鑰匯入至其中的 Proton Mail 位址)。
現在您的金鑰可能具有多個身分。若要繼續,您必須移除與您的 Proton Mail 位址無關的身分。
3. 使用以下指令選取您要移除的其他使用者身分:
uid
使用以下指令刪除:
deluid
4. 使用以下指令儲存變更:
save
對於上方範例中的金鑰,整個記錄將如下所示:
$ gpg --edit-key 5980f1c63aeb7534f36c3c669b838c4a93779a09...gpg> adduidReal name: Import testEmail address: key.import.test@example.proton.meComment:...Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? Osec rsa3072/9B838C4A93779A09 created: 2022-10-11 expires: never usage: SC trust: ultimate validity: ultimatessb rsa3072/07FE974BC493DC08 created: 2022-10-11 expires: never usage: E [ultimate] (1) Some identity [ unknown] (2). Import test gpg> uid 1...gpg> deluidReally remove this user ID? (y/N) y...gpg> save |
5. 使用以下指令檢查您金鑰的使用者身分:
gpg --list-keys
您看到的輸出應該會像這樣:
$gpg --list-keys 5980f1c63aeb7534f36c3c669b838c4a93779a09...pub rsa3072 2022-10-11 [SC] 5980F1C63AEB7534F36C3C669B838C4A93779A09uid [ultimate] Import test sub rsa3072 2022-10-11 [E] |
如您所見,該金鑰僅具有一個與之相關聯的使用者身分,且該身分已連結至單一 Proton Mail 位址。
6. 使用以下指令從 GnuPG 匯出金鑰:
gpg --armor --export-secret-keys > exported-key.asc
7. 您現在可以將新匯出的金鑰匯入至 Proton Mail
您的金鑰沒有加密子金鑰

這代表的意思
為確保 Proton Mail 使用者可以接收加密電子郵件,Proton 服務預期每個位址金鑰都能夠加密資料。 這就是為什麼我們要求匯入的金鑰必須包含至少一個可以進行加密的子金鑰(某些子金鑰可能僅能用於簽名)。
如何解決此問題
- 開啟 GnuPG 並藉由執行以下指令來檢查您嘗試匯入之金鑰的子金鑰:
gpg --list-keys
您看到的輸出應該會像這樣:
$ gpg --list-keys key.import.test@example.proton.mepub rsa3072 2022-09-21 [SC] C931E2A00A01EE4604049A4EA9C08446B1B88861uid [ultimate] Import key guide |
在此範例中,該金鑰僅具有一個子金鑰,其具備簽名 (Sign) 與認證 (Certify) 功能(標記為 [SC])。沒有具備加密功能的子金鑰(該子金鑰將會標記為 [E])。
2. 使用以下指令選取要編輯的金鑰:
gpg --edit-key
使用以下指令加入新的子金鑰:
addkey
選取加密演算法。Proton 僅支援 RSA (僅加密) 或 ECC (僅加密)。
對於 RSA 子金鑰,請選取大小。Proton 要求至少為 2048 位元。
選取過期日期。Proton 要求其為 0 (無過期日期)。
3. 確認新的子金鑰,然後使用以下命令儲存變更:
save
整個對話記錄看起來應該像這樣:
$ gpg --edit-key key.import.test@example.proton.megpg> addkeyPlease select what kind of key you want: (3) DSA (sign only) (4) RSA (sign only) (5) Elgamal (encrypt only) (6) RSA (encrypt only) (14) Existing key from cardYour selection? 6RSA keys may be between 1024 and 4096 bits long.What keysize do you want? (3072)Requested keysize is 3072 bitsPlease specify how long the key should be valid. 0 = key does not expire = key expires in n days w = key expires in n weeks m = key expires in n months y = key expires in n yearsKey is valid for? (0) 0Key does not expire at allIs this correct? (y/N) yReally create? (y/N) ygpg> save |
4. 使用以下命令檢查金鑰的使用者身分:
gpg --list-keys
gpg --list-keys key.import.test@example.proton.mepub rsa3072 2022-09-21 [SC] C931E2A00A01EE4604049A4EA9C08446B1B88861uid [ultimate] Import key guide sub rsa3072 2022-10-11 [E] |
如您所見,此金鑰現在具有一個具備加密能力的子金鑰。
5. 使用以下命令從 GnuPG 匯出金鑰:
gpg --armor --export-secret-keys > exported-key.asc
6. 您現在可以將新匯出的金鑰匯入至 Proton Mail
您的金鑰使用了不受支援的演算法

這代表的意思
OpenPGP 金鑰可以支援許多不同的密碼演算法,其中一些 Proton 認為不夠安全,無法保護您的電子郵件。
Proton 將拒絕使用弱或過時演算法的金鑰, 以避免降低其他使用者的安全性, 並確保 Proton Mail 使用者可以解密收到的訊息。
Proton 不 支援以下非對稱演算法:
- 金鑰小於 2048 位元的 RSA
- ElGamal
- 使用 x25519 以及 NIST 的 P-256、P-384 或 P-521 以外曲線的 ECC 金鑰
- DSA
我們還要求匯入的金鑰表明支援 AES-256 作為對稱加密、SHA-256 作為雜湊函數,以及 ZLIB 作為壓縮函數。
如何解決此問題
- 使用以下命令檢查每個金鑰使用的演算法
gpg --list-keys
其輸出將類似於:
$ gpg --list-keys key.import.test@example.proton.mesec dsa2048 2022-09-21 [SC] [expires: 2024-09-20] C931E2A00A01EE4604049A4EA9C08446B1B88861uid Import key guide ssb elg2048 2022-09-21 [E] [expires: 2024-09-20] |
此處的主金鑰(標記有 SC(新視窗) 功能)是 DSA 金鑰,而加密子金鑰是 ElGamal 金鑰。
如果您的主金鑰(具有認證能力的主金鑰)使用過時或弱演算法,您將無法匯入該金鑰。
2a. 您可以直接在 Proton Mail 網頁應用程序的帳號設定中產生新金鑰,或使用 GnuPG 配合以下命令:
gpg --generate-key
2b. 如果您的主金鑰使用受支援的演算法,但其中一個子金鑰使用過時或弱演算法,您可以移除此子金鑰(並在需要時產生新的子金鑰),命令如下:
gpg --edit-key
使用以下命令選取使用不受支援演算法的子金鑰:
key
其中 n 是子金鑰的索引(如提示中所示)
然後使用以下命令將其刪除:
delkey
如果您不再擁有加密子金鑰,可以使用以下命令產生一個新的子金鑰:
addkey
3. 使用以下命令確認變更:
save
完整的記錄看起來應該像這樣:
$ gpg --edit-key test@gpg.example.proton.me...sec rsa3072/BC93CFA50EFCDAF0 created: 2022-11-04 expires: never usage: SC trust: ultimate validity: ultimatessb elg2048/CEB2A2B7DB363D99 created: 2022-11-04 expires: never usage: E[ultimate] (1). teststes gpg> key 1gpg> delkey...gpg> addkey...sec rsa3072/BC93CFA50EFCDAF0 created: 2022-11-04 expires: never usage: SC trust: ultimate validity: ultimatessb rsa2048/E910A70D5E1E5FC8 created: 2022-11-04 expires: never usage: E [ultimate] (1). teststes gpg> save |
4. 使用以下命令從 GnuPG 匯出金鑰:
gpg --armor --export-secret-keys > exported-key.asc