公開鍵基盤

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

暗号技術において、公開鍵基盤(こうかいかぎきばん、: public key infrastructure、以下PKI)は、利用者の身元について「信頼できる第三者」(: trusted third party)が審査を行い、保証を実現する仕組みのことである。

概要[編集]

PKIでは公開鍵は利用者に結びつけられる。通常は離れた場所にあるソフトウェア同士が協調し合うことで公開鍵は配布される。PKIでは公開鍵は公開鍵証明書に収められた形で利用されることが一般的である。

この用語は、認証局: certification authority、以下CA)や関連する取り決めのことだけではなく、電子通信における公開鍵暗号の使用目的という(広義かつ多少紛らわしい)意味でも使われることが多いが、公開鍵暗号にはPKI以外の用途もあり必ずしもPKIの体系が要るものではないので、後者の意味は誤りである。

用途と機能[編集]

PKIは、公開鍵証明書に記載された利用者の公開鍵を使用して、利用者が相互に相手を正当であると認める事(認証: authentication)や、利用者同士が直接、通信文を暗号化・復号することが可能になる。一般にPKIはクライアントソフトウェアとCAなどのサーバソフトウェア、スマートカードなどのハードウェア、証明書ポリシー(: certificate policy, CP)および認証実施規程(: certification practice statement, CPS)などの運用手順から成る。

ある利用者Aが自分の秘密鍵を用いて通信文にデジタル署名を行ったとき、別の利用者Bは(CAによって発行された利用者Aの公開鍵証明書に収められた公開鍵を用いて)その署名を確認できる。この仕組みによって、通信を行う人同士が事前に何らかの機密情報をやり取りする必要なしに機密性、完全性、相手認証ができる。

主な使用法[編集]

企業向けのPKIシステムのほとんどは、ユーザの身元を確定するための証明書xは、証明書xを発行したCAが保証し、そのCAの'正当性'はさらに同様の方法で一段上位のCAから発行された証明書yによって確立され、そしてそのCAはさらに上位のCAの・・・というように、証明書の連鎖に頼っている。 この仕組みは最低でも数台のコンピュータ、一つ以上の組織からなる証明書の階層をもたらし、いくつかのプログラムからなるソフトウェアパッケージによって調和し相互運用がなされる。

PKIの運営には標準規格が重要であり、特にPKIの大規模運用を意図する場合に重要である。IETFのPKIXワークグループがこの領域の標準化のほとんどを完了している。

企業でのPKIシステムは企業のディレクトリ体系と密接につながっていることが多く、各従業員の公開鍵が各々の個人情報(電話番号、Eメールアドレス、住所、部署など)とともに保存されることがよくある。今日の主なディレクトリ技術はLDAPであるが、実際に現在最も一般的な証明書フォーマットであるX.509はLDAPの前身であるX.500ディレクトリスキーマに由来している。

その他[編集]

信用の輪(Web of Trust)[編集]

Web of Trustの例。矢印は互いの公開鍵に署名したことを示す。例えばrioは、james、mike、kenを経由してlucyを信用できる。
キーサインパーティーの様子。参加者は互いに身分証明をするとともに、公開鍵リストに記載された鍵の同一性を検証する。

公開鍵への署名を認証局が行う場合、その公開鍵の持ち主を信用するかどうかは、認証局の信用度に委ねられる。また、認証局による署名はコストや手間がかかる場合が多い。さらに、Webブラウザが認証局の公開鍵を同梱している場合、Webブラウザの配布元の信頼性を確保する必要がある。これらの問題を解決する手段として信用の輪 (Web of Trust) を構築する方法が挙げられる。これは、信頼し合う者同士が互いの公開鍵に自ら署名し合う事によって、互いの信用度を維持し、更に複数の者がこれを行うことで、直接署名の交換をしていない者同士でも、信頼している第三者を介することによって相手の信用度を維持できるというものである。この時の相手までの信頼関係のことを信用パス (trust path) という。例としてPGP(Pretty Good Privacy)や、その標準仕様である OpenPGP のフリーな実装であるGnuPG (The GNU Privacy Guard)が挙げられる。PGPやそのクローンがEメールで広く使用されているため、最初にPGPによって実装された信用の輪は2004年現在最も広く使われている双方向PKIとなっている。CAcert.orgは、信頼関係の全情報がすべて中央のデータベースに入れられることを除いて、PGPの信用の輪と同等のPKI Web of Trustを運営している。

