勉強 IT IPA

【解説】平成28年度 春期 情報セキュリティスペシャリスト試験 午後Ⅰ 問3

2017年8月21日

問題文はIPAのサイトから取得してください。

問題概要

この問題はスマートフォンアプリケーションの試験を題材に、サーバー証明書の検証不備に焦点を当て、検証機能を確認するための試験方法及び試験環境、並びにサーバー証明書の検証不備を用いた中間者攻撃の基礎的な知識及び攻撃環境について出題されました。
セキュリティ問題でよく出てくる証明書に関する問題だった為、全体として正答率が高かったようです。
最後の問題だけ無線LANの知識が必要な問題でした。無線LANの設定をしたことがある人ならば簡単ですが、やったことのない人だと何言ってるのかわからない問題だったと思います。

解説

設問1

[Sアプリでのサーバ証明書の検証試験]について,(1)~(4)に答えよ。

(1) 表1中及び表2中の【a】に入れる適切な字句を,図1中又は図3中の構成要素から選び,答えよ。

(2) 表1中の【b】に入れる適切な字句を,図1中又は図3中の構成要素から選び,答えよ。

【a】と【b】は一緒に考えた方がいいため、まとめました。
表1はサーバー証明書の検証試験環境で用いた場合の各機器に対する設定方法を表しています。
まず、DNSサーバはホスト名を元に、ホストのIPアドレスを教えてくれるものになります。例えば「kaede.jp」をDNSサーバに問い合わせると「133.130.113.153」と返してくれます。
問題では、スマートフォンアプリであるSアプリの証明書検証であり、図2の Sアプリの機能概要(抜粋)に「Sアプリ内に,SサーバのFQDNが組み込まれている。」と書かれている。
その後に試験用サーバ用にFQDNを書き換えるという記述がないので、試験の際もそのまま使われる。
通常だと、SアプリにはSサーバのFQDNが組み込まれているため、通常のDNSだとSサーバのIPアドレスを返し、Sサーバと接続されるため検証ができません。
その為、試験用DNSに名前解決を行わさせ、SサーバのFQDNは試験用WebサーバのIPアドレスを返すように設定が必要になります。
なので、答えは【a】Sサーバ 【b】試験用Webサーバ になります。
【a】については表2についても穴埋めとしてありますが、サブジェクトのコモンネームがSサーバと異なることが試験項目となり、内容とあっています。
答:【a】Sサーバ
  【d】試験用Webサーバ

必要知識
  • DNSサーバの基礎知識
  • FQDN(理解できる程度)

(3) 表2中の【c】に入れる適切な字句を,15字以内で答えよ。

【c】は表2の項番2に記載されています。

項番試験項目試験方法期待される結果
2有効期間内でないことの検出試験用Webサーバに次の値のサーバ証明書を登録する。 サブジェクトのコモンネーム:Sサイト用サーバ証明書と同一の値 有効期間の開始:Sサイト用サーバ証明書と同一の値 有効期間の終了:【c】 スマートフォンにプライベート認証局のルート証明書を登録する。【d】

サーバー証明書が有効期間内ではないようにするにはどのような条件かということなります。
有効期間外でない条件は下記2通りです。

  1. 試験実施日時<有効期間の開始<有効期間の終了
  2. 有効期間の開始<有効期間の終了<試験実施日時

有効期間の開始はSサイト用サーバ証明書と同一により固定されているため、有効期間の終了日時以降に検証を実施すれば検証条件は満たせます。
(有効期間の開始以前に検証を実施する場合だと有効期間の開始に書かないといけなくなるため)
よって、有効期間の終了は試験実施日時より前の日時になります。
答:試験の実施よりも前の日時
「試験の実施よりも前の日付」でも正解になるんじゃないかなと思います。
でも、証明書は1秒でも過ぎると無効化になるので日時で答えたほうがいいと思います。(日付だと日単位になるので)

必要知識
  • サーバ証明書の有効期間

(4) 表2の試験で,Sアプリが試験項目通りに動作している場合に,どのような結果となるか。【d】に入れる適切な結果を,本文中又は図表中の字句を用いて,30字以内で具体的に述べよ。

表2で「期待される結果」を見るとどれも【d】と記載されています。どの試験でも同じ結果になるということですね。
また、表2の題名を見ると「表2 不正なサーバ証明書の検出についての試験項目」と記載されているので、不正なサーバ証明書と判断した場合はどうなるかを本文から探します。
すると、図2の3・4項目目にて

