(57)【要約】【課題】登録値に応じてセキュリティデータの暗号化および復号を行うセキュリティチップ(TPM)を用いてハイバネーションを行う情報処理装置において、電源切断時にTPMに既に登録されている値を考慮して、再起動時に電源切断前の動作状態を復元する。【解決手段】電源供給の切断要求に応じて、以下のハイバネーション処理を行う。すなわち、まずHDDに予め保持されている第1の暗号化データを、TPMで復号する(S44)。そして、RAM等に記憶されている装置の動作状態を示す動作状態データを生成してHDDに格納し(S46,47)、さらに、動作状態データのハッシュ値をTPMに登録する(S48)。そして、S44で復号されたセキュリティデータをTPMで暗号化して第2の暗号化データを生成し(S49)、これをHDDに格納する(S410)。ハイバネーション復帰による情報処理装置の起動時には、HDDに格納された第2の暗号化データを用いて動作状態を復元する。【選択図】図4
2014022944.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置の電源供給を管理する電源管理手段と、
揮発性の主記憶手段および不揮発性の補助記憶手段と、
セキュリティチップの登録値に基づき、情報処理装置のセキュリティ維持に用いられるセキュリティデータの暗号化および復号を行う暗号手段と、
前記補助記憶手段を利用してハイバネーションを実行するハイバネーション制御手段と、を有し、
前記ハイバネーション制御手段は、前記電源管理手段から前記電源供給の切断許可要求を受信した場合、
前記補助記憶手段に予め保持された第1の暗号化データを前記暗号手段に復号させ、
前記主記憶手段の記憶内容を示す動作状態データを前記補助記憶手段に格納し、
前記動作状態データのハッシュ値を前記セキュリティチップに登録し、
前記暗号手段によって前記第1の暗号化データから復号されたセキュリティデータを暗号化した第2の暗号化データを生成して、前記第2の暗号化データを前記補助記憶手段に格納し、
前記電源管理手段に前記電源供給の切断許可を送信する
ことを特徴とする情報処理装置。
【請求項２】
前記電源管理手段により前記電源供給が切断された後に前記電源供給が再開された場合、前記ハイバネーション制御手段は、
前記補助記憶手段に格納されている前記動作状態データのハッシュ値を補助データとして前記補助記憶手段に累積格納し、
前記補助記憶手段に累積された全ての前記補助データを前記セキュリティチップに登録し、
前記補助記憶手段に保持された前記第2の暗号化データを前記暗号手段に復号させて、前記第2の暗号化データの復号の成否を判定し、
前記第2の暗号化データの復号が成功した場合に、前記補助記憶手段に格納した動作状態データを前記主記憶手段に復元する
ことを特徴とする請求項1に記載の情報処理装置。
【請求項３】
前記ハイバネーション制御手段は、
前記第2の暗号化データの復号が失敗した場合に、前記補助記憶手段から前記第2の暗号化データを削除する
ことを特徴とする請求項2に記載の情報処理装置。
【請求項４】
前記ハイバネーション制御手段は、
前記セキュリティチップに、情報処理装置の起動に関わるプログラムコードのハッシュ値を登録した後に、前記動作状態データのハッシュ値を登録する
ことを特徴とする請求項1乃至3のいずれか1項に記載の情報処理装置。
【請求項５】
前記ハイバネーション制御手段は、前記電源管理手段により前記電源供給が再開した後に、前記電源管理手段から前記電源供給の切断許可要求を受信した場合、
前記補助記憶手段に保持された前記第2の暗号化データを新たな前記第1の暗号化データとして、前記暗号手段による復号を行うことを特徴とする請求項1乃至4のいずれか1項に記載の情報処理装置。
【請求項６】
情報処理装置の電源供給を管理する電源管理手段と、
揮発性の主記憶手段および不揮発性の補助記憶手段と、
セキュリティチップの登録値に基づき、情報処理装置のセキュリティ維持に用いられるセキュリティデータの暗号化および復号を行う暗号手段と、
前記補助記憶手段を利用してハイバネーションを実行するハイバネーション制御手段と、
を有する情報処理装置の起動方法であって、
前記ハイバネーション制御手段は、前記電源管理手段から前記電源供給の切断許可要求を受信した場合、
前記補助記憶手段に予め保持された第1の暗号化データを前記暗号手段に復号させ、
前記主記憶手段の記憶内容を示す動作状態データを前記補助記憶手段に格納し、
前記動作状態データのハッシュ値を前記セキュリティチップに登録し、
前記暗号手段によって前記第1の暗号化データから復号されたセキュリティデータを暗号化した第2の暗号化データを生成して、前記第2の暗号化データを前記補助記憶手段に格納し、
前記電源管理手段に前記電源供給の切断許可を送信する、
ことを特徴とする情報処理装置の起動方法。
【請求項７】
コンピュータ装置で実行されることにより、該コンピュータ装置を請求項1乃至5のいずれか1項に記載の情報処理装置における前記ハイバネーション制御手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電源供給の切断時における動作状態を再起動時に復元するハイバネーションを行う情報処理装置およびその起動方法に関する。
【背景技術】
【０００２】
コンピュータに搭載されているソフトウェアの改竄検知を実行するために、TPM(Trusted Platform Module)と呼ばれるセキュリティチップを用いる技術が提案されている。この技術によれば、予めソフトウェアのハッシュ値が一致した時だけ復号できるような条件を付けた上で、データを暗号化してハードディスクなどに保持しておく。そして、ソフトウェアが起動する際、ソフトウェアのハッシュ値をTPMに登録する。その後、ハードディスクに保持されている暗号化データを利用する際、ソフトウェアが暗号化データをTPMに送信する。すると、TPMは登録されているハッシュ値と、受信した暗号化データの復号条件とを比較し、一致した場合にだけ暗号化データを復号して、ソフトウェアに返信する。一方、改竄されたソフトウェアが起動した場合、TPMに登録されたハッシュ値と、暗号化データの復号条件が一致しないため、TPMは暗号化データの復号を実行しない。これにより、改竄されていない正当なソフトウェアだけが暗号化データを復号して利用することが可能となる。
【０００３】
このTPMの技術をハイバネーションに応用した技術が提案されている(例えば特許文献1参照)。ここでハイバネーションとは、サスペンド時に揮発性メモリの内容をハイバネーションデータとして外部記憶装置(HDD)に保存してから、コンピュータの電源を切る技術である。そして電源の再投入時に、HDDに保存されているハイバネーションデータを用いて揮発性メモリの内容を復元することで、サスペンド前の状態を復元する。
【０００４】
上記特許文献1に記載の技術によれば、ハイバネーションによるサスペンド時に、ハイバネーションデータのハッシュ値をTPMに登録し、登録した内容が暗号化データの復号条件に含まれるように、暗号化データに追加する。そして、サスペンド復帰時に、ハイバネーションデータのハッシュ値をTPMに登録してから、サスペンド前の状態を復元する。その後、暗号化データを利用する際には、暗号化データに含まれる複数の復号条件のうちの何れかと、TPMに登録されているハッシュ値とが一致した場合にのみ、暗号化データの復号を許可している。
【０００５】
特許文献1に記載の技術によれば、ソフトウェアの通常起動時に加え、ハイバネーション復帰時にも同様にソフトウェアの正当性を検証することが可能となる。このハイバネーション復帰における検証時には、暗号化データの復号条件にハイバネーションデータが反映されているため、すなわちハイバネーションデータの正当性検証が実行される。したがって、例えばハイバネーションによる休止中にハイバネーションデータが改竄された場合には暗号化データの利用を防止することが可能になる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開2010-267246号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記特許文献1に記載されたハイバネーションにTPMを応用する技術によれば、TPMにハッシュ値を登録する際、その時点で既にTPMに登録されているハッシュ値を考慮していない。そのため、既にTPMに何らかのハッシュ値が登録されていた場合、ハイバネーションデータが正当であるにも関わらず、ハイバネーション復帰時に暗号化データ内の復号条件とTPMに登録されているハッシュ値が一致しない可能性がある。上記技術では例えば、2回目以降のハイバネーション(再ハイバネーション)時には、前回のハイバネーション時のハイバネーションデータのハッシュ値がTPMに登録されているため、電源切断後のハイバネーション復帰が行えないことが考えられる。
【０００８】
本発明は係る問題点に鑑み、登録値に応じてセキュリティデータの暗号化および復号を行うセキュリティチップを用いてハイバネーションを実行する情報処理装置において、以下の機能を実現することを目的とする。すなわち、電源供給の切断時にセキュリティチップに既に登録されている値を考慮して、再起動時に電源切断前の動作状態を復元すること可能とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するための一手段として、本発明の情報処理装置は以下の構成を備える。すなわち、情報処理装置の電源供給を管理する電源管理手段と、揮発性の主記憶手段および不揮発性の補助記憶手段と、セキュリティチップの登録値に基づき、情報処理装置のセキュリティ維持に用いられるセキュリティデータの暗号化および復号を行う暗号手段と、前記補助記憶手段を利用してハイバネーションを実行するハイバネーション制御手段と、を有し、前記ハイバネーション制御手段は、前記電源管理手段から前記電源供給の切断許可要求を受信した場合、前記補助記憶手段に予め保持された第1の暗号化データを前記暗号手段に復号させ、前記主記憶手段の記憶内容を示す動作状態データを前記補助記憶手段に格納し、前記動作状態データのハッシュ値を前記セキュリティチップに登録し、前記暗号手段によって前記第1の暗号化データから復号されたセキュリティデータを暗号化した第2の暗号化データを生成して、前記第2の暗号化データを前記補助記憶手段に格納し、前記電源管理手段に前記電源供給の切断許可を送信する、ことを特徴とする。
【発明の効果】
【００１０】
本発明によれば、登録値に応じてセキュリティデータの暗号化および復号を行うセキュリティチップを用いてハイバネーションを実行する情報処理装置において、以下の効果が得られる。すなわち、電源供給の切断時にセキュリティチップに既に登録されている値を考慮して、再起動時に電源切断前の動作状態を復元することが可能となる。
【図面の簡単な説明】
【００１１】
【図１】第1実施形態における情報処理装置の構成を示すブロック図、
【図２】情報処理装置の起動処理を示すフローチャート、
【図３】通常起動処理を示すフローチャート、
【図４】ハイバネーション処理を示すフローチャート、
【図５】ハイバネーション復帰処理を示すフローチャート、
【図６】ハイバネーション補助値登録処理を示すフローチャート、
【図７】情報処理装置内部におけるデータ遷移例を示す図、
【図８】暗号化データの例を示す図、
【図９】ハイバネーション補助値の例を示す図、である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施形態について、図面を参照して説明する。なお、以下の実施の形態は特許請求の範囲に関わる本発明を限定するものではなく、また、本実施の形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【００１３】
＜第1実施形態＞
●装置構成
本実施形態の情報処理装置は、電源供給の切断時における動作状態を再起動時に復元するハイバネーション機能を有する。図1は、本実施形態に係る情報処理装置の基本構成を示すブロック図である。図1に示す情報処理装置18は、例えば一般に普及しているパーソナルコンピュータ(PC)であり、ROM11、HDD12、TPM13、RAM14、CPU19、およびパワーコントローラ20から構成される。
【００１４】
ROM11は、物理的、或いは論理的な書き換えが不可能な不揮発性メモリであり、BIOS15や、不図示の各種プログラム及びデータを記憶可能な補助記憶部である。ROM11は不揮発性メモリであるため、電源の供給がない場合も記憶内容を保持し続けることが可能である。BIOS15は、情報処理装置18の全体を制御するプログラムであり、情報処理装置18に電源が投入された際、装置内部で最初に起動されるプログラムである。
【００１５】
HDD12は、ブートローダー16やOS17の他、後述するハイバネーションデータ(動作状態データ)やハイバネーション補助値、及び不図示の各種プログラム及びデータを記憶可能な補助記憶部である。HDD12はROM11と同様に、電源の供給がない場合も記憶内容の保持を継続することが可能である。ブートローダー16は、起動するOSを制御するプログラムである。OS17は、HDD12等に保持されているアプリケーションプログラムの起動、RAM14のメモリ管理、不図示のキーボードからの入力や画面出力等の入出力機能の制御を行うプログラムである。
【００１６】
TPM13は、内部のレジスタへの登録値を用いてデータの暗号化および復号を行うセキュリティチップであり、耐タンパー性を有する。耐タンパー性とは、外部からの解析を困難にすると共に、外部から解析しようとした場合に内部に記憶されているプログラム或いはデータが破壊されてしまうような特性である。TPM13はその内部に、PCRと呼ばれる複数のレジスタ(PCR0,PCR1,PCR2)を備える。PCRは揮発性メモリによって構成されており、電源の供給がある間だけその内容を保持することができる。またTPM13は、外部から入力されたデータを所定の形式等に変換して所定のPCRに記憶する、「登録」と呼ばれる機能を備える。具体的な登録形式としては、以下の式(1)に従って算出されるハッシュ値である。
【００１７】
DATA_i＋1＝h(DATA_i|INPUT)      …(1)
式(1)において、「INPUT」はTPM13の外部から入力されたデータ或いはそのハッシュ値であり、DATA_iはTPM13に登録する時点で既にPCRに記録されている値である。またh(x)は、値xに対するハッシュ関数であり、例えば原文(x)から固定長の疑似乱数を生成する等の演算により、ハッシュ値を算出する。ハッシュ関数としては、SHA1,SHA256,SHA512等の既存のハッシュ関数を利用することが可能である。また、「x|y」は値xと値yの連結である。また、DATA_i＋1は外部から値INPUTが入力された場合に算出される結果値であり、DATA_i＋1が所定のPCRに記憶されることになる。
【００１８】
RAM14は、CPU19にて処理を行うためにプログラムや各種データ(動作状態)を一時的に格納する主記憶部である。RAM14は揮発性メモリであるため、電源供給が継続されている期間のみ記憶内容を保持することができる。
【００１９】
CPU19は、情報処理装置18内の各部の動作を制御、或いはRAM14にロードされたプログラムを実行することのできる電子回路である。
【００２０】
パワーコントローラ20は、情報処理装置18に対する、不図示の外部電源または内部電源からの電源供給を管理する電源管理部である。本実施形態のハイバネーション処理は、パワーコントローラ20による電源供給の切断許可要求の発生に応じて開始される。
【００２１】
以上、本実施形態における情報処理装置の構成について説明した。以下では、本実施形態の情報処理装置における起動処理、ハイバネーション処理、ハイバネーション復帰処理について説明するが、それぞれの説明を補足するために図7を併用する。図7は、情報処理装置18の内部におけるデータ遷移の具体例を示す図である。すなわち、後述する通常起動処理、ハイバネーション処理、ハイバネーション復帰処理によって、PCRやHDD12に保持されるデータ(後述するハイバネーションデータやハイバネーション補助値)がどのように変化するかを示している。以下、各処理を説明するフローチャートと併せて、図7に示す状態遷移を参照されたい。
【００２２】
●起動処理(全体)
まず、本実施形態の情報処理装置における起動処理について、図2のフローチャートを用いて説明する。パワーコントローラ20の制御により情報処理装置18に電源が投入されると、情報処理装置18はBIOS15を最初に起動する(S21)。尚、情報処理装置18への電源投入前は、図7の状態71に示すように、TPM13内のPCR、RAM14、HDD12内のハイバネーションデータ(HBR)、の値は共に「0」である。そしてBIOS15が、TPM13の初期化を実行する(S22)。この初期化によって、TPM13内の全てのPCRは夫々、所定の値に初期化される。本実施形態では全てのPCRが「0」に初期化されるものとして説明するが、本発明はこの例に限定されず、全てのPCRを「0」以外の値に初期化したり、PCR毎に異なる値に初期化することも可能である。
【００２３】
TPM13の初期化が完了すると、BIOS15は自分自身のハッシュ値を上記式(1)に従って算出し、TPM13に登録する(S23)。本実施形態では、BIOSのハッシュ値はPCR0に登録されるとする。本実施形態ではBIOS15の登録前に、PCRはS22で「0」に初期化されているため、結果的に以下の式(2)で算出される値がPCR0に登録される。
【００２４】
PCR0＝h(0|h(BIOS))      …(2)
式(2)において、「BIOS」はBIOS15のプログラムコードである。S23のBIOS登録処理の結果、図7の状態72に示すように、PCR0にh(0|h(BIOS))が登録されることになる。
【００２５】
BIOS15の登録が完了すると、BIOS15は今回の起動がスリープからの復帰であるか否かを判断する(S24)。ここでスリープとは、情報処理装置18に電源を供給し続けた状態で、装置内部におけるCPU19等の各種回路の動作を停止させる省電力モードのことである。スリープ中は電源が供給し続けられるため、RAM14はその記憶内容が保持され続けることに留意されたい。
【００２６】
S24でスリープ復帰であると判断されると、後述する暗号化データのうち、ハイバネーション用の暗号化データを削除して(S25)、起動処理を終了する。このとき、ハイバネーション用の暗号化データが存在していない場合には、何も処理を実行しない。スリープ復帰の場合は、RAM14にスリープ前の情報処理装置18の動作状態が保持されているため、この時点で情報処理装置18はスリープ前の動作状態に復帰したことになる。
【００２７】
一方、S24でスリープ復帰でないと判断されると、次にBIOS15はハイバネーション復帰であるか否かを判断する(S26)。ここでハイバネーションとは、情報処理装置18への電源の供給を行わない省電力モードのことであり、ハイバネーション復帰とは、ハイバネーションによる電源供給切断後に、電源供給が再開されることによって情報処理装置18が起動されることである。なお、ハイバネーション中は電源の供給が行われないため、RAM14の内容及びCPU19の状態は保持されないことに留意されたい。このため、ハイバネーション前に、RAM14の内容及びCPU19の状態をハイバネーションデータとして生成し、該生成したハイバネーションデータをHDD12に記録した後、電源供給を停止する。ハイバネーション処理の詳細については後述する。
【００２８】
S26でハイバネーション復帰であると判断されると、ハイバネーション復帰処理を実行する(S27)が、ハイバネーション復帰でないと判断されると、通常起動処理を実行する(S28)。なお、S27のハイバネーション復帰処理、及びS28の通常起動処理の詳細については後述する。
【００２９】
●通常起動処理(S28)
以下、上記S28における通常起動処理について、図3のフローチャートを用いて説明する。まず、BIOS15は、ブートローダー16のハッシュ値を式(1)に従って算出し、TPM13に登録する(S31)。本実施形態では、ブートローダーのハッシュ値はPCR1に登録するものとする。PCRはS22で「0」に初期化されているため、結果的に以下の式(3)で算出される値がPCR1に登録される。
【００３０】
PCR1＝h(0|h(BL))      …(3)
式(3)において、「BL」はブートローダー16のプログラムコードである。S31のブートローダー登録処理の結果、図7の状態72に示すように、PCR1にh(0|h(BL))が登録されることになる。
【００３１】
ブートローダー16の登録が完了すると、BIOS15はブートローダー16を起動する(S32)。ブートローダー16が起動すると、ブートローダー16はOS17のハッシュ値を式(1)に従って算出し、TPM13に登録する(S33)。本実施形態では、OS17のハッシュ値はPCR2に登録するものとする。PCRはS22で「0」に初期化されているため、結果的に以下の式(4)で算出される値がPCR2に登録される。
【００３２】
PCR2＝h(0|h(OS))      …(4)
式(4)において、「OS」はOS17のプログラムコードである。S33のOS登録処理の結果、図7の状態72に示すように、PCR2にh(0|h(OS))が登録されることになる。
【００３３】
OS17の登録が完了すると、ブートローダー16はOS17を起動し(S34)、通常起動処理を終了する。
【００３４】
以上説明した起動処理(図2)、及び通常起動処理(図3)により、情報処理装置18は図7の状態72に示すように、PCR0,PCR1,PCR2に、各ソフトウェアコンポーネントのハッシュ値が登録された状態になる。
【００３５】
●ハイバネーション処理
以下、本実施形態の情報処理装置18において実行されるハイバネーション処理について、図4のフローチャートを用いて説明する。ハイバネーション処理は、情報処理装置18が電源投入後に図2に示す起動処理によって起動した後、電源供給が切断される際に実行される。例えば、ユーザーが不図示のキーボードやマウスを用いて情報処理装置18に対してハイバネーションを指示した場合に、パワーコントローラ20から電源供給の切断許可要求が発行され、これを受信したBIOS15或いはOS17によって実行される。或いは、情報処理装置18への入力が所定時間ない場合に、自動的に実行される。本実施形態では、OS17がハイバネーション処理を実行するハイバネーション制御手段として機能するものとして説明を続けるが、本発明はこの例に限定されず、BIOS15でもハイバネーション処理を同様に実行可能である。
【００３６】
OS17はまず、HDD12に予め確保されている暗号化データ記憶領域に、ハイバネーション用暗号化データがあるか否かを判定する(S41)。ハイバネーション用暗号化データがある場合にはハイバネーション用暗号化データを取得し(S42)、ない場合には通常起動用暗号化データを取得する(S43)。
【００３７】
ここで、本実施形態における暗号化データ記憶領域、及び暗号化データについて、図8を用いて説明する。
【００３８】
まず図8(d)に、本実施形態における暗号化データ記憶領域の構成例を示す。暗号化データ記憶領域は、通常起動用暗号化データ記憶領域81と、ハイバネーション用暗号化データ記憶領域82から構成される。通常起動用暗号化データ記憶領域81には後述する通常起動用の暗号化データが記録され、ハイバネーション用暗号化データ記憶領域82には後述するハイバネーション用の暗号化データが記録される。これら暗号化データ記憶領域としては、HDD12等の不揮発性の記憶媒体を利用する。
【００３９】
次に、図8(a),(b)を用いて、本実施形態における暗号化データについて説明する。本実施形態における暗号化データは、復号条件付きで暗号化されたデータである。復号条件とは、TPM13内のPCRの値がどのような値である時に、暗号化データの復号を許可するかを示す条件のことである。
【００４０】
図8(a)は、本実施形態における暗号化データの例を示す。図8(a)において、DataPが例えば装置固有の秘密情報等、情報処理装置18のセキュリティ維持に用いられるセキュリティデータである。また、h(0|h(BIOS)),h(0|h(BL))及びh(0|h(OS))が復号条件(第1の復号条件)であり、セキュリティデータと復号条件の全体が暗号化されている。以降の説明では、復号条件が左から順にPCR0,PCR1,PCR2の値に対応するものとして説明する。即ち、図8(a)に示す暗号化データの場合、PCR0がh(0|h(BIOS))、PCR1がh(0|h(BL))、及びPCR2がh(0|h(OS))である場合に、暗号化データを復号可能である。暗号化データを復号することで、結果的にセキュリティデータ(DataP)を取得できる。ここで、PCR0,PCR1,PCR2には夫々、上記式(2),(3),(4)により算出された値が格納される。即ち、図8(a)に示す暗号化データは、正当なBIOS15、ブートローダー16、及びOS17を用いて通常起動した場合に復号可能な暗号化データであることを示している。図8(a)に示す暗号化データは、通常起動用暗号化データ(第1の暗号化データ)として通常起動用暗号化データ記憶領域81に保持しておく。なお、通常起動用暗号化データは、情報処理装置18のメーカーまたはユーザー、或いはソフトウェアのベンダーが予め生成しておくようにする。
【００４１】
図8(b)は、本実施形態における暗号化データの他の例を示す。図8(b)は、復号条件(第2の復号条件)がh(0|h(BIOS))及びh(h(0|h(OS))|h(HBR1))である暗号化データを示している。即ち、図8(b)に示す暗号化データの場合、PCR0がh(0|h(BIOS))で、PCR2がh(h(0|h(OS))|h(HBR1))である場合に、暗号化データを復号可能である。ここで、PCR0には上記式(2)により算出される値が格納され、PCR2には後述する式(5)によって算出される、ハイバネーションデータに基づく値が格納される。即ち、図8(b)に示す暗号化データは、正当なBIOS15、及びハイバネーションデータHBR1を用いて、後述するハイバネーション復帰処理を実行した場合に復号可能な暗号化データであることを示している。図8(b)に示す暗号化データは、後述するS410で、ハイバネーション用暗号化データ(第2の暗号化データ)として、ハイバネーション用暗号化データ記憶領域82に記録される。
【００４２】
したがって、通常起動した後に初回のハイバネーション処理を実行する段階では、ハイバネーション用暗号化データ記憶領域82には暗号化データが記録されていない。これにより、初回のハイバネーション処理の際は、S41においてハイバネーション用暗号化データは「なし」と判定され、結果としてS43で通常起動用暗号化データが取得される。一方、2回目以降のハイバネーション処理(例えば、ハイバネーション復帰後のハイバネーション処理)を実行する場合、前回のハイバネーション処理中に、S410(後述)で、ハイバネーション用暗号化データ記憶領域82に暗号化データが記録されている。これにより、2回目以降のハイバネーション処理の際は、S41においてハイバネーション用暗号化データが「ある」と判定され、結果としてS42でハイバネーション用暗号化データが取得される。
【００４３】
図4に戻って説明を続ける。上述したようにS42或いはS43において暗号化データを取得した後、OS17は、TPM13を用いて暗号化データを復号する(S44)。そして、TPM13による暗号化データの復号が成功したか否かを判定し(S45)、復号成功と判定された場合は処理をS46に進め、失敗したと判定した場合はハイバネーション処理を終了する。
【００４４】
ここで、S45における復号成功か否かの判定方法について説明する。本実施形態において情報処理装置18は、上記図3で説明した通常起動処理、或いは後述する図5に示すハイバネーション復帰処理によって起動することが可能である。ここでは、情報処理装置18が通常起動処理によって起動した場合について説明する。なお、ハイバネーション復帰処理によって起動した場合については後述する。
【００４５】
上述したように、情報処理装置18が通常起動した場合、BIOS15,ブートローダー16,OS17が改竄されていなければ、PCR0〜PCR2には夫々、h(0|h(BIOS)),h(0|h(BL)),h(0|h(OS))が登録されている。また、本実施形態では上述したように、図8(a)に示す暗号化データを復号しようとしている。よってTPM13は、各PCRに登録されたハッシュ値と、暗号化データの復号条件が一致するため、OS17から受信した暗号化データを復号することができる。一方、BIOS15,ブートローダー16,OS17の少なくとも何れかが改竄されている場合には、PCR0,PCR1,PCR2の何れかに、夫々h(0|h(BIOS)),h(0|h(BL)),h(0|h(OS))以外の値が登録されている。よってこの場合、TPM13はOS17から受信した暗号化データを復号しない。すなわちS45では、各PCRに登録されたハッシュ値と暗号化データの復号条件を比較し、完全一致であれば復号成功と判定し、そうでなければ復号失敗と判定する。
【００４６】
S45で暗号化データの復号が成功したと判定された場合、OS17は、RAM14の内容及びCPU19の状態に基づいてハイバネーションデータを生成し(S46)、HDD12に保持する(S47)。
【００４７】
ここで、ハイバネーションデータについて説明する。上述したようにハイバネーションとは、情報処理装置18に電源を供給しない省電力モードである。電源が供給されないため、揮発性メモリであるRAM14、及びCPU19内のレジスタ(不図示)の内容はハイバネーション中に消去されてしまう。このため、ハイバネーション前にRAM14、及びCPU19内のレジスタの内容をファイルにコピーすることでハイバネーションデータを生成し、該ファイルをHDD12に保持するようにしている。HDD12は不揮発性であるため、電源供給が断たれた後もハイバネーション前のRAM14、及びCPU19内のレジスタの記憶内容を保持することができる。RAM14及びCPU19内のレジスタには、実行するプログラム、実行中にプログラムが利用するデータ、及び現在実行しているプログラムのアドレス等のデータが含まれている。本実施形態では、これらのデータを動作状態データと呼ぶ。即ちハイバネーションデータは、ハイバネーション時の動作状態データがファイルとして保持されたものである。
【００４８】
本実施形態では、図7の状態73に示すように、1回目のハイバネーション処理時の動作状態を「動作状態1」と表記し、生成したハイバネーションデータをHBR1として表記する。
【００４９】
次にOS17は、ハイバネーションデータのハッシュ値を上記式(1)に従って算出し、TPM13に登録する(S48)。本実施形態では、ハイバネーションデータのハッシュ値はPCR2に登録するものとする。ここでPCR2には、図3に示した通常起動処理において、S33で既にOS17のハッシュ値がh(0|h(OS))として登録されている。したがってS48では、結果的に以下の式(5)で算出される値がPCR2に登録される。
【００５０】
PCR2＝h(h(0|h(OS))|h(HBR1))      …(5)
式(5)において、「HBR1」はハイバネーションデータである。S48における登録処理の結果、図7の状態73に示すように、PCR2にh(h(0|h(OS))|h(HBR1))が登録される。すなわちPCR2には、通常起動時に登録されたh(0|h(OS))に対し、1回目のハイバネーションによってハイバネーションデータHBR1のハッシュ値h(HBR1)が追加登録される。
【００５１】
S48におけるハイバネーションデータの登録後、OS17はS44での復号により得られたセキュリティデータ(DataP)をTPM13を用いて暗号化する(S49:暗号手段)。TPM13ではすなわち、暗号化処理時点でのPCR0,PCR2の値を復号条件として、受信したセキュリティデータ(DataP)を暗号化し、該暗号化データをOS17に返信する。暗号化処理時点においてPCR0,PCR2には夫々、h(0|h(BIOS)),h(h(0|h(OS))|h(HBR1))が登録されているため、これらを復号条件(第2の復号条件)として、図8(b)に示す暗号化データが生成される。S49ではすなわち、S44で復号されたセキュリティデータ(DataP)を、現時点でのTPM13への登録内容を反映した復号条件により復号可能となるように暗号化して、ハイバネーション用暗号化データを生成する。
【００５２】
そしてOS17は、TPM13が暗号化した暗号化データをハイバネーション用暗号化データ記憶領域82に格納し(S410)、パワーコントローラ20に電源供給の切断許可を送信することでハイバネーション処理を終了する。このとき、ハイバネーション用暗号化データ記憶領域82に既に暗号化データが存在していた場合には、これを上書きする。これにより、ハイバネーション処理が終了した時点で、暗号化データ記憶領域には、図8(a)に示す通常起動用暗号化データと、図8(b)に示すハイバネーション用暗号化データの2つが保持されていることになる。
【００５３】
以上、本実施形態におけるハイバネーション処理について説明した。このハイバネーション処理により、TPM13内のPCR0,PCR1,PCR2は、図7の状態73に示すようになる。その後、情報処理装置18への電源供給が断たれると、揮発性メモリであるPCR,RAM14,CPU19のレジスタはデータが消去され(0になり)、図7の状態74に示す状態になる。
【００５４】
●ハイバネーション復帰処理
次に、本実施形態の情報処理装置において実行されるハイバネーション復帰処理について、図5のフローチャートを用いて説明する。本実施形態ではBIOS15がハイバネーション復帰処理を実行するものとして説明するが、本発明はこの例に限定されず、OS17でも同様にハイバネーション復帰処理を実行可能である。尚、上述したように、本実施形態におけるハイバネーション復帰処理は、図2のS23でBIOSが登録された後、S27で実行される。したがってハイバネーション復帰処理の開始時には、図7の状態75に示すように、PCR0にはh(0|h(BIOS))が登録されていることに留意されたい。
【００５５】
BIOS15はまず、OS17を式(1)に従ってTPM13に登録する(S51)。本実施形態では、OSのハッシュ値はPCR2に登録する。なお、図2のS22で各PCRは「0」に初期化されているため、結果的に以下の式(6)で算出される値がPCR2に登録される。
【００５６】
PCR2＝h(0|h(OS))      …(6)
式(6)において、「OS」はOS17のプログラムコードである。
【００５７】
S51でOS17の登録が完了した後、BIOS15はハイバネーション補助値の登録を実行する(S52)。ここで、S52におけるハイバネーション補助値の登録処理について、図6のフローチャートを用いて説明する。
【００５８】
BIOS15はまず、カウンタiを1に初期化する(S61)。そして、i番目のハイバネーション補助値がHDD12に存在するか否かを判断し(S62)、存在する場合は処理をS63に進め、存在しない場合はハイバネーション補助値登録処理を終了する。
【００５９】
ここで、本実施形態におけるハイバネーション補助値について説明する。ハイバネーション補助値とは、本実施形態におけるハイバネーション復帰処理を確実に行うために参照される補助データであり、具体的にはハイバネーション時に生成されたハイバネーションデータのハッシュ値である。ハイバネーションデータのハッシュ値は、後述するS54で生成され、ハイバネーション補助値としてHDD12に累積格納される。すなわちハイバネーション補助値は、ハイバネーション毎に異なる値が生成され、これが累積されることで、ハイバネーションの回数分に応じた数の、それぞれ値が異なるハイバネーション補助値がHDD12に保持されることになる。HDD12におけるハイバネーション補助値の累積状況はすなわち、ハイバネーションの履歴を表わすことになる。
【００６０】
図9は、本実施形態におけるハイバネーション補助値の例を説明する図である。図9(a),図9(b),図9(c)は夫々、1回目のハイバネーション復帰後、2回目のハイバネーション復帰後、3回目のハイバネーション復帰後、のハイバネーション補助値を示している。図9において、h(HBR1),h(HBR2),h(HBR3)は夫々、1回目のハイバネーションデータのハッシュ値、2回目のハイバネーションデータのハッシュ値、3回目のハイバネーションデータのハッシュ値である。図9に示すように本実施形態では、ハイバネーション補助値の数が、ハイバネーション復帰毎に増加する。なお本実施形態では、ハイバネーション復帰処理時に、後述するS54でハイバネーション補助値が生成・追加されるため、1回目のハイバネーション復帰時にはハイバネーション補助値が1つも存在しないことに留意されたい。即ち、1回目のハイバネーション復帰時には、S62において「NO」と判定され、ここ(S52)でのハイバネーション補助値の登録は行われない。
【００６１】
図6に戻って説明を続ける。S62でHDD12にi番目のハイバネーション補助値が存在すると判定された場合は、i番目のハイバネーション補助値のハッシュ値をTPM13に登録する(S63)。本実施形態では、ハイバネーション補助値のハッシュ値はPCR2に登録する。なお、S51でPCR2には既にh(0|h(OS))が登録されているため、結果的に以下の式(7)で算出される値がPCR2に登録される。
【００６２】
PCR2＝h(h(0|h(OS))|h(HBR1))      …(7)
式(7)において、「h(HBR1)」は初回、すなわち1回目のハイバネーション補助値である。
【００６３】
S63でi番目のハイバネーション補助値を登録した後、BIOS15はカウンタiを1だけ増加させ(S64)、処理をS62に進める。
【００６４】
以上説明したS62,S63,S64の処理を繰り返すことによって、例えば3番目のハイバネーション補助値を登録した後のPCR2には、以下の式(8)で算出される値が登録される。
【００６５】
PCR2＝h(h(h(h(0|h(OS))|h(HBR1))|h(HBR2))|h(HBR3))      …(8)
式(8)において、「h(HBR2)」及び「h(HBR3)」は夫々、2番目及び3番目のハイバネーション補助値である。このように本実施形態では、HDD12に保持されている全てのハイバネーション補助値が順次、TPM13に登録される。尚、以下では説明を簡易とするために、まず1回目のハイバネーション復帰について説明する。この場合、S62で「NO」と判定されることになり、ハイバネーション補助値は未だ登録されず、PCR2には式(6)に示した値(OSのハッシュ値)が登録されている。2回目以降のハイバネーション復帰の場合については後述する。  以上、本実施形態におけるハイバネーション補助値登録処理(S52)について説明した。以下、図5に戻ってハイバネーション復帰処理の説明を続ける。
【００６６】
S52による累積ハイバネーション補助値の登録が完了すると、BIOS15は最新のハイバネーションデータをHDD12から取得し、そのハッシュ値を式(1)に従って算出し、TPM13に登録する(S53)。本実施形態では、ハイバネーションデータのハッシュ値はPCR2に登録する。ここで、S52でハイバネーション補助値が1つも登録されなかった場合には、PCR2には式(6)に示すh(0|h(OS))が登録されているため、結果的に以下の式(9)で算出される値がPCR2に登録されることになる。
【００６７】
PCR2＝h(h(0|h(OS))|h(HBR1))      …(9)
式(9)において、「h(HBR1)」はHDD12から取得したハイバネーションデータのハッシュ値である。S53における登録処理の結果、図7の状態75に示すようにPCR2にh(h(0|h(OS))|h(HBR1))が登録されることになる。
【００６８】
S53におけるハイバネーションデータの登録後、BIOS15はHDD12から取得したハイバネーションデータのハッシュ値を算出し、該算出した値をハイバネーション補助値としてHDD12に保持する(S54)。このハイバネーション補助値は図9に示すように、前回保持したハイバネーション補助値に追加するように保持される。図7の状態75では、ハイバネーション補助値h(HBR1)がHDD12に保持されている。
【００６９】
ここでS52〜S54の処理により、TPM13のPCR2には、最新のハイバネーションを含む、HDD12に累積された全てのハイバネーション補助値が登録されるが、このような登録が実現できれば、これらS52〜S54の処理順は問わない。例えば、S54での最新のハイバネーション補助値をHDD12に登録した後にS52の処理を行うようにすれば、S53の処理はS63に含まれるため不要となる。
【００７０】
次にBIOS15は、HDD12に保持されている暗号化データ(この場合、ハイバネーション用暗号化データ)をTPM13を用いて復号する(S55)。そして、復号が成功したか否かを判定し(S56)、復号が成功したと判定された場合は処理をS57に進め、失敗したと判定された場合は処理をS58に進める。
【００７１】
ここで、S56における復号の成否の判定方法について説明する。まず、S56が実行されるのに先立ち、S23,S51,S53において、TPM13にはBIOS15と、OS17およびハイバネーションデータのハッシュ値が登録されていることに留意されたい。すなわち、1回目のハイバネーション復帰時には、S56の時点で、PCR0,PCR2の夫々に、式(2),式(9)に示す値が登録されている。一方、1回目のハイバネーション時に、S49で図8(b)に示すハイバネーション用暗号化データが生成されている。よって、正当なハイバネーションデータを用いてハイバネーション復帰を行おうとした場合には、TPM13に登録されているハッシュ値と、暗号化データの復号条件が一致するため、S56では復号成功と判定される。もしもハイバネーションデータが改竄されている場合には、TPM13に登録されているハッシュ値と、暗号化データ内の復号条件が一致しないため、S56では復号失敗と判定される。したがってS56では、ハイバネーションデータの正当性が適切に検証される。
【００７２】
S56で復号成功と判定された場合、BIOS15はハイバネーションデータをRAM14にロードする(S57)。これにより、ハイバネーション前の情報処理装置18の動作状態が復元される。すなわち、図7の状態75に示すように、RAM14及びCPU19のレジスタの記憶内容が「動作状態1」となる。一方、S56で復号失敗と判定された場合、BIOS15は、図8(b)(或いは図8(c))に示すハイバネーション用暗号化データ、およびハイバネーション補助値をHDD12から削除し(S58)、情報処理装置18を再起動する(S59)。再起動後は図2に示す起動処理が再び実行され、この場合、スリープ復帰、及びハイバネーション復帰の何れでもないため、結果としてS28の通常起動処理が実行されることになる。
【００７３】
以上、本実施形態における初回のハイバネーション復帰処理について説明した。このハイバネーション復帰処理により、情報処理装置18は図7の状態75に示す状態となる。
【００７４】
●2回目以降のハイバネーションおよび復帰処理
以上は、通常起動処理により情報処理装置18が起動した後、初回のハイバネーション、及びハイバネーション復帰を行う場合について説明した。以下では、ハイバネーション復帰の後、更に2回目以降のハイバネーションを実行し、ハイバネーション復帰する場合について説明する。
【００７５】
まず、初回のハイバネーション復帰の後の2回目以降のハイバネーション処理に関して、図4を用いて説明する。尚、以下では説明を簡略化するために、1回目のハイバネーション復帰処理後に2回目のハイバネーション処理を実行する例を示すが、2回目のハイバネーション復帰処理以降の場合にも同様の処理を繰り返せばよい。
【００７６】
ハイバネーション復帰処理によって情報処理装置18が起動した場合、ハイバネーション用暗号化データ記憶領域82に、前回のハイバネーション時にS410でハイバネーション用暗号化データが登録されている。したがって、2回目以降のハイバネーションでは、まずS41でハイバネーション用暗号化データが「ある」と判断され、S42で、前回のハイバネーション時にS49で生成された、図8(b)に示すハイバネーション用暗号化データが取得される。
【００７７】
そして、該取得したハイバネーション用暗号化データをTPM13で復号(S44)し、該復号が成功したか否かを判定するが(S45)、この判定処理が初回のハイバネーション時と異なる。情報処理装置18がハイバネーション復帰により起動した場合、図5に示した復帰処理により、PCR0,PCR2には夫々、h(0|h(BIOS)),h(h(0|h(OS))|h(HBR1))が登録されている(図7の状態75参照)。よってTPM13は、PCRのハッシュ値と、暗号化データ(図8(b))の復号条件が一致するため、OS17から受信した暗号化データを復号することができる。一方、BIOS15、或いはハイバネーションデータの何れかが改竄されている場合には、PCRのハッシュ値と暗号化データの復号条件が一致しないため、TPM13は暗号化データを復号しない。
【００７８】
S45で復号成功と判定された後、OS17はハイバネーションデータを再度生成し(S46)、生成したHBR2をHDD12に保持する(S47)。このときの情報処理装置18は図7の状態76に示すようになる。すなわち、動作状態が動作状態2に変化しており、それに応じた新たなハイバネーションデータHBR2がHDD12に保持されている。これにより、ハイバネーション復帰後から再度ハイバネーションするまでの間における、情報処理装置18の動作状態の変化に対応することができる。
【００７９】
次に、ハイバネーションデータのハッシュ値をTPM13に登録する(S48)。上述したように、ハイバネーションデータのハッシュ値はPCR2に登録される。このときPCR2には、1回目のハイバネーション復帰処理中にS53で登録されたh(h(0|h(OS))|h(HBR1))が登録されている(図7の75のPCR2参照)。したがって、結果として以下の式(10)で算出される値がPCR2に登録されることになる。
【００８０】
PCR2＝h(h(h(0|h(OS))|h(HBR1))|h(HBR2))      …(10)
式(10)において、「h(HBR2)」は2番目のハイバネーション補助値である。S48における登録処理の結果、図7の状態76に示すように、PCR2にh(h(h(0|h(OS))|h(HBR1))|h(HBR2))が登録されることになる。すなわちPCR2には、1回目のハイバネーション復帰時に登録された値に対し、2回目のハイバネーションによってハイバネーションデータHBR2のハッシュ値h(HBR2)が追加登録される。
【００８１】
S48でハイバネーションデータを登録した後、OS17はS44での復号により得られたセキュリティデータ(DataP)をTPM13を用いて暗号化する(S49)。このときTPM13は、PCR0,PCR2が復号条件となるように暗号化し、図8(c)に示すような暗号化データをOS17に返信する。図8(c)において、暗号化データの復号条件が図7の状態76におけるPCR2と同じであることに留意されたい。そしてOS17が、TPM13が暗号化した暗号化データをハイバネーション用暗号化データ記憶領域82に上書きして(S410)、ハイバネーション処理を終了する。これにより、2回目のハイバネーション処理が終了した時点で、暗号化データ記憶領域には、図8(a)に示す通常起動用暗号化データと、図8(c)に示すハイバネーション用暗号化データの2つが保持されていることになる。
【００８２】
以上、情報処理装置18がハイバネーション復帰処理によって起動された後、再度ハイバネーションを実行した場合の例について説明した。この2回目のハイバネーション処理により、情報処理装置18におけるTPM13内の各PCRは、図7の状態76のようになる。その後、情報処理装置18への電源供給が断たれると、揮発性メモリであるPCRとRAM及びCPUのレジスタはデータが消去され(0になり)、図7の状態77のようになる。
【００８３】
次に、以上説明した2回目のハイバネーション処理後、再度ハイバネーション復帰する場合の処理(2回目のハイバネーション復帰処理)について、図5を用いて説明する。尚、説明を簡略化するために、以下では2回目のハイバネーション復帰処理について説明するが、3回目以降の復帰処理についても同様の処理を繰り返せばよい。
【００８４】
2回目のハイバネーション復帰処理において、まずPCR2には式(6)によりh(0|h(OS))が登録される(S51)。次に、ハイバネーション補助値の登録(S52)を行う。このとき、前回のハイバネーション復帰時にS54でHDD12に格納された、1番目のハイバネーション補助値h(HBR1)が存在しているため、図6のS63においてハイバネーション補助値h(HBR1)がTPM13に登録される。本実施形態では、ハイバネーション補助値はPCR2に登録されるため、ここでは以下の式(11)で算出される値がPCR2に登録されることになる。
【００８５】
PCR2＝h(h(0|h(OS))|h(HBR1))      …(11)
次に、HDD12に保持されている2回目のハイバネーションデータのハッシュ値がTPM13に登録される(S53)。本実施形態では、ハイバネーションデータの補助値はPCR2に登録されるため、ここでは以下の式(12)で算出される値がPCR2に登録されることになる。
【００８６】
PCR2＝h(h(h(0|h(OS))|h(HBR1))|h(HBR2))      …(12)
式(12)において、「h(HBR2)」は2回目のハイバネーションデータのハッシュ値である。この登録処理の結果、図7の状態78に示すように、PCR2にはh(h(h(0|h(OS))|h(HBR1))|h(HBR2))が登録されることになる。
【００８７】
そして、2回目のハイバネーションデータのハッシュ値をハイバネーション補助値としてHDD12に追加する(S54)。これにより、ハイバネーション補助値は図9(b)に示すように累積され、図7の状態78に示すように、HDD12には1回目のハイバネーション補助値h(HBR1)に加え、h(HBR2)が追加される。
【００８８】
ハイバネーション補助値の追加後、OS17はTPM13を用いて暗号化データを復号し(S55)、この復号処理が成功したか否かを判定する(S56)。2回目のハイバネーション復帰時には、S56の時点で、PCR0,PCR2の夫々に、式(2),式(12)に示す値が登録されていることになる(図7の状態78参照)。また、2回目のハイバネーション時に、S49で図8(c)に示す暗号化データを生成している。よって、正当なハイバネーションデータを用いてハイバネーション復帰をしようとした場合には、TPM13に登録されているハッシュ値と、暗号化データ内の復号条件が一致するため、S56で復号成功と判定される。一方、ハイバネーションデータが改竄されている場合には、TPM13に登録されているハッシュ値と、暗号化データ内の復号条件が一致しないため、S56で復号失敗と判定される。
【００８９】
以上、2回目のハイバネーション復帰処理の場合について説明した。このハイバネーション復帰処理により、情報処理装置18は図7の状態78に示す状態となる。
【００９０】
以上説明したように本実施形態によれば、ハイバネーションによる電源切断時に、TPM13を用いて暗号化データを復号し、その時点での動作状態を復号条件に反映させてハイバネーション用の暗号化データを作成し、HDD12に保持しておく。そしてハイバネーション復帰時には直前のハイバネーション時の動作状態を累積保持しておくようにし、該累積された動作状態を復号条件として、TPM13でハイバネーション用暗号化データを復号する。したがって、ハイバネーション時に既にTPM13にハッシュ値が登録されているような場合であっても、ハイバネーションデータの正当性を正しく検証することができ、確実なハイバネーション復帰が可能となる。また、例えば偽造ソフトウェア等によってハイバネーションデータ用の復号条件が追加されることを防止できる。
【００９１】
また、ハイバネーションデータが正当でない(正当性の検証失敗)と判定された場合には暗号化データおよびハイバネーション補助値を削除することで、HDD12の記憶領域を解放することができる。なお、正当なハイバネーションデータによるハイバネーションが繰り返し実行される場合には、例えばハイバネーション補助値の格納領域の容量に制限を設け、該制限に達したタイミングで、検証失敗と判定するようにしても良い。もちろん、制限に達しそうなタイミングでアラートの報知等を行っても良い。
【００９２】
なお、スリープとハイバネーションを組み合わせた起動処理を実行する際にも、本実施形態は適用可能である。例えば所定時間のスリープの後、ハイバネーションに移行する場合に、該ハイバネーションに対して本実施形態を適用することが考えられる。この場合、例えば上記特許文献1に記載された技術を適用した場合と比べて、本実施形態ではスリープ復帰とハイバネーション復帰を区別して(S24,S26)処理を行うため、ハイバネーション後の高速な復帰が可能となる。
＜その他の実施形態＞
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【図１】
2014022944.tif 000003
【図２】
2014022944.tif 000004
【図３】
2014022944.tif 000005
【図４】
2014022944.tif 000006
【図５】
2014022944.tif 000007
【図６】
2014022944.tif 000008
【図７】
2014022944.tif 000009
【図８】
2014022944.tif 000010
【図９】
2014022944.tif 000011