OpenPGP

提供: ArchWiki
ナビゲーションに移動 検索に移動

関連記事

OpenPGP とは、暗号関連の処理に関するオープンな標準規格です。このシステムは、広く知られた暗号ビルディングブロック (cryptographic building blocks) をベースとしています。OpenPGP は、送信者と受信者との間におけるファイル及びメッセージのセキュアな転送をサポートしています。また、相手が確かに本物であるかどうかの認証も行います。

ソフトウェア

アプリケーション

多くの E メールクライアントが OpenPGP の機能を実装しています (例えば Thunderbird)。

汎用の OpenPGP コマンドラインツールとしては、gnupgsequoia-sq があります。

Stateless OpenPGP (SOP)

Stateless OpenPGP (通称 SOP) は、OpenPGP のメッセージを処理するためのステートレスな汎用コマンドラインインターフェイスを定義しています。この標準規格は、OpenPGP オブジェクトのセキュリティをカバーする、最小の API を正しく構築することを目的としています。

多くのユースケースにおいて、SOP は必要な機能を全て提供し、GnuPG などの代替として、ベンダーに依らないスタンドアローンなツールとして使用することができます (詳細は、これに関して扱っている IETF ドラフトを参照してください)。

多くの SOP 実装が存在しており、相互運用性テストスイートで相互テストされています。

ライブラリ

様々なプログラミング向けに多くの ライブラリが存在しています。

ハードウェアセキュリティデバイスのサポート

OpenPGP の秘密鍵は、専用のハードウェアデバイスによってセキュアに管理することができます。OpenPGP カードの標準規格は、この目的のためのスマートカードアプリケーションについて定義しています。多くのデバイスがこの規格を実装しています (例えば、NitrokeyYubiKey のほぼすべてのモデル)。

スマートカードは、GnuPGOpenPGP-card-tools といったソフトウェアで使用することができます。

標準化

OpenPGP の標準化は、IETF OpenPGP ワーキンググループにおいて行われています。

IETF が採択した、OpenPGP に関する標準の中で最も最近の広く採用されているものは、RFC4880 です。 この標準は、現在 "OpenPGP version 4" と呼ばれている形式を定義しています。

RFC6637 は、NIST の素体曲線を使用する楕円曲線暗号の拡張を定義しています。

Curve 25519 をベースとしたアルゴリズムの拡張は広く使用されています。これは、この標準 (RFC4880) の新しいバージョンとしてはまだ最終化されていない RFC4880bis において暫定的に定義されました。

このワーキンググループは現在、RFC4880bis の後継となる OpenPGP の更新された規格の最終化に取り組んでいます。 最終化が行われているこの RFC (この標準は "crypto refresh" とも呼ばれています) で取り扱う範囲は、OpenPGP 標準の暗号化機能に対する更新です (詳細は IETF OpenPGP ワーキンググループの第2章を参照)。 この新しい標準規格は、"OpenPGP version 6" の鍵と署名に対する新しい形式を定義し、最近の AEAD ベースの暗号の使用を容易にします。

今後は、ポスト量子暗号 (PQC)前方秘匿性といったトピックが中心の作業になるでしょう (詳細は IETF OpenPGP ワーキンググループの第4章を参照)。

PGP Public Key Infrastructure

OpenPGP のエコシステムは、公開鍵を処理するための様々なメカニズムを発達させてきました。 この公開鍵のインフラストラクチャ (別名 PGPKI) は、2つの懸念事項に対処します:

  • 通信ピアの証明書の配布と取得
  • 証明書での対象の認証

