PGPによるクリップボード暗号化

クリップボード暗号化とは?

PGPクリップボード暗号化は、ディスクに保存されたファイルを操作するのではなく、OSのシステムクリップボードから直接読み書きすることでテキストを暗号化・復号する方法です。平文のメッセージを.txtファイルに保存し、コマンドラインツールに渡し、暗号化された.ascファイルを取得する代わりに、テキストをコピーし、キーボードショートカットで暗号化を実行し、暗号化されたPGPメッセージを好きな場所に貼り付けるだけです。クリップボードが入力バッファと出力バッファの両方として機能し、暗号化をテキストベースのあらゆるワークフローのシームレスな一部にします。このアプローチがKeychainPGPのデスクトップでの動作基盤であり、コピー&ペーストをサポートするあらゆるアプリケーション — メールクライアント、チャットアプリ、メモツール、ウェブフォームなどとの統合を可能にしています。

PGPの世界に初めて触れる方は、クリップボード固有のワークフローに深入りする前に、まずPGPとは?で基礎となる暗号概念の入門をお読みください。

なぜクリップボードファーストなのか?

GnuPGのような従来のPGPツールはファイルを中心に設計されていました。ファイルをgpg --encryptに渡し、暗号化されたファイルを受け取り、手動で転送します。このモデルは1990年代にPGPが主にメールの添付ファイルやファイルアーカイブに使用されていた時代には意味がありました。しかし、機密通信のほとんどがウェブプラットフォーム、エフェメラルなメッセージングアプリ、ファイルシステムインターフェースを公開しないサービスで行われる今日では、あまり意味がありません。

クリップボードファーストアプローチは複数の問題を同時に解決します:

  • アプリケーション非依存。クリップボードはOS レベルの抽象化であるため、クリップボード暗号化はあらゆるアプリケーションで動作します。特定のメールクライアント、ブラウザ拡張機能、プラグインエコシステムに縛られません。コピー&ペーストできれば暗号化できます。
  • ディスク上に平文ファイルなし。ファイル暗号化は必然的にファイルシステム上に平文の成果物を作成します — 暗号化されていない元ファイル、一時ファイル、エディタのスワップファイル、そして潜在的に復号された出力。これらはそれぞれフォレンジック上の懸念事項です。クリップボード暗号化は平文を揮発性メモリにのみ保持します。
  • 摩擦が少ない。「これを暗号化したい」から「暗号化された」までのステップが少ないほど、ユーザーは実際にメッセージを暗号化する可能性が高くなります。3ステップのワークフロー(コピー、ショートカット、貼り付け)はファイルベースのパイプラインよりも大幅に摩擦が少なくなります。
  • 現代のコミュニケーションとの互換性。ウェブメール、Signal desktop、Slack、Discord、Matrixクライアント — これらのどれもPGPをネイティブにサポートしていませんが、すべてテキストの貼り付けをサポートしています。クリップボードPGPはプロトコルレベルの統合を必要とせずにこのギャップを埋めます。

このワークフローの使い方のステップバイステップガイドは、PGPの使い方をご覧ください。

KeychainPGPのクリップボード活用

KeychainPGPはクリップボードファースト哲学を中心にゼロから構築されています。クリップボードアクセスをファイル暗号化ツールに便利機能として追加するのではなく、暗号パイプラインからUIまでのアーキテクチャ全体が、クリップボードが主要なデータチャネルであることを前提としています。

暗号化ワークフロー

KeychainPGPでメッセージを暗号化するプロセスは3ステップです:

  1. 任意のアプリケーション(メールの下書き、チャットウィンドウ、テキストエディタ、ウェブフォーム)から平文メッセージをコピーします。
  2. Ctrl+Shift+E(デフォルトのグローバルショートカット)を押します。KeychainPGPがクリップボードの内容を読み取り、選択された受信者の公開鍵でテキストを暗号化し、ASCII-armoredのPGP暗号文をクリップボードに書き込みます。
  3. 暗号化されたメッセージを送信先に貼り付けます。送信されるのは-----BEGIN PGP MESSAGE-----で始まる標準的なOpenPGP ASCII-armoredブロックで、OpenPGP互換のあらゆるツールで復号可能です。

