利用者環境の安全性のためのPKI

| 3.2. 証明書のライフサイクル

3.1. PKIの基礎知識

多くの企業システムは、多数の利用者によって使われることが想定されるシステムです。そのようなシステムにおいてユーザサイドの環境(利用者環境)の安全性をリーズナブルに実現するためには工夫が必要となります。その工夫としては、PKI(Publick Key Infrastructure:公開鍵基盤)の利用が挙げられます。

PKIとは、公開鍵暗号の技術と信用の構造化を元に、主体の身元保証や情報の保護・保全を支援する基盤システムです。情報セキュリティのC.I.A.のうちCとIを支援する仕組みです。本節ではPKIの基礎的な概念について解説し、次節以降で実システムへの適用の際の注意点を説明します。


3.1.1. PKIの基本となる公開鍵暗号

今日の暗号技術は暗号化と復号での鍵の使い方で2つに大別することができます。ひとつは同じ鍵を利用する共通鍵暗号、もうひとつが別々の鍵を利用する公開鍵暗号です。PKIの基礎となっている技術は、後者の公開鍵暗号の技術です。

共通鍵暗号は秘密鍵暗号・対称鍵暗号とも呼ばれ古典的な技術です。公開鍵暗号技術が発明されるまでは暗号とは共通鍵暗号のことを指していました。暗号化と復号の鍵が共通なため、安全な手段で鍵を受け渡さなければなりません。共通鍵暗号の安全性は鍵の安全性に帰着しますが、鍵そのものを配送しなければならないという本質的な制約が存在しています。鍵の受け渡しに関しては鍵交換という形で整備が進んでいます。

公開鍵暗号は暗号化と復号で異なる鍵を利用します。片方の鍵を公開して使用するため「公開」鍵暗号と呼ばれます。公開鍵暗号は1976年にDiffieとHellmanにより提案され、翌年1977年にRivest, Shamir, Adlemanにより最初のアルゴリズムが発明されました(RSAアルゴリズム)。公開鍵暗号は復号の鍵の秘密を保てるかぎり、暗号化鍵を公開しても機密性に問題が生じません(詳しくは「2.1.3. 公開鍵暗号アルゴリズム」で説明しています)。そのため共通鍵暗号で問題になった鍵配送の秘匿化の問題を解決しました。また、公開鍵暗号技術は暗号処理だけなくデジタル署名の実現につながる画期的な技術でした。ただし公開鍵暗号の処理は共通鍵暗号に比べ大変重く単独でシステムを構築するのは現実的ではありません。そのため一般にはハッシュや共通鍵暗号を組み合わせて使用されます。


3.1.2. 公開鍵暗号による暗号化と署名

公開鍵暗号は鍵の使い方により 大きく暗号化と署名の2つの用途に用いることができます。PKIでは、暗号化と署名の両方の使い方で公開鍵暗号を利用しています。

注1:(公開鍵,秘密鍵)と(暗号化鍵,復号鍵)
ここでの説明では(公開鍵,秘密鍵)と(暗号化鍵,復号鍵)の2つの組が登場します。用途により組の対応が変化することに注意してください。RSAでは暗号化鍵と復号鍵は可換(つまり復号鍵で暗号化でき、その暗号化データを対応する暗号化鍵で復号できる)ですが、公開鍵暗号系で一般に備えている性質ではありません。署名の説明で秘密鍵で暗号化してというという記述をよく見かけますが、これは「暗号化鍵を秘密にしたもの」を秘密鍵と呼んでいるだけですので注意してください。公開鍵暗号系では一般には暗号化と署名でそれぞれ独立した鍵のペア(暗号化鍵、復号鍵の組)が必要です。
注2:日本語としての「暗号」
「暗号」とは通信の内容が意図する相手以外にわからないようにするためのものですから署名のように不特定の相手に復号を期待する場面で「暗号」という用語を使用することは日本語として適切ないと考えられます。一方、「暗号化鍵で暗号化したもの」を暗号と呼ぶのは一般的には分かりやすいともいえます。本文書では暗号を後者の意味でも使用しています。

公開鍵暗号(暗号化処理)ではまず復号鍵を秘密とし、暗号化鍵を公開します。Aさんに暗号化した情報を送りたい場合、Aさんの公開鍵(暗号化鍵)で暗号化します。暗号化した情報はAさんが持つ私有鍵(復号鍵)でしか復号できず情報を安全に送ることができます。

Bさんは、送信する内容をAさんの公開鍵で暗号化して送信します。Aさんは、受け取った暗号化データを自分の秘密鍵で復号することが出来ます。

図3-1 公開鍵暗号での暗号化の例

電子署名の場合は鍵の使い方が逆になります。暗号化鍵を秘密とし、復号鍵を公開します。同じ例でAさんが電子署名を行う場合、Aさんの私有鍵(暗号化鍵)で署名対象を暗号化し元の情報とともに提示します。この私有鍵で暗号化した情報が署名となります。署名を確認する場合、Aさんの署名を公開鍵(復号鍵)で複号化し、復号した情報が元と同じであればAさんの私有鍵で暗号化したこと すなわち署名したことを確認できることになります。

Aさんは、送信する内容を自分の秘密鍵で暗号化して送信します。Bさんは、受け取った暗号化データをAさんの公開鍵で復号することが出来ます。

図3-2 公開鍵暗号での署名

