Email Security

PGP / GPG

Pretty Good Privacy / GNU Privacy Guard

Category: Email Security / Updated: 2026-05-26

📖

Overview

PGP(Pretty Good Privacy)とは、1991年にPhil Zimmermann氏によって開発された暗号化ソフトウェアであり、メールの暗号化とデジタル署名を実現するための標準的な技術です。公開鍵暗号方式と共通鍵暗号方式を組み合わせたハイブリッド暗号を採用し、送信者と受信者の間でエンドツーエンドの機密性を保証します。PGPはメール本文だけでなく、ファイルやディスク全体の暗号化にも広く利用されています。

GPG(GNU Privacy Guard / GnuPG)は、PGPの暗号化規格であるOpenPGP(RFC 4880)に準拠したオープンソースの実装です。商用ソフトウェアであるPGPとは異なり、GPGは無料で利用可能であり、Linux、macOS、Windowsなどの主要なプラットフォームで動作します。GPGはメールクライアントとの統合(Thunderbird + Enigmailなど)やパッケージ署名、Gitコミットの署名など幅広い用途で使われています。

PGP/GPGの特徴的な信頼モデルとしてWeb of Trust(信頼の網)があります。これは、中央の認証局(CA)に依存せず、ユーザー同士が互いの公開鍵に署名することで信頼を構築する分散型の仕組みです。鍵の真正性は、直接的な鍵署名や、信頼する第三者を介した間接的な署名の連鎖によって確認されます。この分散型アプローチは、S/MIMEのような中央集権型PKIとは対照的な設計思想を持っています。

🔬

Details

PGPの暗号化の仕組み

PGPでメールを暗号化する際は、まずランダムなセッション鍵(共通鍵)を生成し、この鍵でメール本文を高速な共通鍵暗号(AES-256など)で暗号化します。次に、このセッション鍵を受信者の公開鍵で暗号化し、暗号文と共に送信します。受信者は自身の秘密鍵でセッション鍵を復号し、さらにその鍵でメール本文を復号します。

このハイブリッド方式により、公開鍵暗号の利便性(鍵配布の容易さ)と共通鍵暗号の処理速度を両立しています。複数の受信者に送信する場合は、同じセッション鍵を各受信者の公開鍵でそれぞれ暗号化するため、メール本文の再暗号化は不要です。

デジタル署名の仕組み

PGPのデジタル署名は、送信者がメール本文のハッシュ値を計算し、それを自身の秘密鍵で暗号化して署名を作成します。受信者は送信者の公開鍵で署名を検証し、メールが改ざんされていないこと(完全性)と、送信者本人が作成したこと(認証性・否認防止)を確認できます。

署名と暗号化は独立して使用することも、組み合わせて使用することも可能です。実務では、暗号化と署名の両方を適用することで、機密性・完全性・認証性のすべてを同時に担保するのが推奨されます。

Web of Trust(信頼の網)

Web of Trustは、PGP独自の分散型信頼モデルです。ユーザーAがユーザーBの公開鍵に署名すると、「AはBの鍵が本人のものであると保証する」という意味になります。ユーザーCがAを信頼している場合、CはAの署名を通じてBの鍵の真正性を間接的に確認できます。

信頼のレベルには「完全信頼(Full Trust)」「限定信頼(Marginal Trust)」「信頼しない(Untrusted)」があり、ユーザーは各鍵に対してこれらの信頼度を設定します。一般的な設定では、完全信頼のユーザー1人の署名、または限定信頼のユーザー3人の署名があれば、その鍵は有効と判断されます。

鍵管理(Key Management)

PGP/GPGにおける鍵管理は、セキュリティの根幹を支える重要な要素です。鍵ペア(公開鍵と秘密鍵)の生成時には、十分な鍵長(RSA 4096ビット以上またはEd25519)と強力なパスフレーズの設定が必要です。公開鍵は鍵サーバー(SKS、keys.openpgp.orgなど)にアップロードして配布できます。

秘密鍵の管理は特に重要であり、オフラインでの保管、ハードウェアセキュリティキー(YubiKeyなど)での保護、サブキーの活用が推奨されます。失効証明書(Revocation Certificate)は鍵ペア生成時に作成し、安全な場所に保管しておくことで、秘密鍵の紛失・漏洩時に公開鍵を失効させることができます。

OpenPGP標準と実装

OpenPGPは、PGPの暗号化フォーマットを標準化したIETF規格(RFC 4880、後継のRFC 9580)です。この標準に準拠した複数の実装が存在し、GnuPGの他にもSequoia PGP、OpenPGP.jsなどがあります。各実装は相互運用性を持ち、異なるソフトウェア間でも暗号化メールのやり取りが可能です。

近年では、Autocryptプロトコルのように、鍵交換を自動化してPGP暗号化の利用障壁を下げる取り組みも進んでいます。メールヘッダーに公開鍵を埋め込むことで、ユーザーが鍵サーバーを意識することなく暗号化メールを利用できるようになります。