内部的に、KeychainPGPはSequoia-PGPライブラリを使用しています。これはOpenPGP標準のモダンなRust実装です。鍵はデフォルトで署名にEd25519、暗号化にX25519を使用します — コンパクトな鍵サイズと高速な操作で強力なセキュリティを提供する楕円曲線アルゴリズムです。アルゴリズム選択ダイアログや鍵サイズの決定はありません。暗号は最初から安全です。

逆方向の復号

復号は暗号化フローの逆です。暗号化されたPGPメッセージを受け取ったら、armoredブロック全体をコピーし、Ctrl+Shift+D(デフォルトの復号ショートカット)を押すと、KeychainPGPがクリップボードの内容を復号された平文で置き換えます。任意のアプリケーションに貼り付けて読むことができます。復号されたテキストはメモリとクリップボードバッファにのみ存在し、設定可能なタイムアウト後に自動的に消去されます。

セキュリティ上の考慮事項

データチャネルとしてクリップボードを使用することには、KeychainPGPが複数の防御メカニズムで対処する特定のセキュリティ上の考慮事項があります。

クリップボード履歴とマネージャー

最新のOSやサードパーティツールはクリップボード履歴を保持することがよくあります。Windows 10以降には組み込みのクリップボード履歴機能(Win+V)があります。macOSはネイティブには履歴を保持しませんが、Alfred、Raycast、Pasteなどの人気ツールが保持します。Linuxでは、CopyQ、Clipman、GPasteなどのクリップボードマネージャーが一般的です。

これらのクリップボードマネージャーは、暗号化前の平文と復号後の復号された出力の両方をキャプチャし、暗号化の有用性を完全に無効にする可能性があります。PGPクリップボード暗号化を使用する場合は:

  • OSのクリップボード履歴を無効にする(Windowsでは設定 > システム > クリップボードでクリップボード履歴をオフにする)。
  • 機密コンテンツを扱うマシンでのサードパーティクリップボードマネージャーを避けるか、マネージャーが許可する場合は除外ルールを設定する。
  • KeychainPGPの組み込み自動消去機能に依存して露出ウィンドウを最小化する。

30秒後の自動消去

KeychainPGPは、復号された平文をクリップボードに書き込んでから30秒後に自動的にクリップボードを消去します。このタイムアウトはアプリの設定で変更可能です。自動消去により、復号されたコンテンツがクリップボードに無期限に残ることを防ぎ、読み終わった後にクリップボードマネージャーが機密テキストをキャプチャするリスクを軽減します。

デフォルトの30秒は、使いやすさとセキュリティの妥協点です。復号されたテキストを必要な場所に貼り付ける十分な時間を確保しつつ、平文がアクセス可能な時間を制限します。高セキュリティ環境では、5秒まで短縮できます。

メモリ管理とゼロ化

クリップボード暗号化では、秘密鍵、パスフレーズ、復号された平文などの機密データがプロセスメモリに存在することを意味します。KeychainPGPはRustで書かれており、Sequoia-PGPのドロップ時ゼロ化保証を活用しています。秘密の値がスコープから外れると、解放される前にメモリがゼロで上書きされます。これはベストエフォートの消去ではありません — Rustの所有権モデルにより、ゼロ化デストラクタが決定論的に実行されることが保証されます。zeroizeクレートのコンパイラバリアと組み合わせることで、オプティマイザが上書きを除去することを防ぎ、使用後にシークレットがメモリに残らないという強力な保証を提供します。

これは、ガベージコレクション言語(Java、Python、JavaScript)で書かれたツールとは対照的です。それらの言語では、秘密データがガベージコレクタが回収して(おそらく)上書きするまで、メモリに無期限に残る可能性があります。

OPSECモード

敵対的な環境で活動するユーザー — 情報源と通信するジャーナリスト、監視下の活動家、機密開示を扱うセキュリティ研究者 — のために、KeychainPGPにはデフォルトのセキュリティ態勢を超えてアプリケーションを強化するOPSECモードが含まれています。

ウィンドウタイトルの偽装

OPSECモードが有効になると、KeychainPGPはウィンドウタイトルを「電卓」や「メモ帳」のような無害なものに変更します。これにより、カジュアルなショルダーサーフィングを防ぎ、ウィンドウタイトルを記録する自動スクリーンキャプチャツールを欺くことができます。スクリーンショットやビデオ録画を調べる攻撃者には、どのウィンドウバーにも「KeychainPGP」や「PGP」は表示されません。

