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

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

▶ 日本電気株式会社の特許一覧

特許7605308監視範囲決定装置、監視範囲決定方法、及びプログラム
<>
  • 特許-監視範囲決定装置、監視範囲決定方法、及びプログラム 図1
  • 特許-監視範囲決定装置、監視範囲決定方法、及びプログラム 図2
  • 特許-監視範囲決定装置、監視範囲決定方法、及びプログラム 図3
  • 特許-監視範囲決定装置、監視範囲決定方法、及びプログラム 図4
  • 特許-監視範囲決定装置、監視範囲決定方法、及びプログラム 図5
  • 特許-監視範囲決定装置、監視範囲決定方法、及びプログラム 図6
  • 特許-監視範囲決定装置、監視範囲決定方法、及びプログラム 図7
  • 特許-監視範囲決定装置、監視範囲決定方法、及びプログラム 図8
  • 特許-監視範囲決定装置、監視範囲決定方法、及びプログラム 図9
  • 特許-監視範囲決定装置、監視範囲決定方法、及びプログラム 図10
  • 特許-監視範囲決定装置、監視範囲決定方法、及びプログラム 図11
  • 特許-監視範囲決定装置、監視範囲決定方法、及びプログラム 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-16
(45)【発行日】2024-12-24
(54)【発明の名称】監視範囲決定装置、監視範囲決定方法、及びプログラム
(51)【国際特許分類】
   G06F 21/54 20130101AFI20241217BHJP
