情報処理安全確保支援士試験 過去問 2019年(令和元年) 春期 午後Ⅰ 問3
IoT機器の開発
V社は、IoT機器を製造・販売している従業員数3,000名の会社である。家庭用ゲーム機(以下、ゲーム機Vという)の発売を予定しており、設計を開発部が担当している。設計リーダは、開発部のHさんである。利用者はゲーム機Vとゲームプログラムの利用権を購入し、ゲーム機Vからゲームサーバ上のゲームプログラムを利用する。複数のゲームプログラム開発会社が、それぞれ複数のゲームプログラムを開発し、販売する予定である。開発部が設計したゲーム機V、認証サーバ及びゲームサーバ(以下、三つを併せてゲームシステムVという)の構成を図1に、構成要素とその概要を表1に示す。
| 構成要素 | 概要 |
|---|---|
| ゲーム機V |
|
| ゲームサーバ |
|
| 認証サーバ |
|
ゲームを行う際は図2の認証フローで利用者の認証が行われる。
認証トークンには、認証サーバのFQDN、利用者ID及びMAC(Message Authentication Code)が格納される。①MACは、認証サーバのFQDNと利用者IDに対して、ハッシュ関数と共通鍵と組み合わせて使用し、生成する。共通鍵は、ゲームシステムV全体で一つの鍵が使用され、ゲームサーバ管理者がゲームプログラムに設定する。図2の5.では、ゲームプログラムによる認証トークンのMACの検証が成功し、かつ、FQDNが確かに認証サーバのものであることが確認された場合だけ、認証が成功し、図2の6.でゲームプログラムからゲーム画面が送信される。
セキュリティレビューの実施
認証トークンが認証サーバ以外で不正に生成されると、購入していないゲームプログラムを利用されたり、クラウドV上のリソースを不正に利用されたりするおそれがある。そこで仮に認証サーバ以外で認証トークンを生成されたとしてもゲームプログラムでは検証に失敗することが求められる。また、利用者がコントローラの不正な操作情報をゲーム機Vから送信することによって、ゲームを有利に進めることといったことも防ぐ必要がある。
V社では、システム設計にセキュリティ上の問題がないか、製品の設計工程でセキュリティレビュー(以下、レビューという)を実施することになっており、ゲームシステムVはセキュリティ部のNさんがレビューを担当することになった。次は、NさんがゲームシステムVのレビューを行った時の、Hさんとの会話である。
Nさん: 現状の認証トークンの設計には二つの問題があります。一つ目の問題は、現在の設計では認証トークンに格納される情報が不足しているということです。情報が不足していることによって、ゲームプログラムA用の認証トークンがゲームプログラムBにおいても認証に成功してしまうので、攻撃者がゲームプログラムのURLを知ることができれば、購入していないゲームプログラムも利用できてしまいます。②この問題への対策を検討してください。
Hさん: 分かりました。
Nさん: 二つ目の問題は、③認証トークンをゲームサーバ管理者が不正に生成できてしまうことです。
Hさん: その問題への対策としては、ゲームプログラムごとに別の共通鍵を利用するという設計はどうでしょうか。
Nさん: それでは対策として不十分です。④その設計したとしても、不正にゲームプログラムが利用できる認証トークンをゲームサーバ管理者が生成できてしまいます。
Hさん: MACではなく、デジタル署名を利用すれば対策になりますか。
Nさん: はい。そうすればゲームサーバ管理者が認証トークンを不正に生成したとしても、ゲームプログラムで検証が失敗します。
Hさん: では、aで公開鍵と秘密鍵の鍵ペアを生成し、bをゲームサーバに配布しておきます。aがcを使って認証トークンに署名を付加し、ゲームプログラムではbを使って署名の検証を行います。
Nさん: それで問題ありません。次に、不正な機器から認証サーバとゲームサーバへのアクセスをどのようにして防ぐか教えてください。
Hさん: クライアント認証を使います。
Nさん: ゲーム機V内のクライアント証明書とそれに対応する秘密鍵(以下、鍵Cという)が攻撃者のPCから不正に使用できると、そのPCから各サーバに接続されてしまいます。さらに、コントローラの操作情報を改ざんして送信することによって、ゲームを有利に進めることも考えられます。クライアント証明書と鍵Cはゲーム機Vのどこに格納しますか。
Hさん: 鍵Cを含めた全てのデータは、搭載するSSD(Solid State Drive)に格納します。搭載するSSDは、広く流通しているものです。
Nさん: それでは問題がありますね。現状の設計では、専用OSに脆弱性が存在しなかったとしても、⑤攻撃者がゲーム機Vを購入すれば、専用OSを改ざんせずに、ゲーム機V内のクライアント証明書と鍵CをPCなどから不正に使用できます。
Hさん: どのように対策したらいいでしょうか。
Nさん: TPM(Trusted Platform Module)をゲーム機Vに搭載し、TPM内に鍵Cを保存するという方法があります。TPMは、⑥内部構造や内部データを解析されにくい性質を備えているので、TPM内に鍵Cを保存すれば不正に読み取ることは困難になります。
また、ブートローダ又は専用OSの改ざんはゲーム機Vの不正利用につながります。例えば、コントローラの不正な操作情報を送信されるおそれがあります。そのため、ブートローダ及び専用OSの改ざん対策についても検討してください。
Hさん: 分かりました。設計を見直します。
ブートローダ及び専用OSの改ざん対策
2回目のレビューでは、ブートローダ及び専用OSの改ざん対策について確認した。次は、その時のHさんとNさんの会話である。
Hさん: ブートローダ及び専用OSの改ざんに備えた対策として、ブートローダ又は専用OSが改ざんされていると判定されたときは、ゲーム機Vの起動処理を中止するようにしました。ブートローダ及び専用OSの改ざん対策の処理の流れを図3に示します。
- ブートローダ及び専用OS中の起動時に実行されるファイルのハッシュ値をあらかじめ計算し、ハッシュ値リスト(以下、ハッシュ値リストという)を作成しておく。ゲーム機Vの専用OSの導入時、ハッシュ値リストを併せて保存する。起動時に専用OS中のファイルが実行される順番は、あらかじめ決められている。
- ゲーム機Vの起動時には、CRTM(Core Root of Trust for Measurement)と呼ばれる、改ざんが困難な起動コードから起動処理を開始する。
- CRTMは、ブートローダのハッシュ値を計算し、そのハッシュ値がハッシュ値リスト中に存在することを確認できたら実行する。
- ブートローダは、専用OSの最初に実行されるファイルのハッシュ値を計算し、ハッシュ値リスト中に存在することを確認し、実行する。同様に、後続のファイルについて計算、確認、実行を繰り返し、専用OSが起動する。
- ハッシュ値がハッシュ値リスト中に存在しないファイルは改ざんされていると判定され、起動処理が中止される。
Nさん: 処理の流れは分かりました。ハッシュ値リストが保護されていないと、改ざんされたファイルが実行されるおそれがありますが、どのように対策していますか。
Hさん: ⑦ハッシュ値リストを保護するための方法を説明した。
Nさん: それであれば、改ざんされたファイルが実行される危険性は低いですね。
その後、クラウドVの準備が整い、ゲーム機Vが発売された。