(57)【要約】【課題】外部の機能を利用する命令の呼び出しが正しく実行されたか否かを検証する。【解決手段】実施形態の情報処理装置は、第１処理部と第２処理部とを備える。セキュアアプリである第１処理部は、発行部と第１通信部と履歴検証部とを備える。発行部は、前記第２処理部が有する機能を呼び出す命令を発行し、前記命令と検証ルールとを関連付ける。第１通信部は、前記命令を識別する命令識別情報を含む命令実行要求を前記第２処理部に送信し、前記第２処理部から、前記命令識別情報により識別される命令の実行結果を含む実行履歴を受信する。履歴検証部は、前記実行履歴の正しさを、前記検証ルールに従って検証する。【選択図】図１
2020150318.tif 000002
【特許請求の範囲】
【請求項１】
第１処理部と第２処理部とを備える情報処理装置であって、
前記第１処理部はセキュアアプリであり、
前記第１処理部は、
前記第２処理部が有する機能を呼び出す命令を発行し、前記命令と検証ルールとを関連付ける発行部と、
前記命令を識別する命令識別情報を含む命令実行要求を前記第２処理部に送信し、前記第２処理部から、前記命令識別情報により識別される命令の実行結果を含む実行履歴を受信する第１通信部と、
前記実行履歴の正しさを、前記検証ルールに従って検証する履歴検証部と、
を備える情報処理装置。
【請求項２】
前記実行履歴は、前記実行履歴から生成された符号を更に含み、
前記第１処理部は、
改ざんを検出する鍵を使用して前記符号を検証する完全性検証部、
を更に備える請求項１に記載の情報処理装置。
【請求項３】
前記情報処理装置は、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）部を更に備え、
前記ＯＳ部は、
前記命令を実行する命令実行部と、
前記実行履歴を記録する履歴記録部と、
前記実行履歴に前記符号を付与する付与部と、を備え、
前記第２処理部は、
前記履歴記録部から前記実行履歴を取得する記録取得部と、
前記第１通信部から、前記命令実行要求を受信すると、前記履歴記録部から取得された前記実行履歴を、前記第１通信部に送信する第２通信部と、
を更に備える請求項２に記載の情報処理装置。
【請求項４】
前記付与部は、秘密鍵を使用して前記実行履歴に前記符号を付与し、
前記完全性検証部は、前記秘密鍵に対応する公開鍵を使用して前記符号を検証する、
請求項３に記載の情報処理装置。
【請求項５】
前記ＯＳ部は、
公開鍵方式による認証後、認証先と共通鍵を交換する第１交換部を更に備え、
前記第１処理部は、
公開鍵方式によって前記第１交換部を認証した後、前記第１交換部と前記共通鍵を交換する第２交換部を更に備え、
前記付与部は、前記共通鍵を使用して前記実行履歴に前記符号を付与し、
前記完全性検証部は、前記共通鍵を使用して前記符号を検証する、
請求項３に記載の情報処理装置。
【請求項６】
前記第２処理部は、
前記命令を１以上のシステムコールに分解し、前記命令実行部に対してシステムコールを実行するライブラリ部と、
前記１以上のシステムコールの実行が開始されてから、終了するまでの実行履歴を記録するように前記履歴記録部を制御する記録制御部と、
を更に備える請求項３に記載の情報処理装置。
【請求項７】
前記実行履歴は、前記命令の名称、前記命令の番号、前記命令のアドレス、及び、前記実行履歴を識別する履歴識別情報の少なくとも１つを含む、
請求項１に記載の情報処理装置。
【請求項８】
前記実行履歴は、実行履歴の記録開始時刻を示す情報と、実行履歴の記録終了時刻を示す情報とを更に含み、
前記履歴検証部は、前記記録開始時刻と前記命令が発行された時刻との差が第１閾値より小さく、かつ、前記記録終了時刻と現在時刻との差が第２閾値より小さい場合、前記実行履歴が正しいと検証する、
請求項７に記載の情報処理装置。
【請求項９】
前記情報処理装置は、第３処理部とＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）部とを更に備え、
前記第３処理部は、前記ＯＳ部による命令の実行を捕捉する命令捕捉部と、
捕捉された命令を前記実行履歴として記録する履歴記録部と、を備え、
前記ＯＳ部は、
前記命令を実行する命令実行部と、
前記実行履歴に前記符号を付与する付与部と、
前記命令捕捉部、前記履歴記録部及び前記付与部の少なくとも１つに対するアクセス保護を行うアクセス保護部と、を備え、
前記第２処理部は、
前記履歴記録部から前記実行履歴を取得する記録取得部と、
前記第１通信部から、前記命令実行要求を受信すると、前記履歴記録部から取得された前記実行履歴を、前記第１通信部に送信する第２通信部と、
を更に備える請求項２に記載の情報処理装置。
【請求項１０】
第１処理部と第２処理部とを備える情報処理装置の情報処理方法であって、
セキュアアプリである前記第１処理部が、前記第２処理部が有する機能を呼び出す命令を発行し、前記命令と検証ルールとを関連付けるステップと、
前記第１処理部が、前記命令を識別する命令識別情報を含む命令実行要求を前記第２処理部に送信し、前記第２処理部から、前記命令識別情報により識別される命令の実行結果を含む実行履歴を受信するステップと、
前記第１処理部が、前記実行履歴の正しさを、前記検証ルールに従って検証する履歴検証部と、
を含む情報処理方法。
【請求項１１】
コンピュータを、
外部の処理部が有する機能を呼び出す命令を発行し、前記命令と検証ルールとを関連付ける発行部と、
前記命令を識別する命令識別情報を含む命令実行要求を前記外部の処理部に送信し、前記外部の処理部から、前記命令識別情報により識別される命令の実行結果を含む実行履歴を受信する通信部と、
前記実行履歴の正しさを、前記検証ルールに従って検証する履歴検証部、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
近年、耐タンパ性を確保したいプログラムを単一の計算機内で安全に実行する仮想化技術や、Ｉｎｔｅｌ（登録商標）  ＳＧＸ（Ｓｏｆｔｗａｒｅ  Ｇｕａｒｄ  Ｅｘｔｅｎｓｉｏｎ）、及び、ＡＲＭ（登録商標）  ＴｒｕｓｔＺｏｎｅ（登録商標）などの普及が進んでいる。これらのセキュアにプログラムを実行する環境においては、脆弱性の混入を防ぐためセキュア環境で実行するプログラム（以下、セキュアプログラム）の機能を最小化することが通常である。一方でセキュアプログラムとして高度な処理を実装したいという要求もあり、その場合にはセキュアプログラムから、外部の汎用ＯＳ機能を利用することが一般的に行われる。その際にセキュアプログラムが正しく動作するためには、汎用ＯＳが正しく動作する必要がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第４８６０８５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の技術では、外部の機能を利用する命令の呼び出しが正しく実行されたか否かを検証することが困難だった。
【課題を解決するための手段】
【０００５】
実施形態の情報処理装置は、第１処理部と第２処理部とを備える。セキュアアプリである第１処理部は、発行部と第１通信部と履歴検証部とを備える。発行部は、前記第２処理部が有する機能を呼び出す命令を発行し、前記命令と検証ルールとを関連付ける。第１通信部は、前記命令を識別する命令識別情報を含む命令実行要求を前記第２処理部に送信し、前記第２処理部から、前記命令識別情報により識別される命令の実行結果を含む実行履歴を受信する。履歴検証部は、前記実行履歴の正しさを、前記検証ルールに従って検証する。
【図面の簡単な説明】
【０００６】
【図１】第１実施形態の情報処理装置の構成の例１を示す図。
【図２】第１実施形態の情報処理装置の構成の例２を示す図。
【図３】第１実施形態の情報処理装置の機能構成の例を示す図。
【図４】第１実施形態の対応情報の例を示す図。
【図５】第１実施形態の実行履歴情報の例を示す図。
【図６】第１実施形態の検証ルール情報の例を示す図。
【図７】第１実施形態の検証方法の例を示すフローチャート。
【図８】第１実施形態の変形例１の実行履歴情報の例を示す図。
【図９】第１実施形態の変形例２の情報処理装置の機能構成の例を示す図。
【図１０】第１実施形態の変形例２の鍵共有方法の例を示すフローチャート。
【図１１】第１実施形態の変形例３の情報処理装置の機能構成の例を示す図。
【図１２】第２実施形態の情報処理装置の構成の例を示す図。
【図１３】第２実施形態の情報処理装置の機能構成の例を示す図。
【図１４】第２実施形態の検証方法の例を示すフローチャート。
【図１５】第２実施形態の変形例１の情報処理装置の機能構成の例を示す図。
【図１６】第２実施形態の変形例２の情報処理装置の機能構成の例を示す図。
【図１７】第１及び第２実施形態の情報処理装置のハードウェア構成の例を示す図。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、情報処理装置の実施形態を詳細に説明する。
【０００８】
（第１実施形態）
はじめに、第１実施形態の情報処理装置１０の構成について説明する。
【０００９】
［構成の例１］
図１は第１実施形態の情報処理装置１０の構成の例１を示す図である。第１実施形態の情報処理装置１０は、セキュアアプリケーション１、連携アプリケーション２及びＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）部３を備える。なお、情報処理装置１０では、セキュアアプリケーション１、連携アプリケーション２及びＯＳ部３以外のソフトウェアが動作してもよい。
【００１０】
例えば、セキュアアプリケーション１及び連携アプリケーション２は、ＯＳ部３上で動作してもよい。また例えば、セキュアアプリケーション１は、ＯＳなしで動作し、連携アプリケーション２は、ＯＳ部３上で動作してもよい。
【００１１】
セキュアアプリケーション１（第１処理部）は、仮想化技術、Ｉｎｔｅｌ（登録商標）  ＳＧＸ、及び、ＡＲＭ（登録商標）  ＴｒｕｓｔＺｏｎｅ（登録商標）などにより、情報処理装置１０で動作する他のアプリケーションとは分離して実行される。
【００１２】
連携アプリケーション２（第２処理部）は、セキュアアプリケーション１とＯＳ部３とを連携させるアプリケーションである。連携アプリケーション２は、例えばＯＳ部３が有する機能を、セキュアアプリケーション１で利用できるようにする。
【００１３】
ＯＳ部３は、Ｌｉｎｕｘ（登録商標）等のリッチＯＳが動作する。
【００１４】
なお、セキュアアプリケーション１、連携アプリケーション２及びＯＳ部３は、複数の装置で実行されてもよい。
【００１５】
［構成の例２］
図２は第１実施形態の情報処理装置１０の構成の例２を示す図である。図２の例は、連携アプリケーション２及びＯＳが、情報処理装置１０ａで動作し、セキュアアプリケーション１が情報処理装置１０ｂで動作する場合を示す。
【００１６】
以下、第１実施形態の説明では、上述の図１の構成を例にして、情報処理装置１０の動作について詳細に説明する。
【００１７】
［機能構成の例］
図３は第１実施形態の情報処理装置１０の機能構成の例を示す図である。第１実施形態の情報処理装置１０は、セキュアアプリケーション１、連携アプリケーション２及びＯＳ部３を備える。
【００１８】
セキュアアプリケーション１は、発行部１１、第１通信部１２、履歴検証部１３及び完全性検証部１４を備える。また、セキュアアプリケーション１は、対応情報１０１及び検証ルール情報１０２を保持する。
【００１９】
連携アプリケーション２は、第２通信部２１、ライブラリ部２２、記録制御部２３及び記録取得部２４を備える。
【００２０】
ＯＳ部３は、命令実行部３１、履歴記録部３２、記録メモリ３３及び付与部３４を備える。
【００２１】
はじめに、セキュアアプリケーション１について説明する。
【００２２】
発行部１１は、ＯＳ部３の機能を提供する連携アプリケーション２（ライブラリ部２２）が有する機能を呼び出す命令を発行する。
【００２３】
具体的には、発行部１１は、第１通信部１２を介して、ＯＳ部３の特定機能の呼出しを依頼する。その際に、発行部１１は、命令識別情報（機能指定情報）と実行履歴ＩＤとを第１通信部１２に渡す。命令識別情報は、命令（ＯＳ部３から呼び出される機能）を一意に識別する情報（例えば、命令（機能）の名称及びアドレス等）を含む。実行履歴ＩＤは、命令の呼び出しを識別する識別情報である。実行履歴ＩＤは、ランダムに生成されても良いし、現在の時刻情報等であってもよい。また、発行部１１は、機能を呼び出す際のパラメータ（命令の引数情報）も、第１通信部１２に渡しても良い。
【００２４】
また、発行部１１は、対応情報１０１を生成する。
【００２５】
図４は第１実施形態の対応情報１０１の例を示す図である。第１実施形態の対応情報１０１には、実行履歴ＩＤ及び検証ルールＩＤが関連付けられて記憶される。実行履歴ＩＤの説明は、上述の説明と同じである。検証ルールＩＤは、検証ルールを識別する識別情報である。例えば図４の例では、実行履歴ＩＤ＝９２３４２３３の実行履歴を検証する際には、検証ルールＩＤ＝１の検証ルールが使用される。
【００２６】
図３に戻り、第１通信部１２は、連携アプリケーション２と通信する。第１通信部１２は、例えば命令を識別する命令識別情報を含む命令実行要求を、第２処理部２１に送信し、第２処理部２１から命令の実行履歴を受信する。
【００２７】
具体的には、第１通信部１２は、命令識別情報及び実行履歴ＩＤを含む命令実行要求を第２通信部２１に送信する。なお、第１通信部１２は、命令にパラメータが存在する場合には、当該パラメータを更に含む命令実行要求を第２通信部２１に送信する。また、第１通信部１２は、第２通信部２１から実行履歴を受信する。
【００２８】
図５は第１実施形態の実行履歴情報の例を示す図である。実行履歴情報は、記録メモリ３３に記憶されている。実行履歴情報は、命令識別情報により識別される命令の実行結果を含む１以上の実行履歴を含む。それぞれの実行履歴は、例えば実行履歴ＩＤ、システムコール列及びシグネチャを含む。実行履歴ＩＤは、実行履歴を識別する履歴識別情報である。システムコール列は、ＯＳ部３で実行された１以上のシステムコールを含む。各システムコール（命令）は、例えば命令の名称、命令の番号、及び、命令のアドレスにより識別される。
【００２９】
シグネチャは、実行履歴ＩＤ及びシステムコール列に対して、ＯＳ部３の秘密鍵により付与された符号（公開鍵署名）である。なお、シグネチャの代わりに共通鍵によるＣＭＡＣ（Ｃｉｐｈｅｒ−ｂａｓｅｄ  Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）、及び、ＨＭＡＣ（Ｈａｓｈ−ｂａｓｅｄ  Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｃｏｄｅ）等のメッセージ認証コード（ＭＡＣ）を利用しても良い。
【００３０】
図３に戻り、第１通信部１２は、第２通信部２１から受信した実行履歴と、命令発行部１１から受信した実行履歴ＩＤを履歴検証部１３に渡す。また、第１通信部は、命令（ライブラリ）の実行結果を発行部１１に返す。
【００３１】
履歴検証部１３は、実行履歴の正しさを、検証ルール情報１０２に含まれる検証ルールに従って検証する。
【００３２】
図６は第１実施形態の検証ルール情報１０２の例を示す図である。検証ルール情報１０２は、検証ルールＩＤ及び検証ルールを含む。検証ルールＩＤは、検証ルールを識別する識別情報である。検証ルールは、実行履歴の検証に使用されるルールである。検証ルールには、例えば実行されるシステムコールの条件が含まれる。
【００３３】
図３に戻り、履歴検証部１３は、第１通信部１２から渡された実行履歴が改ざんされているか否かを検証するために、完全性検証部１４を呼び出す。実行履歴が改ざんされていない場合には、履歴検証部１３は、実行履歴に含まれるシステムコール列が検証ルールに合致するか否かを検証するために、上述の対応情報（図４参照）から、実行履歴ＩＤに対応する検証ルールＩＤを取得する。そして、履歴検証部１３は、検証ルール情報１０２（図６参照）から、検証ルールＩＤに対応する検証ルールを取得し、実行履歴に含まれるシステムコール列が、検証ルールに合致するか否かを判定する。合致した場合には、履歴検証部１３は、ＯＳ部３の命令（機能）が正しく実行されたと判定する。一方で検証ルールに合致しない場合や実行履歴の改ざんが検出された場合には、履歴検証部１３は、ＯＳ部３の命令（機能）が正しく実行されていないと判定する。
【００３４】
完全性検証部１４は、実行履歴の完全性を検証する。具体的には、完全性検証部１４は、改ざんを検出する鍵を使用して、実行履歴から生成された符号を検証する。すなわち、完全性検証部１４は、実行履歴が公開鍵方式で署名されている場合には、ＯＳ部３が持つ秘密鍵に対応する公開鍵で改ざん有無を検証する。また、完全性検証部１４は、ＭＡＣが付与されている場合には、共通鍵でＭＡＣの検証を行い、改ざん有無を検証する。さらに、完全性検証部１４は、実行履歴に含まれる実行履歴ＩＤと、発行部１１が生成した実行履歴ＩＤとが一致するか判定し、一致しない場合にも改ざんが発生したものとみなす。
【００３５】
ここで図４〜図６を用いて、実行履歴を検証する方法を具体的に説明する。図４の実行履歴ＩＤ＝９２３４２３３について、発行部１１により発行された命令に対応するＯＳ部３の命令（機能）の実行結果を検証する際には、まず完全性検証部１４が、実行履歴の改ざん有無を検証する。次に、履歴検証部１３が、図４の対応情報から実行履歴ＩＤ＝９２３４２３３に対応する検証ルールＩＤ＝１を取得する。次に、履歴検証部１３は、図６の検証ルール情報から、検証ルールＩＤ＝１の検証ルールを取得する。
【００３６】
検証ルールＩＤ＝１の検証ルールは、「ｏｐｅｎ，ｗｒｉｔｅ，ｃｌｏｓｅのみが、この順でシステムコール列に実行に含まれる」である。図５の実行履歴ＩＤ＝９２３４２３３の実行履歴に含まれるシステムコール列は「ｏｐｅｎ（“ＨＯＧＥ”）／ｒｅｔ＝４、ｗｒｉｔｅ（４，  “ＦＯＯ”，  ３）／ｒｅｔ＝３、ｃｌｏｓｅ（４）」である。つまり検証ルールを満たしているため、履歴検証部１３は、ＯＳ部３の命令（機能）が正しく実行されていると判定する。
【００３７】
同様に、実行履歴ＩＤ＝２３０９４８７の場合は、検証に用いられる検証ルールは、「ｗｒｉｔｅのみがシステムコール列に含まれ、かつｗｒｉｔｅの第一引数が１であり、かつ第二引数が”ＢＡＲ”である」である。図５の実行履歴ＩＤ＝２３０９４８７の実行履歴に含まれるシステムコールは「ｗｒｉｔｅ（１，“ＢＡＲ”，３）／ｒｅｔ＝３」である。つまり検証ルールを満たしているため、履歴検証部１３は、ＯＳ部３の命令（機能）が正しく実行されていると判定する。
【００３８】
一方で、実行履歴ＩＤ＝２３７４３５８の場合では、検証に用いられる検証ルールは、「ｗｒｉｔｅのみがシステムコール列に含まれ、かつｗｒｉｔｅの第一引数が２であり、かつ第二引数が”ＥＲＲＯＲ”である」である。図５の実行履歴ＩＤ＝２３７４３５８の実行履歴に含まれるシステムコール列は「ｗｒｉｔｅ（２，“ＳＵＣＣＥＳＳ”，７）／ｒｅｔ＝３」であり、「第二引数が“ＥＲＲＯＲ”である」の部分に合致しない。そのため、履歴検証部１３は、ＯＳ部３の命令（機能）が正しく実行されていないと判定する（“ＥＲＲＯＲ”が“ＳＵＣＣＥＳＳ”に偽造されている）。
【００３９】
次に、連携アプリケーション２について説明する。
【００４０】
第２通信部２１は、セキュアアプリケーション１と通信する。具体的には、第２通信部２１は、第１通信部１２と通信するための機能を有する。第２通信部２１は、第１通信部１２から、上述の命令実行要求を受信すると、命令実行要求に含まれる実行履歴ＩＤを記録制御部２３に渡す。次に、第２通信部２１は、命令実行要求に含まれる命令識別情報に対応するライブラリ部２２を呼び出し、命令実行要求にパラメータが含まれている場合には、パラメータをライブラリ部２２に渡す。
【００４１】
第２通信部２１は、ライブラリ部２２による命令の実行が完了した際には、ライブラリ部２２から実行結果を受け取るとともに、記録制御部２３に記録終了を指示し、記録取得部２４から実行履歴を取得する。そして、第２通信部２１は、実行履歴と実行結果とを第１通信部１２に送信する。
【００４２】
ライブラリ部２２は、セキュアアプリケーション１からの命令実行要求に従って、要求された命令を、１以上のＯＳ機能呼び出し命令（例えばシステムコール）やユーザモードで実行される命令に分解して実行する。具体的には、ライブラリ部２２は、第２通信部２１から呼び出され、ライブラリ命令を１以上のシステムコールやユーザモード命令に分解し、ＯＳ機能呼び出し命令の場合には命令実行部３１を呼び出す（システムコール呼び出し）機能を有する。ここでのライブラリ部２２の処理は、複数の命令実行部３１を呼び出す処理であっても良い。例えば、ライブラリ命令として、ファイルに特定文字列を出力するという命令を用意した場合には、ライブラリ部２２は、当該命令を、ファイルオープン、ファイルへの書き込み、及び、ファイルクローズのシステムコールに分解して、命令実行部３１を呼び出す。なお、セキュアアプリケーション１が実行を要求する機能と、ＯＳ部３が有する機能が一対一で対応する場合には、ライブラリ部２２は必須ではない。
【００４３】
記録制御部２３は、第２通信部２１から実行履歴ＩＤを受け付けると、履歴記録開始要求を履歴記録部３２に送信して、履歴情報の記録を開始する。具体的には、記録制御部２３は、１以上のシステムコールの実行が開始されてから、終了するまでの実行履歴を記録するように履歴記録部３２を制御する。この際にシステムコールだけでなく、ユーザモード命令の実行についても記録を行っても良い。記録制御部２３は、記録終了時には履歴記録終了要求を履歴記録部３２に送信する。
【００４４】
記録取得部２４は、履歴記録部３２から、上述の実行履歴を取得する。具体的には、記録取得部２４は、実行履歴ＩＤを含む履歴取得要求を履歴記録部３２に送信し、履歴記録部３２から実行履歴ＩＤに対応する実行履歴を受け付けると、当該実行履歴を第２通信部２１に返す。
【００４５】
次に、ＯＳ部３について説明する。
【００４６】
命令実行部３１は、ライブラリ部２２からの要求に従って命令を実行する。具体的には、命令実行部３１は、システムコールに対応する処理を実行する。その際、命令実行部３１は、履歴記録部３２に実行したシステムコールの履歴追記要求を送信する。
【００４７】
履歴記録部３２は、上述の実行履歴を記録メモリ３３に記録する。具体的には、履歴記録部３２は、履歴記録開始要求、履歴記録終了要求、履歴追記要求及び履歴取得要求等に従って処理を行う。
【００４８】
履歴記録開始要求の場合には、履歴記録部３２は、図５の実行履歴情報に含まれる実行履歴を記録するテーブルを生成し、実行履歴ＩＤを当該テーブルに保存し、履歴の記録モードを記録中とする。
【００４９】
履歴記録終了要求の場合には、履歴記録部３２は、履歴の記録モードを記録終了とする。
【００５０】
履歴追記要求の場合には、履歴記録部３２は、履歴の記録モードが記録中の場合に、図５の実行履歴の実行履歴ＩＤに一致するテーブルに、実行したシステムコールのシステムコール名、引数及び戻り値等を追記する。
【００５１】
履歴取得要求の場合には、履歴記録部３２は、取得要求のあった実行履歴ＩＤに対応する実行履歴に対して、付与部３４を呼び出してシグネチャを付与したのち、実行履歴を記録取得部２４に返す。
【００５２】
記録メモリ３３は、上述の実行履歴情報を記録する記録媒体である。
【００５３】
付与部３４は、実行履歴に符号を付与する。具体的には、付与部３４は、記録メモリ３３に記録された実行履歴に公開鍵署名等による符号を付与する。例えば、付与部３４は、ＯＳ部３の秘密鍵を利用して、実行履歴ＩＤ及びシステムコール列に対してシグネチャを付与する。なお、付与部３４は、公開鍵方式でなく共通鍵方式でＭＡＣを付与しても良い。共通鍵方式でＭＡＣを付与する場合の実施形態は、第１実施形態の変形例２で説明する。
【００５４】
次に第１実施形態の検証方法の例について説明する。
【００５５】
［検証方法の例］
図７は第１実施形態の検証方法の例を示すフローチャートである。はじめに、発行部１１が、命令を発行する（ステップＳ１）。次に、発行部１１は、実行履歴を識別する実行履歴ＩＤを生成する（ステップＳ２）。発行部１１は、命令識別情報と実行履歴ＩＤとを第１通信部１２に送信し、命令の引数情報がある場合には、当該引数情報も第１通信部１２に送信する。また、発行部１１は、実行履歴ＩＤと検証ルールＩＤとを紐づけて、図４の対応情報１０１に登録しておく。さらに、第１通信部１２が、上述の命令実行要求を第２通信部２１に送信する。
【００５６】
続いて、履歴記録部３２が、実行履歴ＩＤと紐づけて、命令実行部３１による命令（システムコール）の実行履歴の記録を開始する（ステップＳ３）。ライブラリ部２２は、呼び出し要求のあった命令を実行するために、当該命令を１以上のシステムコールに分解する（ステップ４）。
【００５７】
次に、記録制御部２３が、全システムコールが実行されたか否かを判定する（ステップＳ５）。全システムコールが実行されていない場合（ステップＳ５，Ｎｏ）、システムコールを実行する（ステップＳ６）。次に、履歴記録部３２が、ステップＳ６の処理により実行されたシステムコールを実行履歴に追加する（ステップＳ７）。
【００５８】
全システムコールが実行された場合（ステップＳ５，Ｙｅｓ）、履歴記録部３２が、ステップＳ３の処理により開始された実行履歴の記録を終了する（ステップＳ８）。次に、符号部３４が、実行履歴に対して公開鍵方式により、上述のシグネチャ等の符号を付与する（ステップＳ８）。次に、記録取得部２４が、ステップＳ８の処理により符号が付与された実行履歴を履歴記録部３２から取得する（ステップＳ１０）。第２通信部２１は、実行履歴をセキュアアプリケーション１に返す。
【００５９】
セキュアアプリケーション１では、まず、完全性検証部１４が、ＯＳ部３の公開鍵を用いて、履歴情報が改ざんされているか否かを判定する（ステップＳ１１）。改ざんされていなかった場合（ステップＳ１１，Ｎｏ）、履歴検証部１３が、実行履歴に含まれる実行履歴ＩＤと、発行部１１により生成された実行履歴ＩＤと、が一致するか否かを判定する（ステップＳ１２）。一致する場合（ステップＳ１２）、履歴検証部１３が、当該実行履歴ＩＤを検証するための検証ルールを使用して、システムコール列が当該検証ルールに合致するか否かを判定する（ステップＳ１３）。
【００６０】
合致した場合（ステップＳ１３，Ｙｅｓ）には、検証処理は正常終了する。合致しない場合（ステップＳ１３，Ｎｏ）、実行履歴ＩＤが一致しなかった場合（ステップＳ１２，Ｎｏ）、及び、実行履歴に改ざんが検出された場合（ステップＳ１１，Ｙｅｓ）には、検証処理は異常終了する。
【００６１】
以上、説明したように、第１実施形態の情報処理装置１０では、セキュアアプリケーション１（第１処理部）が、発行部１１と第１通信部１２と履歴検証部１３とを備える。発行部１１は、連携アプリケーション２（第２処理部）が有する機能を呼び出す命令を発行し、当該命令と検証ルールとを関連付ける（対応情報１０１）。第１通信部１２は、命令を識別する命令識別情報を含む命令実行要求を連携アプリケーション２に送信し、連携アプリケーション２から、命令識別情報により識別される命令の実行結果を含む実行履歴を受信する。履歴検証部１３は、実行履歴の正しさを、検証ルールに従って検証する。
【００６２】
これにより第１実施形態の情報処理装置１０によれば、外部の機能を利用する命令の呼び出しが正しく実行されたか否かを検証することができる。具体的には、例えばセキュアアプリケーション１からＯＳ部３の機能が正しく呼び出せたか確認することができる。これにより、セキュアアプリケーション１への脆弱性混入を防止しつつ、高度な機能が実装できるようになる。
【００６３】
（第１実施形態の変形例１）
次に第１実施形態の変形例１について説明する。第１実施形態の変形例１の説明では、第１実施形態と同様の説明については省略する。
【００６４】
第１実施形態では、実行履歴への符号付与を公開鍵署名による方式で行う方法で説明した。この場合、ＯＳ部３が秘密鍵を持ち、セキュアアプリケーション１が当該秘密鍵に対応する公開鍵を持つ。このとき、ＯＳ部３の秘密鍵が攻撃者に漏洩すると、自由に実行履歴の偽造が可能となってしまう。また、セキュアアプリケーション１が持つ公開鍵が改ざんされてしまった場合にも正しい実行履歴検証が行えなくなってしまう。つまり、ＯＳ部３が持つコードやデータの機密性と完全性、セキュアアプリケーション１が持つコードやデータの完全性を担保する必要がある。
【００６５】
ＯＳ部３が持つコードやデータの機密性及び完全性については、脆弱性の大半がアプリケーションレイヤで発生している現状を鑑みると、適切にメモリの権限分離によりＯＳコードやＯＳデータの書換え及び盗聴防止を行うことで保護することができる。セキュアアプリケーション１が持つコードやデータの完全性については、アプリケーションにシグネチャを付与してＯＳレイヤーで検証する技術や、プロセッサレベルでアプリケーションの改ざんを検知するＩｎｔｅｌ（登録商標）  ＳＧＸ等の技術を利用することで保護が可能となる。一方で、符号付与において共通鍵暗号ベースのＭＡＣを利用する場合には、ホワイトボックス暗号と呼ばれるアプリケーションのコードやデータが漏洩しても鍵が漏洩しない暗号技術を用いる必要がある。
【００６６】
なお、履歴記録に対する攻撃方法として、不正なタイミングで履歴記録開始要求又は履歴記録終了要求を出したり、履歴記録終了要求後に再度履歴記録開始要求を送信したりする攻撃方法がある。例えば、履歴記録終了後にシステムコールを発行し、さらに再度履歴記録開始要求を投げると当該システムコールは実行履歴に記録されない。そのため、履歴上正しく動作しているように見えても正しく動作していないことも考えうる。
【００６７】
この検出のために、変形例１の履歴記録部３２は、記録開始時刻及び記録終了時刻を履歴情報に更に記録する。
【００６８】
図８は第１実施形態の変形例１の実行履歴情報の例を示す図である。変形例１の実行履歴情報に含まれる実行履歴は、実行履歴ＩＤ、システムコール列、記録開始時刻、記録終了時刻及びシグネチャを含む。変形例１の履歴記録部３２は、履歴記録開始要求があった際に、履歴記録開始時刻を記録し、履歴記録終了要求があった際には履歴記録終了時刻を記録する。この場合、同一実行履歴ＩＤに対しては、履歴記録開始要求、履歴記録終了要求の順で、履歴記録開始要求及び履歴記録終了要求をそれぞれ一度のみ受け付ける必要がある。さらに、変形例１の付与部３４は、記録開始時刻及び記録終了時刻も対象にして、シグネチャを付与する。
【００６９】
また、セキュアアプリケーション１の履歴検証部１３は、記録開始時刻及び記録終了時刻が、想定通りの時刻であるか否かを検証する。例えば、履歴検証部１３は、記録開始時刻と前記命令が発行された時刻との差が第１閾値より小さく、かつ、記録終了時刻と現在時刻との差が第２閾値より小さい場合、実行履歴が正しいと検証する。
【００７０】
なお、第１通信部１２が、命令実行要求の送信時刻と、履歴情報の受信時刻とを記録してもよい。この場合、履歴検証部１３は、例えば記録開始時刻と送信時刻との差、記録終了時刻と受信時刻との差を判定する。この差が閾値よりも大きい場合には、記録開始前、又は記録開始終了後に想定外の処理が行われた可能性がある。
【００７１】
また、記録開始時刻（記録終了時刻）を示す情報として、プロセッサのサイクルカウンタなど、攻撃者が巻き戻すことができない情報が用いられても良い。
【００７２】
（第１実施形態の変形例２）
次に第１実施形態の変形例２について説明する。第１実施形態の変形例２の説明では、第１実施形態と同様の説明については省略する。変形例２では、共有鍵を使用してシグネチャを付与する場合について説明する。
【００７３】
図９は第１実施形態の変形例２の情報処理装置１０−２の機能構成の例を示す図である。変形例２の情報処理装置１０−２は、セキュアアプリケーション１、連携アプリケーション２及びＯＳ部３を備える。
【００７４】
セキュアアプリケーション１は、発行部１１、第１通信部１２、履歴検証部１３、完全性検証部１４及び第２交換部１５を備える。また、セキュアアプリケーション１は、対応情報１０１及び検証ルール情報１０２を保持する。
【００７５】
連携アプリケーション２は、第２通信部２１、ライブラリ部２２、記録制御部２３及び記録取得部２４を備える。
【００７６】
ＯＳ部３は、命令実行部３１、履歴記録部３２、記録メモリ３３、付与部３４及び第１交換部３５を備える。
【００７７】
すなわち、変形例２では、セキュアアプリケーション１に第２交換部１５が追加され、ＯＳ部３に第１交換部３５が追加されている。
【００７８】
第１実施形態の付与部３４は、公開鍵方式を利用する場合、ＯＳ部３の機能の呼出し時に毎回公開鍵方式によりシグネチャを付与することになる。一般的に公開鍵方式は共通鍵方式に比べ、処理負荷が大きい。このため、毎回シグネチャを付与すると性能オーバヘッドが大きくなる。
【００７９】
このため変形例２では、セキュアアプリケーション１の起動時等に、ＯＳ部３の第１交換部３５と、セキュアアプリケーション１の第２交換部１５との間で公開鍵方式によって認証を行った後、共通鍵を交換する。付与部３４は、共通鍵を使用して実行履歴に符号を付与する。そして、完全性検証部１４は、共通鍵を使用して符号を検証する。
【００８０】
共通鍵方式では共通鍵が攻撃者に漏洩してしまうと改ざん耐性がなくなるため、鍵交換時にはＯＳ部３及びセキュアアプリケーション１以外の第三者には共通鍵が見えないようにする必要がある。このため、第１交換部３５及び第２交換部１５は、認証を行う機能と、共通鍵を秘匿しつつ鍵交換を行う機能とを有する。
【００８１】
［鍵共有方法の例］
図１０は第１実施形態の変形例２の鍵共有方法の例を示すフローチャートである。はじめに、公開鍵認証処理が実施される（ステップＳ１）。具体的には、セキュアアプリケーション１の第２交換部１５が、ランダムな文字列等を生成し、当該文字列を、第１通信部１２及び第２通信部２１を介して、ＯＳ部３の第１交換部３５に渡す。次に、第１交換部３５は、秘密鍵を用いて文字列に署名を施し、署名された文字列をセキュアアプリケーション１の第２交換部１５に渡す。
【００８２】
次に、第２交換部１５は、ステップＳ１の公開鍵認証で施された署名を検証することにより、認証が成功したか否かを判定する（ステップＳ２２）。認証が成功した場合（ステップＳ２２，Ｙｅｓ）、第２交換部１５は、共通鍵をランダムに生成する（ステップＳ２３）。
【００８３】
次に、鍵共有処理が実施される（ステップＳ２４）。具体的には、第２交換部１５が、ＯＳ部３の公開鍵で当該共有鍵を暗号化し、暗号化された共有鍵を、第１通信部１２及び第２通信部２１を介して、ＯＳ部３の第１交換部３５に渡す。
【００８４】
次に、第１交換部３５が、共有鍵の共有に成功したか否かを判定する（ステップＳ２５）。具体的には、第１交換部３５は、暗号化された共通鍵を、秘密鍵を使用して復号できた場合、共有鍵の共有に成功したと判定する。
【００８５】
ＯＳ部３の秘密鍵がないと暗号化された共通鍵は復号できないため、ＯＳ部３が正しく保護されていれば安全に鍵を共有することができる。正しく共有できた場合には、鍵交換は正常終了となる。一方、通信先の認証に失敗した場合（ステップＳ２２，Ｎｏ）、又は、共通鍵の共有に失敗した場合（ステップＳ２５，Ｎｏ）は、異常終了となる。
【００８６】
上述の図１０のフローチャートは、あくまでも認証／鍵交換の一例であり、他にも認証、鍵交換のアルゴリズムは様々な方式があり、それらの方式を利用することもできる。
【００８７】
（第１実施形態の変形例３）
次に第１実施形態の変形例３について説明する。第１実施形態の変形例３の説明では、第１実施形態と同様の説明については省略する。変形例３では、セキュアアプリケーション１から直接、ＯＳ部３の記録メモリ３３にアクセス可能な場合について説明する。
【００８８】
［機能構成の例］
図１１は第１実施形態の変形例３の情報処理装置１０−３の機能構成の例を示す図である。変形例３の情報処理装置１０−３は、セキュアアプリケーション１、連携アプリケーション２及びＯＳ部３を備える。
【００８９】
セキュアアプリケーション１は、発行部１１、第１通信部１２、履歴検証部１３、完全性検証部１４及び記録取得部１６を備える。また、セキュアアプリケーション１は、対応情報１０１及び検証ルール情報１０２を保持する。
【００９０】
連携アプリケーション２は、第２通信部２１、ライブラリ部２２及び記録制御部２３を備える。
【００９１】
ＯＳ部３は、命令実行部３１、履歴記録部３２、記録メモリ３３及び付与部３４を備える。
【００９２】
すなわち、変形例３では、連携アプリケーション２から記録取得部２４が削除され、セキュアアプリケーション１に記録取得部１６が追加されている。
【００９３】
第１実施形態では、セキュアアプリケーション１が、実行履歴情報が格納された記録メモリ３３に直接アクセスできないことを想定していた。セキュアアプリケーション１が記録メモリ３３に直接アクセスできる場合には、図１１のような変形例３が考えられる。第１実施形態の構成例では、第２通信部２１が第１通信部１２に実行履歴を送信していたが、変形例３では、第１通信部１２が記録取得部１６を呼び出す。そして、記録取得部１６が、検証対象の実行履歴を、実行履歴ＩＤをキーとして記録メモリ３３から取得する。変形例３では、連携アプリケーション２内での実行履歴の改ざん可能性がなくなるため、ＯＳ部３の改ざん可能性が排除できる場合には、付与部３４及び完全性検証部１４は必ずしも必要としない。
【００９４】
（第２実施形態）
次に第１実施形態の変形例１について説明する。第１実施形態の変形例１の説明では、第１実施形態と同様の説明については省略する。第１実施形態では、ＯＳ部３に実行履歴情報を記録することを想定していた。これは、ＯＳ部３に新たな機能を追加することを前提としている。既存のＯＳ部３を変更したくない場合には第１実施形態は適さない。第２実施形態では、ＯＳ部３に対して最小限の変更で、第１実施形態と同様の効果を得るための構成について説明する。
【００９５】
［構成の例］
図１２は第２実施形態の情報処理装置１０−４の構成の例を示す図である。第２実施形態の情報処理装置１０−４は、セキュアアプリケーション１、連携アプリケーション２、ＯＳ部３及び履歴記録アプリケーション４を備える。すなわち、第２実施形態では、履歴記録アプリケーション４が追加されている。履歴記録アプリケーション４の機能構成の詳細は、図１３により説明する。
【００９６】
［機能構成の例］
図１３は第２実施形態の情報処理装置１０−４の機能構成の例を示す図である。第２実施形態の情報処理装置１０−４は、セキュアアプリケーション１、連携アプリケーション２、ＯＳ部３及び履歴記録アプリケーション４を備える。
【００９７】
セキュアアプリケーション１は、発行部１１、第１通信部１２、履歴検証部１３及び完全性検証部１４を備える。また、セキュアアプリケーション１は、対応情報１０１及び検証ルール情報１０２を保持する。
【００９８】
連携アプリケーション２は、第２通信部２１、ライブラリ部２２、記録制御部２３及び記録取得部２４を備える。
【００９９】
ＯＳ部３は、命令実行部３１、付与部３４及びアクセス保護部３６を備える。
【０１００】
履歴記録アプリケーション４（第３処理部）は、命令捕捉部４１、履歴記録部４２及び記録メモリ４３を備える。
【０１０１】
すなわち、第２実施形態では、第１実施形態ではＯＳ部３に存在した履歴記録部３２と記録メモリ３３とが、履歴記録アプリケーション４の履歴記録部４２及び記録メモリ４３に代わっている。また、第２実施形態では、履歴記録アプリケーションに命令捕捉部４１が追加され、ＯＳ部３にアクセス保護部３６が追加されている。
【０１０２】
命令捕捉部４１は、ＯＳ部３による命令の実行を捕捉する。命令捕捉部４１は、例えばＯＳ部３のどの機能が、どのパラメータを指定して呼び出されたかを示す情報を取得する。
【０１０３】
履歴記録部４２は、捕捉された命令を実行履歴として、記録メモリ４３に記録する。さらに、履歴記録部４２は、ＯＳ部３の付与部３４を呼び出して、公開鍵によるシグネチャ等の符号を実行履歴に付与する。
【０１０４】
アクセス保護部３６は、履歴記録アプリケーション４が正しく動作するように、履歴記録アプリケーション４の実行を保護する。アクセス保護部３６は、例えば命令補足部４１、履歴記録部４２及び付与部３４の少なくとも１つに対するアクセス保護を行う。
【０１０５】
具体的なアクセス保護の方法としては、例えば、履歴記録アプリケーション４のデータ及びコードが格納されたメモリに対して、他のアプリからの書き換えをＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）等のメモリ保護機能を利用して禁止する方法がある。また例えば、履歴記録アプリケーション４のデータ及びコードが格納されたメモリを書き換えるシステムコールを検出して禁止する方法がある。また例えば、プロセス終了等の信号を検出して信号を破棄する方法などがある。また例えば、上記の方法を２つ以上組み合わせてアクセス保護をしてもよい。アクセス保護部３６は、メモリ書き込み等の動作阻害を検出して禁止することが好ましいが、動作阻害の検出のみを行い、通知のみを行ってもよい。
【０１０６】
［検証方法の例］
図１４は第２実施形態の検証方法の例を示すフローチャートである。第２実施形態の検証方法は、第１実施形態の検証方法にステップＳ６−２が追加されている。ステップＳ６−２では、命令捕捉部が、ＯＳ部３による命令（システムコール）の実行を捕捉する。
【０１０７】
以上、説明したように、第２実施形態によれば、ＯＳ部３に対する最小限の変更で、第１実施形態と同様の効果を得ることができる。
【０１０８】
（第２実施形態の変形例１）
次に第２実施形態の変形例１について説明する。第２実施形態の変形例１の説明では、第２実施形態と同様の説明については省略する。第２実施形態では、秘密鍵を保持して符号を付与する付与部３４がＯＳ部３の内部に存在した。変形例１では、図１５に示すハードウェア５１によって付与部５１が実現される。
【０１０９】
ハードウェア５１は、例えばプロセッサ、ＴＰＭ（Ｔｒｕｓｔｅｄ  Ｐｌａｔｆｏｒｍ  Ｍｏｄｕｌｅ）、及び、ＨＳＭ（Ｈａｒｄｗａｒｅ  Ｓｅｃｕｒｉｔｙ  Ｍｏｄｕｌｅ）等の独立したハードウェアである。この場合、ＯＳ部３に秘密鍵を置く必要がなくなるため、よりセキュアとなる。ＴＰＭのように公開鍵暗号の計算能力が限られる場合には、さらに第１実施形態の変形例２のように公開鍵による認証と共通鍵によるＭＡＣの付与を組み合わせても良い。
【０１１０】
なお、独立したハードウェア５１としてではなく、付与部５１を仮想化技術等によりリＯＳ部３上のアプリケーションと分離して実行する構成でも良い。アプリケーションの実行内容を保証する場合、保護対象アプリケーションへの設計上、実装上の脆弱性混入を防止し、さらに外部からのメモリ書き換え、不正終了等に対してアプリを正しく保護する必要がある。このため全アプリケーションを適切に保護することは困難である。しかし、本実施形態では保護対象が単機能の履歴記録アプリケーション３のみになるため、脆弱性の混入防止や外部からのアタックに対する保護が現実的である。
【０１１１】
第２実施形態の変形例１によれば、履歴記録アプリケーション４の動作内容を保証することで、引き続き、他のアプリケーションの実行内容の保証自体は困難なものの、他のアプリケーションが正しく動作したか否かの検証を堅牢に行うことが可能となる。
【０１１２】
（第２実施形態の変形例２）
次に第２実施形態の変形例２について説明する。第２実施形態の変形例２の説明では、第２実施形態と同様の説明については省略する。変形例２では、符号の付与を行う機能が、履歴記録アプリケーション４にある場合について説明する。
【０１１３】
［機能構成の例］
図１６は第２実施形態の変形例２の情報処理装置１０−６の機能構成の例を示す図である。変形例２の情報処理装置１０−６は、セキュアアプリケーション１、連携アプリケーション２、ＯＳ部３及び履歴記録アプリケーション４を備える。
【０１１４】
セキュアアプリケーション１は、発行部１１、第１通信部１２、履歴検証部１３及び完全性検証部１４を備える。また、セキュアアプリケーション１は、対応情報１０１及び検証ルール情報１０２を保持する。
【０１１５】
連携アプリケーション２は、第２通信部２１、ライブラリ部２２、記録制御部２３及び記録取得部２４を備える。
【０１１６】
ＯＳ部３は、命令実行部３１及びアクセス保護部３６を備える。
【０１１７】
履歴記録アプリケーション４（第３処理部）は、命令捕捉部４１、履歴記録部４２、記録メモリ４３及び保護機能付き付与部４４を備える。
【０１１８】
第２実施形態では、付与部３４がＯＳ部３の内部にあることを前提としていた。また、第２実施形態の変形例１では、付与部３４が独立したハードウェア５１、または、仮想化環境によって、アプリケーションとは独立して機能することを前提としていた。
【０１１９】
変形例２では、履歴記録アプリケーション４内に、保護機能付き付与部４４が置かれるため、コード及びデータの機密性担保がＯＳ部３内等に存在する場合に比べて困難となる。このために符号付与機能として、機密性・完全性を担保するための保護機能を設ける。具体的には、符号付与方式として、ホワイトボックス暗号を用いてもよいし、難読化技術を用いてもよい。
【０１２０】
第２実施形態の変形例２によれば、第２実施形態と同様の効果を得ることができる。
【０１２１】
最後に、第１及び第２実施形態の情報処理装置１０〜１０−６のハードウェア構成の例について説明する。
【０１２２】
［ハードウェア構成の例］
図１７は第１及び第２実施形態の情報処理装置１０〜１０−６のハードウェア構成の例を示す図である。情報処理装置１０−２〜１０−６のハードウェア構成は、情報処理装置１０と同じなので、情報処理装置１０について説明する。
【０１２３】
情報処理装置１０は、制御装置３０１、主記憶装置３０２、補助記憶装置３０３、表示装置３０４、入力装置３０５及び通信装置３０６を備える。制御装置３０１、主記憶装置３０２、補助記憶装置３０３、表示装置３０４、入力装置３０５及び通信装置３０６は、バス３１０を介して接続されている。
【０１２４】
制御装置３０１は、補助記憶装置３０３から主記憶装置３０２に読み出されたプログラムを実行する。主記憶装置３０２は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、及び、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等のメモリである。補助記憶装置３０３は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、及び、メモリカード等である。
【０１２５】
表示装置３０４は表示情報を表示する。表示装置３０４は、例えば液晶ディスプレイ等である。入力装置３０５は、コンピュータを操作するためのインタフェースである。入力装置３０５は、例えばキーボードやマウス等である。コンピュータがスマートフォン及びタブレット型端末等のスマートデバイスの場合、表示装置３０４及び入力装置３０５は、例えばタッチパネルである。通信装置３０６は、他の装置と通信するためのインタフェースである。
【０１２６】
コンピュータで実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、メモリカード、ＣＤ−Ｒ及びＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）等のコンピュータで読み取り可能な記憶媒体に記録されてコンピュータ・プログラム・プロダクトとして提供される。
【０１２７】
またコンピュータで実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。またコンピュータで実行されるプログラムをダウンロードさせずにインターネット等のネットワーク経由で提供するように構成してもよい。
【０１２８】
またコンピュータで実行されるプログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【０１２９】
コンピュータで実行されるプログラムは、上述の情報処理装置１０の機能構成（機能ブロック）のうち、プログラムによっても実現可能な機能ブロックを含むモジュール構成となっている。当該各機能ブロックは、実際のハードウェアとしては、制御装置３０１が記憶媒体からプログラムを読み出して実行することにより、上記各機能ブロックが主記憶装置３０２上にロードされる。すなわち上記各機能ブロックは主記憶装置３０２上に生成される。
【０１３０】
なお上述した各機能ブロックの一部又は全部をソフトウェアにより実現せずに、ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）等のハードウェアにより実現してもよい。
【０１３１】
また複数のプロセッサを用いて各機能を実現する場合、各プロセッサは、各機能のうち１つを実現してもよいし、各機能のうち２つ以上を実現してもよい。
【０１３２】
また情報処理装置１０を実現するコンピュータの動作形態は任意でよい。例えば、情報処理装置１０を１台のコンピュータにより実現してもよい。また例えば、情報処理装置１０を、ネットワーク上のクラウドシステムとして動作させてもよい。
【０１３３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１３４】
１  セキュアアプリケーション
２  連携アプリケーション
３  ＯＳ部
４  履歴記録アプリケーション
５  ハードウェア
１０  情報処理装置
１１  発行部
１２  第１通信部
１３  履歴検証部
１４  完全性検証部
１５  第２交換部
１６  記録取得部
２１  第２通信部
２２  ライブラリ部
２３  記録制御部
２４  記録取得部
３１  命令実行部
３２  履歴記録部
３３  記録メモリ
３４  付与部
３５  第１交換部
３６  アクセス保護部
４１  命令捕捉部
４２  履歴記録部
４３  記録メモリ
４４  保護機能付き付与部
５１  付与部
１０１  対応情報
１０２  検証ルール
３０１  制御装置
３０２  主記憶装置
３０３  補助記憶装置
３０４  表示装置
３０５  入力装置
３０６  通信装置
３１０  バス
【図１】
2020150318.tif 000003
【図２】
2020150318.tif 000004
【図３】
2020150318.tif 000005
【図４】
2020150318.tif 000006
【図５】
2020150318.tif 000007
【図６】
2020150318.tif 000008
【図７】
2020150318.tif 000009
【図８】
2020150318.tif 000010
【図９】
2020150318.tif 000011
【図１０】
2020150318.tif 000012
【図１１】
2020150318.tif 000013
【図１２】
2020150318.tif 000014
【図１３】
2020150318.tif 000015
【図１４】
2020150318.tif 000016
【図１５】
2020150318.tif 000017
【図１６】
2020150318.tif 000018
【図１７】
2020150318.tif 000019