MSD (Mean shortest distance)[編集]

信用の輪における特定の鍵の信用度を表す指標の一つに MSD (Mean shortest distance) がある[1]。これは、信頼の輪に含まれているすべての人からの信用パスの最短長の平均値によって計算される。これは、信用パスが長いほど信用度は下がり、また多くの人から署名されているほど信用度が上がるという考え方に基づいている。右図の rio について、MSDを計算すると、信用パスの最短長は、james:1、mike:1、ken:2、john:2、lucy:3 であるから、MSD はその平均の 1.8 となる。

キーサインパーティー[編集]

公開鍵への署名は、信頼性を確保するために署名する相手と直接会って行われるが、署名の交換を効率的に行うために、キーサインパーティーが開催されることがある。これにより、個別に会って行う場合に比べ、一度に多数の人と署名の交換を行うことが可能である。

多くのキーサインパーティーでは、Sassaman-Efficient 方式が利用されており、以下の手順によって行う。[2]

  1. キーサインパーティーの主催者に、自分の公開鍵を送付する
  2. 主催者は、参加者の公開鍵が集まった時点で、公開鍵のリストを参加者全員に送付する
  3. 参加者は受け取ったリストを印刷し、リストのハッシュ値を計算して印刷したリストに書き込む
  4. キーサインパーティーの開始時に参加者全員でハッシュ値を確認し、全員のリストが同一のものであることを検証する
  5. 参加者は2列になって向かい合い、互いに本人確認(パスポートや免許証などの確認)をし、同時にリストのハッシュ値、及び記載された公開鍵の指紋が正しいことを伝える
  6. 本人確認と公開鍵の検証を行ったら、リストに印を付ける
  7. 列をずらし、別の人と5、6の作業を繰り返し、これを全員に対して行う
  8. キーサインパーティーが終わったら、印を付けた相手の公開鍵をキーサーバーからダウンロードする
  9. 公開鍵の指紋がリストに記載されているものと同一であることを確認し、自分の秘密鍵で相手の公開鍵に署名し、相手に送付する
  10. 署名付きの公開鍵を受け取ったら、自分の鍵束に署名付きの鍵を取り込み、キーサーバーにアップロードする

注意点として、公開鍵への署名を施す場合に念入りに本人確認を行うことである。インターネット上に配布されている公開鍵に対する安易な署名など、本人確認をせずに署名を行った場合、鍵の持ち主を特定することができず Web of Trust そのものの信頼性が著しく損なわれることになる。

また、未署名の公開鍵によるソフトウェアへの署名は、署名の意味を為さないことについても注意が必要である。

利用[編集]

Debianやその派生OSなどの一部のLinuxディストリビューションでは、配布されているすべてのパッケージについて開発者がGPG署名を施すことで、パッケージの改ざんを防止している。このため、Debianの開発者には Web of Trust への参加が義務付けられている。Linuxカーネルの開発においても、 Web of Trust への参加が求められている。一方、開発者に限らず一般のユーザーについても、 Web of Trust に参加することで自分が使用しているソフトウェアの安全性を検証できる。

GitBazaarなどの一部のバージョン管理システムには、リビジョンに対してGPG署名を施すことができるシステムが備わっている。

簡易公開鍵基盤 (Simple Public Key Infrastructure)[編集]

その他の選択肢として簡易公開鍵基盤(SPKI:スプーキーと読む)がある。これは公開鍵によるパブリック認証を行うものではないが、X.509の複雑さとPGPの Web of trust を克服しようという三つの独立した試みから生まれた。SPKIは人を鍵に結び付けることはしない。何故なら信頼されるのは人ではなく鍵そのものだからである。SPKIでは発行者が即ち承認者(verifier)でもあるので、信頼という概念がない。これはSPKIの用語で「オーソライゼーション・ループ」と呼ばれており、オーソライゼーションが設計に深く関わっている。

ロボットCA[編集]

ロボットCAとは、公開鍵の正当性を特定の条件から自動的に検証し、その条件について有効性を証明するための署名を自動的に行う無人プログラムである。ロボットCAは公開鍵システムの攻撃者、特に合法なサイトからのすべてのネットワークトラフィックを一時転換する種の攻撃者を排除もしくは大いに抑制することができる。