このように公開鍵暗号では秘密の情報をやり取りすることなく、相手が公開鍵に対応する私有鍵を持っていることを確認できます。これは公開鍵暗号が認証にも使用できることを意味します。


3.1.3. PKIを陰で支えるハッシュの技術

前節で、PKIでは公開鍵暗号による電子署名を利用することをお話ししました。しかし、対象データをそのまま署名しようとすると対象データのサイズによっては大変重い処理となりかつ署名データも肥大化してしまいます。そのため実際には以下に説明するハッシュの技術を使用してこの問題を回避しています。

ハッシュはチェックサム・メッセージダイジェスト・一方向関数とも呼ばれ、入力データをある一定の長さのデータに変換する処理で以下の性質を有するものを指します。

  • 一方向性:出力結果から入力値を逆算することが困難(現実的に不可能)
  • 衝突耐性:入力値が異なっていれば出力値も異なる
    • 弱衝突耐性:あるメッセージのハッシュ値と同じハッシュ値を返す別のメッセージを見つけるのが非常に困難
    • 強衝突耐性:ハッシュ値が一致する異なる2つのメッセージを見つけるのが非常に困難

ハッシュは情報を圧縮しているとも言えます。ハッシュは暗号化技術に括られる場合もあり影に隠れがちですが、機密性・完全性の確保には非常に重要な役割を果たしています。

ハッシュは任意のサイズの情報を固定サイズの情報に圧縮でき、元情報の変更にも敏感に反応するため情報の完全性を検証するための基礎技術に利用できます。あるファイルのハッシュ値を安全に保存できれば、当該ファイルが変更されたかどうかをそのハッシュを比較することにより確認することができます。暗号技術と組み合わせて使用されることも多く、実際PKIにおける電子署名においても署名対象のハッシュに対して私有鍵の暗号化を適用します。公開鍵暗号系の暗号化処理は処理の負荷が高いため、ハッシュを使うことにより安全性を保ちながら処理の負荷を軽減できるのです。


3.1.4. 公開鍵証明書とPKI

公開鍵暗号技術は秘密の情報を事前にやり取りすることなく、相対する対象を確実に識別することを可能にしました。しかしながらここで確認できることは公開鍵に対応する私有鍵を相手がもっていることのみであり、この鍵ペアが本当に対象となる人若しくは物のものかを確認することができません。では公開鍵と鍵所有者がとの対応をどうやって確認すればよいでしょうか。信頼している人から手渡しで入手した場合は信頼できるでしょう。郵便書留のように比較的信頼のおける機関が配送の手渡しを保障してくれるなら比較的信頼できると考えるでしょう。信頼のおける人が公開鍵と鍵所有者の属性情報の組に署名し その署名とともに渡されれば、その公開鍵は信頼できるでしょう(最初に信頼する方法は別途考える必要があります)。自分が信頼している人がさらに信頼しているならばその人も信頼できるかもしれません。こうして信頼している人をつないでいくことを信頼の輪と呼び、これを基礎に暗号基盤を構築することはできます。実際PGP(Pretty Good Privacy)と呼ばれる暗号基盤はこうした信頼の輪を基礎に構築されています。

信頼の輪により信用できる所を広げていくことは可能ですが、例えばショッピングサイトとその顧客というようなお互い知らないもの同士で信頼の輪をつなぐは簡単なことではありません。そこでPKIでは共通に信頼をおける第3者機関であるCA(Certificate Authority:認証機関)を導入することにより解決を図っています。公開鍵を認証主体と結び付ける情報とともにCAが署名します。これを証明書(より詳しく述べる場合は「公開鍵証明書」)と呼びます。証明書を受け取った主体は認証主体のことを知らなくても、CAの証明書で公開鍵と認証主体の結びつきを確認することができ、さらにCAを信用するが故にその認証主体を信用することができるわけです。つまり最初のCAという信頼のおける機関を置くことにより信用の輪を短く済ますことができたとも言えます。証明書は公開鍵だけでなくいくつかの付加情報を含められています。有効期限やSubject(証明される対象=公開鍵の持ち主の識別名)、用途なのです。特に公開鍵暗号単体では有効期限の概念が存在しないことに注意してください。証明書の有効となる開始日と終了日がふくまれているため、有効期限を確認できるようになるわけです。

振り返ってみればセキュリティ技術の利用には「配布」の問題が繰り返し現れています。共有鍵暗号の場合、鍵を秘密裡にかつ確実に相手に渡す必要がありました。公開鍵暗号では公開鍵は秘密でなくなりましたが、依然として確実に相手に渡すという問題は残ってしまいました。PKIではCAの信用を用いることで配布の問題を解決しました。しかしながらPKIを業務システムで使用する場合、再びこの配布は問題となってきます。そのあたりの事情については「3.3. 業務システムにPKIを適用した場合の課題」で説明し、その解決方法については「3.4. 業務システムにおけるPKI」で議論することとします。

無料小冊子のお申込みはこちら

株式会社システム計画研究所のオフィシャルサイトはこちら

当サイトへのご質問及び安全・安心・信頼のシステム開発に関するご相談はこちら

通信・ネットワークシステムの開発マネージメント情報サイト「通信・ネットワークシステム開発.COM」はこちら

サーバ監視・ネットワーク監視ツール isNetSentry-S のサイトはこちら