情報処理安全確保支援士 - SE娘の剣 -

左門至峰による情報処理安全確保支援士試験に合格するためのサイトです。 過去問を引用しながら、試験に出る基礎知識を体系的かつ詳細に整理します。

電子証明書

1.電子証明書は何を証明するものなのか

情報処理技術者試験やインターネットにおける“証明書”とは何の証明書か

11d7b807

卒業証書は、「卒業したこと」を証明するもの。
運転免許証は、「運転する技能があること」を証明するもの。
インターネットの証明書は、なんだろう? 個人やサーバを証明するもの???

サーバ証明書や、クライアント証明書は、サーバであったりクライアントの証明であるが、その何を証明するのだろうか? そこがポイント。
情報処理安全確保支援士試験やインターネットにおける“証明書”とは、“公開鍵証明書”を意味する。この点に関して違和感を覚える人がいるかもしれない。しかし、インターネットの世界で安全な通信をするには公開鍵が重要な役割を持つ。公開鍵の真正性と完全性を保証するために公開鍵証明書が必要である。

過去問(H27年秋IP問83)でも、「PKIにおいて,電子証明書が正当性を証明しているものはどれか」という出題がありました。当然、正解は「公開鍵」です。

2.ディジタル証明書(電子証明書)には3つある

証明書には、ルート(CA)証明書、サーバ証明書、クライアント証明書の3つがある。
(1)ルート(CA)証明書
 認証局であるCAの公開鍵を証明する証明書
(2)サーバ証明書
 サーバの公開鍵を証明する証明書
(3)クライアント証明書
 クライアント(PC)の公開鍵を証明する証明書
ディジタル証明書の3つ

たとえば、IPAのサイトでサーバ証明書を見てみよう。試験を申し込むときは、HTTPSによるSSLの通信を行う。

ipa

HTTPSの場合、上記のように鍵のマークがつく。
ルート証明書による確認が行われ、確認ができない場合はメッセージが出るが、そうでない場合はメッセージがでない。

これはサーバが正当であることを証明するサーバ証明書である。
利用者が不正なサーバ(サイト)でないことを確認するもの。不正なサイトにクレジット番号を入力したら困る。それを防ぐためのものである。

情報セキュリティスペシャリスト試験を目指す女性SE

サーバ証明書の目的は分かりました。たぶんクライアント証明書も同じだと思います。ルート(CA)証明書は何に使うのですか?
 
確かにそうだね。認証局(CA)と通信することはないから、証明書を確認するタイミングがないね。
認証局(CA)の証明書の目的は、サーバ証明書やクライアント証明書のディジタル署名を照合するときに、CAの公開鍵が必要になる。署名の照合に関しては、ディジタル署名の記事を確認いただきたい。

3.証明書の解説

(1)実際の証明書を詳しく見てみよう

情報処理安全確保支援士試の対策として、詳しく理解していきましょう。
証明書の基本的な構造は、次の2つからなる。
①証明書
②ディジタル署名

証明書はX.509に準拠したフォーマットになっており、簡略化すると以下になる。
20230909142415




←証明書部分
 ※暗号化されていない





←CAによるディジタル署名
 ※暗号化されている

実際に、証明書の中身を自分でも確認しよう。教科書に載っている内容と合致しているか確認すると、理解が深まる。


証明書のパスにより、ルート証明書も確認できる。


(2)CN

ここで、見てほしいのが、サブジェクトのCN(CommonName)である。この後にも記載するが、URLのFQDNとCN(CommonName)が一致しないと、オレオレ証明書の可能性があるとして、クライアント側にエラーが表示される。
以下、IPAの場合のCNである。IPAのサイトのURLはwww.jitec.ipa.go.jpであり、CNと一致する。

(3)SubjectAltName

