IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社東芝の特許一覧

特許7354074情報処理装置、情報処理方法およびプログラム
<>
  • 特許-情報処理装置、情報処理方法およびプログラム 図1
  • 特許-情報処理装置、情報処理方法およびプログラム 図2
  • 特許-情報処理装置、情報処理方法およびプログラム 図3
  • 特許-情報処理装置、情報処理方法およびプログラム 図4
  • 特許-情報処理装置、情報処理方法およびプログラム 図5
  • 特許-情報処理装置、情報処理方法およびプログラム 図6
  • 特許-情報処理装置、情報処理方法およびプログラム 図7
  • 特許-情報処理装置、情報処理方法およびプログラム 図8
  • 特許-情報処理装置、情報処理方法およびプログラム 図9
  • 特許-情報処理装置、情報処理方法およびプログラム 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-09-22
(45)【発行日】2023-10-02
(54)【発明の名称】情報処理装置、情報処理方法およびプログラム
(51)【国際特許分類】
   G06F 21/51 20130101AFI20230925BHJP
   G06F 21/56 20130101ALI20230925BHJP
【FI】
G06F21/51
G06F21/56 350
【請求項の数】 8
(21)【出願番号】P 2020157718
(22)【出願日】2020-09-18
(65)【公開番号】P2022051303
(43)【公開日】2022-03-31
【審査請求日】2022-08-30
(73)【特許権者】
【識別番号】000003078
【氏名又は名称】株式会社東芝
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】蒋 丹
(72)【発明者】
【氏名】川端 健
【審査官】岸野 徹
(56)【参考文献】
【文献】特開2020-046829(JP,A)
【文献】特開2018-195329(JP,A)
【文献】特開2017-033248(JP,A)
【文献】特開2020-086469(JP,A)
【文献】特開2019-191698(JP,A)
【文献】米国特許出願公開第2020/0089914(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/51
G06F 21/56
(57)【特許請求の範囲】
【請求項1】
外部からアクセス可能な第1実行環境と外部からアクセス不可能な第2実行環境を備える情報処理装置であって、
1以上のソフトウェアに含まれる各ソフトウェアについて、前記各ソフトウェアを識別するファイル情報と、前記各ソフトウェアの実行制御に利用するフラグと、を対応付けたフラグテーブルを記憶するフラグテーブル記憶部と、
前記1以上のソフトウェアのうちの1つである第1ソフトウェアの書き換えを検出した場合、前記第1ソフトウェアに対応する前記ファイル情報である第1ファイル情報を抽出し、抽出した前記第1ファイル情報に基づき前記フラグテーブル内の前記第1ファイル情報に対応する第1フラグを、書き換えが検出された前記第1ソフトウェアの完全性の検証が必要であることを示す第1の値に変更する書き換え処理部と、
前記第1ソフトウェアを正規に変更する正規ソフトウェア変更部と、
前記第2実行環境に設けられ、前記1以上のソフトウェアに含まれる前記各ソフトウェアについて、前記各ソフトウェアを識別する前記ファイル情報と、前記各ソフトウェアの実行制御に利用する前記フラグと、前記各ソフトウェアの完全性を検証するための検証値と、を対応付けたホワイトリストを記憶するホワイトリスト記憶部と、
前記ホワイトリストから前記フラグテーブルを複製するフラグ複製部と、
前記第1ソフトウェアの実行開始が検出された場合、実行が検出された前記第1ソフトウェアの前記第1ファイル情報を抽出し、抽出した前記第1ファイル情報に対応する前記第1フラグが前記第1の値のときに前記第1ソフトウェアの完全性の検証が必要であると判断し、前記第1フラグが第2の値のときに前記第1ソフトウェアの実行を許可し、前記第1フラグが第3の値のときに前記第1ソフトウェアの実行を拒否する、実行制御部と、
前記第1ソフトウェアの完全性の検証を行う検証値照合部と、
を備え、
前記正規ソフトウェア変更部は、前記第1ソフトウェアの正規な変更を行った場合、前記書き換え処理部によって変更された前記第1の値を前記第1ソフトウェアの実行を許可することを示す第2の値に変更し、
前記フラグテーブル記憶部は、前記第1実行環境に設けられ、
前記フラグテーブル記憶部が記憶する前記フラグテーブルは、前記フラグ複製部が前記ホワイトリストから複製したものであり、
前記実行制御部は、前記実行が検出された前記第1ソフトウェアについて完全性の検証が必要であると判断した場合、前記実行が検出された前記第1ソフトウェアの第1ファイル情報から前記第1ソフトウェアのファイルを取得し、取得した前記ファイルに基づき前記第1ソフトウェアの前記検証値を計算し、
前記検証値照合部は、前記実行制御部が計算した前記第1ソフトウェアの前記検証値と、前記ホワイトリスト内の前記第1ファイル情報に対応する前記検証値とが一致する場合に、前記第1ソフトウェアの完全性の検証が成功と判断し、一致しない場合に、前記第1ソフトウェアの完全性の検証が失敗と判断し、
前記実行制御部は、前記検証値照合部が前記第1ソフトウェアの完全性の検証が成功であると判断した場合に、前記第1フラグの値を前記第2の値に変更し、前記検証値照合部が前記第1ソフトウェアの完全性の検証が失敗であると判断した場合に、前記第1ソフトウェアに対し復旧処理を行う、
情報処理装置。
【請求項2】
前記正規ソフトウェア変更部による前記第1ソフトウェアの正規な変更は、前記第1ソフトウェアのファイルを復旧する復旧処理または前記第1ソフトウェアのファイルを更新する更新処理である、請求項1に記載の情報処理装置。
【請求項3】
前記第1ソフトウェアに対して前記正規ソフトウェア変更部が正規な変更を行う前に、前記正規ソフトウェア変更部から前記第1ファイル情報と前記第1ソフトウェアの正規な変更用のファイルの前記検証値を取得し、前記ホワイトリスト内の前記第1ファイル情報に対応する前記検証値を前記正規ソフトウェア変更部から取得した前記正規な変更用ファイルの前記検証値に更新する、検証値更新部と、
をさらに備える、
請求項1に記載の情報処理装置。
【請求項4】
前記ホワイトリスト内の前記第1ファイル情報に対応する前記フラグの値を前記フラグテーブルの前記第1ファイル情報に対応する前記第1フラグの値にする、フラグ反映部と、
をさらに備える、
請求項1に記載の情報処理装置。
【請求項5】
前記フラグテーブル内の前記第1フラグの値が前記第2の値または前記第3の値である場合、前記フラグ反映部は、前記第1フラグの値を前記ホワイトリスト内の前記第1ファイル情報に対応する前記フラグに反映させ、
前記フラグテーブル内の前記第1フラグの値が前記第1の値である場合、前記フラグ反映部は、前記第1ソフトウェアのファイル情報から前記第1ソフトウェアのファイルを取得し、取得した前記ファイルに基づき前記第1ソフトウェアの前記検証値を計算し、
前記検証値照合部は、前記フラグ反映部が計算した前記第1ソフトウェアの検証値と、前記ホワイトリスト内の前記第1ファイル情報に対応する前記検証値とを比較することで、前記第1ソフトウェアの完全性の検証を行う、
請求項4に記載の情報処理装置。
【請求項6】
前記検証値照合部は、前記フラグ反映部が計算した前記第1ソフトウェアの前記検証値と、前記ホワイトリスト内の前記第1ファイル情報に対応する前記検証値とが一致する場合に、前記第1ソフトウェアの完全性の検証が成功と判断し、一致しない場合に、前記第1ソフトウェアの完全性の検証が失敗と判断し、
前記フラグ反映部は、前記検証値照合部が前記第1ソフトウェアの完全性の検証が成功と判断した場合に、前記第1フラグの値を前記第2の値に変更し、前記検証値照合部が前記第1ソフトウェアの完全性の検証が失敗と判断した場合に、前記第1フラグの値を前記第3の値に変更し、前記ホワイトリスト内の前記第1ソフトウェアに対応する前記フラグを変更した前記第1フラグの値にする、
請求項5に記載の情報処理装置。
【請求項7】
外部からアクセス可能な第1実行環境と外部からアクセス不可能な第2実行環境を備える情報処理装置において実行される情報処理方法であって、
前記情報処理装置が、1以上のソフトウェアに含まれる各ソフトウェアについて、前記各ソフトウェアを識別するファイル情報と、前記各ソフトウェアの実行制御に利用するフラグと、を対応付けたフラグテーブルをフラグテーブル記憶部に記憶するフラグテーブル記憶ステップと、
前記情報処理装置が、前記1以上のソフトウェアのうちの1つである第1ソフトウェアの書き換えを検出した場合、前記第1ソフトウェアに対応する前記ファイル情報である第1ファイル情報を抽出し、抽出した前記第1ファイル情報に基づき前記フラグテーブル内の前記第1ファイル情報に対応する第1フラグを、書き換えが検出された前記第1ソフトウェアの完全性の検証が必要であることを示す第1の値に変更する書き換え処理ステップと、
前記情報処理装置が、前記第1ソフトウェアを正規に変更する正規ソフトウェア変更ステップと、
前記情報処理装置が、前記第2実行環境に設けられ、前記1以上のソフトウェアに含まれる前記各ソフトウェアについて、前記各ソフトウェアを識別する前記ファイル情報と、前記各ソフトウェアの実行制御に利用する前記フラグと、前記各ソフトウェアの完全性を検証するための検証値と、を対応付けたホワイトリストをホワイトリスト記憶部に記憶するホワイトリスト記憶ステップと、
前記情報処理装置が、前記ホワイトリストから前記フラグテーブルを複製するフラグ複製ステップと、
前記情報処理装置が、前記第1ソフトウェアの実行開始が検出された場合、実行が検出された前記第1ソフトウェアの前記第1ファイル情報を抽出し、抽出した前記第1ファイル情報に対応する前記第1フラグが前記第1の値のときに前記第1ソフトウェアの完全性の検証が必要であると判断し、前記第1フラグが第2の値のときに前記第1ソフトウェアの実行を許可し、前記第1フラグが第3の値のときに前記第1ソフトウェアの実行を拒否する、実行制御ステップと、
前記情報処理装置が、前記第1ソフトウェアの完全性の検証を行う検証値照合ステップと、
を含み、
前記正規ソフトウェア変更ステップは、前記第1ソフトウェアの正規な変更を行った場合、前記書き換え処理ステップによって変更された前記第1の値を前記第1ソフトウェアの実行を許可する第2の値に変更し、
前記フラグテーブル記憶部は、前記第1実行環境に設けられ、
前記フラグテーブル記憶部が記憶する前記フラグテーブルは、前記フラグ複製ステップが前記ホワイトリストから複製したものであり、
前記実行制御ステップは、前記実行が検出された前記第1ソフトウェアについて完全性の検証が必要であると判断した場合、前記実行が検出された前記第1ソフトウェアの第1ファイル情報から前記第1ソフトウェアのファイルを取得し、取得した前記ファイルに基づき前記第1ソフトウェアの前記検証値を計算し、
前記検証値照合ステップは、前記実行制御ステップが計算した前記第1ソフトウェアの前記検証値と、前記ホワイトリスト内の前記第1ファイル情報に対応する前記検証値とが一致する場合に、前記第1ソフトウェアの完全性の検証が成功と判断し、一致しない場合に、前記第1ソフトウェアの完全性の検証が失敗と判断し、
前記実行制御ステップは、前記検証値照合ステップが前記第1ソフトウェアの完全性の検証が成功であると判断した場合に、前記第1フラグの値を前記第2の値に変更し、前記検証値照合ステップが前記第1ソフトウェアの完全性の検証が失敗であると判断した場合に、前記第1ソフトウェアに対し復旧処理を行う、
情報処理方法。
【請求項8】
外部からアクセス可能な第1実行環境と外部からアクセス不可能な第2実行環境を備える情報処理装置が備えるコンピュータを、
1以上のソフトウェアに含まれる各ソフトウェアについて、前記各ソフトウェアを識別するファイル情報と、前記各ソフトウェアの実行制御に利用するフラグと、を対応付けたフラグテーブルをフラグテーブル記憶部に記憶するフラグテーブル記憶手段と、
前記1以上のソフトウェアのうちの1つである第1ソフトウェアの書き換えを検出した場合、前記第1ソフトウェアに対応する前記ファイル情報である第1ファイル情報を抽出し、抽出した前記第1ファイル情報に基づき前記フラグテーブル内の前記第1ファイル情報に対応する第1フラグを、書き換えが検出された前記第1ソフトウェアの完全性の検証が必要であることを示す第1の値に変更する書き換え処理手段と、
前記第1ソフトウェアを正規に変更する正規ソフトウェア変更手段と、
前記第2実行環境に設けられ、前記1以上のソフトウェアに含まれる前記各ソフトウェアについて、前記各ソフトウェアを識別する前記ファイル情報と、前記各ソフトウェアの実行制御に利用する前記フラグと、前記各ソフトウェアの完全性を検証するための検証値と、を対応付けたホワイトリストをホワイトリスト記憶部に記憶するホワイトリスト記憶手段部と、
前記ホワイトリストから前記フラグテーブルを複製するフラグ複製手段と、
前記第1ソフトウェアの実行開始が検出された場合、実行が検出された前記第1ソフトウェアの前記第1ファイル情報を抽出し、抽出した前記第1ファイル情報に対応する前記第1フラグが前記第1の値のときに前記第1ソフトウェアの完全性の検証が必要であると判断し、前記第1フラグが第2の値のときに前記第1ソフトウェアの実行を許可し、前記第1フラグが第3の値のときに前記第1ソフトウェアの実行を拒否する、実行制御手段と、
前記第1ソフトウェアの完全性の検証を行う検証値照合手段と、
して機能させるためのプログラムであって、
前記正規ソフトウェア変更手段は、前記第1ソフトウェアの正規な変更を行った場合、前記書き換え処理手段によって変更された前記第1の値を前記第1ソフトウェアの実行を許可する第2の値に変更し、
前記フラグテーブル記憶部は、前記第1実行環境に設けられ、
前記フラグテーブル記憶部が記憶する前記フラグテーブルは、前記フラグ複製手段が前記ホワイトリストから複製したものであり、
前記実行制御手段は、前記実行が検出された前記第1ソフトウェアについて完全性の検証が必要であると判断した場合、前記実行が検出された前記第1ソフトウェアの第1ファイル情報から前記第1ソフトウェアのファイルを取得し、取得した前記ファイルに基づき前記第1ソフトウェアの前記検証値を計算し、
前記検証値照合手段は、前記実行制御手段が計算した前記第1ソフトウェアの前記検証値と、前記ホワイトリスト内の前記第1ファイル情報に対応する前記検証値とが一致する場合に、前記第1ソフトウェアの完全性の検証が成功と判断し、一致しない場合に、前記第1ソフトウェアの完全性の検証が失敗と判断し、
前記実行制御手段は、前記検証値照合手段が前記第1ソフトウェアの完全性の検証が成功であると判断した場合に、前記第1フラグの値を前記第2の値に変更し、前記検証値照合手段が前記第1ソフトウェアの完全性の検証が失敗であると判断した場合に、前記第1ソフトウェアに対し復旧処理を行う、
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、情報処理装置、情報処理方法およびプログラムに関する。
【背景技術】
【0002】
自動車やロボットなどの組み込み機器のデジタル化が進んでいる。また、組み込み機器がネットワークと通信することで、遠隔監視、リモート操作、情報共有および自動運転などの様々な高機能を実現している。
【0003】
しかし、組み込み機器がネットワークと接続されることで、ネットワークを介して組み込み機器がサイバー攻撃を受ける可能性が高まっている。
【0004】
組み込み機器で動作するソフトウェアが攻撃者に改ざんされると、意図しない動作を起こし、人命にかかわる事故などが発生するおそれもある。そこで、組み込み機器に正規なソフトウェアのみ実行させることが重要となる。ソフトウェアの実行開始時に、ソフトウェアの完全性を検証して、意図するものと変わらない状態であれば実行を許可するホワイトリスト型の実行制御手法が研究されている。
【0005】
ソフトウェアの実行直前の検証の実施方法にもよるが、一般的に使用されているハッシュ計算やMAC(メッセージ認証コード)計算等の処理時間は、ソフトウェアのサイズが大きいほど検証時間が長くなる。
【0006】
組み込み機器に高機能を実現するためにソフトウェアのサイズが大きくなる傾向がある一方で、低遅延でソフトウェアを実行するというリアルタイム性も求められている。したがって、ソフトウェアの完全性を守りながら実行時の遅延を抑制する必要がある。
【先行技術文献】
【特許文献】
【0007】
【文献】特開2020-46829号公報
【文献】特開2019-185575号公報
【文献】国際公開第2019/151013号
【発明の概要】
【発明が解決しようとする課題】
【0008】
本発明が解決しようとする課題は、遅延を抑制したホワイトリスト型のソフトウェアの実行制御を行う情報処理装置、情報処理方法およびプログラムを提供することである。
【課題を解決するための手段】
【0009】
実施形態の情報処理装置は、フラグテーブル記憶部と、書き換え処理部と、正規ソフトウェア変更部と、を備える。前記フラグテーブル記憶部は、1以上のソフトウェアに含まれる各ソフトウェアについて、前記各ソフトウェアを識別するファイル情報と、前記各ソフトウェアの実行制御に利用するフラグと、を対応付けたフラグテーブルを記憶する。前記書き換え処理部は、前記1以上のソフトウェアのうちの1つである第1ソフトウェアの書き換えを検出した場合、前記第1ソフトウェアに対応する前記ファイル情報である第1ファイル情報を抽出し、抽出した前記第1ファイル情報に基づき前記フラグテーブル内の前記第1ファイル情報に対応する第1フラグを、書き換えが検出された前記第1ソフトウェアの完全性の検証が必要であることを示す第1の値に変更する。前記正規ソフトウェア変更部は、前記第1ソフトウェアを正規に変更する。前記正規ソフトウェア変更部は、前記第1ソフトウェアの正規な変更を行った場合、前記書き換え処理部によって変更された前記第1の値を前記第1ソフトウェアの実行を許可することを示す第2の値に変更する。
【図面の簡単な説明】
【0010】
図1】第1の実施形態に係る情報処理装置10の機能的な構成例を示すブロック図。
図2】ホワイトリストL1の一例。
図3】フラグテーブルL2の一例。
図4】ホワイトリストL1からフラグテーブルL2に必要な情報を複製する処理手順の一例を示すフローチャート。
図5】ソフトウェアのファイルが書き換えられるときの処理手順の一例を示すフローチャート。
図6】ソフトウェアを実行制御する処理手順の一例を示すフローチャート。
図7】ソフトウェアを更新する処理手順の一例を示すフローチャート。
図8】ソフトウェアを復旧する処理手順の一例を示すフローチャート。
図9】フラグテーブルL2の情報をホワイトリストL1に反映する処理手順の一例を示すフローチャート。
図10】第1の実施形態に係る情報処理装置10のハードウェア構成例を示すブロック図。
【発明を実施するための形態】
【0011】
以下、発明を実施するための実施形態について説明する。
【0012】
(第1の実施形態)
(第1の実施形態の概要と構成)
図1から図10を参照して、第1の実施形態を説明する。
【0013】
図1は、第1の実施形態に係る情報処理装置10の機能的な構成例を示すブロック図である。図1に示すように、情報処理装置10は、フラグ複製部101、フラグ反映部102、書き換え処理部103、正規ソフトウェア変更部104、実行制御部105、検証値照合部106、検証値更新部107、ホワイトリスト記憶部108およびフラグテーブル記憶部109を備える。
【0014】
情報処理装置10は、様々な目的に応じて設計された各種のシステム内でソフトウェアに対してホワイトリスト型の実行制御を行う。情報処理装置10は、ソフトウェアの実行開始が検出されたときに、当該ソフトウェアに対応付けられたフラグ(実行制御情報の一例)を参照して当該ソフトウェアの実行を許可するか否かの判断や当該ソフトウェアの完全性の検証を行うか否かの判断(実行制御)を行う。
【0015】
また、情報処理装置10は、予め実行が許可され、ストレージ76(図10)内に記憶されているソフトウェアのファイルが書き換えられると、当該ソフトウェアに対応付けられたフラグを操作して、当該ソフトウェアの実行開始時に完全性の検証を行うようにする。さらに、情報処理装置10は、予め実行が許可されたソフトウェアが正規に変更(復旧もしくは更新)された場合には、一度当該ソフトウェアの完全性の検証を必要とすることを示すフラグの値に書き換えた後、再度フラグを操作することで当該ソフトウェアの実行開始時に当該ソフトウェアの実行を許可する。
【0016】
次に、情報処理装置10が備える第1実行環境および第2実行環境について説明する。情報処理装置10は、非セキュアな実行環境である第1実行環境と、セキュアな実行環境である第2実行環境を備える。
【0017】
第1実行環境と第2実行環境の2つの実行環境は同一のハードウェア上に仮想化される。
第1実行環境は、通常の情報処理装置の実行環境に相当する。第2実行環境は、第1実行環境よりもセキュリティを強化した実行環境である。
【0018】
第1実行環境では、例えば、Linux(登録商標)等のOSが使用される。外部ネットワークに接続して遠隔監視等様々な機能を提供する。一方で攻撃者は、情報処理装置10の外部からネットワーク経由で第1実行環境へのアクセスすることができる。
【0019】
第2実行環境は、同一ハードウェアの上に、仮想化技術によって作られ、ハードウェアのアクセス制御により第1実行環境からのアクセスは限定される。第2実行環境で使用されるOSは、例えば、リアルタイムOSのTOPPERSなどである。規模の小さい脆弱性が低いOSを使用することによって第2実行環境の信頼性を保つ。本実施例において第2実行環境は外部ネットワークと直接通信しない。
【0020】
上述した第1実行環境および第2実行環境の仮想化を実現する技術は、一例として、ARM社のTrust Zone(登録商標)を利用する。
【0021】
次に、情報処理装置10の各機能部について説明する。
【0022】
図1に示すように、フラグテーブル記憶部109、書き換え処理部103および実行制御部105は、第1実行環境に配置される。検証値更新部107およびホワイトリスト記憶部108は、第2実行環境に配置される。フラグテーブル複製部101、フラグ反映部102、正規ソフトウェア変更部104および検証値照合部106は、両環境でそれぞれ部分的な処理が配置され、環境を跨って全体処理を実行する。すべての処理はそれぞれの実行環境の特権モードで動作する必要があるため、特権モードで動作するOSカーネルまたはアプリケーションに組み込む必要がる。
【0023】
ホワイトリスト記憶部108は、第2実行環境内でホワイトリストL1を記憶する。ホワイトリストL1は、情報処理装置10において実行されて良いソフトウェアを対象に、ソフトウェアのファイル情報、検証値および実行制御情報が対応付けられて、システムの開発者や運用者によって予め作成したリストである。
【0024】
ファイル情報(識別情報と称すこともある)は、そのソフトウェアのファイルを識別可能な情報であり、例えば、そのファイルにアクセスする経路を示すファイルパスである。以下では、ソフトウェアのファイル情報がファイルパスであるものとして説明するが、ソフトウェアのファイルを識別可能な他の情報、例えば、inode番号やデバイス番号を利用しても良い。
【0025】
また、検証値(検証情報と称すこともある)は、ソフトウェアの完全性(正当性)を検証するための値である。検証値は、例えば、ハッシュ値である。以下では、検証値がハッシュ値であるものとして説明する。なお、ソフトウェアの完全性を検証するために、MAC(メッセージ認証コード)を利用してもよい。
【0026】
実行制御情報は、ソフトウェアの実行開始時に当該ソフトウェアに対する実行制御の判断に利用するための情報である。
【0027】
以下では、実行制御情報として、フラグ(実行制御フラグと称すこともある)を利用するものとして説明するが、ソフトウェアの実行制御の判断に利用可能であれば、他の構造形式を利用しても良い。
【0028】
図2は、ホワイトリストL1の一例である。図2では、例えば、ファイルパス「AAAAA」とハッシュ値「XXXXX」とフラグ「0」が対応付けられている。これはファイルパスが「AAAAA」であるソフトウェアについて、ハッシュ値が「XXXXX」でフラグが「0(みなし許可)」であることを示している。
【0029】
図2に示すホワイトリストL1の一例において、フラグは「0(みなし許可)」または「2(みなし拒否)」の2つの値のうちの一方をとり得る。
【0030】
「0(みなし許可)」(第2の値と称すこともある)は、このフラグの値に対応付けられたファイルパスが示すソフトウェアの実行開始が検出されたとき(実行開始時)に、当該ソフトウェアの完全性の検証を行わずに実行を許可することを示すフラグの値である。
【0031】
「2(みなし拒否)」(第3の値と称すこともある)は、このフラグの値に対応付けられたファイルパスが示すソフトウェアの実行開始が検出されたときに、当該ソフトウェアを実行しない、すなわち実行を拒否することを示すフラグの値である。
【0032】
ホワイトリスト記憶部108は、情報処理装置10の稼働中、攻撃者からの改ざんを防ぐために、安全な実行環境である第2実行環境においてホワイトリストL1を記憶する。
【0033】
具体的には、情報処理装置10の稼働しているときには、ホワイトリスト記憶部108は、第2実行環境のメモリ領域(RAM(Random Access Memory)73の一部)を利用してホワイトリストL1を記憶する。また、情報処理装置10が停止しているとき、ホワイトリストL1は、情報処理装置10のストレージ76の指定領域に記憶されている。
【0034】
フラグテーブル記憶部109は、第1実行環境のOSカーネルメモリ領域(RAM73の一部)を利用してフラグテーブルL2を記憶する。初期状態のフラグテーブルL2は、フラグ複製部101がホワイトリストL1からファイルパスとフラグを複製したものである。
【0035】
フラグテーブルL2は、後述するように「0(みなし許可)」および「2(みなし拒否)」の2つの値に加えて、「1(要検証)」の値をとり得る。これらによってソフトウェア実行時の遅延を抑制する効果がある。フラグテーブルL2を利用せずにホワイトリストL1のみでソフトウェアの実行制御を行うとすると、第2実行環境に配置される実行制御部105が第1実行環境内に配置されるホワイトリストL1のフラグを参照してソフトウェアの実行制御を行うことになる。これでは、フラグを参照する度に実行環境を切り替えるためのオーバヘッドが発生し、ソフトウェア実行時の遅延が生じてしまう。このため、フラグテーブル記憶部109が第1実行環境内に設けられる。
【0036】
「1(要検証)」(第1の値と称すこともある)は、このフラグの値に対応付けられたファイルパスが示すソフトウェアの実行開始が検出されたときに、当該ソフトウェアの完全性の検証を行う必要があることを示すフラグの値である。
【0037】
図3は、フラグテーブルL2の一例である。図3に示すように、フラグテーブルL2の内容はホワイトリストL1からファイルパスとこれに対応するフラグとを複製したものであり、ホワイトリストL1の部分集合となる。
【0038】
図3では、例えば、ファイルパスが「AAAAA」であるソフトウェアについて、フラグが「0(みなし許可)」であることを示している。
【0039】
フラグ複製部101は、例えば、起動時に、第2実行環境内に配置されるホワイトリスト記憶部108が記憶するホワイトリストL1からファイルパスとこれに対応するフラグとをフラグテーブルL2として複製し、第1実行環境に配置されるフラグテーブル記憶部109に記憶させる処理を行う。
【0040】
フラグ反映部102は、第1実行環境に配置されるフラグテーブル記憶部109が記憶するフラグテーブルL2の情報を第2実行環境に配置されるホワイトリスト記憶部108が記憶するホワイトリストL1に反映する。
【0041】
上述したフラグ複製部101とフラグ反映部102の協働により、ホワイトリストL1とフラグテーブルL2の情報の同期を実現する。
【0042】
書き換え処理部103は、情報処理装置10のストレージ76等に記憶されているソフトウェアのファイルが(不正な変更も正規な変更も区別せずに)書き換えられたこと(変更されたこと)を検出すると、当該ソフトウェアのファイルパスを抽出し、フラグテーブルL2内の当該ソフトウェアのファイルパスに対応付けられたフラグを「1(要検証)」に変更する。
【0043】
書き換え処理部103がソフトウェアの書き換えを検出する手法としては、一例として、ソフトウェアのファイルへの書き込み処理(例えば、Linux(登録商標)カーネルのwrite関係の処理)が呼ばれたときに、これをソフトウェアの書き換えとして検出する手法が考えられる。
【0044】
正規ソフトウェア変更部104は、正規にソフトウェアのファイルを書き換える(正規に変更する)処理を行う。この場合、正規な書き換えであっても書き換え処理部103がフラグテーブルL2内の書き換え対象のソフトウェアのファイルパスに対応するフラグを「1(要検証)」に変更しているため、正規ソフトウェア変更部104は、そのフラグを「0(みなし許可)」に変更する。
【0045】
ソフトウェアの正規変更は、システム管理者が意図するソフトウェアの書き換え処理であり、ソフトウェアの機能追加やソフトウェアにセキュリティバッチを当てるための更新とソフトウェアの故障状態から回復するための復旧が考えられる。
【0046】
なお、正規ソフトウェア変更部104が動作する期間中に不正な書き換えが発生しないように、正規ソフトウェア変更部104の動作中の割り込みは禁止する。
【0047】
実行制御部105は、ソフトウェアの実行開始が検出されたとき(実行開始時)に、フラグテーブルL2内の当該ソフトウェアのファイルパスに対応付けられたフラグに基づき、当該ソフトウェアの実行制御を行う。
【0048】
一例として、情報処理装置10があるソフトウェアの実行を開始しようとすると、実行制御部105は、当該ソフトウェアのファイルパスを抽出し、フラグテーブルL2内の当該ソフトウェアのファイルパスに対応するフラグを確認する。
【0049】
フラグテーブルL2において、実行制御対象のソフトウェアのファイルパスに対応するフラグが「0(みなし許可)」である場合、実行制御部105は、フラグに従って直ちに当該ソフトウェアの実行を許可する。
【0050】
また、フラグテーブルL2において、実行制御対象のソフトウェアのファイルパスに対応するフラグが見つからない場合や当該ソフトウェアのフラグが「2(みなし拒否)」である場合、実行制御部105は、当該ソフトウェアの実行を拒否する。
【0051】
また、フラグテーブルL2において、実行制御対象のソフトウェアのファイルパスに対応するフラグの値が「1(要検証)」である場合、実行制御部105は、検証値照合部106と協働して当該ソフトウェアの完全性の検証を行う。
【0052】
一例として、実行制御部105が実行制御対象のソフトウェアの実行ファイル(ストレージ76内に保持)からハッシュ値を計算し、当該ソフトウェアのファイルパスと計算したハッシュ値を検証値照合部106に出力する。そして、検証値照合部106が当該ソフトウェアのファイルパスとハッシュ値を利用して、第2実行環境部で保持されているホワイトリストL1と連動して当該ソフトウェアの完全性を検証する。
【0053】
実行制御部105は、当該ソフトウェアについて、完全性の検証が成功である場合には、当該ソフトウェアの実行を許可し、完全性の検証が失敗である場合には、当該ソフトウェアの実行を拒否する。なお、ソフトウェアの実行を拒否した場合はエラーとしてシステム管理者に通知することが好ましい。
【0054】
検証値照合部106は、完全性の検証対象のソフトウェアのファイルパスと実行制御部105が計算したハッシュ値を実行制御部105から取得し、実行制御部105が計算したハッシュ値をホワイトリストL1内の当該ソフトウェアのハッシュ値と照合して完全性の検証を行う。さらに検証値照合部106は、検証結果を実行制御部105に通知する。
【0055】
具体的には、検証値照合部106は、完全性の検証対象のソフトウェアのファイルパスがホワイトリストL1内に存在するか否かを判断し、存在する場合はさらに当該ソフトウェアのファイルパスに対応付けられたハッシュ値を実行制御部105が計算したハッシュ値と照合し、両者の値が一致する場合は「検証成功」という検証結果を実行制御部105に通知する。
【0056】
また、ホワイトリストL1にファイルパスが存在しない場合やホワイトリストL1の当該ソフトウェアのファイルパスに対応付けられたハッシュ値が実行制御部105が計算したハッシュ値と一致しない場合は、「検証失敗」という検証結果を実行制御部105に通知する。
【0057】
検証値更新部107は、正規ソフトウェア変更部104によるソフトウェアの正規変更が行われる際、正規ソフトウェア変更部104から正規変更対象のソフトウェアのファイルパスと新たなハッシュ値を取得し、ホワイトリストL1内の当該ソフトウェアのファイルパスに対応付けられたハッシュ値を更新する。
【0058】
(第1の実施形態の処理)
図4図9を参照して、本実施形態の情報処理装置10の処理手順を説明する。
【0059】
まず、フラグ複製部101がホワイトリストL1の一部をフラグテーブルL2として複製する処理の手順を説明する。
【0060】
図4は、ホワイトリストL1からフラグテーブルL2に必要な情報を複製する処理手順の一例を示すフローチャートである。情報処理装置10が起動すると、最初に第2実行環境の初期化処理を行い、第2実行環境のOSなどが準備でき次第、第1実行環境の初期化処理を行う。そして、フラグテーブルL2の複製処理を開始する。
【0061】
フラグテーブル記憶部109は、第1実行環境のOSカーネルメモリ領域にフラグテーブルL2を記憶するための空間を確保する(ステップS1001)。フラグテーブルL2は、ホワイトリストL1の部分集合であるため、ホワイトリストL1の大きさが分かればフラグテーブルL2の大きさも決まる。
【0062】
なお、ホワイトリストL1の大きさは、事前にシステム管理者が指定する固定値であっても良いし、保護したいソフトウェアのリストの数による変動値にしても良い。
【0063】
同じくステップS1001でフラグテーブル記憶部109は、フラグテーブルL2の空間が用意できるとフラグテーブルL2のための空間を用意できたことをフラグ複製部101に通知する。
【0064】
フラグ複製部101は、ホワイトリスト記憶部108からホワイトリストL1内のファイルパスとフラグの各組を取得し、フラグテーブル記憶部109に出力することで、ファイルパスとフラグの各組をフラグテーブルL2に複製する(ステップS1003)。
【0065】
フラグ複製部101は、フラグテーブルL2を参照し、フラグテーブルL2の複製が成功したか否かの判定を行う(ステップS1005)。フラグ複製部101は、ホワイトリストL1内のファイルパスとハッシュ値のすべての組がフラグテーブルL2に存在する場合、複製処理が成功と判断し(ステップS1005:Yes)、処理を終了する。ステップS1005において、フラグ複製部101は、ホワイトリストL1内のファイルパスとハッシュ値のいずれかの組がフラグテーブルL2内に存在しない場合、複製処理が失敗したと判断し(ステップS1005:No)、エラー通知をシステム管理者に通知し(ステップS1007)、ステップS1003に移行する。そして、一定時間経過後に再度複製処理を行う。
【0066】
なお、エラー通知はあくまでシステム管理者が早期に異常に気づくための仕組みであり、必ずしも必要ではない。
【0067】
また、フラグ複製処理は情報処理装置10の起動後の初期段階で行われるが、これに限定しない。例えば、情報処理装置10の起動時とは別のタイミングや定期的に処理を実行しても良い。
【0068】
次に、ストレージ内のソフトウェアのファイルが書き換えられる際の処理手順を説明する。
【0069】
図5は、ソフトウェアのファイルが書き換えられるときの処理手順の一例を示すフローチャートである。
【0070】
書き換え処理部103は、情報処理装置10の稼働中、常に自装置内のシステムの動きを監視する。そして、ストレージ76(図10)にデータを書き込む処理(例えば、Linux(登録商標)カーネルのwrite関係の処理)が発生すると、書き換え処理部103は、書き換えの発生を検出し、図5に示す処理を開始する。
【0071】
書き換え処理部103は、書き換えられたソフトウェアのファイルパスを抽出する(S2001)。例えば、ファイルパスが「BBBBB」であるソフトウェアが書き換えられた場合、書き換え処理部103は、ファイルパス「BBBBB」を抽出する。
【0072】
書き換え処理部103は、フラグテーブル記憶部109からフラグテーブルL2を参照し、書き換えられたソフトウェアのファイルパスがフラグテーブルL2内に含まれているか否かを判定する(ステップS2003)。
【0073】
フラグテーブルL2内に当該ソフトウェアのファイルパスが含まれている場合(ステップS2003:Yes)、書き換え処理部103は、フラグテーブルL2内の当該ソフトウェアのファイルパスに対応するフラグの値を「1(要検証)」に変更し(ステップS2005)、処理を終了する。
【0074】
なお、フラグの値を変更する際、書き換え処理部103は、変更前のフラグの値を確認する必要はない。
【0075】
また、ステップS2003でフラグテーブルL2内に当該ソフトウェアのファイルパスが含まれていない場合(ステップS2003:No)、処理を終了する。
【0076】
次に情報処理装置10がソフトウェアを実行するときの処理手順を説明する。
図6は、ソフトウェアを実行制御する処理手順の一例を示すフローチャートである。この図6のフローチャートで示す処理は、ソフトウェアの実行開始が検出される度に実行される。なお、実行開始が検出され、実行制御の対象となるソフトウェアを実行制御対象のソフトウェアと称すこともある。
【0077】
情報処理装置10がソフトウェアの実行を開始しようとすると、第1実行環境のカーネルが処理(例えば、Linux(登録商標)のexecve関係の処理)を開始する。図6のステップS3001において、第1実行環境のカーネルは、実行しようとするソフトウェアの実行ファイルを読み込む前に、カーネルの実行処理を一時停止させる。そして、図6のステップ3003の処理に移行する。なお、カーネルが実行処理を一時停止して、関数(図6のステップ3003以降の処理)に移行させる方法としては、例えば、LSM(Linux(登録商標) Security Module)のセキュリティフックポイントを利用することで実現できる。
【0078】
図6のステップS3003において、実行制御部105は、まず実行制御対象のソフトウェアのファイルパスを取得し、さらにフラグテーブルL2を参照して当該ソフトウェアのファイルパスがフラグテーブルL2内に含まれているか否かを判定する。
【0079】
フラグテーブルL2内に実行制御対象のソフトウェアのファイルパスが含まれている場合(ステップS3003:Yes)、実行制御部105は、当該ファイルパスに対応付けられたフラグの値が「1(要検証)」であるか否かを判定する(ステップS3005)。
【0080】
ステップS3005において、フラグの値が「1(要検証)」である場合(ステップS3005:Yes)、実行制御部105は、実行制御対象のソフトウェアのファイルパスから当該ソフトウェアのファイルを取得してハッシュ値を計算する(ステップS3007)。また、同じくステップS3007において、実行制御部105は、検証値照合部106に実行制御対象のソフトウェアのファイルパスと計算したハッシュ値を出力する。
【0081】
検証値照合部106は、ホワイトリストL1を参照し、実行制御部105が計算した実行制御対象のソフトウェアのハッシュ値とホワイトリストL1内の当該ソフトウェアのハッシュ値とを比較して、一致するか否かを判定する(ステップS3009)。
【0082】
ステップS3009において、2つの検証値が一致する場合(つまり、完全性の検証に成功した場合)(ステップS3009:Yes)、検証値照合部106は、「検証成功」という検証結果を実行制御部105に通知し、実行制御部105は、フラグテーブルL2内の実行制御対象のソフトウェアに対応付けられたフラグを「0(みなし許可)」に変更する(ステップS3011)。
【0083】
そして、情報処理装置10は、実行制御対象のソフトウェアの実行処理を継続させるように、カーネル実行処理に戻る(ステップS3013)。そして、処理を終了する。
【0084】
図6のステップS3009において、2つの検証値が一致しない場合(つまり、完全性の検証に失敗した場合)(ステップS3009:No)、ステップ3015に移行する。ステップ3015において、検証値照合部106は、「検証失敗」という検証結果を実行制御部105に通知し、実行制御部105は、ROM(Read Only Memory)72内に当該ソフトウェアの復旧用情報が存在するか否かを確認する。
【0085】
ROM72内に復旧用情報がある場合(ステップS3015:Yes)、実行制御部105は、実行制御対象のソフトウェアのファイルパスを正規ソフトウェア変更部104に出力し、正規ソフトウェア変更部104が当該ソフトウェアの復旧処理を行う(ステップS3017)。同じくステップS3017において、正規ソフトウェア変更部104がフラグテーブルL2内の実行制御対象のソフトウェアに対応付けられたフラグを「0(みなし許可)」に変更する。そして、ステップS3005に移行する。復旧処理の詳細については、後述する。
【0086】
ステップS3015において、ROM72内に復旧用情報がない場合(ステップS3015:No)」、ステップS3019に移行する。
【0087】
ステップS3019において、実行制御部105は、フラグテーブルL2内の実行制御対象のソフトウェアに対応付けられたフラグを「2(みなし拒否)」に変更する。そして、ステップS3025において、実行制御部105は、当該ソフトウェアの実行を拒否し、情報処理装置10は、一時停止したカーネル実行処理に戻って当該ソフトウェアの実行を中止する。
【0088】
ステップS3005において、実行制御対象のソフトウェアのフラグが「1(要検証)」でない場合(ステップS3005:No)、実行制御部105は、フラグの値が「0(みなし許可)」であるか否かを判定する(ステップS3021)。
【0089】
ステップS3021において、実行制御対象のソフトウェアのフラグの値が「0(みなし許可)」である場合(ステップS3021:Yes)、実行制御部105は、当該ソフトウェアの実行を許可し、情報処理装置10は、一時停止したカーネル実行処理に戻って実行制御対象のソフトウェアの実行処理を再開させる(ステップS3013)。
【0090】
ステップS3021において、実行制御対象のソフトウェアのフラグの値が「0(みなし許可)」でない場合(ステップS3021:No)、実行制御部105は、フラグが「2(みなし拒否)」であるか否を判断する(ステップS3023)。
【0091】
ステップS3023において、実行制御対象のソフトウェアのフラグが「2(みなし拒否)」である場合(ステップS3023:Yes)、実行制御部105は、当該ソフトウェアの実行を拒否し、情報処理装置10は、一時停止したカーネル実行処理に戻って当該ソフトウェアの実行を中止する(ステップS3025)。
【0092】
ステップS3023において、実行制御対象のソフトウェアのフラグが「2(みなし拒否)」でない場合(ステップS3023:No)、実行制御部105は、フラグの状態がエラーであるとみなし、システム管理者にエラー通知を行う(ステップS3027)。そして、実行制御部105は、当該ソフトウェアの実行を拒否し、情報処理装置10は、一時停止したカーネル実行処理に戻って当該ソフトウェアの実行処理を中止する(ステップS3025)。
【0093】
ステップS3003において、フラグテーブルL2内に実行制御対象のソフトウェアのファイルパスが含まれていない場合(ステップS3003:No)、実行制御部105は、当該ソフトウェアの実行を拒否し、情報処理装置10は、一時停止したカーネル実行処理に戻って当該ソフトウェアの実行処理を中止する(ステップS3025)。
【0094】
なお、実行を拒否したソフトウェアに対して、当該ソフトウェアの重要度に応じて適切なタイミングにて自動または手動で復旧しても良い。
【0095】
次に、ソフトウェアを正規変更する時の処理手順を説明する。ソフトウェアの正規変更には、更新と復旧がある。まず、更新の場合について説明する。図7は、ソフトウェアを更新する処理手順の一例を示すフローチャートである。
【0096】
情報処理装置10の内部のソフトウェアのバージョン情報を管理する管理部がソフトウェアの更新が必要と判断すると、情報処理装置10は、ソフトウェアの更新処理を行う。
【0097】
図7のステップS4000において、正規ソフトウェア変更部104は、更新用情報を取得する。例えば、正規ソフトウェア変更部104は、通信装置77(図10)を利用して外部から更新情報を取得する。なお、更新用情報の正当性は別途の手段で確保済みと仮定する。
【0098】
ここで、更新用情報にはソフトウェアのファイルパス(ファイル情報)、当該ソフトウェアの実行ファイル(更新用ファイル)、当該ソフトウェアのハッシュ値が含まれる。
【0099】
図7のステップS4001において、正規ソフトウェア変更部104は、更新対象のソフトウェアのファイルパスとハッシュ値を検証値更新部107に出力する。
【0100】
検証値更新部107は、ホワイトリストL1内の更新対象のソフトウェアに対応付けられたハッシュ値をソフトウェアの旧ファイルのハッシュ値からソフトウェアの更新用ファイルのハッシュ値に更新する(ステップS4003)。
【0101】
次に、正規ソフトウェア変更部104がストレージ76内の更新対象ソフトウェアのファイルについて、新しいファイルで旧ファイルを上書きして更新する(ステップS4005)。
【0102】
上述したように、書き換え処理部103は、ストレージ76内のソフトウェアのファイルが書き換えられることを検出すると、フラグテーブルL2の当該ソフトウェアに対応付けられたフラグを「1(要検証)」に変更する機能を持つ。したがって、ステップS4005で更新対象のファイルが更新されると、書き換え処理部103がフラグテーブルL2の更新対象のソフトウェアに対応付けられたフラグを「1(要検証)」に変更する(ステップS4007)。
【0103】
次に、正規ソフトウェア変更部104は、変更対象のソフトウェアのフラグが「1(要検証)」であることを検出し、当該ソフトウェアは正規な変更(更新)のため当該フラグを「0(みなし許可」に変更する(ステップS4009)。そして、処理を終了する。
【0104】
次に復旧処理を説明する。図8は、ソフトウェアを復旧する処理手順の一例を示すフローチャートである。図6のステップS3005乃至ステップS3017で説明したように、実行制御対象のソフトウェアの完全性の検証に失敗し、当該ソフトウェアに対応する復旧用情報がある場合に、正規ソフトウェア変更部104が当該ソフトウェアの復旧処理を行う。
【0105】
図8のステップS5000において、正規ソフトウェア変更部104は、復旧用情報を取得する。
【0106】
なお、正規ソフトウェア変更部104は、復旧用情報を情報処理装置10の外部から取得しても良いし、情報処理装置10の内部(ROM72等)から取得しても良い。
【0107】
情報処理装置10の内部から取得する場合は、例えば、事前にROM72などに復旧用情報を保存しておくことが必要である。
【0108】
復旧用情報には、古いバージョンの正規のソフトウェア実行ファイル(復旧用ファイル)と、これに対応するハッシュ値が含まれる。
【0109】
図8のステップS5001において、正規ソフトウェア変更部104は、復旧対象のソフトウェアのファイルパスと当該ソフトウェアのハッシュ値を検証値更新部107に出力する。
【0110】
検証値更新部107は、ホワイトリストL1内の復旧対象のソフトウェアに対応付けられたハッシュ値を正規ソフトウェア変更部104から取得した復旧用ファイルのハッシュ値に更新する(ステップS5003)。
【0111】
次に、正規ソフトウェア変更部104がストレージ76の復旧対象ソフトウェアのファイルに対し、復旧用情報内の復旧用ファイルで上書きすることで、復旧する(ステップS5005)。
【0112】
ステップS5005で復旧対象ソフトウェアの実行ファイルが復旧されると、書き換え処理部103がフラグテーブルL2の復旧対象のソフトウェアに対応付けられたフラグを「1(要検証)」に変更する(ステップS5007)。
【0113】
次に、正規ソフトウェア変更部104は、当該ソフトウェアに対応付けられたフラグが「1(要検証)」であることを検出すると、当該ソフトウェアは正規な変更(復旧)のため、当該フラグを「0(みなし許可」に変更する(ステップS5009)。そして、複製処理を終了する。
【0114】
次に、フラグテーブルL2の情報をホワイトリストL1に反映する処理手順を説明する。
【0115】
図9は、フラグテーブルL2の情報をホワイトリストL1に反映する処理手順を示すフローチャートである。以下では、ソフトウェアを実行することで提供するサービスがすべて終了し、情報処理装置10が停止する直前に反映処理を行うとして説明するが反映処理を行うタイミングを別に設定しても良い。
【0116】
情報処理装置10は、ソフトウェアを実行して提供するサービスがすべて終了すると、外部との通信インターフェースを閉じて、フラグテーブルL2の情報をホワイトリストL1に反映する処理を開始する。
【0117】
反映処理では、情報処理装置10が次回稼働してソフトウェアの実行制御を行う際に、ソフトウェアの完全性を検証する処理を削減するために、停止前のホワイトリストL1へのフラグの反映でフラグが「1(要検証)」のものを無くす。
【0118】
フラグ反映部102は、まずフラグテーブルL2を参照し、値が「1(要検証)」であるフラグの有無を確認する(ステップS6001)。
【0119】
フラグテーブルL2に値が「1(要検証)」のフラグがある場合(ステップS6001:Yes)、情報処理装置10は、ステップS6003とステップS6005の処理で当該フラグに対応するソフトウェアの完全性を検証する。
【0120】
ステップS6003において、フラグ反映部102は、フラグテーブルL2の値が「1(要検証)」であるフラグの中から一つのフラグを選択し、選択したフラグに対応するソフトウェア(完全性検証対象のソフトウェア)のハッシュ値を計算する。具体的には、フラグ反映部102が選択したフラグに対応するソフトウェアのファイルパスから当該ソフトウェアのバイナリファイルをストレージ76から取得してハッシュ値を計算する。同じくステップS6003において、フラグ反映部102は、当該ソフトウェアのファイルパスと計算したハッシュ値を検証値照合部106に出力する。
【0121】
検証値照合部106は、フラグ反映部102から完全性検証対象のソフトウェアのファイルパスと当該ソフトウェアに対応するハッシュ値を取得し、ホワイトリストL1を参照して、ホワイトリストL1内の当該ソフトウェアに対応付けられたハッシュ値とフラグ反映部102が計算したハッシュ値とが一致するか否かを判定する(ステップS6005)。
【0122】
ホワイトリストL1内の完全性検証対象のソフトウェアに対応付けられたハッシュ値とフラグ反映部102が計算したハッシュ値とが一致する場合(つまり、完全性の検証に成功した場合)(ステップS:6005:Yes)、ステップS6007に移行する。
【0123】
ステップS6007において、検証値照合部106は、フラグ反映部102に「検証成功」という検証結果を通知し、次にフラグ反映部102は、フラグテーブルL2の完全性検証対象のソフトウェアに対応付けられたフラグを「0(みなし許可)」に変更し、ステップS6001に移行する。
【0124】
図9のステップS6005において、ホワイトリストL1内の完全性検証対象のソフトウェアに対応付けられたハッシュ値とフラグ反映部102が計算したハッシュ値が一致しない場合(つまり、完全性の検証に失敗した場合)(ステップS:6005:No)、ステップS6009に移行する。
【0125】
ステップS6009において、検証値照合部106は、フラグ反映部102に「検証失敗」という検証結果を通知し、フラグ反映部102は、フラグテーブルL2において完全性の検証対象のソフトウェアのフラグを「2(みなし拒否)」に変更し、ステップS6001に移行する。
【0126】
フラグテーブルL2内に値が「1(要検証)」のフラグが存在しない場合(ステップS6001:No)、フラグテーブルL2内の各ソフトウェアに対応するフラグの値を第2実行環境のホワイトリストL1内の各ソフトウェアに対応するフラグに反映する(ステップS6011)。
【0127】
そして、情報処理装置10は、反映処理を終了する。なお、ホワイトリストL1は、情報処理装置10の停止中はストレージ76内で保持されるため、図9で説明した反映処理の終了後から情報処理装置10が停止する間に、ホワイトリストL1をストレージ76に記憶させることになる。また、次に情報処理装置10が起動するときには、その前の情報処置装置10の稼働時に停止する前に反映処理を経たホワイトリストL1を利用することになる。なお、ストレージ76からホワイトリストL1をロードする時に、別途正当性を検証する手段が必要となる。
【0128】
(第1の実施形態の効果)
以上説明したように、本実施形態の情報処理装置10は、ネットワーク経由でのソフトウェアへの攻撃を想定にして、ソフトウェアに対しホワイトリスト型の実行制御を行う。情報処理装置10は、ソフトウェアを実行する際に、フラグテーブルL2のフラグに基づいて、当該ソフトウェアの実行制御を行う。
【0129】
情報処理装置10の起動後に、ソフトウェアの書き換えが発生すると、フラグテーブルL2内の当該ソフトウェアに対応付けられたフラグを「1(要検証)」に変更する。
【0130】
情報処理装置10は、フラグが「1(要検証)」のソフトウェアについて、当該ソフトウェアが実行されるときには、そのときに当該ソフトウェアに対して完全性を検証する。
【0131】
また、情報処理装置10の終了(電源を切る)前までに、フラグの値が「1(要検証)」であるソフトウェアが実行されない場合には、当該ソフトウェアの完全性を検証してから情報処理装置10は電源を切る。
【0132】
また、ソフトウェアが正規変更される場合には、フラグテーブルL2内の当該ソフトウェアに対応付けられたフラグを「1(要検証)」から「0(みなし許可)」に変更し、ソフトウェアが正規変更の場合とネットワーク経由などの攻撃により不正に書き換えられた場合とを区別する。
【0133】
従来は、ソフトウェアに対する更新や復旧に対応せず、一度書き換えられると実行時に完全性検証が行われて、実行時の検証による遅延削減の効果が限られたが、本実施形態の情報処理装置10は、ソフトウェアの正規変更が行われた場合においても、当該ソフトウェアが実行される際の遅延を有効に抑制して実行制御処理を行うことができる。
【0134】
また、本実施形態の情報処理装置10は、ソフトウェアを完全性の検証を行うタイミングは情報処理装置10の起動直後ではなく、不正に書き換えられた時やサービス提供終了後から装置電源切断の前までに行うため、完全性の検証処理によるオーバヘッドがソフトウェアの実行により提供されるサービスへの影響が少ないと考えられる。
【0135】
また、ホワイトリストL1を安全な実行環境に配置することにより、情報処理装置10の稼働時にホワイトリストL1の完全性について定期的な保証や確認する処理が不要となる。
【0136】
(補足説明)
上述した実施形態の情報処理装置10は、例えば、一般的なコンピュータを構成するハードウェアと、コンピュータで実行されるプログラム(ソフトウェア)との協働により実現することができる。ストレージ76上にあるOSイメージ等のソフトウェアは、セキュアブート等の手段により安全に起動することができる。上述の実施形態した実施形態の情報処理装置10は、ストレージ76などの記憶媒体に予めファームウェアとして格納されたプログラムを実行することによって実現することができる。
【0137】
図10は、通信解析装置10のハードウェア構成図である。図10に示すように、情報処理装置10はプロセッサ71、ROM72、RAM73、ストレージ76、通信装置77および各部を接続するバス79を備えており、一般的なコンピュータ(計算機システム)としてのハードウェア構成を採用することができる。
【0138】
プロセッサ71は、プログラムに従って処理(各部の制御およびデータの加工など)をする。プロセッサ71は、RAM73の所定領域を作業領域としてROM72およびストレージ76などに記憶されたプログラムとの協働により各種処理を実行する。
【0139】
ROM72は、装置で稼働予定のソフトウェアの現在バージョンのイメージを記憶する書き換えできないメモリである。
【0140】
RAM73は、SDRAM(Synchronous Dynamic Access Memory)などのメモリである。RAM73は、プロセッサ71による処理対象のデータなどを記憶し、プロセッサ71の作業領域として機能する。
【0141】
ストレージ76は、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)およびフラッシュメモリなどである。ストレージ76は、オペレーティングシステム、アプリケーションプログラムおよび機能部が使用するデータなどを記憶している。
【0142】
通信装置77は、ネットワークに接続するためのインターフェース装置である。通信装置77は、プロセッサ71からの制御に応じて外部の機器とネットワークを介して通信する。
【0143】
実施形態の情報処理装置で実行されるプログラムは、インストール可能な形式または実行可能な形式のファイルでCD-ROM、CD-R、メモリーカード、DVD(Digital Versatile Disk)、フレキシブルディスクなどのコンピュータで読み取り可能な記憶媒体に記憶されてコンピュータプログラムプロダクトとして提供されるようにしてもよい。
【0144】
また、実施形態の情報処理装置10で実行されるプログラムをインターネットなどのネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するようにしてもよい。また、実施形態の情報処理装置10で実行されるプログラムをインターネットなどのネットワーク経由で提供または配布するようにしてもよい。
【0145】
なお、上述の実施形態の情報処理装置10の各部は、その一部または全部が、ASIC(Application Specific Integrated Circuit)やFPGA(Field-Programmble Gate Array)などの専用のハードウェアにより実現される構成であってもよい。
【0146】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0147】
10・・・情報処理装置10
71・・・プロセッサ
72・・・ROM
73・・・RAM
76・・・ストレージ
77・・・通信装置
79・・・バス
101・・・フラグ複製部
102・・・フラグ反映部
103・・・書き換え処理部
104・・・正規ソフトウェア変更部
105・・・実行制御部
106・・・検証値照合部
107・・・検証値更新部
108・・・ホワイトリスト記憶部
109・・・フラグテーブル記憶部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10