(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-08
(45)【発行日】2024-07-17
(54)【発明の名称】監視範囲決定装置、監視範囲決定方法、及びプログラム
(51)【国際特許分類】
G06F 21/12 20130101AFI20240709BHJP
G06F 21/64 20130101ALI20240709BHJP
【FI】
G06F21/12 350
G06F21/64
(21)【出願番号】P 2022558653
(86)(22)【出願日】2020-10-28
(86)【国際出願番号】 JP2020040339
(87)【国際公開番号】W WO2022091232
(87)【国際公開日】2022-05-05
【審査請求日】2023-04-17
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成30年度 国立研究開発法人新エネルギー・産業技術総合開発機構「戦略的イノベーション創造プログラム(SIP)第2期/IoT社会に対応したサイバー・フィジカル・セキュリティ/(A2)IoT機器等向け真贋判定による信頼の証明技術の研究開発事業」に関する研究開発、産業技術力強化法第17条の適用を受ける特許出願
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100103894
【氏名又は名称】家入 健
(72)【発明者】
【氏名】早木 悠斗
(72)【発明者】
【氏名】山垣 則夫
【審査官】松平 英
(56)【参考文献】
【文献】国際公開第2018/150619(WO,A1)
【文献】Toshiki Kobayashi et al,SAFES: Sand-boxed Architecture for Frequent Environment Self-measurement,SysTEX'18: Proceedings of the 3rd Workshop on System Software for Trusted Execution,米国,ACM,2018年10月15日,pp. 37-41
【文献】早木 悠斗 他,IoT機器向け改ざん検知機能による信頼の証明技術の提案,2020年 暗号と情報セキュリティシンポジウム予稿集,日本,2020年 暗号と情報セキュリティシンポジウム実行委員,2020年01月21日,pp.1-6
【文献】NEC デジタルプラットフォーム事業部,IoTデバイスの不正な改ざんを検知する 軽量プログラム改ざん検知 開発キット,C&Cユーザーフォーラム&iEXPO2019,日本,NEC デジタルプラットフォーム事業部,2019年10月
(58)【調査した分野】(Int.Cl.,DB名)
G06F12/14
21/00-21/88
G09C1/00-5/00
H04K1/00-3/00
H04L9/00-9/40
(57)【特許請求の範囲】
【請求項1】
監視対象のソフトウェアに対して、改ざん検知機能と共に組み込まれる改ざん検知機能呼び出し関数の監視範囲を決定する監視範囲決定装置であって、
前記改ざん検知機能及び前記改ざん検知機能呼び出し関数を組み込んだ前記ソフトウェアのバイナリを入力する入力部と、
前記バイナリに基づいて、制御フローグラフ(Control Flow Graph;CFG)を生成するCFG生成部と、
前記CFGに基づいて、前記改ざん検知機能呼び出し関数の監視範囲を決定する監視範囲決定部と、を備え、
前記監視範囲決定部は、
前記CFG上の前記改ざん検知機能呼び出し関数を順次選択し、
所定の規則に従って、前記選択した改ざん検知機能呼び出し関数の監視範囲にノードを追加し、
前記所定の規則に従って追加したノードの次に実行される可能性のある前記改ざん検知機能呼び出し関数を検索し、発見した前記改ざん検知機能呼び出し関数を、前記選択した改ざん検知機能呼び出し関数の監視範囲に追加する、
監視範囲決定装置。
【請求項2】
前記所定の規則は、前記選択した改ざん検知機能呼び出し関数を含むノードの全ての子孫ノードのうち、前記改ざん検知機能呼び出し関数を含まないノードを辿り、前記選択した改ざん検知機能呼び出し関数を含むノードから、次の前記改ざん検知機能呼び出し関数を含むノードの直前のノードまでを、前記選択した改ざん検知機能呼び出し関数の前記監視範囲に追加する規則である、
請求項1に記載の監視範囲決定装置。
【請求項3】
前記所定の規則は、前記選択した改ざん検知機能呼び出し関数を含むノードを、前記選択した改ざん検知機能呼び出し関数の前記監視範囲に追加する規則である、
請求項1に記載の監視範囲決定装置。
【請求項4】
前記監視範囲決定部は、
前記所定の規則に従って追加したノードの次に実行される可能性のある前記改ざん検知機能呼び出し関数を発見するまでに、前記CFG上の前記改ざん検知機能呼び出し関数のいずれの監視範囲にも追加されていないノードを発見した場合、発見したノードを、前記選択した改ざん検知機能呼び出し関数の前記監視範囲に追加する、
請求項1から3のいずれか1項に記載の監視範囲決定装置。
【請求項5】
前記改ざん検知機能は、前記改ざん検知機能呼び出し関数の前記監視範囲のハッシュ値のリストとして作成されたホワイトリスト型の改ざん検知機能である、
請求項1から4のいずれか1項に記載の監視範囲決定装置。
【請求項6】
監視対象のソフトウェアに対して、改ざん検知機能と共に組み込まれる改ざん検知機能呼び出し関数の監視範囲を決定する監視範囲決定装置が実行する監視範囲決定方法であって、
前記改ざん検知機能及び前記改ざん検知機能呼び出し関数を組み込んだ前記ソフトウェアのバイナリを入力する入力ステップと、
前記バイナリに基づいて、制御フローグラフ(Control Flow Graph;CFG)を生成するCFG生成ステップと、
前記CFGに基づいて、前記改ざん検知機能呼び出し関数の監視範囲を決定する監視範囲決定ステップと、を含み、
前記監視範囲決定ステップでは、
前記CFG上の前記改ざん検知機能呼び出し関数を順次選択し、
所定の規則に従って、前記選択した改ざん検知機能呼び出し関数の監視範囲にノードを追加し、
前記所定の規則に従って追加したノードの次に実行される可能性のある前記改ざん検知機能呼び出し関数を検索し、発見した前記改ざん検知機能呼び出し関数を、前記選択した改ざん検知機能呼び出し関数の監視範囲に追加する、
監視範囲決定方法。
【請求項7】
監視対象のソフトウェアに対して、改ざん検知機能と共に組み込まれる改ざん検知機能呼び出し関数の監視範囲を決定する処理をコンピュータに実行させるプログラ
ムであって、
前記改ざん検知機能及び前記改ざん検知機能呼び出し関数を組み込んだ前記ソフトウェアのバイナリを入力する入力ステップと、
前記バイナリに基づいて、制御フローグラフ(Control Flow Graph;CFG)を生成するCFG生成ステップと、
前記CFGに基づいて、前記改ざん検知機能呼び出し関数の監視範囲を決定する監視範囲決定ステップと、を含み、
前記監視範囲決定ステップでは、
前記CFG上の前記改ざん検知機能呼び出し関数を順次選択し、
所定の規則に従って、前記選択した改ざん検知機能呼び出し関数の監視範囲にノードを追加し、
前記所定の規則に従って追加したノードの次に実行される可能性のある前記改ざん検知機能呼び出し関数を検索し、発見した前記改ざん検知機能呼び出し関数を、前記選択した改ざん検知機能呼び出し関数の監視範囲に追加する、
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、改ざん検知機能を呼び出す改ざん検知機能呼び出し関数が監視する監視範囲を決定する監視範囲決定装置、監視範囲決定方法、及びコンピュータ可読媒体に関し、特に、IoT(Internet of Things)機器などの機器のソフトウェアに用いる監視範囲決定装置、監視範囲決定方法、及びコンピュータ可読媒体に関する。
【背景技術】
【0002】
近年、IoT機器の普及により、IoT機器のようなメモリやCPU(Central Processing Unit)などのリソースが潤沢ではない機器でも動作するセキュリティシステムが要求されている。
【0003】
関連するセキュリティシステムとして、ハッシュ値を用いたホワイトリスト型の改ざん検知機能を機器に組み込み、機器上のソフトウェアが正しい状態であるか否か(改ざんされていないか否か)を監視する方式が知られている。
【0004】
ハッシュ値を用いたホワイトリスト型の改ざん検知機能とは、正常時の機器のメモリの情報を予めホワイトリストに登録しておき、動作中の機器のメモリの情報を、ホワイトリストに登録されているメモリの情報と比較し、改ざんの有無を監視する機能である。このとき、メモリの情報はハッシュ値の形で管理される。
【0005】
ハッシュ値を用いたホワイトリスト型の改ざん検知機能は、次のように実現される。まず、事前に、正常時の機器のメモリの情報を何等かの方法で取得し、取得したメモリの情報をホワイトリストに登録する。メモリの情報は、実行コードがメモリ上にどのように展開されているのかを示す情報となる。次に、機器の動作中の任意のタイミングでメモリの情報を取得し、取得したメモリの情報をホワイトリストに登録されているメモリの情報と比較する。比較の結果、機器の動作中に取得したメモリの情報とホワイトリストに登録されているメモリの情報とが一致すれば、改ざんがなく(攻撃を受けていない)、一致しなければ、改ざんされている(攻撃されている)ことになる。
【0006】
ホワイトリストの意味は、正常時のメモリのスナップショットということになる。ただし、メモリのスナップショットをそのままの形で登録・比較するよりも、ハッシュ値の形で登録・比較した方が、機器本来の動作への影響が小さくなる。そのため、ホワイトリストには、正常時のメモリの情報がハッシュ値の形で登録されており、動作中のメモリの情報もハッシュ値の形で管理される。ハッシュ値を用いたホワイトリスト型の改ざん検知機能の一例が、非特許文献1,2に開示されている。
【0007】
非特許文献1には、機器に対する入力がトリガーとなり、次に実行する機能の改ざんを検知する方法が開示されている。非特許文献1の方法によれば、ハードウェアの機能によって安全性が保証された領域であるTrusted Execution Envirionment(TEE)の一種であるTrustZoneを用いて、ユーザーの入力を管理する。ユーザーの入力により、次に実行される機能(ここでは、機能Aと呼ぶ)が決まる。また、ユーザーの入力により、改ざん検知機能を呼び出す改ざん検知機能呼び出し関数が起動する。改ざん検知機能呼び出し関数は、改ざん検知機能を呼び出し、機能Aの実行時に使用するメモリ領域に限定して、改ざんの有無を監視する。なお、改ざん検知機能及び改ざん検知機能呼び出し関数は共に、TrustZoneに配置される。
【0008】
非特許文献2には、一度の監視における監視範囲を制御フローグラフ(Control Flow Graph:CFG)の1つのノードとし、非特許文献1の方法よりも高速な監視を目指す方法が開示されている。ここで、CFGとは、プログラムがどの順序で実行されるかをグラフ化したものである。したがって、CFGは有向グラフである。CFGのノードは連続するプログラムの実行コードとなる。このとき、CFGの1つのノードは、分岐命令ごとにブロックに区切られ、このブロックのことベーシックブロックと呼ぶ。すなわち、CFGの1つのノードは1つのベーシックブロックである、と言い換えることができる。
【0009】
ここで、
図1を参照して、ソースコード及びCFGの例について説明する。
図1の右側は、ソースコードを示し、
図1の左側は、右側のソースコードをビルドしたバイナリを基に生成されたCFGを示している。また、
図1の左側の各ノード内の数字は、右側のソースコードの行番号を示しており、各ノードには、各ノード内の数字で示される行番号に相当する実行コードが含まれることを表している。例えば、ノード2には、ソースコードの6~7行目に相当する実行コードが含まれる。
【0010】
非特許文献2には、このようなCFGを基に、各ノードの実行コードを監視するための改ざん検知機能呼び出し関数を、機器本来の動作を記述したソースコードに組み込む方法が開示されている。
【0011】
特許文献1には、バイトコード上に直接改ざん検知機能を組み込む方法が開示されている。特許文献1の方法によれば、改ざん検知機能を組み込む対象のプログラムに対して、関数ごとにCFGを作成する。そして、CFGを基に関数ごとにランダムにノードを抽出し、抽出したノード及びそれ以前に必ず実行されるノードに改ざん検知機能を組み込む。
【先行技術文献】
【特許文献】
【0012】
【非特許文献】
【0013】
【文献】Toshiki Kobayashi、Takayuki Sasaki、Astha Jada、Daniele E. Asoni、Adrian Perrig、“SAFES: Sand-boxed Architecture for Frequent Environment Self-measurement”、Proceedings of the 3rd Workshop on System Software for Trusted Execution、2018年、pp.37-41
【文献】早木 悠斗、佐々木 貴之、リュウ センペイ、冨田 光輝、山垣 則夫著、「IoT機器向け改ざん検知機能による信頼の証明技術の提案」、SCIS2020、2020年、pp.1-6
【発明の概要】
【発明が解決しようとする課題】
【0014】
上述したように、非特許文献1の方法においては、改ざん検知機能呼び出し関数は、改ざん検知機能と共に、TrustZoneに配置される。そのため、非特許文献1の方法においては、改ざん検知機能呼び出し関数の安全性は保証されている。
【0015】
その一方、非特許文献2の方法においては、改ざん検知機能呼び出し関数は、ソースコードに組み込まれる。また、特許文献1の方法においては、改ざん検知機能だけでなく、改ざん検知機能呼び出し関数についても、プログラムに組み込まれると想定される。
【0016】
しかし、非特許文献2及び特許文献1の方法のように、改ざん検知機能呼び出し関数が機器本来のプログラムと同じメモリ領域に組み込まれる場合においては、改ざん検知機能呼び出し関数自体が攻撃者によって改ざんされる可能性がある。
【0017】
ここで、
図2を参照して、改ざん検知機能呼び出し関数が組み込まれたCFGの例について説明する。
図2は、
図1のソースコードに対して改ざん検知機能呼び出し関数が組み込まれたソースコードをビルドしたバイナリを基に生成されたCFGを示している。なお、
図2の例では、改ざん検知機能呼び出し関数(以下、適宜フックと呼ぶ)H1,H2,H4,H5,H6は、それぞれ、ノード1,2,4,5,6の先頭に組み込まれているが、、ノード1,2,4,5,6の途中に組み込まれてもよいし、各ノードの直前に独立したノードとして組み込まれていてもよい。
【0018】
非特許文献2及び特許文献1の方法においては、
図2の例のように、改ざん検知機能呼び出し関数が機器本来のプログラムと同じメモリ領域の実行コード上に組み込まれる。この場合、改ざん検知機能呼び出し関数自体が攻撃者によって改ざんされる可能性がある。そのため、改ざん検知機能呼び出し関数自体も監視される必要がある。
【0019】
しかし、非特許文献2及び特許文献1のいずれにおいても、改ざん検知機能呼び出し関数自体が攻撃者によって改ざんされる可能性があることには言及されてない。そのため、改ざん検知機能呼び出し関数自体を監視する方法は開示されていない。
【0020】
そこで本開示の目的は、上述した課題を鑑み、改ざん検知機能呼び出し関数自体を監視できるように、改ざん検知機能呼び出し関数の監視範囲を決定できる監視範囲決定装置、監視範囲決定方法、及びコンピュータ可読媒体を提供することにある。
【課題を解決するための手段】
【0021】
本開示の一態様に係る監視範囲決定装置は、
監視対象のソフトウェアに対して、改ざん検知機能と共に組み込まれる改ざん検知機能呼び出し関数の監視範囲を決定する監視範囲決定装置であって、
前記改ざん検知機能及び前記改ざん検知機能呼び出し関数を組み込んだ前記ソフトウェアのバイナリを入力する入出力部と、
前記バイナリに基づいて、制御フローグラフ(Control Flow Graph;CFG)を生成するCFG生成部と、
前記CFGに基づいて、前記改ざん検知機能呼び出し関数の監視範囲を決定する監視範囲決定部と、を備え、
前記監視範囲決定部は、
前記CFG上の前記改ざん検知機能呼び出し関数を順次選択し、
所定の規則に従って、前記選択した改ざん検知機能呼び出し関数の監視範囲にノードを追加し、
前記所定の規則に従って追加したノードの次に実行される可能性のある前記改ざん検知機能呼び出し関数を検索し、発見した前記改ざん検知機能呼び出し関数を、前記選択した改ざん検知機能呼び出し関数の監視範囲に追加する。
【0022】
本開示の他の態様に係る監視範囲決定方法は、
監視対象のソフトウェアに対して、改ざん検知機能と共に組み込まれる改ざん検知機能呼び出し関数の監視範囲を決定する監視範囲決定装置が実行する監視範囲決定方法であって、
前記改ざん検知機能及び前記改ざん検知機能呼び出し関数を組み込んだ前記ソフトウェアのバイナリを入力する入力ステップと、
前記バイナリに基づいて、制御フローグラフ(Control Flow Graph;CFG)を生成するCFG生成ステップと、
前記CFGに基づいて、前記改ざん検知機能呼び出し関数の監視範囲を決定する監視範囲決定ステップと、を含み、
前記監視範囲決定ステップでは、
前記CFG上の前記改ざん検知機能呼び出し関数を順次選択し、
所定の規則に従って、前記選択した改ざん検知機能呼び出し関数の監視範囲にノードを追加し、
前記所定の規則に従って追加したノードの次に実行される可能性のある前記改ざん検知機能呼び出し関数を検索し、発見した前記改ざん検知機能呼び出し関数を、前記選択した改ざん検知機能呼び出し関数の監視範囲に追加する。
【0023】
本開示のさらに他の態様に係るコンピュータ可読媒体は、
監視対象のソフトウェアに対して、改ざん検知機能と共に組み込まれる改ざん検知機能呼び出し関数の監視範囲を決定する処理をコンピュータに実行させるプログラムが格納された非一時的なコンピュータ可読媒体であって、
前記プログラムは、
前記改ざん検知機能及び前記改ざん検知機能呼び出し関数を組み込んだ前記ソフトウェアのバイナリを入力する入力ステップと、
前記バイナリに基づいて、制御フローグラフ(Control Flow Graph;CFG)を生成するCFG生成ステップと、
前記CFGに基づいて、前記改ざん検知機能呼び出し関数の監視範囲を決定する監視範囲決定ステップと、を含み、
前記監視範囲決定ステップでは、
前記CFG上の前記改ざん検知機能呼び出し関数を順次選択し、
所定の規則に従って、前記選択した改ざん検知機能呼び出し関数の監視範囲にノードを追加し、
前記所定の規則に従って追加したノードの次に実行される可能性のある前記改ざん検知機能呼び出し関数を検索し、発見した前記改ざん検知機能呼び出し関数を、前記選択した改ざん検知機能呼び出し関数の監視範囲に追加する。
【発明の効果】
【0024】
上述の態様によれば、改ざん検知機能呼び出し関数自体を監視できるように、改ざん検知機能呼び出し関数の監視範囲を決定できるという効果が得られる。
【図面の簡単な説明】
【0025】
【
図1】ソースコード及びCFGの例を示す図である。
【
図2】
図1のソースコードに対して改ざん検知機能呼び出し関数を組み込んだソースコードを基に生成されたCFGの例を示す図である。
【
図3】実施の形態1に係る監視範囲決定装置の構成例を示すブロック図である。
【
図4】実施の形態1に係る監視範囲決定装置の全体の動作例を説明する流れ図である。
【
図5】実施の形態1に係るホワイトリスト作成部が
図4のステップA3で行う動作例を説明する流れ図である。
【
図6】実施の形態1に係るホワイトリスト作成部が
図5に沿って改ざん検知機能呼び出し関数の監視範囲を決定する過程の例を説明する図である。
【
図7】実施の形態1に係るホワイトリスト作成部が
図5に沿って改ざん検知機能呼び出し関数の監視範囲を決定する過程の例を説明する図である。
【
図8】実施の形態1に係るホワイトリスト作成部が
図5に沿って改ざん検知機能呼び出し関数の監視範囲を決定する過程の例を説明する図である。
【
図9】実施の形態2に係る監視範囲決定装置の構成例を示すブロック図である。
【
図10】実施の形態2に係るホワイトリスト作成部が
図4のステップA3で行う動作例を説明する流れ図である。
【
図11】実施の形態2に係るホワイトリスト作成部が
図10に沿って改ざん検知機能呼び出し関数の監視範囲を決定する過程の例を説明する図である。
【
図12】実施の形態3に係る監視範囲決定装置の構成例を示すブロック図である。
【
図13】実施の形態3に係る監視範囲決定装置の全体の動作例を説明する流れ図である。
【
図14】実施の形態4に係る監視範囲決定装置のハードウェア構成例を示す図である。
【発明を実施するための形態】
【0026】
以下、図面を参照しつつ、本開示の実施の形態について説明する。なお、以下の実施の形態において、同一又は同等の要素には、同一の符号を付し、重複する説明は省略される。また、以下の各実施の形態で説明する監視範囲決定装置は、監視対象のソフトウェアに対して、ハッシュ値を用いたホワイトリスト型の改ざん検知機能と共に組み込まれる改ざん検知機能呼び出し関数の監視範囲を決定する装置の例である。
【0027】
[実施の形態1]
[実施の形態1の構成]
まず、
図3を参照して、本実施の形態1に係る監視範囲決定装置100の構成例について説明する。なお、
図3において、一方向性の矢印は、あるデータ(又は、信号、情報等)の流れの方向を端的に示したもので、双方向性を排除するものではない(後述する
図9及び
図12において同じ)。
【0028】
図3を参照すると、本実施の形態1に係る監視範囲決定装置100は、入出力部101と、Control Flow Graph(CFG)生成部102と、ホワイトリスト作成部103と、記憶部104と、を含む。なお、入出力部101は、入力部の一例であり、ホワイトリスト作成部103は、監視範囲決定部の一例である。
【0029】
これらの構成要素は、それぞれ次のように動作する。
入出力部101には、監視対象のソフトウェアのバイナリに改ざん検知機能及び改ざん検知機能呼び出し関数を組み込んだバイナリ(以下、改ざん検知機能組み込みバイナリと呼ぶ)が入力される。監視対象のソフトウェアは、例えば、IoT機器上の制御ソフトウェア等である。入出力部101は、入力された改ざん検知機能組み込みバイナリを記憶部104に記憶させ、CFG生成部102に処理を行うよう通知を送る。
【0030】
また、入出力部101は、ホワイトリスト作成部103から後述する通知を受け取ると、記憶部104から、後述するホワイトリストを読み出し、読み出したホワイトリストを出力する。ただし、入出力部101は、記憶部104からホワイトリストを読み出すことには限定されない。入出力部101は、ホワイトリストをホワイトリスト作成部103から受け取ってもよい。
【0031】
CFG生成部102は、入出力部101から通知を受け取ると、記憶部104から改ざん検知機能組み込みバイナリを読み出し、読み出した改ざん検知機能組み込みバイナリを解析し、CFGを生成する。CFG生成部102は、生成したCFGをホワイトリスト作成部103に送る。
【0032】
ホワイトリスト作成部103は、CFG生成部102からCFGを受け取ると、当該CFGを基に、記憶部104から改ざん検知機能組み込みバイナリを読み出す。ホワイトリスト作成部103は、当該CFG及び当該改ざん検知機能組み込みバイナリを基に、ホワイトリストを作成する。ホワイトリスト作成部103は、作成したホワイトリストを記憶部104に記憶させ、入出力部101に処理を行うよう通知を送る。
【0033】
記憶部104は、入出力部101から受け取った改ざん検知機能組み込みバイナリ及びホワイトリスト作成部103から受け取ったホワイトリストを記憶する。
なお、記憶部104は、監視範囲決定装置100において必須の構成要素ではなく、監視範囲決定装置100の外部に設けてもよい。すなわち、監視範囲決定装置100は、入出力部101と、CFG生成部102と、ホワイトリスト作成部103と、からなる最小構成で実現してもよい。
【0034】
[実施の形態1の動作]
次に、
図4の流れ図を参照して、本実施の形態1に係る監視範囲決定装置100の全体の動作例について詳細に説明する。
【0035】
図4を参照すると、まず、入出力部101には、監視対象のソフトウェアのバイナリに改ざん検知機能及び改ざん検知機能呼び出し関数を組み込んだ改ざん検知機能組み込みバイナリが入力される。入出力部101は、入力された改ざん検知機能組み込みバイナリを記憶部104に記憶させ、CFG生成部102に処理を行うよう通知を送る(ステップA1)。
【0036】
CFG生成部102は、入出力部101から通知を受け取ると、記憶部104から、ステップA1で入力された改ざん検知機能組み込みバイナリを読み出し、読み出した改ざん検知機能組み込みバイナリを解析し、CFGを生成する。さらに、CFG生成部102は、生成したCFGをホワイトリスト作成部103へ送る(ステップA2)。
【0037】
ホワイトリスト作成部103は、CFG生成部102から、ステップA2で生成されたCFGを受け取ると、受け取ったCFGを基に、記憶部104から改ざん検知機能組み込みバイナリを読み出す。さらに、ホワイトリスト作成部103は、CFG及び改ざん検知機能組み込みバイナリを基に、ホワイトリストを作成する。さらに、ホワイトリスト作成部103は、作成したホワイトリストを記憶部104に記憶させ、入出力部101に処理を行うよう通知を送る(ステップA3)。なお、ステップA3の詳細については後述する。
【0038】
入出力部101は、ホワイトリスト作成部103から通知を受け取ると、記憶部104から、ステップA3で作成されたホワイトリストを読み出し、読み出したホワイトリストを出力する(ステップA4)。
【0039】
次に、
図5の流れ図を参照して、
図4のステップA3でホワイトリスト作成部103が行う動作について詳細に説明する。ここでは、
図6~
図8も参照して説明を行う。
図6~
図8は、ホワイトリスト作成部103が
図5に沿って改ざん検知機能呼び出し関数の監視範囲を決定する過程の例を説明する図である。なお、
図6~
図8においては、前提として、CFGの先頭にあるフックH1は、セキュアブートなどの手段で安全性が保証されているものとする(後述する
図11において同じ)。
【0040】
図5を参照すると、ホワイトリスト作成部103は、CFG生成部102から、ステップA2で生成されたCFGを受け取ると、空のホワイトリスト(
図5のステップB2以降では、リストと呼ぶ)を作成する(ステップB1)。ホワイトリストには、以下のステップB2~B9の作業を行うことで要素を追加する。
【0041】
まず、ホワイトリスト作成部103は、ステップA2で生成されたCFG上に、ホワイトリストに追加されていない改ざん検知機能呼び出し関数(ここでは、フックと呼ぶ)が存在するか否かを判断する(ステップB2)。該当するフックが存在する場合(ステップB2がYESの場合)は、ステップB3に進み、該当するフックが存在しない場合(ステップB2がNOの場合)は、ホワイトリスト作成部103は、入出力部101へ通知を送り、ステップA3の処理を終了する。
【0042】
ホワイトリスト作成部103は、ステップB2で該当するフックが存在する場合(ステップB2がYESの場合)、該当するフックの中から1つのフックを選択する(ステップB3)。
【0043】
以後のステップB4~B7の処理において、ステップB3で選択した当該フックが監視する監視範囲を確定する。ここでは、ホワイトリスト作成部103が、当該フックとして
図6~
図8のフックH1を選択した場合を例に挙げて説明を行う。
【0044】
まず、ホワイトリスト作成部103は、所定の規則に従って、当該フックの監視範囲にノードを追加する(ステップB4)。所定の規則は、例えば、非特許文献2及び特許文献1に記載された手法で、当該フックの監視範囲にノードを追加する規則とすることができる。ここでは、所定の規則は、当該フックを含むノードの全ての子孫ノードのうち、フックを含まないノードを辿り、当該フックを含むノードから、次のフックを含むノードの直前のノードまでを、当該フックの監視範囲に追加する規則であるものとする。当該フックとしてフックH1を選択した例では、フックH1を含むノードは、ノード1である。また、ノード1の子孫ノードのうち、フックを含まないノードは、ノード3である。そのため、ホワイトリスト作成部103は、ノード3を辿るが、ノード3の子ノードであるノード4,5は、それぞれ、フックH4,H5を含んでいる。そのため、ホワイトリスト作成部103は、
図6に示されるように、ノード1のフックH1より後の範囲とノード3を含む範囲R11を、フックH1の監視範囲に追加する。
【0045】
次に、ホワイトリスト作成部103は、CFGの中から、ステップB4で当該フックの監視範囲に追加したノードの次に実行される可能性があるフック(以下、監視対象フックと呼ぶ)を検索する(ステップB5)。
【0046】
次に、ホワイトリスト作成部103は、当該フックの監視対象フックが発見されたか否かを判断する(ステップB6)。監視対象フックが発見された場合(ステップB6がYESの場合)は、ステップB7へ進み、監視対象フックが発見されなかった場合(ステップB6がNOの場合)は、ステップB7をスキップして、ステップB8へ進む。当該フックとしてフックH1を選択した例では、ホワイトリスト作成部103は、ステップB4及び
図6において、フックH1の監視範囲にノード1のフックH1より後の範囲とノード3を追加している。そのため、ホワイトリスト作成部103は、まず、ノード1を辿り、フックH2を発見する。同様に、ホワイトリスト作成部103は、ノード3を辿り、フックH4,H5を発見する。そのため、フックH1の監視範囲に追加したノード1のフックH1より後の範囲とノード3の次に実行される可能性がある監視対象フックは、フックH2,H4,H5となる。そのため、この例では、ステップB7へ進む。
【0047】
ステップB6で当該フックの監視対象フックを発見した場合(ステップB6がYESの場合)、ホワイトリスト作成部103は、発見した全ての監視対象フックを、当該フックの監視範囲に追加する(ステップB7)。当該フックとしてフックH1を選択した例では、ホワイトリスト作成部103は、ステップB5において、フックH1の監視対象フックとして、フックH2,H4,H5を発見している。そのため、ホワイトリスト作成部103は、
図7に示されるように、フックH2,H4,H5を含む範囲R12を、フックH1の監視範囲に追加する。なお、ここではフックH2,H4,H5がそれぞれノード2、5、4の先頭にある例を示しているが、各フックがそれぞれのノードの途中にあった場合、範囲R12には、当該ノードの先頭から当該フックまでの範囲を含める。
【0048】
以上のステップB4~B7の処理により、ステップB3で選択した当該フックの監視範囲が確定する。当該フックとしてフックH1を選択した例では、フックH1の監視範囲は、最終的には、
図8に示されるように、ノード1,3及びフックH2,H4,H5を含む範囲R1(詳細には、ノード1,3及びフックH2,H4,H5の実行コードに相当するアドレス範囲。以下、同じ)となる。
【0049】
次に、ホワイトリスト作成部103は、ステップB4~B7の処理により確定した当該フックの監視範囲のハッシュ値を計算する(ステップB8)。当該フックとしてフックH1を選択した例では、フックH1の監視範囲は、ノード1,3及びフックH2,H4,H5を含む範囲R1となったため、ホワイトリスト作成部103は、この範囲R1のハッシュ値を計算する。
【0050】
その後、ホワイトリスト作成部103は、当該フックのフックID、当該フックの監視範囲、及び当該監視範囲のハッシュ値の組をホワイトリストに登録する(ステップB9)。ステップB9の処理が終了すると、ステップB2に戻り、ホワイトリスト作成部103は、ステップB3~B9の処理を、ステップA2で生成されたCFG上の全てのフックに対して実行するまで繰り返す。
【0051】
以上の説明では、一例として、フックH1を選択したが、ホワイトリスト作成部103は、CFG上のフックH2,H4,H5,H6に対しても同様に処理を行い、監視範囲を決定する。
【0052】
具体的には、ホワイトリスト作成部103は、フックH2の監視範囲を、ノード2のフックH2より後の範囲及びフックH6を含む範囲に決定し、また、フックH4の監視範囲を、ノード4のフックH4より後の範囲及びフックH6を含む範囲に決定し、また、フックH5の監視範囲を、ノード5のフックH5より後の範囲及びフックH6を含む範囲に決定し、また、フックH6の監視範囲を、ノード6のフックH6より後の範囲を含む範囲に決定する。
【0053】
ここで、フックH6については、フックH6を含むノード6を辿っても、フックを発見できない。そのため、ホワイトリスト作成部103は、フックH6の監視範囲にはフックを追加しない。
【0054】
以上の
図5のホワイトリスト作成部103の動作のうち、CFG上の各フックの監視範囲を決定するまでの動作を要約すると、以下のようになる。ホワイトリスト作成部103は、CFG上のフックを順次選択し、選択したフックの監視範囲を決定していく。このとき、ホワイトリスト作成部103は、所定の規則に従って、選択したフックの監視範囲にノードを追加する。そして、ホワイトリスト作成部103は、選択したフックの監視範囲に追加したノードの次に実行される可能性のあるフックを検索し、発見したフックを、選択したフックの監視範囲に追加する。
【0055】
[実施の形態1の効果]
次に、本実施の形態1に係る監視範囲決定装置100の効果について説明する。
本実施の形態1によれば、ホワイトリスト作成部103は、CFG上の改ざん検知機能呼び出し関数を順次選択する。そして、ホワイトリスト作成部103は、所定の規則に従って、選択した改ざん検知機能呼び出し関数の監視範囲にノードを追加し、追加したノードの次に実行される可能性のある改ざん検知機能呼び出し関数を検索し、発見した改ざん検知機能呼び出し関数を、選択した改ざん検知機能呼び出し関数の監視範囲に追加する。そのため、改ざん検知機能呼び出し関数自体を監視できるように、改ざん検知機能呼び出し関数の監視範囲を決定できる。その結果、改ざん検知機能呼び出し関数が機器本来のプログラムと同じメモリ領域に組み込まれる場合においても、改ざん検知機能呼び出し関数自体が攻撃者によって改ざんされることを監視できる。
【0056】
また、本実施の形態1によれば、ホワイトリスト作成部103は、CFG上のノードを辿っていくだけで、改ざん検知機能呼び出し関数の監視範囲を決定できるため、機械的な処理を行うことができる。
【0057】
[実施の形態2]
上述した実施の形態1に係る監視範囲決定装置100は、所定の規則に従い、CFG上の改ざん検知機能呼び出し関数の監視範囲にノードを追加していくと、CFG上のノードは、CFG上のいずれかの改ざん検知機能呼び出し関数の監視範囲に必ず追加されると仮定した構成であった。
【0058】
これに対して、本実施の形態2に係る監視範囲決定装置200は、所定の規則に従い、CFG上の改ざん検知機能呼び出し関数の監視範囲にノードを追加しても、CFG上の改ざん検知機能呼び出し関数のいずれの監視範囲にも追加されていないノード(以下、適宜監視範囲から漏れたノードと呼ぶ)が存在する構成である。例えば、所定の規則が、改ざん検知機能呼び出し関数を含むノードのみを、当該改ざん検知機能呼び出し関数の監視範囲に追加する規則であるとする。このような規則の場合、
図6~
図8の例では、所定の規則に従い、フックH1の監視範囲に追加するノードは、ノード1のみとなる。その結果、ノード3は、CFG上のフックH1~H5のいずれの監視範囲にも追加されておらず、監視範囲から漏れたノードとなる。
【0059】
[実施の形態2の構成]
まず、
図9を参照して、本実施の形態2に係る監視範囲決定装置200の構成例について説明する。
図9を参照すると、本実施の形態2に係る監視範囲決定装置200は、上述した実施の形態1に係る監視範囲決定装置100におけるホワイトリスト作成部103を、ホワイトリスト作成部203に置き換えたものである。監視範囲決定装置200は、それ以外の構成については、監視範囲決定装置100と同じであるため、詳細な説明は省略する。
【0060】
本実施の形態2に係るホワイトリスト作成部203は、上述した実施の形態1に係るホワイトリスト作成部103と同様に、CFG上の改ざん検知機能呼び出し関数を順次選択し、所定の規則に従って、選択した改ざん検知機能呼び出し関数の監視範囲にノードを追加し、追加したノードの次に実行される可能性のある改ざん検知機能呼び出し関数を検索する。このとき、ホワイトリスト作成部203は、次に実行される可能性のある改ざん検知機能呼び出し関数を発見するまでに、CFG上の改ざん検知機能呼び出し関数のいずれの監視範囲にも追加されていないノードを発見した場合、発見したノードも、選択した改ざん検知機能呼び出し関数の監視範囲に追加する。
【0061】
[実施の形態2の動作]
本実施の形態2に係る監視範囲決定装置200の全体の動作は、上述した実施の形態1に係る監視範囲決定装置100の
図4の動作と同じである。
そこで、以下では、
図10の流れ図を参照して、
図4のステップA3でホワイトリスト作成部203が行う動作について詳細に説明する。ここでは、
図11も参照して説明を行う。
図11は、ホワイトリスト作成部203が
図10に沿って改ざん検知機能呼び出し関数の監視範囲を決定する過程の例を説明する図である。
【0062】
本実施の形態2に係るホワイトリスト作成部203の動作は、以下の動作を除き、上述した実施の形態1に係るホワイトリスト作成部103の
図5の動作と同じである。ここでは、ホワイトリスト作成部203が、ステップB3で当該フックとして
図11のフックH1を選択した場合を例に挙げて説明を行う。
【0063】
ステップB4においては、ホワイトリスト作成部203は、所定の規則に従って、当該フックの監視範囲にノードを追加する。ここでは、所定の規則は、当該フックを含むノードのみを、当該フックの監視範囲に追加する規則であるものとする。当該フックとしてフックH1を選択した例では、フックH1を含むノードは、ノード1である。そのため、ホワイトリスト作成部203は、
図11に示されるように、ノード1を含む範囲R11を、フックH1の監視範囲に追加する。
【0064】
ステップB4の次に行われるステップB10においては、ホワイトリスト作成部203は、CFGの中から、当該フックの監視対象フックを検索するとともに、監視対象フックを発見するまでの間は、監視範囲から漏れたノードも検索する。
【0065】
ステップB6又はステップB7の次に行われるステップB11においては、ホワイトリスト作成部203は、当該フックの監視対象フックを発見するまでに、監視範囲から漏れたノードが発見されたか否かを判断する。監視範囲から漏れたノードが発見された場合(ステップB11がYESの場合)は、ステップB12へ進み、監視範囲から漏れたノードが発見されなかった場合(ステップB11がNOの場合)は、ステップB12をスキップして、ステップB8へ進む。当該フックとしてフックH1を選択した例では、ホワイトリスト作成部203は、ステップB4及び
図11において、フックH1の監視範囲にノード1を追加している。そのため、ホワイトリスト作成部203は、ノード1を辿り、監視範囲から漏れたノード3を発見する。そのため、この例では、ステップB12へ進む。
【0066】
ステップB11で監視範囲から漏れたノードが発見された場合(ステップB11がYESの場合)に行われるステップB12においては、ホワイトリスト作成部203は、発見した全てのノードを、当該フックの監視範囲に追加する。その後、ステップB8へ進む。当該フックとしてフックH1を選択した例では、ホワイトリスト作成部203は、ステップB10において、監視範囲から漏れたノードとして、ノード3を発見している。そのため、この例では、ホワイトリスト作成部203は、ノード3をフックH1の監視範囲に追加する。また、この例では、ホワイトリスト作成部203は、ステップB10において、フックH1の監視対象フックとして、フックH2,H4,H5も発見している。そのため、ホワイトリスト作成部103は、
図11に示されるように、フックH2,H4,H5及びノード3を含む範囲R12を、フックH1の監視範囲に追加する。その結果、この例では、フックH1の監視範囲は、最終的には、
図11に示されるように、ノード1を含む範囲R11と、フックH2,H4,H5及びノード3を含む範囲R12と、を合わせた範囲となる。
【0067】
[実施の形態2の効果]
次に、本実施の形態2に係る監視範囲決定装置200の効果について説明する。
本実施の形態2によれば、ホワイトリスト作成部203は、所定の規則に従って追加した改ざん検知機能呼び出し関数の次に実行される可能性のある改ざん検知機能呼び出し関数を発見するまでに、CFG上の改ざん検知機能呼び出し関数のいずれの監視範囲にも追加されていないノードを発見した場合、発見したノードを、選択した改ざん検知機能呼び出し関数の監視範囲に追加する。そのため、監視範囲から漏れたノードも監視できるように、改ざん検知機能呼び出し関数の監視範囲を決定できる。
本実施の形態2は、それ以外の効果は、上述した実施の形態1と同じである。
【0068】
[実施の形態3]
上述した実施の形態1に係る監視範囲決定装置100は、監視対象のソフトウェアのバイナリに改ざん検知機能及び改ざん検知機能呼び出し関数を組み込んだ改ざん検知機能組み込みバイナリが入力される構成であった。
【0069】
これに対して、本実施の形態3に係る監視範囲決定装置300は、監視対象のソフトウェアのソースコードが入力され、入力されたソースコードに改ざん検知機能及び改ざん検知機能呼び出し関数を組み込む処理も行う構成である。
[実施の形態3の構成]
まず、
図12を参照して、本実施の形態3に係る監視範囲決定装置300の構成例について説明する。
図12を参照すると、本実施の形態3に係る監視範囲決定装置300は、上述した実施の形態1に係る監視範囲決定装置100における入出力部101及びCFG生成部102を、それぞれ、入出力部301及びCFG生成部302に置き換えると共に、改ざん検知機能組み込み部304を追加したものである。監視範囲決定装置300は、それ以外の構成については、監視範囲決定装置100と同じであるため、詳細な説明は省略する。
【0070】
本実施の形態3に係る入出力部301は、監視対象のソフトウェアのソースコードが入力される。入出力部301は、入力されたソースコードを記憶部104に記憶させ、改ざん検知機能組み込み部304に処理を行うよう通知を送る。
【0071】
また、入出力部301は、ホワイトリスト作成部103から通知を受け取ると、記憶部104から、改ざん検知機能組み込みバイナリ及びホワイトリストを読み出し、読み出した改ざん検知機能組み込みバイナリ及びホワイトリストを出力する。ただし、入出力部301は、記憶部104から改ざん検知機能組み込みバイナリ及びホワイトリストを読み出すことには限定されない。入出力部301は、改ざん検知機能組み込みバイナリをCFG生成部302から受け取ってもよいし、ホワイトリストをホワイトリスト作成部103から受け取ってもよい。
【0072】
本実施の形態3に係る改ざん検知機能組み込み部304は、入出力部301から通知を受け取ると、記憶部104からソースコードを読み出し、読み出したソースコードに改ざん検知機能及び改ざん検知機能呼び出し関数を組み込む。改ざん検知機能組み込み部304は、改ざん検知機能及び改ざん検知機能呼び出し関数を組み込んだソースコード(以下、改ざん検知機能組み込みソースコードと呼ぶ)を記憶部104に記憶させ、CFG生成部302に処理を行うよう通知を送る。
【0073】
なお、改ざん検知機能組み込み部304において、ソースコードに改ざん検知機能及び改ざん検知機能呼び出し関数を組み込む方法は、任意の方法を利用できる。例えば、改ざん検知機能呼び出し関数を組み込む方法に関しては、改ざん検知機能組み込み部304は、CFG生成部302にCFGの生成を依頼し、そのCFGを基に、改ざん検知機能呼び出し関数を組み込むソースコードの組み込み箇所を決定し、決定した組み込み箇所に改ざん検知機能呼び出し関数を組み込んでも良い。
【0074】
本実施の形態3に係るCFG生成部302は、改ざん検知機能組み込み部304から通知を受け取ると、記憶部104から改ざん検知機能組み込みソースコードを読み出し、ビルドを行う。CFG生成部302は、ビルドにより生成された改ざん検知機能組み込みバイナリを記憶部104に記憶させる。また、CFG生成部302は、改ざん検知機能組み込みバイナリを解析して、CFGを生成し、生成したCFGをホワイトリスト作成部103へ送る。
【0075】
[実施の形態3の動作]
次に、
図13の流れ図を参照して、本実施の形態3に係る監視範囲決定装置300の全体の動作例について詳細に説明する。
【0076】
図13を参照すると、まず、入出力部301には、監視対象のソフトウェアのソースコードが入力される。入出力部301は、入力されたソースコードを記憶部104に記憶させ、改ざん検知機能組み込み部304に処理を行うよう通知を送る(ステップA5)。
【0077】
改ざん検知機能組み込み部304は、入出力部301から通知を受け取ると、記憶部104から、ステップA5で入力されたソースコードを読み出し、読み出したソースコードに改ざん検知機能及び改ざん検知機能呼び出し関数を組み込み、改ざん検知機能組み込みソースコードを生成する。さらに、改ざん検知機能組み込み部304は、改ざん検知機能組み込みソースコードを記憶部104に記憶させ、CFG生成部302に処理を行うよう通知を送る(ステップA6)。
【0078】
CFG生成部302は、改ざん検知機能組み込み部304から通知を受け取ると、記憶部104から、ステップA6で生成された改ざん検知機能組み込みソースコードを読み出し、ビルドを行う。さらに、CFG生成部302は、ビルドにより生成された改ざん検知機能組み込みバイナリを記憶部104に記憶させる。さらに、CFG生成部302は、改ざん検知機能組み込みバイナリを解析して、CFGを生成し、生成したCFGをホワイトリスト作成部103へ送る(ステップA7)。
【0079】
ホワイトリスト作成部103は、CFG生成部302から、ステップA7で生成されたCFGを受け取ると、受け取ったCFGを基に、記憶部104から改ざん検知機能組み込みバイナリを読み出す。さらに、ホワイトリスト作成部103は、CFG及び改ざん検知機能組み込みバイナリを基に、ホワイトリストを作成する。さらに、ホワイトリスト作成部103は、作成したホワイトリストを記憶部104に記憶させ、入出力部301に処理を行うよう通知を送る(ステップA8)。なお、ステップA8においては、上述した実施の形態1で説明した
図5と同様の動作を行えば良い。
【0080】
入出力部301は、ホワイトリスト作成部103から通知を受け取ると、記憶部104から、ステップA7で生成された改ざん検知機能組み込みバイナリ及びステップA8で作成されたホワイトリストを読み出し、読み出した改ざん検知機能組み込みバイナリ及びホワイトリストを出力する(ステップA9)。
【0081】
[実施の形態3の効果]
次に、本実施の形態3に係る監視範囲決定装置300の効果について説明する。
本実施の形態3によれば、ソースコードに改ざん検知機能及び改ざん検知機能呼び出し関数を組み込む改ざん検知機能組み込み部304を設けている。そのため、改ざん検知機能及び改ざん検知機能呼び出し関数の組み込みから、CFG上の改ざん検知機能呼び出し関数の監視範囲の決定までを、行うことができる。
本実施の形態3は、それ以外の効果は、上述した実施の形態1と同じである。
【0082】
なお、本実施の形態3は、上述した実施の形態1を変形した例として説明したが、これには限定されない。本実施の形態3は、上述した実施の形態2を変形した例とすることも可能である。上述した実施の形態2を変形する場合、
図13のステップA8においては、上述した実施の形態2で説明した
図10と同様の動作を行えば良い。
【0083】
[実施の形態4]
次に、
図14を参照して、本実施の形態4に係る監視範囲決定装置400のハードウェア構成例について説明する。
図14を参照すると、監視範囲決定装置400は、プロセッサ401と、メモリ402と、を含む。
【0084】
プロセッサ401は、例えば、MPU(Micro Processing Unit)、またはCPUであってもよい。プロセッサ401は、複数のプロセッサを含んでもよい。メモリ402は、揮発性メモリ及び不揮発性メモリの組み合わせによって構成される。メモリ402は、プロセッサ401から離れて配置されたストレージを含んでもよい。この場合、プロセッサ401は、図示されていないI/Oインタフェースを介してメモリ402にアクセスしてもよい。
【0085】
上述した実施の形態1,2,3に係る監視範囲決定装置100,200,300は、それぞれ、
図14に示したハードウェア構成を有することができる。上述した実施の形態1,2,3に係る監視範囲決定装置100,200,300の入出力部101,301、CFG生成部102,302、ホワイトリスト作成部103,203、及び改ざん検知機能組み込み部304は、プロセッサ401がメモリ402に記憶されたプログラムを読み込んで実行することにより実現されてもよい。また、上述した実施の形態1,2,3に係る監視範囲決定装置100,200,300の記憶部104は、メモリ402により実現されてもよい。
【0086】
プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、監視範囲決定装置100,200,300に供給することができる。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)を含む。さらに、非一時的なコンピュータ可読媒体の例は、CD-ROM(Read Only Memory) 、CD-R、CD-R/Wを含む。さらに、非一時的なコンピュータ可読媒体の例は、半導体メモリを含む。半導体メモリは、例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory)を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によって監視範囲決定装置100,200,300に供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムを監視範囲決定装置100,200に供給できる。
【0087】
以上、実施の形態を参照して本開示を説明したが、本開示は上述した実施の形態に限定されるものではない。本開示の構成や詳細には、本開示のスコープ内で当業者が理解し得る様々な変更をすることができる。
【0088】
例えば、上述した実施の形態においては、監視対象のソフトウェアに組み込む改ざん検知機能が、ハッシュ値を用いたホワイトリスト型の改ざん検知機能であるものとして説明したが、これには限定されない。例えば、本開示は、動作中の機器のメモリの情報を、正常時の機器のメモリの情報と比較し、その比較の結果に基づいて、改ざんの有無を監視する構成であれば、任意の改ざん検知機能に適用可能である。
【符号の説明】
【0089】
100 監視範囲決定装置
101 入出力部
102 CFG生成部
103 ホワイトリスト作成部
104 記憶部
200 監視範囲決定装置
203 ホワイトリスト作成部
300 監視範囲決定装置
301 入出力部
302 CFG生成部
304 改ざん検知機能組み込み部
400 監視範囲決定装置
401 プロセッサ
402 メモリ