OpenPGP 鍵インスペクター & パケットパーサー

armor された OpenPGP 鍵、署名、メッセージを貼り付ける — またはバイナリ .gpg ファイルを読み込む — と、フィンガープリント、鍵 ID、ユーザー ID、副鍵、署名パケット、生のパケットツリーが表示されます。完全にブラウザー内で動作し、何もアップロードされません。
パーサーのみ。 このツールは OpenPGP データをデコードして表示します — 署名を暗号学的に検証せず、復号もせず、パスフレーズも要求しません。実際に検証・復号するには、自分のキーリングで GnuPG(gpg --verify、gpg -d)を使ってください。そしてどんなツールでも同じこと:本物の秘密鍵はブラウザータブではなくキーリングに置くべきです。
すべての armor 種別に対応:PUBLIC KEY BLOCK、PRIVATE KEY BLOCK、MESSAGE、SIGNATURE、ARMORED FILE。
バイナリキーリングのエクスポート / .sig / .gpg — ローカルで読み取り、決してアップロードされません
このツールが検査すること — と意図的にしないこと
armor をデコードし(ラベル、ヘッダー、base64 ペイロード、CRC-24 転送チェックサム)、新旧両方のヘッダー形式のすべてのパケットを解析し、v4/v5/v6 鍵パケットを読み(アルゴリズム、MPI サイズ、作成時刻)、v4 フィンガープリント(SHA-1)と v6 フィンガープリント(SHA-256)を計算し、鍵 ID を導出し、ユーザー ID、副鍵、署名サブパケットを列挙します。署名の検証はしません(RFC 9580 §5.2.4 のハッシュ・検証機構全体と信頼されたキーリングが必要)、復号せず、鍵サーバーから鍵を取得しません。出力は GnuPG と相互確認してください:gpg --show-keys file.asc がフィンガープリントとユーザー ID を、gpg --list-packets file.asc がパケット構造をダンプします。
このページのサンプル鍵 — 4 つのサンプルボタンは、このページのために純粋に生成された実在の RSA-2048 OpenPGP v4 鍵(どこでも未使用)を貼り付けます。秘密鍵サンプルは、パーサーが秘密 MPI のレイアウトを表示できるよう、意図的に暗号化せず(S2K usage 0)に保管されています。実際にエクスポートされた秘密鍵なら、暗号方式と S2K 導出が表示されます。
セルフテスト
組み込みサンプル鍵、分離署名、署名付きメッセージに対してパーサーを再実行します:armor ラベル、CRC-24 の合格と意図的な破損、パケットタグ列、独立に計算した値に対する v4 フィンガープリントと鍵 ID、ユーザー ID、副鍵フィンガープリント、秘密鍵検出、さらにネガティブテスト(ゴミ入力と切断パケットの拒否)。何もどこにも送信されません。
OpenPGP をゼロから解説
一文で言うと:OpenPGP はエンドツーエンド暗号化と電子署名のための公開標準(RFC 4880、2024 年に RFC 9580 で更新)で、最も有名なのはメールの保護 — すべては、通常テキストに優しい「armor」層で包まれる、小さなラベルつきバイナリパケットで運ばれます。
OpenPGP とは何か?

PGP("Pretty Good Privacy")は 1991 年、Phil Zimmermann が、誰でもメッセージを暗号化・署名できるプログラムとして公開しました。単一ベンダーの問題を逃れるため、メッセージ形式は OpenPGP として標準化されました(1998 年 RFC 2440、2007 年 RFC 4880、2024 年 RFC 9580)。今日、最も一般的な実装は GnuPG で、同じパケット形式は署名つき git コミット、ソフトウェアパッケージ署名、鍵サーバー、OPENPGPKEY DNS レコードにも現れます。

モデルはエンドツーエンドです:あなたと相手がそれぞれ個人の鍵ペアを生成し、あなた宛てに暗号化されたものは、端末を決して離れない秘密鍵でしか復号できません。TLS のような中央認証局の代わりに、他人の鍵への信頼は互いの鍵に署名し合うこと — 「信頼の網」— から来ます。その網を使うか、単に帯域外でフィンガープリントを比較するか(電話、名刺)はあなた次第で、形式自体はどちらも強制しません。

OpenPGP 鍵とは何か?

OpenPGP の「鍵」は実は小さなパケットの束です:1 つの主鍵パケット(あなたの識別情報の錨、通常は署名を許可)、1 つ以上のユーザー ID パケット("Alice <alice@example.com>")、それらを主鍵に束ねる自己署名、そして任意の副鍵とその束縛署名 — 典型的には、貴重な主鍵をオフラインに保てるよう、暗号化専用の副鍵です。このページに貼り付ける armor ブロック全体が、その束です。

フィンガープリントは主鍵パケットのハッシュです — v4 鍵は SHA-1(20 バイト)、v6 鍵は SHA-256(32 バイト)— 公開部分のみに対して計算されます。鍵 ID は v4 フィンガープリントの末尾 8 バイト(v5 は先頭 8 バイト)にすぎません。フィンガープリントは、鍵が手元に届くまでの間に誰もすり替えていないことを確認するために帯域外で比較するもので、鍵 ID は鍵サーバー用の短いハンドルで、意志ある攻撃者に対する衝突安全性はありません。