【FI】
G06F21/54
【請求項の数】 9
(21)【出願番号】P 2023526709
(86)(22)【出願日】2021-06-09
(86)【国際出願番号】 JP2021021859
(87)【国際公開番号】W WO2022259401
(87)【国際公開日】2022-12-15
【審査請求日】2023-12-01
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成30年度 国立研究開発法人新エネルギー・産業技術総合開発機構「戦略的イノベーション創造プログラム(SIP)第2期/IoT社会に対応したサイバー・フィジカル・セキュリティ/(A2)IoT機器等向け真贋判定による信頼の証明技術の研究開発事業」に関する研究開発、産業技術力強化法第17条の適用を受ける特許出願
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100103894
【弁理士】
【氏名又は名称】家入 健
(72)【発明者】
【氏名】早木 悠斗
(72)【発明者】
【氏名】山垣 則夫
【審査官】平井 誠
(56)【参考文献】
【文献】国際公開第2018/150619(WO,A1)
【文献】早木 悠斗 他,IoT機器向け改ざん検知機能による信頼の証明技術の提案,2020年 暗号と情報セキュリティシンポジウム予稿集,日本,2020年 暗号と情報セキュリティシンポジウム実行委員,2020年01月21日,pp.1-6
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/54
(57)【特許請求の範囲】
【請求項1】
監視対象のソフトウェアに対して、改ざん検知機能と共に組み込まれる改ざん検知機能呼び出し関数の監視範囲を決定する監視範囲決定装置であって、
前記ソフトウェアのバイナリに基づいて、制御フローグラフ(Control Flow Graph;CFG)を生成するCFG生成部と、
監視範囲決定部と、を備え、
前記監視範囲決定部は、
前記CFGに基づいて、前記改ざん検知機能呼び出し関数を前記ソフトウェアのソースコードに組み込む組み込み箇所を仮決定すると共に、前記CFGに基づいて、所定の規則に従って、前記組み込み箇所を仮決定した前記改ざん検知機能呼び出し関数の監視範囲を仮決定し、
前記組み込み箇所を仮決定した前記改ざん検知機能呼び出し関数を順次選択し、
前記選択した改ざん検知機能呼び出し関数の仮決定された監視範囲に対し、予め設定された許容処理遅延に基づいて、ノードを追加し、
前記選択した改ざん検知機能呼び出し関数の仮決定された監視範囲にノードが追加された後の監視範囲を、前記選択した改ざん検知機能呼び出し関数の監視範囲に決定する、
監視範囲決定装置。
【請求項2】
前記監視範囲決定部は、
前記選択した改ざん検知機能呼び出し関数の仮決定された監視範囲に対し、当該監視範囲のサイズが、前記許容処理遅延に応じた閾値サイズを超えないように、ノードを追加する、
請求項1に記載の監視範囲決定装置。
【請求項3】
前記監視範囲決定部は、
前記選択した改ざん検知機能呼び出し関数の仮決定された監視範囲において、当該監視範囲に含まれるノードの次に実行される可能性のあるノードの割合が多くなるように、当該監視範囲に追加するノードを選択する、
請求項1又は2に記載の監視範囲決定装置。
【請求項4】
前記監視範囲決定部は、
前記組み込み箇所を仮決定した前記改ざん検知機能呼び出し関数のうち、前記選択した改ざん検知機能呼び出し関数の仮決定された監視範囲に追加したノードを監視するよう仮決定していた前記改ざん検知機能呼び出し関数を、削除することを決定する、
請求項1から3のいずれか1項に記載の監視範囲決定装置。
【請求項5】
前記所定の規則は、前記組み込み箇所を仮決定した対象の改ざん検知機能呼び出し関数を含むノードの全ての子孫ノードのうち、前記改ざん検知機能呼び出し関数を含まないノードを辿り、前記対象の改ざん検知機能呼び出し関数を含むノードから、次の前記改ざん検知機能呼び出し関数を含むノードの直前のノードまでを、前記対象の改ざん検知機能呼び出し関数の監視範囲に追加する規則である、
請求項1から4のいずれか1項に記載の監視範囲決定装置。
【請求項6】
前記所定の規則は、前記組み込み箇所を仮決定した対象の改ざん検知機能呼び出し関数を含むノードを、前記対象の改ざん検知機能呼び出し関数の監視範囲に追加する規則である、
請求項1から4のいずれか1項に記載の監視範囲決定装置。
【請求項7】
前記改ざん検知機能は、前記改ざん検知機能呼び出し関数の監視範囲のハッシュ値のリストとして作成されたホワイトリスト型の改ざん検知機能である、
請求項1から6のいずれか1項に記載の監視範囲決定装置。
【請求項8】
監視対象のソフトウェアに対して、改ざん検知機能と共に組み込まれる改ざん検知機能呼び出し関数の監視範囲を決定する監視範囲決定装置が実行する監視範囲決定方法であって、
前記ソフトウェアのバイナリに基づいて、制御フローグラフ(Control Flow Graph;CFG)を生成するステップと、
前記CFGに基づいて、前記改ざん検知機能呼び出し関数を前記ソフトウェアのソースコードに組み込む組み込み箇所を仮決定すると共に、前記CFGに基づいて、所定の規則に従って、前記組み込み箇所を仮決定した前記改ざん検知機能呼び出し関数の監視範囲を仮決定するステップと、
前記組み込み箇所を仮決定した前記改ざん検知機能呼び出し関数を順次選択するステップと、
前記選択した改ざん検知機能呼び出し関数の仮決定された監視範囲に対し、予め設定された許容処理遅延に基づいて、ノードを追加するステップと、
前記選択した改ざん検知機能呼び出し関数の仮決定された監視範囲にノードが追加された後の監視範囲を、前記選択した改ざん検知機能呼び出し関数の監視範囲に決定するステップと、を含む、
監視範囲決定方法。
【請求項9】
監視対象のソフトウェアに対して、改ざん検知機能と共に組み込まれる改ざん検知機能呼び出し関数の監視範囲を決定するンピュータ
前記ソフトウェアのバイナリに基づいて、制御フローグラフ(Control Flow Graph;CFG)を生成する手順と、
前記CFGに基づいて、前記改ざん検知機能呼び出し関数を前記ソフトウェアのソースコードに組み込む組み込み箇所を仮決定すると共に、前記CFGに基づいて、所定の規則に従って、前記組み込み箇所を仮決定した前記改ざん検知機能呼び出し関数の監視範囲を仮決定する手順と、
前記組み込み箇所を仮決定した前記改ざん検知機能呼び出し関数を順次選択する手順と、
前記選択した改ざん検知機能呼び出し関数の仮決定された監視範囲に対し、予め設定された許容処理遅延に基づいて、ノードを追加する手順と、
前記選択した改ざん検知機能呼び出し関数の仮決定された監視範囲にノードが追加された後の監視範囲を、前記選択した改ざん検知機能呼び出し関数の監視範囲に決定する手順と、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、改ざん検知機能を呼び出す改ざん検知機能呼び出し関数が監視する監視範囲を決定する監視範囲決定装置、監視範囲決定方法、及びコンピュータ可読媒体に関し、特に、IoT(Internet of Things)機器などの機器のソフトウェアに用いる監視範囲決定装置、監視範囲決定方法、及びコンピュータ可読媒体に関する。
【背景技術】
【0002】
近年、IoT機器が普及している。これに伴い、IoT機器のようなメモリやCPU(Central Processing Unit)などのリソースが潤沢ではない機器でも動作するセキュリティシステムが要求されている。
【0003】
関連するセキュリティシステムとして、ハッシュ値を用いたホワイトリスト型の改ざん検知機能を機器に組み込み、機器上のソフトウェアが正しい状態であるか否か(改ざんされていないか否か)を監視する方式が知られている。
【0004】
ハッシュ値を用いたホワイトリスト型の改ざん検知機能とは、正常時の機器のメモリの情報を予めホワイトリストに登録しておき、動作中の機器のメモリの情報を、ホワイトリストに登録されているメモリの情報と比較し、改ざんの有無を監視する機能である。このとき、メモリの情報はハッシュ値の形で管理される。
【0005】
ハッシュ値を用いたホワイトリスト型の改ざん検知機能は、次のように実現される。まず、事前に、正常時の機器のメモリの情報を何等かの方法で取得し、取得したメモリの情報をホワイトリストに登録する。メモリの情報は、実行コードがメモリ上にどのように展開されているのかを示す情報となる。次に、機器の動作中の任意のタイミングでメモリの情報を取得し、取得したメモリの情報をホワイトリストに登録されているメモリの情報と比較する。比較の結果、機器の動作中に取得したメモリの情報とホワイトリストに登録されているメモリの情報とが一致すれば、改ざんがなく(攻撃を受けていない)、一致しなければ、改ざんされている(攻撃されている)ことになる。
【0006】
ホワイトリストの意味は、正常時のメモリのスナップショットということになる。ただし、メモリのスナップショットをそのままの形で登録・比較するよりも、ハッシュ値の形で登録・比較した方が、機器本来の動作への影響が小さくなる。そのため、ホワイトリストには、正常時のメモリの情報がハッシュ値の形で登録されており、動作中のメモリの情報もハッシュ値の形で管理される。ハッシュ値を用いたホワイトリスト型の改ざん検知機能の一例が、非特許文献1,2に開示されている。
【0007】
非特許文献1には、機器に対する入力がトリガとなり、次に実行する機能の改ざんを検知する方法が開示されている。非特許文献1の方法によれば、ユーザーの入力により、次に実行される機能(ここでは、機能Aと呼ぶ)が決まる。また、ユーザーの入力により、改ざん検知機能を呼び出す改ざん検知機能呼び出し関数が起動する。改ざん検知機能呼び出し関数は、改ざん検知機能を呼び出し、機能Aの実行時に使用するメモリ領域を監視範囲に限定して、当該監視範囲の改ざんの有無を監視する。
【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及び図3を参照して、改ざん検知機能呼び出し関数(以下、適宜「フック」と呼ぶ)が組み込まれたソースコード及びCFGの例について説明する。図2は、図1のソースコードに対してフックが組み込まれたソースコードを示し、図3は、図2のソースコードをビルドしたバイナリを基に生成されたCFGを示している。図2及び図3の例では、フックH1は、ノード1の直前に組み込まれ、フックH1の監視範囲はノード1及びノード3になっている。また、フックH2,H4,H5,H6は、それぞれ、ノード2,4,5,6の直前に組み込まれ、フックH2,H4,H5,H6の監視範囲は、それぞれ、ノード2,4,5,6になっている。なお、図2及び図3の例では、フックH1,H2,H4,H5,H6は、それぞれ、ノード1,2,4,5,6の直前に独立したノードとして組み込まれているが、ノード1,2,4,5,6の先頭に組み込まれても良いし、ノード1,2,4,5,6の途中に組み込まれても良い。
【先行技術文献】
【非特許文献】
【0011】
【文献】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
【発明の概要】
【発明が解決しようとする課題】
【0012】
上述したように、ホワイトリストには、メモリの情報がハッシュ値の形で登録される。詳細には、ホワイトリストには、フック毎に、当該フックのID、当該フックの監視範囲、及び当該監視範囲のハッシュ値の組が登録される。
【0013】
そのため、監視範囲の数が増えると、ホワイトリストのサイズが増加する。例えば、1個のノード(ベーシックブロック)を、1個のフックが一度の監視で監視する場合に、ホワイトリストのサイズが最大になる。この場合のホワイトリストのサイズSizewhitelistは、以下の数式1で表される。
【数1】
【0014】
数式1において、Numbasic blockは、ノード(ベーシックブロック)の数である。また、identiferは、フックのIDのサイズである。また、Addrstartは、監視範囲の始点アドレスのサイズであり、Addrendは、監視範囲の終点アドレスのサイズである。また、hashvalueは、監視範囲のハッシュ値のサイズ(SHA-256であれば、32bytes)である。なお、数式1では、監視範囲を、始点アドレスと終点アドレスの組で表しているが、監視範囲は、始点アドレスとアドレス範囲(始点アドレスから終点アドレスまでの範囲)の組で表しても良い。その場合、数式1は、監視範囲の終点アドレスのサイズを、監視範囲のアドレス範囲のサイズに置換すれば良い。また、数式1の()内のパラメータのうち、最もサイズが大きいのはハッシュ値である。
【0015】
ここで、ホワイトリストのサイズは、監視範囲をまとめることで、削減することが可能である。監視範囲をまとめる場合のホワイトリストのサイズSizewhitelistは、以下の数式2で表される。
【数2】
【0016】
数式2において、Numcheckは、監視範囲の数である。
数式2は、数式1と比較して、フックのIDの数が削減されると共に、サイズが大きなハッシュ値の数が削減される。そのため、数式2で算出されるホワイトリストのサイズは、数式1で算出されるホワイトリストのサイズよりも削減される。
【0017】
例えば、CFG上に10個のノード(ベーシックブロック)が存在する場合に、1個のフックが1個のノード(ベーシックブロック)を監視すると仮定すると、ホワイトリストのサイズSizewhitelistは、数式1に従い、以下の数式3で表される。
【数3】
【0018】
一方、CFG上に10個のノード(ベーシックブロック)が存在する場合に、2個のノード(ベーシックブロック)ずつをまとめて、1個のフックが2個のノード(ベーシックブロック)を監視すると仮定すると、ホワイトリストのサイズSizewhitelistは、数式2に従い、以下の数式4で表される。
【数4】
【0019】
このように、監視範囲をまとめることで、ホワイトリストのサイズを削減することが可能になる。
しかし、監視範囲を単純にまとめて、ホワイトリストのサイズを削減するだけでは、改ざん検知処理の処理遅延が増加してしまう場合がある。
【0020】
そこで本開示の目的は、ホワイトリストのサイズを削減しつつ、改ざん検知処理の処理遅延が適正な範囲となるように、改ざん検知機能呼び出し関数の監視範囲を決定できる監視範囲決定装置、監視範囲決定方法、及びコンピュータ可読媒体を提供することにある。
【課題を解決するための手段】
【0021】
本開示の一態様に係る監視範囲決定装置は、
監視対象のソフトウェアに対して、改ざん検知機能と共に組み込まれる改ざん検知機能呼び出し関数の監視範囲を決定する監視範囲決定装置であって、
前記ソフトウェアのバイナリに基づいて、制御フローグラフ(Control Flow Graph;CFG)を生成するCFG生成部と、
監視範囲決定部と、を備え、
前記監視範囲決定部は、
前記CFGに基づいて、前記改ざん検知機能呼び出し関数を前記ソフトウェアのソースコードに組み込む組み込み箇所を仮決定すると共に、前記CFGに基づいて、所定の規則に従って、前記組み込み箇所を仮決定した前記改ざん検知機能呼び出し関数の監視範囲を仮決定し、
前記組み込み箇所を仮決定した前記改ざん検知機能呼び出し関数を順次選択し、
前記選択した改ざん検知機能呼び出し関数の仮決定された監視範囲に対し、予め設定された許容処理遅延に基づいて、ノードを追加し、
前記選択した改ざん検知機能呼び出し関数の仮決定された監視範囲にノードが追加された後の監視範囲を、前記選択した改ざん検知機能呼び出し関数の監視範囲に決定する。
【0022】
本開示の他の態様に係る監視範囲決定方法は、
監視対象のソフトウェアに対して、改ざん検知機能と共に組み込まれる改ざん検知機能呼び出し関数の監視範囲を決定する監視範囲決定装置が実行する監視範囲決定方法であって、
前記ソフトウェアのバイナリに基づいて、制御フローグラフ(Control Flow Graph;CFG)を生成するステップと、
前記CFGに基づいて、前記改ざん検知機能呼び出し関数を前記ソフトウェアのソースコードに組み込む組み込み箇所を仮決定すると共に、前記CFGに基づいて、所定の規則に従って、前記組み込み箇所を仮決定した前記改ざん検知機能呼び出し関数の監視範囲を仮決定するステップと、
前記組み込み箇所を仮決定した前記改ざん検知機能呼び出し関数を順次選択するステップと、
前記選択した改ざん検知機能呼び出し関数の仮決定された監視範囲に対し、予め設定された許容処理遅延に基づいて、ノードを追加するステップと、
前記選択した改ざん検知機能呼び出し関数の仮決定された監視範囲にノードが追加された後の監視範囲を、前記選択した改ざん検知機能呼び出し関数の監視範囲に決定するステップと、を含む。
【0023】
本開示のさらに他の態様に係るコンピュータ可読媒体は、
監視対象のソフトウェアに対して、改ざん検知機能と共に組み込まれる改ざん検知機能呼び出し関数の監視範囲を決定する処理をコンピュータに実行させるプログラムが格納された非一時的なコンピュータ可読媒体であって、
前記プログラムは、
前記ソフトウェアのバイナリに基づいて、制御フローグラフ(Control Flow Graph;CFG)を生成するステップと、
前記CFGに基づいて、前記改ざん検知機能呼び出し関数を前記ソフトウェアのソースコードに組み込む組み込み箇所を仮決定すると共に、前記CFGに基づいて、所定の規則に従って、前記組み込み箇所を仮決定した前記改ざん検知機能呼び出し関数の監視範囲を仮決定するステップと、
前記組み込み箇所を仮決定した前記改ざん検知機能呼び出し関数を順次選択するステップと、
前記選択した改ざん検知機能呼び出し関数の仮決定された監視範囲に対し、予め設定された許容処理遅延に基づいて、ノードを追加するステップと、
前記選択した改ざん検知機能呼び出し関数の仮決定された監視範囲にノードが追加された後の監視範囲を、前記選択した改ざん検知機能呼び出し関数の監視範囲に決定するステップと、を含む。
【発明の効果】
【0024】
上述の態様によれば、ホワイトリストのサイズを削減しつつ、改ざん検知処理の処理遅延が適正な範囲となるように、改ざん検知機能呼び出し関数の監視範囲を決定できる監視範囲決定装置、監視範囲決定方法、及びコンピュータ可読媒体を提供できるという効果が得られる。
【図面の簡単な説明】
【0025】
図1】ソースコード及びCFGの例を示す図である。
図2図1のソースコードに対して改ざん検知機能呼び出し関数を組み込んだソースコードの例を示す図である。
図3図2のソースコードを基に生成されたCFGの例を示す図である。
図4】実施の形態1に係る監視範囲決定装置の構成例を示すブロック図である。
図5】実施の形態1に係るホワイトリスト作成部が、フックの組み込み箇所及び当該フックの監視範囲を決定する決定方法の具体例を説明する図である。
図6】実施の形態1に係るホワイトリスト作成部が、フックの監視範囲を決定する際に用いる、所定のポリシーの例を説明する図である。
図7】実施の形態1に係る監視範囲決定装置の全体の動作例を説明する流れ図である。
図8】実施の形態1に係るホワイトリスト作成部が、図7のステップA4で行う動作例を説明する流れ図である。
図9】実施の形態1に係るホワイトリスト作成部が、図8のステップB4で行う動作例を説明する流れ図である。
図10】実施の形態1に係るホワイトリスト作成部が仮決定したフックの組み込み箇所及び監視範囲(監視ノード)の例を示す図である。
図11】実施の形態2に係る監視範囲決定装置の構成例を示すブロック図である。
図12】実施の形態3に係る監視範囲決定装置のハードウェア構成例を示すブロック図である。
【発明を実施するための形態】
【0026】
以下、図面を参照しつつ、本開示の実施の形態について説明する。なお、以下の実施の形態において、同一又は同等の要素には、同一の符号を付し、重複する説明は省略される。また、以下の各実施の形態で説明する監視範囲決定装置は、監視対象のソフトウェアに対して、ハッシュ値を用いたホワイトリスト型の改ざん検知機能と共に組み込まれる改ざん検知機能呼び出し関数(フック)の監視範囲を決定する装置の例である。
【0027】
[実施の形態1]
[実施の形態1の構成]
まず、図4を参照して、本実施の形態1に係る監視範囲決定装置100の構成例について説明する。なお、図4において、一方向性の矢印は、あるデータ(又は、信号、情報等)の流れの方向を端的に示したもので、双方向性を排除するものではない。
【0028】
図4を参照すると、本実施の形態1に係る監視範囲決定装置100は、入出力部101と、ビルド部102と、Control Flow Graph(CFG)生成部103と、ホワイトリスト作成部104と、記憶部105と、を含む。
【0029】
これらの構成要素は、それぞれ次のように動作する。
入出力部101には、監視対象のソフトウェア、すなわち、改ざん検知機能を組み込む対象となるソフトウェアのソースコードが入力される。監視対象のソフトウェアは、例えば、IoT機器上の制御ソフトウェア等である。入出力部101は、入力されたソースコードを記憶部105に記憶させ、ビルド部102に処理を行うよう通知を送る。
【0030】
また、入出力部101は、ホワイトリスト作成部104から後述する通知を受け取ると、記憶部105から、後述する改ざん検知機能及びフックを組み込んだソフトウェアのバイナリ(以下、「改ざん検知機能組み込みバイナリ」と呼ぶ)を読み出し、読み出した改ざん検知機能組み込みバイナリを出力する。また、入出力部101は、記憶部105から、後述するホワイトリストを読み出し、読み出したホワイトリストを改ざん検知機能組み込みバイナリと共に出力する。ただし、入出力部101は、記憶部105から改ざん検知機能組み込みバイナリ及びホワイトリストを読み出すことには限定されない。入出力部101は、改ざん検知機能組み込みバイナリをビルド部102から受け取っても良いし、ホワイトリストをホワイトリスト作成部104から受け取っても良い。
【0031】
ビルド部102は、入出力部101から通知を受け取ると、記憶部105からソースコードを読み出し、ビルドを行う。ビルド部102は、ビルドにより生成されたバイナリを記憶部105に記憶させ、CFG生成部103に処理を行うよう通知を送る。
【0032】
また、ビルド部102は、ホワイトリスト作成部104から後述する通知を受け取ると、記憶部105から、後述する改ざん検知機能及びフックを組み込んだソースコード(以下、「改ざん検知機能組み込みソースコード」と呼ぶ)を読み出し、ビルドを行う。ビルド部102は、ビルドにより生成された改ざん検知機能組み込みバイナリを記憶部105に記憶させる。
【0033】
CFG生成部103は、ビルド部102から通知を受け取ると、記憶部105からバイナリを読み出し、読み出したバイナリを解析し、CFGを生成する。CFG生成部103は、当該バイナリから生成したCFGをホワイトリスト作成部104に送る。
【0034】
ホワイトリスト作成部104は、CFG生成部103からCFGを受け取ると、当該CFGを基に、ソースコードに組み込む各フックについて、当該フックを組み込むソースコードの組み込み箇所を決定すると共に、当該フックの監視範囲を決定する。
【0035】
また、ホワイトリスト作成部104は、上記で決定したソースコードの組み込み箇所に各フックを組み込むと共に、改ざん検知機能もソースコードに組み込む。このようにしてフック及び改ざん検知機能が組み込まれたソースコード一式が改ざん検知機能組み込みソースコードである。ホワイトリスト作成部104は、改ざん検知機能組み込みソースコードを記憶部105に記憶させる。また、ホワイトリスト作成部104は、改ざん検知機能組み込みソースコードを記憶部105に記憶させた後、ビルド部102に処理を行うよう通知を送る。
【0036】
また、ホワイトリスト作成部104は、フック毎に、当該フックのID、当該フックの監視範囲、及び当該監視範囲のハッシュ値の組が登録されたホワイトリストを作成し、作成したホワイトリストを記憶部105に記憶させる。また、ホワイトリスト作成部104は、ホワイトリストを記憶部105に記憶させた後、入出力部101に処理を行うよう通知を送る。
【0037】
記憶部105は、入出力部101から受け取ったソースコードと、ホワイトリスト作成部104から受け取ったホワイトリスト及び改ざん検知機能組み込みソースコードと、ビルド部102から受け取ったバイナリ及び改ざん検知機能組み込みバイナリと、を記憶する。
【0038】
なお、記憶部105は、監視範囲決定装置100において必須の構成要素ではなく、監視範囲決定装置100の外部に設けても良い。すなわち、監視範囲決定装置100は、入出力部101と、ビルド部102と、CFG生成部103と、ホワイトリスト作成部104と、からなる最小構成で実現しても良い。
【0039】
続いて、ホワイトリスト作成部104において、フックの組み込み箇所及び当該フックの監視範囲を決定する決定方法の概要について説明する。
【0040】
改ざん検知処理においては、フックが一度の監視を行う際に許容される許容処理遅延が予め設定されている。これを前提に、ホワイトリスト作成部104は、フックの監視範囲を決定する。なお、改ざん検知処理の処理遅延には、メモリの読み出しやハッシュ値の計算による処理遅延が含まれるが、メモリの読み出し時間やハッシュ値の計算時間については、過去の履歴等から見積もることが可能である。
【0041】
まず、ホワイトリスト作成部104は、CFGを基に、フックの組み込み箇所を仮決定すると共に、CFGを基に、所定の規則に従って、組み込み箇所を仮決定した当該フックの監視範囲を仮決定する(手順1)。
【0042】
例えば、所定の規則は、当該フックを含むノードを、当該フックの監視範囲に追加する規則とすることができる。例えば、図2及び図3の例において、当該フックがフックH1である場合には、フックH1を含むノードは、ノード1である。そのため、ホワイトリスト作成部104は、フックH1を含むノード1を、フックH1の監視範囲に追加する。
【0043】
又は、所定の規則は、当該フックを含むノードの全ての子孫ノードのうち、フックを含まないノードを辿り、当該フックを含むノードから、次のフックを含むノードの直前のノードまでを、当該フックの監視範囲に追加する規則とすることができる。例えば、図2及び図3の例において、当該フックがフックH1である場合には、フックH1を含むノードは、ノード1である。また、ノード1の子孫ノードのうち、フックを含まないノードは、ノード3である。そのため、ホワイトリスト作成部104は、ノード3を辿るが、ノード3の子ノードであるノード4,5は、それぞれ、フックH4,H5を含んでいる。そのため、ホワイトリスト作成部104は、フックH1を含むノード1と、ノード3と、を、フックH1の監視範囲に追加する。
【0044】
次に、ホワイトリスト作成部104は、組み込み箇所を仮決定したフックを順次選択し、選択した当該フックの仮決定した監視範囲に対し、予め設定された許容処理遅延を基に、他の監視範囲(ノード)を追加する。詳細には、ホワイトリスト作成部104は、選択した当該フックの仮決定された監視範囲のサイズを、予め設定された許容処理遅延から導出したサイズ(以下、「閾値サイズ」と呼ぶ)と比較する。当該フックの仮決定された監視範囲のサイズが閾値サイズ以下である場合、ホワイトリスト作成部104は、当該フックの仮決定された監視範囲に対し、所定のポリシーに従って、当該監視範囲のサイズが閾値サイズを超えないように、他の監視範囲(ノード)を追加する。そして、ホワイトリスト作成部104は、当該フックの仮決定された監視範囲に他の監視範囲(ノード)が追加された後の監視範囲を、当該フックの監視範囲に決定する。また、ホワイトリスト作成部104は、当該他の監視範囲(ノード)を監視するよう仮決定していたフックを削除することを決定する(手順2)。
【0045】
ここで、図5を参照して、ホワイトリスト作成部104において、フックの組み込み箇所及び当該フックの監視範囲を決定する決定方法の具体例について説明する。
図5において、上段は、仮決定された監視範囲を示し、下段は、最終的に決定された監視範囲を示している。
また、図5の上段において、監視1~4は、それぞれ、例えば、フックH1~H4の仮決定された監視範囲を示し、処理1~4は、それぞれ、ソフトウェアで行われる処理を示している。
【0046】
図5の上段を参照すると、フックH2の仮決定された監視範囲のサイズは、許容処理遅延から導出した閾値サイズ以下である。また、フックH2の仮決定された監視範囲に対し、フックH3の仮決定された監視範囲を追加したと仮定しても、追加後の監視範囲の合計サイズは、閾値サイズ以下である。
【0047】
そこで、ホワイトリスト作成部104は、図5の下段に示されるように、フックH2の仮決定された監視範囲に対し、フックH3の仮決定された監視範囲を追加し、追加後の監視範囲をフックH2の監視範囲に決定する。これに伴い、ホワイトリスト作成部104は、フックH3を削除することを決定する。このように、許容処理遅延から導出した閾値サイズを超えないように、監視範囲をまとめることで、ホワイトリストのサイズを削減しつつ、改ざん検知処理の処理遅延が許容処理遅延以上に増大することを防止できる。
【0048】
続いて、以下では、図6を参照して、ホワイトリスト作成部104において、フックの監視範囲を決定する際に用いる、所定のポリシーの例について説明する。
所定のポリシーとしては、あるフックについて、仮決定された監視範囲の次に実行される可能性があるノードについては、当該フックにより監視を行い、また、仮決定された監視範囲からの分岐先にあって実行されない可能性があるノードについては、当該フックによる監視を極力省略することを基本方針とする。
【0049】
ホワイトリスト作成部104は、上述した所定のポリシーに従うべく、以下の優先度に従って、フックの監視範囲を決定する。
第1優先度(高):
あるフックについて、仮決定された監視範囲から条件分岐がある場合には、分岐先のいずれかのノードが次に必ず実行される。
そこで、ホワイトリスト作成部104は、あるフックについて、仮決定された監視範囲から条件分岐がある場合には、仮決定された監視範囲に対し、分岐先の全てのノードを追加する。これにより、仮決定された監視範囲において、分岐先のノードの割合、すなわち、次に実行される可能性があるノードの割合が多くなる。
【0050】
第2優先度(低):
あるフックについて、仮決定された監視範囲から条件分岐がない場合には、以降のノードは必ず実行される。
そこで、ホワイトリスト作成部104は、あるフックについて、仮決定された監視範囲から条件分岐がない場合には、仮決定された監視範囲に対し、以降の全てのノードを追加する。
【0051】
図6を参照すると、ノードAの直前に組み込まれたフックの監視範囲を決定する例が示されている。ここでは、当該フックの仮決定された監視範囲は、ノードAであると仮定する。また、ノードAには条件分岐がある。
【0052】
この場合、ホワイトリスト作成部104は、第1優先度に従って、当該フックの仮決定された監視範囲(ノードA)に対し、分岐先の全てのノードB,Eを追加する。この場合、ホワイトリストのサイズの削減効果は小さいものの、監視が無駄になる領域が少なく、監視回数が削減される。
【0053】
しかし、当該フックの仮決定された監視範囲(ノードA)に対し、ノードB,Eを追加すると、追加後の監視範囲の合計サイズが、閾値サイズ以上になってしまう場合がある。ここでは、ノードBのサイズがノードEのサイズよりも小さく、仮決定された監視範囲(ノードA)に対し、ノードB,Eを追加すると、追加後の監視範囲の合計サイズが閾値サイズを超えるが、ノードBのみを追加しただけでは、合計サイズが閾値サイズ以下であるものと仮定する。また、ノードB~Dは条件分岐がない。
【0054】
この場合、ホワイトリスト作成部104は、第2優先度に従って、当該フックの仮決定された監視範囲(ノードA)に対し、分岐先のノードBだけでなく、閾値サイズを超えないようであれば、ノードC,Dも逐次追加する。この場合、ノードAからノードEに分岐してしまった場合は、監視が無駄になる領域が多くなるものの、ホワイトリストのサイズの削減効果は大きくなる。
【0055】
[実施の形態1の動作]
続いて、図7の流れ図を参照して、本実施の形態1に係る監視範囲決定装置100の全体の動作例について説明する。
【0056】
図7を参照すると、まず、入出力部101には、監視対象のソフトウェアのソースコードが入力される。入出力部101は、入力されたソースコードを記憶部105に記憶させ、ビルド部102に処理を行うよう通知を送る(ステップA1)。
【0057】
ビルド部102は、入出力部101から通知を受け取ると、記憶部105から、ステップA1で入力されたソースコードを読み出し、読み出したソースコードをビルドし、バイナリを生成する。ビルド部102は、生成したバイナリを記憶部105に記憶させ、CFG生成部103に処理を行うよう通知を送る(ステップA2)。
【0058】
CFG生成部103は、ビルド部102から通知を受け取ると、記憶部105から、ステップA2で生成されたバイナリを読み出し、読み出したバイナリを解析し、CFGを生成する。さらに、CFG生成部103は、生成したCFGをホワイトリスト作成部104へ送る(ステップA3)。
【0059】
ホワイトリスト作成部104は、CFG生成部103から、ステップA3で生成されたCFGを受け取ると、受け取ったCFGを基に、ソースコードに組み込む各フックについて、当該フックを組み込むソースコードの組み込み箇所を決定すると共に、当該フックの監視範囲を決定する(ステップA4)。なお、ステップA4の詳細については後述する。
【0060】
また、ホワイトリスト作成部104は、上記で決定したソースコードの組み込み箇所にフックを組み込むと共に、改ざん検知機能もソースコードに組み込む。これにより、ホワイトリスト作成部104は、フック及び改ざん検知機能を組み込んだ改ざん検知機能組み込みソースコードを生成する。ホワイトリスト作成部104は、改ざん検知機能組み込みソースコードを記憶部105に記憶させる(ステップA5)。また、ホワイトリスト作成部104は、ステップA5の処理が終了すると、ビルド部102に処理を行うよう通知を送る。
【0061】
ビルド部102は、ホワイトリスト作成部104から通知を受け取ると、記憶部105から、ステップA5で生成された改ざん検知機能組み込みソースコードを読み出し、読み出した改ざん検知機能組み込みソースコードをビルドし、改ざん検知機能組み込みバイナリを生成する。ビルド部102は、生成した改ざん検知機能組み込みバイナリを記憶部105に記憶させる(ステップA6)。
【0062】
また、ホワイトリスト作成部104は、フック毎に、当該フックのID、当該フックの監視範囲、及び当該監視範囲のハッシュ値の組が登録されたホワイトリストを作成し、作成したホワイトリストを記憶部105に記憶させる(ステップA7)。また、ホワイトリスト作成部104は、ステップA7の処理が終了すると、入出力部101に処理を行うよう通知を送る。
【0063】
入出力部101は、ホワイトリスト作成部104から通知を受け取ると、記憶部105から、ステップA7で作成されたホワイトリスト及びステップA6で生成された改ざん検知機能組み込みバイナリを読み出し、読み出したホワイトリスト及び改ざん検知機能組み込みバイナリを出力する(ステップA8)。
【0064】
続いて、図8の流れ図を参照して、図7のステップA4でホワイトリスト作成部104が行う動作について詳細に説明する。
【0065】
図8を参照すると、まず、ホワイトリスト作成部104は、ソースコードに組み込む各フックについて、CFGを基に、当該フックの組み込み箇所を仮決定すると共に、CFGを基に、所定の規則に従って、当該フックの監視範囲を仮決定する(ステップB1)。
【0066】
次に、ホワイトリスト作成部104は、未処理のフックがあるか否かを判断する(ステップB2)。未処理のフックとは、以降のステップB4で監視範囲が決定済みのフックと削除が決定されたフックとを除いたフックである。
【0067】
ステップB2において、未処理のフックが存在する場合(ステップB2がYESの場合)は、ホワイトリスト作成部104は、未処理のフックの中から1個のフックを選択する(ステップB3)。
【0068】
次に、ホワイトリスト作成部104は、ステップB3で選択した当該フックの監視範囲を決定する(ステップB4)。具体的には、ホワイトリスト作成部104は、当該フックについて、ステップB1で仮決定した監視範囲に対し、監視範囲のサイズが閾値サイズを超えないように、ノードの追加を試みる。ノードが追加できた場合は、ホワイトリスト作成部104は、ノードが追加された監視範囲を、当該フックの監視範囲に決定する。一方、ノードが追加できなかった場合は、ホワイトリスト作成部104は、ステップB1で仮決定した監視範囲を、当該フックの監視範囲に決定する。各フックの監視範囲の決定時に、バイナリ上にフックを実際に組み込む必要は無いが、技術的に必要であれば、一度フックを組み込んでも良い。なお、ステップB4の詳細については後述する。また、ステップB4において、当該フックの監視範囲にノードを追加した場合には、ホワイトリスト作成部104は、追加したノードを監視するよう仮決定していたフックを削除することを決定する。そして、ステップB2に戻る。なお、ステップB4で監視範囲を決定したフック及び削除を決定したフックについては、上述したように、以降のステップB2では、未処理のフックとして扱わない。
【0069】
一方、ステップB2において、未処理のフックが存在しない場合(ステップB2がNOの場合)は、ホワイトリスト作成部104は、各フックの組み込み箇所及び監視範囲を確定する(ステップB5)。具体的には、ホワイトリスト作成部104は、ステップB1~B4の過程で、削除されずに残った各フックの組み込み箇所及び監視範囲を確定する。このとき、ホワイトリスト作成部104は、各フックの組み込み箇所を、ステップB1で仮決定し、ステップB4で削除されなかった組み込み箇所に確定する。また、ホワイトリスト作成部104は、各フックの監視範囲を、ステップB4で決定した監視範囲に確定する。
【0070】
続いて、図9の流れ図を参照して、図8のステップB4でホワイトリスト作成部104が行う動作について詳細に説明する。ここでは、各フックの監視範囲に含まれるノードを、ひとまとまりのノードと捉え、以下、監視ノードと呼ぶ。例えば、図2及び図3の例と同様に、各フックH1,H2,H4,H5,H6の組み込み箇所及び監視範囲が仮決定された場合には、各フックH1,H2,H4,H5,H6の監視ノードは、図10に示される通りとなる。なお、監視ノード作成時に、バイナリ上にフックを実際に組み込む必要は無いが、技術的に必要であれば、一度フックを組み込んでも良い。また、通常のノードの場合、条件分岐があれば、子ノードは2個となり、条件分岐がなければ、子ノードは1個となるが、監視ノードの子ノードは、3個以上になる場合があり得る。
【0071】
図9を参照すると、まず、ホワイトリスト作成部104は、図8のステップB3で選択された当該フックの仮決定された監視ノードに着目する(ステップC1)。なお、当該フック監視ノードに含まれるノードは、図8のステップB1の処理が終了した後等の任意のタイミングで、記憶部105に記憶させておくものとする。当該フックとして図10のフックH1を選択した例では、フックH1の監視ノードには、ノード1,3が含まれる。
【0072】
次に、ホワイトリスト作成部104は、当該フックの監視ノードのサイズが、予め設定された許容処理遅延から導出した閾値サイズ以下であるか否かを判断する(ステップC2)。
【0073】
ステップC2において、当該フックの監視ノードのサイズが閾値サイズを超えている場合(ステップC2がNOの場合)は、ホワイトリスト作成部104は、当該フックの監視範囲を、当該フックの現在の監視ノードに決定する(ステップC9)。
【0074】
一方、ステップC2において、当該フックの監視ノードのサイズが閾値サイズ以下である場合(ステップC2がYESの場合)は、ホワイトリスト作成部104は、当該フックの監視ノードに、追加を試みていない子ノード(以下、「候補ノード」と呼ぶ)が存在するか否かを判断する(ステップC3)。当該フックとして図10のフックH1を選択した例では、フックH1の監視ノードにおける候補ノードは、ノード2,4,5の3個となる。
【0075】
ステップC3において、当該フックの監視ノードに追加を試みていない候補ノードが存在する場合(ステップC3がYESの場合)は、ホワイトリスト作成部104は、当該フックの監視ノードに、追加を試みていない全ての候補ノードを追加し(ステップC4)、追加した候補ノードを、記憶部105に記憶させる(ステップC5)。当該フックとして図10のフックH1を選択した例では、ホワイトリスト作成部104は、候補ノードであるノード2,4,5の追加を試みていなければ、フックH1の監視ノードに対し、全てのノード2,4,5を追加する。
【0076】
次に、ホワイトリスト作成部104は、当該フックの監視ノードに候補ノードを追加した後の合計サイズが、閾値サイズ以下であるか否かを判断する(ステップC6)。
【0077】
ステップC6において、当該フックの監視ノードの合計サイズが閾値サイズを超えている場合(ステップC6がNOの場合)は、ホワイトリスト作成部104は、ステップC4で追加された候補ノードのうち、サイズが最大の候補ノードを、当該フックの監視ノードから取り除き(ステップC7)、その後、ステップC6の処理に戻る。
一方、ステップC6において、当該フックの監視ノードの合計サイズが閾値サイズ以下である場合(ステップC6がYESの場合)は、ステップC3の処理に戻る。
【0078】
すなわち、ステップC6,C7においては、ホワイトリスト作成部104は、当該フックの監視ノードの合計サイズが閾値サイズ以下になるまで、ステップC4で追加された候補ノードを、サイズが大きい順に、当該フックの監視ノードから取り除く処理を行う。当該フックとして図10のフックH1を選択した例では、フックH1の監視ノードに対し、ステップC4でノード2,4,5を追加した場合、ホワイトリスト作成部104は、ノード2,4,5を、サイズが大きい順に、フックH1の監視ノードから取り除いていく。その結果、フックH1の監視ノードにおいては、ノード2,4,5の少なくとも1個が追加されたままになるか、ノード2,4,5の全てが取り除かれることになる。
【0079】
ステップC6から戻った後のステップC3においては、当該フックの監視ノードに追加されたノードが存在する場合、ホワイトリスト作成部104は、その状態の監視ノードに、追加を試みていない候補ノードが存在するか否かを判断する。当該フックとして図10のフックH1を選択した例では、例えば、フックH1の監視ノードにノード2が追加されていた場合、フックH1の監視ノードにおける新たな候補ノードは、ノード6となる。そのため、以降のステップC4~C7の処理においては、ホワイトリスト作成部104は、フックH1の監視ノードにノード6を追加し、フックH1の監視ノードの合計サイズが閾値サイズ以下であれば、ノード6を追加されたままとし、閾値サイズを超えていれば、ノード6を取り除くことになる。
【0080】
ステップC3において、当該フックの監視ノードに追加を試みていない候補ノードが存在しない場合(ステップC3がNOの場合)は、ホワイトリスト作成部104は、ステップC7で当該フックの監視ノードから取り除かれた候補ノードをリセットし、記憶部105から削除する(ステップC8)。その後、ホワイトリスト作成部104は、当該フックの監視範囲を、当該フックの現在の監視ノードに決定する(ステップC9)。
【0081】
[実施の形態1の効果]
次に、本実施の形態1に係る監視範囲決定装置100の効果について説明する。
本実施の形態1によれば、ホワイトリスト作成部104は、CFGを基に、フックの組み込み箇所を仮決定すると共に、当該フックの監視範囲を仮決定する。次に、ホワイトリスト作成部104は、組み込み箇所を仮決定したフックを順次選択し、選択した当該フックの仮決定した監視範囲に対し、予め設定された許容処理遅延を基に、ノードを追加する。その後、ホワイトリスト作成部104は、当該フックの仮決定された監視範囲にノードが追加された後の監視範囲を、当該フックの監視範囲に決定する。これにより、許容処理遅延を考慮しながら、各フックの監視範囲にノードを追加することができる。従って、監視範囲をまとめて、ホワイトリストのサイズを削減しつつ、改ざん検知処理の処理遅延が許容処理遅延以上に増大することを防止し、適正な範囲となるように、フックの監視範囲を決定できる。
【0082】
また、本実施の形態1によれば、ホワイトリスト作成部104は、仮決定された監視範囲において、次に実行される可能性があるノードの割合が多くなるように、仮決定された監視範囲に追加するノードを選択する。すなわち、ホワイトリスト作成部104は、仮決定された監視範囲に条件分岐がある場合、次に実行される可能性がある分岐先のノードを選択して、仮決定された監視範囲に追加する。これにより、ソフトウェア上で実行されないメモリ領域を無駄に監視してしまわないように、各フックの監視範囲にノードを追加することができる。従って、ホワイトリストのサイズを削減しつつ、監視回数が少なくなるように、フックの監視範囲を決定できる。
【0083】
[実施の形態2]
次に、図11を参照して、本実施の形態2に係る監視範囲決定装置200の構成例について説明する。本実施の形態2は、上述した実施の形態を上位概念化した実施形態に相当する。
図11を参照すると、本実施の形態2に係る監視範囲決定装置200は、CFG生成部201と、監視範囲決定部202と、を含む。
【0084】
CFG生成部201は、監視対象のソフトウェアのバイナリに基づいて、CFGを生成する。CFG生成部201は、上述した実施形態1に係るCFG生成部103に対応する。
【0085】
監視範囲決定部202は、CFGに基づいて、フックを監視対象のソフトウェアのソースコードに組み込む組み込み箇所を仮決定すると共に、CFGに基づいて、所定の規則に従って、組み込み箇所を仮決定したフックの監視範囲を仮決定し、組み込み箇所を仮決定したフックを順次選択する。そして、監視範囲決定部202は、選択したフックの仮決定された監視範囲に対し、予め設定された許容処理遅延に基づいて、ノードを追加し、選択したフックの仮決定された監視範囲にノードが追加された後の監視範囲を、選択したフックの監視範囲に決定する。監視範囲決定部202は、上述した実施形態1に係るホワイトリスト作成部104に対応する。
【0086】
本実施の形態2によれば、許容処理遅延を考慮しながら、各フックの監視範囲にノードを追加することができる。従って、監視範囲をまとめて、ホワイトリストのサイズを削減しつつ、改ざん検知処理の処理遅延が許容処理遅延以上に増大することを防止し、適正な範囲となるように、フックの監視範囲を決定できる。
【0087】
なお、監視範囲決定部202は、選択したフックの仮決定された監視範囲に対し、当該監視範囲のサイズが、許容処理遅延に応じた閾値サイズを超えないように、ノードを追加しても良い。
【0088】
また、監視範囲決定部202は、選択したフックの仮決定された監視範囲において、当該監視範囲に含まれるノードの次に実行される可能性のあるノードの割合が多くなるように、当該監視範囲に追加するノードを選択しても良い。
【0089】
また、監視範囲決定部202は、組み込み箇所を仮決定したフックのうち、選択したフックの仮決定された監視範囲に追加したノードを監視するよう仮決定していたフックを、削除することを決定しても良い。
【0090】
また、所定の規則は、組み込み箇所を仮決定した対象のフックを含むノードの全ての子孫ノードのうち、フックを含まないノードを辿り、対象のフックを含むノードから、次のフックを含むノードの直前のノードまでを、対象のフックの監視範囲に追加する規則であっても良い。
【0091】
また、所定の規則は、組み込み箇所を仮決定した対象のフックを含むノードを、対象のフックの監視範囲に追加する規則であっても良い。
【0092】
また、改ざん検知機能は、フックの監視範囲のハッシュ値のリストとして作成されたホワイトリスト型の改ざん検知機能であっても良い。
【0093】
[実施の形態3]
次に、図12を参照して、本実施の形態3に係る監視範囲決定装置300のハードウェア構成例について説明する。
図12を参照すると、本実施の形態3に係る監視範囲決定装置300は、プロセッサ301と、メモリ302と、を含む。
【0094】
プロセッサ301は、例えば、マイクロプロセッサ、MPU(Micro Processing Unit)、又はCPU(Central Processing Unit)であっても良い。プロセッサ301は、複数のプロセッサを含んでも良い。
【0095】
メモリ302は、揮発性メモリ及び不揮発性メモリの組み合わせによって構成される。メモリ302は、プロセッサ301から離れて配置されたストレージを含んでも良い。この場合、プロセッサ301は、図示されていないI(Input)/O(Output)インタフェースを介してメモリ302にアクセスしても良い。
【0096】
上述した実施の形態1,2に係る監視範囲決定装置100,200は、図12に示されるハードウェア構成を有することができる。メモリ302には、プログラムが記憶される。このプログラムは、コンピュータに読み込まれた場合に、上述した実施の形態1,2で説明された1又はそれ以上の機能をコンピュータに行わせるための命令群(又はソフトウェアコード)を含む。上述した監視範囲決定装置100,200における、入出力部101、ビルド部102、CFG生成部103,201、ホワイトリスト作成部104、及び監視範囲決定部202は、プロセッサ301がメモリ302に記憶されたプログラムを読み込んで実行することにより実現されても良い。また、上述した監視範囲決定装置100における記憶部105は、メモリ302により実現されても良い。
【0097】
また、上述したプログラムは、非一時的なコンピュータ可読媒体又は実体のある記憶媒体に格納されても良い。限定ではなく例として、コンピュータ可読媒体又は実体のある記憶媒体は、random-access memory(RAM)、read-only memory(ROM)、フラッシュメモリ、solid-state drive(SSD)又はその他のメモリ技術、CD-ROM、digital versatile disc(DVD)、Blu-ray(登録商標)ディスク又はその他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ又はその他の磁気ストレージデバイスを含む。プログラムは、一時的なコンピュータ可読媒体又は通信媒体上で送信されても良い。限定ではなく例として、一時的なコンピュータ可読媒体又は通信媒体は、電気的、光学的、音響的、又はその他の形式の伝搬信号を含む。
【0098】
以上、実施の形態を参照して本開示を説明したが、本開示は上述した実施の形態に限定されるものではない。本開示の構成や詳細には、本開示のスコープ内で当業者が理解し得る様々な変更をすることができる。
【0099】
例えば、ノード単体のサイズが、予め設定された許容処理遅延から導出した閾値サイズを超えている場合がある。このような場合、フックの組み込み箇所を当該ノードの先頭等に仮決定し、当該フックの監視範囲を当該ノードのみに仮決定したとしても、改ざん検知処理の処理遅延が許容処理遅延以上に増大してしまうことになる。そこで、ノード単体のサイズが大きすぎて、閾値サイズを超えている場合には、当該ノードを閾値サイズで分割した上で、フックの組み込み箇所及び監視範囲を仮決定しても良い。
【符号の説明】
【0100】
100 監視範囲決定装置
101 入出力部
102 ビルド部
103 CFG生成部
104 ホワイトリスト作成部
105 記憶部
200 監視範囲決定装置
201 CFG生成部
202 監視範囲決定部
300 監視範囲決定装置
301 プロセッサ
302 メモリ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12