(57)【要約】  本発明に係る情報処理装置は、プログラムの部分ごとに予め算出された第１の固有値を記憶する記憶部と、部分について第２の固有値を新たに算出し、第１の固有値と第２の固有値とを比較することで、部分における改竄の有無を検証する検証部とを備える。
2019151013.tif 000002
【特許請求の範囲】
【請求項１】
プログラムの部分ごとに予め算出された第１の固有値を記憶する記憶部と、
前記部分について第２の固有値を新たに算出し、前記第１の固有値と前記第２の固有値とを比較することで、前記部分における改竄の有無を検証する検証部とを備えることを特徴とする情報処理装置。
【請求項２】
前記記憶部は、前記プログラムの前記部分ごとに、前記部分の呼び出し元、前記プログラムの記憶領域内における前記部分のメモリ番地、及び前記第１の固有値を対応付けて記憶し、かつ、
前記呼び出し元に基づいて前記検証部が検証する前記部分を特定する特定部をさらに備えることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記特定部は、前記呼び出し元との間で直接的及び間接的に呼び出し関係にある前記部分を特定することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記呼び出し元は、Ｉ／Ｏ、前記Ｉ／Ｏを用いるＡＰＩ及び前記ＡＰＩの機能を実現する関数を含み、
前記Ｉ／Ｏは前記ＡＰＩ、前記ＡＰＩは前記関数、前記関数は同一又は異なる前記関数を前記部分として呼び出すことを特徴とする請求項２又は３に記載の情報処理装置。
【請求項５】
前記記憶部は、前記Ｉ／Ｏの識別子と前記Ｉ／Ｏからの呼び出し時に入力されるメッセージとの組み合わせに前記ＡＰＩの識別子を対応付けて記憶し、
前記特定部は、前記Ｉ／Ｏの識別子と前記メッセージとの組み合わせに基づいて前記記憶部を参照し、前記部分を特定することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記特定部を呼び出した第１の呼び出し元を記憶するレジスタ部と、
前記特定部を正しく呼び出す第２の呼び出し元を予め記憶するレジスタ情報記憶部と、
前記レジスタ部が配置されるノーマル空間と、
前記レジスタ情報記憶部、前記記憶部、前記特定部及び前記検証部が配置されるとともに、前記ノーマル空間側からのアクセスが制限されたセキュア空間とをさらに備え、
前記検証部は、前記第１の呼び出し元と前記第２の呼び出し元とを比較することで前記特定部に係る呼び出し命令の改竄の有無を検証することを特徴とする請求項２乃至５のいずれか一項に記載の情報処理装置。
【請求項７】
前記記憶部は、前記呼び出し元と時刻変数の値との組み合わせに前記第１の固有値を対応付けて記憶し、
前記特定部は、前記部分が実行する処理の経過時間が前記時刻変数の値に達したときに、前記検証部が検証する前記部分を切り替えることを特徴とする請求項２乃至６のいずれか一項に記載の情報処理装置。
【請求項８】
前記記憶部は、前記呼び出し元と前記部分の呼び出し時に入力される引数との組み合わせに前記第１の固有値を対応付けて記憶し、
前記特定部は、前記呼び出し元と前記引数との組み合わせに基づいて前記記憶部を参照し、前記検証部が検証する前記部分を特定することを特徴とする請求項２乃至６のいずれか一項に記載の情報処理装置。
【請求項９】
プログラムの部分ごとに予め算出された第１の固有値を記憶領域に記憶するステップと、
前記部分について第２の固有値を新たに算出するとともに、前記第１の固有値と前記第２の固有値とを比較することで、前記部分における改竄の有無を検証するステップとを備えることを特徴とする情報処理方法。
【請求項１０】
コンピュータに、
プログラムの部分ごとに予め算出された第１の固有値を記憶領域に記憶するステップと、
前記部分について第２の固有値を新たに算出するとともに、前記第１の固有値と前記第２の固有値とを比較することで、前記部分における改竄の有無を検証するステップとを実行させるプログラムが記録された記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法及び記録媒体に関する。
【背景技術】
【０００２】
近年、ＩｏＴデバイスの普及により、ネットワークカメラやスマートメータ等の計算能力の低いデバイスにおいてもセキュリティ対策が必要になっている。例えば、特許文献１には、ホワイトリストに予め登録しておいたハッシュ値に基づいてプログラム毎に改竄の有無を検証する情報端末が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−９３７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に記載の情報端末では、プログラム単位でハッシュ値を算出しておき、検証時に新たに算出したハッシュ値と比較することでプログラムの真正性を検証している。プログラム全体が検証領域に該当するため、計算能力の低いデバイスでは検証処理に長時間を要するという問題があった。【０００５】
そこで、本発明は、上述の課題に鑑み、プログラムの真正性の検証時間を短縮できる情報処理装置、情報処理方法及び記録媒体を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一つの観点によれば、プログラムの部分ごとに予め算出された第１の固有値を記憶する記憶部と、前記部分について第２の固有値を新たに算出し、前記第１の固有値と前記第２の固有値とを比較することで、前記部分における改竄の有無を検証する検証部とを備える情報処理装置が提供される。【０００７】
本発明の他の観点によれば、プログラムの部分ごとに予め算出された第１の固有値を記憶領域に記憶するステップと、前記部分について第２の固有値を新たに算出するとともに、前記第１の固有値と前記第２の固有値とを比較することで、前記部分における改竄の有無を検証するステップとを備える情報処理方法が提供される。
【０００８】
本発明のさらに他の観点によれば、コンピュータに、プログラムの部分ごとに予め算出された第１の固有値を記憶領域に記憶するステップと、前記部分について第２の固有値を新たに算出するとともに、前記第１の固有値と前記第２の固有値とを比較することで、前記部分における改竄の有無を検証するステップとを実行させるプログラムが記録された記録媒体が提供される。
【発明の効果】
【０００９】
本発明によれば、プログラムの真正性の検証時間を短縮できる情報処理装置、情報処理方法及び記録媒体を提供することができる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施形態に係る情報処理装置の機能を示すブロック図である。
【図２Ａ】第１の実施形態において検証情報記憶部が記憶するテーブルの具体例を示す図である。
【図２Ｂ】第１の実施形態において検証情報記憶部が記憶するテーブルの具体例を示す図である。
【図２Ｃ】第１の実施形態において検証情報記憶部が記憶するテーブルの具体例を示す図である。
【図２Ｄ】第１の実施形態において検証情報記憶部が記憶するテーブルの具体例を示す図である。
【図３】第１の実施形態におけるＩ／Ｏ、ＡＰＩ及び関数の呼び出し関係を示す模式図である。
【図４Ａ】第１の実施形態において登録部が検証情報記憶部に登録する参照テーブルの具体例を示す図である。
【図４Ｂ】第１の実施形態において登録部が検証情報記憶部に登録する参照テーブルの具体例を示す図である。
【図４Ｃ】第１の実施形態において登録部が検証情報記憶部に登録する参照テーブルの具体例を示す図である。
【図５】第１の実施形態における検証領域特定部の実行タイミングと検証領域の対応例を示す図である。
【図６】第１の実施形態に係る情報処理装置のハードウェア構成例を示すブロック図である。
【図７】第１の実施形態に係る情報処理装置の検証情報の登録処理を示すフローチャートである。
【図８】第１の実施形態に係る情報処理装置の検証処理を示すフローチャートである。
【図９】第１の実施形態における検証部の検証範囲の具体例を示す模式図である。
【図１０Ａ】第２の実施形態において検証情報記憶部が記憶するテーブルの具体例を示す図である。
【図１０Ｂ】第２の実施形態において検証情報記憶部が記憶するテーブルの具体例を示す図である。
【図１０Ｃ】第２の実施形態において検証情報記憶部が記憶するテーブルの具体例を示す図である。
【図１０Ｄ】第２の実施形態において検証情報記憶部が記憶するテーブルの具体例を示す図である。
【図１１Ａ】第２の実施形態において登録部が検証情報記憶部に登録する参照テーブルの具体例を示す図である。
【図１１Ｂ】第２の実施形態において登録部が検証情報記憶部に登録する参照テーブルの具体例を示す図である。
【図１１Ｃ】第２の実施形態において登録部が検証情報記憶部に登録する参照テーブルの具体例を示す図である。
【図１１Ｄ】第２の実施形態において登録部が検証情報記憶部に登録する参照テーブルの具体例を示す図である。
【図１１Ｅ】第２の実施形態において登録部が検証情報記憶部に登録する参照テーブルの具体例を示す図である。
【図１２】第２の実施形態に係る情報処理装置の検証情報の登録処理を示すフローチャートである。
【図１３】第２の実施形態に係る情報処理装置の検証処理を示すフローチャートである。
【図１４】第２の実施形態における検証部の検証範囲の具体例を示す模式図である。
【図１５】第３の実施形態に係る情報処理装置の機能を示すブロック図である。
【図１６】第３の実施形態に係る情報処理装置の検証処理を示すフローチャートである。
【図１７】第４の実施形態に係る情報処理装置の機能を示すブロック図である。
【図１８】変形実施形態に係る情報処理装置の機能を示すブロック図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照して、本発明の実施形態を説明する。なお、以下で説明する図面においては、同一の機能又は対応する機能を有する要素には同一の符号を付し、その繰り返しの説明を省略する。
【００１２】
［第１の実施形態］
図１は、本実施形態に係る情報処理装置１０の機能を示すブロック図である。情報処理装置１０は、制御部１１、プログラム記憶部１２、入出力部１３、通信部１４、検証情報記憶部１５、登録部１６、検証領域特定部１７、検証部１８を備える。
【００１３】
制御部１１は、情報処理装置１０の全体の制御及び演算処理を行う制御装置である。プログラム記憶部１２は、制御部１１において実行される各種プログラムを記憶する記憶装置である。入出力部１３は、情報処理装置１０へのデータや信号等の入力及び情報処理装置１０における処理結果の出力を行う入出力インタフェース及び入出力装置である。なお、本実施形態では、入出力部１３の呼び出し（実行要求）をＩ／Ｏ呼び出しという。通信部１４は、インターネット等のネットワーク（図示省略）を介して接続先の装置との通信を行う通信装置である。
【００１４】
検証情報記憶部１５は、プログラムの部分ごとに、部分の呼び出し元、プログラム記憶部１２における部分のメモリ番地、及び部分について予め算出された固有値（以下、第１の固有値という。）を対応付けた検証情報を記憶する。ここで、本実施形態において、プログラムの部分とは、ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）及びＡＰＩの機能を実現する各種の関数をそれぞれ示すものとする。
【００１５】
図２Ａ〜図２Ｄは、本実施形態において検証情報記憶部１５が記憶するテーブルの具体例を示す図である。図２Ａでは、Ｉ／ＯとＡＰＩとの間の呼び出し関係、図２Ｂでは、ＡＰＩと関数（ｆｕｎｃ）との間の呼び出し関係をそれぞれ示している。本実施形態において、ＡＰＩ−１及びＡＰＩ−２は、Ｉ／Ｏ−１を用いるＡＰＩである。このため、図２Ａでは、Ｉ／Ｏ−１からＡＰＩ−１及びＡＰＩ−２が呼び出されるものとしている。図２Ｂでは、ＡＰＩ−１から２つの関数ｆｕｎｃ−１及びｆｕｎｃ−２が呼び出されることが示されている。図２Ｃ及び図２Ｄでは、ＡＰＩと関数（ｆｕｎｃ）の識別子ごとに、ＡＰＩと関数（ｆｕｎｃ）のバイナリデータやソースコード等のプログラム記憶部１２内におけるメモリ番地（ｍｅｍｏｒｙ  ａｄｄｒ）が記憶されることが示されている。図２Ａ〜図２Ｄのテーブルは、いずれも後述する登録部１６によって登録される。
【００１６】
図３は、本実施形態におけるＩ／Ｏ、ＡＰＩ及び関数の呼び出し関係を示す模式図である。図３は、図２Ａ〜図２Ｄに示すテーブルのデータから呼び出し関係を模式化したものである。図３によれば、例えば、Ｉ／Ｏ−２が呼び出されたとき、Ｉ／Ｏ−２に直接的又は間接的に関係するプログラムの部分は、ＡＰＩ−１、ｆｕｎｃ−１及びｆｕｎｃ−２のみであることが分かる。同様に、Ｉ／Ｏ−３が呼び出されたとき、Ｉ／Ｏ−３に直接的又は間接的に関係するプログラムの部分は、ＡＰＩ−３、ｆｕｎｃ−２及びｆｕｎｃ−３であることが分かる。
【００１７】
登録部１６は、プログラム記憶部１２に記憶されているプログラムを解析し、プログラムを構成する部分の間における呼び出し関係を抽出する。また、登録部１６は、呼び出し元に関係するすべての部分のメモリ番地を取得する。そして、登録部１６は、当該メモリ番地に記憶されているプログラムの部分の実体（例えばソースコードやバイナリデータ）から例えばハッシュ値等の固有値（第１の固有値）を算出するとともに、呼び出し元、ハッシュ値、及びメモリ番地を対応付けた参照テーブルを作成し、検証情報記憶部１５に登録する。なお、プログラムの部分に対応する固有値は、ハッシュ値以外にもプログラムの部分の実体から算出でき改竄の有無が確認できるような指標値を用いることができ、例えば誤り訂正符号の値を用いることができる。
【００１８】
図４Ａ〜図４Ｃは、本実施形態において登録部１６が検証情報記憶部１５に登録する参照テーブルの具体例を示す図である。図４Ａの参照テーブルは、Ｉ／Ｏの識別子（Ｉ／Ｏ−ＩＤ）、ハッシュ値（Ｈａｓｈ  Ｖａｌｕｅ）及びメモリ番地（ｍｅｍｏｒｙ  ａｄｄｒ）を対応付けている。例えば、Ｉ／Ｏ−１の場合には、メモリ番地が“０ｘ００５０−０ｘ０３４９”として記憶されている。当該メモリ番地は、図２Ｃ及び図２Ｄにおいて示したように、ＡＰＩ−１のメモリ番地“０ｘ００５０−０ｘ００９９”、ｆｕｎｃ−１のメモリ番地“０ｘ０１００−０ｘ０１９９”、ｆｕｎｃ−２のメモリ番地“０ｘ０２００−０ｘ０２１９”、ＡＰＩ−２のメモリ番地“０ｘ０２２０−０ｘ０２９９”、及びｆｕｎｃ−３のメモリ番地“０ｘ０３００−０ｘ０３４９”を統合したものである。また、Ｉ／Ｏ−１に対応付けされたハッシュ値“ｚｚｚｚｚｚｚｚ”は、ＡＰＩ−１、ｆｕｎｃ−１、ｆｕｎｃ−２、ＡＰＩ−２、及びｆｕｎｃ−３から算出された固有値を示している。また、図４Ｂ及び図４Ｃの参照テーブルは、Ｉ／Ｏの識別子（Ｉ／Ｏ−ＩＤ）の代わりに、ＡＰＩの識別子（ＡＰＩ−ＩＤ）及び関数の識別子（ｆｕｎｃ−ＩＤ）に対して、メモリ番地とハッシュ値を対応付けている。
【００１９】
検証領域特定部１７は、呼び出し元に基づいて検証情報記憶部１５の検証情報から取得したメモリ番地を検証領域として特定する。具体的には、検証領域特定部１７は、呼び出し元の識別子をキーとして、上述した図４Ａ〜図４Ｃに示す参照テーブルを参照し、取得したメモリ番地を検証領域とする。なお、検証領域特定部１７の呼び出し方法は、様々な方法がある。例えば、（１）検証領域特定部１７の中にプログラムやＩ／Ｏ（入出力部１３）を監視する機能を実装する、（２）プログラムやＩ／Ｏ側に検証領域特定部１７の呼び出し命令を埋め込む、等の方法がある。本実施形態では、（１）の方法を用いるものとする。すなわち、検証領域特定部１７は、呼び出し元からプログラムの部分が呼び出されたときに実行される。
【００２０】
図５は、本実施形態における検証領域特定部１７の実行タイミングと検証領域の対応例を示す図である。ここでは、検証領域特定部１７の実行タイミングは、Ｉ／Ｏ呼び出し、ＡＰＩ呼び出し、関数呼び出しの３つに分けられている。また、本実施形態におけるプログラムの部分の呼び出し元は、Ｉ／Ｏ、Ｉ／Ｏを用いるＡＰＩ及びＡＰＩの機能を実現する関数を含む。そして、Ｉ／ＯはＡＰＩ、ＡＰＩは関数、関数は同一又は異なる関数を呼び出す。このため、図５に示すように、実行タイミングと検証領域の組み合わせパターンは、パターンＡ〜Ｆの６種類となる。
【００２１】
検証部１８は、検証領域に係るプログラムの部分についての固有値（以下、第２の固有値という。）を新たに算出するとともに、検証領域に係るプログラムの部分の第１の固有値と第２の固有値とを比較することで、検証領域における改竄の有無を検証する。具体的には、検証部１８は、検証情報記憶部１５に記憶されているハッシュ値（第１の固有値）と、新たに算出されたハッシュ値（第２の固有値）とが異なる場合には、検証領域に記憶されているプログラムの部分が改竄されたものと判定する。
【００２２】
図６は、本実施形態に係る情報処理装置１０のハードウェア構成例を示すブロック図である。情報処理装置１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１、メモリ１０２、記憶装置１０３、通信インタフェース１０４、入力装置１０５、出力装置１０６を備える。各部は、共通バス１００に接続されている。
【００２３】
ＣＰＵ１０１は、記憶装置１０３に記録されたプログラムをメモリ１０２上に展開して実行することにより、情報処理装置１０の全体の制御及び演算処理を行う制御部１１である。また、ＣＰＵ１０１は、記憶装置１０３に処理結果のデータを記録し、通信インタフェース１０４を介して処理結果のデータを外部に送信する。
【００２４】
メモリ１０２は、ＣＰＵ１０１が処理中のデータや記憶装置１０３から読み出されたデータを一時的に記憶する記憶領域であり、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などを含む。
【００２５】
記憶装置１０３は、ＣＰＵ１０１が実行するプログラムや、プログラムによる処理結果のデータなどを記憶する。記憶装置１０３は、読み取り専用のＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）や、読み書き可能のハードディスクドライブ又はフラッシュメモリなどを含む。また、記憶装置１０３は、ＣＤ−ＲＯＭなどのコンピュータ読取可能な可搬記憶媒体を含んでもよい。
【００２６】
通信インタフェース１０４は、データの送受信を行う通信部１４であり、有線通信及び無線通信の少なくとも一方の通信方式を実行可能に構成される。通信インタフェース１０４は、該通信方式に必要なプロセッサ、電気回路、アンテナ、接続端子などを含む。通信インタフェース１０４は、ＣＰＵ１０１からの信号に従って、該通信方式を用いて通信を行う。
【００２７】
入力装置１０５は、ユーザからの入力を受け付けるキーボード、マウス、スイッチなどを含み、入力された内容を信号としてＣＰＵ１０１に送信する。入力装置１０５及び表示装置（図示省略）が一体化されたタッチスクリーンが用いられてもよい。出力装置１０６は、ＣＰＵ１０１からの命令に従って、処理情報を出力する装置であり、画像情報を出力する表示装置や音声情報を出力するスピーカ（図示省略）等が該当する。また、入力装置１０５及び出力装置１０６との接続に用いるＩ／Ｏインタフェースとしては、ＵＡＲＴ（Ｕｎｉｖｅｒｓａｌ  Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｒｅｃｅｉｖｅｒ／Ｔｒａｎｓｍｉｔｔｅｒ）、イーサネット（登録商標）、ＧＰＩＯ（Ｇｅｎｅｒａｌ−ｐｕｒｐｏｓｅ  ｉｎｐｕｔ／ｏｕｔｐｕｔ）及びＪＴＡＧ（Ｊｏｉｎｔ  Ｔｅｓｔ  Ａｃｔｉｏｎ  Ｇｒｏｕｐ）等が挙げられる。
【００２８】
なお、情報処理装置１０は、図６に示すハードウェア構成に限定されず、その他の機器をさらに備えてもよい。情報処理装置１０は一つ又は複数の装置からなってもよく、あるいは他の装置と一体に構成されてもよい。また、情報処理装置１０は別の装置に接続され、本実施形態において情報処理装置１０によって行われる処理の少なくとも一部は別の装置によって行われてもよい。
【００２９】
続いて、本実施形態に係る情報処理装置１０の動作について図７乃至図９を参照しながら説明する。図７は、本実施形態に係る情報処理装置１０の検証情報の登録処理を示すフローチャートである。この処理は、登録部１６としてのＣＰＵ１０１によって実行される。
【００３０】
先ず、登録部１６は、プログラムのソースコード等を解析して、すべてのＩ／Ｏ、ＡＰＩ及び関数のリストを取得し、これらにＩＤを付与する（ステップＳ１０１）。具体的には、ソースコードを用いて関数の呼び出し関係を表すコールグラフを生成し、関係性を分析できる。また、ソースコードがない場合には、バイナリファイルに対する静的解析によって生成されたフローグラフや動的解析によるソフトウェアの実行トレースに基づいて、関係性を分析することができる。
【００３１】
次に、登録部１６は、すべてのＡＰＩ及び関数のメモリ番地を取得し、そのメモリ番地をＩＤに対応付けて検証情報記憶部１５に登録する（ステップＳ１０２）。具体的には、図２Ｃ及び図２Ｄに示すようなテーブルを作成し、検証情報記憶部１５に登録する。
【００３２】
次に、登録部１６は、Ｉ／ＯとＡＰＩとの間、及びＡＰＩと関数との間の呼び出し関係を取得し、その呼び出し関係を検証情報記憶部１５に登録する（ステップＳ１０３）。具体的には、図２Ａ及び図２Ｂに示すようなテーブルを作成し、検証情報記憶部１５に登録する。
【００３３】
そして、登録部１６は、図３に示したような呼び出し関係に基づいて、各Ｉ／Ｏに関係するＡＰＩと関数のメモリ番地及びハッシュ値を計算し、Ｉ／Ｏの識別子との対応関係を検証情報として検証情報記憶部１５に登録する（ステップＳ１０４）。なお、各ＡＰＩ及び各関数についても同様にメモリ番地及びハッシュ値を計算し、検証情報として検証情報記憶部１５に登録する。具体的には、検証情報として、図４Ａ〜図４Ｃに示すような参照テーブルを作成し、検証情報記憶部１５に登録する。
【００３４】
図８は、本実施形態に係る情報処理装置１０の検証処理を示すフローチャートである。この処理は、図７に示した処理が完了しているときに、検証領域特定部１７及び検証部１８としてのＣＰＵ１０１によって実行される。
【００３５】
先ず、検証領域特定部１７は、プログラムの部分に係る呼び出し（Ｉ／Ｏ呼び出し、ＡＰＩ呼び出し、関数呼び出し）の有無を判定する（ステップＳ２０１）。ここで、検証領域特定部１７は、呼び出しが有ったと判定した場合には（ステップＳ２０１：ＹＥＳ）、検証領域の特定処理を開始し（ステップＳ２０２）、ステップＳ２０３の処理へ移る。これに対し、検証領域特定部１７は、呼び出しは無いと判定した場合には（ステップＳ２０１：ＮＯ）、ステップＳ２０１の処理を繰り返す。
【００３６】
ステップＳ２０３において、検証領域特定部１７は、呼び出されたＩ／Ｏ又はプログラムの部分について検証情報記憶部１５に検証情報を問い合わせる。
【００３７】
次に、検証領域特定部１７は、検証情報記憶部１５からプログラムの部分のメモリ番地と、当該部分が真正な状態にあるときのハッシュ値とを取得し、検証部１８へ送信する（ステップＳ２０４）。メモリ番地の情報は、検証領域特定部１７によって特定された検証領域に該当する。
【００３８】
図９は、本実施形態における検証部１８の検証範囲の具体例を示す模式図である。ここでは、Ｉ／Ｏ−１についてのＩ／Ｏ呼び出しが有る場合に、Ｉ／Ｏ−１と直接的及び間接的に関係するＡＰＩ−１、ＡＰＩ−２、ｆｕｎｃ−１、ｆｕｎｃ−２及びｆｕｎｃ−３が検証部１８の検証範囲（図中の破線部）に含まれることを示している。
【００３９】
そして、検証部１８は、検証領域特定部１７から送信されたメモリ番地及びハッシュ値に基づいて検証領域に係るプログラムの部分についての真正性の検証処理を実行し（ステップＳ２０５）、処理を終了する。
【００４０】
このように、本実施形態に係る情報処理装置１０によれば、検証情報記憶部１５にプログラムの部分ごとに、予め算出された第１の固有値が記憶されている。このため、同一部分について新たに算出した第２の固有値と第１の固有値を比較するだけで、当該部分の改竄の有無を検証することができる。また、情報処理装置１０によれば、呼び出し元と所定の呼び出し関係にあるプログラムの部分のみを特定し、検証領域を絞り込むことができる。このため、プログラム全体を検証領域とする場合に比べて、検証処理に要する時間を大幅に短縮できる。また、情報処理装置１０が計算能力の低いデバイスである場合にもセキュリティ対策を施すことが可能となる。
【００４１】
［第２の実施形態］
以下、本実施形態に係る情報処理装置１０について説明する。なお、第１の実施形態の図中において付与した符号と共通する符号は同一の対象を示す。このため、第１の実施形態と共通する箇所の説明は省略し、異なる箇所について詳細に説明する。
【００４２】
本実施形態では、検証情報記憶部１５はＩ／Ｏの識別子とＩ／Ｏからの呼び出し時に入力されるメッセージとの組み合わせに対して、呼び出し先であるＡＰＩの識別子を対応付けて検証情報を定義する。また、検証領域特定部１７は、Ｉ／Ｏの識別子とメッセージとの組み合わせに基づいて検証情報記憶部１５を参照し、検証領域を特定する。
【００４３】
図１０Ａ〜図１０Ｄは、本実施形態において検証情報記憶部１５が記憶するテーブルの具体例を示す図である。図１０Ａでは、上述の図２Ａとは異なり、Ｉ／ＯとＡＰＩとの間の呼び出し関係が、Ｉ／Ｏ呼び出し時に入力されるメッセージ（ｍｅｓｓａｇｅ）を含めて定義されている。具体的には、Ｉ／Ｏ−１のＩ／Ｏ呼び出し時にメッセージとして“ＲＥＡＤ”が入力されるときはＡＰＩ−１、“ＷＲＩＴＥ”が入力されるときはＡＰＩ−２がそれぞれ呼び出されることを示している。なお、Ｉ／Ｏ−２の場合には、Ｉ／Ｏ呼び出し時にメッセージによって呼び出されるＡＰＩが変化しないこと、メッセージを識別できないこと又はメッセージが入力されないことがメッセージ欄の“＊”によって示されている。図１０Ｂ〜図１０Ｄについては、上述の図２Ｂ〜図２Ｄと同様である。
【００４４】
図１１Ａ〜図１１Ｅは、本実施形態において登録部１６が検証情報記憶部１５に登録する参照テーブルの具体例を示す図である。図１１Ａ、図１１Ｄ及び図１１Ｅについては、上述の図４Ａ〜図４Ｃと同様である。これらのテーブルは、Ｉ／Ｏ呼び出し時にメッセージを識別できない場合等に参照される。これに対し、図１１Ｂ及び図１１Ｃは、Ｉ／Ｏ呼び出し時にメッセージが入力された場合に参照されるテーブルである。
【００４５】
図１１Ｂの参照テーブルは、Ｉ／Ｏの識別子（Ｉ／Ｏ−ＩＤ）とメッセージ（ｍｅｓｓａｇｅ）との組み合わせに対して、ハッシュ値（Ｈａｓｈ Ｖａｌｕｅ）及びメモリ番地（ｍｅｍｏｒｙ ａｄｄｒ）を対応付けている。例えば、Ｉ／Ｏ−１とメッセージ“ＲＥＡＤ”の組み合わせに対しては、メモリ番地が“０ｘ００５０−０ｘ０２１９”である。当該メモリ番地は、図１０Ｃ及び図１０Ｄにおいて示したように、ＡＰＩ−１のメモリ番地“０ｘ００５０−０ｘ００９９”、ｆｕｎｃ−１のメモリ番地“０ｘ０１００−０ｘ０１９９”、ｆｕｎｃ−２のメモリ番地“０ｘ０２００−０ｘ０２１９”を統合したものである。また、Ｉ／Ｏ−１とメッセージ“ＲＥＡＤ”の組み合わせに対応付けされたハッシュ値“ｘｘｘｘｘｘｘｘ”は、ＡＰＩ−１、ｆｕｎｃ−１及びｆｕｎｃ−２から算出された固有値を示している。すなわち、図４の場合と異なり、ＡＰＩ−２のメモリ番地“０ｘ０２２０−０ｘ０２９９”とｆｕｎｃ−３のメモリ番地“０ｘ０３００−０ｘ０３４９”については検証領域から除かれている。
【００４６】
図１１Ｃの参照テーブルは、Ｉ／Ｏの識別子（Ｉ／Ｏ−ＩＤ）、メッセージ（ｍｅｓｓａｇｅ）及びＡＰＩが関数を呼び出す時に関数へ引き渡す引数（Ａｒｇｕｍｅｎｔ）の値の組み合わせに対して、ハッシュ値（Ｈａｓｈ  Ｖａｌｕｅ）及びメモリ番地（ｍｅｍｏｒｙ  ａｄｄｒ）を対応付けている。例えば、Ｉ／Ｏ−ＩＤが“Ｉ／Ｏ−１”、メッセージが“ＲＥＡＤ”であって、引数が“Ｔｒｕｅ”の場合には、“ｆｕｎｃ−１”のメモリ番地“０ｘ０１００−０ｘ０１９９”が検証領域となる。Ｉ／Ｏ−ＩＤが“Ｉ／Ｏ−１”、メッセージが“ＲＥＡＤ”であって、引数が“Ｆａｌｓｅ”の場合には、ＡＰＩ−１のメモリ番地“０ｘ００５０−０ｘ００９９”と、ｆｕｎｃ−２のメモリ番地“０ｘ０２００−０ｘ０２１９”とが検証領域となる。
【００４７】
続いて、本実施形態に係る情報処理装置１０の動作について図１２乃至図１４を参照しながら説明する。図１２は、本実施形態に係る情報処理装置１０の検証情報の登録処理を示すフローチャートである。この処理は、登録部１６としてのＣＰＵ１０１によって実行される。
【００４８】
先ず、登録部１６は、プログラムのソースコード等を解析して、すべてのＩ／Ｏ、ＡＰＩ及び関数のリストを取得し、これらにＩＤを付与する（ステップＳ３０１）。なお、メッセージや引数を考慮する場合には、呼び出しに関係する分岐条件と、メッセージや引数の関係性を抽出するものとする。
【００４９】
次に、登録部１６は、すべてのＡＰＩ及び関数のメモリ番地を取得し、そのメモリ番地をＩＤに対応付けて検証情報記憶部１５に登録する（ステップＳ３０２）。具体的には、図１０Ｃ及び図１０Ｄに示すようなテーブルを作成し、検証情報記憶部１５に登録する。
【００５０】
次に、登録部１６は、Ｉ／ＯとＡＰＩとの間、及びＡＰＩと関数との間の呼び出し関係を取得し、その取得情報にメッセージを含めて検証情報記憶部１５に登録する（ステップＳ３０３）。具体的には、図１０Ａ及び図１０Ｂに示すようなテーブルを作成し、検証情報記憶部１５に登録する。
【００５１】
そして、登録部１６は、各Ｉ／Ｏとメッセージの組み合わせに対するＡＰＩと関数のメモリ番地及びハッシュ値を計算し、Ｉ／Ｏの識別子との対応関係を検証情報として検証情報記憶部１５に登録する（ステップＳ３０４）。なお、各ＡＰＩ及び各関数についても同様にメモリ番地及びハッシュ値を計算し、検証情報として検証情報記憶部１５に登録する。具体的には、検証情報として、図１１Ａ〜図１１Ｅに示すような参照テーブルを作成し、検証情報記憶部１５に登録する。
【００５２】
図１３は、本実施形態に係る情報処理装置１０の検証処理を示すフローチャートである。この処理は、図１２に示した処理が完了しているときに、検証領域特定部１７及び検証部１８としてのＣＰＵ１０１によって実行される。なお、メッセージはＩ／Ｏ呼び出し時に入力されるため、以下ではメッセージを伴うＩ／Ｏ呼び出し時について説明する。
【００５３】
先ず、検証領域特定部１７は、メッセージを伴うＩ／Ｏ呼び出しの有無を判定する（ステップＳ４０１）。ここで、検証領域特定部１７は、メッセージを伴うＩ／Ｏ呼び出しが有ったと判定した場合には（ステップＳ４０１：ＹＥＳ）、検証領域の特定処理を開始し（ステップＳ４０２）、ステップＳ４０３の処理へ移る。これに対し、検証領域特定部１７は、メッセージを伴うＩ／Ｏ呼び出しは無いと判定した場合には（ステップＳ４０１：ＮＯ）、ステップＳ４０１の処理を繰り返す。
【００５４】
ステップＳ４０３において、検証領域特定部１７は、メッセージを読み込むとともに、呼び出されたＩ／Ｏとメッセージの組み合わせについて検証情報記憶部１５に検証情報を問い合わせる。
【００５５】
次に、検証領域特定部１７は、検証情報記憶部１５からプログラムの部分のメモリ番地と、当該部分が真正な状態にあるときのハッシュ値とを取得し、検証部１８へ送信する（ステップＳ４０４）。メモリ番地の情報が、検証領域特定部１７によって特定された検証領域に該当する。
【００５６】
図１４は、本実施形態における検証部１８の検証範囲の具体例を示す模式図である。ここでは、Ｉ／Ｏ−１についてメッセージ“ＲＥＡＤ”を伴うＩ／Ｏ呼び出しがある場合に、Ｉ／Ｏ−１と直接的及び間接的に関係するＡＰＩ−１、ｆｕｎｃ−１及びｆｕｎｃ−２が検証部１８の検証範囲（図中の破線部）に含まれることを示している。図１４によれば、上述した図９の場合よりも、検証範囲がさらに限定されていることが分かる。
【００５７】
そして、検証部１８は、検証領域特定部１７から送信されたメモリ番地及びハッシュ値に基づいて検証領域に係るプログラムの部分についての真正性の検証処理を実行し（ステップＳ４０５）、処理を終了する。
【００５８】
このように、本実施形態に係る情報処理装置１０によれば、プログラムの部分の呼び出し元の識別子とメッセージとの組み合わせに基づいて検証領域が限定されるため、検証処理の処理時間をさらに短縮できる。
【００５９】
［第３の実施形態］
以下、本実施形態に係る情報処理装置３０について説明する。なお、第１の実施形態の図中において付与した符号と共通する符号は同一の対象を示す。このため、第１の実施形態と共通する箇所の説明は省略し、異なる箇所について詳細に説明する。
【００６０】
図１５は、本実施形態に係る情報処理装置３０の機能を示すブロック図である。情報処理装置３０は、レジスタ部３１とレジスタ情報記憶部３２をさらに備える。レジスタ部３１は、検証領域特定部１７を呼び出した第１の呼び出し元を記憶する。これに対し、レジスタ情報記憶部３２は、検証領域特定部１７を正しく呼び出す第２の呼び出し元（真正の呼び出し元）を予め記憶する。また、情報処理装置３０は、ノーマル空間３３と、ノーマル空間３３側からのアクセスが制限されたセキュア空間３４とをさらに備える。セキュア空間３４は、例えばＴｒｕｓｔ  ＺｏｎｅのＴＥＥ（Ｔｒｕｓｔｅｄ  Ｅｘｅｃｕｔｉｏｎ  Ｅｎｖｉｒｏｎｍｅｎｔ）を利用することで構築されるものとする。
【００６１】
ノーマル空間３３には、レジスタ部３１、制御部１１、プログラム記憶部１２、入出力部１３、通信部１４が配置される。これに対し、セキュア空間３４には、レジスタ情報記憶部３２、検証情報記憶部１５、登録部１６、検証領域特定部１７及び検証部１８が配置される。
【００６２】
また、本実施形態における検証領域特定部１７の呼び出し方は、例えば以下の２つがある。
（１）ノーマル空間３３のプログラムにトリガーとなる命令が埋め込まれている場合には、プログラムが検証領域特定部１７を呼び出す。
（２）検証領域特定部１７がプログラム記憶部１２やＩ／Ｏ（入出力部１３）を監視している場合には、所定の検証タイミングが到来したときに検証領域特定部１７が動作する。
検証領域特定部１７の動作に伴って、検証部１８は、第１の呼び出し元（レジスタ部３１）と第２の呼び出し元（レジスタ情報記憶部３２）とを比較することで検証領域特定部１７に係る呼び出し命令の改竄の有無を検証する。
【００６３】
続いて、本実施形態に係る情報処理装置３０の動作について図１６を参照しながら説明する。図１６は、本実施形態に係る情報処理装置３０の検証処理を示すフローチャートである。この処理は、図１２に示した処理が完了しているときに、検証領域特定部１７及び検証部１８としてのＣＰＵ１０１によって実行される。
【００６４】
先ず、検証領域特定部１７は、呼び出しの有無を判定する（ステップＳ５０１）。ここで、検証領域特定部１７は、呼び出し有りと判定した場合には（ステップＳ５０１：ＹＥＳ）、呼び出し元の情報を取得するとともに、ノーマル空間３３側のレジスタ部３１に呼び出し元の情報を登録し（ステップＳ５０２）、ステップＳ５０３の処理へ移る。これに対し、検証領域特定部１７は、呼び出し無しと判定した場合には（ステップＳ５０１：ＮＯ）、ステップＳ５０１の処理を繰り返す。
【００６５】
ステップＳ５０３において、検証部１８は、ノーマル空間３３側のレジスタ部３１に登録された第１の呼び出し元とセキュア空間３４側のレジスタ情報記憶部３２に予め記憶された第２の呼び出し元とを比較する。
【００６６】
次に、検証部１８は、呼び出し元が一致するか否かを判定する（ステップＳ５０４）。ここで、検証部１８が、呼び出し元が一致すると判定した場合には（ステップＳ５０４：ＹＥＳ）、検証領域特定部１７による検証領域の特定処理及び検証部１８による検証処理を実行し（ステップＳ５０５）、処理を終了する。ステップＳ５０５の処理は、第１の実施形態で説明した図８の処理と同様である。これに対し、検証部１８が、呼び出し元が一致しないと判定した場合には（ステップＳ５０４：ＮＯ）、呼び出し命令の改竄検知情報を出力し（ステップＳ５０６）、処理を終了する。
【００６７】
このように、本実施形態に係る情報処理装置３０によれば、真正な呼び出し時と実際の呼び出し時における呼び出し元を比較することにより、呼出し命令の改竄を検出できる。
【００６８】
［第４の実施形態］
以下、本実施形態に係る情報処理装置４０について説明する。図１７は、本実施形態に係る情報処理装置４０の機能を示すブロック図である。
【００６９】
図１７に示すように、情報処理装置４０は、プログラムの部分ごとに予め算出された第１の固有値を記憶する記憶部４１と、部分について第２の固有値を新たに算出し、第１の固有値と第２の固有値とを比較することで、部分における改竄の有無を検証する検証部４２とを備える。
【００７０】
このように、本実施形態に係る情報処理装置４０によれば、プログラムの真正性の検証時間を短縮できる。
【００７１】
［変形実施形態］
以上、実施形態を参照して本発明を説明したが、本発明は上述の実施形態に限定されるものではない。本願発明の構成及び詳細には本発明の要旨を逸脱しない範囲で、当業者が理解し得る様々な変形をすることができる。例えば、いずれかの実施形態の一部の構成を、他の実施形態に追加した実施形態、あるいは他の実施形態の一部の構成と置換した実施形態も本発明を適用し得る実施形態であると理解されるべきである。
【００７２】
また、上述の第２の実施形態では、Ｉ／Ｏの識別子、メッセージ及び引数の組み合わせに対してハッシュ値及びメモリ番地を対応付けた検証情報について説明したが、他の組み合わせに対してハッシュ値及びメモリ番地を対応付けてもよい。例えば、検証情報記憶部１５は、呼び出し元とプログラムの部分の呼び出し時に入力される引数との組み合わせに第１の固有値を対応付けた検証情報を記憶してもよい。そして、検証領域特定部１７は、呼び出し元と引数との組み合わせに基づいて検証領域とする部分を特定する構成としてもよい。
【００７３】
また、検証情報記憶部１５は、呼び出し元と時刻変数の値との組み合わせに第１の固有値を対応付けた検証情報を記憶してもよい。そして、検証領域特定部１７は、プログラムの部分が実行する処理の経過時間が時刻変数の値に達したときに検証領域とする部分を切り替える構成としてもよい。この場合、時間の経過によって次の制御に移るタイミングで検証処理を実行することができる。
【００７４】
また、上述の各実施形態では、情報処理装置が登録部１６を備える構成について説明した。しかし、登録部１６に関する処理は、他の情報処理装置において実行してもよい。図１８は、変形実施形態に係る情報処理装置５０の機能を示すブロック図である。図１８に示すように、情報処理装置５０は、他の情報処理装置６０に接続されている。他の情報処理装置６０は、上述の各実施形態における制御部１１、通信部１４、及び登録部１６にそれぞれ相当する制御部６１、通信部６２及び登録部６３を備えている。登録部６３は、情報処理装置５０側のプログラム記憶部１２に記憶されているプログラムを解析し、プログラムを構成する部分の間における呼び出し関係を抽出する。また、登録部６３は、呼び出し元に関係するすべての部分のメモリ番地を取得する。そして、登録部６３は、当該メモリ番地に記憶されているプログラムの部分の実体（例えばソースコードやバイナリデータ）から例えばハッシュ値等の固有値を算出するとともに、呼び出し元、ハッシュ値、及びメモリ番地を対応付けた参照テーブルを作成し、情報処理装置５０側の検証情報記憶部１５に登録する。登録部６３の具体的な処理方法は、上述の図７及び図１２と同様である。
一般的なＩｏＴ機器では、バイナリコードだけが記憶領域（メモリ１０２や記憶装置１０３）に記録される場合が多い。しかし、登録部６３の処理は、ソースコードを利用するものであり、装置はソースコードをコンパイルできる計算能力を必要とする。従って、変形実施形態によれば、十分な計算能力を有する外部機器（他の情報処理装置６０）側で登録部６３の処理を実行する構成であるため、より多くのＩｏＴ機器に本発明を適用できる利点がある。
【００７５】
また、上述の各実施形態の機能を実現するように該実施形態の構成を動作させるプログラムを記録媒体に記録させ、該記録媒体に記録されたプログラムをコードとして読み出し、コンピュータにおいて実行する処理方法も各実施形態の範疇に含まれる。すなわち、コンピュータ読取可能な記録媒体も各実施形態の範囲に含まれる。また、上述のコンピュータプログラムが記録された記録媒体はもちろん、そのコンピュータプログラム自体も各実施形態に含まれる。
【００７６】
該記録媒体としては、例えばフロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、磁気テープ、不揮発性メモリカード、ＲＯＭを用いることができる。また該記録媒体に記録されたプログラム単体で処理を実行しているものに限らず、他のソフトウェア、拡張ボードの機能と共同して、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）上で動作して処理を実行するものも各実施形態の範疇に含まれる。
【００７７】
上述の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００７８】
（付記１）
プログラムの部分ごとに予め算出された第１の固有値を記憶する記憶部と、
前記部分について第２の固有値を新たに算出し、前記第１の固有値と前記第２の固有値とを比較することで、前記部分における改竄の有無を検証する検証部とを備えることを特徴とする情報処理装置。
【００７９】
（付記２）
前記記憶部は、前記プログラムの前記部分ごとに、前記部分の呼び出し元、前記プログラムの記憶領域内における前記部分のメモリ番地、及び前記第１の固有値を対応付けて記憶し、かつ、
前記呼び出し元に基づいて前記検証部が検証する前記部分を特定する特定部をさらに備えることを特徴とする付記１に記載の情報処理装置。
【００８０】
（付記３）
前記特定部は、前記呼び出し元との間で直接的及び間接的に呼び出し関係にある前記部分を特定することを特徴とする付記２に記載の情報処理装置。
【００８１】
（付記４）
前記呼び出し元は、Ｉ／Ｏ、前記Ｉ／Ｏを用いるＡＰＩ及び前記ＡＰＩの機能を実現する関数を含み、
前記Ｉ／Ｏは前記ＡＰＩ、前記ＡＰＩは前記関数、前記関数は同一又は異なる前記関数を前記部分として呼び出すことを特徴とする付記２又は３に記載の情報処理装置。
【００８２】
（付記５）
前記記憶部は、前記Ｉ／Ｏの識別子と前記Ｉ／Ｏからの呼び出し時に入力されるメッセージとの組み合わせに前記ＡＰＩの識別子を対応付けて記憶し、
前記特定部は、前記Ｉ／Ｏの識別子と前記メッセージとの組み合わせに基づいて前記記憶部を参照し、前記部分を特定することを特徴とする付記４に記載の情報処理装置。
【００８３】
（付記６）
前記特定部を呼び出した第１の呼び出し元を記憶するレジスタ部と、
前記特定部を正しく呼び出す第２の呼び出し元を予め記憶するレジスタ情報記憶部と、
前記レジスタ部が配置されるノーマル空間と、
前記レジスタ情報記憶部、前記記憶部、前記特定部及び前記検証部が配置されるとともに、前記ノーマル空間側からのアクセスが制限されたセキュア空間とをさらに備え、
前記検証部は、前記第１の呼び出し元と前記第２の呼び出し元とを比較することで前記特定部に係る呼び出し命令の改竄の有無を検証することを特徴とする付記２乃至５のいずれかに記載の情報処理装置。
【００８４】
（付記７）
前記記憶部は、前記呼び出し元と時刻変数の値との組み合わせに前記第１の固有値を対応付けて記憶し、
前記特定部は、前記部分が実行する処理の経過時間が前記時刻変数の値に達したときに、前記検証部が検証する前記部分を切り替えることを特徴とする付記２乃至６のいずれかに記載の情報処理装置。
【００８５】
（付記８）
前記記憶部は、前記呼び出し元と前記部分の呼び出し時に入力される引数との組み合わせに前記第１の固有値を対応付けて記憶し、
前記特定部は、前記呼び出し元と前記引数との組み合わせに基づいて前記記憶部を参照し、前記検証部が検証する前記部分を特定することを特徴とする付記２乃至６のいずれかに記載の情報処理装置。
【００８６】
（付記９）
プログラムの部分ごとに予め算出された第１の固有値を記憶領域に記憶するステップと、
前記部分について第２の固有値を新たに算出するとともに、前記第１の固有値と前記第２の固有値とを比較することで、前記部分における改竄の有無を検証するステップとを備えることを特徴とする情報処理方法。
【００８７】
（付記１０）
コンピュータに、
プログラムの部分ごとに予め算出された第１の固有値を記憶領域に記憶するステップと、
前記部分について第２の固有値を新たに算出するとともに、前記第１の固有値と前記第２の固有値とを比較することで、前記部分における改竄の有無を検証するステップとを実行させるプログラムが記録された記録媒体。
【００８８】
この出願は、２０１８年２月２日に出願された日本出願特願２０１８−０１７００６を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【００８９】
１０，３０，４０，５０，６０・・・情報処理装置
１１・・・制御部
１２・・・プログラム記憶部
１３・・・入出力部
１４・・・通信部
１５・・・検証情報記憶部（記憶部）
１６・・・登録部
１７・・・検証領域特定部（特定部）
１８・・・検証部
３１・・・レジスタ部
３２・・・レジスタ情報記憶部
３３・・・ノーマル空間
３４・・・セキュア空間
４１・・・記憶部
４２・・・検証部
６１・・・制御部
６２・・・通信部
６３・・・登録部
１０１・・・ＣＰＵ
１０２・・・メモリ
１０３・・・記憶装置
１０４・・・通信インタフェース
１０５・・・入力装置
１０６・・・出力装置
【図１】
2019151013.tif 000003
【図２Ａ】
2019151013.tif 000004
【図２Ｂ】
2019151013.tif 000005
【図２Ｃ】
2019151013.tif 000006
【図２Ｄ】
2019151013.tif 000007
【図３】
2019151013.tif 000008
【図４Ａ】
2019151013.tif 000009
【図４Ｂ】
2019151013.tif 000010
【図４Ｃ】
2019151013.tif 000011
【図５】
2019151013.tif 000012
【図６】
2019151013.tif 000013
【図７】
2019151013.tif 000014
【図８】
2019151013.tif 000015
【図９】
2019151013.tif 000016
【図１０Ａ】
2019151013.tif 000017
【図１０Ｂ】
2019151013.tif 000018
【図１０Ｃ】
2019151013.tif 000019
【図１０Ｄ】
2019151013.tif 000020
【図１１Ａ】
2019151013.tif 000021
【図１１Ｂ】
2019151013.tif 000022
【図１１Ｃ】
2019151013.tif 000023
【図１１Ｄ】
2019151013.tif 000024
【図１１Ｅ】
2019151013.tif 000025
【図１２】
2019151013.tif 000026
【図１３】
2019151013.tif 000027
【図１４】
2019151013.tif 000028
【図１５】
2019151013.tif 000029
【図１６】
2019151013.tif 000030
【図１７】
2019151013.tif 000031
【図１８】
2019151013.tif 000032
【手続補正書】
【提出日】令和2年7月9日(2020.7.9)
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
本発明は、情報処理装置、情報処理方法及びプログラムに関する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００５
【補正方法】変更
【補正の内容】
【０００５】
そこで、本発明は、上述の課題に鑑み、プログラムの真正性の検証時間を短縮できる情報処理装置、情報処理方法及びプログラムを提供することを目的とする。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】
本発明のさらに他の観点によれば、コンピュータに、プログラムの部分ごとに予め算出された第１の固有値を記憶領域に記憶するステップと、前記部分について第２の固有値を新たに算出するとともに、前記第１の固有値と前記第２の固有値とを比較することで、前記部分における改竄の有無を検証するステップとを実行させるプログラムが提供される。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
本発明によれば、プログラムの真正性の検証時間を短縮できる情報処理装置、情報処理方法及びプログラムを提供することができる。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００２２
【補正方法】変更
【補正の内容】
【００２２】
図６は、本実施形態に係る情報処理装置１０のハードウェア構成例を示すブロック図である。情報処理装置１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１、メモリ１０２、記憶装置１０３、通信インタフェース１０４、入力装置１０５、出力装置１０６を備える。各部は、共通バス１００に接続されている。
【手続補正７】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プログラムの部分ごとに予め算出された第１の固有値を記憶する記憶部と、
前記部分について第２の固有値を新たに算出し、前記第１の固有値と前記第２の固有値とを比較することで、前記部分における改竄の有無を検証する検証部とを備えることを特徴とする情報処理装置。
【請求項２】
前記記憶部は、前記プログラムの前記部分ごとに、前記部分の呼び出し元、前記プログラムの記憶領域内における前記部分のメモリ番地、及び前記第１の固有値を対応付けて記憶し、かつ、
前記呼び出し元に基づいて前記検証部が検証する前記部分を特定する特定部をさらに備えることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記特定部は、前記呼び出し元との間で直接的及び間接的に呼び出し関係にある前記部分を特定することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記呼び出し元は、Ｉ／Ｏ、前記Ｉ／Ｏを用いるＡＰＩ及び前記ＡＰＩの機能を実現する関数を含み、
前記Ｉ／Ｏは前記ＡＰＩ、前記ＡＰＩは前記関数、前記関数は同一又は異なる前記関数を前記部分として呼び出すことを特徴とする請求項２又は３に記載の情報処理装置。
【請求項５】
前記記憶部は、前記Ｉ／Ｏの識別子と前記Ｉ／Ｏからの呼び出し時に入力されるメッセージとの組み合わせに前記ＡＰＩの識別子を対応付けて記憶し、
前記特定部は、前記Ｉ／Ｏの識別子と前記メッセージとの組み合わせに基づいて前記記憶部を参照し、前記部分を特定することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記特定部を呼び出した第１の呼び出し元を記憶するレジスタ部と、
前記特定部を正しく呼び出す第２の呼び出し元を予め記憶するレジスタ情報記憶部と、
前記レジスタ部が配置されるノーマル空間と、
前記レジスタ情報記憶部、前記記憶部、前記特定部及び前記検証部が配置されるとともに、前記ノーマル空間側からのアクセスが制限されたセキュア空間とをさらに備え、
前記検証部は、前記第１の呼び出し元と前記第２の呼び出し元とを比較することで前記特定部に係る呼び出し命令の改竄の有無を検証することを特徴とする請求項２乃至５のいずれか一項に記載の情報処理装置。
【請求項７】
前記記憶部は、前記呼び出し元と時刻変数の値との組み合わせに前記第１の固有値を対応付けて記憶し、
前記特定部は、前記部分が実行する処理の経過時間が前記時刻変数の値に達したときに、前記検証部が検証する前記部分を切り替えることを特徴とする請求項２乃至６のいずれか一項に記載の情報処理装置。
【請求項８】
前記記憶部は、前記呼び出し元と前記部分の呼び出し時に入力される引数との組み合わせに前記第１の固有値を対応付けて記憶し、
前記特定部は、前記呼び出し元と前記引数との組み合わせに基づいて前記記憶部を参照し、前記検証部が検証する前記部分を特定することを特徴とする請求項２乃至６のいずれか一項に記載の情報処理装置。
【請求項９】
プログラムの部分ごとに予め算出された第１の固有値を記憶領域に記憶するステップと、
前記部分について第２の固有値を新たに算出するとともに、前記第１の固有値と前記第２の固有値とを比較することで、前記部分における改竄の有無を検証するステップとを備えることを特徴とする情報処理方法。
【請求項１０】
コンピュータに、
プログラムの部分ごとに予め算出された第１の固有値を記憶領域に記憶するステップと、
前記部分について第２の固有値を新たに算出するとともに、前記第１の固有値と前記第２の固有値とを比較することで、前記部分における改竄の有無を検証するステップとを実行させるプログラム。
【国際調査報告】
2019151013.tif 000033
2019151013.tif 000034