Personal tools
You are here: Home コラム 技術コラム 証明書と鍵に関する、ありがちなメタファーとありがちな間違い
Document Actions

証明書と鍵に関する、ありがちなメタファーとありがちな間違い

PKIの証明書、いわゆるディジタル証明書を現実のモノで例える場合、パスポートや運転免許証に例えることが多いです。これはある面では間違っていませ ん。権威ある所(パスポートであれば国家)が発行したモノを、その権威を信頼することで信頼するメカニズムは、似た構造を持っています。しかし、このメタ ファーが原因で起きる勘違いもあります。パスポートの場合、大事に持ち歩き無くさないように注意しなければいけません。言わば、パスポートの場合、「所持 していること」が本人性の確認のひとつとして機能しています。ディジタル証明書にそういう側面はありません。ディジタル証明書を持っていることは、本人性 の確認には何の役にも立ちません。極論を言うと持っている必要もありません(確認する側が持っていれば充分です)。

ディジタル証明書を簡単に説明すると、「その人の名前と公開鍵のペアに対して信頼できる誰かが署名したもの」です。それぞれをもう少し詳しく説明すると次のようになります。
「その人の名前」は、X.500的には識別名(DN:Distinguish Name)です。とりあえずログインIDやアカウントIDと思っても結構です。以下、「名前」で統一します。
「公 開鍵」は秘密鍵とペアに作成されるPKIの公開鍵です。秘密鍵は他人に盗まれてはいけません。PKIの相手認証(相手の本人性の確認)は、言わば相手が正 しい秘密鍵を持っているかを確認する行為です。持っていることだけで本人性を確認するのは少し不安なので、一般に、秘密鍵にはパスワード(やパスフレー ズ)をかけて、盗まれた時への防衛をします。これにより、本人性の確認は、「秘密鍵を持つこと」と「秘密鍵のパスワードを記憶していること」のふたつにな ります。
「信頼できる誰か」は人でもいいですが、普通はCA(認証局)と呼ばれる機関です。
「署名」はCAの秘密鍵で行います。署名の確認(検証)は、対応する公開鍵により誰でも行えます。

ここまでの話をまとめると、CAがユーザに証明書を発行するということは、CAが(CAの)秘密鍵でユーザの名前とユーザの公開鍵に署名をしてあげる行為になります。

CA は信頼できる誰かだと言いましたが、この信頼性は別の信頼に依存しています。あるCAが信頼できるのは、そのCAの証明書に別の信頼できる誰か(CA)が 署名をしたからです。CAは上位のCAから証明書を発行してもらいます。ユーザがCAから証明書を発行してもらうことと等価です。更に言うと、自分で自分 に証明書を発行することも技術的には等価です(自分の秘密鍵で、自分の公開鍵に署名します)。いわゆるオレオレ証明書です。オレオレ証明書に(信頼性に関 する)何らかの意味があるのかと聞かれれば、意味はありません、というのが答えです。しかし、CAから発行された(本物の?)証明書に意味があるのかと聞 かれれば、CAを信頼するなら意味がある、としか答えようがありません。CAの信頼性はその上位のCAの信頼性に依存します。この信頼の連鎖を上位にた どって行くと、最後には何もありません(*1)。

最後に何も無いというのは言いすぎで、実際のCAの信頼性を支えているのは現実です。ベ リサインやエントラストがもし信頼できるとすれば、証明書の発行の際の審査に対する厳しさがあるからです。お金をたくさん払った人にしか証明書を発行しな いCAであれば、たぶん信用できるのです。金を出して、自分の存在証明をした奴は信用できるという、まことにありがたい世界です(*2)。

あ るCA-Xから発行された証明書が正しいことの検証は、その証明書がCA-Xによって署名されているかを検証することです。署名の検証は、(署名に使われ た秘密鍵に対応する)公開鍵で行います。CA-Xの公開鍵が必要です。CA-Xの公開鍵が本当にCA-Xの公開鍵であるかはどうすれば分かるのでしょう か。これを分かるためのモノが証明書です。つまり、CA-Xが発行したユーザAの証明書の妥当性を検証するには、CA-Xの証明書が必要です。信頼の連鎖 により、CA-Xの証明書の妥当性の検証には、CA-Xの上位のCAの証明書が必要です。この連鎖は、再び、ルートCAに至ります。

Web ブラウザやAirOneは、あらかじめCAの証明書をソフトウェアの配布に含めています。その証明書を無条件に信頼することで、信頼の連鎖のブートスト ラップを行っています。AirOneがオフラインでも証明書の妥当性の検証が行えるのは、このためです。ソフトウェア配布に含めた証明書の正しさの保証 は、ソフトウェア配布者の責任の範囲です。


ここまでの基本を押えた上で、証明書をパスポートのメタファーで考え直してみます。