サーバー証明書のSubjectAltName(SAN:サブジェクトの別名)について解説する。これは、R2SC午後1で問われた。
通常、証明書ではCN(CommonName)がFQDNと一致するかを確認する。一致しなければ正規の証明書ではないとして、エラーになる。加えて、サーバー証明書のSubjectAltName(SAN:サブジェクトの別名)も確認する。
これにより、複数のドメインを1つの証明書で運用することができる。
たとえば、以下はトヨタ自動車さんの証明書であるが、toyota.jpドメインの別名として、etoyota.netなどの合計4つが記載されている。

4.電子証明書は誰が署名するのか

電子証明書は、元の文書である証明書部分にディジタル署名を付与したものである。
では、署名をするのは誰か?3つ証明書それぞれで考えてほしい。
情報セキュリティスペシャリスト試験を目指す女性SE

本当は即答しなければいけないんでしょうが、
ちょっと考えちゃいますね。

以下で整理しよう。

証明書の種類 ディジタル署名をする人
クライアント証明書
サーバ証明書
CA証明書

理由を考えながら解くとよい。
例えば、サーバ証明書は誰が署名をするのか?
サーバ(またはその持ち主)が自ら署名したらどうなるか?
悪意のある人が自分で署名し、「おれのサーバ証明書は正しい」と主張することになる。
このやり方では、正規のサーバ証明なのか、悪意のあるサーバ証明書なのかが分からない。
 正解は、全て認証局であるCAが署名する。参考までに、ルート証明書は、自分で自分を署名するので、自己署名と言われる。
 一方、ディジタル署名の電子商取引などの場合は、認証局であるCAではなく、署名者本人が署名するので注意が必要である。
署名_情報セキュリティスペシャリスト試験
▼ディジタル署名と電子証明書での署名者の違い

5.CRL(Certificate Revocation List:失効リスト)

CRL(Certificate Revocation List)は,有効期限内に失効(Revocation)したディジタル証明書(Certificate)のシリアル番号のリスト(List)です。
たとえば、証明書が誰かになりすまして作成されたなどの不正が判明した場合に、その証明書の番号をCRLに登録します。CRLを認証サーバなどに登録し、失効した証明書が提示された場合には、認証を拒否します。
情報セキュリティスペシャリスト試験を目指す女性SE

面倒な方法ですね。もっといい方法はないのですか?

残念ながらこれしかないと思います。盗まれたり偽造された証明書を強制的に取り上げたり、無効化することはできないからです。有効期限が切れれば失効リストで管理する必要はありませんが、有効期限内のものは失効リストに登録して管理するしかありません。
情報セキュリティスペシャリスト試験を目指す女性SE

ちなみに、CRLはどこに入れるのですか?

一般的には認証サーバです。認証の問い合わせがあった際に、CRLを確認します。

過去問(H24秋NW午前2)
問19 CRL (Certificate Revocation List)はどれか。
ア 有効期限切れになったディジタル証明書の公開鍵のリスト
イ 有効期限切れになったディジタル証明書のシリアル番号のリスト
ウ 有効期限内に失効したディジタル証明書の公開鍵のリスト
エ 有効期限内に失効したディジタル証明書のシリアル番号のリスト






正解はエ
イの有効期限が切れたものは、CRLに登録しなくても、有効期限をチェックすれば無効かどうかが分かる。

もう一問は情報処理安全確保支援士試験の過去問から。

過去問(H24秋SC午前2)
問1 特定のCAが発行したCRL (Certificate Revocation List)に関する記述のうち,適切なものはどれか。
ア CRLには,失効された公開鍵証明書に対応する秘密鍵が登録される。
イ CRLには,有効期限内の公開鍵証明書のうち破棄されている公開鍵証明書と破棄された日時の対応が提示される。
ウ CRLは,鍵の漏えい,破棄申請の状況をリアルタイムに反映するプロトコルである。
エ 有効期限切れで無効になった公開鍵証明書は,所有者が新たな公開鍵証明書を取得するまでの間、CRLに登録される。






正解はイ

6.認証局(CA)

(1)CA

CAとは、スチュワーデスを意味するCabin Attendantではなく、認証局(CA:Certification Authority)のことです。

