(57)【特許請求の範囲】
【請求項１】
セキュアチップを有する情報処理装置であって、
前記情報処理装置が休止状態から復帰したか否かを判定する判定手段と、
前記判定手段により休止状態から復帰したと判定された場合、前記セキュアチップが初期化されているか否かを、アプリケーションソフトウェアを起動する前に検知する検知手段と、
前記検知手段により前記セキュアチップが初期化されていることが検知された場合、初期化されている前記セキュアチップに、前記アプリケーションソフトウェアのハッシュ値が登録されないように前記情報処理装置の動作を制御する制御手段と、を有することを特徴とする情報処理装置。
【請求項２】
前記セキュアチップは、前記情報処理装置で起動したソフトウェアのハッシュ値を登録するための揮発性のメモリを有することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記セキュアチップは、ＴＰＭ（Ｔｒｕｓｔｅｄ  Ｐｌａｔｆｏｒｍ  Ｍｏｄｕｌｅ）であることを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記制御手段は、前記検知手段により前記セキュアチップが初期化されていることが検知された場合、前記情報処理装置を再起動させることを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記制御手段は、前記検知手段により前記セキュアチップが初期化されていることが検知された場合、前記情報処理装置が前記セキュアチップを利用することが出来ないようにすることを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項６】
前記制御手段は、前記検知手段により前記セキュアチップが初期化されていることが検知された場合、前記セキュアチップに利用不可にするコマンドを送信することにより、前記情報処理装置が前記セキュアチップを利用することが出来ないようにすることを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記制御手段は、前記検知手段により前記セキュアチップが初期化されていることが検知された場合、前記セキュアチップへのアクセスを制限することにより、前記情報処理装置が前記セキュアチップを利用することが出来ないようにすることを特徴とする請求項５に記載の情報処理装置。
【請求項８】
前記制御手段は、前記検知手段により前記セキュアチップが初期化されていることが検知された場合、前記セキュアチップに、システム復帰した際にＰＣＲが初期値であったことを示す定数を登録することを特徴とする請求項１に記載の情報処理装置。
【請求項９】
前記制御手段は、前記検知手段により前記セキュアチップが初期化されていることが検知された場合、前記セキュアチップに乱数を登録することを特徴とする請求項１に記載の情報処理装置。
【請求項１０】
セキュアチップを有する情報処理装置の制御方法であって、
判定手段が、前記情報処理装置が休止状態から復帰したか否かを判定する判定工程と、
検知手段が、前記判定工程により休止状態から復帰したと判定された場合、前記セキュアチップが初期化されているか否かを、アプリケーションソフトウェアを起動する前に検知する検知工程と、
前記検知工程により前記セキュアチップが初期化されていることが検知された場合、初期化されている前記セキュアチップに、前記アプリケーションソフトウェアのハッシュ値が登録されないように前記情報処理装置の動作を制御する制御工程と、を有することを特徴とする制御方法。
【請求項１１】
コンピュータを、
セキュアチップを有する情報処理装置であって、
前記情報処理装置が休止状態から復帰したか否かを判定する判定手段と、
前記判定手段により休止状態から復帰したと判定された場合、前記セキュアチップが初期化されているか否かを、アプリケーションソフトウェアを起動する前に検知する検知手段と、
前記検知手段により前記セキュアチップが初期化されていることが検知された場合、初期化されている前記セキュアチップに、前記アプリケーションソフトウェアのハッシュ値が登録されないように前記情報処理装置の動作を制御する制御手段と、を有することを特徴とする情報処理装置として機能させるためのコンピュータプログラム。
【請求項１２】
セキュアチップを有する情報処理装置であって、
アプリケーションソフトウェアを起動した場合、前記セキュアチップの揮発性メモリにアプリケーションソフトウェアのハッシュ値を登録する第一の登録手段と、
前記情報処理装置が休止状態に入る場合、前記揮発性メモリに登録されたハッシュ値を前記セキュアチップの不揮発性メモリに登録する第二の登録手段と、
前記第二の登録手段における登録後に、アプリケーションソフトウェアを起動した場合、
ユーザに対して報知を行う報知手段と、を有することを特徴とする情報処理装置。
【請求項１３】
セキュアチップを有する情報処理装置であって、
第一の登録手段が、アプリケーションソフトウェアを起動した場合、前記セキュアチップの揮発性メモリにアプリケーションソフトウェアのハッシュ値を登録する第一の登録工程と、
第二の登録手段が、前記情報処理装置が休止状態に入る場合、前記揮発性メモリに登録されたハッシュ値を前記セキュアチップの不揮発性メモリに登録する第二の登録工程と、
前記第二の登録工程における登録後に、アプリケーションソフトウェアを起動した場合、ユーザに対して報知を行う報知工程と、を有することを特徴とする情報処理装置。
【請求項１４】
コンピュータを、
セキュアチップを有する情報処理装置であって、
アプリケーションソフトウェアを起動した場合、前記セキュアチップの揮発性メモリにアプリケーションソフトウェアのハッシュ値を登録する第一の登録手段と、
前記情報処理装置が休止状態に入る場合、前記揮発性メモリに登録されたハッシュ値を前記セキュアチップの不揮発性メモリに登録する第二の登録手段と、
前記第二の登録手段における登録後に、アプリケーションソフトウェアを起動した場合、ユーザに対して報知を行う報知手段と、を有することを特徴とする情報処理装置として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セキュアチップを有する情報処理装置、情報処理装置の制御方法、およびコンピュータプログラムに関するものである。
【背景技術】
【０００２】
セキュアチップを用いて、コンピュータ上で動作するコンピュータプログラムの改竄検知を行うことが提案されている。一般的なセキュアチップとしては、揮発性メモリおよび不揮発性メモリを有するＴＰＭ（Ｔｒｕｓｔｅｄ  Ｐｌａｔｆｏｒｍ  Ｍｏｄｕｌｅ）がある。
【０００３】
例えば、コンピュータの起動後、ＣＰＵが実行したコンピュータプログラムのハッシュ値をＴＰＭ内の揮発性メモリに順次登録しておく。コンピュータプログラムには、ブートローダ、オペレーティングシステム、アプリケーションソフトウェアなどが含まれる。そして、登録後、実行中のコンピュータプログラムから再計算されたハッシュ値と、ＴＰＭ内の揮発性メモリに登録されたハッシュ値とを比較することにより、コンピュータプログラムが改竄されたか否かを検知することが出来る。
【０００４】
また、省電力モード等の休止状態からの復帰時に、当該コンピュータ内のメモリ内データの改竄検知を行う技術も提案されている。
【０００５】
省電力モードにおける休止状態に入ると、ＴＰＭへの電源供給が停止されるため、ＴＰＭ内の揮発性メモリに登録したハッシュ値は消失してしまう。よって、コンピュータが休止状態から復帰した時には、すでにＴＰＭ内の揮発性メモリに登録したハッシュ値は消失してしまっている。ハッシュ値が消失してしまっていると、改竄検知を行うことが出来ないため、ＴＰＭでは以下のような対処がなされている。
【０００６】
すなわち、ＴＰＭは休止状態へ移行する前に、ＴＰＭ内の揮発性メモリに登録されたハッシュ値を、不揮発性メモリへ退避させる。退避後、電源供給を停止する。そして、休止状態からの復帰後、不揮発性メモリへ退避したハッシュ値を揮発性メモリに復元する。
【０００７】
特許文献１には上記ハッシュ値の退避に関する技術が開示されている。具体的には、まず休止状態へ移行する前のメモリのスナップショットのハッシュ値を、ＴＰＭ内の不揮発性メモリに格納しておく。そして、休止状態からの復帰時に、スナップショットから再計算したハッシュ値と不揮発性メモリに格納に格納されているハッシュ値とを比較するというものである。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００９−１８７１３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、ＴＰＭが揮発性メモリに登録されたハッシュ値を不揮発性メモリに退避した後、ＣＰＵがアプリケーションソフトウェアを実行した場合、当該アプリケーションソフトウェアのハッシュ値が、再度、揮発性メモリに登録されてしまうことになる。
【００１０】
つまり、この時点で不揮発性メモリと揮発性メモリとの内容が一致しなくなってしまう。このメモリ内容の不一致の発生を防止するために、ＴＰＭでは、揮発性メモリの内容を不揮発性メモリに退避した後に揮発性メモリにハッシュ値が登録された場合、不揮発性メモリの内容を初期化するようにしている。
【００１１】
休止状態への移行前に不揮発性メモリが初期化された場合、休止状態からの復帰時には揮発性メモリには初期値が復元されることになる。この状態では、既に起動しているアプリケーションソフトウェアが改竄されたものであるか否かを検知することは出来ない。また、新たに起動するアプリケーションソフトウェアのハッシュ値を登録しようとすると、ブートローダやオペレーティングシステムなどの他のソフトウェアのハッシュ値が登録されていない状態でハッシュ値が登録されてしまう。ブートローダやオペレーティングシステムなどの他のソフトウェアのハッシュ値が登録されていない状態で改竄検知を行うと、当然ながら改竄されたものとみなされてしまう。
【００１２】
本発明は、上記課題を鑑みてなされたものであり、セキュアチップを有する情報処理装置が休止状態から復帰した後、当該セキュアチップにアプリケーションソフトウェアのハッシュ値を登録する際の不具合を防止することを目的とする。
【課題を解決するための手段】
【００１３】
上記課題を解決するため、本発明におけるセキュアチップを有する情報処理装置は、前記情報処理装置が休止状態から復帰したか否かを判定する判定手段と、前記判定手段により休止状態から復帰したと判定された場合、前記セキュアチップが初期化されているか否かを、アプリケーションソフトウェアを起動する前に検知する検知手段と、前記検知手段により前記セキュアチップが初期化されていることが検知された場合、初期化されている前記セキュアチップに、前記アプリケーションソフトウェアのハッシュ値が登録されないように前記情報処理装置の動作を制御する制御手段と、を有することを特徴とする。
【発明の効果】
【００１４】
本発明によれば、セキュアチップを有する情報処理装置が休止状態から復帰した後、当該セキュアチップにアプリケーションソフトウェアのハッシュ値を登録する際の不具合を防止することが出来る。
【図面の簡単な説明】
【００１５】
【図１】第一の実施形態における情報処理装置を説明する図である。
【図２】第一の実施形態における起動処理を説明する図である。
【図３】第一の実施形態における休止状態移行処理を説明する図である。
【図４】第一の実施形態におけるシステム復帰処理を説明する図である。
【図５】第二の実施形態におけるシステム復帰処理を説明する図である。
【図６】第四の実施形態におけるシステム復帰処理を説明する図である。
【図７】第五の実施形態におけるシステム復帰処理を説明する図である。
【図８】データ利用制限処理、及びデータ利用処理を説明する図である。
【図９】改竄検知処理を説明する図である。
【図１０】ＴＰＭ利用処理を説明する図である。
【図１１】第一の実施形態における休止状態移行処理を説明する図である。
【発明を実施するための形態】
【００１６】
〔実施形態〕
（第一の実施形態）
（情報処理装置のハードウェア構成）
はじめに、図１を用いて、本実施の形態に適応可能な情報処理装置のハードウェア構成について説明する。図１は本実施形態に係る情報処理装置のハードウェアの基本構成を示す図である。同図において、情報処理装置１１は、例えば一般に普及しているパーソナルコンピュータ・情報携帯端末、或いは画像データのコピー、スキャン、プリント等を実行可能な画像処理装置、或いはデジタル写真を撮影可能な撮像装置などである。
【００１７】
図１に示すように、本実施形態における情報処理装置１１は、ＲＯＭ１２、ＨＤＤ１４、ＲＡＭ１１０、ＣＰＵ１１１、ＴＰＭ１１２から構成される。
【００１８】
ＲＯＭ１２は、物理的、或いは論理的な書き換えが不可能な不揮発性メモリであり、ＢＩＯＳ１３、不図示の各種プログラム、及びデータを記憶可能な補助記憶部である。ＢＩＯＳ１３は情報処理装置１１全体を制御するプログラムである。また、ＢＩＯＳ１３は、情報処理装置１１に電源が投入された際、情報処理装置内部で最初に起動されるコンピュータプログラムである。
【００１９】
ＨＤＤ１４は、ブートローダ１５、ＯＳ１６、アプリ１７、アプリ１８、アプリ１９、及び種々のデータを記憶可能な補助記憶部である。ここで、ブートローダ１５は、次に起動すべきＯＳを特定・起動するといった制御をする。ＯＳ１６は、種々のアプリのロード、ＲＡＭ１１０のメモリ管理、及び不図示のキーボードや画面出力などの入出力機能を制御するプログラムである。アプリ１７、アプリ１８、及びアプリ１９は、アドレス帳、メール、ワードプロセッサ、表計算、データベース管理、ネットワークブラウジングなどである。他にも、映像・音声再生、印刷、通信など、情報処理装置１１の利用者が実行したい作業を機能として提供するプログラム（アプリケーションソフトウェア）である。本実施形態においては、情報処理装置１１には３つのアプリが搭載されているものとして説明するが、本実施形態はこれに限定されることなく、任意数のアプリを搭載してもよい。
【００２０】
ＲＡＭ１１０は揮発性メモリであり、ＣＰＵ１１１にて処理を行うために一時的にプログラムや各種データ（動作状態）を一時的に格納しておく主記憶部である。
【００２１】
ＣＰＵ１１１は、情報処理装置１１内の各部の動作を制御、或いはＲＡＭ１１０にロードされたプログラムを実行することのできる電子回路である。
【００２２】
ＴＰＭ１１２（Ｔｒｕｓｔｅｄ  Ｐｌａｔｆｏｒｍ  Ｍｏｄｕｌｅ）は、耐タンパー性を有するセキュアチップである。耐タンパー性とは、外部からの解析を困難にすると共に、外部から解析しようとした場合に内部に記憶されているプログラム、或いはデータを破壊することにより自己防衛する特性である。また、ＴＰＭ１１２は、制御部１１３、ＮｖＲＡＭ１１４、及びＰＣＲ１１５から構成されている。
【００２３】
制御部１１３は、後述する様なＰＣＲ１１５へのハッシュ値登録、デジタル署名生成、暗号復号などを実行する。ＮｖＲＡＭ１１４は不揮発性メモリであり、後述するハッシュ値の他、デジタル署名の生成に必要な秘密鍵、暗号復号に必要な暗号鍵などを記憶する。ＰＣＲ１１５は揮発性メモリ（レジスタ）であり、情報処理装置１１内で実行されたプログラムのハッシュ値に基づいた値を記憶する。尚、以降の説明においては、プログラムとは、前述したＢＩＯＳ１３、ブートローダ１５、ＯＳ１６、アプリ１７、アプリ１８、アプリ１９の何れかを示すものとする。
【００２４】
ここで、本実施形態における情報処理装置１１は、後述する休止状態では、ＴＰＭ１１２への電源供給は停止されるものとする。即ち、ＴＰＭ１１２内のＮｖＲＡＭ１１４は不揮発性メモリであるため、その内部データは休止状態中も保持される。一方、ＰＣＲ１１５は揮発性メモリであるため、情報処理装置１１が休止状態となった際に、その内部情報は破棄される（初期値に初期化される）。即ち、休止状態に移行する前にＰＣＲ１１５で保持されていたデータは、休止状態から復帰した後にＰＣＲ１１５で保持されないことに留意されたい。
以上、本実施形態における情報処理装置のハードウェア構成について説明した。
【００２５】
（起動処理フロー）
次に、図２（Ａ）を用いて、本実施形態における起動処理の詳細を説明する。以下のフローは、前述した情報処理装置１１内で実行され、各ステップは該当するプログラム及びそれを実行するＣＰＵ１１１によって実現する。
【００２６】
図２（Ａ）は、本実施形態に適応可能な起動処理の流れを示すフローチャートである。
【００２７】
まず、情報処理装置１１に電源が投入されると、ステップ２１において、まずＢＩＯＳ１３が起動される。ＢＩＯＳ１３は、ステップ２２において、ＢＩＯＳ１３自身のハッシュ値を計測して、計測したハッシュ値をＴＰＭ１１２に登録する。
【００２８】
ここで、本実施形態における計測処理、及び登録処理について説明する。計測処理とは、計測対象であるプログラムコードのハッシュ値を算出することである。本実施形態においては、ハッシュ値を算出するためのハッシュ関数は特に限定することなく、ＳＨＡ１、ＳＨＡ２５６、ＳＨＡ５１２等の公知の種々のハッシュ関数を適応可能である。或いは、計測対象となるプログラムを一意に識別可能な特徴量を算出可能な関数であれば、任意の関数を適応可能である。
【００２９】
一方、登録処理とは、計測処理によって算出されたハッシュ値を、ＴＰＭ１１２に送信し、ＴＰＭ１１２の内部で次の式に従って算出した値をＰＣＲ１１５に記録する処理である。
ＤＡＴＡ＿ｉ＋１＝Ｈ（ＤＡＴＡ＿ｉ｜ＩＮＰＵＴ）          （式１）
ここで、ＩＮＰＵＴはＴＰＭ１１２の外部から入力されたハッシュ値である。ＤＡＴＡ＿ｉはＴＰＭ１１２に登録する時点で、既にＰＣＲ１１５に記録されている値である。また、「ｘ｜ｙ」は値ｘと値ｙの連結処理を示す。更に、ＤＡＴＡ＿ｉ＋１はＴＰＭ１１２の外部から値ＩＮＰＵＴが入力された場合に算出される結果である。即ち、ＴＰＭ１１２にＩＮＰＵＴが入力された場合に、結果として、ＤＡＴＡ＿ｉ＋１がＴＰＭ１１２内のＰＣＲ１１５に記録されることになる。
【００３０】
ここで、本実施形態においては、ｉ＝０の場合のＰＣＲの初期値（ＤＡＴＡ＿０）は「０」であるものとする。しかしながら、本発明はこれに限定されることなく、ＰＣＲの初期値は「０」以外の任意の定数であっても良い。
【００３１】
また、本実施形態においては、ＰＣＲ１１５は５つの記憶領域から構成されており、夫々の記憶領域をＩＤで識別できるものとする。図２（Ｂ）に、本実施形態におけるＰＣＲの構成を示す。図２（Ｂ）の２９に示す様に、本実施形態におけるＰＣＲは、ＩＤ１〜５で識別できる５つの領域を備える。尚、本実施形態においては、ＰＣＲは５つの領域を備えるものとして説明するが、本発明はこれに限定することなく、任意の領域数を備える様な構成も可能である。
【００３２】
図２（Ｂ）の２９は、情報処理装置１１の起動前のＰＣＲの状態を示している。即ち、前述したように初期値「０」が各ＰＣＲに記憶されている。一方、図２（Ｂ）の２１１は、ステップ２２におけるＢＩＯＳ計測・登録処理後のＰＣＲの状態を示している。２１１に示す様に、ＢＩＯＳのハッシュ値をＩＮＰＵＴとして、式１に基づいてＤＡＴＡ＿１が算出され、その結果がＨ１としてＰＣＲ１に記録される。ここで、ＰＣＲ１はＩＤ＝１のＰＣＲの記憶領域と示す。以降の説明では、ＰＣＲｎ（ｎ＝１〜５）と記載した場合には、ＩＤ＝ｎのＰＣＲの記憶領域を示すものとする。
【００３３】
図２（Ａ）に戻って説明を続ける。ＢＩＯＳ１３は、ステップ２２に続いて、ステップ２３においてブートローダ１５のハッシュ値を計測して、計測したハッシュ値をＴＰＭ１１２に登録する。ステップ２３におけるブートローダの計測・登録処理は、前述したステップ２２におけるＢＩＯＳの計測・登録処理と同様であるため、詳細な説明は省略する。ステップ２３は、ブートローダ１５のハッシュ値をＩＮＰＵＴとして、式１に基づいて算出された値をＰＣＲ２にＨ２として登録する。図２（Ｂ）の２１３に、ステップ２３におけるブートローダ計測・登録後のＰＣＲの状態を示す。ＢＩＯＳ１３は、ステップ２３の後、ステップ２４においてブートローダ１５を起動する。
【００３４】
続いて、ブートローダ１５は、ステップ２５において、ＯＳ１６のハッシュ値を計測して、計測したハッシュ値をＴＰＭ１１２に登録する。ステップ２５におけるＯＳの計測・登録処理は、前述したステップ２２、及びステップ２３と同様であるため、詳細な説明は省略する。ステップ２５は、ＯＳ１６のハッシュ値をＩＮＰＵＴとして、式１に基づいて算出された値をＰＣＲ３にＨ３として登録する。図２（Ｂ）の２１５に、ステップ２５におけるＯＳ計測・登録後のＰＣＲの状態を示す。
【００３５】
ブートローダ１５は、ステップ２５の後、ステップ２６においてＯＳを起動する。ＯＳ１６は、ステップ２７において、アプリ１７のハッシュ値を計測して、計測したハッシュ値をＴＰＭ１１２に登録する。ステップ２７におけるアプリの計測・登録処理は前述した計測・登録処理と同様であるため、詳細な説明は省略する。ステップ２７は、アプリ１７のハッシュ値をＩＮＰＵＴとして、式１に基づいて算出された値をＰＣＲ４にＨ４として登録する。図２（Ｂ）の２１７に、ステップ２７におけるアプリの計測・登録後のＰＣＲの状態を示す。
【００３６】
尚、本実施形態では、起動処理において、１つのアプリ１７だけを起動するものとして説明するが、本実施形態はこれに限定されることなく、任意数のアプリを起動するようにしても良い。
【００３７】
ＯＳ１６は、ステップ２７の後、ステップ２８においてアプリ１７を起動する。
【００３８】
以上、本実施形態における起動処理のフローについて説明した。以上説明した様に、情報処理装置１１に電源が投入されると、ＢＩＯＳ１３、ブートローダ１５、ＯＳ１６、及びアプリ１７の順にプログラムが起動する。そして、一連の起動処理の中で、各プログラムのハッシュ値が順次ＰＣＲに記録され、情報処理装置１１の起動処理が完了すると、図２（Ｂ）の２１７に示す様なＰＣＲの状態となる。即ち、起動処理が完了した時点では、情報処理装置１１の内部で実行している全てのプログラムのハッシュ値がＰＣＲに記録されていることになる。
【００３９】
尚、図２（Ｂ）の２１０、２１２、２１４、２１６、及び２１８には、ＴＰＭ１１２内のＮｖＲＡＭ１１４の状態を示している。本実施形態においては、ＮｖＲＡＭ１１４もＰＣＲ１１５と同様に、５つの記憶領域から構成されており、夫々の記憶領域をＩＤで識別できるものとする。尚、本実施形態においては、ＮｖＲＡＭは５つの領域を備えるものとして説明するが、本発明はこれに限定することなく、任意の領域数を備える様な構成も可能である。本実施形態においては、起動処理の過程で、ＮｖＲＡＭ１１４には如何なる値も記録されないため、図２（Ｂ）の２１０、２１２、２１４、２１６、及び２１８には、初期値「０」が登録され続けていることになる。
【００４０】
以上説明した起動処理によって、ＰＣＲ１１５に登録されたハッシュ値が、後述するデータ利用制限処理や改竄検知処理で利用されることになる。
【００４１】
（休止状態移行処理）
次に、図３（Ａ）を用いて、本実施形態における休止状態移行処理の詳細を説明する。以下のフローは、前述した情報処理装置１１内で実行され、各ステップは該当するプログラム及びそれを実行するＣＰＵ１１１によって実現する。
図３（Ａ）は、本実施形態に適応可能な起動処理の流れを示すフローチャートである。
【００４２】
情報処理装置１１の利用者が、不図示のキーボード、マウス、或いはボタンなどを用いて、情報処理装置１１に対して休止状態移行処理の実行を指示した際に、休止状態移行処理が開始される。或いは、情報処理装置１１に対する操作が、所定時間発生しなかった場合に、情報処理装置１１が自動的に休止状態移行処理を開始するようにしても良い。
【００４３】
休止状態移行処理が開始されると、ステップ３１において、ＴＰＭ１１２内のＰＣＲ１１５内の値がＮｖＲＡＭ１１４に退避される。ステップ３１における処理の詳細を、図３（Ｂ）を用いて説明する。図３（Ｂ）の３５、及び３６は夫々、ステップ３１におけるＰＣＲ退避前のＰＣＲ１１５、ＮｖＲＡＭ１１４の状態を示している。前述した、図２（Ｂ）における２１７、及び２１８と同様の状態であると理解しやすい。ステップ３１は、ＰＣＲ１１５に保持されているハッシュ値をＮｖＲＡＭ１１４にコピーする。結果として、ＰＣＲ退避後に、ＮｖＲＡＭ１１４は図３（Ｂ）３８に示す様な状態となる。一方、ステップ３１によってＰＣＲ１１５の内部状態は変化しない。よって図３（Ｂ）の３７は、３５は同じ状態が保たれる。
【００４４】
ステップ３１におけるＰＣＲ退避処理後、ステップ３２において、情報処理装置１１は休止状態となる。本実施形態においては、休止状態において、情報処理装置１１内のＲＡＭ１１０への電源供給は継続されるが、ＴＰＭ１１２の電源供給は停止される。前述した様に、ＴＰＭ１１２内のＰＣＲ１１５は揮発性メモリであるため、ステップ３２において情報処理装置１１が休止状態になると、ＰＣＲ１１５内のハッシュ値は破棄され、初期値「０」に初期化される。図３（Ｂ）の３９は、休止状態におけるＰＣＲ１１５の状態を示している。休止状態においては、ＴＰＭ１１２には電源供給が停止されるため、ＰＣＲ１１５は初期値「０」に初期化されていることがわかる。
【００４５】
一方、ＴＰＭ１１２内のＮｖＲＡＭ１１４は不揮発性メモリであるため、ステップ３２において、たとえ情報処理装置１１が休止状態になっても、ＮｖＲＡＭ１１４内のハッシュ値は保持され続ける。図３（Ｂ）の３１０は、休止状態におけるＮｖＲＡＭ１１４の状態を示している。
【００４６】
本実施形態では、後述するシステム復帰処理において、システム復帰状態か否かを判定するために、情報処理装置１１が休止状態であることを示すフラグを、ＨＤＤ１４に記録しておく。
【００４７】
以上、本実施形態における休止状態移行処理について説明した。
【００４８】
尚、図３（Ａ）に示した休止状態移行処理は、ステップ３１におけるＮｖＲＡＭ１１４へのＰＣＲ退避処理の直後に、ステップ３２において休止状態に移行するというフローであった。しかしながら、本発明はこれに限定されることなく、ステップ３１におけるＮｖＲＡＭ１１４へのＰＣＲ退避処理後に、アプリが起動するようなことも想定され得る。これは、本来想定していないが、実行優先度が高いアプリの場合や、システムの割り込み等により、意図せずしてアプリが起動する場合に起こり得る。或いは、マルウェアが意図的にステップ３１におけるＰＣＲ退避後に、起動する場合もあり得る。
【００４９】
以降では、図３（Ｃ）を用いて、ステップ３１におけるＮｖＲＡＭ１１４へのＰＣＲ退避処理後に、アプリが起動する場合の休止状態移行処理について説明する。以下のフローは、前述した情報処理装置１１内で実行され、各ステップは該当するプログラム及びそれを実行するＣＰＵ１１１によって実現する。
【００５０】
図３（Ｃ）は、本実施形態に適応可能な起動処理の流れを示すフローチャートである。図３（Ａ）と図３（Ｃ）とで同じ処理を示すステップには、同じ番号を付与するものとし、詳細な説明は省略するものとする。また、図３（Ｄ）は、一連の休止状態移行処理におけるＰＣＲ１１５、及びＮｖＲＡＭ１１４の状態の変化を説明する図である。図３（Ｂ）と図３（Ｄ）とで同じ状態を示す場合には、同じ番号を付与するものとし、詳細な説明は省略するものとする。
【００５１】
図３（Ｃ）に示す様に、ステップ３１におけるＮｖＲＡＭ１１４へのＰＣＲ退避処理後、ステップ３３はアプリ１８の計測・登録処理を実行する。ステップ３３は、アプリ１８のハッシュ値をＩＮＰＵＴとして、式１に基づいて算出された値をＰＣＲ５にＨ５として登録する。アプリ１８の計測・登録処理後、ステップ３４がアプリ１８を実行する。
【００５２】
ここで、図３（Ｄ）の３１１に、ステップ３３におけるアプリ１８の計測・登録処理後のＰＣＲの状態を示す。この時点で、ＮｖＲＡＭ１１４の状態３８と、アプリ１８の計測・登録処理を実行した後の状態３１１とでＰＣＲ５の値が異なっていることに留意されたい。詳細は後述するシステム復帰処理において説明するが、この段階でＮｖＲＡＭ１１４に退避しているハッシュ値（状態３８）が、システム復帰後にＰＣＲ１１５に復元されることになる。すると、休止状態になる前のＰＣＲ１１５の状態（状態３１１）と、休止状態から復帰した後のＰＣＲ１１５の状態（状態３８）が一致しない。即ち、ステップ３４が実行したアプリ１８のハッシュ値が、休止状態から復帰した後のＰＣＲ１１５に反映されないことになる。
【００５３】
これを避けるため、本実施形態においては、ステップ３５において、ＮｖＲＡＭ１１４を初期化するようにする。ステップ３５においてＮｖＲＡＭ１１４を初期値「０」に初期化した後のＮｖＲＡＭ１１４の状態を図３（Ｄ）の３１２に示す。
【００５４】
そして、ステップ３５におけるＮｖＲＡＭ１１４の初期化後、ステップ３２において、情報処理装置１１を休止状態に移行するようにする。休止状態に移行後の、ＰＣＲ１１５、及びＮｖＲＡＭ１１４の状態を、夫々図３（Ｄ）の３１３、及び３１４に示す。ＴＰＭ１１２への電源供給が停止されるため、不揮発性メモリであるＰＣＲ１１５は初期化される。一方、ＮｖＲＡＭ１１４は、ステップ３５において初期化された状態が、引き続き継続する。
【００５５】
以上説明した様に、本実施形態において休止状態である情報処理装置１１のＰＣＲ１１５は、必ず初期値となっている。一方、ＮｖＲＡＭ１１４は、図３（Ｂ）の状態３１０の様にハッシュ値が記録されているか、或いは図３（Ｂ）の状態３１４の様に初期化されているかの何れかとなる。
【００５６】
また、休止状態への移行処理に入る際に、ＰＣＲ退避後にアプリの実行があったか否かの判定をしても良い。図１１は、ＰＣＲ退避後にアプリの実行があったか否かの判定を行うフローを示した図である。図に示す通り、ＰＣＲ退避後にアプリの実行があった場合、休止状態に入ることを防止し、ユーザに対してモニタ表示などでアラートなどの報知を行うようにしている。このようにすることで、ＮｖＲＡＭが初期化された状態で休止状態に移行してしまうことを防止することが出来る。
【００５７】
以上、本実施形態における休止状態移行処理について説明した。
【００５８】
（システム復帰処理）
次に、図４（Ａ）を用いて、本実施形態におけるシステム復帰処理の詳細を説明する。以下のフローは、前述した情報処理装置１１内で実行され、各ステップは該当するプログラム及びそれを実行するＣＰＵ１１１によって実現する。
【００５９】
図４（Ａ）は、本実施形態に適応可能な起動処理の流れを示すフローチャートである。図３（Ａ）、及び（Ｃ）を用いて説明した休止状態移行処理によって休止状態となっている情報処理装置１１に対して、利用者が不図示のキーボード、マウス、或いはボタンなどを用いて、システム復帰処理の実行を指示した際に、システム復帰処理が開始される。
【００６０】
まず、ステップ４１において休止状態からの復帰か否かが判定される。これは、前述した図３のステップ３２において、ＨＤＤ１４に記録したおいたフラグを用いて判定する。フラグが休止状態であることを示す場合、処理をステップ４２に進める。さもなければ、処理をステップ４６に進める。
【００６１】
次に、ステップ４２は、ＮｖＲＡＭ１１４に記録されているハッシュ値をＰＣＲ１１５に復帰する。ここで、本実施形態におけるＰＣＲ復帰処理について、図４（Ｂ）、及び（Ｃ）を用いて説明する。図４（Ｂ）の４８、及び４９は夫々、前述した図３（Ａ）の休止状態移行処理後のＰＣＲ１１５とＮｖＲＡＭ１１４の状態を示している。状態４８、及び４９は夫々、前述した図３（Ｂ）の状態３９、及び状態３１０であると考えると理解しやすい。
【００６２】
一方、図４（Ｃ）の４１４、及び４１５は夫々、前述した図３（Ｂ）の休止状態移行処理後のＰＣＲ１１５とＮｖＲＡＭ１１４の状態を示している。状態４１４、及び４１５は夫々、前述した図３（Ｄ）の状態３１３、及び状態３１４であると考えると理解しやすい。
【００６３】
ステップ４２におけるＰＣＲ復帰処理後、図４（Ｂ）の場合、ＮｖＲＡＭ１１４の状態４９がＰＣＲ１１５にコピーされ、結果として、ＰＣＲ１１５は状態４１０となる。同様に、図４（Ｃ）の場合、ＮｖＲＡＭ１１４の状態４１５がＰＣＲ１１５にコピーされ、結果として、ＰＣＲ１１５は状態４１６となる。ここで、ステップ４２におけるＰＣＲ復帰処理後も、ＮｖＲＡＭ１１４の状態は変化しない。よって、図４（Ｂ）の状態４９、及び４１５は夫々、引き続き、同じ状態４１１、及び４１７となる。
【００６４】
ステップ４２におけるＰＣＲ復帰処理の後、ステップ４３はＰＣＲの状態を読み出す。本実施形態においては、ステップ４３は図４（Ｂ）の状態４１０、或いは状態４１６の何れかの状態を読み出すことになる。
【００６５】
そして、ステップ４４において、読み出したＰＣＲの値が初期値か否かが判定される。初期値である場合は、処理を４５に進める。さもなければ、処理を４６に進める。
【００６６】
ステップ４６は、情報処理装置１１の利用者が不図示のマウス、キーボード、或いはボタンなどにより、アプリ１９の実行を指示した場合に、アプリ１９のハッシュ値を計測して、計測したハッシュ値をＴＰＭ１１２に登録する。ステップ４６におけるアプリ１９の計測・登録処理は、前述した計測・登録処理と同様であるため、詳細な説明は省略する。ステップ４６は、アプリ１９のハッシュ値をＩＮＰＵＴとして、式１に基づいて算出された値をＰＣＲ５にＨ６として登録する。図４（Ｂ）の４１２に、ステップ４６におけるアプリ１９計測・登録後のＰＣＲ１１５の状態を示す。ステップ４６の後、ステップ４７においてアプリ１９を実行する。
【００６７】
尚、本実施形態においては、１つのアプリ１９だけを起動するものとして説明するが、本実施形態はこれに限定されることなく、任意数のアプリを起動することが可能である。その際、ステップ４６、及びステップ４７が繰り返し実行されることになる。
【００６８】
一方、ステップ４５は、情報処理装置１１を再起動する。再起動により、前述した起動処理（図２（Ａ））が再度実行されることになる。図２（Ａ）の起動処理では、ＢＩＯＳ、ブートローダ、ＯＳ、及びアプリといった一連のプログラムが再計測され、再計測された値がＰＣＲ１１５に再登録されることになるため、初期値でない正当なＰＣＲ１１５の状態を復元できる。
【００６９】
ここで、ステップ４４においてＰＣＲ１１５が初期値か否かを確認するタイミングは非常に重要である。仮に、ステップ４２におけるＰＣＲ復帰前に、ステップ４４を実行したとしても、ＰＣＲ１１５の正当性を正しく判定することはできない。何故なら、ＰＣＲ復帰前は、ＰＣＲ１１５の値は必ず初期値となっているからである。
【００７０】
また、仮に、ステップ４６において、アプリ１９が計測・登録された後に、ステップ４４を実行した場合も、ＰＣＲ１１５の正当性を正しく判定することはできない。何故なら、アプリ１９の計測・登録により、ＰＣＲ１１５の値は式１に基づき更新されてしまうからである。
【００７１】
よって、本実施形態に示したように、ステップ４４は、ステップ４２におけるＮｖＲＡＭ１１４からのＰＣＲ復帰処理の後、且つ、ステップ４６における計測・登録処理の前に実行することにより、正しくＰＣＲ１１５の正当性を確認可能となる。
【００７２】
一方、ステップ４１において、休止状態からの復帰時にだけ、ステップ４４におけるＰＣＲ１１５の確認をすることも非常に重要である。仮に、休止状態からのシステム復帰処理（図４（Ａ））ではなく、通常の起動処理（図２（Ａ））の際に、ステップ４４を実行したとしても、ＰＣＲ１１５の正当性を正しく判定することはできない。何故なら、通常の起動処理前には、ＰＣＲ１１５の値は必ず初期値となっているからである。
【００７３】
よって、本実施形態に示したように、ステップ４４は、ステップ４１において、当該システム復帰処理が、休止状態からの復帰であることを確認できた場合にだけ実行することにより、正しくＰＣＲ１１５の正当性を確認可能となる。
【００７４】
以上、本実施形態におけるシステム復帰処理のフローについて説明した。
【００７５】
（第二の実施形態）
第一の実施形態のシステム復帰処理では、ステップ４４においてＰＣＲが初期値であると判定された場合には、ステップ４５において情報処理装置１１を強制的に再起動するようにしていた。しかしながら、本実施形態は必ずしも強制的に再起動する必要はなく、情報処理装置１１の利用は継続し、ＴＰＭ１１２だけを利用できないように機能縮退するようにしても良い。以降では、ＴＰＭ１１２を利用できないように機能縮退する場合のシステム復帰処理の実施形態を説明する。
【００７６】
図５（Ａ）は、本実施形態におけるシステム復帰処理の流れを示すフローチャートである。図５（Ａ）において、図４（Ａ）と同様の処理については、同じ番号を付与するものとし、詳細な説明は省略する。以降では、図４（Ａ）と図５（Ａ）とで異なる処理について説明をする。
【００７７】
ステップ４４において、ＰＣＲ１１５が初期値か否かを判定し、初期値であると判定された場合には、処理をステップ５１に進める。ステップ５１では、情報処理装置１１に備えられている不図示の画面を用いて、情報処理装置１１の利用者に対してシステムを再起動するか否かを問い合わせる。情報処理装置１１の利用者は、マウス、キーボード、ボタンなどを用いて、情報処理装置１１の再起動を許可するか否かを選択する。再起動が許可された場合には、処理をステップ４５に進める。さもなければ、処理をステップ５２に進める。
【００７８】
ステップ５２では、ＴＰＭ１１２を一時的に利用することが出来ないように制御する。本実施形態では、ＴＰＭ１１２に対して、一時的にＴＰＭ１１２を利用不可にするようなコマンド（例えば、ＴＰＭ＿ＳｅｔＴｅｍｐＤｅａｃｔｉｖａｔｅｄ）を送信する。このコマンドにより、ＴＰＭ１１２は非アクティベートモードとなり、ＴＰＭ１１２外部からのコマンドを受け付けないようになる。よって、仮にＴＰＭ１１２の外部からＴＰＭ１１２を利用しようとした場合でも、ＴＰＭ１１２を利用することができないため、機能縮退を実現することができる。
【００７９】
尚、本実施形態はこれに限定されることなく、ＴＰＭ１１２を利用不可にするための種々の方式を適応可能である。例えば、ＴＰＭ１１２に対して、正しくないパスワード・認可コードなどを大量に送信することにより、ＴＰＭ１１２をロック状態にするようにしても良い。ロック状態のＴＰＭ１１２もまた、外部からのコマンドを受け付けない様になるため、機能縮退を実現することができる。
【００８０】
ステップ５２の後、処理をステップ４６に進める。ステップ５２によりＴＰＭが利用不可になっている場合、たとえステップ４６においてアプリのハッシュ値をＴＰＭ１１２に登録しようとした場合でも、これを実行することができない。即ち、図５（Ｂに示す様に、アプリ１９の計測・登録後もＰＣＲ１１５の状態５３は、計測・登録前の状態４１６から変化はない。
【００８１】
また、後述するデータ利用処理、及び完全性レポート生成処理において、ＴＰＭ１１２を利用する場合も、ステップ５２においてＴＰＭ１１２が利用不可となっているため、これらの処理も実行することができない。何れの場合も、情報処理装置１１の利用を継続したまま、ＴＰＭ１１２の利用だけを不可とする機能縮退が実現可能となる。
【００８２】
以上、本実施形態におけるシステム復帰処理の実施形態について説明した。
【００８３】
（第三の実施形態）
第二の実施形態で説明したシステム復帰処理では、図５（Ａ）のステップ５２において、ＴＰＭ１１２そのものを利用できないようにしていた。具体的には、一時的に非アクティベートモードとなるようなコマンドを送信したり、正しくないパスワード・認可コードを送信してロック状態にするようにしていた。しかしながら、本実施形態はこれに限定されることなく、ステップ５２において、ＴＰＭ１１２そのものを利用できないようにする代わりに、情報処理装置１１からＴＰＭ１１２を利用できないように制御しても良い。
【００８４】
情報処理装置１１からＴＰＭ１１２を利用できないように制御するために、情報処理装置１１からＴＰＭ１１２を利用するためのデバイスドライバにおいて、ＴＰＭ１１２を利用できないようにしてもよい。具体的には、ステップ５２において、ＴＰＭ１１２の利用不可を示すフラグをＨＤＤ１４、或いはＮｖＲＡＭ１１４などに設定するようにする。その後、情報処理装置１１内のプログラムが、前記デバイスドライバを使ってＴＰＭ１１２を利用しようとした場合に、前記フラグに応じてＴＰＭ１１２へのアクセスを制御する。
【００８５】
ここで、本実施形態におけるＴＰＭ利用処理について、図１０（Ａ）を用いて説明する。図１０（Ａ）は、図５（Ａ）によってシステム復帰した情報処理装置１１に対して、利用者が不図示のキーボード、マウス、或いはボタンなどを用いてＴＰＭ１１２を利用しようとした際に、前記デバイスドライバにて開始される。
【００８６】
まず、ステップ１０１において、プログラムからＴＰＭコマンドを受信する。そして、ステップ１０２において、前記ＴＰＭ１１２の利用不可を示すフラグを確認する。フラグが利用不可を示す場合には、処理をステップ１０４に進める。さもなければ、処理をステップ１０３に進める。ステップ１０３では、ステップ１０１が受信したＴＰＭコマンドをＴＰＭ１１２に送信する。一方、ステップ１０４では、ＴＰＭ１１２を利用できないことを示すエラーを情報処理装置１１のモニタ（不図示）などに表示する。
【００８７】
以上説明した処理により、ＴＰＭ１１２そのものを利用不可にする代わりに、情報処理装置１１からＴＰＭ１１２の利用を不可にすることができる。
【００８８】
尚、図１０（Ａ）では、ＴＰＭ１１２の利用不可を示すフラグが設定されていた場合に、必ずＴＰＭ１１２を利用できないように制御した。しかし、本実施形態はこれに限定されることなく、実行しようとしているＴＰＭコマンドに応じて、利用制御をするようにしてもよい。以降では、この場合のＴＰＭ利用処理について、図１０（Ｂ）を用いて説明する。
【００８９】
図１０（Ｂ）と図１０（Ａ）とで同様の処理については、同じ番号を付与するものとし、詳細な説明は省略する。
【００９０】
ステップ１０２において、ＴＰＭ利用不可であると判断された後、ステップ１０５において、実行しようとしているＴＰＭコマンドがＰＣＲに関連するか否かを判定する。ＴＰＭコマンドがＰＣＲに関連する場合は、処理をステップ１０４に進める。さもなければ、処理をステップ１０３に進める。
【００９１】
ステップ１０５では、予めＴＰＭコマンドがＰＣＲに関連するか否かを示すテーブルを用意しておき、当該テーブルを参照することにより判定するようにする。図１０（Ｃ）に、テーブルの例を示す。図１０（Ｃ）におけるテーブルの例では、ＰＣＲに関連するコマンドに対して「○」、ＰＣＲに関連しないコマンドに対して「×」を付与している。本実施形態においてＰＣＲに関連するコマンドとは、当該ＴＰＭコマンドがＴＰＭ１１２内で実行される際に、ＴＰＭ１１２内のＰＣＲにアクセス（読み・書き）するコマンドである。図１０（Ｃ）に示した例では、ＴＰＭ＿Ｓｅａｌ、ＴＰＭ＿Ｑｕｏｔｅ、ＴＰＭ＿Ｂｉｎｄの３つのコマンドは、夫々のコマンドがＴＰＭ１１２内で実行された際にＰＣＲにアクセスするコマンドである。一方、ＴＰＭ＿ＧｅｔＲａｎｄｏｍ、ＴＰＭ＿ＧｅｔＴｉｃｋｓ、ＴＰＭ＿Ｓｉｇｎの３つのコマンドは、ＰＣＲにアクセスすることなくコマンドが実行される。
【００９２】
以上説明した様なＴＰＭ利用処理により、ＰＣＲに関連のないコマンドに関しては、たとえＴＰＭ１１２の利用不可のフラグが設定されている場合でも、利用を許可することができる。
【００９３】
尚、本実施形態はこれらに限定されることなく、種々の方法で情報処理装置１１からＴＰＭ１１２を利用不可とすることができる。例えば、当該ＴＰＭ１１２を利用するためのデバイスファイル名を変更するようにしても良い。例えば、デバイスファイル名が「／ｄｅｖ／ｔｐｍ」である場合、ステップ５２において、このデバイスファイル名を「／ｄｅｖ／ｔｐｍ．ｄｅｎｙ」と変更する。これにより、情報処理装置１１内のプログラムが、デバイスファイル／ｄｅｖ／ｔｐｍを介してＴＰＭ１１２を利用しようした場合、デバイスファイル／ｄｅｖ／ｔｐｍが存在しないため、ＴＰＭ１１２を利用することができない。
【００９４】
以上説明した様に、ＴＰＭ１１２そのものを利用不可にする代わりに、アクセスを制限することにより、情報処理装置１１からＴＰＭ１１２の利用を不可にすることができる。
【００９５】
（第四の実施形態）
図５（Ａ）で説明したシステム復帰処理では、ステップ４４においてＰＣＲ１１５が初期値であると判定された場合、必ずしも強制的に情報処理装置１１を再起動させない。ＴＰＭ１１２の利用制限をすることによって、情報処理装置１１を利用し続けることができる。しかしながら、本実施形態はこれに限定されることなく、システム復帰時にＰＣＲ１１５が正しくなかった場合（初期値であった場合）に、その後のデータ利用制限処理（後述する）において、データの利用を禁止することも可能である。同様に、システム復帰時にＰＣＲ１１５が正しくなかった場合（初期値であった場合）に、その後の改竄検出処理（後述する）において、「検証失敗」と判定するようにすることも可能である。以降では、この場合のシステム復帰処理の実施形態を説明する。
【００９６】
図６（Ａ）は、本実施形態におけるシステム復帰処理の流れを示すフローチャートである。図６（Ａ）において、図４（Ａ）及び図５（Ａ）と同様の処理については、同じ番号を付与するものとし、詳細な説明は省略する。以降では、図４（Ａ）及び図５（Ａ）と、図６（Ａ）とで異なる処理について説明をする。
【００９７】
ステップ５１において、情報処理装置１１の再起動が許可されなかった場合には、処理をステップ６１に進める。
【００９８】
ステップ６１では、ＰＣＲ１１５に所定の値を登録する。本実施形態では、ＰＣＲ１１５の各記憶領域に、「ＰＣＲ１→Ａ１、ＰＣＲ２→Ａ２、ＰＣＲ３→Ａ３、ＰＣＲ４→Ａ４、ＰＣＲ５→Ａ５」といった値を式１におけるＩＮＰＵＴとして登録するものとする。ここで「ＰＣＲ１→Ａ１」は、ＰＣＲ１には値Ａ１を登録することを意味する。ここで、Ａ１、Ａ２、Ａ３、Ａ４、Ａ５は、「システム復帰した際にＰＣＲが初期値であったことを示す定数」である。
【００９９】
尚、本実施形態においては、ＰＣＲ１１５の５つの記憶領域の夫々に異なる値（Ａ１、Ａ２、Ａ３、Ａ４、及びＡ５）を入力するものとして説明するが、本発明はこれに限定することなく、各記憶領域に同じ値（例えば、Ａ１）を登録するようにしても良い。また、Ａ１、Ａ２、Ａ３、Ａ４、及びＡ５は、予め定められた定数が望ましい。或いは、ステップ６１を実行する毎に異なる疑似乱数を発生させて、発生した疑似乱数を登録するようにしてもよい。
【０１００】
ここで、ステップ６１により、所定の値が登録された後のＰＣＲ１１５の状態を図６（Ｂ）の６２に示す。ここで、例えばＰＣＲ１に登録されているＲ１は、Ａ１をＩＮＰＵＴとして、式１に基づいて算出された値である。
【０１０１】
ステップ６１の後、処理をステップ４６に進める。ステップ４６では、前述したようにアプリ１９のハッシュ値をＩＮＰＵＴとして、式１に基づいてアプリ１９のハッシュ値をＰＣＲ５に登録する。ここで、ＰＣＲ５に登録されているＲ５’は、アプリ１９のハッシュ値をＩＮＰＵＴとして、式１に基づいて算出された値である。
【０１０２】
以上、本実施形態におけるシステム復帰処理の実施形態について説明した。
【０１０３】
本実施形態によれば、システム復帰後のＰＣＲが初期値であった場合に、「システム復帰した際にＰＣＲが初期値であったことを示す定数」がＰＣＲに登録されることになる。これにより、後述するデータ利用制限処理時に、暗号化データ内のＰＣＲ条件と、ＴＰＭ１１２中のＰＣＲの値が一致しないため、暗号化データの利用を禁止することができる。同様に、後述する改竄検出処理に、完全性レポート中のＰＣＲの値が、ＰＣＲ期待値として登録されていないため、「検証失敗」と判定することができる。
【０１０４】
（第五の実施形態）
図４（Ａ）で説明したシステム復帰処理では、ステップ４４においてＰＣＲ１１５が初期値か否かを確認するタイミングは非常に重要であることを説明した。即ち、ステップ４４は、ステップ５２におけるＮｖＲＡＭ１１４からのＰＣＲ復帰処理の後、且つ、ステップ４４における計測・登録処理の前に実行することにより、正しくＰＣＲ１１５の正当性を確認可能となる。以降では、より確実に、正しいタイミングでＰＣＲ１１５の確認可能とする実施形態を説明する。
【０１０５】
図７（Ａ）は、本実施形態における状態遷移を説明する図である。また、図７（Ｂ）は、本実施形態におけるシステム復帰処理の流れを示すフローチャートである。図７（Ｂ）において、図４（Ａ）と同様の処理については、同じ番号を付与するものとし、詳細な説明は省略する。以降では、図４（Ａ）と図７（Ｂ）とで異なる処理について、図７（Ａ）の状態遷移を使いながら説明する。
【０１０６】
システム復帰処理を開始すると、まず、ステップ７５において、状態を「初期状態」に設定する。本実施形態では、状態を示すフラグをＨＤＤ１４に保持するものとする。この時点で、図７（Ａ）の７１の状態となる。
【０１０７】
そして、ステップ４１において、休止状態からの復帰であると判定された場合、ステップ７６において、状態を「システム復帰状態」に移行する。この時点で、図７（Ａ）の７２の状態となる。
【０１０８】
そして、ステップ４２において、ＮｖＲＡＭからＰＣＲ復帰処理を実行後、ステップ７７において、状態を「ＰＣＲ復帰状態」に移行する。この時点で、図７（Ａ）の７３の状態となる。
【０１０９】
そして、ステップ７８では、状態が「ＰＣＲ復帰状態」であるか否かが判定される。これは、ＨＤＤ１４に保持されている状態を示すフラグを確認するようにすれば良い。そして、状態を示すフラグが「ＰＣＲ復帰状態」を示す場合には処理を、ステップ４４に進める。さもなければ処理をステップ４５に進める。
【０１１０】
そして、ステップ４７において、アプリ１９を実行した後、ステップ７９において、状態を「プログラム実行状態」に移行する。この時点で、図７（Ａ）の７４の状態となる。
【０１１１】
以上、本実施形態におけるシステム復帰処理について説明した。
【０１１２】
本実施形態によれば、システム復帰処理の一連の処理を状態管理し、ステップ４４におけるＰＣＲが初期値であることの確認を、「ＰＣＲ復帰状態」で確実に実行することが可能となる。ここで、「ＰＣＲ復帰状態」は、ステップ５２におけるＮｖＲＡＭ１１４からのＰＣＲ復帰処理の後、且つ、ステップ４４における計測・登録処理の前の状態である。
【０１１３】
（データ利用制限処理）
次に、図８（Ａ）を用いて、本実施形態におけるデータ利用制限処理の詳細を説明する。以下のフローは、前述した情報処理装置１１内で実行され、各ステップは該当するプログラム及びそれを実行するＣＰＵ１１１によって実現する。
【０１１４】
図８（Ａ）は、本実施形態に適応可能な起動処理の流れを示すフローチャートである。
【０１１５】
データ利用制限処理は、情報処理装置１１の利用者が、不図示のキーボード、マウス、或いはボタンなどを用いて、情報処理装置１１に対してデータ利用処理の実行を指示した際に実行される。
【０１１６】
データ利用制限処理が開始されると、まずステップ８１において、データ利用制限の対象となる平文データが入力される。平文データとしては、画像データ、文書データ、音声データなど種々のデータを入力可能である。情報処理装置１１内のＨＤＤ１４内に、予め保持されているデータを入力するようにしてもよい。或いは、不図示のインターフェイス（通信・メディア）により情報処理装置１１の外部からデータを入力するようにしてもよい。
【０１１７】
次に、ステップ８２において、当該平文データを利用可能とするＰＣＲ条件を入力する。本実施形態におけるＰＣＲ条件とは、前述したＴＰＭ１１２内のＰＣＲ１１５がどのような状態の時に、当該平文データを利用可能とするかを示す条件である。本実施形態では、前述した起動処理（図２（Ａ））において、ＢＩＯＳ１３、ブートローダ１５、ＯＳ１６、及びアプリ１７が起動した後のＰＣＲ１１５の状態をＰＣＲ条件として指定することを例として説明する。この場合のＰＣＲ条件は、「ＰＣＲ１＝Ｈ１、ＰＣＲ２＝Ｈ２、ＰＣＲ３＝Ｈ３、ＰＣＲ４＝Ｈ４」となる。
【０１１８】
尚、本発明はこれに限定されることなく、種々のＰＣＲ１１５の状態をＰＣＲ条件として指定可能であることは明らかである。
【０１１９】
次に、ステップ８３において、ステップ８１で入力した平文データを暗号化する。本実施形態では、暗号化するための暗号アルゴリズムは、特に限定されることなく、ＡＥＳ、ＤＥＳ、３ＤＥＳなどの共通鍵暗号や、ＲＳＡ、ＥｌＧａｍａｌ暗号、楕円曲線暗号などの公開鍵暗号など、種々の暗号アルゴリズムを適応可能である。また、暗号化に利用する暗号鍵は、ＴＰＭ１１２内に保持しておくものとする。
【０１２０】
最後に、ステップ８４において、暗号化データを出力する。本実施形態では、ステップ８３において生成された暗号化データに、ステップ８２で入力したＰＣＲ条件を付加し、暗号化データとして出力する。図８（Ｂ）の８５に、本実施形態における暗号化データの例を示す。
【０１２１】
以上、本実施形態におけるデータ利用制限処理について説明した。
【０１２２】
（データ利用処理）
次に、図８（Ｃ）を用いて、本実施形態におけるデータ利用制限処理の詳細を説明する。以下のフローは、前述した情報処理装置１１内で実行され、各ステップは該当するプログラム及びそれを実行するＣＰＵ１１１によって実現する。
図８（Ｃ）は、本実施形態に適応可能な起動処理の流れを示すフローチャートである。
【０１２３】
データ利用制限処理は、情報処理装置１１の利用者が、不図示のキーボード、マウス、或いはボタンなどを用いて、情報処理装置１１に対してデータ利用処理の実行を指示した際に実行される。
【０１２４】
データ利用処理が開始されると、まずステップ８６において、データ利用の対象となる暗号化データが入力される。本実施形態においては、前述した図８（Ｂ）の８５における暗号化データを入力するものとして説明する。
【０１２５】
次に、ステップ８７において、ＴＰＭ１１２からＰＣＲ１１５の値が読み出される。以降の説明では、例として、前述した起動処理（図２（Ａ））の後に、データ利用処理を実行する場合には、図２（Ｂ）の状態２１７が読み出されるものとして説明する。
【０１２６】
次に、ステップ８８において、ステップ８６が入力した暗号化データ８５内に付加されているＰＣＲ条件と、ステップ８７がＴＰＭ１１２から読み出したＰＣＲの値が一致するか否かを確認する。一致する場合には、処理をステップ８９に進める。さもなければ、データ利用処理を終了する。ＰＣＲが一致しない時には、ステップ８６で入力した暗号化データが利用できないことを示すエラーを表示するようにしても良い。本実施形態においては、図２（Ｂ）の状態２１７、及び図８（Ｂ）のＰＣＲ条件は一致するため、処理はステップ８９に進むことになる。
【０１２７】
ステップ８８においてＰＣＲが一致する場合には、ステップ８９において、暗号化データを復号する。本実施形態では、復号するための暗号アルゴリズムは、特に限定されることなく、ＡＥＳ、ＤＥＳ、３ＤＥＳなどの共通鍵暗号や、ＲＳＡ、ＥｌＧａｍａｌ暗号、楕円曲線暗号などの公開鍵暗号など、種々の暗号アルゴリズムを適応可能である。また、暗号化に利用する暗号鍵は、ＴＰＭ１１２内に保持しておくものとする。
【０１２８】
最終的に、ステップ８１０は、ステップ８９が復号した平文データを出力する。
【０１２９】
以上、本実施形態におけるデータ利用処理について説明した。
【０１３０】
以上説明したデータ利用制限処理、及びデータ利用処理によれば、図２（Ａ）に示した起動処理により、改竄されていないプログラムが実行された場合に、図８（Ｂ）に示したデータを利用可能となる。また、図５（Ａ）に示したシステム復帰処理におけるステップ５２においてＴＰＭが利用不可と制御されている場合には、図８（Ｂ）に示したデータの利用を禁止できる。更に、図６（Ａ）に示したシステム復帰処理におけるステップ６１においてＰＣＲに所定値が登録されている場合にも、図８（Ｂ）に示したデータの利用を禁止することができる。
【０１３１】
（改竄検知システム）
次に、図９（Ａ）を用いて本実施形態における改竄検知システム構成について説明する。
図９（Ａ）は本実施形態に適応可能なシステムの概要を示す図である。図９（Ａ）に示すように、本実施形態におけるシステムは被検証装置９１、及び検証装置９２から構成される。被検証装置９１と検証装置９２とは、有線、或いは無線の通信回線を用いて接続されており、互いにデータを通信可能となっている。また、被検証装置９１及び検証装置９２としては、前述した情報処理装置１１（図１）を適応可能である。
【０１３２】
本実施形態では、検証装置９２が被検証装置９１内のソフトウェアが信頼できるか否かを確認できる。この処理を改竄検知処理と呼ぶ。改竄検知処理のため、被検証装置９１内において、ＰＣＲから完全性レポート（詳細は後述）を生成し、検証装置９２へ送信する。検証装置９２では、受信した完全性レポート、及び予め期待値ＤＢ９３に登録してあるハッシュ値の期待値を用いて、当該完全性レポートを送信した被検証装置９１内のソフトウェアが改竄されているか否かを検証する。本実施形態の場合、ハッシュ値の期待値であるＨ１、Ｈ２、Ｈ３、Ｈ４、及びＨ６を登録しておく。
【０１３３】
以上、本実施形態に適応可能な改竄検知システムの概要を説明した。
【０１３４】
（完全性レポート生成処理）
次に、図９（Ｂ）を用いて、本実施形態における、被検証装置９１での完全性レポート生成処理について説明する。以下のフローは、前述した情報処理装置１１の構成を備える被検証装置９１上でソフトウェアとして実現され、各ステップは該当するプログラム及びそれを実行するＣＰＵ１１１によって実現する。
【０１３５】
図９（Ｂ）は、本実施形態に適応可能な完全性レポート生成処理の流れを示すフローチャートである。
【０１３６】
まず、ステップ９４で、検証装置９２からＮｏｎｃｅを受信する。後述するステップ９１０において送信されたＮｏｎｃｅを受信する。本実施形態においては、Ｎｏｎｃｅは疑似乱数を利用するものとする。しかしながら、本発明はこれに限定されることなく、改竄検知処理を実行する度に異なる値であり、推測困難な値であれば任意のデータを利用可能である。
【０１３７】
次に、ステップ９５において、ＴＰＭ１１２を使って、Ｎｏｎｃｅ、及びその時点でのＰＣＲ１１５の値からデジタル署名を生成する。デジタル署名を生成するためのアルゴリズムは、特に限定することなく、ＲＳＡ、ＤＳＡ、ＥｌＧａｍａｌなど種々のアルゴリズムを適応可能である。また、デジタル署名を生成するための秘密鍵は、ＴＰＭ１１２の内部で管理されているものを適応するものとする。
【０１３８】
次に、ステップ９６において、ステップ９４で受信したＮｏｎｃｅ、ステップ９５で生成したデジタル署名、ステップ９５で署名の生成対象となったＰＣＲの値、及び証明書から完全性レポートを生成する。ここで、証明書には前述した秘密鍵に対応する公開鍵を含んでおく。
【０１３９】
ここで、図９（Ｃ）に、本実施形態における完全性レポートの例を示す。図９（Ｃ）の９８は、前述した図４（Ｂ）の状態４１２から生成した完全性レポートである。一方、図９（Ｃ）の９９は、前述した図６（Ｂ）の状態６３から生成した完全性レポートである。
【０１４０】
最後に、ステップ９７において、ステップ９６で生成した完全性レポートを検証装置９２に送信する。
以上、本実施形態における完全性レポート生成処理について説明した。
【０１４１】
（完全性レポート検証処理）
次に、図９（Ｄ）を用いて、本実施形態における、検証装置９２での完全性レポート検証処理について説明する。以下のフローは、前述した情報処理装置１１の構成を備える被検証装置９１上でソフトウェアとして実現され、各ステップは該当するプログラム及びそれを実行するＣＰＵ１１１によって実現する。
【０１４２】
図９（Ｄ）は、本実施形態に適応可能な完全性レポート生成処理の流れを示すフローチャートである。
【０１４３】
まず、ステップ９１０で、被検証装置９１にＮｏｎｃｅを送信する。ステップ９１０が送信したＮｏｎｃｅが、前述したステップ９４で受信される。同様に、ステップ９１１において、被検証装置９１から完全性レポートを受信する。前述したステップ９７において、被検証装置９１が送信した完全性レポートを受信する。
【０１４４】
次に、ステップ９１１において、ステップ９１１が受信した完全性レポート内の署名を、同じく完全性レポート内の証明書に含まれている公開鍵を用いて検証する。そして、ステップ９１２において署名検証に成功したか否かを確認する。成功した場合には処理をステップ９１３に進める。さもなければ、処理をステップ９１８に進める。
【０１４５】
ステップ９１４では、ステップ９１１で受信した完全性レポート内のＮｏｎｃｅの値と、ステップ９１０で送信したＮｏｎｃｅの値が一致するか否かを確認する。そして、ステップ９１５において、一致するか否かを判定し、一致する場合には処理をステップ９１６に進める。さもなければ、処理をステップ９１８に進める。
【０１４６】
ステップ９１６では、ステップ９１１で受信した完全性レポート内のＰＣＲの値が、図９（Ａ）の期待値ＤＢ９３に含まれているか否かを確認する。そして、ステップ９１６において、含まれているか否かを判定し、含まれている場合には処理をステップ９１９に進める。さもなければ、処理をステップ９１８に進める。
【０１４７】
例えば、前述した図９（Ｃ）の９８の完全性レポートの場合は、Ｈ１、Ｈ２、Ｈ３、Ｈ４、及びＨ６が全て期待値ＤＢ９３に保持されているため、含まれていると判断される。一方、図９（Ｃ）の９９の完全性レポートの場合は、Ｒ１、Ｒ２、Ｒ３、Ｒ４、Ｒ５’の何れも期待値ＤＢ９３に保持されていないため、含まれていないと判断される。
【０１４８】
最終的に、ステップ９１８では検証失敗と判定する。この場合、被検証装置９１内のプログラムは改竄されていると判定されることになる。一方、ステップ９１８では検証成功と判定する。この場合、被検証装置９１内のプログラムは改竄されていないと判定されることになる。
以上、本実施形態における完全性レポート検証処理について説明した。
【０１４９】
以上説明した改竄検知処理によれば、被検証装置９１内のＰＣＲが、図４（Ｂ）の状態４１２である場合には、完全性レポートとして、図９（Ｃ）の９８が生成され、結果として、検証成功であると判断することができる。一方、被検証装置９１内のＰＣＲが、図６（Ｂ）の６３である場合には、完全性レポートとして、図９（Ｃ）の９９が生成され、結果として検証失敗であると判断することができる。
【０１５０】
本実施形態によれば、休止状態移行処理（図２（Ａ））時に、ＮｖＲＡＭ１１４へのＰＣＲ退避処理後にアプリが実行されたか否かに関わらず、システム復帰処理（図４（Ａ））時に、ＰＣＲ復帰処理後のＰＣＲの値の正当性を正しく検証することが可能となる。そして、ＰＣＲが正当でないと判断された場合には、情報処理装置１１を再起動することにより、ＰＣＲを再び正しい状態に復元することが可能となる。一方、ＰＣＲが正当である場合だけ、情報処理装置１１内でアプリを起動し、所望の処理を実行することが可能となる。
【０１５１】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０１５２】
４１  休止状態からの復帰判定
４２  ＮｖＲＡＭからＰＣＲ復帰処理
４３  ＰＣＲ読み出し処理
４４  ＰＣＲの初期値判定
４５  システム再起動処理
４６  アプリ計測・登録処理
【図１】
0006494373.tif 000002
【図２】
0006494373.tif 000003
【図３】
0006494373.tif 000004
【図４】
0006494373.tif 000005
【図５】
0006494373.tif 000006
【図６】
0006494373.tif 000007
【図７】
0006494373.tif 000008
【図８】
0006494373.tif 000009
【図９】
0006494373.tif 000010
【図１０】
0006494373.tif 000011
【図１１】
0006494373.tif 000012