3 Minutes NetWorking Supplement
No.18

3Minutes NetWorking Supplement

補講第18回PKI(5) 電子証明書

■ 公開鍵暗号化の弱点

おねーさん

おね〜さんと、

ほげたん

ほげたんのっ!!

おねーさん

3 Minutes Networking、

ほげたん

Supplement !!

おねーさん

ん〜っと。前回、ディジタル署名が登場したわね。これが改ざん・なりすまし・否認の対抗策になる、と。

ほげたん

なんか含みのある終わり方だったよね。「完全に防止できない」とかなんとか。

おねーさん

うん。ディジタル署名だけでは完全に防止できない、と確かに言ったかな。

ほげたん

でもさでもさ、おね〜さん。ディジタル署名使えば、改ざんの検出もできるし、認証もできたよ。なんでダメなのさ?

おねーさん

ディジタル署名「だけ」では、と言ったでしょ? つまり、こういうこと。

[FigureSP18-01:ディジタル署名の弱点]

ほげたん

…、ところでさ。前もそうだったんだけど、なんでこのブラックほげたんは僕になりすましとかしようとするのかな?

おねーさん

恨みでもかってるんじゃない? 「気に入らなかったんだよ、ずーっとな。どうして、いつもいつも手前がリーダーなんだッ!!」とかなんとか。

ほげたん

あ、あぁ。思い通りにいかないのが世の中なんて割り切りたくないよね。

おねーさん

その手を汚せというのかどうか聞きたいところね。
それはそれとして、見事になりすましも改ざんも成功したでしょ?

ほげたん

そだね。ブラックほげたんが改ざんしたデータでハッシュして、ブラックほげたんの秘密鍵で暗号化した署名データを、ブラックほげたんの公開鍵で復号するんだから、そりゃ検証結果は正しくなるよね。

おねーさん

でしょう? ここでのポイントは何?

ほげたん

ん、ん〜。ブラックほげたんの公開鍵が、僕の公開鍵であるって思われてるところ、かな。

おねーさん

そうよね、ほげたんの公開鍵で検証ができたと思ってるから、ほげたんが作成したデータだと信じちゃうわけよね。これはつまり?

ほげたん

つまり、公開鍵のなりすまし

おねーさん

そう、ディジタル署名の弱点、というよりも公開鍵暗号化の弱点がソコ。公開鍵が送信元/作成者のものであることが前提になっているわけね。なので、公開鍵をなりすましされてしまうと、改ざん防止・認証のシステムそのものが破綻しちゃうわけ。

ほげたん

う、う〜〜ん。そうなっちゃうのか。

おねーさん

ディジタル署名じゃなくて、公開鍵暗号化による通信の秘匿の方も、やっぱり「公開鍵のなりすまし」で破綻しちゃうのよ。

[FigureSP18-02:公開鍵暗号の弱点]

おねーさん

わかった? 「公開鍵のなりすまし」が起きると、公開鍵暗号化を使ったシステムが役に立たなくなっちゃうってことが。

ほげたん

確かに、通信の秘匿も、ディジタル署名もダメになっちゃうね。

おねーさん

でしょ。どうすればいい、ほげたん? どうすれば「公開鍵のなりすまし」を防ぐことができる?

ほげたん

う〜ん・・・、なりすましをふせぐんだから、公開鍵にディジタル署名をつける、ってのはどうだろうか?

おねーさん

どうだろうか、ってね、ほげたん。じゃあ、その公開鍵のディジタル署名を検証するためには公開鍵が必要で、その公開鍵がなりすましされたらどうするのよ。

ほげたん

じゃあ、それにもディジタル署名を…って堂々めぐりだよね、これじゃ。

■ PGP

おねーさん

そうよね。じゃあ、どうやってこの「公開鍵の所有者を保証」するかというと、2つの方法が考え出されたの。

  • 個人レベルでの保証
  • 第三者機関による保証
ほげたん

個人レベルと第三者機関による保証?

おねーさん

まず、個人レベルの保証ね。まず、信頼できる友人がいます。この人の公開鍵は「確かにその人の公開鍵である」と信頼します。

ほげたん

違ったらどうするの?

おねーさん