では、認証局(CA)の役割はなんでしょう。2つ覚えてください。
(1)証明書を発行すること
(2)CRL(失効リスト)を発行すること。

過去問(H21AP秋午前問39)を見てみましょう。

過去問(H21AP秋午前)
問39 公開鍵暗号方式を採用した電子商取引において、認証局(CA)の役割はどれか。
ア 取引当事者の公開鍵に対するディジタル証明書を発行する。
イ 取引当事者のディジタル署名を管理する。
ウ 取引当事者のパスワードを管理する。
エ 取引当事者の秘密鍵に対するディジタル証明書を発行する。






正解はアです。先ほどの記事でも述べたとおり、証明書は「公開鍵の証明書」であることを強く認識しておいてください。
加えて、CRLを発行することも認証局(CA)の役割です。過去問(H28秋SG午前問29)では、「PKI(公開鍵基盤)における認証局が果たす役割」として、「失効したディジタル証明書の一覧を発行する」とあります。
601a33a7

確かベリサインなどが認証局の代表でしたっけ?
 その通り。ベリサインは、公的な認証局の代表。
認証局には、公的な認証局と、企業などが独自で構築するプライベート認証局の2つがある。公的な認証局であれば、証明書の管理を全て任せられるというメリットがある反面、証明書の費用がかかるというデメリットがある。例えば、ベリサインであれば、1ユーザあたり、年間数千円の費用がかかり、大規模な企業になれば、かなりの費用になる。

(2)IA(発行局)とRA(登録局)

試験にはほとんど出ないので、軽く流しておいてください。
情報処理安全確保支援士試験の過去問(H27年春SC午後Ⅱ問2)には、以下の記述がある。

過去問(H27年春SC午後Ⅱ問2)
証明書の発行に必要なCA(認証局)の機能のうち,IA(発行局)についてはJ社本社のプライベートCAを利用し,RA(登録局)についてはK工場が担当する。

CA(認証局)の機能のうち,RA(登録局)では、証明書発行の受付と発行要求をし、IA(発行局)にて実際の証明書の発行(および失効)を行います。物理的に別サーバであることもあれば、同一サーバであることもある。

(3)検証局(VA)

情報処理安全確保支援士の過去問(H27春SC午前2問4)では、VA(Validation Authority)の役割として、「ディジタル証明書の失効状態についての問合せに応答する」とある。

7.証明書の有効性を確認とOCSP

証明書が正しいかを判断する必要がある。基本的な確認方法は同じであるが、サーバ側とクライアントのブラウザの2つに分けて整理する。
(1)サーバ側(と考えてもらえばいいであろう。)

受け取った電子証明書が正しいかどうか、本物であるかの有効性確認はどうやって行うか。
3つ答えよ。

漠然として難しい問題であるが、がんばって答えて欲しい。





3

確か、証明書にはディジタル署名がつけられていて・・・
その署名をCAの公開鍵で復号して確認したはず。
でも、3つって難しくないですか?

一つは正解。あと2つある。
情報処理安全確保支援士試験の過去問(H18SV午後1問4設問2(1))の問題文と解答を軸に解説する。
証明書が有効かどうかは次の3つで確認する。
❶署名値の照合
 ディジタル署名の照合。「証明書をハッシュしたもの」と「ディジタル署名をCAの公開鍵で復号したもの」が一致するか。これにより、公開鍵が本人のものであること(真正性)と改ざんされていないこと(完全性)が確認できる。
❷証明書の有効期限の確認
 証明書が有効期限内であるか。
❸証明書の失効確認
 この設問の解答例としては、「失効情報の確認」「証明書の失効確認」と記載されている。CRL(Certificate Revocation List:失効リスト)を照合し、CRLに登録されていないか。
またはOCSP(Online Certificate Status Protocol)プロトコルを使った失効確認を行う。OCSPの方が、リアルタイム性が高いが、OCSPレスポンダと呼ばれるサーバを立て、なおかつ事前にCRLを取り込んでおかなくてはいけない。仕組みが整っていない場合が多い。
pki_ocsp_情報セキュリティスペシャリスト