PGP/GPGの用途

PGP/GPGはメール暗号化以外にも多くの用途があります。ファイル暗号化ではディスク上の機密ファイルを保護でき、ソフトウェア署名ではLinuxディストリビューションのパッケージやリリースファイルの真正性を検証できます。Gitコミット署名では開発者が自身のコードコミットに署名し、コードの出所を証明できます。

また、セキュリティ研究者やジャーナリストは、機密情報の安全な通信手段としてPGP暗号化メールを活用しています。企業においても、取引先との機密文書のやり取りや契約書の電子署名にPGP/GPGが利用されるケースがあります。

🛡️

Security Measures

  • 01
    十分な鍵長と最新のアルゴリズムを使用:RSA鍵の場合は最低4096ビット、楕円曲線暗号の場合はEd25519/Curve25519を使用してください。SHA-1は脆弱性が確認されているため、ハッシュアルゴリズムにはSHA-256以上を選択し、定期的に鍵のアルゴリズムを見直しましょう。
  • 02
    秘密鍵の厳格な保護:秘密鍵には強力なパスフレーズを設定し、可能であればYubiKeyなどのハードウェアセキュリティキーに格納してください。日常的な操作にはサブキーを使用し、マスター鍵はオフラインで安全に保管することで、鍵漏洩時の影響を最小限に抑えられます。
  • 03
    失効証明書の事前作成と安全な保管:鍵ペア生成直後に失効証明書を作成し、秘密鍵とは別の安全な場所に保管してください。秘密鍵の紛失や漏洩が発生した場合、速やかに失効証明書を鍵サーバーに公開して、該当する公開鍵の無効化を周知しましょう。
  • 04
    公開鍵の指紋(Fingerprint)の確認:公開鍵を受け取った際は、鍵サーバーだけに頼らず、別の通信チャネル(電話、対面など)を通じて鍵の指紋を確認してください。鍵サーバーへの不正な鍵登録やなりすましを防ぐため、指紋の照合は必須です。
  • 05
    有効期限の設定と定期的な鍵更新:公開鍵には適切な有効期限(1〜2年程度)を設定し、期限前に新しい鍵ペアに移行してください。有効期限を設定することで、古い鍵が無期限に使われるリスクを軽減し、暗号アルゴリズムの陳腐化にも対応できます。
  • 06
    メールクライアントとの適切な統合:Thunderbird(OpenPGP内蔵)やMutt、Outlookプラグインなど、PGP/GPGをサポートするメールクライアントを使用し、暗号化・署名の操作を自動化してください。HTML形式のメールではなくプレーンテキストを推奨し、EFAIL攻撃などのリスクを低減しましょう。
⚠️

Incidents

📋 EFAIL脆弱性によるPGP暗号化メールの平文漏洩(2018年)

2018年、ドイツの研究チームがPGPおよびS/MIMEの暗号化メールに影響する「EFAIL」脆弱性を公開しました。この攻撃は、暗号文を改ざんしたメールを被害者に送信し、メールクライアントが自動的にHTML内の外部リソース(画像など)を読み込む際に、復号された平文が攻撃者のサーバーに送信されるというものでした。

EFAILはPGP/GPGの暗号化アルゴリズム自体の脆弱性ではなく、メールクライアントの実装上の問題に起因していました。対策として、HTMLメールの外部リソース自動読み込みの無効化、MDC(Modification Detection Code)の必須化、およびメールクライアントのアップデートが推奨されました。

📋 SKS鍵サーバーへの鍵汚染攻撃(2019年)

2019年、攻撃者がSKS(Synchronizing Key Server)鍵サーバーネットワークに対して、正規ユーザーの公開鍵に大量の不正な署名を付加する「鍵汚染(Key Poisoning)」攻撃を実行しました。数千件の偽の署名が付加された鍵をインポートすると、GnuPGが極端に遅くなったり、クラッシュしたりする問題が発生しました。

この攻撃により、SKS鍵サーバーの設計上の問題(誰でも任意の鍵に署名を追加でき、削除できない)が浮き彫りになりました。対策として、keys.openpgp.orgのような新世代の鍵サーバーへの移行や、WKD(Web Key Directory)による鍵配布が推奨されるようになりました。

📋 エドワード・スノーデン事件におけるPGPの役割(2013年)

2013年、NSA(米国国家安全保障局)の元契約者エドワード・スノーデン氏が、大規模監視プログラムに関する機密文書をジャーナリストに提供した際、PGP暗号化メールが重要な通信手段として使用されました。スノーデン氏はジャーナリストのグレン・グリーンウォルド氏にPGPの使用を促し、安全な通信チャネルを確立しました。

この事例は、PGP暗号化が国家レベルの監視に対しても有効な保護手段であることを実証しました。同時に、PGPの利用が一般ユーザーにとって技術的障壁が高いことも明らかになり、エンドツーエンド暗号化の普及と使いやすさ向上の議論を加速させるきっかけとなりました。

🔗

Related Terms