やさしいネットワークとセキュリティ

情報処理安全確保支援士、ネットワークスペシャリスト、技術士として、資格取得を目指す方に有益な情報を発信します。

認証トークンへの許可リソース定義・ディジタル署名・耐タンパ性【情報処理安全確保支援士試験 平成31年度 春期 午後1 問3 設問2】

 情報処理技術者試験、情報処理安全確保支援士試験の午後問題を通じて、情報セキュリティの知識を体系的に蓄積していきましょう。

 キーワードに加え、設計やインシデント対応能力をシミュレーションできる良い学びの場ですので、試験合格はもちろん、情報処理安全確保支援士となった後も能力向上のために学習できるいい機会です。

 今回は、「認証トークンへの許可リソース定義・ディジタル署名・耐タンパ性」を取り上げた「情報処理安全確保支援士試験 平成31年度 春期 午後1問3設問2」です。

 問題文中、設問に該当する部分ですぐに解答を説明しています。

 ストーリーとして何度も読みこなすと、自然に記憶に定着してくると思います。

情報処理安全確保支援士試験 平成31年度 春期 午後1 問3 設問2

問3 IoT機器の開発に関する次の記述を読んで、設問1〜3に答えよ。

(略)

f:id:aolaniengineer:20200512043657p:plain

f:id:aolaniengineer:20200512043712p:plain

(略)

f:id:aolaniengineer:20200512043808p:plain

 認証トークンには、認証サーバの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さん:分かりました。

②について、対策として認証トークンに追加する必要がある情報を、15字以内で答えよ。:ゲームプログラムID

 問題文の、「現在の設計では認証トークンに格納される情報が不足しているということです。情報が不足していることによって、ゲームプログラムA用の認証トークンがゲームプログラムBにおいても認証に成功してしまうので、攻撃者がゲームプログラムのURLを知ることができれば、購入していないゲームプログラムを利用できてしまいます。」から推測できることとして、現状の認証トークンにはそれぞれのゲームプログラムを識別するものがないのではないかということが考えられます。

 そこで、ゲームプログラムを識別するものを問題文で探すと、以下の記載があります。

  • (図1)ゲームサーバのゲームプログラムの「ゲームプログラムID」
  • (図1)認証サーバの購入情報に「利用者ID、利用者が購入したゲームプログラムのゲームプログラムIDから成る」
  • (表1)ゲームサーバ「各ゲームプログラムには、固有のゲームプログラムIDが付与される」
  • 「認証トークンには、認証サーバのFQDN、利用者ID及びMAC(Message Authentication Code)が格納される。」

 これらの記述内容から、認証トークンに追加する情報は、ゲームプログラムを識別できるゲームプログラムIDであることが分かります。  

Nさん:二つ目の問題は、③認証トークンをゲームサーバ管理者が不正に生成できてしまうことです。

③について、その原因となるゲームサーバの仕様を、30字以内で述べよ。:ゲームサーバに認証サーバと同じ共通鍵を保存する。

 認証トークンは、問題文の「認証トークンには、認証サーバのFQDN、利用者ID及びMAC(Message Authentication Code)が格納される。MACは、認証サーバのFQDNと利用者IDに対して、ハッシュ関数を共通鍵と組み合わせて使用し、生成する。」とあることから、共通鍵を入手することで不正に生成できてしまうことが分かります。

 そこで、認証トークンとゲームサーバ管理者について問題文を探すと、以下の記載があります。

  • (表1)ゲームサーバ:ゲームプログラム開発会社のゲームサーバ管理者が運用する。 
  • 「共通鍵は、ゲームシステムV全体で一つの鍵が使用され、ゲームサーバ管理者がゲームプログラムに設定する。」

 この記述内容から、認証トークン生成用の共通鍵が認証サーバとも共通であり、ゲームサーバ管理者によってゲームサーバに設定されることが分かります。

Hさん:その問題への対策としては、ゲームプログラムごとに別の共通鍵を利用するという設計ではどうでしょうか。

Nさん:それでは対策として不十分です。④その設計にしたとしても、不正にゲームプログラムが利用できる認証トークンをゲームサーバ管理者が生成できてしまいます

④について、その原因となる認証トークンの仕様を、20字以内で述べよ。また、不正に生成した認証トークンで利用できるゲームプログラムの範囲を、35字以内で述べよ。:MACの生成に共通鍵を使用する/自身が管理するゲームサーバ上で動作する全ゲームプログラム

 ゲームサーバ管理者の権限で実行できることについて、改めて問題文を確認します。

  • (表1)ゲームサーバ:ゲームプログラム開発会社のゲームサーバ管理者が運用する。 
  • 「共通鍵は、ゲームシステムV全体で一つの鍵が使用され、ゲームサーバ管理者がゲームプログラムに設定する。」

  この記述内容から、ゲームプログラムごとに別の共通鍵を利用したとしても、ゲームサーバ管理者が共通鍵を知り得ることには変わりないことが分かります。

 求められているのは、原因となる認証トークンの仕様です。

 認証トークンは、認証サーバのFQDN、利用者ID、及びハッシュ関数と共通鍵によって生成されたMACが格納されています。

 したがって、「MACの生成に共通鍵を使用する」ことが原因となる仕様です。

 次に、認証トークンで利用できるゲームプログラムの範囲です。

 上に挙げた記述内容から、ゲームサーバ管理者はゲームサーバ上で動作する全てのゲームプログラムを運用していることになるため、これらが不正に利用できる対象になります。