●OCSPに関する過去問(H25SC春午前2問3)
問3 PKIを構成するOCSP (Online Certificate status Protocol)を利用する目的はどれか。
ア 誤って破棄してしまった秘密鍵の再発行処理の進捗状況を問い合わせる。
イ ディジタル証明書から生成した鍵情報の交換がOCSPクライアントとレスポンダの間で失敗した際,認証状態を確認する。
ウ ディジタル証明書の失効情報を問い合わせる。
エ 有効期限の切れたディジタル証明書の更新処理の進捗状況を確認する。






正解はウだ。
また、情報処理安全確保支援士試験の過去問(R2SC午後1問2)では、「PCのWebブラウザでは,HTTPSでアクセスするWebサーバのサーバ証明書が失効していないことを,RFC 6960 で規定されている【 b:OCSP 】を利用して碓認できるようにしている。」という問題が出題された。

(2)ブラウザにおける証明書の有効性確認方法
HTTPSでアクセスした場合、サーバ証明書に問題がある場合は、セキュリティ警告が表示される。
このような証明書の有効性の確認を、ブラウザが自動で実施している。

◇証明書の警告の詳細説明◇
1)「信頼されたルート証明機関」に登録されたCAから発行されているか
2)有効期限内であるか
3)証明書のCNとアクセスするURLが一致するか

実際の画面は以下である。
情報セキュリティスペシャリスト試験対策_IE6のセキュリティ警告
情報セキュリティスペシャリストを学習する剣持成子
 
3)は別として、さきほどの「❶署名値の照合」と「❷証明書の有効期限の確認」とが1)と2)に対応していますね。

そう。「信頼されたルート証明機関」に登録されたCAから発行されているかを確認するには、実際に、ルート証明書を使って署名値を照合する。つまり、ここでの1)は「❶署名値の照合」も含まれている。
さて、情報処理安全確保支援士試験の過去問(H23秋SC午後I問3設問2(2))では、この点が問われた。

過去問(H23秋SC午後I問3設問2(2))
(2)サーバ証明書の検証においてブラウザが確認すべき内容のうち,中間者攻撃のような攻撃への対策となるものを二つ挙げ,それぞれ35字以内で述べよ。






答えは、以下である。
①サーバ証明書のコモンネームとアクセス先のホスト名が一致すること
②サーバ証明書がブラウザで信頼する認証局から発行されていること

①サーバ証明書のコモンネームとアクセス先のホスト名が一致すること
 攻撃者は、正規のBサービスのFQDNでのサーバ証明書を発行してもらうことができません。そこで、たとえば、似たようなFQDNを取得して、サーバ証明書を発行してもらいます。そして、DNSを細工して、攻撃者のサイトに、正規のBサービスのFQDNで接続させます。ですが、ブラウザのアドレスバーに表示されたBサービスのFQDNと,サーバ証明書のFQDNを示すCNの値が異なるので,エラーメッセージが表示されます。
 この先の図で言うと、❶のURLに記載されたFQDNと、❷のCNに記載されたFQDNが一致しないのです。

②サーバ証明書がブラウザで信頼する認証局から発行されていること
 以下は、IPA のWebサイトで、FQDNがwww.ipa.go.jp(下図❶)のサーバ証明書です。発行元の認証局(CA)がスターフィールド(Starfield)になっていることが確認できます。



 このスターフィールドの認証局というのは、WindowsのPCにて、「信頼されたルート証明機関」に登録されています。なので、信頼された認証局から発行されたこの証明書は、信頼ができる(=エラーがでない)ことになります。
