JP5969845B2 - 情報処理装置及びその制御方法 - Google Patents

情報処理装置及びその制御方法 Download PDF

Info

Publication number
JP5969845B2
JP5969845B2 JP2012159798A JP2012159798A JP5969845B2 JP 5969845 B2 JP5969845 B2 JP 5969845B2 JP 2012159798 A JP2012159798 A JP 2012159798A JP 2012159798 A JP2012159798 A JP 2012159798A JP 5969845 B2 JP5969845 B2 JP 5969845B2
Authority
JP
Japan
Prior art keywords
program
determination
value
application
storage means
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2012159798A
Other languages
English (en)
Other versions
JP2014021715A (ja
Inventor
林 淳一
淳一 林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2012159798A priority Critical patent/JP5969845B2/ja
Publication of JP2014021715A publication Critical patent/JP2014021715A/ja
Application granted granted Critical
Publication of JP5969845B2 publication Critical patent/JP5969845B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明はプログラムに対する改竄の検知技術、特に、ハードディスク等の不揮発性メモリからオペレーティングシステム(OS)やアプリケーションプログラムをRAM上にロードし、実行する情報処理装置における改竄検知技術に関するものである。
コンピュータに搭載されているソフトウェアの改竄検知を実行するために、TPM(Trusted Platform Module)を用いる技術が提案されている(特許文献1)。この技術によれば、予めソフトウェアのハッシュ値が一致した時だけ復号できるような条件を付けた上で、データを暗号化してハードディスクなどに保持しておく。そして、ソフトウェアが起動する際、ソフトウェアのハッシュ値をTPMに登録する。その後、ハードディスクに保持されている暗号化データを利用する際、ソフトウェアがTPMにその暗号化データを復号させる。TPMは登録されているハッシュ値と、暗号化データの復号条件とを比較し、一致した場合にだけ暗号化データを復号する。一方、改竄されたソフトウェアが起動した場合、TPMに登録されているハッシュ値と、暗号化データの復号条件が一致しないため、TPMは暗号化データの復号を実行しない。これにより、改竄されていない正当なソフトウェアだけが暗号化データの復号結果を得ることができる。
特許文献1に記載の方法によれば、ソフトウェアとして、BIOS、OS、アプリケーションが順に起動される。そして、それらのうち何れかひとつの改竄が検知された場合、暗号化データを復号しないようにしている。これにより、偽造ソフトウェアによる暗号化データの利用を防止することが可能になる。
一方、TPMにハッシュ値を登録する場合には、その時点で既に登録されているハッシュ値と、新たに登録しようとしているハッシュ値との連結データのハッシュ値を登録するようにしている(非特許文献1)。これにより、一旦正規のソフトウェアがハッシュ値を登録した後、偽造ソフトウェアがハッシュ値を上書きすることを防止することが可能になる。尚、最初にTPMにハッシュ値を登録する場合には、TPMの初期値と、新たに登録しようとしているハッシュ値との連結データのハッシュ値を登録するようにしている。
特開2010−267246号公報
TCG Published,「TPM Main Part 3 Commands、Specification Version 1.2、Level 2 Revision 103」,9 July 2007
しかしながら、従来技術は一旦起動したアプリケーションを終了させた後、OSが稼働状態のままで、該当するアプリケーションを再度実行させることを想定していない。
なぜなら、仮にアプリケーションを再起動すると、1つ前の起動時にTPMに登録されたハッシュ値と、これから起動しようとしているアプリケーションのハッシュ値を連結して出来た新たなハッシュ値でTPMに登録されることになるからである。すなわち、結果として、アプリケーションを再起動する度に、TPMには異なるハッシュ値が登録されてしまう。このため、2回目以降に起動したアプリケーションでは、正規のアプリケーションであるにも関わらず、1回目のアプリケーション起動時のハッシュ値を復号条件として生成した暗号化データを復号できなくなってしまう。
本発明は係る問題点に鑑みなされたものであり、アプリケーションを再起動する際にも、その正当性を正しく判定できる技術を提供しようとするものである。
この課題を解決するため、例えば本発明の情報処理装置は以下の構成を備える。すなわち、
情報処理装置であって、
少なくとも正規なプログラムの状態を示す状態値を用いて復号可能な暗号化データを記憶する不揮発性の第1の記憶手段と、
プログラムの状態値を記憶するための、揮発性の第2の記憶手段と、
装置の起動後、実行指示されたプログラムの状態値を算出する算出手段と、
前記第2の記憶手段に記憶された状態値が、装置起動時の初期値であるか否かを判定する第1の判定手段と、
該第1の判定手段の判定の結果が、前記第2の記憶手段に前記初期値が状態値として記憶されていることを示す場合、前記第2の記憶手段における前記初期値を前記算出手段で算出した状態値で更新する更新手段と、
前記第1の判定手段の判定の結果が、前記第2の記憶手段に非初期値が記憶されていることを示す場合、前記算出手段で算出した前記実行指示されたプログラムの状態値に所定の演算を施した値と前記第2の記憶手段に記憶された状態値とが一致するか否かを判定する第2の判定手段と、
前記第1の判定手段の判定の結果が前記第2の記憶手段に前記初期値が記憶されていることを示す場合、又は、前記第2の判定手段の判定の結果が一致することを示している場合、前記第1の記憶手段に記憶されている暗号化データを、前記第2の記憶手段に記憶されている状態値に基づいて復号する復号手段と、
該復号手段による復号が成功した場合、前記実行指示されたプログラムは正規のプログラムであるとして判定し、前記復号手段による復号が不成功の場合、又は、前記第2の判定手段の判定の結果が不一致を示す場合、前記プログラムは非正規なプログラムの状態になっているものと判定する第3の判定手段と、を備える。
アプリケーションを再起動する際にも、その対象とするアプリケーションが正規のアプリケーションであるか否かを判定できる。
実施形態における情報処理装置のブロック構成図。 実施形態における装置起動処理の流れを説明するフローチャート。 実施形態におけるアプリ起動処理の流れを説明するフローチャート。 実施形態におけるアプリ起動処理の流れを説明するフローチャート。 実施形態におけるTPMの内部状態の変化を説明する図。 実施形態における暗号化データの例を示す図。
以下、添付図面に従って本発明に係る実施形態を詳細に説明する。
<情報処理装置の構成>
はじめに、図1を用いて、本実施の形態に適応可能な情報処理装置について説明する。図1は本実施形態に係る情報処理装置の基本構成を示す図である。同図において、情報処理装置110は、例えば一般に普及しているパーソナルコンピュータである。図1に示すように、本実施形態における情報処理装置110は、ROM11、HDD12(第1の記憶装置)、TPM(Trusted Platform Module)13、RAM14、及びCPU19から構成される。
ROM11は、物理的、或いは論理的な書き換えが不可能な不揮発性メモリであり、BIOS15、不図示の各種プログラム、及びデータを記憶可能な補助記憶部である。不揮発性メモリであるため、電源の供給がない場合も内容を記憶し続けることが可能である。BIOS15は情報処理装置全体を制御するプログラムである。また、BIOS15は、情報処理装置110に電源が投入された際、情報処理装置内部で最初に起動されるプログラムである。
HDD12は、ブートローダー16、OS(オペレーティングシステム)17、アプリケーション18、及び種々のデータを記憶可能な補助記憶部である。HDD12は、ROM11と同様に不揮発性の記憶装置であって、電源の供給がない場合も内容を記憶し続けることが可能である。ここでブートローダー16は起動するOSの制御をするプログラムである。OS17は、アプリケーション18の起動、RAM14のメモリ管理、及び不図示のキーボードや画面出力などの入出力機能を制御するプログラムである。アプリケーション18は、ワードプロセッサ、表計算、データベース管理、ネットワークブラウジング、映像・音声再生など、情報処理装置の利用者が実行したい作業を機能として提供するプログラムである。
TPM13は、耐タンパー性を有するセキュリティチップである。耐タンパー性とは、外部からの解析を困難にすると共に、外部から解析しようとした場合に内部に記憶されているプログラム、或いはデータが破壊されてしまうような特性である。また、TPM13の内部には、PCR(Platform Configuration Register;状態保持部)と呼ばれる複数のレジスタ(第2の記憶部として機能する)を備える。PCRは揮発性メモリによって構成されている。このため、電源の供給がある間だけ内容を保持することができる。また、TPMは、外部から入力されたデータのハッシュ値を次の式に従って計算し、計算した値を所定のPCRに記憶する「登録」と呼ばれる機能を備える。
DATA_i+1=H(DATA_i|INPUT) (式1)
ここで、INPUTは、TPM外部から入力されたデータ、或いはそのハッシュ値である。DATA_iはTPMに登録する時点で、既にPCRに記録されている値である。H(x)は値xに対するハッシュ関数(圧縮関数)である。「x|y」は値xと値yの連結である。DATA_i+1は外部から値INPUTが入力された場合に新たに計算される結果値であり、DATA_i+1が所定のPCRに上書きされ記憶されることになる。すなわち、DATA_i+1は、該当するPCRが保持する更新後の状態値を意味する。
また、本実施形態では、説明を簡単なものとするため、TPMにはPCR0、PCR1、PCR2、及びPCR3という4つのPCRが搭載されているものとして説明する。更に、PCR0はBIOS、PCR1はブートローダー、PCR2はOS、そしてPCR3はアプリケーションのハッシュ値(それぞれのソフトウエアの状態値)をINPUTとして登録するために利用するものとする。
RAM14は、揮発性メモリであり、CPU19にて処理を行うために一時的にプログラムや各種データ(動作状態)を一時的に格納しておく主記憶部である。揮発性メモリであるため、電源の供給がある間だけ内容を保持することができる。
CPU19は、情報処理装置110内の各部の動作を制御、或いはRAM14にロードされたプログラムを実行することのできる電子回路である。
以上、本実施形態における情報処理装置の構成について説明した。以降では、本実施形態における情報処理装置の起動処理、及び情報処理装置上で実行されるアプリケーションの起動処理について説明するが、説明を補足するために、図5を併用することにする。図5は、これから説明する装置起動処理、及びアプリ起動処理によって、情報処理装置のTPM13の内部のPCR0乃至PCR3がどのように変化するかを説明する図である。図5(A)は初回・2回目共に正規アプリケーションが起動する場合、図5(B)は初回・2回目共に偽造アプリケーション(非正規のアプリケーション)が起動する場合の図である。また、図5(C)は初回に正当アプリケーション・2回目に偽造アプリケーションが起動する場合、図5(D)は初回に偽造アプリケーション・2回目に正当アプリケーションが起動する場合の図である。後述する、各処理を説明するフローチャートと併せて参照されたい。
<装置起動処理のフロー>
まず、図2を用いて本実施形態における情報処理装置を起動するための装置起動処理のフローを説明する。図2は本実施形態に適応可能な装置起動処理の流れを示すフローチャートである。
まず、情報処理装置110に電源が投入されると、情報処理装置110のCPU19はBIOS15を最初に起動する(S21)。尚、情報処理装置110に電源が投入される前は、TPM13内のPCR0乃至PCR3のそれぞれには、図5中の符号51に示すように初期値「0」(初期状態)が設定されている。そして、CPU19は、BIOS15に従いTPM13の初期化を実行する(S22)。初期化によって、TPM13内部の全てのPCRは、夫々所定の値に初期化される。本実施形態では全てのPCRが「0」に初期化されるものとして説明する。しかしながら、本発明はこれに限定されることなく、全ての値を「0」以外の値に初期化したり、PCR毎に異なる値に初期化することも可能である。
TPM13の初期値による初期化が完了すると、CPU19は、実行しているBIOS15のコードを引数とし、所定のハッシュ関数に代入してハッシュ値を算出し、算出したハッシュ値を式1に従ってTPM13に登録する(S23)。本実施形態では、BIOSのハッシュ値はTPM13の中のPCR0に登録するものとしている。また、本実施形態では、BIOS15の登録前にS22でPCRは「0」に初期化されているため、結果的に以下の式で算出される値がTPM13内のPCR0に登録されることになる。
PCR0=H(0|BIOS) …(式2)
ここで、BIOSはBIOS15のプログラムコードのハッシュ値である。このS23における処理の結果、図5の符号52に示すようにPCR0にH(0|BIOS)が登録されることになる。
次に、CPU19は、BIOS15の実行を継続することで、ブートローダー16をRAM14にロードし、そのハッシュ値を算出し、算出したハッシュ値を式1に従ってTPM13に登録する(S24)。本実施形態では、ブートローダーのハッシュ値はTPM13の中のPCR1に登録するものとしている。また、本実施形態では、S22においてPCRは「0」に初期化されているため、結果的に以下の式で算出される値がPCR1に登録されることになる。
PCR1=H(0|BL) …(式3)
ここで、BLはブートローダー16のプログラムコードのハッシュ値である。S24における処理の結果、図5の符号52に示すようにPCR1にH(0|BL)が登録されることになる。
ブートローダーの登録が完了すると、CPU19はBIOS15のプログラムに従い、RAM14にロードしたブートローダー16を起動する(S25)。
ブートローダー16が起動すると、CPU19は、そのブートローダー16に従ってOS17をRAM14に読み出し、そのハッシュ値を算出し、算出したハッシュ値を式1に従ってTPM13に登録する(S26)。本実施形態では、OSのハッシュ値はTPM13の中のPCR2に登録するものとしている。また、本実施形態では、S22においてPCRは「0」に初期化されているため、結果的に以下の式で算出される値がPCR2に登録されることになる。
PCR2=H(0|OS) …(式4)
ここで、「OS」はOS17のプログラムコードのハッシュ値である。S26における処理の結果、図5の符号52に示すようにPCR2に、H(0|OS)が登録されることになる。
上記のようにしてOSの登録が完了すると、CPU19はブートローダー16のプログラムに従い、RAM14にロードしたOS17を起動し(S27)、装置起動処理を終了する。
以上、本実施形態における電源ONやリセット時における装置起動時の処理のフローについて説明した。以上の装置起動処理の一連のフローにより、図5の符号52に示すようにPCR0、PCR1、及びPCR2に各ソフトウェアコンポーネントのハッシュ値が登録された状態となる。
<アプリ起動処理のフロー>
以降では、本実施形態における情報処理装置110で実行されるアプリ起動処理について説明する。アプリ起動処理は、情報処理装置110が図2に示した装置起動処理によって起動した後、OS17によって実行される。例えば、情報処理装置110のユーザーが、不図示のキーボードやマウスを用いて情報処理装置110に対して所望のアプリケーションの実行指示を行った場合に、その指示がOS17に伝えられる。そして、実行指示を受け取ったOS17は、指示されたアプリケーションを実行する(RAM14にロードし、実行する)。また、ユーザーは実行したアプリケーションによる所望の作業が完了した後、不図示のキーボードやマウスを用いて情報処理装置110に対して、実行しているアプリケーションの終了を指示することができる。そして、終了処理を受け取ったOS17は指定されたアプリケーションを終了する。更に、アプリケーションの終了後、ユーザーは再度同じアプリケーションの実行(即ち、アプリケーションの再起動)を指示することも可能である。本実施形態では、情報処理装置110の起動後、初回のアプリの実行指示と、2回目以降のアプリケーションの実行指示とでアプリ起動処理のフローが異なる。以降では、まず初回のアプリ起動(実行)処理のフローについて説明することにする。
尚、この後説明する一連のアプリ起動処理によって、TPM13内のPCRの値を取得したり、PCRにハッシュ値を登録することになるが、初回のアプリ起動であるため、図5の符号52の状態に対して取得・登録することに留意されたい。
それでは、図3を用いて本実施形態における情報処理装置110で実行されるアプリ起動処理のフローを説明する。図3(A)は本実施形態に適応可能なアプリ起動処理の流れを示すフローチャートである。
まず、CPU19は、OS17の制御下において、起動しようとしているアプリケーションをRAM14に読み出し、そのハッシュ値を算出する(S31)(状態算出部)。以降の説明では、起動しようとしているアプリケーションが、正当アプリケーションの場合と偽造アプリケーションの場合の両方について説明する。ここで、S31で生成される正当アプリケーションのハッシュ値を「APP」、偽造アプリケーションのハッシュ値を「APP’」と表記するものとする。尚、図中では便宜的に正当アプリケーションのハッシュ値APPを用いて記載しているが、偽造アプリケーションのハッシュ値である場合には、適時APP’に置き換えて理解されたい。
次に、TPM13に登録されているアプリケーション用PCRの値を取得する(S32)(状態読み出し部)。前述したように本実施形態ではアプリケーション用PCR値はPCR3であるため、初期値「0」が取得されることになる。そして、CPU19は、OS17の制御下において、S32にてTPMから取得したアプリケーション用PCR値が初期値「0」であるか否かを判定する(S33)(第1の判定)。アプリケーション用PCR値が初期値の場合は、処理をS34に進め、初期値以外の値(非初期値)の場合には処理をS35に進める。初回のアプリ起動の場合は、取得したアプリケーション用PCR値は初期値「0」であるため、処理はS34に進むことになる。
次に、CPU19は、OS17の制御下で、S31にて、算出したアプリケーションのハッシュ値を式1に従ってTPM13に登録する(S34)。本実施形態では、アプリケーションのハッシュ値はTPM13の中のPCR3に登録するものとしている。また、初回のアプリ起動では、図5(A)又は図5(C)の符号52に示すようにPCR3は「0」に初期化されている。結果的に、起動しようとしているアプリケーションが正当アプリケーションである場合には、以下の式で算出される値がPCR3に登録されることになる。
PCR3=H(0|APP) …(式5)
ここで、APPはS31で算出した正当アプリケーションのハッシュ値である。式5の様に算出したPCR3を登録した結果、TPM13には図5の符号53に示すように、PCR3にH(0|APP)が登録されることになる。
一方、起動しようとしているアプリケーションが偽造アプリケーションである場合には、以下の式で算出される値がPCR3に登録されることになる。
PCR3=H(0|APP’) …(式6)
ここで、APP’はS31で算出した偽造アプリケーションのハッシュ値である。式6の様に算出したPCR3を登録した結果、図5(B)又は図5(D)の符号55に示すようにPCR3にH(0|APP’)が登録されることになる。
次に、CPU19はOS17の制御下において、HDD12に予め保持されている暗号化データ(起動対象のアプリケーションの種類毎に用意されているものとする)を取得し、取得した暗号化データをTPM13を使って復号する(S36)(復号処理部)。ここで、本実施形態における暗号化データについて説明する。
本実施形態における暗号化データは、復号条件付きで暗号化されたデータである。復号条件とは、TPM13内のPCRの値がどのような値の時に暗号化データの復号を許可するかを表す条件のことである。図6に本実施形態における暗号化データの例を示す。図6は、「DataP」が平文データである。また、PCR0、PCR1、PCR2、及びPCR3が、夫々H(0|BIOS)、H(0|BL)、H(0|OS)、及びH(0|APP)の際に復号可能であることを示している。即ち、これが暗号化データの復号条件である。また、図6は平文、及び復号条件全体が暗号化されていることを示している。
尚、暗号化データは、先に説明したように、アプリケーション毎に用意されているものであり、情報処理装置のユーザー、情報処理装置のメーカー、或いはアプリケーションベンダーなどが予め生成し、HDD12に記憶しておくようにすればよい。例えば、情報処理装置のユーザーが、自分の個人情報をDataPとして保護をしたい場合を想定する。この場合、彼が保有する情報処理装置内のBIOS、ブートローダー、OS、及び前記個人情報を取り扱うアプリケーションのハッシュ値を復号条件として暗号化データを生成しておくことが可能である。或いは、情報処理装置のメーカーが、HDD12に含まれる全てのデータを暗号化(HDD暗号化)するための鍵をDataPとして保護する機能を提供することを想定する。この場合、メーカーが出荷した時点での情報処理装置内のBIOS、ブートローダー、OS、及びHDD暗号化用アプリケーションのハッシュ値を復号条件として暗号化データを生成しておくことが可能である。或いは、アプリケーションベンダーが、アプリケーションのライセンス情報をDataPとして保護したい場合を想定する。この場合、情報処理装置内のBIOS、ブートローダー、OS、及び前記ライセンス情報を管理するライセンス管理アプリケーションのハッシュ値を復号条件として暗号化データを生成しておくことが可能である。
図3(A)に戻って説明を続ける。S36における復号処理の後、CPU19はOS17の制御下において、HDD12から読み出した暗号化データをTPM13に渡して、復号を行なわせる。TPM13は、受けとった暗号化データにおける暗号化データの復号条件と、その時点でTPM13に登録されている各PCRの値とが一致する場合には、暗号化されたデータを復号すると共に、復号成功を示す値をCPU19」に返す。一方、不一致の場合にはTPM13は復号失敗を示す値をCPU19に返す。この返り値からCPU19は、暗号化データの復号が成功したか否かを判断する(S37)(第3の判定)。要するに、本実施形態では、暗号化データの復号条件と、その時点でTPM13に登録されているPCRの値とが一致する場合には復号成功となり、不一致の場合には復号失敗となる。
ここで、正当アプリケーションを起動しようとしている場合を考える。この場合、図5(A)又は図5(C)の符号53に示すように、PCR0、PCR1、PCR2、及びPCR3には、夫々H(0|BIOS)、H(0|BL)、H(0|OS)、及びH(0|APP)が登録されているはずである。この場合、図6に示す暗号化データの復号条件とTPM内に登録されている値は一致するため、S37で暗号化データの復号は成功と判定される。
一方、偽造アプリケーションを起動しようとしている場合を考える。この場合、図5の55に示すように、PCR0、PCR1、PCR2、及びPCR3には、夫々H(0|BIOS)、H(0|BL)、H(0|OS)、及びH(0|APP’)が登録されているはずである。この場合、図6に示す暗号化データの復号条件とTPM内に登録されている値は一致しないため、S37で暗号化データの復号は失敗(不成功)と判定する。
さて、復号成功と判定され、S38に処理が進むと、CPU19はOS17の制御下にて、起動しようとしているアプリケーションは正当アプリケーションであると見なし、RAM14にロードしたアプリケーションを実行する。
一方、復号失敗と判定された場合、CPU19は、OS17の制御下にて、起動しようとしているアプリケーションは偽造アプリケーションであるため、偽造アプリケーションであることを示すエラーを表示し(S39)、アプリ起動処理を終了する。すなわち、該当するアプリケーションの実行を禁止する。この場合、RAM14に読み込んだアプリケーションの格納領域は他のアプリケーション用に解放する、もしくはRAM14から削除する。
以上、本実施形態における、初回のアプリ起動処理のフローについて説明した。以上の初回のアプリ起動処理の一連のフローにより、正当アプリケーションを起動した場合は図5(A)又は図5(C)の符号53、偽造アプリケーションの場合は図5(B)又は図5(D)の符号55のようにPCR3にアプリケーションのハッシュ値が登録された状態となる。
続いて、2回目以降のアプリ起動処理のフローについて説明する。尚、本実施形態においては、3回目以降のアプリ起動処理は2回目のアプリ起動処理と同様であるため説明を省略し、以降では2回目のアプリ起動処理について説明する。また、2回目以降のアプリ起動処理の一連のフローにおいて、TPM13内のPCRの値を取得することになるが、2回目のアプリ起動処理であるため、初回のアプリ起動処理と違い、図5の符号53の状態、或いは55の状態から取得することに留意されたい。つまり、初回に正当アプリケーションが起動した場合は図5(A)又は図5(C)の符号53の状態からPCRの値を取得し、一方、偽造アプリケーションが起動した場合は図5(B)又は図5(D)の符号55の状態からPCRの値を取得することになる。
まず、CPU19は、OS17の制御下において、起動しようとしているアプリケーションのハッシュ値を算出し(S31)、TPM13に登録されているアプリケーション用PCR値を取得する(S32)。前述したように本実施形態では、初回に正当アプリケーションが起動している場合、図5(A)又は図5(C)の符号53に示すようにPCR3にH(0|APP)が登録されているため、この値が取得されることになる。一方、初回に偽造アプリケーションが起動している場合、図5(B)又は図5(D)の符号55に示すようにPCR3にH(0|APP’)が登録されているため、この値が取得されることになる。そして、CPU19はOS17の制御下において、S32で取得したアプリケーション用PCR値が初期値「0」であるか否かを判定する(S33)。2回目のアプリ起動では、初回に起動したアプリケーションが、(正当アプリケーションであっても偽造アプリケーションであっても)何れの場合も初期値「0」ではないため、処理はS35に進むことになる。次に、CPU19は、OS17の制御下において、PCR3の初期値「0」とS31で算出したアプリケーションのハッシュ値の連結のハッシュ値PCR3’を算出する。そして、算出したハッシュ値PCR3’がS32で取得したアプリケーション用PCR値であるPCR3と一致するか否かを判定する(S35)(第2の判定)。ここで、S35における判定処理について、正当アプリケーションを起動しようとしている場合と、偽造アプリケーションを起動しようとしている場合の2つに分けて、夫々説明する。
まず、正当アプリケーションを起動しようとしている場合を説明する。この場合、S31で正当アプリケーションのハッシュ値APPが算出されるため、結果として、S35では、次の式7で示す値がPCR3’として算出される。
PCR3’=H(0|APP) …(式7)
そして、S32でTPM13から取得したPCR3の値が、H(0|APP)である場合には、PCR3’と一致するため、処理をS36に進める。つまり、これは初回も2回目も正当アプリケーションを起動しようとしている場合である。そして、S36における復号処理の後、復号条件とTPM内のPCR値が一致するため、S37で復号成功と判定され、最終的にS38で正当アプリケーションが起動することになる。一方、S32でTPM13から取得したPCR値がH(0|APP’)である場合には、PCR3’と一致しないため、復号失敗と判定され、処理をS39に進める。つまり、これは初回に偽造アプリケーションを起動し、2回目に正当アプリケーションを起動しようとしている場合である。この場合、前述したように、S39でエラーを表示し、アプリ起動処理を終了する。
次に、偽造アプリケーションを起動しようとしている場合を説明する。この場合、S31で偽造アプリケーションのハッシュ値APP’が算出されるため、結果として次の式8で示す値がPCR3’として算出される。
PCR3’=H(0|APP’) …(式8)
そして、S32でTPM13から取得したPCR値がH(0|APP’)である場合には、PCR3’と一致するため、処理をS36に進める。つまり、これは初回も2回目も偽造アプリケーションを起動しようとしている場合である。S36における復号処理の後、復号条件とTPM内のPCR値が一致しないため、S37で復号失敗と判定され、S39で偽造アプリケーションであることを示すエラーを表示し、アプリ起動処理を終了する。一方、S32でTPM13から取得したPCR値がH(0|APP)である場合には、PCR3’と一致しないため、処理をS39に進める。つまり、これは初回に正当アプリケーションを起動し、2回目に偽造アプリケーションを起動しようとしている場合である。この場合、前述したように、S39で偽造アプリケーションであることを示すエラーを表示し、アプリ起動処理を終了する。
以上、本実施形態における、2回目以降のアプリ起動処理のフローについて説明した。以上の2回目以降のアプリ起動処理の一連のフローにより、TPM13内の各PCRの値は、図5(A)乃至(D)の符号54、或いは符号56の何れかの状態となる。ここで、符号54、及び56の何れの状態もアプリケーションの初回起動直後(それぞれ符号53、及び55)の状態から変化がないことに留意されたい。即ち、2回目のアプリ起動処理では、S33の後、必ず処理がS35に進む。つまり、アプリケーションのハッシュ値を登録するステップであるS34は、2回目以降のアプリ起動処理では実行されない。これにより、2回目以降のアプリ起動の場合は、TPM13内のPCRの値は変化することがない。このため、正当アプリケーションの場合、図6に示した暗号化データを復号することが可能となる。
一方、2回目以降のアプリ起動処理では、起動しようとしているアプリケーションのハッシュ値を登録しない。このため、S37において、TPM13に登録したPCRの値と暗号化データの復号条件を用いて、正当アプリケーションか偽造アプリケーションかを判定することができないことになる。例えば、初回に正当アプリケーションを起動し、何らかの原因で、2回目に偽造アプリケーションを起動しようとした場合(図5(C)の状態である)、2回目に起動しようとしているアプリケーションが偽造アプリケーションであることを検知できない。
そこで本実施形態では、これを補うため、S35において、前回のアプリケーションの起動時にTPM13に登録されたPCRの値と、改めてOS17が算出したH(0|APP)、或いはH(0|APP’)を比較するようにしている。即ち、これから起動しようとしているアプリケーションが前回起動時と同じか否かを判定するようにしている。これにより、初回に正当アプリケーションを起動し、2回目に偽造アプリケーション起動しようとした場合にも、アプリケーションの改竄を検知することが可能となる。
尚、本実施形態においては、OS17がアプリケーションを起動するものとして説明をしたが、本発明はアプリケーションに限定されることなく、ライブラリ、インタープリタ、仮想マシン、シェルなど、OS17が起動する種々のプログラムに対して適応可能である。
<変形例1>
以上説明した実施形態では、S35においてアプリケーション用PCR値とH(0|APP)が一致しない場合、及びS37において復号失敗と判定された場合、共にS39でエラー表示するようにしていた。しかしながら、本発明はこれに限定されることなく、夫々の場合に異なるエラー表示をすることも可能である。以降では、この場合の変形例について、図3(B)を用いて説明する。尚、図3(B)において、既に説明した図3(A)と同様の処理を実行するステップに関しては同じ番号を付与するようにし、説明は省略する。
S35において、アプリケーション用PCR値とH(0|APP)が一致しないのは、即ち現在起動しようとしているアプリケーションと、前回起動しようとしているアプリケーションが異なるからである。よって、この場合、前回起動時と異なるアプリケーションを起動しようとしている旨のエラー表示をしてもよい(S311)。
一方、S37において復号失敗と判定されるのは、即ち現在起動しようとしているアプリケーションが、暗号化データの復号条件と一致しないからである。よって、暗号化データの復号条件に工場出荷時のアプリケーションのハッシュ値が含まれている場合には、工場出荷時と異なるアプリケーションを起動しようとしている旨のエラー表示をしてもよい。或いは、暗号化データの復号条件にベンダーが提供したライセンス管理アプリケーションのハッシュ値が含まれている場合には、インストール時と異なるアプリケーションを起動しようとしている旨のエラーを表示してもよい(S310)。
尚、前述したS310、及びS311の何れの場合も、(前回、或いは今回)偽造アプリケーションを起動しようとしていることに変わりはない。よって、OS17は、S310、或いはS311によるエラー表示後、正当アプリケーションをインストールするためのアプリケーションの再インストール要求(S312)(再インストール要求部)を実行するようにしてもよい。また、アプリケーションの再インストール要求後、情報処理装置110の再起動要求(S313)(再起動要求部)を実行するようにしてもよい。情報処理装置110を再起動した場合、前述した図2に示した装置起動処理が改めて実行されることになる。そうした場合、この装置起動処理内の過程で、S22はTPM内のPCRを初期値「0」に初期化する。よって、装置再起動後、再インストールした正当アプリケーションは初回起動処理として、結果的に正しく起動されることになる。
<変形例2>
以上説明した実施形態では、S310、及びS311において異なるエラー表示をするようにした後、何れの場合も、アプリケーション再インストール要求(S312)、及び装置の再起動要求(S313)を実行していた。しかしながら、本発明はこれに限定されることなく、S310、及びS311において異なるエラー表示をした後、アプリケーション再インストール要求(S312)を実行するか否かを制御することも可能である。
以降では、この場合の変形例について、図4を用いて説明する。尚、図4において、既に説明した図3(A)、及び図3(B)と同様の処理を実行するステップに関しては同じ番号を付与するようにし、説明は省略する。
まず、図4においては、S36において暗号化データの復号処理を実行した後、その復号結果をHDD12などに保存するようにする(S41)(復号結果保持部)。本実施形態においては、復号成功の場合はそれを示すビット「1」、復号失敗の場合はそれを示すビット「0」を保存するようにする。本実施形態では、後述するS42における判定処理において、直前の復号結果だけを利用できれば良い。このため、S41では、常に最新の復号結果だけを保存すればよいため、既に復号結果が保存されている場合は、これを上書きするようにするものとする。
そして、S35において、前回のアプリケーションの起動時にTPM13に登録されたPCRの値と、改めてOS17が算出したハッシュ値を比較した後、HDD12に保存されている復号結果が復号成功を示すビット「1」であるか否かを判定する(S42)。そして、復号成功である場合には、処理をS310に進め、さもなければ、処理をS311に進める。S310においてエラー表示をした後、S312でアプリケーション再インストール要求を実行し、その後S313で装置再起動要求を実行する。一方、S311においてエラー表示をした後は、S312でアプリケーション再インストール要求は実行せず、S313で装置再起動要求を実行する。
以上説明した実施形態によれば、S41において、前回アプリ起動処理時の復号結果を保存している。このため、(その次のアプリ起動処理時に)S42において、復号結果が成功である場合は、前回起動しようとしたアプリケーションは正当アプリケーションであったと判断できる。それに加え、直前のS35において、前回起動しようとしたアプリケーションと今回起動しようとしているアプリケーションが異なる状態(ハッシュ値)であるため、今回は偽造アプリケーションを起動しようとしていると判断できる。よって、この場合はS312において正当アプリケーションの再インストール要求を実行することになる。
一方、S42において、復号結果が失敗である場合は、前回起動しようとしたアプリケーションは偽造アプリケーションであったと判断できる。それに加え、直前のS35において、前回起動しようとしたアプリケーションと今回起動しようとしているアプリケーションが異なる状態(ハッシュ値)であるため、今回は正当アプリケーションを起動しようとしていると判断できる。よって、この場合は、S312における正当アプリケーションの再インストール要求は必要なく、S313において、装置の再起動要求を実行することになる。
何れの場合も、S313における装置の再起動要求によって、図2に示した装置起動処理が実行されることになり、正当アプリケーションを正しく起動することが可能となる。
尚、本実施形態では、S41において、アプリ起動処理中に復号結果を保存するものとして説明したが、本発明はこれに限定されることなく、アプリケーションの実行中、或いはアプリケーションの終了処理中など、次回アプリケーションが起動するまでに、復号結果を保持するようにすることも可能である。
(その他の実施例)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。

Claims (8)

  1. 情報処理装置であって、
    少なくとも正規なプログラムの状態を示す状態値を用いて復号可能な暗号化データを記憶する不揮発性の第1の記憶手段と、
    プログラムの状態値を記憶するための、揮発性の第2の記憶手段と、
    装置の起動後、実行指示されたプログラムの状態値を算出する算出手段と、
    前記第2の記憶手段に記憶された状態値が、装置起動時の初期値であるか否かを判定する第1の判定手段と、
    該第1の判定手段の判定の結果が、前記第2の記憶手段に前記初期値が状態値として記憶されていることを示す場合、前記第2の記憶手段における前記初期値を前記算出手段で算出した状態値で更新する更新手段と、
    前記第1の判定手段の判定の結果が、前記第2の記憶手段に非初期値が記憶されていることを示す場合、前記算出手段で算出した前記実行指示されたプログラムの状態値に所定の演算を施した値と前記第2の記憶手段に記憶された状態値とが一致するか否かを判定する第2の判定手段と、
    前記第1の判定手段の判定の結果が前記第2の記憶手段に前記初期値が記憶されていることを示す場合、又は、前記第2の判定手段の判定の結果が一致することを示している場合、前記第1の記憶手段に記憶されている暗号化データを、前記第2の記憶手段に記憶されている状態値に基づいて復号する復号手段と、
    該復号手段による復号が成功した場合、前記実行指示されたプログラムは正規のプログラムであるとして判定し、前記復号手段による復号が不成功の場合、又は、前記第2の判定手段の判定の結果が不一致を示す場合、前記プログラムは非正規なプログラムの状態になっているものと判定する第3の判定手段と、
    を備えることを特徴とする情報処理装置。
  2. 前記第3の判定手段によって正規のプログラムと判定された場合、当該プログラムを実行し、非正規なプログラムの状態になっていると判断した場合に前記プログラムの実行を禁止する制御手段を更に備えることを特徴とする請求項1に記載の情報処理装置。
  3. 前記復号手段による前記暗号化データの復号が不成功の場合、前記プログラムの再インストールを要求する再インストール要求手段を更に有することを特徴とする請求項1または2に記載の情報処理装置。
  4. 前記第2の記憶手段は、TPM内の複数のPCRであることを特徴とする請求項1乃至3のいずれか1項に記載の情報処理装置。
  5. 前記算出手段は、前記実行指示されたプログラムのプログラムコードを引数としてハッシュ値を前記状態値として算出することを特徴とする請求項1乃至4のいずれか1項に記載の情報処理装置。
  6. 少なくとも正規なプログラムの状態を示す状態値を用いて復号可能な暗号化データを記憶する不揮発性の第1の記憶手段と、プログラムの状態値を記憶するための揮発性の第2の記憶手段とを有するコンピュータに読み込ませ実行させることで、前記コンピュータを情報処理装置として機能させるためのプログラムであって、
    前記コンピュータを、
    装置の起動後、実行指示されたプログラムの状態値を算出する算出手段、
    前記第2の記憶手段に記憶された状態値が、装置起動時の初期値であるか否かを判定する第1の判定手段、
    該第1の判定手段の判定の結果が、前記第2の記憶手段に前記初期値が状態値として記憶されていることを示す場合、前記第2の記憶手段における前記初期値を前記算出手段で算出した状態値で更新する更新手段、
    前記第1の判定手段の判定の結果が、前記第2の記憶手段に非初期値が記憶されていることを示す場合、前記算出手段で算出した前記実行指示されたプログラムの状態値と前記非初期値とが一致するか否かを判定する第2の判定手段、
    前記第1の判定手段の判定の結果が前記第2の記憶手段に前記初期値が記憶されていることを示す場合、又は、前記第2の判定手段の判定の結果が一致することを示している場合、前記第1の記憶手段に記憶されている暗号化データを、前記第2の記憶手段に記憶されている状態値で復号する復号手段、
    該復号手段による復号が成功した場合、前記実行指示されたプログラムは正規のプログラムであるとして判定し、前記復号手段による復号が不成功の場合、又は、前記第2の判定手段の判定の結果が不一致を示す場合、前記プログラムは非正規なプログラムの状態になっているものと判定する第3の判定手段
    として機能させるためのプログラム。
  7. 請求項6に記載のプログラムを格納したことを特徴とするコンピュータが読み取り可能な記憶媒体。
  8. 少なくとも正規なプログラムの状態を示す状態値を用いて復号可能な暗号化データを記憶する不揮発性の第1の記憶手段と、プログラムの状態値を記憶するための、揮発性の第2の記憶手段とを有する情報処理装置の制御方法であって、
    算出手段が、装置の起動後、実行指示されたプログラムの状態値を算出する算出工程と、
    第1の判定手段が、前記第2の記憶手段に記憶された状態値が、装置起動時の初期値であるか否かを判定する第1の判定工程と、
    更新手段が、該第1の判定工程の判定の結果が、前記第2の記憶手段に前記初期値が状態値として記憶されていることを示す場合、前記第2の記憶手段における前記初期値を前記算出工程で算出した状態値で更新する更新工程と、
    第2の判定手段が、前記第1の判定工程の判定の結果が、前記第2の記憶手段に非初期値が記憶されていることを示す場合、前記算出工程で算出した前記実行指示されたプログラムの状態値と前記非初期値とが一致するか否かを判定する第2の判定工程と、
    復号手段が、前記第1の判定工程の判定の結果が前記第2の記憶手段に前記初期値が記憶されていることを示す場合、又は、前記第2の判定工程の判定の結果が一致することを示している場合、前記第1の記憶手段に記憶されている暗号化データを、前記第2の記憶手段に記憶されている状態値で復号する復号工程と、
    第3の判定手段が、該復号工程による復号が成功した場合、前記実行指示されたプログラムは正規のプログラムであるとして判定し、前記復号工程による復号が不成功の場合、又は、前記第2の判定工程の判定の結果が不一致を示す場合、前記プログラムは非正規なプログラムの状態になっているものと判定する第3の判定工程と、
    を備えることを特徴とする情報処理装置の制御方法。
JP2012159798A 2012-07-18 2012-07-18 情報処理装置及びその制御方法 Expired - Fee Related JP5969845B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012159798A JP5969845B2 (ja) 2012-07-18 2012-07-18 情報処理装置及びその制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012159798A JP5969845B2 (ja) 2012-07-18 2012-07-18 情報処理装置及びその制御方法

Publications (2)

Publication Number Publication Date
JP2014021715A JP2014021715A (ja) 2014-02-03
JP5969845B2 true JP5969845B2 (ja) 2016-08-17

Family

ID=50196525

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012159798A Expired - Fee Related JP5969845B2 (ja) 2012-07-18 2012-07-18 情報処理装置及びその制御方法

Country Status (1)

Country Link
JP (1) JP5969845B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6494373B2 (ja) * 2015-03-31 2019-04-03 キヤノン株式会社 情報処理装置、情報処理装置の制御方法、およびコンピュータプログラム
JP6467385B2 (ja) * 2016-08-30 2019-02-13 西日本電信電話株式会社 ユーザ端末、暗号化復号方法、及びプログラム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7533274B2 (en) * 2003-11-13 2009-05-12 International Business Machines Corporation Reducing the boot time of a TCPA based computing system when the core root of trust measurement is embedded in the boot block code
JP5097130B2 (ja) * 2006-12-27 2012-12-12 パナソニック株式会社 情報端末、セキュリティデバイス、データ保護方法及びデータ保護プログラム
WO2010041462A1 (ja) * 2008-10-10 2010-04-15 パナソニック株式会社 情報処理装置、情報処理方法、情報処理プログラム及び集積回路
WO2010041467A2 (en) * 2008-10-10 2010-04-15 Panasonic Corporation USING TRANSIENT PCRs TO REALISE TRUST IN APPLICATION SPACE OF A SECURE PROCESSING SYSTEM
JP2012008641A (ja) * 2010-06-22 2012-01-12 Toshiba Tec Corp セキュリティデバイス及び情報処理装置

Also Published As

Publication number Publication date
JP2014021715A (ja) 2014-02-03

Similar Documents

Publication Publication Date Title
JP6595822B2 (ja) 情報処理装置及びその制御方法
US8782388B2 (en) Information processing apparatus, method, and computer-readable storage medium that encrypt data in a blob based on a hash value
US10142104B2 (en) Securely recovering a computing device
US8200961B2 (en) Securing a flash memory block in a secure device system and method
JP5116325B2 (ja) 情報処理装置、ソフトウェア更新方法及び画像処理装置
JP6054908B2 (ja) 変数セットを修復する方法、コンピュータ・プログラムおよびコンピュータ
JP4890309B2 (ja) 情報処理装置及び情報保護方法
US10346179B2 (en) Information processing apparatus, server apparatus, information processing system, control method, and computer program
JP5969845B2 (ja) 情報処理装置及びその制御方法
JP5961059B2 (ja) 情報処理装置およびその起動方法
WO2016024967A1 (en) Secure non-volatile random access memory
JP5277935B2 (ja) ライセンス管理システム及び方法
JP2013254506A (ja) 情報処理装置、真正性確認方法、及び記録媒体
JP7341376B2 (ja) 情報処理装置、情報処理方法、及び、情報処理プログラム
KR102369874B1 (ko) 무결성 검증 대상 디바이스에 대한 os 및 무결성 정보의 통합 업데이트 방법 및 원격 검증 시스템, os 배포 서버 및 무결성 검증 대상 디바이스
JP5278520B2 (ja) 情報処理装置、情報保護方法
JP5574007B2 (ja) 情報処理装置及び情報保護方法
JP5808651B2 (ja) メモリシステム、セキュリティメモリおよび情報保護方法
JP5310897B2 (ja) 情報処理装置、ソフトウェア更新方法及び記録媒体
JP2013191226A (ja) 情報処理装置、ソフトウェア更新方法及び画像処理装置
JP5234217B2 (ja) 情報処理装置、ソフトウェア更新方法及びプログラム
JP5500232B2 (ja) 情報処理装置及び情報保護方法
JP2007272923A5 (ja)

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150710

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160524

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160610

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160708

R151 Written notification of patent or utility model registration

Ref document number: 5969845

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees