本文へスキップ
AZ Tools

PGP 公開鍵インスペクター

ASCII アーマー形式の OpenPGP 公開鍵ブロックをブラウザー内で復号し、その中に実際に何があるかを示します。主鍵とすべての副鍵の完全なフィンガープリントを、ラベルから読み取るのではなく仕様が定めるとおりに計算して表示し、長い鍵 ID、アルゴリズムと鍵長、作成日、自己署名が持っていれば有効期限、そして鍵に結び付いたすべてのユーザー ID を示します。確認する理由はたいてい同じです。プロジェクトのサイトや鍵サーバー、Debian のリポジトリから得たフィンガープリントがあり、目の前のブロックがその鍵かどうかを知りたいのです。アーマーの CRC-24 チェックサム、つまり末尾の `=` に続く 4 文字も検証します。この値は、チャット欄や wiki を通る途中で 1 行を失ったブロックを捕まえるために存在します。そうした鍵は見た目だけは完全に整っています。そして本当に大事な助言をもう一度述べます。短い鍵 ID ではなくフィンガープリント全体で照合してください。32 ビットの識別子はノート PC でも衝突を作れますし、strong set のすべての鍵について一致する偽物がすでに公開されています。誤って秘密鍵のブロックを貼り付けた場合は処理を拒否し、その旨を表示します。アップロードは行わず、鍵はすべてこのページで解析されます。

使い方

  1. アーマー形式の公開鍵ブロックを貼り付けるか、.asc または .gpg ファイルを枠にドロップします。
  2. 完全なフィンガープリント 40 桁を、鍵の持ち主が公開している値と照合します。
  3. 作成日と有効期限を確認します。失効した鍵は、失効後に作られた署名を検証できません。
  4. ユーザー ID でこの鍵が名乗る名前とアドレスを見て、副鍵の一覧で実際に署名や暗号化を行う鍵を確認します。
  5. オレンジ色の項目は、その鍵を信頼する前に解消しておくのが賢明です。

よくある質問

鍵 ID ではなくフィンガープリントで照合すべきなのはなぜですか。
短い鍵 ID はフィンガープリントの末尾 32 ビットにすぎず、32 ビットでは何も識別できないからです。同じ短い ID を持つ別の鍵を作るのは普通のハードウェアで数分ですし、2019 年に Evil 32 プロジェクトが PGP の strong set のすべての鍵に対してまさにそれを行い、結果を公開しました。つまり、あなたが気にしている鍵の衝突版がすでに存在しているかもしれません。長い鍵 ID は 64 ビットでいくらかましですが、信頼の根拠としてはやはり安全ではありません。バージョン 4 の鍵の完全なフィンガープリントは 160 ビットで、各プロジェクトがその値をサイトに載せているのには理由があります。
ブロックの末尾にある `=XXXX` の行は何ですか。
バイナリデータの CRC-24 チェックサムで、RFC 4880 がアーマー形式の一部として定めたものです。鍵をあちこちに写す過程で起きるありふれた事故を捕まえます。チャットクライアントが落とした 1 行、ブロックを流し直した wiki、最後の行を取りこぼした貼り付けなどです。base64 は途中で 1 行欠けたブロックも平気で復号し、パケット解析まで通ってしまうことがあるので、チェックサムがなければ壊れた鍵がもっともらしく見えます。このツールはそれを検証し、合わなければ知らせます。ただしこれは事故に対する完全性チェックであって署名ではなく、誰かが意図的に鍵をすり替えることは防げません。
ここに鍵を貼り付けても安全ですか。
公開鍵なら安全です。そもそも公開する前提のものですし、このページはどこにも送りません。解析も、フィンガープリントを作る SHA-1 の計算も、すべてブラウザー内で動きます。ページを開いてからネットワークを切って鍵を貼り付ければ、そのまま動くことで確かめられます。秘密鍵は話が別です。このページを含め、どんなウェブページにも貼り付けないでください。ブロックが PRIVATE KEY で始まる場合、黙って解析せずに処理を拒否します。
SHA-1 は破られているのに、なぜフィンガープリントは SHA-1 なのですか。
バージョン 4 の鍵形式がそう定めており、フィンガープリントはどこで計算しても同じでなければ互いに照合できないからです。SHA-1 は衝突耐性が破られており、それは攻撃者が両方の入力を操れる場面で効いてきます。フィンガープリントではそれが現実の懸念なので、RFC 9580 の新しいバージョン 6 の鍵形式は SHA-256 に変わりました。このツールは鍵自身のバージョンが求める方で計算するので、v4 の鍵には gpg やあらゆる鍵サーバーが表示するのと同じ SHA-1 のフィンガープリントが出ます。
主鍵と副鍵は何が違うのですか。
主鍵が身元です。ユーザー ID を持ち、ほかのすべてを証明します。副鍵はそこにぶら下がって日々の仕事をこなし、ふつうは署名用と暗号化用が一つずつあります。だからこそ主鍵をオフラインに保管できます。鍵ブロックにフィンガープリントが複数見えるのはそのためで、メールの署名に使われた鍵がプロジェクトのサイトのものと違い得るのもそのためです。その署名は副鍵が作ったのです。ここでは両方をそれぞれのフィンガープリントとともに並べるので、どちらがどれか分かります。
鍵が失効しているか、誰が署名したかも確認できますか。
できません。パケットを読んで見つかった鍵・ユーザー ID・日付を報告するだけで、署名の検証も、証明の追跡も、信頼の輪の解決も行いません。それらには他の鍵が必要で、失効については鍵サーバーへの照会が要ります。昨日失効した鍵も、ここでは前日とまったく同じように解析されます。失効状態と署名検証には gpg と鍵サーバーからの新しい取得が必要です。

関連ツール