皆さんも自分のPCで試してみてください。Windowsのコマンドプロンプトで、certmgr.mscを実行してください。すると、certmgrが起動します。「信頼されたルート証明機関」の「証明書」の中から、スターフィールド(Starfield)を探してください。いくつかありますが、IPAのサーバ証明書を発行したのがCN=Starfileld Root Certificate Authority -G2で、「信頼されたルート証明機関」にあるCNと一致していることがわかります。


 攻撃者が、Bサービス用のサーバ証明書を偽造したとします。すると、上記のスターフィールド(Starfield)などの信頼された認証局では、サーバ証明書を署名してくれません。攻撃者は、偽造した認証局で署名するしかないので、エラーメッセージが表示されます。

dcf52feb

ちなみにですが、ルート証明書が正しいかどうかは、どうやって確認するのでしょうか?

ブラウザが管理している。ブラウザにウイルスが侵入したり、ブラウザを提供している会社が詐欺を働いたら、我々は騙されることになる。でも、ブラウザを信用するしかない。
でも、きちんと管理されていると思う。たとえば、ルート証明書が正しくないと分かった場合、WindowsUpdateなどにより、ルート証明書の失効リストが取得される。

8.クライアント証明書

(1)クライアント証明書のインストール方法
 専用Webサイトからダウンロードしてインストールしたり、郵送等で送られた証明書をダブルクリックしてインストールすることができる。

(2)格納場所
 インターネットエクスプローラの場合、「ツール」「インターネットオプション」「コンテンツ」「証明書」にて「個人」のタグに入る。
また、情報処理安全確保支援士試験の過去問(H22SC秋午前Ⅱ問15)では、「SSLで使用する個人認証用のディジタル証明書は、ICカードなどに格納できるので、格納場所を特定のPCに限定する必要はない」と述べられている。
15863853

メールとか、ダウンロードとか、FDに入れて郵送しようが、
電子証明書なんてコピーされたらおしまいじゃないですか?

そうだね。2つの観点で考えよう。
①インストールされた証明書をコピーする
②インストールする時点の証明書をコピーする

①に関して、クライアント証明書などの場合、基本的にはエクスポートができないようになっている。
ただ、設定によってはエクスポートも可能で、その場合はコピーされたらおしまい。
ためしに、エクスポートしてみましょう。
「秘密鍵のエクスポート」ができないようになっていると思う。
これはコピーができないということだ。

②に関して、最近では、WebシステムやActiveDirectoryなどから自動配布されることが一般的だ。その場合は、その本人が1回しかインストールできない。
FDなどで証明書が郵送されてきたら、それを本人がしっかり管理しないと、盗まれたら誰でもがインストールできてしまう。あまりいい配布方法ではない。

9.証明書とCSR

 企業の社会的責任のCSR(corporate social responsibility)ではなく、証明書のCSRについてである。
CSR(Certificate Signing Request)はスペルから分かるように、証明書の署名要求である。
実際には証明書を発行してもらうのだが、証明書の内容は自分で決めるため、単に「署名してください」とお願いしているだけとも考えられる。だから、署名要求(Signing Request)なのである。

過去問(H25AP秋午後問8)にこれらに関する問題があるので紹介する

過去問(H25AP秋午後問8)
〔WebサイトでHTTPSを使用するための準備〕
 HTTPSを使って通信するためには,「aを取得する必要がある。[ a ]の申請には,識別名(Distinguished Name)が必要になる。識別名は,国コード,都道府県名,市区町村名,組織名,部署名,コモンネーム(SSL接続するサイトのFQDN)から構成される。A社では, SSL通信を行うWebサイトのURLを “https://.www.a.co.jp/member/"とし,識別名を表1のように決定した。

表1 A社の識別名
識別名を構成する項目 値
国コード(Country) JP
都道府県名(State) Tokyo
市区町村名(Locality) Bunkyo-ku
組織名(Organizational Name) A Japan K.K.
部署名(Organizational Unit) User Support
コモンネーム(Common Name) [ b ]

 A社のWebサイト管理者は,識別名を決定し,コモンネームの重複がないことを確認した後,証明書署名要求(CSR : Certificate Signing Request)を生成し,認証局に申請することで[ a ]を取得した。証明書署名要求には,識別名と[ c ]が含まれており,認証局から取得した「aを機器に導入する際には,[ c ]とペアを成す[ d ]が必要になる。[ a ]と[ d ]を機器に導入し,HTTPSでのアクセスが可能になるよう設定した。






