(57)【要約】【課題】起動時間を短縮することができる情報処理装置を提供する。【解決手段】起動対象のプログラムと暗号データとを記憶するディスク３と、起動時に実行され、プログラムを起動するＢＩＯＳ１０と、ＢＩＯＳ１０に低速バスで接続され、プログラムのハッシュ値を記憶可能なレジスタを有するＴＰＭ７と、ＢＩＯＳ１０によってプログラムとして実行されるＬｏａｄｅｒ１１、Ｋｅｒｎｅｌ１２、Ｒｏｏｔｆｓ１３と、プログラムのハッシュ値とＢＩＯＳ１０のハッシュ値とを予め記憶するＢｌｏｂ４３と、を備え、ＢＩＯＳ１０は、ＢＩＯＳ１０のハッシュ値とプログラムのハッシュ値を算出してレジスタに保存するハッシュ値算出部１０ａを備え、ＴＰＭ７は、保存されたハッシュ値とＢｌｏｂ４３に記憶されたハッシュ値とを比較して、両者が一致する場合に、Ｂｌｏｂ４３内のデータを復号化する。【選択図】図１
2012234580.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置であって、
起動対象のプログラムと、暗号化データとを記憶する第１記憶部と、
前記情報処理装置の起動時に実行され、前記起動対象のプログラムを起動する起動部と、
前記起動部に低速バスで接続され、前記起動対象のプログラムのハッシュ値を記憶可能なレジスタを有するセキュリティ部と、
前記起動部によって前記プログラムとして実行される処理部と、
前記起動対象のプログラムのハッシュ値と前記起動部のハッシュ値とを予め記憶する第２記憶部と、を備え、
前記起動部は、前記起動部のハッシュ値と前記起動対象のプログラムのハッシュ値を算出して前記レジスタに保存するハッシュ値算出処理を実行する第１ハッシュ値算出部を備え、
前記セキュリティ部は、前記レジスタに保存されたハッシュ値と前記第２記憶部に記憶された前記ハッシュ値とを比較して、両者が一致する場合に、前記暗号化データを復号化することを特徴とする情報処理装置。
【請求項２】
前記セキュリティ部は、さらに前記第１ハッシュ値算出部の正当性を検証し、
前記第１ハッシュ値算出部は、正当性が検証された場合以降に、前記ハッシュ値算出処理を実行することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記処理部は、前記起動対象のプログラムのハッシュ値を算出し、算出した前記ハッシュ値を前記レジスタに保存する第２ハッシュ値算出部を備えたことを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記第１ハッシュ値算出部は、前記起動部の一部のハッシュ値を算出することを特徴とする請求項１〜３のいずれか一つに記載の情報処理装置。
【請求項５】
前記セキュリティ部は、改ざん不可能なセキュアデバイスであること、
を特徴とする請求項１に記載の情報処理装置。
【請求項６】
情報処理装置で実行される正当性検証方法であって、
前記情報処理装置は、起動対象のプログラムと、暗号化データとを記憶する第１記憶部と、プログラムを起動する起動部と、前記起動部に低速バスで接続され、起動対象のプログラムのハッシュ値を記憶可能なレジスタを有するセキュリティ部と、前記起動対象のプログラムのハッシュ値と起動部のハッシュ値とを予め記憶する第２記憶部と、を備え、
前記起動部が、前記情報処理装置の起動時に、前記起動対象のプログラムを起動する起動ステップと、
前記起動部が、処理部を前記プログラムとして実行する実行ステップと、
前記起動部が、前記起動部のハッシュ値と前記起動対象のプログラムのハッシュ値を算出して前記レジスタに保存するハッシュ値算出処理を実行するハッシュ値算出ステップと、
前記セキュリティ部が、前記レジスタに保存されたハッシュ値と前記第２記憶部に記憶された前記ハッシュ値とを比較して、両者が一致する場合に、前記暗号化データを復号化する復号化ステップと、
を含むことを特徴とする正当性検証方法。
【請求項７】
正当性検証方法をコンピュータに実行させる正当性検証プログラムであって、
前記コンピュータは、起動対象のプログラムと、暗号化データとを記憶する第１記憶部と、プログラムを起動する起動部と、前記起動部に低速バスで接続され、起動対象のプログラムのハッシュ値を記憶可能なレジスタを有するセキュリティ部と、前記起動対象のプログラムのハッシュ値と起動部のハッシュ値とを予め記憶する第２記憶部と、を備え、
前記起動部が、前記情報処理装置の起動時に、前記起動対象のプログラムを起動する起動ステップと、
前記起動部が、処理部を前記プログラムとして実行する実行ステップと、
前記起動部が、前記起動部のハッシュ値と前記起動対象のプログラムのハッシュ値を算出して前記レジスタに保存するハッシュ値算出処理を実行するハッシュ値算出ステップと、
前記セキュリティ部が、前記レジスタに保存されたハッシュ値と前記第２記憶部に記憶された前記ハッシュ値とを比較して、両者が一致する場合に、前記暗号化データを復号化する復号化ステップと、
を前記コンピュータに実行させる正当性検証プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、起動対象のプログラムの正当性を検証する情報処理装置、正当性検証方法および正当性検証プログラムに関する。
【背景技術】
【０００２】
近年、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）などの情報処理装置ではＴＰＭ（Ｔｒｕｓｔｅｄ  Ｐｌａｔｆｏｒｍ  Ｍｏｄｕｌｅ）と呼ばれる半導体チップ（ＩＣ）を搭載している。このＴＰＭは、ハードウェア耐タンパ性をもつセキュリティチップであり、ハッシュ値を格納するレジスタと、例えばＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｔｅｍ）からの要求により起動対象のプログラムのハッシュ値を計算して上記レジスタに保存するハッシュ値計算機能、プログラムの正当性検証機能、電子鍵や電子認証などの機能を有しており、これらの機能を用いて情報処理装置のセキュリティの向上を図っている（例えば、特許文献１参照）。
【０００３】
一方、複写機等の画像形成装置でも、昨今の市場から要望により、ＴＰＭを用いて、ＰＣなどの情報処理装置と同様にセキュリティを高めるための仕組みを採用している。ＴＰＭを用いる利点としては、ハードウェアやＢＩＯＳ、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）、アプリケーションを含めたソフトウェアだけではなくハードウェアの不正な改竄を検出することができ、より高レベルなセキュリティ機能を備えたシステムを提供する事ができる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記のようにＴＰＭを用いることによって、高レベルなセキュリティを提供することが可能であるが、ＴＰＭは一般的に低速なバスに接続される。ＴＰＭチップが提供する機能の一つにハッシュ値を計算するためのレジスタと計算したハッシュ値を複数格納可能なレジスタを提供しているが、上記のようにＴＰＭチップは、低速なバスに接続されているため大量のデータを計算し、ハッシュ値を算出すると時間が掛かってしまう。この計算は、情報処理装置の起動時に行われるため、起動時間が遅延するという問題がある。
【０００５】
本発明は、上記に鑑みてなされたものであって、情報処理装置のセキュリティの向上を図りつつ、起動時間を短縮することができる情報処理装置、正当性検証方法および正当性検証プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するために、本発明にかかる情報処理装置は、起動対象のプログラムと、暗号化データとを記憶する第１記憶部と、前記情報処理装置の起動時に実行され、前記起動対象のプログラムを起動する起動部と、前記起動部に低速バスで接続され、前記起動対象のプログラムのハッシュ値を記憶可能なレジスタを有するセキュリティ部と、前記起動部によって前記プログラムとして実行される処理部と、前記起動対象のプログラムのハッシュ値と前記起動部のハッシュ値とを予め記憶する第２記憶部と、を備え、前記起動部は、前記起動部のハッシュ値と前記起動対象のプログラムのハッシュ値を算出して前記レジスタに保存するハッシュ値算出処理を実行する第１ハッシュ値算出部を備え、前記セキュリティ部は、前記レジスタに保存されたハッシュ値と前記第２記憶部に記憶された前記ハッシュ値とを比較して、両者が一致する場合に、前記暗号化データを復号化することを特徴とする。
【０００７】
また、本発明は、上記情報処理装置で実行される正当性検証方法および正当性検証プログラムである。
【発明の効果】
【０００８】
本発明によれば、起動部が起動部のハッシュ値と起動対象のプログラムのハッシュ値を算出して保存することで、起動部と低速バスで接続されたセキュリティ部とのデータ転送、セキュリティ部によるハッシュ値計算を行う必要がなくなり、情報処理装置のセキュリティの向上を図りつつ、起動時間を短縮することができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】第１の実施の形態にかかる画像形成装置のブロック図である。
【図２】ハッシュ値計算処理およびハッシュ値格納処理の概要を示す模式図である。
【図３】ＴＰＭを用いた情報の復号を表す模式図である。
【図４】従来の方法によるＴＰＭを用いた起動シーケンスを表す図である。
【図５】従来の方法によるＴＰＭを用いた起動シーケンスを表す図である。
【図６】第１の実施の形態による解決方法の概要を示す図である。
【図７】第１の実施の形態における起動処理の全体の流れを示すシーケンス図である。
【図８】第１の実施の形態における起動処理の全体の流れを示すシーケンス図である。
【図９】第２の実施の形態にかかる画像形成装置のブロック図である。
【図１０】第２の実施の形態による解決方法の概要を示す図である。
【図１１】第２の実施の形態における起動処理の全体の流れを示すシーケンス図である。
【図１２】第３の実施の形態にかかる画像形成装置のブロック図である。
【図１３】ハッシュ値計算の処理対象とするモジュールの一例を示す図である。
【図１４】第４の実施の形態にかかる画像形成装置のブロック図である。
【図１５】第４の実施の形態による解決方法の概要を示す図である。
【図１６】第４の実施の形態における起動処理の全体の流れを示すシーケンス図である。
【図１７】第４の実施の形態における起動処理の全体の流れを示すシーケンス図である。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照して、この発明にかかる情報処理装置、正当性検証方法およびプログラムの最良な実施の形態を詳細に説明する。以下では、セキュリティを高めるためにＴＰＭを備えた画像形成装置として情報処理装置を実現した例について説明する。なお、適用可能な装置は画像形成装置に限られず、ＴＰＭを利用する装置であればあらゆる装置に適用できる。
【００１１】
（第１の実施の形態）
第１の実施の形態にかかる画像形成装置は、ＢＩＯＳ内部にＴＰＭと同等のハッシュ計算機能を搭載し、その機能を使用することにより、ハッシュ値計算の処理時間を短縮するものである。
【００１２】
図１は、第１の実施の形態にかかる画像形成装置のブロック図である。図１に示すように、第１の実施の形態の画像形成装置は、ＣＰＵ１、ＢＩＯＳ  ＲＯＭ２、ディスク３、ＮＶ（不揮発性）ＲＡＭ４、主記憶装置５、ＴＰＭ７及びハードディスクドライブ（ＨＤＤ）８を有しているハードウェア構成である。なお、ＣＰＵ１、ＢＩＯＳ  ＲＯＭ２、ディスク３、ＮＶＲＡＭ４、主記憶装置５、ＴＰＭ７及びＨＤＤ８は、バス６で接続されている。なお、第１の実施の形態の画像形成装置は、操作部や、画像形成に用いる各種エンジンなどを備えるが、同図では省略している。
【００１３】
ＢＩＯＳ  ＲＯＭ２は、プログラムであるＢＩＯＳ１０を格納している。また、ディスク３は、プログラムであるローダ（Loader）１１、カーネル（Kernel）１２、ルートファイルシステム（Rootfs）１３を格納している。また、ディスク３は、Ｂｌｏｂ４３を格納している。なお、ディスク３は、ＳＤ（Secure  Digital）カード、ＵＳＢ  Ｆｌａｓｈメモリ、ＮＯＲ  Ｆｌａｓｈメモリなどの従来から用いられているあらゆる記憶媒体により構成することができる。また、ＮＶＲＡＭ４は使用者の使用する平文データ１４、および暗号データ１５を格納している。
【００１４】
ＢＩＯＳ１０は、ＢＩＯＳ１０、ローダ１１、カーネル１２、およびルートファイルシステム１３などのプログラムのハッシュ値を算出し、ＴＰＭ７内のレジスタであるＰＣＲ（Platform  Configuration  Register）１〜ＰＣＲ４に保存するハッシュ値算出処理を実行するハッシュ値算出部１０ａを備えている。
【００１５】
ルートファイルシステム１３は、ディスク３に格納されている初期化部２１、およびシステム制御部２３を管理している。なお、ＢＩＯＳ１０、ローダ１１、カーネル１２、ルートファイルシステム１３等のプログラムは、ＣＰＵ１により主記憶装置５へ読み込まれて実行される。以下の説明では説明の便宜上、ＢＩＯＳ１０、ローダ１１、カーネル１２、ルートファイルシステム１３等のプログラムを処理主体として説明する。
【００１６】
Ｂｌｏｂ４３は暗号化された情報である内容物としてＮＶＲＡＭ４の暗号鍵５１を有している。また、Ｂｌｏｂ４３は、ＴＰＭ７内の各レジスタに対応する領域である「ＰＣＲ１」〜「ＰＣＲ４」にＢＩＯＳ１０、ローダ１１、カーネル１２及びルートファイルシステム１３から計算されるハッシュ値を格納している。
【００１７】
ＨＤＤ８は暗号データ１６を格納している。
【００１８】
初期化部２１は、画像形成装置の電源を投入後、カーネル１２によって最初に実行され、システム制御部２３や他のアプリケーション（図示せず）などを起動する初期化処理を実行するプログラムである。システム制御部２３は、画像形成にかかる他のアプリケーションの管理、操作部（図示せず）の制御、およびリソース管理などの画像形成装置の制御を行うプログラムである。
【００１９】
次に、ＴＰＭ７の機能の概要について図２を用いて説明する。図２は、ＴＭＰ７によるハッシュ値計算処理およびハッシュ値格納処理の概要を示す模式図である。
【００２０】
次に、ＴＰＭ７の仕組みについて簡単に説明する。ここでは、ローダ１１がカーネル１２を起動する例を説明する。
【００２１】
図２はＴＰＭ７にハッシュ値を格納する処理手順を表した模式図である。ステップＳ１１に進み、ローダ１１がディスク３から主記憶装置５へカーネル１２を読み込む。ステップＳ１２に進み、ＴＰＭ７はカーネル１２の例えば原文から固定長の疑似乱数を生成する演算手法によって計算されるハッシュ値をＰＣＲへ格納する。例えば図２では、カーネル１２のハッシュ値「０ｘ３ａ」が「ＰＣＲ３」へ格納されている。そして、ステップＳ１３に進み、ローダ１１はカーネル１２を起動する。
【００２２】
このように、ＴＰＭ７はＢＩＯＳ１０、ローダ１１、カーネル１２、ルートファイルシステム１３等のプログラムを起動する際、そのプログラムから計算されるハッシュ値をＰＣＲへ格納する。
【００２３】
図３はＴＰＭ７を用いた情報の復号を表す模式図である。ＴＰＭ７にはモジュールを起動する際に４つのハッシュ値が「ＰＣＲ１」〜「ＰＣＲ４」へ格納されている。ＴＰＭ７を用いた情報の暗号化では「ＰＣＲ１」〜「ＰＣＲ４」の内、少なくとも１つのＰＣＲが設定されている、暗号化された情報である内容物を含むＢｌｏｂ  Ａ４１及びＢｌｏｂ  Ｂ４２が利用される。
【００２４】
Ｂｌｏｂ  Ａ４１は「ＰＣＲ３」に「０ｘ３ａ」が格納されている。Ｂｌｏｂ  Ｂ４２は「ＰＣＲ１」〜「ＰＣＲ４」に「０ｘｅ９」、「０ｘ１２」、「０ｘ３ｂ」、「０ｘ０６」が格納されている。また、ＴＰＭ７は「ＰＣＲ１」〜「ＰＣＲ４」に「０ｘｅ９」、「０ｘ１２」、「０ｘ３ａ」、「０ｘ０６」が格納されている。
【００２５】
Ｂｌｏｂ  Ａ４１の場合、Ｂｌｏｂ  Ａ４１の「ＰＣＲ３」及びＴＰＭ７の「ＰＣＲ３」に同じハッシュ値が格納されているため、ＴＰＭ７はＢｌｏｂ  Ａ４１からの内容物の取り出しを許可する。また、Ｂｌｏｂ  Ｂ４２の場合、Ｂｌｏｂ  Ｂ４２の「ＰＣＲ３」及びＴＰＭ７の「ＰＣＲ３」に異なるハッシュ値が格納されているため、ＴＰＭ７はＢｌｏｂ  Ｂ４２からの内容物の取り出しを許可しない。なお、ＴＰＭ７はＢｌｏｂ  Ａ４１の「ＰＣＲ１」、「ＰＣＲ２」及び「ＰＣＲ４」のように「設定なし」が格納されている場合、そのＰＣＲを内容物の取り出しの許可又は不許可の判定に利用しない。
【００２６】
次に、従来の方法によるＴＰＭ７を用いた起動シーケンスについて図４および図５を用いて説明する。なお、図４および図５では、図１のＢＩＯＳ１０の代わりに、従来の方法と同様の機能を有するＢＩＯＳ４１０が備えられているものとして説明する。
【００２７】
まず、ＢＩＯＳ４１０は、ＢＩＯＳ４１０のハッシュ値の計算をＴＰＭ７に対して要求する（ステップＳ２１）。ＴＰＭ７は、ＢＩＯＳ４１０のハッシュ値を計算し（ステップＳ２２）、ＢＩＯＳ４１０に返す（ステップＳ２３）。次に、ＢＩＯＳ４１０は、ハッシュ値をＴＰＭ７のＢＩＯＳ４１０に対応するレジスタ（ＰＣＲ１）に格納する（ステップＳ２４）。
【００２８】
次に、ＢＩＯＳ４１０は、ディスク３から主記憶装置５へローダ１１を読み込む（ステップＳ２５）。そして、ＢＩＯＳ４１０は、ローダ１１のハッシュ値の計算をＴＰＭ７に対して要求する（ステップＳ２６）。ＴＰＭ７は、ローダ１１のハッシュ値を計算し（ステップＳ２７）、ＢＩＯＳ４１０に返す（ステップＳ２８）。次に、ＢＩＯＳ４１０は、ハッシュ値をＴＰＭ７のローダ１１に対応するレジスタ（ＰＣＲ２）に格納する（ステップＳ２９）。
【００２９】
次に、ＢＩＯＳ４１０は、ローダ１１を起動する（ステップＳ３０）。起動されたローダ１１は、ディスク３から主記憶装置５へカーネル１２を読み込む（ステップＳ３１）。次に、ローダ１１は、ＢＩＯＳ４１０が提供する所定のＩＮＴコールを実行する（ステップＳ３２）。このＩＮＴコールが呼ばれると、ＢＩＯＳ４１０は、ＴＰＭ７を利用して、渡された所定データのハッシュ値を算出し、呼び出し元に算出した値を返すように構成されている。
【００３０】
ＩＮＴコールを受けて、ＢＩＯＳ４１０は、カーネル１２のハッシュ値の計算をＴＰＭ７に対して要求する（ステップＳ３３）。ＴＰＭ７は、カーネル１２のハッシュ値を計算し（ステップＳ３４）、ＢＩＯＳ４１０に返す（ステップＳ３５）。ＢＩＯＳ４１０は、ハッシュ値を呼び出し元であるローダ１１に返す（ステップＳ３６）。次に、ローダ１１は、ハッシュ値をＴＰＭ７のカーネル１２に対応するレジスタ（ＰＣＲ３）に格納する（ステップＳ３７）。
【００３１】
次に、ローダ１１は、ディスク３から主記憶装置５へルートファイルシステム１３を読み込む（ステップＳ３８）。次に、ローダ１１は、ＩＮＴコールによって、ルートファイルシステム１３のハッシュ値の計算をＢＩＯＳ４１０に要求する（ステップＳ３９）。
【００３２】
ＩＮＴコールを受けて、ＢＩＯＳ４１０は、ルートファイルシステム１３のハッシュ値の計算をＴＰＭ７に対して要求する（ステップＳ４０）。ＴＰＭ７は、ルートファイルシステム１３のハッシュ値を計算し（ステップＳ４１）、ＢＩＯＳ４１０に返す（ステップＳ４２）。ＢＩＯＳ４１０は、ハッシュ値を呼び出し元であるローダ１１に返す（ステップＳ４３）。次に、ローダ１１は、ハッシュ値をＴＰＭ７のルートファイルシステム１３に対応するレジスタ（ＰＣＲ４）に格納する（ステップＳ４４）。
【００３３】
このようにして、各プログラムのハッシュ値がＴＰＭ７の対応するＰＣＲに格納される。
【００３４】
次に、ローダ１１は、読込んだカーネル１２を起動する（ステップＳ４５）。なお、同図では省略しているが、ローダ１１は、読込んだルートファイルシステム１３も起動する。
【００３５】
さらに、カーネル１２は、ルートファイルシステム１３内の初期化部２１を起動する（ステップＳ４６）。起動された初期化部２１は、さらにシステム制御部２３を起動する（ステップＳ４７）。
【００３６】
システム制御部２３がＮＶＲＡＭ４内の暗号データを読み出す場合、Ｂｌｏｂ４３を復号化しＮＶＲＡＭ暗号鍵５１を取りだすことをＴＰＭ７に依頼する。依頼を受けたＴＰＭ７は、ＰＣＲに格納されているハッシュ値と、Ｂｌｏｂ４３のハッシュ値とが等しいか否かをチェックする（ステップＳ４８）。
【００３７】
システム制御部２３は、ハッシュ値が等しいと判断された場合にのみＢｌｏｂ４３からＮＶＲＡＭ暗号鍵５１を取得することができる（ステップＳ４９）。そして、システム制御部２３は、取得したＮＶＲＡＭ暗号鍵５１を利用することにより、ＮＶＲＡＭ４内のデータの読み書きを実行する（ステップＳ５０）。
【００３８】
ここで、従来の方法で生じる問題点と、第１の実施の形態による解決方法の概要について説明する。図６は、第１の実施の形態による解決方法の概要を示す図である。
【００３９】
図４および図５に示されるように、従来の方法では、起動するプログラムの個数と同じ回数だけ、ＢＩＯＳ４１０からＴＰＭ７への処理要求が送信される。また、上述のように、ＴＰＭ７は、一般的に低速なバスに接続されている。このため、プログラム数が増えることなどによりハッシュ計算を行うデータ数が増大すると、ＢＩＯＳ４１０とＴＰＭ７との間のデータ転送時間が増大し、結果としてハッシュ計算処理全体の処理時間が増大する。
【００４０】
そこで、第１の実施の形態では、図６に示すように、ＢＩＯＳ１０内にＴＰＭ７と同様のハッシュ計算機能を実行するハッシュ値算出部１０ａを搭載し、ハッシュ値算出部１０ａ内でハッシュ値を計算する。これにより、ＢＩＯＳ１０とＴＰＭ７との間でハッシュ値計算に必要なデータの転送が不要となり、ハッシュ値の計算時間を早くすることができる。
【００４１】
次に、このように構成された第１の実施の形態にかかる画像形成装置による起動処理について説明する。図７および図８は、第１の実施の形態における起動処理の全体の流れを示すシーケンス図である。
【００４２】
まず、ＢＩＯＳ１０のハッシュ値算出部１０ａが、ＢＩＯＳ１０のハッシュ値を計算する（ステップＳ５１）。次に、ＢＩＯＳ１０は、計算したハッシュ値をＴＰＭ７のＢＩＯＳ１０に対応するレジスタ（ＰＣＲ１）に格納する（ステップＳ５２）。
【００４３】
次に、ＢＩＯＳ１０は、ディスク３から主記憶装置５へローダ１１を読み込む（ステップＳ５３）。そして、ハッシュ値算出部１０ａが、ローダ１１のハッシュ値を計算する（ステップＳ５４）。次に、ＢＩＯＳ１０は、計算したハッシュ値をＴＰＭ７のローダ１１に対応するレジスタ（ＰＣＲ２）に格納する（ステップＳ５５）。
【００４４】
次に、ＢＩＯＳ１０は、ローダ１１を起動する（ステップＳ５６）。起動されたローダ１１は、ディスク３から主記憶装置５へカーネル１２を読み込む（ステップＳ５７）。次に、ローダ１１は、ＩＮＴコールによって、カーネル１２のハッシュ値の計算をＢＩＯＳ１０に要求する（ステップＳ５８）。
【００４５】
ＩＮＴコールを受けて、ハッシュ値算出部１０ａは、カーネル１２のハッシュ値を計算する（ステップＳ５９）。次に、ＢＩＯＳ１０は、計算したハッシュ値を呼び出し元であるローダ１１に返す（ステップＳ６０）。次に、ローダ１１は、ハッシュ値をＴＰＭ７のカーネル１２に対応するレジスタ（ＰＣＲ３）に格納する（ステップＳ６１）。
【００４６】
次に、ローダ１１は、ディスク３から主記憶装置５へルートファイルシステム１３を読み込む（ステップＳ６２）。次に、ローダ１１は、ＩＮＴコールによって、ルートファイルシステム１３のハッシュ値の計算をＢＩＯＳ１０に要求する（ステップＳ６３）。
【００４７】
ＩＮＴコールを受けて、ハッシュ値算出部１０ａは、ルートファイルシステム１３のハッシュ値を計算する（ステップＳ６４）。次に、ＢＩＯＳ１０は、計算したハッシュ値を呼び出し元であるローダ１１に返す（ステップＳ６５）。次に、ローダ１１は、ハッシュ値をＴＰＭ７のルートファイルシステム１３に対応するレジスタ（ＰＣＲ４）に格納する（ステップＳ６６）。
【００４８】
ステップＳ６７からステップＳ７２までは、従来のシーケンスを表す図５のステップＳ４５からステップＳ５０までと同様の処理なので、その説明を省略する。
【００４９】
図７および図８に示すように、第１の実施の形態にかかる画像形成装置では、ＢＩＯＳ１０内でハッシュ値を計算している。したがって、ＢＩＯＳ１０とＴＰＭ７との間でハッシュ値の計算のためにデータを転送する必要がない。これにより、ハッシュ値計算処理全体の処理時間を短くすることができ、その結果、起動時間を短縮することができる。
【００５０】
（第２の実施の形態）
第１の実施の形態では、ＢＩＯＳ内にハッシュ値計算機能を備えることにより、起動時間の短縮を実現していた。しかし、悪意ある第３者が、ＢＩＯＳ内のハッシュ値計算機能の部分を不正に変更した場合であっても、その不正な変更を検出することができない。そして、例えば、あるプログラムを変更しても変更前のプログラムと同一の正しいハッシュ値を返すようにハッシュ値計算機能を変更すれば、プログラムの変更も検出できなくなり、セキュリティが低下する。
【００５１】
第２の実施の形態にかかる画像形成装置は、ＢＩＯＳ内のハッシュ計算機能の正当性を検証し、検証された場合にのみ、ＢＩＯＳ内のハッシュ計算機能を利用可能とするものである。
【００５２】
図９は、第２の実施の形態にかかる画像形成装置のブロック図である。同図に示すように、第２の実施の形態の画像形成装置は、ＣＰＵ１、ＢＩＯＳ  ＲＯＭ２、ディスク３、ＮＶＲＡＭ４、主記憶装置５、ＴＰＭ７及びＨＤＤ８を備えている。
【００５３】
第２の実施の形態では、ＢＩＯＳ９１０の機能が第１の実施の形態と異なっている。その他の構成および機能は、第１の実施の形態にかかる画像形成装置の構成を表すブロック図である図１と同様であるので、同一符号を付し、ここでの説明は省略する。
【００５４】
ＢＩＯＳ９１０は、ハッシュ値算出部１０ａの正当性の検証をＴＰＭ７に依頼する機能が追加された点が、第１の実施の形態のＢＩＯＳ１０と異なっている。
【００５５】
ここで、第２の実施の形態による解決方法の概要について説明する。図１０は、第２の実施の形態による解決方法の概要を示す図である。
【００５６】
第２の実施の形態では、図１０に示すように、ＢＩＯＳ９１０が備えるハッシュ値算出部１０ａに対してのみ、ＴＰＭ７のハッシュ計算機能を用いて、その正当性の検証を行う。そして、正当性が検証された後は、ＢＩＯＳ９１０内のハッシュ計算機能であるハッシュ値算出部１０ａを利用して、他のプログラムのハッシュ値を計算する。これにより、起動時間の短縮と高いセキュリティレベルの維持を実現できる。
【００５７】
次に、このように構成された第２の実施の形態にかかる画像形成装置による起動処理について説明する。図１１は、第２の実施の形態における起動処理の全体の流れを示すシーケンス図である。
【００５８】
まず、ＢＩＯＳ９１０は、ハッシュ値算出部１０ａのハッシュ値の計算をＴＰＭ７に対して要求する（ステップＳ８１）。ＴＰＭ７は、ハッシュ値算出部１０ａのハッシュ値を計算し（ステップＳ８２）、ＢＩＯＳ９１０に返す（ステップＳ８３）。ＢＩＯＳ９１０は、ハッシュ値をＴＰＭ７のＢＩＯＳ９１０に対応するレジスタ（ＰＣＲ１）に格納する（ステップＳ８４）。
【００５９】
次に、ＢＩＯＳ９１０は、ハッシュ値算出部１０ａの正当性の検証をＴＰＭ７に要求する（ステップＳ８５）。ＴＰＭ７は、ハッシュ値算出部１０ａの正当性を検証し（ステップＳ８６）、検証結果をＢＩＯＳ９１０に返す（ステップＳ８７）。
【００６０】
正当性が検証された場合は、さらにローダ１１の読込みから処理を継続する。なお、正当性が検証されなかった場合は、画像形成装置の起動を中止してもよいし、従来の方法と同様にＴＰＭ７のハッシュ値計算機能を利用して処理を継続するように構成してもよい。
【００６１】
ステップＳ８８以降の処理は、第１の実施の形態の起動処理を表す図７および図８のステップＳ５３以降と同様の処理なので、その説明を省略する。
【００６２】
このように、第２の実施の形態にかかる画像形成装置では、ＢＩＯＳ内のハッシュ計算機能の正当性を検証し、検証された場合にのみ、ＢＩＯＳ内のハッシュ計算機能を利用可能とすることができる。これにより、ＢＩＯＳ内のハッシュ計算機能が不正に変更された場合でも変更を検出可能となり、セキュリティレベルを高めることができる。
【００６３】
（第３の実施の形態）
上述の実施の形態では、プログラム全体を対象としてハッシュ値を計算していた。しかし、プログラムの中には、プログラムの信頼性に影響のないモジュールが含まれている場合もある。そこで、第３の実施の形態にかかる画像形成装置は、プログラム内の必要なモジュールのみを対象としてハッシュ値を計算する。
【００６４】
図１２は、第３の実施の形態にかかる画像形成装置のブロック図である。同図に示すように、第３の実施の形態の画像形成装置は、ＣＰＵ１、ＢＩＯＳ  ＲＯＭ２、ディスク３、ＮＶＲＡＭ４、主記憶装置５、ＴＰＭ７及びＨＤＤ８を備えている。
【００６５】
第３の実施の形態では、ＢＩＯＳ１２１０内のハッシュ値算出部１２１０ａの機能が第１の実施の形態と異なっている。その他の構成および機能は、第１の実施の形態にかかる画像形成装置の構成を表すブロック図である図１と同様であるので、同一符号を付し、ここでの説明は省略する。
【００６６】
ハッシュ値算出部１２１０ａは、ＢＩＯＳ１２１０のハッシュ値を計算する場合に、ＢＩＯＳ１２１０内の予め定められたモジュールのみを対象としてハッシュ値を計算する。なお、ローダ１１およびカーネル１２などの他のプログラムに対しても、プログラム内の一部のモジュールのみを対象としてハッシュ値を計算するように構成してもよい。この場合、例えば、ハッシュ値算出部１２１０ａ内に、処理対象のモジュールを特定する特定情報を予め記憶しておき、ハッシュ値算出部１２１０ａは、記憶された特定情報を参照してハッシュ値を計算する。また、ハッシュ値計算機能の呼び出し元のプログラムから特定情報を受け取り、この特定情報を参照してハッシュ値を計算するように構成してもよい。
【００６７】
図１３は、ＢＩＯＳ１２１０内でハッシュ値計算の処理対象とするモジュールの一例を示す図である。
【００６８】
ＢＩＯＳ１２１０は、バックアップ用途のために、ＰｒｉｍａｒｙおよびＳｅｃｏｎｄａｒｙの２つの部分に各モジュールを２重化して記憶している。通常時は、Ｐｒｉｍａｒｙ部分が起動され、Ｓｅｃｏｎｄａｒｙ部分は使用されない。また、Ｐｒｉｍａｒｙ部分であっても、Ｌｏｇｏｓなどのように、仮に改ざんされてもＢＩＯＳ１２１０の動作に影響はない部分（取り消し線部分）も存在する。
【００６９】
そこで、第３の実施の形態のハッシュ値算出部１２１０ａは、Ｐｒｉｍａｒｙの中の重要部分のみを対象としてＢＩＯＳ１２１０のハッシュ値を計算する。これにより、さらに起動時間の短縮が可能となる。
【００７０】
（第４の実施の形態）
上述の実施の形態では、各プログラムは、ＩＮＴコールによりＢＩＯＳのハッシュ計算機能を利用していた。第４の実施の形態にかかる画像形成装置は、プログラムそれぞれにハッシュ値計算機能を備え、ＢＩＯＳを利用せずに各プログラム内でハッシュ値を計算するものである。
【００７１】
図１４は、第４の実施の形態にかかる画像形成装置のブロック図である。同図に示すように、第４の実施の形態の画像形成装置は、ＣＰＵ１、ＢＩＯＳ  ＲＯＭ２、ディスク３、ＮＶＲＡＭ４、主記憶装置５、ＴＰＭ７及びＨＤＤ８を備えている。
【００７２】
第４の実施の形態では、ディスク３内の各プログラムである、ローダ１４１１、カーネル１４１２、ルートファイルシステム１４１３内の初期化部１４２１、およびルートファイルシステム１４１３内のシステム制御部１４２３に、それぞれハッシュ値算出部１４１１ａ、１４１２ａ、１４２１ａ、１４２３ａを備えた点が第１の実施の形態と異なっている。その他の構成および機能は、第１の実施の形態にかかる画像形成装置の構成を表すブロック図である図１と同様であるので、同一符号を付し、ここでの説明は省略する。
【００７３】
なお、ハッシュ値算出部１４１１ａ、１４１２ａ、１４２１ａ、１４２３ａそれぞれの機能は、ハッシュ値算出部１０ａと同様である。
【００７４】
ここで、第４の実施の形態による解決方法の概要について説明する。図１５は、第４の実施の形態による解決方法の概要を示す図である。
【００７５】
第４の実施の形態では、図１５に示すように、各プログラム内にハッシュ値算出部を備え、次に起動するプログラムのハッシュ値を、起動元のプログラム内のハッシュ値算出部を利用して計算する。ＢＩＯＳを通すことなくハッシュ計算が可能になるため、より高速な起動が可能となる。
【００７６】
次に、このように構成された第４の実施の形態にかかる画像形成装置による起動処理について説明する。図１６および図１７は、第４の実施の形態における起動処理の全体の流れを示すシーケンス図である。
【００７７】
ステップＳ１０１からステップＳ１０７までの、ＢＩＯＳ１０のハッシュ値計算処理、およびローダ１４１１のハッシュ値計算処理、カーネル１４１２の読込処理は、第１の実施の形態にかかる画像形成装置におけるステップＳ５１からステップＳ５７までと同様の処理なので、その説明を省略する。
【００７８】
次に、ローダ１４１１内のハッシュ値算出部１４１１ａが、カーネル１４１２のハッシュ値を計算する（ステップＳ１０８）。ローダ１４１１は、計算したハッシュ値をＴＰＭ７のカーネル１４１２に対応するレジスタ（ＰＣＲ３）に格納する（ステップＳ１０９）。
【００７９】
次に、ローダ１４１１は、ディスク３から主記憶装置５へルートファイルシステム１４１３を読み込む（ステップＳ１１０）。次に、ローダ１４１１内のハッシュ値算出部１４１１ａは、ルートファイルシステム１４１３のハッシュ値を計算する（ステップＳ１１１）。ローダ１４１１は、計算したハッシュ値をＴＰＭ７のルートファイルシステム１４１３に対応するレジスタ（ＰＣＲ４）に格納する（ステップＳ１１２）。
【００８０】
ステップＳ１１３からステップＳ１１８までは、第１の実施の形態にかかる画像形成装置におけるステップＳ６７からステップＳ７２までと同様の処理なので、その説明を省略する。
【００８１】
なお、同図では省略しているが、カーネル１４１２が初期化部１４２１を起動するとき、カーネル１４１２内のハッシュ値算出部１４１２ａによって初期化部１４２１のハッシュ値を計算し、ＴＰＭ７内に保存する。同様に、初期化部１４２１がシステム制御部１４２３を起動するとき、初期化部１４２１内のハッシュ値算出部１４２１ａによってシステム制御部１４２３のハッシュ値を計算し、ＴＰＭ７内に保存する。
【００８２】
このように、第４の実施の形態にかかる画像形成装置では、プログラムそれぞれにハッシュ値計算機能を備え、ＢＩＯＳを利用せずに各プログラム内で起動するプログラムのハッシュ値を計算することができるため、より高速な起動が可能となる。
【００８３】
第１〜第４の実施の形態の画像形成装置で実行される正当性検証プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【００８４】
また、第１〜第４の実施の形態の画像形成装置で実行される正当性検証プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、第１〜第４の実施の形態の画像形成装置で実行される正当性検証〜プログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【００８５】
また、第１〜第４の実施の形態の画像形成装置で実行される正当性検証プログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【００８６】
第１〜第４の実施の形態の画像形成装置で実行される正当性検証プログラムは、上述した各部（ＢＩＯＳ、ローダ、カーネル等）を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ（プロセッサ）が上記記憶媒体から〜プログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、上記各部が主記憶装置上に生成されるようになっている。
【００８７】
なお、本発明は、上記実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせても良い。
【産業上の利用可能性】
【００８８】
以上のように、本発明にかかる情報処理装置、正当性検証方法および正当性検証プログラムは、ＴＰＭを備えた画像形成装置などの情報処理装置に適している。
【符号の説明】
【００８９】
１  ＣＰＵ
２  ＢＩＯＳ  ＲＯＭ
３  ディスク
５  主記憶装置
６  バス
７  ＴＰＭ
８  ＨＤＤ
１０  ＢＩＯＳ
１０ａ  ハッシュ値算出部
１１  ローダ
１２  カーネル
１３  ルートファイルシステム
１４  平文データ
１５、１６  暗号データ
２１  初期化部
２３  システム制御部
４１〜４３  Ｂｌｏｂ
５１  ＮＶＲＡＭ暗号鍵
４１０、９１０、１２１０  ＢＩＯＳ
１２１０ａ  ハッシュ値算出部
１４１１  ローダ
１４１２  カーネル
１４１３  ルートファイルシステム
１４２１  初期化部
１４２３  システム制御部
１４１１ａ、１４１２ａ、１４２１ａ、１４２３ａ  ハッシュ値算出部
【先行技術文献】
【特許文献】
【００９０】
【特許文献１】特開２００５−２２７９９５号公報
【図１】
2012234580.tif 000003
【図２】
2012234580.tif 000004
【図３】
2012234580.tif 000005
【図４】
2012234580.tif 000006
【図５】
2012234580.tif 000007
【図６】
2012234580.tif 000008
【図７】
2012234580.tif 000009
【図８】
2012234580.tif 000010
【図９】
2012234580.tif 000011
【図１０】
2012234580.tif 000012
【図１１】
2012234580.tif 000013
【図１２】
2012234580.tif 000014
【図１３】
2012234580.tif 000015
【図１４】
2012234580.tif 000016
【図１５】
2012234580.tif 000017
【図１６】
2012234580.tif 000018
【図１７】
2012234580.tif 000019
【手続補正書】
【提出日】平成24年9月19日(2012.9.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
情報処理装置であって、
複数の起動対象のプログラムを記憶する第１記憶部と、
前記情報処理装置の起動時に実行され、複数の前記起動対象のプログラムのうち、１の前記起動対象のプログラムを起動する起動部と、
前記起動対象のプログラムのハッシュ値を記憶可能なレジスタを有するセキュリティ部と、
前記起動対象のプログラムのハッシュ値と前記起動部のハッシュ値とを予め記憶するとともに暗号化データを記憶する第２記憶部と、を備え、
前記起動部は、前記起動部のハッシュ値と、前記起動部により起動された前記起動対象のプログラムのハッシュ値と、を算出して前記レジスタに保存するハッシュ値算出処理を実行する第１ハッシュ値算出部を備え、
前記セキュリティ部は、前記レジスタに保存されたハッシュ値と前記第２記憶部に記憶された前記ハッシュ値とを比較して、両者が一致する場合に、前記暗号化データを復号化し、
複数の前記起動対象のプログラムのそれぞれは、前記起動対象のプログラムが起動する他のプログラムのハッシュ値を算出し、算出した前記ハッシュ値を前記レジスタに保存することを特徴とする情報処理装置。
【請求項２】
前記セキュリティ部は、さらに前記第１ハッシュ値算出部の正当性を検証し、
前記第１ハッシュ値算出部は、正当性が検証された場合以降に、前記ハッシュ値算出処理を実行することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第１ハッシュ値算出部は、前記起動部の一部のハッシュ値を算出することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記セキュリティ部は、改ざん不可能なセキュアデバイスであること、
を特徴とする請求項１に記載の情報処理装置。
【請求項５】
情報処理装置で実行される正当性検証方法であって、
前記情報処理装置は、複数の起動対象のプログラムを記憶する第１記憶部と、プログラムを起動する起動部と、起動対象のプログラムのハッシュ値を記憶可能なレジスタを有するセキュリティ部と、前記起動対象のプログラムのハッシュ値と起動部のハッシュ値とを予め記憶するとともに暗号化データを記憶する第２記憶部と、を備え、
前記起動部が、前記情報処理装置の起動時に、複数の前記起動対象のプログラムのうち、１の前記起動対象のプログラムを起動する起動ステップと、
前記起動部が、前記起動部のハッシュ値と、前記起動部により起動された前記起動対象のプログラムのハッシュ値と、を算出して前記レジスタに保存するハッシュ値算出処理を実行するハッシュ値算出ステップと、
前記セキュリティ部が、前記レジスタに保存されたハッシュ値と前記第２記憶部に記憶された前記ハッシュ値とを比較して、両者が一致する場合に、前記暗号化データを復号化する復号化ステップと、を含み、
複数の前記起動対象のプログラムのそれぞれは、前記起動対象のプログラムが起動する他のプログラムのハッシュ値を算出し、算出した前記ハッシュ値を前記レジスタに保存すること、
を特徴とする正当性検証方法。
【請求項６】
正当性検証方法をコンピュータに実行させる正当性検証プログラムであって、
前記コンピュータは、複数の起動対象のプログラムを記憶する第１記憶部と、プログラムを起動する起動部と、起動対象のプログラムのハッシュ値を記憶可能なレジスタを有するセキュリティ部と、前記起動対象のプログラムのハッシュ値と起動部のハッシュ値とを予め記憶するとともに暗号化データを記憶する第２記憶部と、を備え、
前記起動部が、前記コンピュータの起動時に、複数の前記起動対象のプログラムのうち、１の前記起動対象のプログラムを起動する起動ステップと、
前記起動部が、前記起動部のハッシュ値と、前記起動部により起動された前記起動対象のプログラムのハッシュ値と、を算出して前記レジスタに保存するハッシュ値算出処理を実行するハッシュ値算出ステップと、
前記セキュリティ部が、前記レジスタに保存されたハッシュ値と前記第２記憶部に記憶された前記ハッシュ値とを比較して、両者が一致する場合に、前記暗号化データを復号化する復号化ステップと、を前記コンピュータに実行させ、
複数の前記起動対象のプログラムのそれぞれは、前記起動対象のプログラムが起動する他のプログラムのハッシュ値を算出し、算出した前記ハッシュ値を前記レジスタに保存する、
正当性検証プログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００６
【補正方法】変更
【補正の内容】
【０００６】
上述した課題を解決し、目的を達成するために、本発明にかかる情報処理装置は、複数の起動対象のプログラムを記憶する第１記憶部と、前記情報処理装置の起動時に実行され、複数の前記起動対象のプログラムのうち、１の前記起動対象のプログラムを起動する起動部と、前記起動対象のプログラムのハッシュ値を記憶可能なレジスタを有するセキュリティ部と、前記起動対象のプログラムのハッシュ値と前記起動部のハッシュ値とを予め記憶するとともに暗号化データを記憶する第２記憶部と、を備え、前記起動部は、前記起動部のハッシュ値と、前記起動部により起動された前記起動対象のプログラムのハッシュ値と、を算出して前記レジスタに保存するハッシュ値算出処理を実行する第１ハッシュ値算出部を備え、前記セキュリティ部は、前記レジスタに保存されたハッシュ値と前記第２記憶部に記憶された前記ハッシュ値とを比較して、両者が一致する場合に、前記暗号化データを復号化し、複数の前記起動対象のプログラムのそれぞれは、前記起動対象のプログラムが起動する他のプログラムのハッシュ値を算出し、算出した前記ハッシュ値を前記レジスタに保存することを特徴とする。