[go: up one dir, main page]

JP6914899B2 - 情報処理装置、情報処理方法およびプログラム - Google Patents

情報処理装置、情報処理方法およびプログラム Download PDF

Info

Publication number
JP6914899B2
JP6914899B2 JP2018173750A JP2018173750A JP6914899B2 JP 6914899 B2 JP6914899 B2 JP 6914899B2 JP 2018173750 A JP2018173750 A JP 2018173750A JP 2018173750 A JP2018173750 A JP 2018173750A JP 6914899 B2 JP6914899 B2 JP 6914899B2
Authority
JP
Japan
Prior art keywords
software
execution
list
verification
registered
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018173750A
Other languages
English (en)
Other versions
JP2020046829A (ja
Inventor
慶啓 小松原
慶啓 小松原
真也 内匠
真也 内匠
嘉一 花谷
嘉一 花谷
遵 金井
遵 金井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2018173750A priority Critical patent/JP6914899B2/ja
Priority to US16/286,777 priority patent/US11132467B2/en
Publication of JP2020046829A publication Critical patent/JP2020046829A/ja
Application granted granted Critical
Publication of JP6914899B2 publication Critical patent/JP6914899B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Description

本発明の実施形態は、情報処理装置、情報処理方法およびプログラムに関する。
例えば、重要インフラの制御システムに対する攻撃事例の増加などに伴い、システム内で使用するソフトウェアを制限し、システムの安全性を保つことが求められている。システム内で使用するソフトウェアを制限する技術として、予め定められたソフトウェアの実行しか許可しないホワイトリスト型の実行制御技術がある。ホワイトリストは、システム内で使用するソフトウェアを予め登録したリストであり、実行が許可されたソフトウェアのファイル情報とそのソフトウェアのハッシュ値の組が格納されている。システム稼働時には、ソフトウェアの実行開始時にそのソフトウェアのハッシュ値を計算し、ホワイトリストに登録されたソフトウェアのハッシュ値(参照値)と照合することで完全性の検証を行い、検証に成功したソフトウェアのみ実行を許可することで、ソフトウェアの使用制限を実現している。ソフトウェアの完全性を検証する方法としては、ソフトウェアのハッシュ値を用いる方法以外にも、署名検証を行う方法なども提案されている。
従来のホワイトリスト型の実行制御技術では、ソフトウェアの実行開始時にそのソフトウェアのハッシュ値または署名を用いて完全性の検証を行うため、ソフトウェアの実行が開始されるたびに検証のための計算が発生する。このため、稼働中のシステムに処理の遅延が発生しやすく、改善が求められている。
特開2009−259160号公報 特開2014−48866号公報
本発明が解決しようとする課題は、ホワイトリスト型の実行制御において、ソフトウェアの実行開始に伴う遅延の発生を有効に抑制することができる情報処理装置、情報処理方法およびプログラムを提供することである。
実施形態の情報処理装置は、事前検証部と、実行制御部と、を備える。事前検証部は、ソフトウェアの実行開始に依存しないタイミングで、ホワイトリストに登録されたソフトウェアの完全性を検証し、検証に成功したソフトウェアを実行許可ソフトウェアとして登録した実行許可リストを生成する。実行制御部は、ソフトウェアの実行開始が検出されたときに、該ソフトウェアが実行許可ソフトウェアとして前記実行許可リストに登録されていれば、該ソフトウェアの実行を許可する。
情報処理装置の機能的な構成例を示すブロック図。 ホワイトリストの一例を示す図。 実行許可リストの一例を示す図。 事前検証部の処理手順の一例を示すフローチャート。 無効化部の処理手順の一例を示すフローチャート。 実行制御部の処理手順の一例を示すフローチャート。 ホワイトリストの一例を示す図。 要検証リストの一例を示す図。 事前検証部の処理手順の一例を示すフローチャート。 実行制御部の処理手順の一例を示すフローチャート。 実行許可リストの一例を示すフローチャート。 事前検証部の処理手順の一例を示すフローチャート。 無効化部の処理手順の一例を示すフローチャート。 実行制御部の処理手順の一例を示すフローチャート。 情報処理装置のハードウェア構成例を示すブロック図。
以下、添付図面を参照しながら、実施形態に係る情報処理装置、情報処理方法およびプログラムについて詳細に説明する。
<実施形態の概要>
本実施形態の情報処理装置は、様々な目的に応じて設計された各種のシステム内でホワイトリスト型の実行制御を行う機能モジュールとして実現される。従来のホワイトリスト型の実行制御では、ホワイトリストに登録されたソフトウェの実行開始時に、そのソフトウェアに対する完全性の検証を行い、検証に成功した場合にそのソフトウェアの実行を許可する。このため、稼働中のシステムに処理の遅延が発生しやすく、遅延が許されないシステムへの適用が困難であった。
これに対し、本実施形態の情報処理装置は、ソフトウェアの実行開始に依存しないタイミングで、ホワイトリストに登録されたソフトウェアの完全性を検証する。そして、検証に成功したソフトウェアを実行許可ソフトウェアとして登録した実行許可リストを生成し、システムの稼働中はこの実行許可リストを保持しておく。その後、ソフトウェアの実行開始が検出されると実行許可リストを参照し、そのソフトウェアが実行許可ソフトウェアとして実行許可リストに登録されていれば、そのソフトウェアの実行を許可する。
このように、本実施形態の情報処理装置は、ホワイトリスト型の実行制御において処理負荷が高く、遅延発生の要因となっていたソフトウェアに対する完全性の検証を事前に行っておき、ソフトウェアの実行開始時には実行許可リストを参照するのみでそのソフトウェアの実行可否を判断できるようにしている。したがって、ソフトウェアの実行開始に伴う遅延の発生を有効に抑制しつつ、ホワイトリスト型の実行制御によるシステムの安全性確保を実現することができる。
なお、本実施形態におけるソフトウェアは、主に、実行ファイルの形式で格納されるプログラムを想定するが、プログラムが参照するデータなどのファイルであってもよい。プログラムが参照するデータなどのファイルは、そのファイルの参照が、ソフトウェアの実行に相当する。
また、本実施形態におけるホワイトリストは、システム内での使用が許可されたソフトウェアを予め登録したリストであり、各エントリに、それらのソフトウェアのファイル情報とハッシュ値の組が格納されている。ここでファイル情報は、そのソフトウェアのファイルを識別可能な情報であり、例えば、そのファイルにアクセスする経路を示すファイルパスである。以下では、ソフトウェアのファイル情報がファイルパスであるものとして説明するが、ファイルを識別可能な他の情報、例えば、inode番号とデバイス番号の組み合わせなどを用いてもよい。なお、ホワイトリストや実行許可リストへのソフトウェアの登録とは、これらのリストのエントリに少なくともソフトウェアのファイル情報を格納することをいう。
<第1実施形態>
図1は、第1実施形態に係る情報処理装置10の機能的な構成例を示すブロック図である。本実施形態の情報処理装置10は、図1に示すように、事前検証部11と、書き換え検知部12と、無効化部13と、実行制御部14とを備える。
事前検証部11は、検証実行イベントが検出されると、ホワイトリストL1に登録されたソフトウェアに対する完全性の検証を行う。そして、事前検証部11は、検証に成功したソフトウェアを実行許可ソフトウェアとして登録した実行許可リストL2を生成する。
ここで、検証実行イベントは、ホワイトリストに登録されたソフトウェアに対する完全性の検証を行うタイミングを決めるイベントであり、予め定められる。例えば、本実施形態の情報処理装置10あるいは情報処理装置10を含むシステムの起動開始の処理や、特定のソフトウェアの起動開始、外部からの特定の信号の受信などを、検証実行イベントとして定めることができる。特定のソフトウェアは、例えばシステム管理者が任意のタイミングで実行する検証用ソフトウェアなどである。また、システムのメンテナンスモードなどの非定常動作への移行、ハードウェアリソースの使用量が低い(処理負荷が低い)ことが検知されたこと、ハードウェアリソースの使用量が低いことが想定される時間帯になったことなどを、検証実行イベントに定めてもよい。また、システム管理者が任意のタイミングで実行できる管理者コマンドを定めておき、この管理者コマンドの発行を検証実行イベントに定めてもよい。これらの検証実行イベントが検出されるタイミング、つまり事前検証部11がホワイトリストL1に登録されたソフトウェアに対する完全性の検証を行うタイミングは、システム稼働中のソフトウェアの実行開始に依存しないタイミングである。
図2は、ホワイトリストL1の一例を示す図である。ホワイトリストL1には、例えば図2に示すように、システム内での使用が許可されたソフトウェアごとに、そのソフトウェアのファイルパスとハッシュ値の組が格納される。ハッシュ値は事前に計算された値であり、ソフトウェアの完全性を検証する際の参照値として利用される。ホワイトリストL1は、例えばファイルとしてストレージ装置に格納され、事前検証部11により読み出される。
事前検証部11は、ホワイトリストL1に登録されたソフトウェアのファイルパスに基づいてファイルを取得し、取得したファイルからハッシュ値を計算する。そして、計算したハッシュ値がホワイトリストL1のハッシュ値と一致する場合(つまり、完全性の検証に成功した場合)に、そのソフトウェアを実行許可ソフトウェアとして、実行許可リストL2に登録する。
図3は、実行許可リストL2の一例を示す図である。実行許可リストL2には、例えば図3に示すように、事前検証部11による完全性の検証に成功したソフトウェアのファイルパスが格納される。本実施形態では、実行許可リストL2にファイルパスが格納されたソフトウェアが、実行許可ソフトウェアとして実行許可リストL2に登録されたソフトウェアである。実行許可リストL2は、例えばRAMなどに保持される。
書き換え検知部12は、ソフトウェアの書き換えを検知する。ソフトウェアの書き換えは、例えば、ファイルへの書き込みなどを監視することによって検知できる。
無効化部13は、書き換え検知部12によってソフトウェアの書き換えが検知された場合に、そのソフトウェアが実行許可ソフトウェアとして実行許可リストL2に登録されているか否かを確認する。そして、書き換えが検知されたソフトウェアが実行許可ソフトウェアとして実行許可リストL2に登録されている場合に、そのソフトウェアの実行許可ソフトウェアとしての登録を無効化する。
実行許可ソフトウェアとしての登録の無効化は、例えば、実行許可リストL2からそのソフトウェアのファイルパスが格納されたエントリを削除すればよい。また、実行許可リストL2の各エントリに登録の有効/無効を示すフラグを付加しておき、そのフラグを有効値(例えば「1」)から無効値(例えば「0」)に書き換えることにより、実行許可ソフトウェアとしての登録を無効化するようにしてもよい。
また、実行許可ソフトウェアとしての登録の無効化にフラグを用いるとき、事前検証部11による完全性の検証に失敗したソフトウェアもフラグを無効値に設定した上で実行許可リストL2に登録するようにしてもよい。さらに、事前検証部11は、検証実行イベントの検出時にホワイトリストL1の全エントリについてフラグを無効値に設定した上で実行許可リストL2に登録するようにしてもよい。また、ホワイトリストL1の各エントリに無効値に設定したフラグを追加し、事前検証部11は検証実行イベント検出時にホワイトリストL1を複製することで実行許可リストL2を作成してもよい。
実行許可ソフトウェアとしての登録の無効化に用いるフラグには、ソフトウェアの実行を検証せずに実行禁止を行うことを表す値、ソフトウェアの検証に成功した場合でもフラグを有効値としないことを表す値を設定可能にしてもよい。また、無効化部13は、ソフトウェアの書き換えを検知した場合、書き換えが検知されたソフトウェアのエントリに付与されたフラグを、ソフトウェアの実行を検証せずに実行禁止を行うことを表す値、ソフトウェアの検証に成功した場合でもフラグを有効値としないことを表す値に変更してもよい。
実行制御部14は、ソフトウェアの実行開始が検出されたときに、そのソフトウェアが実行許可ソフトウェアとして実行許可リストL2に登録されているか否かに基づいて、そのソフトウェアの実行を制御する。例えば、実行制御部14は、実行開始が検出されたソフトウェアのファイルパスを抽出し、そのファイルパスが実行許可リストL2に格納されたいずれかのファイルパスと一致する場合(上述のフラグが付加されている場合は、さらにフラグの値が有効値の場合)、実行開始が検出されたソフトウェアの実行を許可する。一方、実行開始が検出されたソフトウェアから抽出されたファイルパスが実行許可リストL2内のいずれのファイルパスとも一致しない場合は、そのソフトウェアの実行を拒否する。実行開始が検出されたソフトウェアの実行を拒否する場合、実行制御部14は、異常の発生を示すアラートを出力することが望ましい。
なお、実行開始が検出されたソフトウェアが実行許可ソフトウェアとして実行許可リストL2に登録されていない場合や、前記フラグが無効値に設定されて登録されている場合、実行制御部14は、事前検証部11と同様の方法によりそのソフトウェアに対する完全性の検証を行い、検証に成功した場合にそのソフトウェアの実行を許可するようにしてもよい。また、このとき、検証に成功したソフトウェアを実行許可ソフトウェアとして実行許可リストL2に登録してもよい。
また、実行開始が検出されたソフトウェアが実行許可ソフトウェアとして実行許可リストL2に登録されていない場合、実行制御部14は、異常の発生を示すアラートを出力し、システムの機能の一部に制限を加えた異常モードに移行した上で、そのソフトウェアの実行を許可するようにしてもよい。また、このとき、システム管理者による所定操作に応じて異常モードを通常モードに復帰させるようにしてもよいし、システム管理者による所定操作を条件として、実行開始が検出されたソフトウェアの実行を許可するようにしてもよい。
以下では、図4乃至図6のフローチャートを参照しながら、本実施形態の情報処理装置10による動作の具体例を説明する。
まず、図4を参照して、事前検証部11による処理について説明する。図4は、事前検証部11の処理手順の一例を示すフローチャートである。この図4のフローチャートで示す一連の処理は、上述の検証実行イベントが検出されるたびに実行される。
検証実行イベントが検出されると、事前検証部11は、まず、実行許可ソフトウェアが何も登録されていない空の実行許可リストL2を用意する(ステップS101)。
次に、事前検証部11は、ホワイトリストL1に登録されているソフトウェアのファイルパスを参照して、そのソフトウェアのファイルを取得する(ステップS102)。そして、事前検証部11は、ステップS102で取得したファイルをもとにそのソフトウェアのハッシュ値を計算する(ステップS103)。
次に、事前検証部11は、ステップS103で計算したハッシュ値をホワイトリストL1のハッシュ値と照合し、両者が一致しているか否かを判定する(ステップS104)。ここで、ステップS103で計算したハッシュ値がホワイトリストL1のハッシュ値と一致する場合(ステップS104:Yes)、事前検証部11は、そのソフトウェアのファイルパスを実行許可リストL2に追加し(ステップS105)、次のステップS106に進む。一方、ステップS103で計算したハッシュ値がホワイトリストL1のハッシュ値と一致しない場合は(ステップS104:No)、そのままステップS106に進む。
次に、事前検証部11は、ホワイトリストL1に登録されているソフトウェアが他にあるかどうかを確認する(ステップS106)。ここで、ホワイトリストL1に登録されているソフトウェアが他にある場合は(ステップS106:Yes)、ステップS102に戻って以降の処理が繰り返される。そして、ホワイトリストL1に登録されているソフトウェアの全てに対してステップS102以降の処理を行うと(ステップS106:No)、一連の処理が終了する。
次に、図5を参照して、無効化部13による処理について説明する。図5は、無効化部13の処理手順の一例を示すフローチャートである。この図5のフローチャートで示す処理は、書き換え検知部12によってソフトウェアの書き換えが検知されるたびに実行される。
書き換え検知部12によりソフトウェアの書き換えが検知されると、無効化部13は、まず、書き換えが検知されたソフトウェアのファイルパスを抽出する(ステップS201)。
次に、無効化部13は、実行許可リストL2を参照し、ステップS201で抽出したファイルパスが実行許可リストL2内のいずれかのファイルパスと一致するか否かを判定する(ステップS202)。そして、ステップS201で抽出したファイルパスが実行許可リストL2内のいずれかのファイルパスと一致する場合(ステップS202:Yes)、一致するファイルパスを実行許可リストL2から削除する(ステップS203)。これにより、書き換えが検知されたソフトウェアの実行許可ソフトウェアとしての登録が無効化される。
次に、図6を参照して、実行制御部14による処理について説明する。図6は、実行制御部14の処理手順の一例を示すフローチャートである。この図6のフローチャートで示す処理は、ソフトウェアの実行開始が検出されるたびに実行される。
ソフトウェアの実行開始が検出されると、実行制御部14は、まず、そのソフトウェアの実行を一時停止し(ステップS301)、そのソフトウェアのファイルパスを抽出する(ステップS302)。
次に、実行制御部14は、実行許可リストL2を参照し、ステップS302で抽出したファイルパスが実行許可リストL2内のいずれかのファイルパスと一致するか否かを判定する(ステップS303)。そして、ステップS302で抽出したファイルパスが実行許可リストL2内のいずれかのファイルパスと一致する場合(ステップS303:Yes)、実行制御部14は、そのソフトウェアの実行を許可し、ステップS301で一時停止したソフトウェアの実行を再開させる(ステップS304)。一方、ステップS302で抽出したファイルパスが実行許可リストL2内のファイルパスと一致しない場合(ステップS304:No)、実行制御部14は、そのソフトウェアの実行を拒否し(ステップS305)、例えばアラートの出力などを行う。なお、前述のとおり、ステップS305は、一時停止したソフトウェアに対する完全性の検証を行い、検証に成功した場合にそのソフトウェアの実行を許可する処理などの別の処理に置き換えられてもよい。
以上、具体的な例を挙げながら詳細に説明したように、本実施形態の情報処理装置10は、検証実行イベントが検出されたタイミング、つまりソフトウェアの実行開始に依存しないタイミングで、ホワイトリストL1に登録されたソフトウェアの完全性を検証し、検証に成功したソフトウェアを実行許可ソフトウェアとして実行許可リストL2に登録する。そして、ソフトウェアの実行開始が検出されたときは、実行許可リストL2を参照し、実行開始が検出されたソフトウェアが実行許可ソフトウェアとして実行許可リストL2に登録されていれば、そのソフトウェアの実行を許可する。このように、本実施形態の情報処理装置10は、処理負荷が大きいソフトウェアに対する完全性の検証をソフトウェアの実行開始に依存しないタイミングで行っておき、ソフトウェアの実行開始時には実行許可リストL2を参照するのみでソフトウェアの実行を許可するか否かを判断できるようにしている。したがって、ソフトウェアの実行開始に伴う遅延の発生を有効に抑制しつつ、ホワイトリスト型の実行制御によるシステムの安全性確保を実現することができる。
また、本実施形態の情報処理装置10は、書き換えが検知されたソフトウェアが実行許可ソフトウェアとして実行許可リストL2に登録されている場合は、そのソフトウェアの実行許可ソフトウェアとしての登録を無効化するようにしているので、ホワイトリストL1に登録されたソフトウェアに対して不正な書き換えなどが発生した場合に、そのソフトウェアの実行が許可されてしまうことを有効に防止することができる。
<第2実施形態>
次に、第2実施形態について説明する。上述の第1実施形態では、ホワイトリストL1に登録された全てのソフトウェアに対して事前検証部11が完全性の検証を行っていたが、本実施形態では、ホワイトリストL1’に登録された一部のソフトウェアに対してのみ、事前検証部11による完全性の検証を行う。そして、ホワイトリストL1’に登録されたソフトウェアのうち、事前検証部11による完全性の検証が行われないソフトウェアについては、そのソフトウェアの実行開始が検出されたときに、実行制御部14が、事前検証部11と同様の方法により完全性の検証を行う。
なお、情報処理装置10の基本的な構成は第1実施形態と同様である。また、書き換え検知部12および無効化部13の処理は第1実施形態と同様である。以下では、第1実施形態と重複する説明は適宜省略し、本実施形態に特徴的な点についてのみ説明する。
図7は、本実施形態におけるホワイトリストL1’の一例を示す図である。この図7に示すホワイトリストL1’は、図2に示したホワイトリストL1と比較して、各エントリに事前検証フラグが付加されている点が異なる。事前検証フラグは、事前検証部11による完全性の検証を行うか否かを示すフラグであり、有効値(例えば「1」)であれば事前検証部11による完全性の検証を行い、無効値(例えば「0」)であれば事前検証部11による完全性の検証を行わないことを示している。
なお、ホワイトリストL1’は、事前検証フラグが有効値のホワイトリストと事前検証フラグが無効値のホワイトリストとに分割してもよい。この場合、分割したホワイトリストにより、事前検証フラグの有効値・無効値を識別できる。このため、これらの分割されたホワイトリストは、事前検証フラグを持たなくてもよい。さらに、事前検証フラグは、ホワイトリストL1’ではなく、各エントリに記載されたソフトウェアが持つinode拡張属性などのファイルメタ情報に格納してもよい。
事前検証部11による完全性の検証を行うソフトウェアは、例えばシステム管理者などが任意に決定することができる。例えば、ホワイトリストL1’に登録されたソフトウェアのうち、実行頻度が高いソフトウェア、ファイルサイズが大きいソフトウェア、緊急性の高い処理を行うソフトウェア(実行時の遅延を抑制することが望まれるソフトウェア)などを、事前検証部11による完全性の検証を行うソフトウェアとして決定するとよい。また、事前検証部11は事前検証フラグではなく、取得したソフトウェアの実行頻度やファイルサイズなどに基づいて動的に事前検証を行うか決定してもよい。
本実施形態の事前検証部11は、検証実行イベントが検出されると、ホワイトリストL1’に登録されたソフトウェアのうち、事前検証フラグが有効値とされているソフトウェアを対象として、上述の第1実施形態と同様の方法により完全性の検証を行う。そして、第1実施形態と同様に、検証に成功したソフトウェアを実行許可ソフトウェアとして登録した実行許可リストL2(図3参照)を生成する。また、本実施形態の事前検証部11は、ホワイトリストL1’に登録されたソフトウェアのうち、事前検証フラグが無効値とされているソフトウェアを登録した要検証リストL3を生成する。
図8は、要検証リストL3の一例を示す図である。要検証リストL3には、例えば図8に示すように、ホワイトリストL1’に登録されたソフトウェアのうち、事前検証部11による完全性の検証が行われていないソフトウェア(事前検証フラグが無効値のソフトウェア)のファイルパスとハッシュ値の組が格納される。要検証リストL3は、例えばRAMなどに保持される。
本実施形態の実行制御部14は、ソフトウェアの実行開始が検出されたときに、第1実施形態と同様に、実行許可リストL2を参照し、実行開始が検出されたソフトウェアが実行許可ソフトウェアとして実行許可リストL2に登録されていれば、そのソフトウェアの実行を許可する。実行開始が検出されたソフトウェアが実行許可リストL2に登録されていない場合、本実施形態の実行制御部14は、次に要検証リストL3を参照し、実行開始が検出されたソフトウェアが要検証リストL3に登録されているかを確認する。そして、実行開始が検出されたソフトウェアが要検証リストL3に登録されていれば、事前検証部11と同様の方法によりそのソフトウェアに対する完全性の検証を行い、検証に合格した場合にそのソフトウェアを実行許可ソフトウェアとして実行許可リストL2に登録するとともに、そのソフトウェアの実行を許可する。
また、本実施形態の実行制御部14は、実行開始が検出されたソフトウェアが要検証リストL3に登録されていない場合や、要検証リストL3に登録されているが完全性の検証に失敗した場合は、そのソフトウェアの実行を拒否する。また、上述の第1実施形態と同様に、ソフトウェアの実行を拒否する代わりに、異常の発生を示すアラートを出力し、システムの機能の一部に制限を加えた異常モードに移行した上で、そのソフトウェアの実行を許可するようにしてもよい。また、このとき、システム管理者による所定操作に応じて異常モードを通常モードに復帰させるようにしてもよいし、システム管理者による所定操作を条件として、実行開始が検出されたソフトウェアの実行を許可するようにしてもよい。
なお、本実施形態では、ホワイトリストL1’に登録されたソフトウェアのうち、事前検証フラグが無効値とされているソフトウェアを要検証リストL3に登録するようにしているが、事前検証部11による完全性の検証に失敗したソフトウェアも要検証リストL3に登録するようにしてもよい。この場合、事前検証部11による完全性の検証に失敗したソフトウェアの実行開始が検出されたときに、実行制御部14が、そのソフトウェアに対する完全性の検証を再度行って、検証に成功した場合はそのソフトウェアの実行を許可する。
以下では、図9および図10のフローチャートを参照しながら、本実施形態の情報処理装置10による動作の具体例を説明する。
まず、図9を参照して、本実施形態の事前検証部11による処理について説明する。図9は、本実施形態の事前検証部11の処理手順の一例を示すフローチャートである。この図9のフローチャートで示す一連の処理は、上述の検証実行イベントが検出されるたびに実行される。
検証実行イベントが検出されると、事前検証部11は、まず、実行許可ソフトウェアが何も登録されていない空の実行許可リストL2と、空の要検証リストL3とを用意する(ステップS401)。
次に、事前検証部11は、ホワイトリストL1’のエントリを1つ選び、そのエントリに付加されている事前検証フラグが有効値か否かを確認する(ステップS402)。ここで、事前検証フラグが有効値であれば(ステップS402:Yes)、事前検証部11は、そのエントリに登録されているソフトウェアのファイルパスを参照して、ソフトウェアのファイルを取得する(ステップS403)。そして、事前検証部11は、ステップS403で取得したファイルをもとにそのソフトウェアのハッシュ値を計算する(ステップS404)。
次に、事前検証部11は、ステップS404で計算したハッシュ値をホワイトリストL1’のハッシュ値と照合し、両者が一致しているか否かを判定する(ステップS405)。ここで、ステップS404で計算したハッシュ値がホワイトリストL1’のハッシュ値と一致する場合(ステップS405:Yes)、事前検証部11は、そのソフトウェアのファイルパスを実行許可リストL2に追加し(ステップS405)、ステップS408に進む。一方、ステップS404で計算したハッシュ値がホワイトリストL1’のハッシュ値と一致しない場合は(ステップS405:No)、そのままステップS408に進む。
また、ステップS402で選んだエントリに付加されている事前検証フラグが無効値であれば(ステップS402:No)、事前検証部11は、そのエントリに登録されているソフトウェアのファイルパスとハッシュ値の組を要検証リストL3に追加して(ステップ407)、ステップS408に進む。
次に、事前検証部11は、ホワイトリストL1’に登録されているソフトウェアが他にあるかどうかを確認する(ステップS408)。ここで、ホワイトリストL1’に登録されているソフトウェアが他にある場合は(ステップS408:Yes)、ステップS402に戻って以降の処理が繰り返される。そして、ホワイトリストL1’に登録されているソフトウェアの全てに対してステップS402以降の処理を行うと(ステップS408:No)、一連の処理が終了する。
次に、図10を参照して、本実施形態の実行制御部14による処理について説明する。図10は、本実施形態の実行制御部14の処理手順の一例を示すフローチャートである。この図10のフローチャートで示す一連の処理は、ソフトウェアの実行開始が検出されるたびに実行される。
ソフトウェアの実行開始が検出されると、実行制御部14は、まず、そのソフトウェアの実行を一時停止し(ステップS501)、そのソフトウェアのファイルパスを抽出する(ステップS502)。
次に、実行制御部14は、実行許可リストL2を参照し、ステップS502で抽出したファイルパスが実行許可リストL2内のいずれかのファイルパスと一致するか否かを判定する(ステップS503)。そして、ステップS502で抽出したファイルパスが実行許可リストL2内のいずれかのファイルパスと一致する場合(ステップS503:Yes)、実行制御部14は、そのソフトウェアの実行を許可し、ステップS501で一時停止したソフトウェアの実行を再開させる(ステップS504)。
一方、ステップS502で抽出したファイルパスが実行許可リストL2内のファイルパスと一致しない場合(ステップS504:No)、実行制御部14は、次に要検証リストL3を参照し、ステップS502で抽出したファイルパスが要検証リストL3内のいずれかのファイルパスと一致するか否かを判定する(ステップS505)。そして、ステップS502で抽出したファイルパスが要検証リストL3内のいずれかのファイルパスと一致する場合(ステップS505:Yes)、実行制御部14は、実行開始が検出されたソフトウェアのハッシュ値を計算する(ステップS506)。
次に、実行制御部14は、ステップS506で計算したハッシュ値を要検証リストL3のハッシュ値と照合し、両者が一致しているか否かを判定する(ステップS507)。ここで、ステップS506で計算したハッシュ値が要検証リストL3のハッシュ値と一致する場合(ステップS507:Yes)、実行制御部14は、ステップS502で抽出したファイルパスを実行許可リストL2に追加した後(ステップS508)、ステップS504に進み、そのソフトウェアの実行を許可して、ステップS501で一時停止したソフトウェアの実行を再開させる。
一方、ステップS506で計算したハッシュ値が要検証リストL3のハッシュ値と一致しない場合は(ステップS507:No)、実行制御部14は、そのソフトウェアの実行を拒否し(ステップS509)、例えばアラートの出力などを行う。また、ステップS502で抽出したファイルパスが実行許可リストL2内のファイルパスと一致せず、要検証リストL3内のファイルパスとも一致しない場合(ステップS505:No)も同様に、事前検証部11は、そのソフトウェアの実行を拒否し、例えばアラートの出力などを行う。
以上説明したように、本実施形態の情報処理装置10は、ホワイトリストL1’に登録されたソフトウェアのうち、例えば実行頻度が高いソフトウェア、ファイルサイズが大きいソフトウェア、緊急性の高い処理を行うソフトウェアなど、予め定めた一部のソフトウェアのみを対象として、事前検証部11による完全性の検証を行うようにしている。したがって、検証実行イベントが検出されたときの処理負荷を低減し、実行許可リストL2を短時間で生成することができる。
なお、以上の説明では、事前検証部11による検証の対象となるソフトウェアを、ホワイトリストL1’の各エントリに付加された要検証フラグの値により識別するものとしたが、これに限らない。例えば、ホワイトリストL1’を、事前検証部11による検証の対象となるソフトウェアが登録された第1リストと、事前検証部11による検証の対象とならないソフトウェアが登録された第2リストとに分け、事前検証部11は、検証実行イベントが検出されたときに、第1リストに登録されているソフトウェアを対象として完全性の検証を行うようにしてもよい。この場合、要検証リストL3は、第2リストをそのまま複製することで容易に生成できる。
<第3実施形態>
次に、第3実施形態について説明する。本実施形態では、上述の第2実施形態と同様にホワイトリストL1’に登録された一部のソフトウェアに対してのみ、事前検証部11による完全性の検証を行うが、事前検証部11による完全性の検証を行っていないソフトウェアを、実行許可リストL2に付加されたフラグの値により識別する点が異なる。なお、情報処理装置10の基本的な構成は第1実施形態および第2実施形態と同様である。以下では、第1実施形態や第2実施形態と重複する説明は適宜省略し、本実施形態に特徴的な点についてのみ説明する。
図11は、本実施形態における実行許可リストL2’の一例を示す図である。この図11に示す実行許可リストL2’には、ホワイトリストL1に登録されたソフトウェアごとに、そのソフトウェアのファイルパスとハッシュ値の組と検証済みフラグの値が格納される。検証済みフラグは、完全性の検証が完了しているか否かを示すフラグであり、有効値(例えば「1」)であれば完全性の検証が完了(検証に合格)していることを示し、無効値(例えば「0」)であれば完全性の検証が完了していないことを示している。本実施形態では、実行許可リストL2’内のソフトウェアのうち、検証済みフラグの値が有効値のソフトウェアが、実行許可ソフトウェアとして登録されたソフトウェアである。
図11に示す実行許可リストL2’は、図7に示したホワイトリストL1’と同じ形式であるため、ホワイトリストL1’を複製してフラグを操作することにより、実行許可リストL2’を生成することができる。すなわち、ホワイトリストL1’を複製し、ホワイトリストL1’における事前検証フラグを検証済みフラグに置き換える(事前検証フラグを検証済みフラグとみなす)ことにより、初期状態の実行許可リストL2’を生成する。そして、事前検証部11による完全性の検証に失敗したソフトウェアに対応する検証済みフラグの値を有効値から無効値に書き換えることで、事前検証部11による処理を反映した実行許可リストL2’を生成できる。
本実施形態の事前検証部11は、検証実行イベントが検出されると、まず、ホワイトリストL1’を複製し、ホワイトリストL1’における事前検証フラグを検証済みフラグに置き換えることにより、初期状態の実行許可リストL2’を生成する。その後、事前検証部11は、ホワイトリストL1’に登録されたソフトウェアのうち、事前検証フラグが有効値とされているソフトウェアを対象として、上述の第1実施形態と同様の方法により完全性の検証を行う。そして、初期状態の実行許可リストL2’内の検証済みフラグを有効値から無効値に書き換えることにより、図11に示した実行許可リストL2’を生成する。
本実施形態の無効化部13は、書き換え検知部12によってソフトウェアの書き換えが検知された場合に、そのソフトウェアが実行許可ソフトウェアとして実行許可リストL2’に登録されたソフトウェア、つまり、検証済みフラグの値が有効値のソフトウェアか否かを確認する。そして、書き換えが検知されたソフトウェアが実行許可ソフトウェアとして実行許可リストL2’に登録されている場合に、そのソフトウェアの検証済みフラグの値を有効値から無効値に書き換えることにより、実行許可ソフトウェアとしての登録を無効化する。
本実施形態の実行制御部14は、ソフトウェアの実行開始が検出されたときに、実行許可リストL2’を参照し、実行開始が検出されたソフトウェアが実行許可ソフトウェアとして実行許可リストL2’に登録されていれば、つまり、実行開始が検出されたソフトウェアが実行許可リストL2’内に存在し、かつ、検証済みフラグの値が有効値であれば、そのソフトウェアの実行を許可する。また、実行制御部14は、実行開始が検出されたソフトウェアが実行許可リストL2’内に存在するが、検証済みフラグの値が無効値の場合は、事前検証部11と同様の方法によりそのソフトウェアに対する完全性の検証を行い、検証に合格した場合に、検証済みフラグの値を無効値から有効値に書き換えるとともに、そのソフトウェアの実行を許可する。
また、本実施形態の実行制御部14は、実行開始が検出されたソフトウェアが実行許可リストL2’内に存在しない場合や、実行許可リストL2’内に存在に存在するが検証済みフラグの値が無効値であるために完全性の検証を行った結果、検証に失敗した場合は、そのソフトウェアの実行を拒否する。また、上述の第1実施形態と同様に、ソフトウェアの実行を拒否する代わりに、異常の発生を示すアラートを出力し、システムの機能の一部に制限を加えた異常モードに移行した上で、そのソフトウェアの実行を許可するようにしてもよい。また、このとき、システム管理者による所定操作に応じて異常モードを通常モードに復帰させるようにしてもよいし、システム管理者による所定操作を条件として、実行開始が検出されたソフトウェアの実行を許可するようにしてもよい。
以下では、図12乃至図14のフローチャートを参照しながら、本実施形態の情報処理装置10による動作の具体例を説明する。
まず、図12を参照して、本実施形態の事前検証部11による処理について説明する。図12は、本実施形態の事前検証部11の処理手順の一例を示すフローチャートである。この図12のフローチャートで示す一連の処理は、上述の検証実行イベントが検出されるたびに実行される。
検証実行イベントが検出されると、事前検証部11は、まず、ホワイトリストL1’を複製し、ホワイトリストL1’における事前検証フラグを検証済みフラグに置き換えることにより、初期状態の実行許可リストL2’を生成する(ステップS601)。
次に、事前検証部11は、ホワイトリストL1’のエントリを1つ選び、そのエントリに付加されている事前検証フラグが有効値か否かを確認する(ステップS602)。ここで、事前検証フラグが有効値であれば(ステップS602:Yes)、事前検証部11は、そのエントリに登録されているソフトウェアのファイルパスを参照して、ソフトウェアのファイルを取得する(ステップS603)。そして、事前検証部11は、ステップS603で取得したファイルをもとにそのソフトウェアのハッシュ値を計算する(ステップS604)。
次に、事前検証部11は、ステップS604で計算したハッシュ値をホワイトリストL1’のハッシュ値と照合し、両者が一致しているか否かを判定する(ステップS605)。ここで、ステップS604で計算したハッシュ値がホワイトリストL1’のハッシュ値と一致しない場合(ステップS605:No)、事前検証部11は、実行許可リストL2’における対応するエントリの検証済みフラグを有効値から無効値に書き換えて(ステップS606)、ステップS607に進む。一方、ステップS604で計算したハッシュ値がホワイトリストL1’のハッシュ値と一致する場合は(ステップS605:Yes)、そのままステップS607に進む。
次に、事前検証部11は、ホワイトリストL1’に登録されているソフトウェアが他にあるかどうかを確認する(ステップS607)。ここで、ホワイトリストL1’に登録されているソフトウェアが他にある場合は(ステップS607:Yes)、ステップS602に戻って以降の処理が繰り返される。そして、ホワイトリストL1’に登録されているソフトウェアの全てに対してステップS602以降の処理を行うと(ステップS607:No)、一連の処理が終了する。
次に、図13を参照して、本実施形態の無効化部13による処理について説明する。図13は、無効化部13の処理手順の一例を示すフローチャートである。この図13のフローチャートで示す処理は、書き換え検知部12によってソフトウェアの書き換えが検知されるたびに実行される。
書き換え検知部12によりソフトウェアの書き換えが検知されると、無効化部13は、まず、書き換えが検知されたソフトウェアのファイルパスを抽出する(ステップS701)。
次に、無効化部13は、実行許可リストL2’を参照し、ステップS701で抽出したファイルパスが実行許可リストL2’内のいずれかのファイルパスと一致するか否かを判定する(ステップS702)。そして、ステップS701で抽出したファイルパスが実行許可リストL2’内のいずれかのファイルパスと一致する場合(ステップS702:Yes)、無効化部13は、そのファイルパスが格納されたエントリの検証済みフラグが有効値か否かを確認し(ステップS703)、検証済みフラグが有効値であれば(ステップS703:Yes)、検証済みフラグを有効値から無効値に書き換える(ステップS704)。これにより、書き換えが検知されたソフトウェアの実行許可ソフトウェアとしての登録が無効化される。
次に、図14を参照して、本実施形態の実行制御部14による処理について説明する。図14は、本実施形態の実行制御部14の処理手順の一例を示すフローチャートである。この図14のフローチャートで示す一連の処理は、ソフトウェアの実行開始が検出されるたびに実行される。
ソフトウェアの実行開始が検出されると、実行制御部14は、まず、そのソフトウェアの実行を一時停止し(ステップS801)、そのソフトウェアのファイルパスを抽出する(ステップS802)。
次に、実行制御部14は、実行許可リストL2’を参照し、ステップS802で抽出したファイルパスが実行許可リストL2’内のいずれかのファイルパスと一致するか否かを判定する(ステップS803)。そして、ステップS802で抽出したファイルパスが実行許可リストL2’内のいずれかのファイルパスと一致する場合(ステップS803:Yes)、実行制御部14は、そのファイルパスが格納されたエントリの検証済みフラグが有効値か否かを確認し(ステップS804)、検証済みフラグが有効値であれば(ステップS804:Yes)、そのソフトウェアの実行を許可し、ステップS801で一時停止したソフトウェアの実行を再開させる(ステップS805)。
一方、検証済みフラグが無効値の場合は(ステップS804:No)、実行制御部14は、実行開始が検出されたソフトウェアのハッシュ値を計算する(ステップS806)。そして、実行制御部14は、ステップS806で計算したハッシュ値を実行許可リストL2’のハッシュ値と照合し、両者が一致しているか否かを判定する(ステップS807)。ここで、ステップS806で計算したハッシュ値が実行許可リストL2’のハッシュ値と一致する場合(ステップS807:Yes)、実行制御部14は、そのソフトウェアに対応するエントリの検証済みフラグを無効値から有効値に書き換えた後(ステップS808)、ステップS805に進み、そのソフトウェアの実行を許可して、ステップS801で一時停止したソフトウェアの実行を再開させる。
一方、ステップS806で計算したハッシュ値が実行許可リストL2’のハッシュ値と一致しない場合は(ステップS807:No)、実行制御部14は、そのソフトウェアの実行を拒否し(ステップS809)、例えばアラートの出力などを行う。また、ステップS802で抽出したファイルパスが実行許可リストL2’内のファイルパスと一致しない場合(ステップS803:No)も同様に、実行制御部14は、そのソフトウェアの実行を拒否し、例えばアラートの出力などを行う。
以上説明したように、本実施形態の情報処理装置10は、ホワイトリストL1’を複製してフラグを操作することにより実行許可リストL2’を生成し、実行許可リストL2’のフラグの値により、事前検証部11による完全性の検証を行っていないソフトウェアを識別するようにしている。したがって、実行許可リストL2’の生成をより簡便に行うことができるとともに、事前検証部11による完全性の検証を行っていないソフトウェアの識別もより簡便に行うことができる。
なお、以上の説明では、実行許可リストL2’の各エントリに付加された検証済みフラグが有効値と無効値の2値を取るものとしたが、有効値と無効値以外に実行不可値を定義してもよい。そして、事前検証部11による完全性の検証に失敗したソフトウェア、実行制御部14による完全性の検証に失敗したソフトウェア、無効化部13により実行許可ソフトウェアとしての登録を無効化するソフトウェアの少なくともいずれかについて、検証済みフラグの値を実行不可値とし、検証済みフラグが実行不可値のソフトウェアは実行制御部14が実行を許可しない構成としてもよい。
この場合、ホワイトリストL1’の事前検証フラグに対して余剰ビットを含めて2ビットを割当てておくことで、上述の例と同様に、ホワイトリストL1’を複製して事前検証フラグを検証済みフラグに置き換えることで、初期状態の実行許可リストL2’を生成することができる。
<変形例1>
上述の各実施形態は、検証実行イベントが検出された場合に、ホワイトリストL1(L1’)に登録された少なくとも一部のソフトウェアに対して完全性の検証を行い、検証に合格したソフトウェアを実行許可ソフトウェアとして実行許可リストL2(L2’)に登録しておくことで、ソフトウェアの実行開始時にそのソフトウェアの実行可否を判断する処理負荷を低減させている。ここで、ソフトウェアの完全性を検証する処理においては、ソフトウェアのハッシュ値を計算する処理の負荷が特に高く、ハッシュ値の照合はさほど負荷がかからない。したがって、検証実行イベントが検出された場合に、つまり、ソフトウェアの実行開始に依存しないタイミングで、ホワイトリストL1(L1’)に登録された少なくとも一部のソフトウェアに対するハッシュ値の計算のみを行って、計算したハッシュ値を保持ハッシュ値リストを生成しておき、ソフトウェアの実行開始時には、そのソフトウェアに対応して保持されたハッシュ値(事前に計算されたハッシュ値リストのハッシュ値)をホワイトリストL1(L1’)のハッシュ値と照合し、両者が一致する場合にそのソフトウェアの実行を許可する構成としてもよい。
<変形例2>
上述の各実施形態は、検証実行イベントが検出された場合に、ホワイトリストL1(L1’)に登録された少なくとも一部のソフトウェアに対して完全性の検証を行い、検証に合格したソフトウェアを実行許可ソフトウェアとして実行許可リストL2(L2’)に登録しておくことで、ソフトウェアの実行開始時にそのソフトウェアの実行可否を判断する処理負荷を低減させている。ここで、検証実行イベントが検知された後、事前検証部11が実行許可リストL2(L2’)を作成中に何らかのソフトウェアの実行開始が検出された場合、実行開始が検出されたソフトウェアに対する実行制御を優先してもよい。
例えば、事前検証部11および実行制御部14が参照可能な情報として、新たに事前検査情報を設ける。これは事前検証部11による事前検証中は有効値、検証中でない場合は無効値を取るフラグであり、事前検証部11が検証実行イベントを検出した際に有効値に設定し、事前検証終了後や事前検証部11の起動時には無効値に設定するものとする。ソフトウェアの実行開始が検出された場合、実行制御部14は、事前検査情報を参照することで現在の状態が事前検証部11による検証中であるかどうかを判定し、検証中である場合は事前検証部11の検証処理を中断した上で、実行許可リストL2(L2’)の登録状態に依らず、実行ファイルのハッシュ値計算およびホワイトリストL1(L1’)(第3実施形態3の場合は実行許可リストL2’)を参照したハッシュ値の照合に基づく実行制御を行い、その後、事前検証部11での検証を再開させることにより、実行開始が検出されたソフトウェアの実行制御を優先することができる。
<補足説明>
上述の各実施形態の情報処理装置10は、例えば、一般的なコンピュータを構成するハードウェアと、コンピュータで実行されるプログラム(ソフトウェア)との協働により実現することができる。上述の各実施形態で説明した情報処理装置10の機能は、例えば、コンピュータが、ROM(Read Only Memory)などの不揮発メモリに予めファームウェアとして格納されたプログラムを実行することによって実現することができる。
図15は、情報処理装置10のハードウェア構成例を示すブロック図である。情報処理装置10は、例えば図15に示すように、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)などのプロセッサ回路101と、RAM(Random Access Memory)やROMなどのメモリ102と、HDD(Hard Disk Drive)やSDD(Solid State Drive)などのストレージデバイス103と、入力デバイス106やディスプレイ107などの周辺機器を接続するための入出力I/F104と、外部機器と通信を行う通信I/F105と、を備えた一般的なコンピュータ(計算機システム)としてのハードウェア構成を採用することができる。そして、例えば、プロセッサ回路101がメモリ102を利用してファームウェアのプログラムを実行することにより、上述の事前検証部11、書き換え検知部12、無効化部13および実行制御部14の各部の機能を実現することができる。また、ホワイトリストL1(L1’)は、例えばストレージデバイス103に格納し、実行許可リストL2(L2’)や要検証リストL3は、例えばメモリ102(RAM)上に保持する構成とすることができる。
すなわち、上記の各部は、例えば、ファームウェアを構成するプログラムとしてROMなどに格納されてコンピュータに実装され、コンピュータが備える1以上のプロセッサがROMからプログラムをRAM上にロードして実行することにより、上記の各部をRAM上で生成することができる。
なお、上述の各実施形態の情報処理装置10の各部を実現するためのプログラムは、ROMなどの不揮発メモリに予め格納して提供する形態のほか、例えば、インターネットなどのネットワークに接続された他のコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するようにしてもよい。また、上記プログラムを、インターネットなどのネットワーク経由で提供または配布するようにしてもよい。また、上記プログラムを、コンピュータ読み取り可能な記録媒体に格納して提供するようにしてもよい。
なお、上述の各実施形態の情報処理装置10の各部は、その一部または全部が、ASIC(Application Specific Integrated Circuit)やFPGA(Field-Programmable Gate Array)などの専用のハードウェアにより実現される構成であってもよい。
また、上述の各実施形態の情報処理装置10は、複数台のコンピュータを通信可能に接続したネットワークシステムとして構成し、上述の各部を複数台のコンピュータに分散して実現する構成であってもよい。また、上述の各実施形態の情報処理装置10は、クラウドシステム上のサーバ装置として構成してもよいし、クラウドシステム上で動作する仮想マシンであってもよい。
以上、本発明の実施形態を説明したが、この実施形態は例として提示したものであり、発明の範囲を限定することは意図していない。この新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
10 情報処理装置
11 事前検証部
12 書き換え検知部
13 無効化部
14 実行制御部
L1(L1’) ホワイトリスト
L2(L2’) 実行許可リスト
L3 要検証リスト