正解は、以下である。
a SSLサーバ証明書
b  www.a.co.jp
c 公開鍵
d 秘密鍵

10.証明書の問題(オリジナル)

問題(オリジナル)
 社員が社外から社内システムにリモートアクセスをする環境を作ります。そのため、SSL-VPN装置(リバースプロキシサーバ)を導入しました。
セキュリティを保つ観点から、証明書を使った認証をすることにしました。社員のPCと、SSL-VPN装置に、それぞれ2つの証明書を入れます。
その証明書はなんでしょうか。また、その目的は?






情報セキュリティスペシャリスト_pki

この環境にて、どんなセキュリティを保てばいいでしょうか。
SSL通信をしますから、暗号化通信はされています。冒頭にあるように、証明書を入れますから、認証の観点で考えます。

まず、クライアントの立場で考えましょう。
クライアントは、正規のサーバに接続したいと考えます。偽装されたオンラインバンキングに接続して、IDパスワードを盗まれるという事件があるように、情報漏えいをしないためです。
そのため、サーバのサーバ証明書を確認します。ですから、SSL-VPN装置には、サーバ証明書が必要です。
では、そのサーバ証明書が正しいかを確認する必要があります。
そのためには、CAのルート証明書が必要です。
よって、クライアントPCにはルート証明書が必要です。

次に、サーバの立場で考えましょう。サーバは、不正なPCを接続させたくありません。IDパスワード認証に加え、証明書での認証をするのです。そのとき、クライアントが正規のものかを確認するために、クライアント証明書を見せてもらいます。よって、クライアントにはクライアント証明書を入れます。SSL-VPN装置は、そのクライアントが正しいかをチェックする必要があります。そのために必要なのが、CAのルート証明書です。

【解答】
①サーバ
 サーバ証明書
 CAのルート証明書
②クライアントPC
 クライアント証明書
 CAのルート証明書

11.EV SSL証明書

 以下は、フィッシング対策協議会のサイトですが、右側に東京三菱UFJ銀行のフィッシングサイトの情報があります。
https://www.antiphishing.jp/news/alert/mufj_20150728.html

見ていただくとわかりますが、本物そっくりです。これを偽造と判断するのは難しいでしょう。
でも、このフィッシングサイトのURLは、「http://bk.mufg.jp.●●●●.uno/~」とあります。
つまり、HTTPなのです。本来の三菱東京UFJ銀行のURLは、httpsで始まり、証明書にEV SSL証明書を使っています。ですから、Webサイトの緑のバーを見れば、正規の銀行と分かるのです。
緑だから正規だとは100%言えるわけではありまえんが、この証明書を取得する審査のハードルが高いので、不正な第三者が取得することは難しいのです。
15863853

EV(Extended Validation)証明書でも、緑にならなくなったような気がしますが・・・

 そうなんだ。以前はInternet Explorlerで緑だったのが、GoogleChromeなどでは見た目は変わらない。MSのEdgdeでも同じ。ブラウザを提供している会社が、緑色はあまり効果がないと判断したようだ。(実際、フィッシング対策としても効果がなかったというデータがあったようす)。
15863853

じゃあ、EV証明書を、高いお金を払って買う必要があるのですか?

 その質問には、かなり答えに窮する。きちんとした企業であることをPRしたり、なにか攻撃があった場合も、やることはやっていましたというExcuseに使うくらいだろうかとも思ってしまう。

話が変わってしまうが、DNSにCAA (Certification Authority Authorization)というレコードがある。これは、ドメインに対する証明書を発行するCAを指定するレコードである。これによって、正規の証明書かを判断するのが今のやり方ではないだろうか。
CAAに関しては、以下に記載している。
DNS(1.リソースレコード) - ネットワークスペシャリスト - SE娘の剣 -