さぁ?

ほげたん

えぇぇ!?

おねーさん

いや、これが前提だから。信頼しないことにはどうしようもないの。だから、改ざんやなりすましが起きえない状況、例えば手渡しとかで公開鍵をもらうか、無条件に信頼するかして公開鍵をもらうわけ。

ほげたん

そ、そうなの…。う、うん、まぁ、ともかく友人の公開鍵を信頼したよ。

おねーさん

とりあえず、「直接に公開鍵をもらった人(信頼できる友人)」の公開鍵は「信頼できる公開鍵」よね。その人とはこれでディジタル署名も、通信の秘匿もおっけーになるわね。

ほげたん

そだね。

おねーさん

「信頼している友人」以外とディジタル署名・通信の秘匿を行いたい場合、「信頼できる友人」が「信頼している友人の友人」の公開鍵に署名をしてくれる、という形になるの。

ほげたん

え? えぇ?

[FigureSP18-03:公開鍵の個人レベルでの保証

ほげたん

「信頼できる友人」が署名して送ってきた「信頼できる友人の友人」の公開鍵は信頼できる?

おねーさん

そう、上の例でいえば、ほげたんが入手したネットさんの鍵は「信頼できる」わよね。ほげたんにとってネットさんは「信頼できる友人」だから。

ほげたん

ん、そうなるね。「信頼できる友人」は信頼しちゃうから、僕が入手したネットさんの鍵は「信頼できる」よ。

おねーさん

それをほげたんがディジタル署名をつけて送信する。受け取った私は、署名の検証がOKならば、その公開鍵は「信頼できる友人」であるほげたんが送ってきた(なりすましの防止)、ネットさんの正しい公開鍵(改ざんの防止)である、わよね。

ほげたん

そうだね、ディジタル署名がついてるからそうなるね。

おねーさん

よって、受け取った「ネットさんの鍵は信頼できる」ってことになるわけ。これでネットさんと私は通信の秘匿・ディジタル署名を使えるってことになるわ。これはPGPで使用されているディジタル署名の方式よ。 ▼ link

ほげたん

へぇ、ぴーじーぴーね。でもさ、これ、ネットさんが僕の信頼できる友人だったからいいけど、もし相手が信頼していない人や信頼している人の友人じゃなかったらどうなるの?

おねーさん

信頼してない、信頼している友人が信頼していない場合は、その人を別個に信頼するか、信頼できないから公開鍵を受け取らない、になるわね。

ほげたん

なんか、範囲が狭そうだね。

おねーさん

うん。だからPGPはコミュニティでの利用がメインで、広範囲での利用や、組織での利用はあまりされてないの。だって、例えば会社で利用するとしたら、その社内の人達全員を個別に「信頼する」という設定しなきゃダメなのよ。

ほげたん

あ〜、それはちょっと面倒かも。

おねーさん

でしょ。新入社員が入ってくる季節とか大変よね。よって、もう1つの「第三者機関による保証」が出てくるわけね。

ほげたん

第三者機関って何?

■ 認証局と電子証明書

おねーさん

ん〜、信頼できる第三者により、公開鍵の保証を行うってことなんだけど。そうねぇ、イメージでいうと、お役所かな?

ほげたん

役所? 市役所とか区役所とか?

おねーさん

んっと、ハンコって使うわよね。この文書を書いたのは自分ですよーって証明するために。さらに、ハンコが押してあると改ざんできなくなるし。

ほげたん

うん、「捺印」だっけ。

おねーさん

正規の取引では、その捺印が本人の印鑑かどうか確認するために、印影が必要でしょ。これが私の印鑑を押した場合の印影ですって。さらにそれがニセモノでないことを証明しなきゃだめでしょ?

ほげたん

そだね。お役所は「印鑑証明書」を発行してくれるよね。

役所と捺印と印鑑証明書

[FigureSP18-04:役所と捺印と印鑑証明書]

おねーさん

さて、これをディジタル署名で考えてみると? データ(文書)に改ざん・なりすまし防止に秘密鍵(印鑑)を使って署名(捺印)する。これを検証するために公開鍵(印影)が必要。ここまではいい?

ほげたん

あ、あぁ。なんとなくわかってきた。「公開鍵のなりすまし」を防ぐために、「役所」が発行した「印鑑証明書」が必要って話なんだ。

おねーさん

そうそう。この印影(公開鍵)は印鑑(秘密鍵)と同一(ペア)ですよ、と印鑑証明書は保証しているわけでしょ。それを行っているのが役所。ディジタル署名では印鑑証明書に当てはまるのは「電子証明書」と呼ばれるわけね。それを発行するのが「第三者機関」。

ほげたん

なるほどなるほど。第三者機関という「お役所」と、電子証明書という「印鑑証明書」がでてくるわけだ。

おねーさん

そうね。この第三者機関は通常、認証局、CAと呼ばれるわ。

ほげたん

認証局、CA。

おねーさん

CAは、印鑑証明にあたる電子証明書を発行するわけね。申請者を審査し、公開鍵に「証明」をつけるってわけ。

ほげたん

公開鍵の「証明」が電子証明書、になるわけだ。

おねーさん

そう。だから、電子証明書は公開鍵証明書とも呼ばれるのよ。「公開鍵」が本人のものである「証明」をするものだからね。

ほげたん

そっか。公開鍵の所有者を第三者が保証するための書類ってことだね。

おねーさん

じゃ、この電子証明書を説明していきましょう。電子証明書はITUのX.509で規定されてるわ。RFCでも同じ規格をRFC3280として規定してるの。 で、それを説明するけど、フォーマットがASN.1なんだけど? ▼ link

ほげたん

あせんわん? ASN.1嫌い。

おねーさん

じゃ、普通に書くわね。

フィールド説明





バージョン証明書のフォーマットバージョン。現行はバージョン3
シリアル番号発行CAが決定するユニークなシリアル番号
アルゴリズム識別子発行CAが使用した署名(ハッシュと公開鍵暗号)の種類
発行CA名発行CAの名前
有効期間GMTで表記された有効期限の開始日時と終了日時
サブジェクト公開鍵の所有者名
公開鍵所有者が保持する公開鍵とその種類
発行CAユニークID発行CAやサブジェクトを再利用する際に使用する。使用しないことが推奨
サブジェクトユニークID
拡張領域追加情報など
署名アルゴリズム発行CAが署名する際に使用したハッシュの種類
発行CA署名発行CAによる署名

[TableSP18-01:X.509電子証明書]

ほげたん

ん、ん〜〜〜〜。大体わかるような、わからないような。

おねーさん

じゃ、ホンモノ使って説明しましょっか。電子証明書といえばってことで、ベリサインのテスト用のClass1 Digital IDを取得したの。 ▼ link

ほげたん

Class1 Digital ID?

おねーさん

ベリサインは、その電子証明書の使い道と保証の度合によって、電子証明書をクラス分けしてるの。Class1は主に電子メールの暗号化とかに使われるものね。

ほげたん

へ〜。どうでもいいけど、それをこうやってサイトで公開して説明しちゃっていいものなのかなぁ。

おねーさん

う………、ま、まぁ。もしダメだったら変えるから、ベリサインの人見てたら連絡下さい。
と、ともかくよ。これがホンモノの電子証明書ね。

電子証明書

[FigureSP18-05:電子証明書(VeriSign Class1 DigitalID)]

ほげたん

おね〜さん、これだけだといまいちわからないというか。さっきのX.509フォーマットがわからないよ。

おねーさん

それは詳細タブで確認できるわ。

電子証明書・詳細

[FigureSP18-05:電子証明書・詳細]

おねーさん

スクロールバーがなんか変なことになってるけど気にしないでね。

ほげたん

バージョン、シリアル番号、署名アルゴリズム、発行者、有効期間の開始と終了、サブジェクト、公開キー、…基本制限?

おねーさん

その「基本制限」から「CRL配布ポイント」までは[TableSP18-01]でいうところの拡張領域ね。そのあとの「拇印アルゴリズム」が「署名アルゴリズム」、「拇印」が「発行CA署名」ってこと。

ほげたん

拇印? あ、あぁ、そうか。署名って拇印みたいなもんだもんね。

おねーさん

そうね。それに一方向ハッシュ関数で出力したダイジェストを「フィンガープリント」なんて呼んだりもするしね。

ほげたん

ふぃんがーぷりんと? 指紋?

おねーさん

人間と指紋の関係って、人間が指をペタッて押して作られた「指紋」は、「人間を識別」できるモノよね。これって「データからハッシュ関数によって作り出されたダイジェスト」と関係的に似てない?

ほげたん

ダイジェストは「データから作られたもので、データを識別できる」もの。指紋は「人間から作られたもので、人間を識別できる」もの。うん、似てるね。だから、ダイジェストをフィンガープリントって呼ぶのか。

おねーさん

そゆことね。んでね、X.509電子証明書に戻るけど。ホンモノと[TableSP18-01]を見比べると、「拡張領域」のところは置いておくとして、大体は書かれてることわかるわよね。

ほげたん

うん、まぁ、大体は。

■ 電子証明書を使った公開鍵の利用

おねーさん

今回の説明でのポイントは、公開鍵とその保有者であるサブジェクト、そしてそれを発行したCA名とその署名が入っていることね。

ほげたん

公開鍵と保有者の名前と、CAの名前とその署名。…CAの署名?

おねーさん

うん、電子証明書の改ざん検出と発行CAの認証を行うために、CAの署名がついてるのよ。これにより、電子証明書の改ざんやなりすましを防ぐってことね。

ほげたん

なるほど…。でも、署名は検証しなきゃダメだよね。検証には公開鍵が必要で。
ってことはCAの公開鍵がいる?

おねーさん

うん。CAは自分の公開鍵を配布するの。電子証明書の形式でCAの公開鍵を配布するわけ。ただし、電子証明書の「発行CA名とその署名」は自分自身になってるわ。

ほげたん

自分自身? え? 自分で自分の電子証明書に署名するの?

おねーさん

そう。これを自己署名証明書と言うの。う〜んと、たとえばベリサインのClass1のCAが発行している自己署名証明書はこんな感じ。

自己署名証明書

[FigureSP18-06:自己署名証明書]

おねーさん

発行者とサブジェクトが同じでしょ?

ほげたん

う、うん。でもさ、自分で自分の証明書に署名って、なんか変じゃない?

おねーさん

それはしょうがないわね。ま、詳しくは次回話すから、今回は「CAの公開鍵は自己署名証明書で配布されている」って覚えておいてね。ともかく、電子証明書を使った場合の、ディジタル署名は次のようになるわ。

[FigureSP18-07:電子証明書を使ったディジタル署名

ほげたん

うわ、面倒くさっ。3回も検証処理が入ってるよ?

おねーさん

そうなっちゃうわね。次の3つの検証が必要だからね。

  1. CAの電子証明書の改ざんの確認
  2. 送信者の電子証明書の改ざんの確認とCAが発行したという認証
  3. 送信者の署名データによる改ざんの確認と送信者が作成したという認証
おねーさん

(3)は前回のディジタル署名の話。今回のポイントは(2)よね。公開鍵とその所有者の結びつきをCAが保証しているってこと。よって、電子証明書でない公開鍵は受け取らないようにするわけ。

公開鍵のなりすましの防止

[FigureSP18-08:公開鍵のなりすましの防止]

ほげたん

それにより、公開鍵のなりすましを防ぐってことだね。

おねーさん

そう、それが電子証明書の目的だからね。さて、もう1つの公開鍵暗号化による通信の秘匿の場合も見てみましょう。

[FigureSP18-09:電子証明書を使った公開鍵暗号]

ほげたん

なるほど。これでディジタル署名も公開鍵暗号による通信の秘匿も、なりすましや改ざんがおきなくなるわけだね。

おねーさん

ん〜〜〜。

ほげたん

なにその含みのある笑い? ダメなの? 電子証明書を使ってもダメなの?

おねーさん

ダメじゃないわよ。ただ、まだ足りないわね。

ほげたん

な、何が? もう完璧だと思うんだけどなぁ。

おねーさん

それはまた次回の話になるから、今回の話をまとめましょ。まず、「公開鍵のなりすまし」という脅威の話。

ほげたん

「公開鍵が送信者のものである」ことが公開鍵暗号化を使ったシステムの前提だからだね。

おねーさん

そのため、「個人的な保証」または「第三者機関による保証」が必要って話だったわよね。
「個人的な保証」より、「CAによる電子証明書を使った保証」の方が優れているところはわかる?

ほげたん

範囲の問題? 個人的な保証だと、どうしても「友達の輪」から外れている人は保証できない?

おねーさん

「友達の輪」とはまた古いわね。それもあるし、いちいち友人を個別に信頼しなきゃダメでしょう。
それに比べ、CAを使う場合、CAが発行するすべての電子証明書が保証されるから、よりパブリックに使いやすい。

ほげたん

そうなるよね。

おねーさん

CAが発行した電子証明書以外の方法で公開鍵を受け取らないようにすることで、公開鍵のなりすましを防ぐってことになるわけ。

ほげたん

「公開鍵がその人のものである」という証明が電子証明書だからだね。

おねーさん

そゆことね。そうそう、ほげたん。このCAと電子証明書の仕組みって、結局はディジタル署名という技術よね。

ほげたん

……そだね。どっちかというと、CAと電子証明書という「仕組み」の話だよね。
申請して、発行して、検証する。技術的にはディジタル署名以外特に使ってないよね。

おねーさん

でしょ。前回「技術的にはこれでOK」って言ったでしょ。
さぁ、PKIがわかってきたかな?

ほげたん

PKI? 「公開鍵暗号化を正しく使うための基盤」? 確かにCAや電子証明書という「仕組み」がなければ公開鍵暗号化は正しく使えないね。

おねーさん

でしょう? 「公開鍵のなりすまし」問題があるからね。

ほげたん

そうか、このCAと電子証明書の仕組みがPKIなんだっ!!

おねーさん

ん〜〜〜〜。

ほげたん

またその含み笑い…。そういう笑顔おねーさんホントよく似合うよ。邪悪で

おねーさん

……。

ほげたん

痛い痛い痛いっ!! 無言でつねらないでっ!! 怖いっ!!

おねーさん

ほげたんはもうちょっと口に気をつけましょう。そんなに生き急ぐ必要はないでしょ

ほげたん

は、はい…、気をつけます…。

おねーさん

ともかく、さっきも言ったでしょ、「まだ足りない」って。まだ「正しく使えるための基盤」としてなってないのよ。

ほげたん

…何が足りないんだろう?

おねーさん

んふふ。また次回ね。
おね〜さんと、

ほげたん

ほげたんのっ!!

おねーさん

3分間ネットワーク、

ほげたん

サプリメントでした〜〜〜っ!!

PGP
[Pretty Good Privacy]
公開鍵暗号化を利用した、暗号・署名ができるソフトウェア。メールでの利用が多い。RFC4880でメッセージフォーマットが規定されている。
第三者機関
[Trusted Third Party]
「TTP」と略す。
印影
読みは「いんえい」。印鑑を押した時にできるいわゆる「印」のこと。
電子証明書
[Digital Certificate]
ディジタル証明書、公開鍵証明書とも呼ばれる。
認証局
[Certificate Authority]
X.509
ITU(国際電気通信連合)が規定した電子証明書と失効リストの規格。ISO(国際標準化機構)とIEC(国際電気標準会議)が同規格を標準化したものがISO/IEC9594-8。IETFが標準化したものがRFC3280。
ベリサイン
[Verisign Inc.]
電子証明書のトップ企業。他にも.netと.comのルートネームサーバを管理する、ネットワークインフラ企業。参考サイトは日本法人の「日本ベリサイン社」のサイト。
フィンガープリント
[FingerPrint]
「指紋」「拇印」の意味。
ほげたんほげたんの今日のポイント
  • 公開鍵のなりすましにより公開鍵暗号化のシステムは破綻する。
    • 公開鍵の所有者の保証を行うためのシステムが必要。
  • 公開鍵の保有者を保証する電子証明書とそれを発行するCAが必要である
  • 電子証明書以外の方法で公開鍵を受け取らないようにすることでなりすましを防ぐ。

3 Minutes NetWorking Supplement No.18

管理人:aji-ssz(at)selene.is.dream.jp