・スマートフォンに対応している商用認証局から,Sサーバに対して発行されたサーバ証明書(以下,Sサイト用サーバ証明書という)を,Sサーバの認証に使用する。 ・Sサーバと通信ができなかった場合は通信エラー画面を表示し,Sサーバを検証できなかった場合はサーバ認証エラー画面を表示する

より、エラー時の処理が書かれています。この部分を抜粋すればOKです。
「Sサーバの認証に使用する」ってわかりにくい表現だと思いました。証明書検証の結果不正だと判断したらエラーになる為、認証と表現してるのかな。
答:Sアプリがサーバ認証エラー画面を表示する。

必要知識
  • サーバ証明書

設問2

[Sアプリでのサーバ証明書の検証不備による影響の検討]について,(1),(2)に答えよ。

(1) 表4中の【e】~【g】に入れるサーバ証明書を,それぞれ表3中から全て選び,証明書番号で答えよ。

表4のSアプリのサーバ証明書検証にて不備がある状態で、表3によるサーバ証明書を攻撃者が準備し攻撃sれた場合に成功するかどうかの問題になります。
表4の項番を上から順番に表3と突き合わせてます。

項番1(【e】)

表4 中間攻撃者が成功するサーバ証明書(項番1の場合)

項番サーバ証明書の検証状況中間者攻撃が成功するサーバ証明書
発行者の検証不備サブジェクトコモンネームの検証不備
1ありあり【e】
2ありなし【f】
3なしあり【g】

表3 攻撃者が準備するサーバ証明書(結果付き)

証明書番号発行者サブジェクトのコモンネーム結果
1スマートフォンに対応している商用認証局攻撃者が所有しているドメインを使用したFQDN発行者の検証:検証をしない為 正当な証明書とみなされる。 サブジェクトコモンネームの検証:検証しないため正当な証明書とみなされる。
2攻撃者が準備するプライベート認証局発行者の検証:検証をしない為 正当な証明書とみなされる。 サブジェクトコモンネームの検証:検証しないため正当な証明書とみなされる。
3SサーバのFQDN発行者の検証:検証をしない為 正当な証明書とみなされる。 サブジェクトコモンネームの検証:検証しないため正当な証明書とみなされる。
4上記二つ以外のFQDN発行者の検証:検証をしない為 正当な証明書とみなされる。 サブジェクトコモンネームの検証:検証しないため正当な証明書とみなされる。

項番1については発行者・サブジェクトコモンネームどちらとも検証しない為、発行者・サブジェクトコモンネームがどんな値でも証明書は正当な証明書とみなされ、攻撃が成功します。
その為、【e】に該当する証明書番号は1,2,3,4が答えになります。

項番2(【f】)

表4 中間攻撃者が成功するサーバ証明書(項番1の場合)

項番サーバ証明書の検証状況中間者攻撃が成功するサーバ証明書
発行者の検証不備サブジェクトコモンネームの検証不備
1ありあり【e】
2ありなし【f】
3なしあり【g】

表3 攻撃者が準備するサーバ証明書(結果付き)

証明書番号発行者サブジェクトのコモンネーム結果
1スマートフォンに対応している商用認証局攻撃者が所有しているドメインを使用したFQDN発行者の検証:検証をしない為 正当な証明書とみなされる。 サブジェクトコモンネームの検証:SサーバのFQDNではない為不正な証明書とみなされる。
2攻撃者が準備するプライベート認証局発行者の検証:検証をしない為 正当な証明書とみなされる。 サブジェクトコモンネームの検証:SサーバのFQDNではない為不正な証明書とみなされる。
3SサーバのFQDN発行者の検証:検証をしない為 正当な証明書とみなされる。 サブジェクトコモンネームの検証:SサーバのFQDNである為成功する。
4上記二つ以外のFQDN発行者の検証:検証をしない為 正当な証明書とみなされる。 サブジェクトコモンネームの検証:SサーバのFQDNではない為不正な証明書とみなされる。

項番2については発行者の検証に不備があった場合になります。
発行者の検証に不備がある為、検証を行っても正当な証明書とみなされます。
一方、サブジェクトのコモンネームは正常に検証ができる為、SサーバのFQDNのみ正当な証明書とみなされます。
攻撃者が成功するには発行者検証・サブジェクトのコモンネーム検証どちらとも認証成功する必要がある為、【f】に該当する証明書番号は3のみなります。

項番3(【g】)

表4 中間攻撃者が成功するサーバ証明書(項番1の場合)

項番サーバ証明書の検証状況中間者攻撃が成功するサーバ証明書
発行者の検証不備サブジェクトコモンネームの検証不備
1ありあり【e】
2ありなし【f】
3なしあり【g】

表3 攻撃者が準備するサーバ証明書(結果付き)