Hさん:MACではなく、ディジタル署名を利用すれば対策になりますか。

Nさん:はい。そうすればゲームサーバ管理者が認証トークンを不正に生成したとしても、ゲームプログラムで検証が失敗します。

Hさん:では、(a:認証サーバ)で公開鍵と秘密鍵の鍵ペアを生成し、(b:公開鍵)をゲームサーバに配布しておきます。a:認証サーバ)が(c:秘密鍵)を使って認証トークンに署名を付加し、ゲームプログラムでは(b:公開鍵)を使って署名の検証を行います。

a:認証サーバ、b:公開鍵、c:秘密鍵

 ディジタル署名を利用して、ゲームサーバ管理者が認証トークンを不正に生成したとしても、ゲームプログラムで検証が失敗する仕組みを考えます。

 (a)では公開鍵と秘密鍵の鍵ペアを生成します。鍵ペアを生成する場所は、管理者によって適切に管理されいる必要があります。ゲームシステムVの構成要素は、ゲーム機V、認証サーバ、ゲームサーバです。このうち、V社で適切に管理できるのは認証サーバになります。(ゲーム機は利用者、ゲームサーバゲームプログラム管理者が管理)

 (b)ディジタル署名では、送信者側で認証トークンに秘密鍵による署名を付加し、受信者側で公開鍵によって署名の検証を行います。ゲームサーバは受信者側に相当するので、公開鍵を持つことになります。

 (c)送信者側である認証サーバでは秘密鍵を使います。 

Nさん:それで問題ありません。次に、不正な機器から認証サーバとゲームサーバへのアクセスをどのようにして防ぐのか教えてください。

Hさん:クライアント認証を使います。

Nさん:ゲーム機V内のクライアント証明書とそれに対応する秘密鍵(以下、鍵Cという)が攻撃者のPCから不正に使用できると、そのPCから各サーバに接続されてしまいます。さらに、コントローラの操作情報を改ざんして送信することによって、ゲームを有利に進めることも考えられます。クライアント証明書と鍵Cはゲーム機Vのどこに格納しますか。

Hさん:鍵Cを含めた全てのデータは、搭載するSSD(Solid State Drive)に格納します。搭載するSSDは、広く流通しているものです。

Nさん:それでは問題がありますね。現状の設計では、専用OSに脆弱性が存在しなかったとしても、⑤攻撃者がゲーム機Vを購入すれば、専用OSを改ざんせずに、ゲーム機V内のクライアント証明書と鍵CをPCなどから不正に使用できます

⑤について、どのようにするとクライアント証明書と鍵CをPCなどから使用可能にしてしまうことができるか。攻撃者が使用前に行う必要があることを、25字以内で具体的に述べよ。:SSDを取り出し、PCなどにつなげる。

 問題文に、「鍵Cを含めた全てのデータは、搭載するSSD(Solid State Drive)に格納します。搭載するSSDは、広く流通しているものです。」に関して、問題があるとあります。

 SSDに関しては、ゲーム機Vには鍵Cを含む全てのデータを格納したSSDが実装されているとあるので、攻撃者がゲーム機Vを購入してPCなどから不正に使用できればいいと思われます。

 しかし、表1のゲーム機Vの欄を見ると、「PCに接続しても外部ストレージとして認識されず、内部のデータを直接読み出すことはできない。」とあり、ゲーム機Vを直接PCに接続してSSD内のデータを使用することはできそうにありません。

 そこで、SSDは広く流通しているということから、ゲーム機VからSSDを取り出し、直接PCに接続すれば使用できそうです。

Hさん:どのように対策したらいいでしょうか。

Nさん:TPM(Trusted Platform Module)をゲーム機Vに搭載し、TPM内に鍵Cを保存するという方法があります。TPMは、⑥内部構造や内部データを解析されにくいという性質を備えているので、TPM内に鍵Cを保存すれば不正に読み取ることは困難になります。

⑥について、この性質を何というか。10字以内で答えよ。:耐タンパ性

 TPM(Trusted Platform Module)とは、コンピュータやIoTデバイスに実装される、セキュリティ関連の処理機能を有するチップのことです。暗号化や公開鍵・秘密鍵のペア生成ができ、内蔵する不揮発性メモリに保存します。外部から攻撃を検知するとデータを消去したり、物理的に破壊したりして、情報漏洩を防ぎます。

 このような内部構造や内部データを解析されにくいという性質のことを、耐タンパ性といいます。

また、ブートローダ又は専用OSの改ざんはゲーム機Vの不正利用につながります。例えば、コントローラの不正な操作情報を送信されるおそれがあります。そのため、ブートローダ及び専用OSの改ざん対策についても検討してください。

Hさん:分かりました。設計を見直します。

【出典:情報処理安全確保支援士試験 平成31年度 春期 午後1問3(一部、加工あり)】