歴史[編集]

1976年ディフィー (Whitfield Diffie)、ヘルマン (Martin Hellman) の両名によって発表された安全な鍵交換の仕組みであるDiffie-Hellman (DH)、そして1978年ロナルド・リベスト (Ron Rivest)、アディ・シャミア (Adi Shamir)、レオナルド・エーデルマン (Leonard Adleman) の3名によって発表された非対称鍵アルゴリズムであるRSAは、安全な通信について劇的な変化をもたらした。高速デジタル通信(インターネットやその前身)の更なる発展により、利用者がお互いに安全に通信できる方法や、更に利用者が実際に対話していた人を確認できる方法の必要性が明白になった。利用者の同一性を公開鍵に結び付ける、暗号的に保護された証明書のアイデアが精力的に研究された。

初期の暗号技術の中から効果的な使い方ができる組み合わせが発明および分析された。World Wide Web (WWW)の発明とその急速な普及と共に、認証(authentication)と安全な通信の必要性が更に深刻となった。(電子商取引や、Webブラウザから商用データベースへのオンラインアクセスなど)商用の理由だけで十分だった。ネットスケープコミュニケーションズ (Netscape Communications Corporation) のテヘール・エルガメル(Taher ElGamal)たちは、鍵の立証やサーバ認証(v3より前は片方向のみ)などを含む、Secure Sockets Layer (SSL)プロトコル(URLでの'https')を開発した。このようにPKIの構造はWebの利用者/サイトが望む(あるいはそれ以上の)安全な通信のために造られた

ベンダーや起業家が広大な市場の可能性を予測し、新しい会社や企業内プロジェクトを始め、責任からの保護と法的な承認について議論され始めた。米国弁護士協会 (American Bar Association, ABA) のテクノロジ・プロジェクトはPKI運用に関して予測し得る法的な側面について広範囲に渡る分析を発表し(en:ABA digital signature guidelines 参照)、その後間もなくして、(1995年の米国ユタ州を皮切りに)世界中のあらゆる国や自治体が、法律の制定および規則の採択をし始めた。消費者団体などは、プライバシー、アクセス、責任について、幾つかの地域では更に考慮するべきであるという問題を挙げた。

制定された法律や規則とは異なり、上手くいっている商取引にPKIの体系を組み込むには技術上や運用上の問題があり、またそれは先駆者が予想していたより遥かに進展が遅かった。

21世紀の初めの数年までには、基本的な暗号技術を正確に展開することは容易ではない事や、(手動または自動の)運用手順を正確に設計することは容易ではない事(もし技術的に完璧に実施するように設計したとしても)、そして定められた標準規格はそれらの目的のために尊重するには不十分なことが明確になった。

PKIベンダーは市場を造ったが、1990年代中頃には必ずしも思い描いていた物ではなく、ゆっくり、そして期待されていた物とは多少違った方向に成長していった。PKIは、期待されていた幾つかの問題は解決せず、いくつもの大手ベンダーが撤退したり他社に買収されることになった。PKI最大の成功は政府に採用されたことである。現時点における最大のPKI実装は、米国防衛情報システム局 (Defense Information Systems Agency, DISA) PKI infrastructure for the Common Access Cards programである。

使用例[編集]

PKIはさまざまなベンダからさまざまな種類のものが提供され、さまざまな使用方法がある(公開鍵の配布、ユーザの個人情報の隠蔽など)。

  • 文章の暗号化や認証 --- 文章がXMLであればXML署名XML暗号化など。文章が電子メールであれば、OpenPGPS/MIMEなど。
  • ユーザー認証 --- スマートカードログオン, TLSによるクライアント認証など。
  • 安全な通信プロトコルの初期セットアップ --- インターネット鍵交換(IKE)やTLSなど。 IKE、TLSともに初期セットアップ時は公開鍵暗号を用いるが、実際の通信は公開鍵暗号より速度が速い共通鍵暗号を用いる。

実装[編集]

一部の主要な認証局(Verisignなど)は、他のソフトウェアが使用できないためここには記述していない。

脚注[編集]

  1. ^ analysis of the strong set in the PGP web of trust
  2. ^ Keysigning Party Methods - The 'Sassaman-Efficient' Method

関連項目[編集]

外部リンク[編集]

日本のサイト[編集]

海外のサイト[編集]

ロボットCA[編集]