【SC*過去問解説】平成31年度 春期 午後Ⅰ 問3

sc-h31-4-pm1-2 IT

こんにちは、mokakoです。
今回は情報処理安全確保支援士試験の平成31年度 春期 午後Ⅰ 問3を解説していきたいと思います!

※この解説ブログでは、あくまでも私自身が解いた備忘録となりますので、間違いなどを発見された場合はどうぞ教えていただけますと幸いです。

下記より問題文と解答を引用しております。

問題
https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2019h31_1/2019h31h_sc_pm1_qs.pdf
解答
https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2019h31_1/2019h31h_sc_pm1_ans.pdf

出典:平成31年度 春期 情報処理安全確保支援士試験 午後Ⅰ 問3


では早速解説してまいります!

設問1




解説
下線①は「①MACは、認証サーバのFQDNと利用者IDに対して、ハッシュ関数を共通鍵と組み合わせて使用し、生成する。」です。
MACとは、メッセージ認証コードと言われるもので、メッセージ(ここでは認証サーバのFQDN、利用者ID)が改ざんされていないことを確かめるために用いられるコードです。通常、MACは共通鍵を用いて生成されますが下線①から、今回はハッシュ関数と共通鍵を組み合わせてとあるので、HMAC(Hash-based MAC)が正解となります。

他の選択肢は、以下になります。
ア CBC-MAC(Cipher Block Chaining MAC): ブロック暗号を用いて生成
イ CMAC(Cipher-based MAC):ブロック暗号を用いて生成、CBC-MACより安全
ウ CSR:(Certificate Signing Request):認証局へのデジタル証明書要求
オ MD5(Message Digest 5):128ビットの値を生成するハッシュ関数
カ RC4(Rivest’s Cipher 4):共通鍵暗号を生成する暗号方式

設問2


(1)ゲームプログラムID

解説
前後の文脈を見ると、「②この問題への対策を検討してください。」です。この問題とは、「情報が不足していることによって、ゲームプログラムA用の認証トークンがゲームプログラムBにおいても認証に成功してしまうので、攻撃者がゲームプログラムBのURLを知ることができれば、購入していないゲームプログラムも利用できてしまう。」です。

現在の設計では、ゲームプログラムA用の認証トークンとゲームプログラムB用の認証トークンが同じです。ゲームプログラムAとBを識別する情報が含まれていれば、二つのトークンを差別化できます。ゲームプログラムを識別するものとは何があるでしょうか。

表1のゲームサーバの概要を見ると、「各ゲームプログラムには、固有のゲームプログラムIDが付与される。」とあります。したがって、解答はゲームプログラムIDとなります。

(2)ゲームサーバに認証サーバと同じ共通鍵を保存する。

解説
下線③は、「③認証トークンをゲームサーバ管理者が不正に生成できてしまうことです。」です。この原因を考えます。
認証トークンの生成方法について、もう一度p18の1行目からの文章を振り返ってみると、
認証トークン:認証サーバのFQDN、利用者ID、MAC(ハッシュ関数と共通鍵とを組み合わせて生成)と整理できます。

ここでMACは共通鍵を知らない限り生成できませんが、p18 3行目に「共通鍵は、ゲームシステムV全体で一つの鍵が使用され、ゲームサーバ管理者がゲームプログラムに設定する。」とあります。共通鍵はゲームシステムV全体で一つということなので、認証サーバと同じゲームサーバにも格納されていることになります。そのため、ゲームサーバ管理者は、MACを生成し認証トークンも生成できてします。

(3)仕様:MACの生成に共通鍵を使用する。 範囲:自身が管理するゲームサーバ上で動作する全ゲームプログラム

解説
下線④は、「④その設計にしたとしても、不正にゲームプログラムが利用できる認証トークンをゲームサーバ管理者が生成できてしまいます。」です。

(2)の問題で、ゲームシステムV全体で一つの共通鍵を使用すると、ゲームサーバ管理者は認証サーバの共通鍵も持っていると言うことになり、不正に認証トークンを生成し、他のゲームプログラムなどにもアクセスできてしまうことが分かりました。