証明書番号発行者サブジェクトのコモンネーム結果
1スマートフォンに対応している商用認証局攻撃者が所有しているドメインを使用したFQDN発行者の検証:スマートフォンに対応している商用認証局のため正当な証明書とみなされる。 サブジェクトコモンネームの検証:検証しないため正当な証明書とみなされる。
2攻撃者が準備するプライベート認証局発行者の検証:プライベート認証局のため不正な証明書とみなされる。 サブジェクトコモンネームの検証:検証しないため正当な証明書とみなされる。
3SサーバのFQDN発行者の検証:プライベート認証局のため不正な証明書とみなされる。 サブジェクトコモンネームの検証:検証しないため正当な証明書とみなされる。
4上記二つ以外のFQDN発行者の検証:プライベート認証局のため不正な証明書とみなされる。 サブジェクトコモンネームの検証:検証しないため正当な証明書とみなされる。

項番3についてはサブジェクトのコモンネームの検証に不備があった場合になります。
サブジェクトのコモンネームの検証に不備がある為、検証を行っても正当な証明書とみなされます。
一方、発行者は正常に検証ができる為、スマートフォンに対応している商用認証局のみ正当な証明書とみなされます。
攻撃者が成功するには発行者検証・サブジェクトのコモンネーム検証どちらとも認証成功する必要がある為、【f】に該当する証明書番号は1のみなります。
答:【e】1,2,3,4
  【f】3
  【g】1

必要知識
  • サーバ証明書

(2) 本文中の下線①について,攻撃者が,W-APの設定をどのように細工すると,Sアプリの利用者のうち,公衆無線LANの利用者のスマートフォンを自動的にW-APに接続させることができてしまうか。W-APの設定上の細工を45文字以内で具体的に述べよ。

設問1及び設問2の(1)については証明書についての問題だったのですが、この問いは無線LANの特性についた問題になります。
下線部①は

A氏は,サーバ証明書の検証不備がある場合に,①Sアプリの利用者が,図4中のW-APに接続すると,中間交易を受けることを説明した。

「図4 中間攻撃者に用いられる環境の例」より攻撃者はW-AP(無線LANアクセスポイント)を用意しており、Sアプリを使っているユーザにW-APに繋げさせようとしています。
ではどうやってW-APに接続させるか?
無線LANに接続するには下記項目が必要です。

  • SSID
  • 暗号化方式(WEPとかWPA2とか)
  • 暗号化方式に設定したパスワード(事前共有鍵)

SSIDは無線LANのアクセスポイントの名前です。駅とかでスマートフォンの無線LAN一覧を見るとdocomo0001とか0001softbankとかau_Wi-Fiとかでてくると思います。
これがSSIDです。無線LANはこのSSIDで接続するかどうか判断を行います。
次に暗号化方式ですが、Open、WEP、WPA、WPA2がありますが無線LAN接続するために使う暗号化だと思ってください。
今ではWPA2(AESベース)が主流です。一時WEPが流行ったけどWEP(RC4ベース)は暗号化している意味ないです。
暗号化方式設定後には共通鍵暗号方式の場合は必ずパスワードが必要です。なければ暗号化の意味がないので。
上記三つの条件が揃えば違う無線LANアクセスポイントでも無線接続が可能になります。じゃないとドコモ・ソフトバンク・AUの公衆無線LANに自動接続できないですよね。
なので
答:SSID,暗号化方式と事前共有鍵に,公衆無線LANで使用されているものを設定する。
になります。
事前共有鍵でもPSKでもパスワードでも正解になると思います。
ちなみに、複数無線LANを使用し、同じSSID、暗号化方式、パスワードを用いて自動的に電波が強い無線LANに自動的に接続を切り替える方法(ローミングという)もできます。
⇒その際ローミング機能に対応した無線LANアクセスポイントが必要ですけど。

総評

最後の問題を除いて、概ねセキュリティとして簡単な部類ではなかったのではと思います。Webサーバを扱うものとしてはサーバ証明書とかよくやりますしね。
実際に講評でも正答率は高かったと書いています。
無線LANについてはいきなり言われてもパッと思いつかなかったりしますね。実際に問題解いたときに、最初何いってるのかわからない状態でしたし。
事前共有鍵という単語は答え見るまで知りませんでした。
共通鍵だったり秘密鍵だったり共通鍵だったり共有鍵だったり似たような単語が多くて間違えそうになります。
今後も無線LANを絡んだ問題は出てくるかもしれませんね。どちらかといえばネットワークスペシャリスト側の問題になりそうですけど。

-勉強, IT, IPA
-, , ,