(57)【要約】      （修正有）【課題】アプリケーションを再起動した場合にも、その正当性を判定できる技術を提供する。【解決手段】アプリケーションの実行が指示された場合、ＴＰＭ内のアプリケーション用ＰＣＲが初期値となっているか否かを判定する。初期値である場合、そのアプリケーションは、装置が起動した後の最初の実行であるものと見なし、アプリケーションのハッシュ値をＰＣＲに登録し、正規なアプリケーションの状態値でのみ復号できる暗号化データの復号処理を行う。一方、ＴＰＭ内のアプリケーション用ＰＣＲが非初期値であった場合には２回め以降の実行であるものと見なし、そのアプリケーションの状態値を算出し、ＴＰＭ内のアプリケーション用ＰＣＲと一致するか否かを判定する。一致すると判定した場合には、暗号化データの復号処理を行い、復号が成功すればアプリケーションの実行を許可し、不一致の場合にはエラー処理し、指示されたアプリケーションは実行しない。【選択図】図３
2014021715.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置であって、
少なくとも正規なプログラムの状態を示す状態値を用いて復号可能な暗号化データを記憶する不揮発性の第１の記憶手段と、
プログラムの状態値を記憶するための、揮発性の第２の記憶手段と、
装置の起動後、実行指示されたプログラムの状態値を算出する算出手段と、
前記第２の記憶手段に記憶された状態値が、装置起動時の初期値であるか否かを判定する第１の判定手段と、
該第１の判定手段の判定の結果が、前記第２の記憶手段に前記初期値が状態値として記憶されていることを示す場合、前記第２の記憶手段における前記初期値を前記算出手段で算出した状態値で更新する更新手段と、
前記第１の判定手段の判定の結果が、前記第２の記憶手段に非初期値が記憶されていることを示す場合、前記算出手段で算出した前記実行指示されたプログラムの状態値に所定の演算を施した値と前記第２の記憶手段に記憶された状態値とが一致するか否かを判定する第２の判定手段と、
前記第１の判定手段の判定の結果が前記第２の記憶手段に前記初期値が記憶されていることを示す場合、又は、前記第２の判定手段の判定の結果が一致することを示している場合、前記第１の記憶手段に記憶されている暗号化データを、前記第２の記憶手段に記憶されている状態値に基づいて復号する復号手段と、
該復号手段による復号が成功した場合、前記実行指示されたプログラムは正規のプログラムであるとして判定し、前記復号手段による復号が不成功の場合、又は、前記第２の判定手段の判定の結果が不一致を示す場合、前記プログラムは非正規なプログラムの状態になっているものと判定する第３の判定手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記第３の判定手段によって正規のプログラムと判定された場合、当該プログラムを実行し、非正規なプログラムの状態になっていると判断した場合に前記プログラムの実行を禁止する制御手段を更に備えることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記復号手段による前記暗号化データの復号が不成功の場合、前記プログラムの再インストールを要求する再インストール要求手段を更に有することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記第２の記憶手段は、ＴＰＭ内の複数のＰＣＲであることを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記算出手段は、前記実行指示されたプログラムのプログラムコードを引数としてハッシュ値を前記状態値として算出することを特徴とする請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
少なくとも正規なプログラムの状態を示す状態値を用いて復号可能な暗号化データを記憶する不揮発性の第１の記憶手段と、プログラムの状態値を記憶するための揮発性の第２の記憶手段とを有するコンピュータに読み込ませ実行させることで、前記コンピュータを情報処理装置として機能させるためのプログラムであって、
前記コンピュータを、
装置の起動後、実行指示されたプログラムの状態値を算出する算出手段、
前記第２の記憶手段に記憶された状態値が、装置起動時の初期値であるか否かを判定する第１の判定手段、
該第１の判定手段の判定の結果が、前記第２の記憶手段に前記初期値が状態値として記憶されていることを示す場合、前記第２の記憶手段における前記初期値を前記算出手段で算出した状態値で更新する更新手段、
前記第１の判定手段の判定の結果が、前記第２の記憶手段に非初期値が記憶されていることを示す場合、前記算出手段で算出した前記実行指示されたプログラムの状態値と前記非初期値とが一致するか否かを判定する第２の判定手段、
前記第１の判定手段の判定の結果が前記第２の記憶手段に前記初期値が記憶されていることを示す場合、又は、前記第２の判定手段の判定の結果が一致することを示している場合、前記第１の記憶手段に記憶されている暗号化データを、前記第２の記憶手段に記憶されている状態値で復号する復号手段、
該復号手段による復号が成功した場合、前記実行指示されたプログラムは正規のプログラムであるとして判定し、前記復号手段による復号が不成功の場合、又は、前記第２の判定手段の判定の結果が不一致を示す場合、前記プログラムは非正規なプログラムの状態になっているものと判定する第３の判定手段
として機能させるためのプログラム。
【請求項７】
請求項６に記載のプログラムを格納したことを特徴とするコンピュータが読み取り可能な記憶媒体。
【請求項８】
少なくとも正規なプログラムの状態を示す状態値を用いて復号可能な暗号化データを記憶する不揮発性の第１の記憶手段と、プログラムの状態値を記憶するための、揮発性の第２の記憶手段とを有する情報処理装置の制御方法であって、
算出手段が、装置の起動後、実行指示されたプログラムの状態値を算出する算出工程と、
第１の判定手段が、前記第２の記憶手段に記憶された状態値が、装置起動時の初期値であるか否かを判定する第１の判定工程と、
更新手段が、該第１の判定工程の判定の結果が、前記第２の記憶手段に前記初期値が状態値として記憶されていることを示す場合、前記第２の記憶手段における前記初期値を前記算出工程で算出した状態値で更新する更新工程と、
第２の判定手段が、前記第１の判定工程の判定の結果が、前記第２の記憶手段に非初期値が記憶されていることを示す場合、前記算出工程で算出した前記実行指示されたプログラムの状態値と前記非初期値とが一致するか否かを判定する第２の判定工程と、
復号手段が、前記第１の判定工程の判定の結果が前記第２の記憶手段に前記初期値が記憶されていることを示す場合、又は、前記第２の判定工程の判定の結果が一致することを示している場合、前記第１の記憶手段に記憶されている暗号化データを、前記第２の記憶手段に記憶されている状態値で復号する復号工程と、
第３の判定手段が、該復号工程による復号が成功した場合、前記実行指示されたプログラムは正規のプログラムであるとして判定し、前記復号工程による復号が不成功の場合、又は、前記第２の判定工程の判定の結果が不一致を示す場合、前記プログラムは非正規なプログラムの状態になっているものと判定する第３の判定工程と、
を備えることを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプログラムに対する改竄の検知技術、特に、ハードディスク等の不揮発性メモリからオペレーティングシステム（ＯＳ）やアプリケーションプログラムをＲＡＭ上にロードし、実行する情報処理装置における改竄検知技術に関するものである。
【背景技術】
【０００２】
コンピュータに搭載されているソフトウェアの改竄検知を実行するために、ＴＰＭ（Ｔｒｕｓｔｅｄ  Ｐｌａｔｆｏｒｍ  Ｍｏｄｕｌｅ）を用いる技術が提案されている（特許文献１）。この技術によれば、予めソフトウェアのハッシュ値が一致した時だけ復号できるような条件を付けた上で、データを暗号化してハードディスクなどに保持しておく。そして、ソフトウェアが起動する際、ソフトウェアのハッシュ値をＴＰＭに登録する。その後、ハードディスクに保持されている暗号化データを利用する際、ソフトウェアがＴＰＭにその暗号化データを復号させる。ＴＰＭは登録されているハッシュ値と、暗号化データの復号条件とを比較し、一致した場合にだけ暗号化データを復号する。一方、改竄されたソフトウェアが起動した場合、ＴＰＭに登録されているハッシュ値と、暗号化データの復号条件が一致しないため、ＴＰＭは暗号化データの復号を実行しない。これにより、改竄されていない正当なソフトウェアだけが暗号化データの復号結果を得ることができる。
【０００３】
特許文献１に記載の方法によれば、ソフトウェアとして、ＢＩＯＳ、ＯＳ、アプリケーションが順に起動される。そして、それらのうち何れかひとつの改竄が検知された場合、暗号化データを復号しないようにしている。これにより、偽造ソフトウェアによる暗号化データの利用を防止することが可能になる。
【０００４】
一方、ＴＰＭにハッシュ値を登録する場合には、その時点で既に登録されているハッシュ値と、新たに登録しようとしているハッシュ値との連結データのハッシュ値を登録するようにしている（非特許文献１）。これにより、一旦正規のソフトウェアがハッシュ値を登録した後、偽造ソフトウェアがハッシュ値を上書きすることを防止することが可能になる。尚、最初にＴＰＭにハッシュ値を登録する場合には、ＴＰＭの初期値と、新たに登録しようとしているハッシュ値との連結データのハッシュ値を登録するようにしている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−２６７２４６号公報
【非特許文献】
【０００６】
【非特許文献１】ＴＣＧ  Ｐｕｂｌｉｓｈｅｄ，「ＴＰＭ  Ｍａｉｎ  Ｐａｒｔ  ３  Ｃｏｍｍａｎｄｓ、Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｖｅｒｓｉｏｎ  １．２、Ｌｅｖｅｌ  ２  Ｒｅｖｉｓｉｏｎ  １０３」，９  Ｊｕｌｙ  ２００７
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来技術は一旦起動したアプリケーションを終了させた後、ＯＳが稼働状態のままで、該当するアプリケーションを再度実行させることを想定していない。
【０００８】
なぜなら、仮にアプリケーションを再起動すると、１つ前の起動時にＴＰＭに登録されたハッシュ値と、これから起動しようとしているアプリケーションのハッシュ値を連結して出来た新たなハッシュ値でＴＰＭに登録されることになるからである。すなわち、結果として、アプリケーションを再起動する度に、ＴＰＭには異なるハッシュ値が登録されてしまう。このため、２回目以降に起動したアプリケーションでは、正規のアプリケーションであるにも関わらず、１回目のアプリケーション起動時のハッシュ値を復号条件として生成した暗号化データを復号できなくなってしまう。
【０００９】
本発明は係る問題点に鑑みなされたものであり、アプリケーションを再起動する際にも、その正当性を正しく判定できる技術を提供しようとするものである。
【課題を解決するための手段】
【００１０】
この課題を解決するため、例えば本発明の情報処理装置は以下の構成を備える。すなわち、
情報処理装置であって、
少なくとも正規なプログラムの状態を示す状態値を用いて復号可能な暗号化データを記憶する不揮発性の第１の記憶手段と、
プログラムの状態値を記憶するための、揮発性の第２の記憶手段と、
装置の起動後、実行指示されたプログラムの状態値を算出する算出手段と、
前記第２の記憶手段に記憶された状態値が、装置起動時の初期値であるか否かを判定する第１の判定手段と、
該第１の判定手段の判定の結果が、前記第２の記憶手段に前記初期値が状態値として記憶されていることを示す場合、前記第２の記憶手段における前記初期値を前記算出手段で算出した状態値で更新する更新手段と、
前記第１の判定手段の判定の結果が、前記第２の記憶手段に非初期値が記憶されていることを示す場合、前記算出手段で算出した前記実行指示されたプログラムの状態値に所定の演算を施した値と前記第２の記憶手段に記憶された状態値とが一致するか否かを判定する第２の判定手段と、
前記第１の判定手段の判定の結果が前記第２の記憶手段に前記初期値が記憶されていることを示す場合、又は、前記第２の判定手段の判定の結果が一致することを示している場合、前記第１の記憶手段に記憶されている暗号化データを、前記第２の記憶手段に記憶されている状態値に基づいて復号する復号手段と、
該復号手段による復号が成功した場合、前記実行指示されたプログラムは正規のプログラムであるとして判定し、前記復号手段による復号が不成功の場合、又は、前記第２の判定手段の判定の結果が不一致を示す場合、前記プログラムは非正規なプログラムの状態になっているものと判定する第３の判定手段と、を備える。
【発明の効果】
【００１１】
アプリケーションを再起動する際にも、その対象とするアプリケーションが正規のアプリケーションであるか否かを判定できる。
【図面の簡単な説明】
【００１２】
【図１】実施形態における情報処理装置のブロック構成図。
【図２】実施形態における装置起動処理の流れを説明するフローチャート。
【図３】実施形態におけるアプリ起動処理の流れを説明するフローチャート。
【図４】実施形態におけるアプリ起動処理の流れを説明するフローチャート。
【図５】実施形態におけるＴＰＭの内部状態の変化を説明する図。
【図６】実施形態における暗号化データの例を示す図。
【発明を実施するための形態】
【００１３】
以下、添付図面に従って本発明に係る実施形態を詳細に説明する。
【００１４】
＜情報処理装置の構成＞
はじめに、図１を用いて、本実施の形態に適応可能な情報処理装置について説明する。図１は本実施形態に係る情報処理装置の基本構成を示す図である。同図において、情報処理装置１１０は、例えば一般に普及しているパーソナルコンピュータである。図１に示すように、本実施形態における情報処理装置１１０は、ＲＯＭ１１、ＨＤＤ１２（第１の記憶装置）、ＴＰＭ(Trusted Platform Module）１３、ＲＡＭ１４、及びＣＰＵ１９から構成される。
【００１５】
ＲＯＭ１１は、物理的、或いは論理的な書き換えが不可能な不揮発性メモリであり、ＢＩＯＳ１５、不図示の各種プログラム、及びデータを記憶可能な補助記憶部である。不揮発性メモリであるため、電源の供給がない場合も内容を記憶し続けることが可能である。ＢＩＯＳ１５は情報処理装置全体を制御するプログラムである。また、ＢＩＯＳ１５は、情報処理装置１１０に電源が投入された際、情報処理装置内部で最初に起動されるプログラムである。
【００１６】
ＨＤＤ１２は、ブートローダー１６、ＯＳ（オペレーティングシステム）１７、アプリケーション１８、及び種々のデータを記憶可能な補助記憶部である。ＨＤＤ１２は、ＲＯＭ１１と同様に不揮発性の記憶装置であって、電源の供給がない場合も内容を記憶し続けることが可能である。ここでブートローダー１６は起動するＯＳの制御をするプログラムである。ＯＳ１７は、アプリケーション１８の起動、ＲＡＭ１４のメモリ管理、及び不図示のキーボードや画面出力などの入出力機能を制御するプログラムである。アプリケーション１８は、ワードプロセッサ、表計算、データベース管理、ネットワークブラウジング、映像・音声再生など、情報処理装置の利用者が実行したい作業を機能として提供するプログラムである。
【００１７】
ＴＰＭ１３は、耐タンパー性を有するセキュリティチップである。耐タンパー性とは、外部からの解析を困難にすると共に、外部から解析しようとした場合に内部に記憶されているプログラム、或いはデータが破壊されてしまうような特性である。また、ＴＰＭ１３の内部には、ＰＣＲ（Platform Configuration Register；状態保持部）と呼ばれる複数のレジスタ（第２の記憶部として機能する）を備える。ＰＣＲは揮発性メモリによって構成されている。このため、電源の供給がある間だけ内容を保持することができる。また、ＴＰＭは、外部から入力されたデータのハッシュ値を次の式に従って計算し、計算した値を所定のＰＣＲに記憶する「登録」と呼ばれる機能を備える。
ＤＡＴＡ_ｉ＋１＝Ｈ（ＤＡＴＡ_ｉ｜ＩＮＰＵＴ）                （式１）
ここで、ＩＮＰＵＴは、ＴＰＭ外部から入力されたデータ、或いはそのハッシュ値である。ＤＡＴＡ_ｉはＴＰＭに登録する時点で、既にＰＣＲに記録されている値である。Ｈ（ｘ）は値ｘに対するハッシュ関数（圧縮関数）である。「ｘ｜ｙ」は値ｘと値ｙの連結である。ＤＡＴＡ_ｉ＋１は外部から値ＩＮＰＵＴが入力された場合に新たに計算される結果値であり、ＤＡＴＡ_ｉ＋１が所定のＰＣＲに上書きされ記憶されることになる。すなわち、ＤＡＴＡ_ｉ＋１は、該当するＰＣＲが保持する更新後の状態値を意味する。
【００１８】
また、本実施形態では、説明を簡単なものとするため、ＴＰＭにはＰＣＲ０、ＰＣＲ１、ＰＣＲ２、及びＰＣＲ３という４つのＰＣＲが搭載されているものとして説明する。更に、ＰＣＲ０はＢＩＯＳ、ＰＣＲ１はブートローダー、ＰＣＲ２はＯＳ、そしてＰＣＲ３はアプリケーションのハッシュ値（それぞれのソフトウエアの状態値）をＩＮＰＵＴとして登録するために利用するものとする。
【００１９】
ＲＡＭ１４は、揮発性メモリであり、ＣＰＵ１９にて処理を行うために一時的にプログラムや各種データ（動作状態）を一時的に格納しておく主記憶部である。揮発性メモリであるため、電源の供給がある間だけ内容を保持することができる。
【００２０】
ＣＰＵ１９は、情報処理装置１１０内の各部の動作を制御、或いはＲＡＭ１４にロードされたプログラムを実行することのできる電子回路である。
【００２１】
以上、本実施形態における情報処理装置の構成について説明した。以降では、本実施形態における情報処理装置の起動処理、及び情報処理装置上で実行されるアプリケーションの起動処理について説明するが、説明を補足するために、図５を併用することにする。図５は、これから説明する装置起動処理、及びアプリ起動処理によって、情報処理装置のＴＰＭ１３の内部のＰＣＲ０乃至ＰＣＲ３がどのように変化するかを説明する図である。図５（Ａ）は初回・２回目共に正規アプリケーションが起動する場合、図５（Ｂ）は初回・２回目共に偽造アプリケーション（非正規のアプリケーション）が起動する場合の図である。また、図５（Ｃ）は初回に正当アプリケーション・２回目に偽造アプリケーションが起動する場合、図５（Ｄ）は初回に偽造アプリケーション・２回目に正当アプリケーションが起動する場合の図である。後述する、各処理を説明するフローチャートと併せて参照されたい。
【００２２】
＜装置起動処理のフロー＞
まず、図２を用いて本実施形態における情報処理装置を起動するための装置起動処理のフローを説明する。図２は本実施形態に適応可能な装置起動処理の流れを示すフローチャートである。
【００２３】
まず、情報処理装置１１０に電源が投入されると、情報処理装置１１０のＣＰＵ１９はＢＩＯＳ１５を最初に起動する（Ｓ２１）。尚、情報処理装置１１０に電源が投入される前は、ＴＰＭ１３内のＰＣＲ０乃至ＰＣＲ３のそれぞれには、図５中の符号５１に示すように初期値「０」（初期状態）が設定されている。そして、ＣＰＵ１９は、ＢＩＯＳ１５に従いＴＰＭ１３の初期化を実行する（Ｓ２２）。初期化によって、ＴＰＭ１３内部の全てのＰＣＲは、夫々所定の値に初期化される。本実施形態では全てのＰＣＲが「０」に初期化されるものとして説明する。しかしながら、本発明はこれに限定されることなく、全ての値を「０」以外の値に初期化したり、ＰＣＲ毎に異なる値に初期化することも可能である。
【００２４】
ＴＰＭ１３の初期値による初期化が完了すると、ＣＰＵ１９は、実行しているＢＩＯＳ１５のコードを引数とし、所定のハッシュ関数に代入してハッシュ値を算出し、算出したハッシュ値を式１に従ってＴＰＭ１３に登録する（Ｓ２３）。本実施形態では、ＢＩＯＳのハッシュ値はＴＰＭ１３の中のＰＣＲ０に登録するものとしている。また、本実施形態では、ＢＩＯＳ１５の登録前にＳ２２でＰＣＲは「０」に初期化されているため、結果的に以下の式で算出される値がＴＰＭ１３内のＰＣＲ０に登録されることになる。
ＰＣＲ０＝Ｈ（０｜ＢＩＯＳ）                    …（式２）
ここで、ＢＩＯＳはＢＩＯＳ１５のプログラムコードのハッシュ値である。このＳ２３における処理の結果、図５の符号５２に示すようにＰＣＲ０にＨ（０｜ＢＩＯＳ）が登録されることになる。
【００２５】
次に、ＣＰＵ１９は、ＢＩＯＳ１５の実行を継続することで、ブートローダー１６をＲＡＭ１４にロードし、そのハッシュ値を算出し、算出したハッシュ値を式１に従ってＴＰＭ１３に登録する（Ｓ２４）。本実施形態では、ブートローダーのハッシュ値はＴＰＭ１３の中のＰＣＲ１に登録するものとしている。また、本実施形態では、Ｓ２２においてＰＣＲは「０」に初期化されているため、結果的に以下の式で算出される値がＰＣＲ１に登録されることになる。
ＰＣＲ１＝Ｈ（０｜ＢＬ）                        …（式３）
ここで、ＢＬはブートローダー１６のプログラムコードのハッシュ値である。Ｓ２４における処理の結果、図５の符号５２に示すようにＰＣＲ１にＨ（０｜ＢＬ）が登録されることになる。
【００２６】
ブートローダーの登録が完了すると、ＣＰＵ１９はＢＩＯＳ１５のプログラムに従い、ＲＡＭ１４にロードしたブートローダー１６を起動する（Ｓ２５）。
【００２７】
ブートローダー１６が起動すると、ＣＰＵ１９は、そのブートローダー１６に従ってＯＳ１７をＲＡＭ１４に読み出し、そのハッシュ値を算出し、算出したハッシュ値を式１に従ってＴＰＭ１３に登録する（Ｓ２６）。本実施形態では、ＯＳのハッシュ値はＴＰＭ１３の中のＰＣＲ２に登録するものとしている。また、本実施形態では、Ｓ２２においてＰＣＲは「０」に初期化されているため、結果的に以下の式で算出される値がＰＣＲ２に登録されることになる。
ＰＣＲ２＝Ｈ（０｜ＯＳ）                        …（式４）
ここで、「ＯＳ」はＯＳ１７のプログラムコードのハッシュ値である。Ｓ２６における処理の結果、図５の符号５２に示すようにＰＣＲ２に、Ｈ（０｜ＯＳ）が登録されることになる。
【００２８】
上記のようにしてＯＳの登録が完了すると、ＣＰＵ１９はブートローダー１６のプログラムに従い、ＲＡＭ１４にロードしたＯＳ１７を起動し（Ｓ２７）、装置起動処理を終了する。
【００２９】
以上、本実施形態における電源ＯＮやリセット時における装置起動時の処理のフローについて説明した。以上の装置起動処理の一連のフローにより、図５の符号５２に示すようにＰＣＲ０、ＰＣＲ１、及びＰＣＲ２に各ソフトウェアコンポーネントのハッシュ値が登録された状態となる。
【００３０】
＜アプリ起動処理のフロー＞
以降では、本実施形態における情報処理装置１１０で実行されるアプリ起動処理について説明する。アプリ起動処理は、情報処理装置１１０が図２に示した装置起動処理によって起動した後、ＯＳ１７によって実行される。例えば、情報処理装置１１０のユーザーが、不図示のキーボードやマウスを用いて情報処理装置１１０に対して所望のアプリケーションの実行指示を行った場合に、その指示がＯＳ１７に伝えられる。そして、実行指示を受け取ったＯＳ１７は、指示されたアプリケーションを実行する（ＲＡＭ１４にロードし、実行する）。また、ユーザーは実行したアプリケーションによる所望の作業が完了した後、不図示のキーボードやマウスを用いて情報処理装置１１０に対して、実行しているアプリケーションの終了を指示することができる。そして、終了処理を受け取ったＯＳ１７は指定されたアプリケーションを終了する。更に、アプリケーションの終了後、ユーザーは再度同じアプリケーションの実行（即ち、アプリケーションの再起動）を指示することも可能である。本実施形態では、情報処理装置１１０の起動後、初回のアプリの実行指示と、２回目以降のアプリケーションの実行指示とでアプリ起動処理のフローが異なる。以降では、まず初回のアプリ起動（実行）処理のフローについて説明することにする。
【００３１】
尚、この後説明する一連のアプリ起動処理によって、ＴＰＭ１３内のＰＣＲの値を取得したり、ＰＣＲにハッシュ値を登録することになるが、初回のアプリ起動であるため、図５の符号５２の状態に対して取得・登録することに留意されたい。
【００３２】
それでは、図３を用いて本実施形態における情報処理装置１１０で実行されるアプリ起動処理のフローを説明する。図３（Ａ）は本実施形態に適応可能なアプリ起動処理の流れを示すフローチャートである。
【００３３】
まず、ＣＰＵ１９は、ＯＳ１７の制御下において、起動しようとしているアプリケーションをＲＡＭ１４に読み出し、そのハッシュ値を算出する（Ｓ３１）（状態算出部）。以降の説明では、起動しようとしているアプリケーションが、正当アプリケーションの場合と偽造アプリケーションの場合の両方について説明する。ここで、Ｓ３１で生成される正当アプリケーションのハッシュ値を「ＡＰＰ」、偽造アプリケーションのハッシュ値を「ＡＰＰ’」と表記するものとする。尚、図中では便宜的に正当アプリケーションのハッシュ値ＡＰＰを用いて記載しているが、偽造アプリケーションのハッシュ値である場合には、適時ＡＰＰ’に置き換えて理解されたい。
【００３４】
次に、ＴＰＭ１３に登録されているアプリケーション用ＰＣＲの値を取得する（Ｓ３２）（状態読み出し部）。前述したように本実施形態ではアプリケーション用ＰＣＲ値はＰＣＲ３であるため、初期値「０」が取得されることになる。そして、ＣＰＵ１９は、ＯＳ１７の制御下において、Ｓ３２にてＴＰＭから取得したアプリケーション用ＰＣＲ値が初期値「０」であるか否かを判定する（Ｓ３３）（第１の判定）。アプリケーション用ＰＣＲ値が初期値の場合は、処理をＳ３４に進め、初期値以外の値（非初期値）の場合には処理をＳ３５に進める。初回のアプリ起動の場合は、取得したアプリケーション用ＰＣＲ値は初期値「０」であるため、処理はＳ３４に進むことになる。
【００３５】
次に、ＣＰＵ１９は、ＯＳ１７の制御下で、Ｓ３１にて、算出したアプリケーションのハッシュ値を式１に従ってＴＰＭ１３に登録する（Ｓ３４）。本実施形態では、アプリケーションのハッシュ値はＴＰＭ１３の中のＰＣＲ３に登録するものとしている。また、初回のアプリ起動では、図５（Ａ）又は図５（Ｃ）の符号５２に示すようにＰＣＲ３は「０」に初期化されている。結果的に、起動しようとしているアプリケーションが正当アプリケーションである場合には、以下の式で算出される値がＰＣＲ３に登録されることになる。
ＰＣＲ３＝Ｈ（０｜ＡＰＰ）                      …（式５）
ここで、ＡＰＰはＳ３１で算出した正当アプリケーションのハッシュ値である。式５の様に算出したＰＣＲ３を登録した結果、ＴＰＭ１３には図５の符号５３に示すように、ＰＣＲ３にＨ（０｜ＡＰＰ）が登録されることになる。
【００３６】
一方、起動しようとしているアプリケーションが偽造アプリケーションである場合には、以下の式で算出される値がＰＣＲ３に登録されることになる。
ＰＣＲ３＝Ｈ（０｜ＡＰＰ’）                    …（式６）
ここで、ＡＰＰ’はＳ３１で算出した偽造アプリケーションのハッシュ値である。式６の様に算出したＰＣＲ３を登録した結果、図５（Ｂ）又は図５（Ｄ）の符号５５に示すようにＰＣＲ３にＨ（０｜ＡＰＰ’）が登録されることになる。
【００３７】
次に、ＣＰＵ１９はＯＳ１７の制御下において、ＨＤＤ１２に予め保持されている暗号化データ（起動対象のアプリケーションの種類毎に用意されているものとする）を取得し、取得した暗号化データをＴＰＭ１３を使って復号する（Ｓ３６）（復号処理部）。ここで、本実施形態における暗号化データについて説明する。
【００３８】
本実施形態における暗号化データは、復号条件付きで暗号化されたデータである。復号条件とは、ＴＰＭ１３内のＰＣＲの値がどのような値の時に暗号化データの復号を許可するかを表す条件のことである。図６に本実施形態における暗号化データの例を示す。図６は、「ＤａｔａＰ」が平文データである。また、ＰＣＲ０、ＰＣＲ１、ＰＣＲ２、及びＰＣＲ３が、夫々Ｈ（０｜ＢＩＯＳ）、Ｈ（０｜ＢＬ）、Ｈ（０｜ＯＳ）、及びＨ（０｜ＡＰＰ）の際に復号可能であることを示している。即ち、これが暗号化データの復号条件である。また、図６は平文、及び復号条件全体が暗号化されていることを示している。
【００３９】
尚、暗号化データは、先に説明したように、アプリケーション毎に用意されているものであり、情報処理装置のユーザー、情報処理装置のメーカー、或いはアプリケーションベンダーなどが予め生成し、ＨＤＤ１２に記憶しておくようにすればよい。例えば、情報処理装置のユーザーが、自分の個人情報をＤａｔａＰとして保護をしたい場合を想定する。この場合、彼が保有する情報処理装置内のＢＩＯＳ、ブートローダー、ＯＳ、及び前記個人情報を取り扱うアプリケーションのハッシュ値を復号条件として暗号化データを生成しておくことが可能である。或いは、情報処理装置のメーカーが、ＨＤＤ１２に含まれる全てのデータを暗号化（ＨＤＤ暗号化）するための鍵をＤａｔａＰとして保護する機能を提供することを想定する。この場合、メーカーが出荷した時点での情報処理装置内のＢＩＯＳ、ブートローダー、ＯＳ、及びＨＤＤ暗号化用アプリケーションのハッシュ値を復号条件として暗号化データを生成しておくことが可能である。或いは、アプリケーションベンダーが、アプリケーションのライセンス情報をＤａｔａＰとして保護したい場合を想定する。この場合、情報処理装置内のＢＩＯＳ、ブートローダー、ＯＳ、及び前記ライセンス情報を管理するライセンス管理アプリケーションのハッシュ値を復号条件として暗号化データを生成しておくことが可能である。
【００４０】
図３（Ａ）に戻って説明を続ける。Ｓ３６における復号処理の後、ＣＰＵ１９はＯＳ１７の制御下において、ＨＤＤ１２から読み出した暗号化データをＴＰＭ１３に渡して、復号を行なわせる。ＴＰＭ１３は、受けとった暗号化データにおける暗号化データの復号条件と、その時点でＴＰＭ１３に登録されている各ＰＣＲの値とが一致する場合には、暗号化されたデータを復号すると共に、復号成功を示す値をＣＰＵ１９」に返す。一方、不一致の場合にはＴＰＭ１３は復号失敗を示す値をＣＰＵ１９に返す。この返り値からＣＰＵ１９は、暗号化データの復号が成功したか否かを判断する（Ｓ３７）（第３の判定）。要するに、本実施形態では、暗号化データの復号条件と、その時点でＴＰＭ１３に登録されているＰＣＲの値とが一致する場合には復号成功となり、不一致の場合には復号失敗となる。
【００４１】
ここで、正当アプリケーションを起動しようとしている場合を考える。この場合、図５（Ａ）又は図５（Ｃ）の符号５３に示すように、ＰＣＲ０、ＰＣＲ１、ＰＣＲ２、及びＰＣＲ３には、夫々Ｈ（０｜ＢＩＯＳ）、Ｈ（０｜ＢＬ）、Ｈ（０｜ＯＳ）、及びＨ（０｜ＡＰＰ）が登録されているはずである。この場合、図６に示す暗号化データの復号条件とＴＰＭ内に登録されている値は一致するため、Ｓ３７で暗号化データの復号は成功と判定される。
【００４２】
一方、偽造アプリケーションを起動しようとしている場合を考える。この場合、図５の５５に示すように、ＰＣＲ０、ＰＣＲ１、ＰＣＲ２、及びＰＣＲ３には、夫々Ｈ（０｜ＢＩＯＳ）、Ｈ（０｜ＢＬ）、Ｈ（０｜ＯＳ）、及びＨ（０｜ＡＰＰ’）が登録されているはずである。この場合、図６に示す暗号化データの復号条件とＴＰＭ内に登録されている値は一致しないため、Ｓ３７で暗号化データの復号は失敗（不成功）と判定する。
【００４３】
さて、復号成功と判定され、Ｓ３８に処理が進むと、ＣＰＵ１９はＯＳ１７の制御下にて、起動しようとしているアプリケーションは正当アプリケーションであると見なし、ＲＡＭ１４にロードしたアプリケーションを実行する。
【００４４】
一方、復号失敗と判定された場合、ＣＰＵ１９は、ＯＳ１７の制御下にて、起動しようとしているアプリケーションは偽造アプリケーションであるため、偽造アプリケーションであることを示すエラーを表示し（Ｓ３９）、アプリ起動処理を終了する。すなわち、該当するアプリケーションの実行を禁止する。この場合、ＲＡＭ１４に読み込んだアプリケーションの格納領域は他のアプリケーション用に解放する、もしくはＲＡＭ１４から削除する。
【００４５】
以上、本実施形態における、初回のアプリ起動処理のフローについて説明した。以上の初回のアプリ起動処理の一連のフローにより、正当アプリケーションを起動した場合は図５（Ａ）又は図５（Ｃ）の符号５３、偽造アプリケーションの場合は図５（Ｂ）又は図５（Ｄ）の符号５５のようにＰＣＲ３にアプリケーションのハッシュ値が登録された状態となる。
【００４６】
続いて、２回目以降のアプリ起動処理のフローについて説明する。尚、本実施形態においては、３回目以降のアプリ起動処理は２回目のアプリ起動処理と同様であるため説明を省略し、以降では２回目のアプリ起動処理について説明する。また、２回目以降のアプリ起動処理の一連のフローにおいて、ＴＰＭ１３内のＰＣＲの値を取得することになるが、２回目のアプリ起動処理であるため、初回のアプリ起動処理と違い、図５の符号５３の状態、或いは５５の状態から取得することに留意されたい。つまり、初回に正当アプリケーションが起動した場合は図５（Ａ）又は図５（Ｃ）の符号５３の状態からＰＣＲの値を取得し、一方、偽造アプリケーションが起動した場合は図５（Ｂ）又は図５（Ｄ）の符号５５の状態からＰＣＲの値を取得することになる。
【００４７】
まず、ＣＰＵ１９は、ＯＳ１７の制御下において、起動しようとしているアプリケーションのハッシュ値を算出し（Ｓ３１）、ＴＰＭ１３に登録されているアプリケーション用ＰＣＲ値を取得する（Ｓ３２）。前述したように本実施形態では、初回に正当アプリケーションが起動している場合、図５（Ａ）又は図５（Ｃ）の符号５３に示すようにＰＣＲ３にＨ（０｜ＡＰＰ）が登録されているため、この値が取得されることになる。一方、初回に偽造アプリケーションが起動している場合、図５（Ｂ）又は図５（Ｄ）の符号５５に示すようにＰＣＲ３にＨ（０｜ＡＰＰ’）が登録されているため、この値が取得されることになる。そして、ＣＰＵ１９はＯＳ１７の制御下において、Ｓ３２で取得したアプリケーション用ＰＣＲ値が初期値「０」であるか否かを判定する（Ｓ３３）。２回目のアプリ起動では、初回に起動したアプリケーションが、（正当アプリケーションであっても偽造アプリケーションであっても）何れの場合も初期値「０」ではないため、処理はＳ３５に進むことになる。次に、ＣＰＵ１９は、ＯＳ１７の制御下において、ＰＣＲ３の初期値「０」とＳ３１で算出したアプリケーションのハッシュ値の連結のハッシュ値ＰＣＲ３’を算出する。そして、算出したハッシュ値ＰＣＲ３’がＳ３２で取得したアプリケーション用ＰＣＲ値であるＰＣＲ３と一致するか否かを判定する（Ｓ３５）（第２の判定）。ここで、Ｓ３５における判定処理について、正当アプリケーションを起動しようとしている場合と、偽造アプリケーションを起動しようとしている場合の２つに分けて、夫々説明する。
【００４８】
まず、正当アプリケーションを起動しようとしている場合を説明する。この場合、Ｓ３１で正当アプリケーションのハッシュ値ＡＰＰが算出されるため、結果として、Ｓ３５では、次の式７で示す値がＰＣＲ３’として算出される。
ＰＣＲ３’＝Ｈ（０｜ＡＰＰ）                    …（式７）
そして、Ｓ３２でＴＰＭ１３から取得したＰＣＲ３の値が、Ｈ（０｜ＡＰＰ）である場合には、ＰＣＲ３’と一致するため、処理をＳ３６に進める。つまり、これは初回も２回目も正当アプリケーションを起動しようとしている場合である。そして、Ｓ３６における復号処理の後、復号条件とＴＰＭ内のＰＣＲ値が一致するため、Ｓ３７で復号成功と判定され、最終的にＳ３８で正当アプリケーションが起動することになる。一方、Ｓ３２でＴＰＭ１３から取得したＰＣＲ値がＨ（０｜ＡＰＰ’）である場合には、ＰＣＲ３’と一致しないため、復号失敗と判定され、処理をＳ３９に進める。つまり、これは初回に偽造アプリケーションを起動し、２回目に正当アプリケーションを起動しようとしている場合である。この場合、前述したように、Ｓ３９でエラーを表示し、アプリ起動処理を終了する。
【００４９】
次に、偽造アプリケーションを起動しようとしている場合を説明する。この場合、Ｓ３１で偽造アプリケーションのハッシュ値ＡＰＰ’が算出されるため、結果として次の式８で示す値がＰＣＲ３’として算出される。
ＰＣＲ３’＝Ｈ（０｜ＡＰＰ’）                  …（式８）
そして、Ｓ３２でＴＰＭ１３から取得したＰＣＲ値がＨ（０｜ＡＰＰ’）である場合には、ＰＣＲ３’と一致するため、処理をＳ３６に進める。つまり、これは初回も２回目も偽造アプリケーションを起動しようとしている場合である。Ｓ３６における復号処理の後、復号条件とＴＰＭ内のＰＣＲ値が一致しないため、Ｓ３７で復号失敗と判定され、Ｓ３９で偽造アプリケーションであることを示すエラーを表示し、アプリ起動処理を終了する。一方、Ｓ３２でＴＰＭ１３から取得したＰＣＲ値がＨ（０｜ＡＰＰ）である場合には、ＰＣＲ３’と一致しないため、処理をＳ３９に進める。つまり、これは初回に正当アプリケーションを起動し、２回目に偽造アプリケーションを起動しようとしている場合である。この場合、前述したように、Ｓ３９で偽造アプリケーションであることを示すエラーを表示し、アプリ起動処理を終了する。
【００５０】
以上、本実施形態における、２回目以降のアプリ起動処理のフローについて説明した。以上の２回目以降のアプリ起動処理の一連のフローにより、ＴＰＭ１３内の各ＰＣＲの値は、図５（Ａ）乃至（Ｄ）の符号５４、或いは符号５６の何れかの状態となる。ここで、符号５４、及び５６の何れの状態もアプリケーションの初回起動直後（それぞれ符号５３、及び５５）の状態から変化がないことに留意されたい。即ち、２回目のアプリ起動処理では、Ｓ３３の後、必ず処理がＳ３５に進む。つまり、アプリケーションのハッシュ値を登録するステップであるＳ３４は、２回目以降のアプリ起動処理では実行されない。これにより、２回目以降のアプリ起動の場合は、ＴＰＭ１３内のＰＣＲの値は変化することがない。このため、正当アプリケーションの場合、図６に示した暗号化データを復号することが可能となる。
【００５１】
一方、２回目以降のアプリ起動処理では、起動しようとしているアプリケーションのハッシュ値を登録しない。このため、Ｓ３７において、ＴＰＭ１３に登録したＰＣＲの値と暗号化データの復号条件を用いて、正当アプリケーションか偽造アプリケーションかを判定することができないことになる。例えば、初回に正当アプリケーションを起動し、何らかの原因で、２回目に偽造アプリケーションを起動しようとした場合（図５（Ｃ）の状態である）、２回目に起動しようとしているアプリケーションが偽造アプリケーションであることを検知できない。
【００５２】
そこで本実施形態では、これを補うため、Ｓ３５において、前回のアプリケーションの起動時にＴＰＭ１３に登録されたＰＣＲの値と、改めてＯＳ１７が算出したＨ（０｜ＡＰＰ）、或いはＨ（０｜ＡＰＰ’）を比較するようにしている。即ち、これから起動しようとしているアプリケーションが前回起動時と同じか否かを判定するようにしている。これにより、初回に正当アプリケーションを起動し、２回目に偽造アプリケーション起動しようとした場合にも、アプリケーションの改竄を検知することが可能となる。
【００５３】
尚、本実施形態においては、ＯＳ１７がアプリケーションを起動するものとして説明をしたが、本発明はアプリケーションに限定されることなく、ライブラリ、インタープリタ、仮想マシン、シェルなど、ＯＳ１７が起動する種々のプログラムに対して適応可能である。 
＜変形例１＞
以上説明した実施形態では、Ｓ３５においてアプリケーション用ＰＣＲ値とＨ（０｜ＡＰＰ）が一致しない場合、及びＳ３７において復号失敗と判定された場合、共にＳ３９でエラー表示するようにしていた。しかしながら、本発明はこれに限定されることなく、夫々の場合に異なるエラー表示をすることも可能である。以降では、この場合の変形例について、図３（Ｂ）を用いて説明する。尚、図３（Ｂ）において、既に説明した図３（Ａ）と同様の処理を実行するステップに関しては同じ番号を付与するようにし、説明は省略する。
【００５４】
Ｓ３５において、アプリケーション用ＰＣＲ値とＨ（０｜ＡＰＰ）が一致しないのは、即ち現在起動しようとしているアプリケーションと、前回起動しようとしているアプリケーションが異なるからである。よって、この場合、前回起動時と異なるアプリケーションを起動しようとしている旨のエラー表示をしてもよい（Ｓ３１１）。
【００５５】
一方、Ｓ３７において復号失敗と判定されるのは、即ち現在起動しようとしているアプリケーションが、暗号化データの復号条件と一致しないからである。よって、暗号化データの復号条件に工場出荷時のアプリケーションのハッシュ値が含まれている場合には、工場出荷時と異なるアプリケーションを起動しようとしている旨のエラー表示をしてもよい。或いは、暗号化データの復号条件にベンダーが提供したライセンス管理アプリケーションのハッシュ値が含まれている場合には、インストール時と異なるアプリケーションを起動しようとしている旨のエラーを表示してもよい（Ｓ３１０）。
【００５６】
尚、前述したＳ３１０、及びＳ３１１の何れの場合も、（前回、或いは今回）偽造アプリケーションを起動しようとしていることに変わりはない。よって、ＯＳ１７は、Ｓ３１０、或いはＳ３１１によるエラー表示後、正当アプリケーションをインストールするためのアプリケーションの再インストール要求（Ｓ３１２）（再インストール要求部）を実行するようにしてもよい。また、アプリケーションの再インストール要求後、情報処理装置１１０の再起動要求（Ｓ３１３）（再起動要求部）を実行するようにしてもよい。情報処理装置１１０を再起動した場合、前述した図２に示した装置起動処理が改めて実行されることになる。そうした場合、この装置起動処理内の過程で、Ｓ２２はＴＰＭ内のＰＣＲを初期値「０」に初期化する。よって、装置再起動後、再インストールした正当アプリケーションは初回起動処理として、結果的に正しく起動されることになる。
【００５７】
＜変形例２＞
以上説明した実施形態では、Ｓ３１０、及びＳ３１１において異なるエラー表示をするようにした後、何れの場合も、アプリケーション再インストール要求（Ｓ３１２）、及び装置の再起動要求（Ｓ３１３）を実行していた。しかしながら、本発明はこれに限定されることなく、Ｓ３１０、及びＳ３１１において異なるエラー表示をした後、アプリケーション再インストール要求（Ｓ３１２）を実行するか否かを制御することも可能である。
【００５８】
以降では、この場合の変形例について、図４を用いて説明する。尚、図４において、既に説明した図３（Ａ）、及び図３（Ｂ）と同様の処理を実行するステップに関しては同じ番号を付与するようにし、説明は省略する。
【００５９】
まず、図４においては、Ｓ３６において暗号化データの復号処理を実行した後、その復号結果をＨＤＤ１２などに保存するようにする（Ｓ４１）（復号結果保持部）。本実施形態においては、復号成功の場合はそれを示すビット「１」、復号失敗の場合はそれを示すビット「０」を保存するようにする。本実施形態では、後述するＳ４２における判定処理において、直前の復号結果だけを利用できれば良い。このため、Ｓ４１では、常に最新の復号結果だけを保存すればよいため、既に復号結果が保存されている場合は、これを上書きするようにするものとする。
【００６０】
そして、Ｓ３５において、前回のアプリケーションの起動時にＴＰＭ１３に登録されたＰＣＲの値と、改めてＯＳ１７が算出したハッシュ値を比較した後、ＨＤＤ１２に保存されている復号結果が復号成功を示すビット「１」であるか否かを判定する（Ｓ４２）。そして、復号成功である場合には、処理をＳ３１０に進め、さもなければ、処理をＳ３１１に進める。Ｓ３１０においてエラー表示をした後、Ｓ３１２でアプリケーション再インストール要求を実行し、その後Ｓ３１３で装置再起動要求を実行する。一方、Ｓ３１１においてエラー表示をした後は、Ｓ３１２でアプリケーション再インストール要求は実行せず、Ｓ３１３で装置再起動要求を実行する。
【００６１】
以上説明した実施形態によれば、Ｓ４１において、前回アプリ起動処理時の復号結果を保存している。このため、（その次のアプリ起動処理時に）Ｓ４２において、復号結果が成功である場合は、前回起動しようとしたアプリケーションは正当アプリケーションであったと判断できる。それに加え、直前のＳ３５において、前回起動しようとしたアプリケーションと今回起動しようとしているアプリケーションが異なる状態（ハッシュ値）であるため、今回は偽造アプリケーションを起動しようとしていると判断できる。よって、この場合はＳ３１２において正当アプリケーションの再インストール要求を実行することになる。
【００６２】
一方、Ｓ４２において、復号結果が失敗である場合は、前回起動しようとしたアプリケーションは偽造アプリケーションであったと判断できる。それに加え、直前のＳ３５において、前回起動しようとしたアプリケーションと今回起動しようとしているアプリケーションが異なる状態（ハッシュ値）であるため、今回は正当アプリケーションを起動しようとしていると判断できる。よって、この場合は、Ｓ３１２における正当アプリケーションの再インストール要求は必要なく、Ｓ３１３において、装置の再起動要求を実行することになる。
【００６３】
何れの場合も、Ｓ３１３における装置の再起動要求によって、図２に示した装置起動処理が実行されることになり、正当アプリケーションを正しく起動することが可能となる。
【００６４】
尚、本実施形態では、Ｓ４１において、アプリ起動処理中に復号結果を保存するものとして説明したが、本発明はこれに限定されることなく、アプリケーションの実行中、或いはアプリケーションの終了処理中など、次回アプリケーションが起動するまでに、復号結果を保持するようにすることも可能である。
【００６５】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2014021715.tif 000003
【図２】
2014021715.tif 000004
【図３】
2014021715.tif 000005
【図４】
2014021715.tif 000006
【図５】
2014021715.tif 000007
【図６】
2014021715.tif 000008