平成31年度 春期試験 午後Ⅰ問題対策③ ―問3
はじめに
総務省、国立研究開発法人情報通信研究機構(NICT)及びインターネットプロバイダが連携して、IoT機器の脆弱性調査および注意喚起を行う取り組みであるNOTICEが2019年2月に実施されるなど、近年はIoT機器のセキュリティ対策の重要性が非常に注目されてきています。情報処理安全確保支援士試験でも、IoT機器セキュリティ対策は問題のテーマとして何度か取り上げられています。
今回は、IoT機器のセキュリティ対策に関する問題として、平成31年度 春期試験 午後Ⅰ問題 問3について、解説します。
平成31年度 春期試験 午後Ⅰ問題 問3の解説
平成31年度 春期情報処理安全確保支援士試験 解答例の出題趣旨に、「本問では, 家庭用ゲーム機の開発を題材に, IoT機器と複数のサーバ間での認証連携について設計する能力, 及びIoT機器のセキュリティ対策を検討する能力を問う」と記述されています。
本問題では、IoT機器のセキュリティ対策とともに、本連載の第3回で解説した平成31年度 春期試験 午後Ⅰ問題 問2に引き続き、認証・暗号関連の問題が中心に出題されています。
※以下の解説では、問題文中のページ数を「Pxx」、図や表を「問題文中の図x、表x」と記します。
問題の概要
- V社は、IoT機器を製造・販売している従業員数3000名の会社である。
- 家庭用ゲーム機(ゲーム機V)の発売を予定しており、設計を開発部が担当している。
- 利用者はゲーム機Vとゲームプログラムの利用権を購入し、ゲーム機Vからゲームサーバ上のゲームプログラムを利用する。
- 複数のゲームプログラム開発会社が、それぞれ複数のゲームプログラムを開発し、販売する予定である。
- 開発部が設計したゲーム機V、認証サーバ及びゲームサーバ(三つを併せてゲームシステムV)についてセキュリティレビューを実施した。
- 利用者がゲームを行う際は、P17図2の認証フローで利用者の認証が行われる。
[セキュリティレビューの実施]
- 認証トークンが認証サーバ以外で不正に生成されると、購入していないゲームプログラムを利用されたり、クラウドV上のリソースを不正に利用されたりするおそれがある。
- 現状の認証トークンの設計には二つの問題がある。
- 一つ目の問題は、現在の設計では認証トークンに格納される情報が不足していることであり、情報の不足により、ゲームプログラムA用の認証トークンがゲームプログラムBにおいても認証に成功してしまい、購入していないゲームプログラムも利用できてしまう。
- 一つ目の問題の対策として、設問2(1)で検討する。
- 二つ目の問題は、認証トークンをゲームサーバ管理者が不正に生成できてしまうこと。
- 二つ目の問題の対策として、ゲームプログラムごとに別の共通鍵を利用する設計を考えたが、対策として不十分であった。そこで、認証トークンの検証にMACではなく、ディジタル署名を利用する。
- 不正な機器から認証サーバとゲームサーバへのアクセスを防ぐために、クライアント認証を行う。
- クライアント証明書と鍵Cを不正に使用させないため、ゲーム機VにTPMを搭載し、TPM内に鍵Cを保存する。
[ブートローダ及び専用OSの改ざん対策]
- ブートローダ及び専用OSが改ざんされていると判定されたときは、ゲーム機Vの起動処理を中止するようにした。
- 改ざん対策の処理において、ハッシュ値リストが保護されていないと、改ざんされたファイルが実行されるおそれがあるため、ハッシュリストを保護する方法により対策する。
設問1
MAC(Message Authentication Code)は、メッセ―ジ認証コードとも呼ばれ、送信したいデータ(メッセージ)が改ざんされてないことを検知する技術です。
MACでは送信したいメッセージと共有の鍵を利用してMAC値と呼ばれる認証メッセ―ジを作成し、メッセージとMAC値を一緒に送信します。この共有の鍵の作成方法には、共通鍵を利用したり、一方向性ハッシュ関数を利用したり、いくつかの方法があります。
P18の下線部①より、「ハッシュ関数を共通鍵と組み合わせて使用し, 生成する」方法は、HMAC(Hash-based Message Authentication Code または Keyed-Hashing for Message Authentication)と呼ばれる方法です。
従って、解答は「エ(HMAC)」です。
設問2
[セキュリティレビューの実施] についての設問です。
(1)
P18の下線部②の直前に、「一つ目の問題は, 現在の設計では認証トークンに格納される情報が不足されているということです。情報が不足していることによって, ゲームプログラムA用の認証トークンがゲームプログラムBにおいても認証に成功してしまうので, 攻撃者がゲームプログラムのURLを知ることができれば, 購入していないゲームプログラムも利用できてしまいます」と記述されています。この問題への対策を考える設問です。
認証フローはP17の図2で確認できます。図2より、「5.認証トークン」をゲームサーバのゲームプログラムへ送信することで認証していることがわかります。この認証トークンには、P18の1行目の記述より「認証サーバのFQDN」「利用者ID」「MAC」が格納されています。この認証トークンの場合、ゲームプログラムを識別する情報が含まれていないため、ゲームプログラムのURLがわかれば、未購入の他のゲームプログラムも利用できてしまうことになります。
この問題点の対策として、ゲームサーバのゲームプログラムで認証トークンを認証する際に、許可すべきゲームプログラムを識別する必要があります。P16の図1より、認証サーバの構成から購入情報は「利用者ID, 利用者が購入したゲームプログラムのゲームプログラムIDから成る」、また、P17の表1より、ゲームサーバの概要として「各ゲームプログラムには, 固有のゲームプログラムIDが付与される」と記述があるため、利用を許可するプログラムを識別するためには「ゲームプログラムID」を認証トークンに追加すると良いでしょう。
従って、解答例は「ゲームプログラムID」です。
(2)
P18の下線部③に「認証トークンをゲームサーバ管理者が不正に生成できてしまう」と記述されています。ゲームサーバの仕様として、なぜこのような問題が発生するかを解答する問題です。
P17の表1より、ゲームサーバの概要として「クラウドVに複数のゲームプログラム開発会社がそれぞれゲームサーバを立ち上げ, 各ゲームサーバで一つ又は複数のゲームプログラムを稼働させる」「ゲームプログラム開発会社のゲームサーバ管理者が運用する」と記述されています。また、P18の3行目に「共通鍵は, ゲームシステムV全体で一つの鍵が使用され, ゲームサーバ管理者がゲームプログラムに設定する」と記述されています。
これらより、ゲームサーバは各ゲームプログラム開発会社のゲームサーバ管理者が運用し、認証トークンの生成に必要な共通鍵もゲームサーバ管理者がゲームプログラムに設定していることがわかります。この時の共通鍵が、ゲームシステムV全体で共通のため、ゲームサーバ管理者が不正に認証トークンを生成できてしまうことになります。
従って、解答例は「ゲームサーバに認証サーバと同じ共通鍵を保存する」です。
(3)
P19の下線部④付近より、「ゲームプログラムごとに別の共通鍵を利用するという設計にしたとしても、不正にゲームプログラムが利用できる認証トークンをゲームサーバ管理者が生成できてしまう」という問題について、原因となる認証トークンの仕様と、不正に生成した認証トークンで利用できるゲームプログラムの範囲を述べる問題です。
(3)-1 「原因となる認証トークンの仕様」に関する解説
P18の3行目に「共通鍵は, ゲームシステムV全体で一つの鍵が使用され, ゲームサーバ管理者がゲームプログラムに設定する」という記述があるため、仮にゲームプログラムごとに別の共通鍵を利用するという設計にしても、ゲームサーバ管理者はゲームプログラムごとの共通鍵を知り得ることができます。
また、P18の1、5行目より、検証には認証トークンに格納されるMACを用いており、このMACがゲームサーバ管理者の知り得る共通鍵から生成されることが、P19の下線部④の問題の原因となりえます。
従って、下線部④の原因となる認証トークンの仕様に関する解答例は、「MACの生成に共通鍵を使用する」です。
(3)-2 「不正に生成した認証トークンで利用できるゲームプログラムの範囲」に関する解説
続いて、不正に生成した認証トークンで利用できるゲームプログラムの範囲について考えてみましょう。
設問2の(2)でも確認しましたが、P17の表1に、ゲームサーバの概要として「クラウドVに複数のゲームプログラム開発会社がそれぞれゲームサーバを立ち上げ, 各ゲームサーバで一つ又は複数のゲームプログラムを稼働させる」「ゲームプログラム開発会社のゲームサーバ管理者が運用する」と記述されています。
この記述より、あるゲームプログラム開発会社の全ゲームプログラムは、同一のゲームサーバで稼働しているため、不正に生成した認証トークンを悪用した場合、ゲームサーバ管理者自身が管理するゲームサーバ上で動作する全ゲームプログラムを不正に利用することができてしまいます。
従って、不正に生成した認証トークンで利用できるゲームプログラムの範囲に関する解答例は、「自身が管理するゲームサーバ上で動作する全ゲームプログラム」です。
(4)
P19の6行目以降より、ここまでの不正行為はMACでは対策として不十分ですが、ディジタル署名を利用することで対策になることがわかります。
MACはメッセージの改ざん検知として活用できますが、なりすましの対策はできません。一方でディジタル署名であれば、改ざん検知となりすましの両方に対策することができます。
通常、ディジタル署名では、メッセージの送信者側で公開鍵と秘密鍵のペアを作成し、公開鍵を受信者側に配布しておきます。メッセージの送信者側では、秘密鍵を使ってメッセージに署名を付加し、メッセージの受信者側で事前に配布された送信者側の公開鍵を使って署名を検証します。
この流れと、本文中の【 a 】~ 【 c 】がどのように対応するかを考えてみます。【 a 】はメッセージの送信者側です。送信するメッセージはゲームプログラムで検証したい認証トークンであるため、P17の図2より、認証トークンを送信するのは認証サーバです。また、上述のディジタル署名の仕組みより、【 b 】は署名の検証を行うため「公開鍵」、【 c 】は署名を付加するため「秘密鍵」が該当します。
従って、解答は【 a 】:オ(認証サーバ)、【 b 】:エ(公開鍵)、【 c 】:カ(秘密鍵)です。
(5)
P19の下線部⑤が実現してしまう手段について解答する問題です。
P17表1のゲーム機Vの概要に「PCに接続しても外部ストレージとして認識されず, 内部のデータを直接読み出すことはできない」と記述されており、ゲーム機VをPCに接続しても、内部データを読み出すことはできないと考えられます。
しかし、一般的なSSDであれば、SSDをゲーム機Vから取り外してPCなどに接続することで内部データを読み出すことができると考えられます。P19の下線部⑤の直前に「鍵Cを含めた全てのデータは, 搭載するSSD(Solid State Drive)に格納します。搭載するSSDは, 広く流通しているものです」と記述されているため、上述の手段によりゲーム機V内のクライアント証明書と鍵CをPCなどから不正に使用できると考えられます。
従って、解答例は「SSDを取り出し、PCなどにつなげる」です。
(6)
TPM(Trusted Platform Module)は、TCG(Trusted Computing Group)で定義されたセキュリティの仕様に準拠したセキュリティ機能やセキュリティチップです。TPMは内部でデータの暗号化・復号や、ディジタル署名の署名・検証、公開鍵と秘密鍵の鍵ペアの作成などの機能を有しています。
TPMはP19の下線部⑥のように「内部構造や内部データを解析されにくい性質」を備えており、このような性質のことを「耐タンパ性」と呼びます。
従って、解答例は「耐タンパ性」です。TPMはノートPCなどで広く活用されてきました。近年では、自動車やIoT機器などでも活用が進んでいます。
設問3
P20の[ブートローダ及び専用OSの改ざん対策]では、ブートローダ及び専用OSの改ざん対策として、ハッシュ値のリストを活用することが記述されていますが、ハッシュ値リストが保護されていないと改ざんされたファイルが実行される恐れがあるため、どのように保護するべきかを解答する問題です。
設問(2)の(6)の解説の通り、TPMを活用することで、外部からの不正操作から内部のデータを保護することを期待できます。
従って、解答例は「ハッシュ値リストをTPMに保存する」です。
おわりに
本問題は、IoT機器を題材とした、認証に関する問題が中心でした。暗号技術と認証技術に関してはセキュリティ技術として欠かせないテーマであり、情報処理安全確保支援士試験でも毎回ほぼ確実に出題される主要技術です。基本的な内容を押さえておくことで、解答を導けることが多いため、各技術について、他者に説明できるレベルで習得しておくことが望ましいです。
主要な技術に関しては、本連載の第1回で各学習のポイントを紹介しています。本問題のテーマはPKI関連情報などを確認しておくと良いでしょう。
また、IoT機器に関するテーマは今後も注目が高まることが推測されます。基本的なセキュリティの考え方は従来の機器と同じですが、耐タンパ性が注目されるなど、IoT機器として特に意識すべき点もあるため、IoT機器セキュリティも確認しておくと良いでしょう。
主なIoT機器のセキュリティガイドラインを以下にまとめました。
本連載では、今回まで午後Ⅰ問題について解説してきました。午後Ⅰ試験は3つの設問から2つを選択する必要があり、いかに得意な領域を回答できるかも重要と言えるでしょう。
次回は、平成31年度 春期試験 午後Ⅱ問題の問1を解説します。