Claims (17)

  1. ソフトウェアの実行開始に依存しないタイミングで、ホワイトリストに登録されたソフトウェアの完全性を検証し、検証に成功したソフトウェアを実行許可ソフトウェアとして登録した実行許可リストを生成する事前検証部と、
    ソフトウェアの実行開始が検出されたときに、該ソフトウェアが実行許可ソフトウェアとして前記実行許可リストに登録されていれば、該ソフトウェアの実行を許可する実行制御部と、
    を備える情報処理装置。
  2. ソフトウェアの書き換えを検知する書き換え検知部と、
    書き換えが検知されたソフトウェアが実行許可ソフトウェアとして前記実行許可リストに登録されている場合に、前記実行許可リストにおける該ソフトウェアの実行許可ソフトウェアとしての登録を無効化する無効化部と、をさらに備える
    請求項1に記載の情報処理装置。
  3. 前記無効化部は、書き換えが検知されたソフトウェアのエントリを前記実行許可リストから削除することにより、前記実行許可リストにおける該ソフトウェアの実行許可ソフトウェアとしての登録を無効化する
    請求項2に記載の情報処理装置。
  4. 前記実行許可リストの各エントリは第1のフラグを備え、
    前記事前検証部は、前記実行許可リストのうち、検証に成功したソフトウェアのエントリに付与された前記第1のフラグを有効とし、
    前記実行制御部は、前記実行許可リストのうち、実行開始が検出されたソフトウェアのエントリに付与された前記第1のフラグが有効である場合に、該ソフトウェアの実行を許可する
    請求項2に記載の情報処理装置。
  5. 前記無効化部は、前記実行許可リストのうち、書き換えが検知されたソフトウェアのエントリに付与された前記第1のフラグを無効とする
    請求項4に記載の情報処理装置。
  6. 前記事前検証部は、検証に失敗したソフトウェアを前記実行許可リストに登録し、該ソフトウェアのエントリに付与された前記第1のフラグを無効とする
    請求項5に記載の情報処理装置。
  7. 前記実行許可リストに実行許可ソフトウェアとして登録されていないソフトウェアの実行開始が検出された場合は、前記実行制御部が該ソフトウェアの完全性を検証し、検証に成功した場合に該ソフトウェアの実行を許可するとともに、該ソフトウェアを実行許可ソフトウェアとして前記実行許可リストに登録する
    請求項4乃至6のいずれか一項に記載の情報処理装置。
  8. 前記実行制御部は、前記第1のフラグの値に基づいて、実行開始が検出されたソフトウェアの完全性の検証を行うか否かを判断する
    請求項7に記載の情報処理装置。
  9. 前記事前検証部は、前記ホワイトリストに登録されたソフトウェアのうち、予め定められた条件に該当するソフトウェアを対象として完全性の検証を行う
    請求項1乃至8のいずれか一項に記載の情報処理装置。
  10. 前記ホワイトリストの各エントリは第2のフラグを備え、
    前記予め定められた条件は、前記ホワイトリストのうち、前記第2のフラグが有効とされているエントリに登録されているという条件である
    請求項9に記載の情報処理装置。
  11. 前記ソフトウェアの実行開始に依存しないタイミングは、前記事前検証部の起動時である
    請求項1乃至10のいずれか一項に記載の情報処理装置。
  12. 前記ソフトウェアの実行開始に依存しないタイミングは、前記ソフトウェアとは異なる特定のソフトウェアの起動時である
    請求項1乃至10のいずれか一項に記載の情報処理装置。
  13. 前記ソフトウェアの実行開始に依存しないタイミングは、特定の信号を前記事前検証部が受信したときである
    請求項1乃至10のいずれか一項に記載の情報処理装置。
  14. 前記事前検証部による処理が行われている間に第1のソフトウェアの実行開始が検出された場合は、前記事前検証部が処理を中断し、前記実行制御部が前記第1のソフトウェアの完全性を検証して、検証に成功した場合に前記第1のソフトウェアの実行を許可する
    請求項1乃至13のいずれか一項に記載の情報処理装置。
  15. 情報処理装置により実行される情報処理方法であって、
    ソフトウェアの実行開始に依存しない所定のタイミングで、ホワイトリストに登録されたソフトウェアの完全性を検証し、検証に成功したソフトウェアを実行許可ソフトウェアとして登録した実行許可リストを生成するステップと、
    ソフトウェアの実行開始が検出されたときに、該ソフトウェアが実行許可ソフトウェアとして前記実行許可リストに登録されていれば、該ソフトウェアの実行を許可するステップと、
    を含む情報処理方法。
  16. コンピュータに、
    ソフトウェアの実行開始に依存しないタイミングで、ホワイトリストに登録されたソフトウェアの完全性を検証し、検証に成功したソフトウェアを実行許可ソフトウェアとして登録した実行許可リストを生成する事前検証部の機能と、
    ソフトウェアの実行開始が検出されたときに、該ソフトウェアが実行許可ソフトウェアとして前記実行許可リストに登録されていれば、該ソフトウェアの実行を許可する実行制御部の機能と、
    を実現させるためのプログラム。
  17. ソフトウェアの実行開始に依存しないタイミングで、ホワイトリストに登録されたソフトウェアのハッシュ値を計算し、ハッシュ値リストを生成する事前計算部と、
    ソフトウェアの実行開始が検出されたときに、該ソフトウェアのハッシュ値が前記ハッシュ値リストに登録されており、かつ、前記ハッシュ値リストに登録されているハッシュ値が前記ホワイトリストと一致する場合に、該ソフトウェアの実行を許可する実行制御部と、
    を備える情報処理装置。
