(57)【要約】【課題】  改ざん検出対象のデータを格納するメモリにハッシュ値を格納する技術を提供する。【解決手段】  データの改ざん検出対象の領域とこの領域のハッシュ値の書き込みを行う領域とを有する不揮発性メモリと、前記データから前記ハッシュ値を計算する計算する計算手段と、このハッシュ値を前記ハッシュ値を書き込む領域に保存する保存手段とを備えた情報処理装置。また、データの改ざん検出対象の領域とこの領域のハッシュ値の書き込みを行う領域とを有する不揮発性メモリを備え、前記データから前記ハッシュ値を計算する計算し、このハッシュ値を前記ハッシュ値を書き込む領域に保存する情報処理方法。【選択図】  図４
2013257711.tif 000002
【特許請求の範囲】
【請求項１】
データの改ざん検出対象の領域とこの領域のハッシュ値の書き込みを行う領域とを有する不揮発性メモリと、
前記データから前記ハッシュ値を計算する計算する計算手段と、
このハッシュ値を前記ハッシュ値を書き込む領域に保存する保存手段とを
備えた情報処理装置。
【請求項２】
更に前記書き込みの書き込み検出手段を備え、この書き込み検出手段が前記書き込みの未検出状態と判定した場合に、前記改ざん検出対象の領域のハッシュ値を不揮発性メモリから取得する請求項１に記載の情報処理装置。
【請求項３】
前記ハッシュ値を用いて不揮発メモリの変更・改ざん検出を行う請求項２に記載の情報処理装置。
【請求項４】
更に前記不揮発性メモリに対する書き込み検出を行う書き込み検出手段を備えた請求項１に記載の情報処理装置。
【請求項５】
書き込み検出ステータスを不揮発メモリに保持する請求項１に記載の情報処理装置。
【請求項６】
書き込み検出ステータスをクリアする請求項１に記載の情報処理装置。
【請求項７】
データの改ざん検出対象の領域とこの領域のハッシュ値の書き込みを行う領域とを有する不揮発性メモリを備え、
前記データから前記ハッシュ値を計算する計算し、
このハッシュ値を前記ハッシュ値を書き込む領域に保存する情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、特に不揮発性メモリの変更・改ざん検出を高速化する情報処理装置及び情報処理方法に関する。
【背景技術】
【０００２】
改ざん検出の対象となるデータのハッシュ値を毎回計算し、事前に(前回)計算して不揮発性メモリに保持しておいたハッシュ値と比較することで改ざん検出を行っている技術がある（例えば、特許文献１参照。）。だがこの先行技術には2つの課題がある。
【０００３】
1つは、改ざん検出対象のデータのハッシュ値を計算する必要があり時間を要することである。またもう1つは、改ざん検出対象のデータを格納する不揮発性メモリとハッシュ値を格納する不揮発性メモリを別々に用意しなければならないことである。
【０００４】
改ざん検出対象のデータのハッシュ値の計算を可能な限り省略することが求められる。また、改ざん検出対象のデータを格納する不揮発性メモリにハッシュ値の格納できるようにすることへの要望があるが、かかる要望を実現するための手段は知られていない。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−１６０５４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の実施の形態は、情報処理装置等の改ざん検出対象のデータを格納するメモリにハッシュ値を格納する技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、実施形態によれば情報処理装置は、データの改ざん検出対象の領域とこの領域のハッシュ値の書き込みを行う領域とを有する不揮発性メモリと、前記データから前記ハッシュ値を計算する計算する計算手段と、このハッシュ値を前記ハッシュ値を書き込む領域に保存する保存手段とを備える。
【図面の簡単な説明】
【０００８】
【図１】本発明の一実施形態に係わる情報処理装置としてのパーソナルコンピュータ、および外部ディスプレイの概略構成の一例を示す斜視図。
【図２】同実施形態を示すシステム構成図。
【図３】同実施形態の概略動作図。
【図４】同実施形態の変更・改ざん検出の例を示すフローチャート。
【図５】同実施形態に用いられるトラストチェインを示す説明図。
【図６】実施形態に係わる情報処理装置のハードウェア構成例を示す図。
【発明を実施するための形態】
【０００９】
以下、実施形態を図１乃至図６を参照して説明する。
【００１０】
図１は、本発明の第１の実施形態に係わる情報処理装置１の代表例として、ノートブック型パーソナルコンピュータの外観を示す図である。
【００１１】
情報処理装置１は、薄型の長方形状をなす情報処理装置本体２とパネル部３とを備えて構成されている。情報処理装置本体２とパネル部３とはヒンジ部を介して開閉自在に構成されている。
【００１２】
情報処理装置本体２は、その筐体の上面に各種データを入力する他、情報処理装置１の各種操作を行うキーボード５や電源をオン・オフする電源スイッチ６等を備えている。また、情報処理装置本体２は、ＣＰＵ１０や主メモリ１２等の電子部品（図６参照）が実装されたシステム基板や、ＣＤ／ＤＶＤドライブ（光ディスクドライブ）３１やハードディスクドライブ３２等の外部記憶装置を内蔵している他、ＵＳＢストレージ２１等のＵＳＢデバイスが接続可能となっている。
【００１３】
パネル部３は、その内側の開口部に表示器４を備えており、各種の情報や画像が表示される。
【００１４】
図６は、情報処理装置１のハードウェア構成の一例を示すブロック図である。情報処理装置１は、システム全体の制御を行うＣＰＵ１０を備えており、ＣＰＵ１０はホストハブ１１、およびＩ／Ｏハブ１５を介して各種の内部構成品とデータの授受を行っている。
【００１５】
情報処理装置１が備える内部構成品としては、プログラムやデータを一時的に記憶しＣＰＵ１０のワークエリアとして機能する主メモリ１２、ＢＩＯＳを記憶するＢＩＯＳＲＯＭ１６、所要のデータを保存する不揮発性メモリ１４がある。
【００１６】
また、Ｉ／Ｏハブ１５には、各種のＵＳＢデバイスを制御するＵＳＢホストコントローラ２０や、ＰＣＩデバイスやＩＤＥデバイスを制御するＰＣＩ／ＩＤＥコントローラ３０が接続されている。ＵＳＢホストコントローラ２０には、フラッシュメモリ等を内蔵するＵＳＢストレージ２１やマウス２２等が接続されている。一方、ＰＣＩ／ＩＤＥコントローラ３０には、ＣＤやＤＶＤ等の光ディスクに対して読み出しや書き込みを行なう光ディスクドライブ３１やハードディスクドライブ（ＨＤＤ）３２が接続されている。
【００１７】
また、Ｉ／Ｏハブ１５には組み込み型のプロセッサとしてＥＣ／ＫＢＣ（Embedded  Controller／KeyBoard  Controller）４０も接続されており、ＥＣ／ＫＢＣ４０にはさらにキーボード５や電源スイッチ６が接続されている。
【００１８】
なお、ＵＳＢホストコントローラ２０とＰＣＩ／ＩＤＥコントローラ３０とを、Ｉ／Ｏハブ１５の内部構成とする形態でもよい。
【００１９】
情報処理装置１は、ソフトウェアとして、システムファームウェアであるＢＩＯＳ（バイオス）１００と、ＯＳ（オペレーティングシステム）２００を備えている。
【００２０】
ＢＩＯＳ１００は、情報処理装置１にファームウェアとして組み込まれているソフトウェアであり、情報処理装置１の起動時に最初に立ち上がるソフトウェアである。ＢＩＯＳＲＯＭ１６に格納されており、通常の操作では取り外す（アンインストール）ことができない形態となっている。ＢＩＯＳＲＯＭ１６から読み出され、ＣＰＵ１０によって実行される。
【００２１】
一方、ＯＳ２００は、各種のアプリケーションソフトウェアと共にＨＤＤ３２の磁気ディスクに記憶されており、ＢＩＯＳ１００によって起動され、起動後はＣＰＵ１０によって実行される。ＯＳ２００には、各種のユーティリティソフトウェア（以下、単にユーティリティという）や各種のデバイスを制御するドライバソフトウェア（以下、単にドライバという）が含まれている。
【００２２】
次に、図２の機能ブロック図を参照して、本コンピュータ（情報処理装置１の関連機能）のシステム構成の一例について説明する。
【００２３】
本コンピュータは、ＣＰＵ１０２、第１の記憶装置としてのＢＩＯＳ−ＲＯＭ１０８、他にメインメモリ（第２の記憶装置）としてのＲＡＭ１１４、不揮発性メモリ１１６（図示せぬ後述のコントローラ込み）、ハードディスクドライブ（ＨＤＤ）１２６等を備えている。ＣＰＵ１０２は本コンピュータの動作を制御するために設けられたプロセッサであり、ハードディスクドライブ（ＨＤＤ）１２６からメインメモリ１１４にロードされる、オペレーティングシステム（ＯＳ）および各種アプリケーションプログラムを実行する。
【００２４】
ＣＰＵ１０２はＣＰＵ１０に相当している。また、ＢＩＯＳ−ＲＯＭ１０８はＢＩＯＳＲＯＭ１６に、メインメモリのＲＡＭ１１４は主メモリ１２に、不揮発性メモリ１１６は不揮発性メモリ１に相当している。また、ハードディスクドライブ（ＨＤＤ）１２６はハードディスクドライブ（ＨＤＤ）３２に相当している。
【００２５】
本コンピュータのBUS 上には、ＣＰＵ１０２, メモリ１１４、不揮発性メモリ１１６に加え、電源制御ユニット１１２などが接続されている。このＢＵＳは機能的（仮想的）な接続を表現していて、実際は構成要素によりホストハブ１１やＩ／Ｏハブ１５といったものを介在している。
【００２６】
システム起動時に、Storage 上のプログラムを、ＣＰＵ１０２がメモリ１１４にロードして実行するよう構成されている。電源オフ時には、ＣＰＵ１０２が電源制御ユニット１１２を制御し、システムの電源を落とす。また、電源オフ時には、メモリ１１４は、このメモリの内容を保持することができる。
【００２７】
ＢＩＯＳ−ＲＯＭの１０８は、例えばメモリ１１４で動作中のＯＳ，アプリに関係する不揮発性メモリ１１６上のアドレス、サイズ、ハッシュ値を入力し、ハッシュ値を出力する。不揮発性メモリ１１６はＢＩＯＳ−ＲＯＭの１０８を兼ねても良い。
【００２８】
図３にＢＩＯＳ−ＲＯＭの１０８ と、不揮発性メモリ１１６の関係について示す。本実施形態では、例えばソフトウェアは、OS、アプリ 1、アプリ 2 の 3 つに分割されており、それぞれ、使用するメモリ領域（改ざん検出対象の領域）も物理的に分割されている。CPU１０２ は、それぞれ分割されたメモリ領域のアドレス、および、サイズを、ＢＩＯＳ−ＲＯＭの１０８ に入力値として渡しＢＩＯＳ１００に不揮発性メモリー１１６の改ざん検出を行わせ、出力として、そのメモリ領域のハッシュ値を（書き込み監視対象の範囲内から）受け取る。
【００２９】
不揮発性メモリー１１６を複数のArea(例えばArea1, Area2, Area3, …)に分けそれぞれ改ざん検出対象とする場合、
不揮発性メモリー１１６の例えば、Area1のData領域に変更・改ざん検出対象となるデータ(或いはコード)が格納されている。Area２以下も同様である。
【００３０】
図４は、同実施形態の変更・改ざん検出の例を示すＢＩＯＳ−ＲＯＭの１０８主体の処理のフローチャートである。この図４を用いて不揮発性メモリの変更・改ざん検出方法について説明する。なお図４において、グレーで示した部分は既存の処理(既存技術)である。
【００３１】
まず、不揮発性メモリに対する書き込みを検出するハードウェア(新規)を用意する。書き込み検出ハードウェア１１８は、書き込み検出をする範囲(開始アドレス、終了アドレス等)と書き込みを検出したことを示す「書き込み検出ステータス」を持つ。書き込み検出ステータスは、不定状態、書き込み検出状態、書き込み未検出状態の3つの状態をとる。書き込み検出スタータスは不揮発であり、例えばバッテリーにより保持される。書き込み検出スタータスの初期値は不定状態である。前出のバッテリーが切れた場合は、書き込み検出ステータスは不定状態に戻る。ステップＳ１０１：  不揮発性メモリ１１６のコントローラに書き込み検出する範囲(開始アドレス、終了アドレス等)を設定させ、コントローラによる書き込み検出を有効にする。即ち、不揮発性メモリー１１６のArea1の全体(つまりData領域+Hash値格納領域)を書き込み検出対象に設定する。
【００３２】
これにより、Area1のData領域、Hash値格納領域のいずれに対する書き込みも検出可能となる(Data領域が改ざんされることと、Data領域のHash値と異なる値がHash値格納領域に格納されることの2つを同時に監視(検出)することができる。) 。
【００３３】
ステップＳ１０２：  書き込み検出ステータスを読み出し、書き込み未検出状態であるか否かを確認する。書き込み未検出状態であれば、ステップＳ１０６に進む。それ以外(不定状態、書き込み検出状態)であれば、ステップＳ１０３に進む。
【００３４】
ステップＳ１０３：  書き込み検出範囲に含まれる不揮発性メモリ１１６のハッシュ値を計算する。複数のハッシュアルゴリズム(例えば、SHA(Secure Hash Algorithm)-1(R), SHA-256(R))を用いる場合は、それぞれのハッシュ値を計算してもよい。不揮発性メモリー１１６の例えばArea1のData領域のHash値を計算する。
【００３５】
ステップＳ１０４：  ステップＳ１０３で計算したハッシュ値を不揮発性メモリ１１６の例えばArea1のHash値格納領域に保存する。このとき、書き込み検出ステータスは書き込み検出状態となる。ハッシュ計算する対象が書き込み検出範囲に複数存在する場合はステップＳ１０３〜１０４を複数回実施しても構わない。
【００３６】
ステップＳ１０５：  書き込み検出スタータスをクリア(書き込み未検出に設定)する。
【００３７】
ステップＳ１０６：  書き込み検出に関わるハードウェアをロックダウンする。つまり、書き込み検出をする範囲を変更したり、書き込み検出ステータスをクリアしたりすることを禁止する。ロックダウンは、不揮発性メモリのコントローラがリセットされるまで継続される (書き込み検出ステータスについては、不揮発であり不揮発性メモリのコントローラがリセットされても保持される点が重要である。) 。
【００３８】
ステップＳ１０７：  ステップＳ１０４〜１０４により保存されたハッシュ値を読み出す。
【００３９】
ステップＳ１０８：  ハッシュ値(例えばSHA-(R)1)をTPM(Trusted Platform Module) (R)に記録(Extend)する。本処理は、必要に応じて実施すれば良い。
【００４０】
ステップＳ１０９：  ハッシュ値(例えばSHA-256(R))を用いてデジタル署名検証を行う。本処理も、必要に応じて実施すれば良い。
【００４１】
なお、変更・改ざん検出する対象が書き込み検出範囲に複数存在する場合はステップＳ１０７〜１０９を複数回実施しても構わない。
【００４２】
ここで上記の処理のうち、ステップＳ１０８等について補足する。まず、TPM(R) はTCG(Trusted Computing Group)で使用の標準化が進められているセキュリティチップである。
【００４３】
そしてこのセキュリティチップには、ソフトウェアの完全性(Integrity)を記録するためにPlatform Configuration Registers (PCR)と呼ばれる領域を持ち，PCR は電源投入時にのみリセット可能で，PCR への書き込みは Extend と呼ばれる特殊な命令でのみ可能である。
【００４４】
Extend では 一般化した表現ではPCR = HASH(PCR + Digest) という操作が本レジスタに対して行われる。したがって，起動時から記録したハッシュ値の畳み込み値が PCR であり、この PCR 値を任意の値に操作することは困難である．これが、TPM を使ったソフトウェアの完全性記録と保護の基本的な仕組みである。
【００４５】
PCR は 16 個もしくは 24 個あり，BIOS と仮想化でのPCR の割り当ては TCG により定められている。PCR8(PCR(8))以降がFlexible use に割り当てられている。各デバイスやファイルは起動時に計測され、その例えばSHA1(SHA-1) digestをTPM(R)のPCRに “Extend”により記録する。即ち、 PCR(i) = SHA1(PCR(i) +Digest)である。TPM(R)は後述のCRTMと共に、ハッシュ保持 HW１１０の位置づけである。
【００４６】
上記処理のニーズとしては、PC業界ではセキュリティーに対するニーズが日々高まっており、デジタル署名検証をしながらシステムを起動する必要に迫られている。一方で、PCを高速起動するニーズもあり、デジタル署名検証を高速化する必要性がある。本発明は、デジタル署名検証の過程で必要となるハッシュ値を安全にキャッシュするものであり、ニーズがある。
【００４７】
コスト的な観点としては、チップセットベンダーに働きかけることで不揮発性メモリの書き込み検出ハードウェアを実装する。コスト増はほぼないと想定される。
【００４８】
（実施形態の補足：機能）
（１）不揮発性メモリの領域のうち、改ざん検出対象の領域について、そのハッシュ値を同領域の書き込み監視対象の範囲内に格納すること。
【００４９】
（２）書き込み未検出状態では、改ざん検出対象の領域のハッシュ値を(計算せずに直接)不揮発性メモリから取得すること。また、このハッシュ値を用いて不揮発メモリの変更・改ざん検出等を行うこと。
【００５０】
（３）不揮発性メモリに対する書き込み検出機能を持つシステムであること。このとき、書き込み監視対象を範囲指定できること。
【００５１】
（４）書き込み検出ステータスを不揮発性メモリに保持するシステムであること。
【００５２】
（５）書き込み検出ステータスをクリア(書き込み未検出状態に上書き設定)できるシステムであること。また、クリアを禁止しその状態でロックダウン(次のPower On Resetまでロック状態を保持)できること。
【００５３】
実施形態の効果として、Chain Of Trust やデジタル署名検証といったセキュリティーを実現しつつ、(不揮発性メモリに対する)ハッシュ値計算に要する時間を省く(起動を高速化する) ことが可能となる。
【００５４】
図５は、実施形態に用いられるトラストチェイン（Chain Of Trust）を示す説明図である。
【００５５】
TPM にソフトウェアの完全性情報を記録する方法は Trusted Boot  と呼ばれる。最初に起動するコー ド は Core Root Of Trust Measurement （CRTM）と呼ばれ、物理的に保護されており Root of Trust の一部である。
【００５６】
CRTM は自身と次に起動する BIOS のコードの計測と、TPM(R) への記録を行い、BIOS へ制御を移す。このように、コードを計測し、TPM(R) へ記録してから起動するステップを繰り返すことで、CRTM  から始まる信頼の鎖をソフトウェア全体につなげる事が可能となり、結果としてハードウェア由来の信頼性をソフトウェアに与えることが可能となる。PC  で動作する Linux(登録商標)  でTrusted Boot を利用するためには、まず、BIOS がTCG(Trusted Computing Group) 仕様に準拠していることが必要である。
【００５７】
なお、この発明は上記実施形態に限定されるものではなく、この外その要旨を逸脱しない範囲で種々変形して実施することができる。
【００５８】
また、上記した実施の形態に開示されている複数の構成要素を適宜に組み合わせることにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素から幾つかの構成要素を削除しても良いものである。さらに、異なる実施の形態に係わる構成要素を適宜組み合わせても良いものである。
【符号の説明】
【００５９】
１  情報処理装置
２  情報処理装置本体
３  パネル部
４  表示器
５  キーボード
６  電源スイッチ
１０  ＣＰＵ
１１  ホストハブ
１２  主メモリ
１３  グラフィックコントローラ
１４  不揮発性メモリ
１５  Ｉ／Ｏハブ
１６  ＢＩＯＳＲＯＭ
２０  ＵＳＢホストコントローラ
２１  ＵＳＢストレージ
２２  マウス
３０  ＰＣＩ／ＩＤＥコントローラ
３１  光ディスクドライブ
３２  ハードディスクドライブ（ＨＤＤ）
４０  ＥＣ／ＫＢＣ（Embedded  Controller／KeyBoard  Controller）
１００  ＢＩＯＳ（バイオス）
２００  ＯＳ（オペレーティングシステム）
【図１】
2013257711.tif 000003
【図２】
2013257711.tif 000004
【図３】
2013257711.tif 000005
【図４】
2013257711.tif 000006
【図５】
2013257711.tif 000007
【図６】
2013257711.tif 000008