RAM専用鍵

OPSECモードでは、秘密鍵はRAMにのみ保持され、ファイルシステムに書き込まれることはありません。これは、デバイスが押収されたりディスクがイメージングされたりしても、回復可能な鍵ファイルがないことを意味します。トレードオフとして、アプリケーションの起動ごとに鍵を再インポートする必要があります — 通常はハードウェアトークン、QRコード、または別のデバイスからのセキュアな転送を通じて行います。

緊急消去

緊急消去ボタン(または関連するキーボードショートカット)は、メモリ内のすべての暗号マテリアルを即座にゼロ化し、クリップボードを消去し、オプションでアプリケーションを閉じます。これは、すべての機密状態を即座に破壊する必要がある状況 — 例えば、デバイスの差し迫った押収が予想される場合 — のために設計されています。消去は即座で不可逆的であり、他の場所にバックアップされていないRAM専用鍵は永久に失われます。

Torプロキシサポート

OPSECモードには、鍵サーバー検索やその他のネットワークトラフィックをTor SOCKSプロキシ経由でルーティングする機能が含まれています。これにより、ISPやネットワークレベルの攻撃者がPGP公開鍵を取得していることを観察するのを防ぎます。これは通信パートナーを特定するためのメタデータとして機能する可能性があります。Torプロキシサポートが有効になると、KeychainPGPからのすべての送信接続は設定されたSOCKS5プロキシ(Torがローカルで実行されている場合、通常127.0.0.1:9050)を経由してルーティングされます。

クリップボード暗号化 vs ファイル暗号化

PGPクリップボード暗号化とファイル暗号化は、同じOpenPGP標準を使用し、相互運用可能な暗号文を生成します。違いはワークフローとそれに伴うセキュリティ特性にあります。

側面クリップボード暗号化ファイル暗号化
入出力システムクリップボード(揮発性メモリ)ディスク上のファイル(永続ストレージ)
平文の成果物ディスク上になし、タイムアウト後にクリップボードから消去元ファイル、一時ファイル、エディタバックアップが残る可能性
アプリサポートコピー&ペーストをサポートするあらゆるアプリファイルシステムアクセスまたはCLI統合が必要
ワークフローステップ3(コピー、ショートカット、貼り付け)5以上(ファイル保存、CLI実行、出力指定、出力を開く、転送)
バッチ処理大量には非実用的ファイルやアーカイブの一括暗号化に適している
大容量データクリップボードに収まるテキストに限定任意のサイズのファイルを処理可能
フォレンジック痕跡最小限(RAM のみ)大きい(ディスクの成果物、ファイルシステムメタデータ)

クリップボード暗号化は、日常のコミュニケーションにおけるメッセージレベルの暗号化に最適です。バイナリデータの暗号化、大きなアーカイブ、受信者が.pgp添付を期待する場合にはファイル暗号化が引き続き必要です。KeychainPGPは両方のモードをサポートしていますが、クリップボードワークフローで最も力を発揮します。

脅威モデル

PGPクリップボード暗号化が何を保護し、何を保護しないかを理解することは、情報に基づいたセキュリティ判断を行うために不可欠です。単一のツールですべての脅威をカバーすることはできません。

クリップボード暗号化が保護するもの

  • ネットワーク監視。デバイスを離れる前に暗号化されたメッセージは、ネットワークを監視する誰にとっても不透明です — ISP、Wi-Fiの盗聴者、ディープパケットインスペクションを行う国家レベルの攻撃者。PGP暗号文は平文を危険にさらすことなく、任意の数の信頼できないネットワークを通過できます。
  • メールやメッセージの傍受。攻撃者がメールサーバー、チャットプロバイダーのデータベース、または転送中のメッセージにアクセスしても、得られるのは暗号文だけです。受信者の秘密鍵なしには、コンテンツの回復は計算上不可能です。
  • ストレージの侵害。攻撃者がメールアーカイブ、チャットログ、クラウドバックアップのコピーを入手しても、PGPで暗号化されたメッセージは保護されたままです。これは平文がディスクに触れないクリップボード暗号化で特に関連します。
  • メタデータの削減(OPSECモード使用時)。PGPはメールヘッダーやメッセージメタデータを暗号化しませんが、TorプロキシサポートやウィンドウタイトルOPSECモードの機能は、暗号化使用に関する観察可能なメタデータを削減します。