JP2018173750A 2018-09-18 2018-09-18 情報処理装置、情報処理方法およびプログラム Active JP6914899B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018173750A JP6914899B2 (ja) 2018-09-18 2018-09-18 情報処理装置、情報処理方法およびプログラム
US16/286,777 US11132467B2 (en) 2018-09-18 2019-02-27 Information processing device, information processing method, and computer program product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018173750A JP6914899B2 (ja) 2018-09-18 2018-09-18 情報処理装置、情報処理方法およびプログラム

Publications (2)

Publication Number Publication Date
JP2020046829A JP2020046829A (ja) 2020-03-26
JP6914899B2 true JP6914899B2 (ja) 2021-08-04

Family

ID=69774079

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018173750A Active JP6914899B2 (ja) 2018-09-18 2018-09-18 情報処理装置、情報処理方法およびプログラム

Country Status (2)

Country Link
US (1) US11132467B2 (ja)
JP (1) JP6914899B2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7289739B2 (ja) * 2019-06-27 2023-06-12 キヤノン株式会社 情報処理装置、情報処理方法およびプログラム
US20230198997A1 (en) * 2019-12-09 2023-06-22 Daniel Chien Access control systems and methods
US11677754B2 (en) * 2019-12-09 2023-06-13 Daniel Chien Access control systems and methods
JP7391802B2 (ja) 2020-09-11 2023-12-05 株式会社東芝 情報処理装置、情報処理方法及びコンピュータプログラム
JP7354074B2 (ja) * 2020-09-18 2023-10-02 株式会社東芝 情報処理装置、情報処理方法およびプログラム
US20220166778A1 (en) * 2020-11-24 2022-05-26 Saudi Arabian Oil Company Application whitelisting based on file handling history
JP7431776B2 (ja) 2021-06-09 2024-02-15 株式会社東芝 情報処理装置、情報処理方法、およびプログラム
JP7476140B2 (ja) 2021-06-15 2024-04-30 株式会社東芝 情報処理装置、情報処理方法、およびプログラム
US12095923B2 (en) * 2021-10-21 2024-09-17 Nokia Solutions And Networks Oy Securing containerized applications
US20240231664A9 (en) * 2022-10-20 2024-07-11 Capital One Services, Llc Refresh of stale reference to physical file locations

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4578088B2 (ja) 2003-11-20 2010-11-10 大日本印刷株式会社 情報処理装置、情報処理システム及びプログラム
WO2006101549A2 (en) * 2004-12-03 2006-09-28 Whitecell Software, Inc. Secure system for allowing the execution of authorized computer program code
JP5191043B2 (ja) 2008-04-21 2013-04-24 学校法人東京電機大学 プログラムの不正起動防止システム及び方法
WO2011030455A1 (ja) * 2009-09-14 2011-03-17 森清 セキュア監査システム及びセキュア監査方法
JP4798278B2 (ja) * 2009-09-17 2011-10-19 コニカミノルタビジネステクノロジーズ株式会社 ジョブ処理システムおよび画像処理装置、プログラム、画像処理装置の制御方法
JP5572573B2 (ja) * 2011-03-07 2014-08-13 Kddi株式会社 携帯端末、プログラム、および通信システム
JP5126447B1 (ja) 2012-08-31 2013-01-23 大日本印刷株式会社 アプリケーションプログラムの実行方法
US8990932B2 (en) * 2012-06-28 2015-03-24 Secureage Technology, Inc. System and method for prevention of malware attacks on data
JP6307956B2 (ja) 2014-03-14 2018-04-11 三菱電機株式会社 情報処理装置及び情報処理方法
JP2016139322A (ja) * 2015-01-28 2016-08-04 株式会社リコー 画像処理装置及びそれを備えた電子黒板
JP6541177B2 (ja) 2015-03-24 2019-07-10 東芝情報システム株式会社 コンピュータ端末及びそのプログラム、コンピュータシステム
US10153904B2 (en) * 2015-04-29 2018-12-11 Ncr Corporation Validating resources execution
JP2017004334A (ja) 2015-06-12 2017-01-05 三菱電機株式会社 計算機
US20180081830A1 (en) * 2016-09-20 2018-03-22 Advanced Micro Devices, Inc. Hardware supervision of page tables
JP6800744B2 (ja) 2016-12-28 2020-12-16 株式会社日立製作所 ホワイトリスト作成装置
JP6728113B2 (ja) 2017-08-22 2020-07-22 株式会社東芝 情報処理装置、情報処理方法、および情報処理プログラム
JP6829168B2 (ja) 2017-09-04 2021-02-10 株式会社東芝 情報処理装置、情報処理方法およびプログラム
JP6759169B2 (ja) 2017-09-11 2020-09-23 株式会社東芝 情報処理装置、情報処理方法、および情報処理プログラム
JP6903529B2 (ja) 2017-09-11 2021-07-14 株式会社東芝 情報処理装置、情報処理方法およびプログラム
JP6783812B2 (ja) 2018-03-13 2020-11-11 株式会社東芝 情報処理装置、情報処理方法およびプログラム