ピアと通信するには、ピアの証明書のコピーが必要です。証明書のコピーの取得は、以下の章で説明されている配布モデルの1つによって可能です (#Keyserver#Web Key Directory を参照)。

OpenPGP 証明書には、identity claim が含まれています。OpenPGP は、中央の認証機関が存在しない分散型システムなので、identity claim は certificate holder によって発行され、独立して検証することができます。 脅威モデルによっては、対象の検証 (つまり認証) に異なる方法を取るほうが適切です。

一部の低リスクな目的においては、認証を無視し、Trust On First Use (TOFU) に頼るのも良いかもしれません。

検証を行う鍵サーバーWeb Key Directory を利用することで、信頼性の保証が僅かに高くなります。

Explicit Authentication を利用すれば (例えば、証明書のOpenPGP フィンガープリントを手動で検証するなど)、最も高いレベルの信頼性を保証できます。

Keyserver

OpenPGP HTTP Keyserver Protocol鍵サーバー実装は、ユーザーに OpenPGP 証明書へのアクセス手段を提供しつつ、様々な機能も提供します。

一部の鍵サーバーインスタンスは、他のサーバーと互いに OpenPGP 証明書を同期し、同じ鍵データを提供するホストのプールを形成します。

ほとんどの鍵サーバーは、証明や検証を行わずに OpenPGP 証明書を受け入れます。しかし、一部の新しい実装では、アップロードされた証明書に結び付けられているアドレスに検証用の E メールが送られて User ID の検証が強制されます。

以下の表に挙げられている鍵サーバーは、必要な公共サービスをエコシステムに提供している、個人情報の削除が可能である、鍵の公開にオプトインが強制されるという条件を (全てまたは一部) 満たしているため、EU の一般データ保護規則 (GDPR) に準拠しています。

サードパーティのアイデンティティ証明書は、どの鍵サーバーにおいても配布されていません。

OpenPGP 鍵サーバー
ホスト 同期 検証 アイデンティティ証明書 ソフトウェア
https://keys.openpgp.org No Yes No Hagrid
https://pgpkeys.eu/ Yes No Yes Hockeypuck
https://keyserver.ubuntu.com/ No No Yes Hockeypuck
https://keys.mailvelope.com/ No Yes No Mailvelope Keyserver

Web Key Directory

Web Key Directory (WKD) とは、与えられたドメインの OpenPGP 証明書を配布するための、well-known URI に基づく仕組みです。

WKD により、ウェブサーバーは、正規化されたファイル名による well-known ディレクトリ構造へのアクセス手段を提供し、メールアドレスによる検索が可能になります。

GnuPG の Wiki によれば、この仕組みは複数のメールホストプロバイダによってサポートされています。

WKD ディレクトリ構造は、OpenPGP 公開鍵リングから作成でき、ウェブサーバーから公開することができます。 https://metacode.biz/openpgp/web-key-directory でセットアップが正しいかどうか確認できます。

Explicit Authentication

Explicit authentication は、セキュアなチャネル (例えば、直接対面して) を通じて証明書の OpenPGP フィンガープリントを証明書の所有者と手動で検証することを意味する場合があります。

Web of Trust は Explicit authentication の一つであり、手動による認証を機械可読なデータにエンコードします: OpenPGP 証明書 (署名とも)。 直接的な認証と、trusted introducer を介して認証を委託する方法の両方をモデル化できます。

Arch Linux では、主署名鍵のセットが Arch Linux プロジェクトのトラストアンカーとして機能します。これらの鍵は、全ての Package Maintainer開発者たちの OpenPGP 証明書を証明するために使用されます。 主署名鍵をトラストアンカーとして使用することで、誰でも各パッケージ作成者の信頼性を検証することができます。 Arch Linux ユーザーは、archlinux-keyringインストールし、pacman-key(8) を使用することで、これを行うことができます。

または、主署名鍵の OpenPGP フィンガープリントは OpenPGP のユーザーによってトラストアンカーとして手動で設定することができます (例えば、https://archlinux.org/master-keys/ で鍵を検証することによって)。 関連する証明書は全て Arch Linux 独自の web key directoryarchlinux-keyring プロジェクトのリリース、または 鍵サーバーから取得できます。

使用例

参照

翻訳ステータス: このページは en:OpenPGP の翻訳バージョンです。最後の翻訳日は 2024-03-16 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。