パスポート:
1. 申請、審査
あなた(名前はAとします)は、住民票など自分の本人性を確認できる何かと自分の写真を持ってパスポートの発行を申請します。

2. 発行
受け取る場所はともかく、パスポート発行の主体は日本国です。パスポートを受け取る時、あなたの顔はパスポートの顔写真と(窓口の人に)照合されているはずです。

3. どこかの国へ入国時の本人確認(認証:authentication)
あなたはパスポートを提示します。入国審査官はパスポートが偽造ではなく、日本国から発行されたものかを確認します。厳密にやりたければ、パスポート番号で(信頼できる経路で)日本国に記載項目を問い合わせれば可能です。
入国審査官は、パスポートの写真とあなたの顔を照合します。パスポートをを所持していることと合わせて、あなたの本人性の確認が行われます。この国は日本国を信頼しているので、あなたをパスポートに記載された日本国のAさんだと認めます。

4. どこかの国へ入国時の入国許可(認可:authorization)
日本人なら無条件で入国許可なら、すぐに入国できます。日本人でも、犯罪歴や伝染病に感染していたら入国拒否というルールなら、まだ終りません。日本国のAさんということが分かっているので、この名前で犯罪者DBなどを照会します。問題なければ入国を許可されます。



ディジタル証明書:
1. 申請、審査
申請の登録を受け付ける機関をCAと区別したい場合、RA(登録局)と呼びます。なんらかの物理的手段(住民票や電話インタビュー)で本人性を確認します。AirOneでは、名前はメールアドレスなので、メールを受信可能であることで本人性の確認にしています。

2. 発行
こ こではパスポートのメタファーに合わせて、顔写真を貼ったディジタル証明書にします。CAが名前と顔写真付きのディジタル証明書を発行します。秘密鍵に対 応するのはあなたの物理的な顔です。公開鍵に対応するのはパスポートに貼られた顔写真です。この国(日本)では、名前はユニークになると仮定します。
あ なたは証明書を受け取ってもいいですし、別に受け取らなくても構いません。なぜなら、ディジタル証明書はいくらでもコピー可能で、いつでも手に入れること が可能だからです。証明書がコピー可能であることは、発行の審査がいい加減であることは意味しません。別の誰かがあなたの名前を騙って、あなたの名前の付 いた別人の顔写真のパスポートが発行されることはありません。同様に、あなたの顔写真に別人の名前のついたパスポートが発行されることもありません。そう いうことが起きたらどうなるのかと言われれば、単に発行元(日本国)が信頼できなくなるだけです。そこが発行する証明書は信頼できなくなります。

3. どこかの国へ入国時の本人確認(認証:authentication)
証 明書を提示してもいいですが、名前を告げるだけでも充分です。名前を告げれば、日本国に問い合わせて証明書を手に入れることができるからです。この問い合 わせの経路が信頼できる経路かは不明です。入国審査官はある魔法の力で、証明書が日本国発行か否かの判定ができます。偽造も完全に検出します。
あなたの証明書は誰でも入手可能なので、証明書を提示したとしても、あなたの本人性の確認には何の寄与もしません。証明書の顔写真とあなたの顔の照合で、本人性が確認されます(*4)。この国は日本国を信頼しているので、照合の結果、あなたを日本国のAさんだと認めます。

4. どこかの国へ入国時の入国許可(認可:authorization)
日本人なら無条件で入国許可なら、すぐに入国できます。日本人でも、犯罪歴や伝染病に感染していたら入国拒否というルールなら、まだ終りません。日本国のAさんということが分かっているので、この名前で犯罪者DBなどを照会します。
属性証明書に、名前以外の属性を記することも可能です。属性証明書が信頼できる理由は普通の証明書と同じ仕組みです(*5)。属性証明書に犯罪歴を記述しておくと、DBの照会の手間が減ります。分散処理には有効です。問題なければ入国を許可されます。


(*1)
連鎖の最後(最上位)はルートCAと呼ばれます。

(*2)
CAが信頼できるか否かの基準は他にもあります。証明書の署名に使う秘密鍵をいかに厳重に守っているかも基準のひとつです。不正なユーザに対して、速やかに証明書を無効にできる体制があるかも基準のひとつです。

(*3)
証明書の業界標準フォーマットはX.509です。

(*4)
メタファーを離れて実際に戻ると、秘密鍵を持っていることを確認する行為になります。秘密鍵を安易に提示することはなく、渡された乱数を秘密鍵で暗号化して返します。(証明書内の)公開鍵で復号できれば、相手が秘密鍵を持っていること確認できます。

(*5)
AirOneの場合、属性証明書ではなく、X.509のv3拡張領域に属性を記述しています。


Copyright(C) 2001 - 2006 Ariel Networks, Inc. All rights reserved.