Also Published As

Publication number Publication date
JP2020046829A (ja) 2020-03-26
US11132467B2 (en) 2021-09-28
US20200089914A1 (en) 2020-03-19

Similar Documents

Publication Publication Date Title
JP6914899B2 (ja) 情報処理装置、情報処理方法およびプログラム
CN109446815B (zh) 基本输入输出系统固件的管理方法、装置和服务器
JP6736456B2 (ja) 情報処理装置およびプログラム
RU2720068C2 (ru) Устройство обработки информации, способ для его управления и носитель хранения данных
US9576132B2 (en) Information processing apparatus and information processing method
CN111630513B (zh) 认证所存储代码和代码更新的真实性
JP6925542B2 (ja) ソフトウェア検証装置、ソフトウェア検証方法およびソフトウェア検証プログラム
US20150013015A1 (en) Method and apparatus for group licensing of device features
KR20220090537A (ko) 정책 적용을 위한 가상 환경 유형 검증
US9448888B2 (en) Preventing a rollback attack in a computing system that includes a primary memory bank and a backup memory bank
CN112558884B (zh) 数据保护方法以及基于NVMe的存储设备
CN115062291A (zh) 用于管理容器的方法、系统和计算机可读介质
CN108920962B (zh) 固件下载验签方法、固件发布方法、移动终端及服务器
JP6744256B2 (ja) 確認システム、制御装置及び確認方法
US10915623B2 (en) Information processing apparatus, information processing method, and computer program product
US20220374511A1 (en) Systems and methods for assuring integrity of operating system and software components at runtime
JP6971958B2 (ja) 情報処理装置、情報処理方法、および情報処理プログラム
US11847227B2 (en) Firmware version corruption attack prevention
CN102750470A (zh) 全虚拟化环境下启动加载器的可信验证方法和系统
JP7411902B1 (ja) 情報処理装置、情報処理装置の制御方法及びプログラム
CN107360167B (zh) 一种认证方法及装置
CN111158771B (zh) 处理方法、装置及计算机设备
US11822663B2 (en) Supervisor-based firmware hardening
US10242195B2 (en) Integrity values for beginning booting instructions
JP7341376B2 (ja) 情報処理装置、情報処理方法、及び、情報処理プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200701

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210527

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210615

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210714

R151 Written notification of patent or utility model registration

Ref document number: 6914899

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151