今回の設問では、Hさんがその対策としてゲームプログラムごとに別の共通鍵を利用するという設計はどうかと言っていますが、それでもNさんは、とある原因からまだある範囲では不正に認証トークンが生成・利用できてしまうと言っています。

ゲームプログラムごとに別の共通鍵を利用すると、先ほどのように違うゲームプログラムへのアクセスはできなくなります。しかし、依然として、認証サーバとは共通鍵を用いてMACを生成し認証しているので、不正に認証トークンが作成できてしまいます。それが通用するゲームプログラムの範囲が先ほどより狭まるだけなのです。つまり仕様としては共通鍵を用いる仕様自体が、不正トークンの生成につながります。

次に範囲ですが、ーバ管理者は自分のサーバのゲームプログラムの共通鍵も管理することになるので、ゲームサーバ上の全てのゲームプログラムに対し、不正に認証トークンを発行できてしまいます。したがって、自身が管理するゲームサーバ上で動作する全ゲームプログラムが解答となります。

(4)a. オ b. エ c. カ

解説
該当の文は、「【a】で公開鍵と秘密鍵の鍵ペアを生成し、【b】をゲームサーバに配布しておきます。【a】が【c】を使って認証トークンに署名を付加し、ゲームプログラムでは【b】を使って署名の検証を行います。」です。

認証にディジタル署名を用いる際の仕組みになります。まず「【a】で公開鍵と秘密鍵の鍵ペアを生成」とあります。これまでの流れから、鍵ペアを生成するのは、ゲームサーバか認証サーバになりますが、そのあとに「【b】をゲームサーバに配布」とあるので、【a】には認証サーバが入ることが分かります。また、配布するのは公開鍵なので、【b】になります。最後に、「認証サーバが【c】を使って認証トークンに署名を付加し、」とあるので、【c】は秘密鍵であると推測できます。

(5)SSDを取り出し、PCなどにつなげる。

解説  
前後の文脈は、「現状の設計では、専用OSに脆弱性が存在しなかったとしても、⑤攻撃者がゲーム機Vを購入すれば、専用OSを改ざんせずに、ゲーム機V内のクライアント証明書と鍵CをPCなどから不正に使用できます。」です。

その後の対策の記述について注目します。「TPMをゲーム機Vに搭載し、TPM内に鍵Cを保存する方法」とあります。次の問題のネタバレになりますが、TPMとは耐タンパ性と呼ばれる、内部構造や内部データを解析されにくい性質があります。そのため、TPM内に鍵Cを保存することで不正に読み取ることが困難になります。

上記の方法が対策になると言うことは、逆にこのままだと鍵Cを不正に読み取れるということです。今回Hさんはゲーム機Vに搭載するSSDに格納すると言っています。SSDには耐タンパ性はないので、SSDを取り出すことができれば、中身を解析できてしまうでしょう。そのため、解答は、「SSDを取り出し、PCなどにつなげる」となります。

(6)耐タンパ性

解説
下線⑥は、「内部構造や内部データを解析されにくい性質」です。
耐タンパ性となります。これは非常によく問われるので、覚えておきましょう。

設問3


ハッシュ値リストをTPMに保存する。

解説
下線⑦は、「⑦ハッシュ値リストを保護するための方法」です。
図3の1.を見ると、「ブートローダ及び専用OS中の起動時に実行されるファイルのハッシュ値をあらかじめ計算し、ハッシュ値のリストを作成しておく。ゲーム機Vへの専用OSの導入時、ハッシュ値リストを併せて保存する。」とあります。

ハッシュ値リストはゲーム機Vへ保存されます。ゲーム機Vのどこに保存すれば、保護できるのでしょうか。ここで設問2の(5)(6)を思い出します。鍵Cを安全に格納するために耐タンパ性を持ったTPMに保存しました。ハッシュ値リストも同じようにTPMに保存することで保護することができるのです。したがって解答のようになります。

コメント