クリップボード暗号化が保護しないもの

  • キーロガーによるエンドポイント侵害。攻撃者がデバイスにキーロガーやスクリーンキャプチャマルウェアをインストールしている場合、暗号化前または復号後の平文をキャプチャできます。クリップボード暗号化は信頼できるエンドポイントを前提としています。デバイスがOSレベルで侵害されている場合、アプリケーションレベルの暗号化では対応できません。
  • ロック解除されたデバイスへの物理的アクセス。攻撃者がデバイスにロック解除された状態で物理的にアクセスでき、KeychainPGPが鍵をロードした状態で実行中の場合、メッセージを復号できます。RAM専用鍵と緊急消去ボタンはある程度これを軽減しますが、攻撃者がアクセスする前に行動する必要があります。
  • 侵害された秘密鍵。秘密鍵が流出した場合(バックアップ、侵害されたデバイス、弱いパスフレーズから)、その鍵に暗号化されたすべてのメッセージ — 過去と将来の両方 — が侵害されます。強力なパスフレーズを使用し、できるだけ少数のデバイスに秘密鍵を保管してください。
  • トラフィック分析。PGPはメッセージの内容を暗号化しますが、通信パターンは暗号化しません。ネットワークトラフィックを観察できる攻撃者は、通信していること、その頻度、そして潜在的に誰と通信しているか(鍵サーバーへのクエリに基づいて)を特定できます — コンテンツを読まなくても。OPSECモードのTorプロキシサポートはこの問題に部分的に対処します。

これらの概念のより広い入門として、PGP入門ガイドが公開鍵暗号と鍵管理の基礎をカバーしています。

PGPクリップボード暗号化のベストプラクティス

これらのプラクティスに従うことで、PGPクリップボード暗号化のセキュリティ上のメリットを最大化できます:

  1. クリップボード履歴を無効にする。OSレベルのクリップボード履歴を無効にし、暗号化通信を管理するマシンからサードパーティのクリップボードマネージャーを削除します。
  2. 自動消去を有効に保つ。クリップボード自動消去タイマーを無効にしないでください。使用可能な最短間隔に短縮してください。ほとんどのワークフローでは5〜15秒で十分です。
  3. 必要に応じてOPSECモードを使用する。暗号化の使用自体がリスクとなる環境で操作している場合は、ウィンドウタイトルの偽装、RAM専用鍵、TorルーティングのためにOPSECモードを有効にしてください。
  4. 受信者の鍵を帯域外で検証する。誰かの公開鍵にメッセージを暗号化する前に、別のチャネル(対面、音声通話、既知の鍵からの署名付きメッセージ)で鍵のフィンガープリントを検証してください。これにより鍵配布に対する中間者攻撃を防ぎます。
  5. 強力なパスフレーズを使用する。長くて推測しにくいパスフレーズで秘密鍵を保護してください。ランダムに生成された4〜6語のパスフレーズは、短い混合文字列よりも安全で入力しやすいです。
  6. エンドポイントを清潔に保つ。クリップボード暗号化は信頼できるデバイスを前提としています。最新のOSを使用し、信頼できないソフトウェアのインストールを避け、フルディスク暗号化を使用してデータを保護してください。
  7. Ed25519/X25519鍵を優先する。KeychainPGPがこれらのモダンな楕円曲線アルゴリズムをデフォルトで使用するのには理由があります。高速でコンパクトで、古いRSAやDSA鍵に影響を与える実装レベルの攻撃の範囲に耐性があります。古い鍵から移行する場合は、新しいEd25519/X25519鍵ペアを生成し、連絡先と移行してください。
  8. ワークフローをテストする。重要な通信にクリップボード暗号化を頼る前に、完全なサイクルを練習してください:鍵を生成し、公開鍵を交換し、テストメッセージを暗号化し、相手側で復号します。プロセスに慣れることで、プレッシャーの下でのミスのリスクが軽減されます。

PGPクリップボード暗号化は万能薬ではありませんが、良好な運用セキュリティのプラクティスと組み合わせることで、既に使用しているツールと統合する実用的で低摩擦の暗号化通信への道を提供します。ブラウザでKeychainPGPを試して、クリップボードファーストワークフローを実際に体験してください。