PGPとは?Pretty Good Privacy暗号化の完全ガイド
PGP暗号化とは?
PGP(Pretty Good Privacy)は、データ通信の機密性と暗号認証を提供する暗号化プログラムです。PGP暗号化は、対称鍵暗号と公開鍵暗号の組み合わせを使用して、意図された受信者だけが読めるようにメッセージ、ファイル、その他のデータを暗号化することを可能にします。1991年にPhil Zimmermannによって開発されたPGPは、世界で最も広く使用されているメール暗号化の標準となり、RFC 4880で定義されたOpenPGP仕様の基礎となっています。機密メールの送信、ソフトウェア発行者のID検証、機密ファイルの保護など、PGPはジャーナリスト、セキュリティ研究者、政府、一般ユーザーから信頼される実績のある暗号フレームワークを提供します。
ソフトウェアをインストールせずにすぐにPGP暗号化を試したい場合、KeychainPGPはブラウザ内で完全に動作するオンラインPGPツールを提供しています。
PGPの歴史
Phil Zimmermannは1991年6月にPGP 1.0をフリーソフトウェアとして公開しました。強力な暗号技術は政府や軍だけでなく、すべての市民がアクセスできるべきだという信念に基づいていました。当時、強力な暗号化はアメリカの輸出規制で軍需品として分類されており、Zimmermannは国際的にPGPを配布したことで、アメリカ税関局から3年間の刑事捜査を受けました。捜査は最終的に1996年に起訴なしで終了し、この事件はデジタル自由の歴史における重要な転換点となりました。
PGPはいくつかの商業的な形態を経て進化しました。Zimmermannは1996年にPGP Inc.を設立し、1997年にNetwork Associates(後のMcAfee)に買収され、最終的に2010年にSymantecに買収されました。これらの変遷を通じて、基礎となる暗号プロトコルはInternet Engineering Task Force(IETF)によってOpenPGPとして標準化され、商業的な所有権に関係なくプロトコルがオープンで相互運用可能であることが保証されました。
OpenPGP標準の公開は、誰でも互換性のある実装を作成できることを意味しました。これにより、GNU Privacy Guard(GnuPGまたはGPG)というフリーでオープンソースの実装が生まれ、今日でも最も広く使用されているPGPツールの一つです。これらの実装の違いについては、PGP vs GPGガイドをご覧ください。
PGP暗号化の仕組み
PGP暗号化は、暗号技術の洗練された組み合わせに基づいています。単一の方式を使用するのではなく、PGPは対称暗号の速度と非対称(公開鍵)暗号の鍵配布の利点を組み合わせたハイブリッド暗号化モデルを採用しています。
公開鍵暗号
PGPの中核にあるのは、非対称暗号とも呼ばれる公開鍵暗号です。各PGPユーザーは、数学的に関連する2つの鍵で構成される鍵ペアを生成します:
- 公開鍵 — 誰とでもオープンに共有します。他のユーザーはこの鍵を使って、あなた宛てのメッセージを暗号化し、あなたのデジタル署名を検証します。
- 秘密鍵(プライベートキーとも呼ばれる) — 厳重に機密を保持します。この鍵を使って、あなた宛てに送られたメッセージを復号し、デジタル署名を作成します。
このシステムの基本的な特性は、公開鍵で暗号化されたデータは対応する秘密鍵でのみ復号でき、その逆も同様であることです。これにより、当事者間でプライベートな通信を行う前に共有秘密を送信する必要がなくなります。
ハイブリッド暗号化モデル
公開鍵暗号は鍵配布の問題を解決しますが、RSAのような非対称アルゴリズムは大量のデータを暗号化するには計算コストが高くなります。PGPはハイブリッドアプローチを使用してこの問題を解決します:
- セッション鍵の生成 — PGPは各メッセージに対して、ランダムでユニークな対称セッション鍵(通常128ビットまたは256ビット)を生成します。
- データの暗号化 — メッセージの内容は、セッション鍵を使用した高速な対称暗号(AES-256など)で暗号化されます。
- セッション鍵の暗号化 — セッション鍵自体が受信者の公開鍵を使用して暗号化されます(非対称操作)。
- パッケージング — 暗号化されたメッセージと暗号化されたセッション鍵がまとめられて受信者に送信されます。
受信者がメッセージを受け取ると、プロセスは逆になります:秘密鍵を使ってセッション鍵を復号し、復号されたセッション鍵を使ってメッセージの内容を復号します。
PGPデジタル署名
暗号化に加えて、PGPはデジタル署名を提供し、2つの重要な機能を果たします:認証(誰がメッセージを送信したかを証明)と完全性(メッセージが転送中に改ざんされていないことを証明)です。
署名のプロセスは次のように動作します:
- PGPは、SHA-256やSHA-512などのアルゴリズムを使用して、メッセージ内容の暗号ハッシュ(固定長のダイジェスト)を計算します。
- ハッシュは送信者の秘密鍵で暗号化され、デジタル署名が生成されます。
- 署名がメッセージに添付されます。
受信者は、送信者の公開鍵で署名を復号して元のハッシュを取得し、受信したメッセージのハッシュを独立に計算し、2つのハッシュを比較することで署名を検証できます。一致すれば、メッセージは本物であり改ざんされていません。
OpenPGP標準
OpenPGPは、PGP互換ソフトウェアが使用するメッセージ形式、アルゴリズム、手順を定義するオープン標準です。ソフトウェア製品ではなく、どの開発者でも実装できる仕様です。
主要な参照文書は:
- RFC 4880(2007年11月) — OpenPGPメッセージ形式の現在の主要仕様。
- RFC 6637(2012年6月) — 楕円曲線暗号(ECC)のサポートでOpenPGPを拡張。
- RFC 9580(2024年) — Ed25519/X25519の必須サポート、AEAD暗号化モード、改善された鍵フィンガープリントで標準を近代化する最新の改訂版。
OpenPGPは相互運用性を保証します:KeychainPGPで暗号化されたメッセージは、GnuPG、Mailvelope、またはその他の準拠実装で復号できます。
信頼のウェブ
PGPの特徴的な機能の一つは、公開鍵の真正性を確立するための分散型信頼のウェブ(Web of Trust)モデルです。TLS/SSLで使用される中央集権型の認証局(CA)モデルとは異なり、PGPではユーザー自身が互いの身元を保証できます。
信頼のウェブは鍵の署名によって機能します:誰かの身元を確認し、その人が特定の公開鍵を管理していることを確認すると、自分の鍵でその人の鍵に署名します。この署名は、その鍵がその人物のものであると信じるという公開された声明です。
KeychainPGPのようなツールは、直感的なインターフェースを通じてユーザーが鍵を直接操作できるようにし、クリップボード暗号化を使用して暗号化メッセージや公開鍵を簡単に共有できるようにすることで、このプロセスを簡素化します。
PGPのアルゴリズムと鍵の種類
PGPは暗号学の進歩とともに進化してきた幅広い暗号アルゴリズムをサポートしています。
クラシックアルゴリズム
- RSA(Rivest-Shamir-Adleman) — PGPの歴史で最も広く展開されている非対称アルゴリズム。2048ビットのRSA鍵は今日の最低限のセキュリティと見なされ、長期的な保護には4096ビットの鍵が推奨されます。
- DSA(Digital Signature Algorithm) — ElGamalとの組み合わせで暗号化の署名に使用。現在はあまり推奨されていません。
- AES(Advanced Encryption Standard) — メッセージ内容の暗号化に使用される主要な対称暗号。AES-128とAES-256がサポートされています。
- SHA-2(SHA-256、SHA-384、SHA-512) — デジタル署名のダイジェスト計算に使用される暗号ハッシュ関数。
モダンアルゴリズム
最新世代のOpenPGP実装は、RSAと同等のセキュリティをはるかに小さな鍵サイズで提供する楕円曲線暗号(ECC)をサポートしています:
- Ed25519 — Curve25519に基づくデジタル署名アルゴリズム。高速でコンパクトな署名を生成します。RFC 9580で推奨されています。
- X25519(Curve25519 ECDH) — 鍵交換(暗号化)に使用。優れたパフォーマンスと強力なセキュリティ特性を提供します。
- NIST P-256 / P-384 / P-521 — NISTが標準化した楕円曲線。OpenPGPでサポートされていますが、一般的にCurve25519ベースのアルゴリズムよりは推奨度が低くなります。
KeychainPGPのようなモダンなツールはこれらの最新アルゴリズムをサポートしており、Ed25519とX25519での鍵生成をシンプルで直感的にしています。
PGPの一般的なユースケース
- セキュアメール — 最も古く、最もよく知られたユースケース。PGPはメール内容の暗号化とメッセージへの署名による真正性の証明を可能にします。
- ファイル暗号化 — PGPは個々のファイルやアーカイブ全体を安全な保存や転送のために暗号化できます。
- ソフトウェア検証 — オープンソースプロジェクトはリリースにPGP鍵で定期的に署名します。ユーザーはこれらの署名を検証してダウンロードの真正性を確認できます。
- セキュアメッセージング — PGPはあらゆるテキストメッセージの暗号化に使用でき、エンドツーエンド暗号化を提供しないプラットフォームで特に有用です。
- ID検証 — PGP鍵のフィンガープリントは検証可能なデジタルIDとして機能します。GitHub上の開発者はPGPでコミットに署名できます。
- 文書署名 — 法的ワークフローではPGP署名を使用して否認防止を確立することがあります。
今日のPGP
誕生から30年以上経った今日も、PGPは利用可能な最も重要な暗号ツールの一つです。OpenPGP標準は進化を続けており、RFC 9580ではモダンな楕円曲線アルゴリズムの必須サポートやAEAD暗号化モードなどの重要な近代化が導入されています。
PGPツールのエコシステムは大幅に充実しました。GnuPGはコマンドライン利用のリファレンス実装として残っています。KeychainPGPのようなモダンなツールは、ネイティブデスクトップアプリ(Windows、macOS、Linux)、Androidアプリ、スクリプティング用CLI、ブラウザ内ウェブアプリを提供し、すべて同じRustベースのSequoia-PGPエンジン上に構築されています。
PGPを始める
PGP暗号化を始める準備はできましたか?おすすめの次のステップはこちらです:
- ブラウザで試す — KeychainPGPのオンラインPGPツールを使って、何もインストールせずに鍵ペアの生成、メッセージの暗号化、署名の検証ができます。
- 入門ガイドを読む — 暗号技術が初めての方は、PGP入門ガイドがステップバイステップでご案内します。
- 実践的なワークフローを学ぶ — PGPの使い方ガイドでは、鍵生成、暗号化・復号、鍵管理、ベストプラクティスをカバーしています。
- クリップボード暗号化を理解する — PGPクリップボード暗号化を使って、クリップボードから直接テキストを暗号化・復号する方法を学びましょう。
- ツールを知る — PGPとGPGの違いを理解して、ワークフローに適したツールを選びましょう。
PGP暗号化は30年以上にわたり機密通信を保護してきました。モダンなツールと標準により、かつてないほどアクセスしやすくなっています。