OpenPGPの秘密鍵をProton Mailにインポートする
- 閲覧中
- 4 分
- カテゴリー
- 暗号化と鍵
Proton Mailを使用すると、既存のOpenPGP秘密鍵(またはシークレットキー)を、暗号化されたエコシステムにインポートできます。これにより、それらの鍵を引き続き使用してメールの署名や復号化を行うことができます。
セキュリティおよび互換性の理由から、インポートする鍵はProtonが規定する最小要件を満たしている必要があります。
お客様の鍵が最小要件を満たしている場合は、直接インポートできます。
鍵が最小要件を満たしていない場合は、アップロードを試みた後にエラー画面が表示されます。このエラー画面では、鍵が拒否された理由が説明されます。鍵をインポートできるように修正するためのガイドを用意しています。
OpenPGP鍵をProton Mailにインポートする方法
- Proton MailウェブアプリでProtonアカウントにログインします
- 設定 → すべての設定 → 暗号化と鍵 → メールの暗号鍵 をクリックします。
- 該当する鍵に関連付けられているメールアドレスを選択し、 鍵を生成と表示されているドロップダウンメニューをクリックして、 鍵をインポートをクリックします。

完了です!これでProton Mailでお客様のOpenPGP秘密鍵を使用できるようになります。
OpenPGP鍵を修正する方法
鍵が当社の要件を満たしていない場合、インポートすることはできません。
ここでは、鍵が拒否される最も一般的なシナリオを紹介し、その解決方法を説明します。
始める前に
Proton Mailにアップロードするためにお客様のOpenPGP秘密鍵を修正する必要がある場合、始める前に以下の2つのステップを実行する必要があります。
- 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
「ユーザー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の鍵は、指定されたメールアドレスを持つ1つ以上のユーザー情報に関連付けることができます。
一部のProtonサービスでは、このユーザー情報を使用して特定のメールアドレスの鍵を検索します。
お客様の鍵が意図したアドレスに関連付けられ、誤ったアドレスに関連付けられるのを防ぐため、Protonでは、インポートされるすべての鍵に、その鍵のインポート先であるProtonアカウントと同じメールアドレスを使用する単一のユーザーIDが含まれている必要があります。
複数のProton Mailアドレスをお持ちの場合は、 正しい鍵を正しいアドレスにインポートしていることをご確認ください。

このエラーは、アドレスに複数のユーザー情報(そのうちの1つが、鍵のインポート先である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] |
ご覧のように、鍵に関連付けられているユーザー情報は1つだけであり、そのユーザー情報は単一のProton Mailアドレスにリンクされています。
6. 次のコマンドを使用してGnuPGから鍵をエクスポートします:
gpg --armor --export-secret-keys > exported-key.asc
7. これで、新しくエクスポートした鍵をProton Mailにインポートできます
お客様の鍵に暗号化用サブキーがありません

これが意味すること
Proton Mailユーザーが暗号化メールを受信できるように、Protonサービスでは、すべてのアドレス鍵がデータを暗号化できることを前提としています。 そのため、インポートされる鍵には暗号化を実行できるサブキーが少なくとも1つ含まれている必要があります(一部のサブキーは署名にのみ使用できます)。
解決方法
- GnuPGを開き、次のコマンドを実行してインポートしようとしている鍵のサブキーを確認します:
gpg --list-keys
表示される出力は、次のようになります:
$ gpg --list-keys key.import.test@example.proton.mepub rsa3072 2022-09-21 [SC] C931E2A00A01EE4604049A4EA9C08446B1B88861uid [ultimate] Import key guide |
この例では、鍵には署名と認証(Certify)機能を持つサブキーが1つ([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 Mailユーザーによって復号化できることを確実にするため、Protonは強度の低いアルゴリズムや古いアルゴリズム を使用している鍵を拒否します。
以下の非対称暗号アルゴリズムは、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鍵です。
プライマリー鍵(証明(certify)機能を持つ鍵)が古い、または強度の低いアルゴリズムを使用している場合、その鍵をインポートすることはできません。
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