アルゴリズム ID名前鍵での典型的な用途
1RSA古典的なオールラウンダー。2048〜4096 ビット、署名・暗号化の両方
19ECDSANIST 曲線(P-256 など)、署名
18ECDHCurve25519/P-256 鍵合意、暗号化副鍵
22EdDSAEd25519 署名(GnuPG 2.4+ の現代のデフォルト)
25X25519Ed25519 主鍵と対の暗号化副鍵(v6 鍵)

秘密鍵ブロックは、公開部分の後に秘密の数値を運びます:保護方法を示す S2K usage オクテット(0 = 無保護、254/255 = パスフレーズ導出鍵 + 暗号方式)、次に秘密 MPI とチェックサム。このページはその保護モードを表示しますが、パスフレーズを要求せず、秘密情報の復号を試みることも決してありません。

OpenPGP パケットとは何か?

armor の下では、すべての OpenPGP オブジェクトがパケットの列です。各パケットはタグバイトで始まります:旧形式は 4 ビットのパケット種別と長度種別を詰め込み、新形式(CTB、ビット 6)は 6 ビットの種別と、部分チャンクのデータまで記述できる長度バイトを使います。一般的なタグ:6 = 公開鍵、5 = 秘密鍵、14 = 副鍵、13 = ユーザー ID、2 = 署名、4 = ワンパス署名、11 = リテラルデータ、8 = 圧縮データ、18 = 暗号化・MDC 保護データ。このページは見つけたすべてのパケットのタグ、ヘッダー形式、長さ、16 進ダンプを出力し、パケットヘッダーが不正ならバイト位置つきでエラーを出します。

署名パケットはメタデータをハッシュ領域と非ハッシュ領域のサブパケットで運びます。署名自体がカバーするのはハッシュ領域だけです。非ハッシュ領域(歴史的に発行者鍵 ID に使用)は転送中に誰でも自由に書き換えられるため、読み手はそれを事実ではなくヒントとして扱わなければなりません。ユーザー ID の自己署名こそが名前を鍵に束ねるもので、鍵パケット単独では、それを単独で貼り付けても、所有者が誰かについては何も証明しません。

ASCII armor はテキトなラッパーです:-----BEGIN PGP PUBLIC KEY BLOCK-----、Version: や Comment: などの任意ヘッダー、パケット列の base64、そして 24 ビット CRC を持つ末尾の =xxxx 行。この CRC は転送破損だけを捉えます — base64 の 1 文字を反転すればこのページがフラグします — しかし署名ではなく、作者について何も証明しません。

よくある間違い
  • フィンガープリントを比較せずに鍵を信頼する。 誰でも任意の名前で鍵を生成できます。すでに信頼するチャネル(対面、電話)でのフィンガープリント比較こそが、認証ステップのすべてです。
  • armor CRC を署名と混同する。 「CRC OK」バッジは base64 が旅を生き延びたことだけを意味します。検証はこのページが意図的に行わない暗号学的操作です。
  • 鍵 ID を識別として使う。 64 ビット鍵 ID は、並程度の計算能力の攻撃者に偽造できます(「鍵 ID 衝突」)。常に完全なフィンガープリントを引用してください。
  • 本物の秘密鍵を Web ページに貼り付ける。 このようなローカル・アップロードなしのページですら、身につけたくない習慣です。ここのサンプルはデモ用に生成された使い捨て鍵です。
  • 「PGP MESSAGE」=暗号化と仮定する。 armor ラベルは内容について何も言いません — このページのサンプルメッセージは署名付きですが平文で、暗号化データとリテラルデータを実際に区別するのはパケットタグ 18 と 11 です。
  • v3 鍵をインポートする。 バージョン 3 鍵(1996 年以前の設計、弱い 16 ビット鍵 ID)は 2014 年から非推奨です。このインスペクターは意図的に拒否します。
よくある質問

署名を検証しますか? いいえ。解析して表示するだけです。署名検証には RFC 9580 のハッシュトレーラ構築全体、署名者の公開鍵、その鍵を信頼するかの判断 — GnuPG か OpenPGP ライブラリの仕事 — が必要です。

openpgp.js との違いは? openpgp.js はアプリに組み込む完全な実装(暗号化、復号、署名、検証)です。このページは、ブラウザー内で OpenPGP 構造を読んで監査するための、依存関係のないインスペクターです。

自分の GnuPG エクスポートを読めますか? はい — v4、v5、v6 鍵、分離署名、メッセージ。バージョン 3 鍵は注記つきで拒否されます(2014 年から非推奨)。

なぜ 16 進入力モードがあるの? 生の OpenPGP データはバイナリです。キーリングや .gpg ファイルの 16 進ダンプがあれば、16 進を貼り付ければパーサーはデコード済みバイトとまったく同様に扱います。

何かアップロードされますか? いいえ。解析、フィンガープリント計算、レポート生成はすべてこのタブ内で行われ、ページは完全にブラウザー内で動作します。