PGP Suite

鍵ペアの生成、メッセージの暗号化、メッセージの復号、あなたからのものだと誰もが証明できるテキストへの署名、送られてきた署名の検証、信頼する前の鍵の検査 — 人が実際に GnuPG を開く五つの作業を、コマンドラインなしで。すべてはこのブラウザタブの中でローカルに実行されます:秘密鍵とパスフレーズがアップロードされることも、記録されることも、デバイスの外に出ることも決してありません。秘密鍵をサーバーに貼るよう求めるツールは、唯一大事な試験にすでに落ちているからです。タブを閉じれば鍵も一緒に消えます — 離れる前に、生成したものを保存してください。

鍵ペアを生成

Curve25519 は現代のデフォルトです:小さな鍵、高速な演算、そして現在の GnuPG が新しい鍵に選ぶのと同じ選択です。RSA-4096 は、相手側のツールが古くて必要とする場合にだけ選んでください。パスフレーズは保管中の秘密鍵を暗号化します — 鍵をどこかに保存するなら設定してください。

パスフレーズがこのタブの外に出ることは決してありません。設定して忘れた場合、秘密鍵は復旧できません — 私たちにも、誰にも。

メッセージを暗号化

受信者の公開鍵とメッセージを貼り付けてください。対応する秘密鍵だけが結果を開けるので、暗号文は信頼していない経路でも送れます。

メッセージを復号

秘密鍵、そのパスフレーズ、暗号化されたメッセージを貼り付けてください。平文はここにだけ現れ、他にはどこにも現れません — 保存されないので、タブを閉じる前にコピーしてください。

署名と検証

クリアテキスト署名はメッセージの可読性を保ちながら、あなたの公開鍵を持つ誰もが、それがあなたのもので改変されていないと証明できるようにします。左側で秘密鍵を使って署名し、右側で署名者の公開鍵を使って署名済みメッセージを検証してください。

鍵を検査

誰かから渡された鍵で暗号化する前に、その鍵を見てください:誰のものだと主張しているか、どのアルゴリズムを使うか、いつ作られたか、有効期限があるか、そして帯域外で比較すべき指紋 — 電話で、対面で、鍵を届けた経路ではないあらゆる方法で。

本ツールは OpenPGP.js を使用しています(無改変、GNU Lesser General Public License v3.0 以降(LGPL-3.0-or-later)の下で)。完全なソースコードは OpenPGP.js リポジトリで入手できます。

なぜこれがブラウザの中にあるのか、そして何ができないのか

PGP が三十年生き延びたのは、その信頼モデルにサーバーが不要だからです:鍵は所有者が生成し、暗号化は送信者のマシンで行われ、復号は受信者のマシンで行われます。その形を壊すすべてのウェブフォーム — 秘密鍵をアップロードしてください、復号は私たちがやります — は、PGP が取り除くために存在する仲介者をまさに再導入します。だからこのスイートは逆向きに作られています:OpenPGP.js ライブラリはコードとして一度だけダウンロードされ、その後あなたの鍵、パスフレーズ、平文、暗号文はそのコードによってタブの中で処理され、決して送信されません。ここにアカウントも鍵の保管もないのはそのためです。上で生成した鍵は、保存するまで、それが現れたテキストエリアの中にだけ存在します;正直なワークフローは、両半分をダウンロードし、秘密鍵を暗号化された場所に保管し、公開鍵を人々があなたを探す場所に公開し、「鍵をオンラインで安全に保管します」と申し出るサービスを治療薬ではなく脅威として扱うことです。コンパニオンガイドコマンドラインなしの PGP 暗号化は、最初のメッセージの前に指紋を確認する方法を含め、その流れを一通り説明します。

正直な制限は機能と同じくらい重要です。このページが作るのはクリアテキスト署名だけです — ファイルの分離署名もファイルの暗号化も行いません。ファイルツールも入力を決してアップロードしてはならず、それは付け足しではなく独自のページに値するからです。鍵リングの管理、鍵サーバーからの取得、失効の確認もしません:ここで検査する鍵は貼られたとおりの鍵であり、その指紋こそ他の場所で検証すべき部分です。そして失くしたパスフレーズは救えません — 設計上、復旧手段はありません。スイートの周辺では、隣のツールが隣接する作業を担います:証明書と鍵のマッチャーは TLS 証明書に対して同じペアリング確認を行い、パスワード生成ツールはあなたの秘密鍵にふさわしい強力で一意なパスフレーズを生成します — どちらもこのページと同様、ブラウザの外に何も出しません。

よくある質問

秘密鍵をここに貼るのは本当に安全ですか?

このページでは安全です — そしてその理由は約束ではなくアーキテクチャにあります。このページは復号や署名の際にネットワークリクエストを一切行いません:OpenPGP.js のコードはブラウザタブの中で動作し、鍵はメモリ内で使われ、送信も保存も記録もされません。ご自分で確認できます:ページを読み込んでオフラインにすれば、すべてがそのまま動作します。これはサーバー側の「オンライン PGP」フォームとは別種のツールです。そこでは鍵が本当に他人のマシンへ旅します — 大事な鍵では決して使わないでください。

Curve25519 と RSA-4096 — どちらを生成すべきですか?

新しい用途にはすべて Curve25519 を。現在の GnuPG と OpenPGP.js のデフォルトであり、鍵も署名もはるかに小さく、生成は素数探しの数秒ではなく即時で、弱い RSA パラメータの落とし穴もありません。RSA-4096 は互換性のためにここにあります:非常に古いメールプラグイン、レガシーな HSM ワークフロー、一部の企業ツールは今も楕円曲線鍵を読めません。RSA が必要かどうか分からないなら、必要ありません。

秘密鍵のパスフレーズを忘れたらどうなりますか?

鍵は失われます。パスフレーズは秘密鍵の素材そのものを暗号化しているので、それがなければ誰にも計算を実行できません — このサイトにも(パスフレーズを見たことがありません)、OpenPGP.js にも、GnuPG にも。その不可逆性こそ、セキュリティ特性が設計どおりに働いている証拠です。新しい鍵ペアを生成し、新しい公開鍵を公開してください。アクセスを失うことが痛いなら、パスフレーズはパスワードマネージャに保管してください — 記憶して使い回すのではなく、同じ種類のローカルツールで生成したものを。

検証で署名が一致しないと言われました。どういう意味ですか?

目の前のメッセージが、署名されたメッセージとビット単位で同一ではない — あるいは署名ブロック自体が転送中に壊れた、という意味です。メールクライアントやチャットツールは行を折り返し、ダッシュを変換し、行末の空白を食べてしまいます。クリアテキスト署名は正確なバイト列を対象とするため、よくある原因は転送時の破損です;意図的な編集も検証者の席からはまったく同じに見えます — それこそが署名の意味です。メッセージをファイル添付で送り直してもらい、内容が重要なら指紋を帯域外で比較してください。

GnuPG、Mailvelope、鍵サーバーからなど、既にある鍵を使えますか?

はい。アーマー形式のブロックを書き出して(公開鍵は gpg --armor --export [email protected]、秘密鍵は --export-secret-keys)、このページのどこにでも貼ってください;検査機能は他の OpenPGP ソフトウェアが作った鍵も読みます。形式は標準であり、このサイトの発明ではないからです。逆も成り立ちます:ここで生成した鍵は GnuPG や互換クライアントすべてにきれいにインポートできるので、ここで作ったものに囲い込まれることはありません。