(57)【特許請求の範囲】
【請求項１】
ソフトウェアのプログラム・コードから算出されるハッシュ値を記憶するレジスタと、前記レジスタに記憶された前記ハッシュ値が予め指定された指定値と一致することを条件として、前記ソフトウェアを正当と判断し、暗号化されたデータの復号を行う復号手段と、を有するＴＰＭ（Trusted Platform Module）を備えた情報処理装置であって、
前記ハッシュ値を分割して、前記レジスタのｂｉｔ長以下の長さを持つ複数のｂｉｔ列を生成する分割手段と、
前記複数のｂｉｔ列を前記ＴＰＭに入力して、それぞれ前記レジスタに記憶させる手段と、
を有する情報処理装置。
【請求項２】
請求項１に記載された情報処理装置において、
前記複数のｂｉｔ列が記憶されている前記レジスタ毎の前記指定値を、前記ソフトウェア毎に前記ＴＰＭに入力する条件指定手段を有する情報処理装置。
【請求項３】
ソフトウェアのプログラム・コードから算出されるハッシュ値を記憶するレジスタと、前記レジスタに記憶された前記ハッシュ値が予め指定された指定値と一致することを条件として、前記ソフトウェアを正当と判断し、暗号化されたデータの復号を行う復号手段と、を有するＴＰＭ（Trusted Platform Module）を備えた情報処理装置における正当性検証方法であって、
前記ハッシュ値を分割して、前記レジスタのｂｉｔ長以下の長さを持つ複数のｂｉｔ列を生成する分割工程と、
前記分割工程において前記ハッシュ値を分割して生成された前記複数のｂｉｔ列を、前記ＴＰＭに入力して、それぞれ前記レジスタに記憶させる工程と、
を有する正当性検証方法。
【請求項４】
ソフトウェアのプログラム・コードから算出されるハッシュ値を記憶するレジスタと、前記レジスタに記憶された前記ハッシュ値が予め指定された指定値と一致することを条件として、前記ソフトウェアを正当と判断し、暗号化されたデータの復号を行う復号手段とを有するＴＰＭ（Trusted Platform Module）を備えた情報処理装置のコンピュータを、
前記ハッシュ値を分割して、前記レジスタのｂｉｔ長以下の長さを持つ複数のｂｉｔ列を生成する分割手段と、
前記複数のｂｉｔ列を前記ＴＰＭに入力して、それぞれ前記レジスタに記憶させる手段、
として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、正当性検証方法、及びプログラムに関し、特に、不正に改ざんされたソフトウェアの動作を防止する情報処理装置、当該情報処理装置における正当性検証方法、及びプログラムに関する。
【背景技術】
【０００２】
近年、画像処理装置や複合機（ＭＦＰ：Multifunction Printer）等の、コンピュータ（情報処理装置）が組み込まれた機器（組み込み機器）においても、セキュリティの向上が問題になってきている。
この問題に対処するため、機器内部に保有する使用者のプライベートな情報を保護し、機器ソフトウェアの不正な改ざんを防止すべく、その機器に対して製造メーカが保証できる正当なソフトウェアが動作することを保証する正当性検証を行うことで、不正ソフトの動作を防止するＴＰＭ（Trusted Platform Module）又はＴＰＭチップと称されるセキュリティチップ（セキュリティ専用集積回路）を用いた仕組みが提案されている。
【０００３】
図９は、ＴＰＭを用いた従来の情報処理装置における、起動時の正当性検証フローを示した模式図である。
図９の上部は、情報処理装置のプラットフォーム７０、即ちＣＰＵ（Central Processing Unit）その他の、プログラムを実行するための基盤となるハードウェアの総体を示し、当該プラットフォーム７０上で、各種のソフトウェア・プログラムが実行される。一例として図９においては、３つのモジュール（プログラム）、すなわち、ＢＩＯＳ（Basic Input/Output System）７２と、ＯＳ（Operating System、オペレーティングシステム）等を含む基本パッケージ７４と、各種のアプリケーション・ソフトウェアを含むアプリケーションパッケージ７６とが、プラットフォーム７０を構成するＲＯＭ（Read Only Memory）等の不揮発性メモリからＲＡＭ（Random Access Memory）等の揮発性メモリに、それらの一部あるいは全部がロードされてＣＰＵで実行される。また、図９下部は、当該情報処理装置が有するＴＰＭ８０を示し、このＴＰＭ８０は、後述するハッシュ値を記憶するレジスタであるＰＣＲ（Platform Configuration Register）８２ないし８４を有している。
【０００４】
この情報処理装置は、電源投入等による起動時に、プラットフォーム７０上で、まずＢＩＯＳ７２を不揮発性メモリからロードして実行する。このとき、ＢＩＯＳ７２は自身のハッシュ値を算出して、ＴＰＭ８０が備えるＰＣＲ８２に記憶する。ここで、ハッシュ値とは、プログラム・コードをハッシュ関数と称される特殊な関数により演算して得られる数値をいい、ハッシュ関数はプログラム・コードが異なれば異なるハッシュ値を生成する。このため、算出したハッシュ値が、例えば過去に算出したハッシュ値と一致すれば、そのプログラムは変更等が行われていない同一のプログラムであると判断することができる。このハッシュ関数として、従来、ＳＨＡ−１と称される関数が用いられており、ＳＨＡ−１は１６０ｂｉｔ（２０ｂｙｔｅ）長のハッシュ値を生成する。なお、各プログラムのハッシュ値を記憶させるＰＣＲは、プログラムの種類毎に予め定められている。
【０００５】
続いてＢＩＯＳ７２は、次にロードされる基本パッケージ７４のハッシュ値を算出する。このハッシュ値の算出は、通常、基本パッケージ７４を不揮発性メモリから揮発性メモリにロードする際に行われる。そして、算出したハッシュ値を、ＰＣＲ８３に記憶する。
さらに、基本パッケージ７４のハッシュ値の算出後に、揮発性メモリにロードされた基本パッケージ７４に実行が移され、基本パッケージ７４により、次にロードされるアプリケーションパッケージ７６のハッシュ値が算出されて、算出されたハッシュ値がＰＣＲ８４に記憶され、アプリケーションパッケージ７６に実行が移管される。
【０００６】
このように、ＢＩＯＳ７２、基本パッケージ７４、又はアプリケーションパッケージ７６の各ブートステージ（実行開始処理）ごとに、ＰＣＲ８２ないし８４に、順次、各プログラムのハッシュ値が記録されることでトラストチェーン（ソフトウェアの各階層毎に算出された一連のハッシュ値の記録）が構築される。
【０００７】
また、ＴＰＭ８０は、内部に固有の秘密鍵をもち、この秘密鍵はＴＰＭ８０を破壊しない限り物理的に取り出せない構造となっている。そして、暗号化すべきデータ（例えばユーザパスワード）と、暗号化後の当該データの復号条件であるＰＣＲ８２ないし８４の値の組み合わせとをＴＰＭ８０に入力すると、ＴＰＭ８０は、保有する秘密鍵によりデータを暗号化し、暗号化したデータと上記復号条件とを含んだ情報を出力する。この情報をＢｌｏｂ（ブロブ）と呼ぶ。
【０００８】
このＢｌｏｂに含まれる暗号化されたデータは、暗号化の際に使用した固有の秘密鍵をもつＴＰＭ８０を用いることで復号することができる。すなわち、ＢｌｏｂをＴＰＭ８０に入力すると、ＴＰＭ８０は、Ｂｌｏｂに含まれる復号条件、すなわち、ＰＣＲ８２ないし８４の値の組み合わせを参照し、参照した値の組み合わせが、ＰＣＲ８２ないし８４に現在記憶されている値の組み合わせと一致するか否かを判断する。そして、これらの組み合わせが一致すれば、当該Ｂｌｏｂに含まれている暗号化されたデータを、ＴＰＭ８０が保有する秘密鍵により復号して、出力するのである。
【０００９】
ここで、正当な（改ざんされていない状態の）ＢＩＯＳ７２、正当な基本パッケージ７４、及び正当なアプリケーションパッケージ７６について予め算出された各ハッシュ値で構成されるＰＣＲ８２ないし８４の値の組み合わせを、Ｂｌｏｂに含ませる上記復号条件として用いれば、これらのプログラムが正当である場合にのみ、暗号化されたデータが復号されることとなる。すなわち、上記復号条件を用いることにより、ＴＰＭ８０を用いて各ソフトウェア・プログラムの正当性検証を行なうことができ、当該検証の結果、各ソフトウェア・プログラムが正当である場合には、暗号化されたデータが出力されることとなる。また、暗号化するデータとして、ユーザパスワード等の秘密情報を用いれば、ソフトウェア・プログラムが正当でない場合には、ユーザパスワードを正しく照合できないこととなり、不正ソフトウェアの実行を防止することができる。
【００１０】
図１０は、ＴＰＭを用いた従来の情報処理装置における、データの暗号化動作及び復号動作を表した模式図である。
図１０Ａは、暗号化動作を示す模式図であり、図１０Ｂは、復号動作を示す模式図である。
【００１１】
まず、データの暗号化動作（図１０Ａ）では、ＴＰＭ８０に対し、図１０Ａ左側に示す暗号化すべきデータ（Ｄａｔａ  Ｐ）と、当該データの復号条件であるＰＣＲ８２ないし８４の値の組み合わせＱ、Ｒ、Ｓが入力される。ここで、値Ｑ、Ｒ、Ｓは、それぞれ、正当なＢＩＯＳ７２、正当な基本パッケージ７４、及び正当なアプリケーションパッケージ７６について予め算出されたハッシュ値とする。
【００１２】
ＴＰＭ８０は、これらの入力情報に基づき、ＴＰＭ８０内部に保有する秘密鍵によりＤａｔａ  Ｐを暗号化し、暗号化したＤａｔａ  Ｐと復号条件Ｑ、Ｒ、Ｓとを含むＢｌｏｂ９０を作成する。なお、作成されたＢｌｏｂ９０は、例えば、情報処理装置が備える不揮発性ＲＡＭ（ＮＶＲＡＭ、Non-volatile RAM）等に記憶される。
【００１３】
次に、データの復号動作（図１０Ｂ）は、上記のように作成されたＢｌｏｂをＴＰＭ８０に入力することにより行なわれる。一例とし、図１０Ｂでは、図示左側に示すＢｌｏｂ９２ないし９４が、ＴＰＭ８０にそれぞれ入力されるものとする。
【００１４】
図１０Ｂの中央はＴＰＭ８０であり、ＰＣＲ８２ないし８４には、ＢＩＯＳ７２、基本パッケージ７４、及びアプリケーションパッケージ７６について算出されたハッシュ値Ｑ、Ｒ、Ｓがそれぞれ記憶されている。さらに、図示右側には、各Ｂｌｏｂ９２ないし９４に含まれるデータの復号が行なわれるか否かが、それぞれ、○及び×で示されている。
【００１５】
Ｂｌｏｂ９２は、復号条件であるＰＣＲ８２ないし８４の組み合わせとして３つの値（Ｑ、Ｒ、Ｓ）が含まれており、これらの値と、ＰＣＲ８２ないし８４に現在記憶されている値（Ｑ、Ｒ、Ｓ）が一致することから、Ｂｌｏｂ９２に含まれているＤａｔａ  Ｐは、ＴＰＭ８０により復号されて出力されることとなる。
【００１６】
一方、Ｂｌｏｂ９３は、復号条件であるＰＣＲ８２ないし８４の組み合わせとして３つの値（Ｑ、Ｔ、Ｓ）が含まれており、これらの値の組み合わせは、ＰＣＲ８２ないし８４に現在記憶されている値（Ｑ、Ｒ、Ｓ）とは一致しないため、Ｂｌｏｂ９３に含まれているＤａｔａ  Ｐは復号されない。
【００１７】
さらに、Ｂｌｏｂ９４は、復号条件であるＰＣＲ８２ないし８４の組み合わせとして、ＰＣＲ８２の値Ｑのみが指定されており、この値はＰＣＲ８２に現在記憶されている値Ｑと一致するため、Ｂｌｏｂ９４に含まれているＤａｔａ  Ｐは復号されて出力される。
【００１８】
上述した動作により、ＴＰＭ８０は、各ソフトウェアの正当性検証を行うと共に、各ソフトウェアが正当である場合にのみ暗号化されたデータを復号して出力することにより、不正なソフトウェアの実行を防止することができる。
【００１９】
上記ＴＰＭを用いた情報処理装置として、例えば、プログラムの更新により当該プログラムのハッシュ値が変化したときに、更新前のプログラムのハッシュ値に基づいて作成されたＢｌｏｂのデータが復号できなくなるのを回避するため、プログラムの更新時に、既存のＢｌｏｂに含まれているデータを更新前のプログラムのハッシュ値に基づいて復号した後、更新後のプログラムのハッシュ値を用いて当該データを再暗号化してＢｌｏｂを再生成する情報処理装置が知られている（特許文献１参照）。
【００２０】
また、ＴＰＭを用いた情報処理装置の他の例として、固定ディスク装置等の記憶装置にデータを暗号化して保存しておくことを目的とし、当該データの暗号化及び復号に用いる暗号鍵を、ＴＰＭによりＢｌｏｂ内に暗号化して保存しておき、当該記憶装置へのデータの保存や読出しの際に当該暗号鍵をＢｌｏｂから取得し、取得した暗号鍵を用いて記憶装置へのデータの保存や読出しを行なう情報処理装置が知られている（特許文献２参照）。
【００２１】
ところで、種々の情報処理装置にデファクトスタンダードとして広く使用されている暗号方式では、近年のコンピュータの処理能力の進歩に伴って、当該暗号方式により作成された暗号が解読される危険性が高まっており、より解読困難な暗号方式への切り替えが必要となっている。
また、伝達された暗号データの改ざん検出（データ正当性検証）に使用されるハッシュ関数についても、広く使用されているハッシュ関数ＳＨＡ−１では改ざんを検出できない事態が発生する可能性が高まっていることから、より安全性の高いハッシュ関数への変更が必要となっている。
【００２２】
上記背景において、アメリカ合衆国政府の使用する暗号技術を決定する国立標準技術研究所（National Institute of Standards and Technology, NIST）は、当該政府の使用する標準暗号方式として従来使用してきた暗号鍵（ＲＳＡ等）とハッシュ関数ＳＨＡ−１とを、２０１０年１２月３０日までに、より長いｂｉｔ長の暗号鍵や、より長いｂｉｔ長のハッシュ値を与えるハッシュ関数へ変更することとしており、いわゆる「暗号の２０１０年問題」が生じている。
【００２３】
日本においても、内閣官房情報セキュリティセンター（National Information Security Center, NISC）が、２０１３年を目処に、１６０ｂｉｔのハッシュ値を与える従来のＳＨＡ−１に代えて２５６ｂｉｔのハッシュ値を与えるＳＨＡ−２５６を採用する等の対応を決定している。
【００２４】
ところが、本出願の出願時点において、ＴＰＭの規格を決定する業界団体であるＴＣＧ（Trusted Computing Group）から出されているＴＰＭの仕様（TPM Main Specification Level 2 Version 1.2, Revision 1.3）は、ハッシュ関数ＳＨＡ−１にのみ対応しており、取り扱えるハッシュ値は１６０ｂｉｔ（２０ｂｙｔｅ）以下の長さに限定されている。すなわち、上記ＴＰＭの仕様においては、ＴＰＭ内部のＰＣＲが記憶できるハッシュ値の長さは最大１６０ｂｉｔであり、かつ、ＰＣＲへの入力インタフェースも１６０ｂｉｔであることから、ＴＣＧの規格に則った形では、２５６ｂｉｔ（３６ｂｙｔｅ）長のハッシュ値を生成するハッシュ関数ＳＨＡ-２５６を使用することはできず、上記２０１０年問題に対応できない。
【発明の概要】
【発明が解決しようとする課題】
【００２５】
本発明は、上記従来の問題に鑑みなされたものであって、その目的は、ＴＰＭを用いた情報処理装置において、ＴＰＭが有するＰＣＲのｂｉｔ長よりも長いｂｉｔ長のハッシュ値を用いて、ソフトウェアの正当性検証と保存データの暗号化・復号を行なえるようにすることである。
【課題を解決するための手段】
【００２６】
本発明は、ソフトウェアのプログラム・コードから算出されるハッシュ値を記憶するレジスタと、前記レジスタに記憶された前記ハッシュ値が予め指定された指定値と一致することを条件として、前記ソフトウェアを正当と判断し、暗号化されたデータの復号を行う復号手段と、を有するＴＰＭ（Trusted Platform Module）を備えた情報処理装置であって、前記ハッシュ値を分割して、前記レジスタのｂｉｔ長以下の長さを持つ複数のｂｉｔ列を生成する分割手段と、前記複数のｂｉｔ列を前記ＴＰＭに入力して、それぞれ前記レジスタに記憶させる手段と、を有する情報処理装置である。
また、本発明は、ソフトウェアのプログラム・コードから算出されるハッシュ値を記憶するレジスタと、前記レジスタに記憶された前記ハッシュ値が予め指定された指定値と一致することを条件として、前記ソフトウェアを正当と判断し、暗号化されたデータの復号を行う復号手段と、を有するＴＰＭ（Trusted Platform Module）を備えた情報処理装置における正当性検証方法であって、前記ハッシュ値を分割して、前記レジスタのｂｉｔ長以下の長さを持つ複数のｂｉｔ列を生成する分割工程と、前記分割工程において前記ハッシュ値を分割して生成された前記複数のｂｉｔ列を、前記ＴＰＭに入力して、それぞれ前記レジスタに記憶させる工程と、を有する正当性検証方法である。
また、本発明は、ソフトウェアのプログラム・コードから算出されるハッシュ値を記憶するレジスタと、前記レジスタに記憶された前記ハッシュ値が予め指定された指定値と一致することを条件として、前記ソフトウェアを正当と判断し、暗号化されたデータの復号を行う復号手段とを有するＴＰＭ（Trusted Platform Module）を備えた情報処理装置のコンピュータを、前記ハッシュ値を分割して、前記レジスタのｂｉｔ長以下の長さを持つ複数のｂｉｔ列を生成する分割手段と、前記複数のｂｉｔ列を前記ＴＰＭに入力して、それぞれ前記レジスタに記憶させる手段、として機能させるプログラムである。
【発明の効果】
【００２７】
本発明によれば、ＴＰＭを用いた情報処理装置において、ＴＰＭが有するＰＣＲのｂｉｔ長よりも長いｂｉｔ長のハッシュ値を用いて、ソフトウェアの正当性検証と保存データの暗号化・復号を行なうことができる。
【図面の簡単な説明】
【００２８】
【図１】本発明の一実施形態に係る画像形成装置の構成を示すブロック図である。
【図２】図１に示す画像形成装置における、情報処理装置である本体制御部の構成を示すブロック図である。
【図３】図１に示す画像形成装置の、起動時におけるハッシュ値の記録処理を示した模式図である。
【図４】図１に示す画像形成装置における、データの暗号化動作及び復号動作を表した模式図である。
【図５】図１に示す画像形成装置が起動時に行なう、ハッシュ値記録処理の手順を示すフロー図である。
【図６】図１に示す画像形成装置における、ブロブ生成処理の手順を示すフロー図である。
【図７】図１に示す画像形成装置における、データ保存処理の手順を示すフロー図である。
【図８】図１に示す画像形成装置における、データ読出し処理の手順を示すフロー図である。
【図９】ＴＰＭを用いた従来の情報処理装置における、起動時の正当性検証フローを示した模式図である。
【図１０】ＴＰＭを用いた従来の情報処理装置における、データの暗号化動作及び復号動作を表した模式図である。
【発明を実施するための形態】
【００２９】
以下、図面を参照して、本発明の実施の形態を説明する。
本実施形態に係る画像形成装置は、印刷動作等の制御を行うコンピュータ（情報処理装置）を備え、当該情報処理装置は、ハッシュ関数ＳＨＡ−１にのみ対応する１６０ｂｉｔ長のＰＣＲを有するＴＰＭを備える。そして、本画像形成装置は、ハッシュ関数ＳＨＡ−２５６を用いて、ソフトウェア・プログラムについての２５６ｂｉｔ長のハッシュ値を算出し、当該ハッシュ値を分割して１２８ｂｉｔ長の２つのｂｉｔ列を生成し、各ｂｉｔ列を個別のハッシュ値として上記１６０ｂｉｔ長の２つのＰＣＲにそれぞれ記憶する。
【００３０】
また、正当な上記ソフトウェア・プログラムについて予め算出されたハッシュ値を、上記と同様に分割して１２８ｂｉｔ長の２つのｂｉｔ列を生成し、これら２つのｂｉｔ列が表す２つの値を、復号条件、即ち、当該ソフトウェアの正当性判断条件としてＢｌｏｂを生成する。
すなわち、本画像形成装置は、正当性検証を行なう対象であるソフトウェア毎に、ＰＣＲを２つずつペアにして用いて当該ソフトウェアのハッシュ値を記憶し、当該ペアを構成するＰＣＲ毎に復号条件を設定してＢｌｏｂを生成することで、１６０ｂｉｔのハッシュ値にしか対応していない従来のＴＰＭチップを使用して、２５６ｂｉｔのハッシュ値に基づく正当性検証を行なうものである。
【００３１】
図１は、本発明の一実施形態に係る画像形成装置の構成を示すブロック図である。
本画像形成装置１は、印刷機能、画像読取機能、及びファクシミリ通信機能を備えた複合プリンタ（ＭＦＰ：Multifunction Printer）であって、プリンタ（不図示）やスキャナ（不図示）により記録用紙への画像形成や原稿読み取り等を行うエンジンサブシステム２と、ファクシミリ装置（不図示）により公衆回線を介してファクシミリ通信を行なうＦＡＸ（facsimile、ファックス）サブシステム４と、操作用キーボード（不図示）等によりユーザからの入力を取得する操作部サブシステム６と、これら３つのサブシステムの動作を統括的に制御する情報処理装置である本体制御部８と、を有している。
【００３２】
また、本体制御部８とエンジンサブシステム２はＰＣＩ  ｅｘｐｒｅｓｓ規格に準拠したシリアルバスであるＰＣＩｅバス１０により接続されており、本体制御部８とＦＡＸサブシステム４及び操作部サブシステム６とは、ＵＳＢ（Universal Serial Bus）規格に準拠したシリアルバスであるＵＳＢバス１２、１４により、それぞれ接続されている。
【００３３】
図２は、画像形成装置１における情報処理装置である本体制御部８の構成を示すブロック図である。
本体制御部８は、ＣＰＵ２０と、ＣＰＵ２０の起動時に実行されるＢＩＯＳ２２０等のプログラムが書き込まれたＲＯＭ２２と、データの一時記憶のためのＲＡＭ２４とで構成されるコンピュータと、データを記憶し保存する固定ディスク装置（ＨＤＤ、Hard Disk Drive）２６と、ＨＤＤ２６へ記憶するデータの暗号化及びＨＤＤ２６から読み出されたデータの復号を行なうエンコーダ／デコーダ２８と、ユーザに対しデータの表示等を行なう液晶表示装置（ＬＣＤ、Liquid Crystal Display）３０と、ＬＣＤ３０の表示画面上に配置され、ユーザがデータ等を入力する際に使用するタッチパネル３２と、を有している。
【００３４】
また、本体制御部８は、ＣＰＵ２０が実行するソフトウェアの正当性検証等を行なうセキュリティチップであるＴＰＭ４０と、各種のソフトウェア・プログラムを記憶した不揮発性ＲＡＭ（ＮＶＲＡＭ）５０と、を有している。
【００３５】
ＴＰＭ４０は、入力されたデータを暗号化するための秘密鍵を記憶したメモリ４０２と、ＣＰＵ２０がＢＩＯＳ２２０等のソフトウェア・プログラムについて算出したハッシュ値を記憶するレジスタであるＰＣＲ４０４ないし４０９と、ＴＰＭ４０内部の動作を制御する制御部４１０と、入力されたデータを上記秘密鍵により暗号化する暗号化手段４１２と、入力されたＢｌｏｂに含まれる暗号化されたデータを、当該Ｂｌｏｂに含まれる復号条件が満たされていることを条件に、上記秘密鍵により復号する復号手段４１４と、を有している。
【００３６】
ここで、ＴＰＭ４０は、ハッシュ関数ＳＨＡ−１が生成する１６０ｂｉｔのハッシュ値にのみ対応し、ＰＣＲ４０４ないし４０９が記憶できるハッシュ値の最大のｂｉｔ長（ＰＣＲ４０４ないし４０９のｂｉｔ長）は、１６０ｂｉｔとなっている。
【００３７】
また、ＮＶＲＡＭ５０には、ＯＳを含んだソフトウェア・プログラムである基本パッケージ５０２と、エンジンサブシステム２が制御するプリンタ（不図示）やスキャナ（不図示）、あるいは、ＦＡＸサブシステム４が制御するファクシミリ装置（不図示）等を動作させるためのソフトウェア・プログラムを含むアプリケーションパッケージ５０４と、ＴＰＭ４０が生成するＢｌｏｂ５０６ないし５０８が記憶されている。ここで、Ｂｌｏｂ５０６には、ＨＤＤ２６にデータを保存したりＨＤＤ２６からデータを読み出す際に当該データの暗号化又は復号を行なうための暗号鍵が、暗号化された状態で含まれているものとする。
【００３８】
さらに、本体制御部８は、ＣＰＵ２０が、ＲＯＭ２２又はＮＶＲＡＭ５０に記憶されているコンピュータ・プログラムを実行することにより実現される機能実現手段として、分割手段２０２と、記録手段２０４と、条件指定手段２０６と、ブロブ生成手段２０８と、データ保存手段２１０と、データ読出し手段２１２と、を有している。なお、コンピュータ・プログラムは、コンピュータ読み取り可能な任意の記憶媒体に記憶させておくことができる。
【００３９】
分割手段２０２は、ＣＰＵ２０がＢＩＯＳ２２０等に基づいてハッシュ関数ＳＨＡ−２５６により算出した、各ソフトウェア・プログラムについての２５６ｂｉｔのハッシュ値のｂｉｔ列を分割して、上位１２８ｂｉｔのｂｉｔ列と下位１２８ｂｉｔのｂｉｔ列に分割する。なお、２５６ｂｉｔのハッシュ値の分割方法は、上記に限らず、分割後のｂｉｔ列の長さが、ＰＣＲ４０４ないし４０９のｂｉｔ長（１６０ｂｉｔ）以下になるような分割方法であればよい。
【００４０】
記録手段２０４は、分割手段２０２が生成した１２８ｂｉｔ長の２つのｂｉｔ列を、個別のハッシュ値としてＴＰＭ４０に入力し、ＴＰＭ４０が備えるＰＣＲ４０４ないし４０９のうち、いずれか２つのＰＣＲにそれぞれ記憶させる。
【００４１】
条件指定手段２０６は、ブロブ生成手段２０８がＴＰＭ４０によりＢｌｏｂを生成する際に、ソフトウェア・プログラムが正当である場合のハッシュ値を、復号条件（正当性判断条件）としてＴＰＭ４０に入力する。ただし、上記正当である場合のハッシュ値は、ハッシュ関数ＳＨＡ−２５６により２５６ｂｉｔの値として与えられることから、条件指定手段２０６は、分割手段２０２と同様の方法により、上記正当である場合のハッシュ値を分割して１２８ｂｉｔ長の２つのｂｉｔ列を生成し、これら２つのｂｉｔ列を、当該ソフトウェアの正当性判断条件としてＴＰＭ４０に入力する。
【００４２】
ブロブ生成手段２０８は、正当な各ソフトウェア・プログラムについて算出されたハッシュ値を条件指定手段２０６に与えて上記２つのｂｉｔ列をＴＰＭ４０に入力させると共に、暗号化対象であるデータをＴＰＭ４０に入力してＢｌｏｂを生成する。
【００４３】
データ保存手段２１０は、アプリケーションパッケージ５０４の実行時等において、ＨＤＤ２６へデータを保存する際に、ＮＶＲＡＭ５０からＢｌｏｂ５０６を読み出してＴＰＭ４０に入力し、Ｂｌｏｂ５０６に含まれている暗号鍵をＴＰＭ４０から取得する。また、取得した当該暗号鍵をエンコーダ／デコーダ２８に渡し、エンコーダ／デコーダ２８により保存データを暗号化してＨＤＤ２６に記憶する。
【００４４】
データ読出し手段２１２は、アプリケーションパッケージ５０４の実行時等において、ＨＤＤ２６からデータを読み出す際に、ＮＶＲＡＭ５０からＢｌｏｂ５０６を読み出してＴＰＭ４０に入力し、Ｂｌｏｂ５０６に含まれている暗号鍵をＴＰＭ４０から取得する。また、取得した当該暗号鍵をエンコーダ／デコーダ２８に渡し、ＨＤＤ２６から読み出したデータをエンコーダ／デコーダ２８により復号して、平文（暗号化されていない状態）のデータを得る。
【００４５】
上記の構成を備える画像形成装置１は、ユーザが電源を投入すると、ＣＰＵ２０により、ＲＯＭ２２が記憶するＢＩＯＳ２２０と、ＮＶＲＡＭ５０が記憶する基本パッケージ５０２及びアプリケーションパッケージ５０４を、順次、ＲＡＭ２４に読み出して実行する。その際、ＣＰＵ２０は、ＢＩＯＳ２２０及び基本パッケージ５０２を実行することにより、ＢＩＯＳ２２０、基本パッケージ５０２、及びアプリケーションパッケージ５０４のハッシュ値を算出してＴＰＭ４０のＰＣＲ４０４ないし４０９に記憶する。
【００４６】
図３は、画像形成装置１の、起動時におけるハッシュ値の記録処理を示した模式図である。
図３上部は、本体制御部８のプラットフォーム６０、即ちＣＰＵ２０その他の、プログラムを実行するための基盤となるハードウェアの総体を示し、当該プラットフォーム６０上で、ＢＩＯＳ２２０と、基本パッケージ５０２と、アプリケーションパッケージ５０４とが実行される。また、図３下部はＴＰＭ４０のＰＣＲ４０４ないし４０９を示している。
【００４７】
図３に示す画像形成装置１におけるハッシュ値の記録処理と、図９に示す従来の情報処理装置におけるハッシュ値の記録処理との最大の違いは、図３においては、ハッシュ値算出にＳＨＡ−２５６を使用し、２５６ｂｉｔの各ハッシュ値を、ＰＣＲを２つずつ使って記憶することである。また、ＴＰＭ４０に対するハッシュ値報告（ハッシュ値の入力）では、２５６ｂｉｔのハッシュ値を、例えば半分ずつの、２つの１２８ｂｉｔのｂｉｔ列に分割し、これら２つのｂｉｔ列を２つのハッシュ値として別々に報告（入力）する。
【００４８】
画像形成装置１では、電源投入後に、まず、ＣＰＵ２０によりＢＩＯＳ２２０が実行を開始し、ＢＩＯＳ２２０自身のハッシュ値をハッシュ関数ＳＨＡ−２５６により算出する。そして、算出された２５６ｂｉｔのハッシュ値を分割して２つの１２８ｂｉｔ長のｂｉｔ列とし、各ｂｉｔ列を個別のハッシュ値としてＴＰＭ４０に入力して、ＰＣＲ４０４とＰＣＲ４０５にそれぞれ記憶する。次に、ＢＩＯＳ２２０は、次に実行される基本パッケージ５０２のハッシュ値をハッシュ関数ＳＨＡ−２５６により算出し、上記と同様に２つの１２８ｂｉｔ長のｂｉｔ列に分割して、ＴＰＭ４０のＰＣＲ４０６、４０７にそれぞれ記憶した後、基本パッケージ５０２に実行を移す。
【００４９】
続いて、基本パッケージ５０２は、次に実行されるアプリケーションパッケージ５０４のハッシュ値をハッシュ関数ＳＨＡ−２５６により算出し、上記と同様に２つの１２８ｂｉｔ長のｂｉｔ列に分割して、ＴＰＭ４０のＰＣＲ４０８、４０９にそれぞれ記憶した後、アプリケーションパッケージ５０４に実行を移す。
【００５０】
また、画像形成装置１は、ＴＰＭ４０により、ユーザパスワード等の秘密情報を含むデータの暗号化及び復号を行なう。
図４は、画像形成装置１における、データの暗号化動作及び復号動作を表した模式図である。
図４Ａは、暗号化動作を示す模式図であり、図４Ｂは、復号動作を示す模式図である。
【００５１】
まず、データの暗号化動作（図４Ａ）では、ＴＰＭ４０に対し、図４Ａ左側に示す暗号化すべきデータ（Ｄａｔａ  Ｐ）と、当該データの復号条件としてＰＣＲ４０４ないし４０９の値の組み合わせＸ１、Ｘ２、Ｙ１、Ｙ２、Ｚ１、Ｚ２が入力される。ここで、Ｘ１、Ｘ２は、ＢＩＯＳ２２０が正当である場合の２５６ｂｉｔのハッシュ値を１２８ｂｉｔ長に分割して得られる２つの値、Ｙ１、Ｙ２は、基本パッケージ５０２が正当である場合の２５６ｂｉｔのハッシュ値を１２８ｂｉｔ長に分割して得られる２つの値、Ｚ１、Ｚ２は、アプリケーションパッケージ５０４が正当である場合の２５６ｂｉｔのハッシュ値を１２８ｂｉｔ長に分割して得られる２つの値とする。
【００５２】
ＴＰＭ４０は、これら入力情報に基づき、ＴＰＭ４０のメモリ４０２に保有する秘密鍵によりＤａｔａ  Ｐを暗号化し、暗号化したＤａｔａ  Ｐと復号条件Ｘ１、Ｘ２、Ｙ１、Ｙ２、Ｚ１、Ｚ２とを含むＢｌｏｂ５０６を作成する。なお、本実施形態では、ＨＤＤ２６に記憶するデータの暗号化・復号に用いる暗号鍵を上記Ｄａｔａ  Ｐとして、Ｂｌｏｂ５０６が作成されるものとする。また、上記の暗号化動作は、例えば、画像形成装置１の初回起動時に、ユーザが初期設定としてユーザパスワードや暗号鍵などの秘密情報を入力したときに実行される。
【００５３】
次に、データの復号動作（図４Ｂ）では、例えば図４Ｂ左側に示すＢｌｏｂ５０６ないし５０８が、ＴＰＭ４０にそれぞれ入力される。
このＴＰＭ４０のＰＣＲ４０４ないし４０９には、それぞれ、ＢＩＯＳ２２０のハッシュ値を分割したＸ１、Ｘ２、基本パッケージ５０２のハッシュ値を分割したＹ１、Ｙ２、及びアプリケーションパッケージ５０４のハッシュ値を分割したＺ１、Ｚ２が記憶されている。さらに、図４Ｂの図示右側には、各Ｂｌｏｂ５０６ないし５０８に含まれるデータの復号が行なわれるか否かが、それぞれ、○及び×で示されている。
【００５４】
Ｂｌｏｂ５０６は、復号条件であるＰＣＲ４０４ないし４０９の値の組み合わせとして６つの値（Ｘ１、Ｘ２、Ｙ１、Ｙ２、Ｚ１、Ｚ２）が含まれており、これらの値と、ＰＣＲ４０４ないし４０９に現在記憶されている値が一致するため、Ｂｌｏｂ５０６に含まれているＤａｔａ  Ｐは、ＴＰＭ４０により復号されて出力されることとなる。また、Ｂｌｏｂ５０７は、復号条件が（Ｘ１、Ｘ２、Ｇ１、Ｇ２、Ｚ１、Ｚ２）となっており、これらの値の組み合わせは、ＰＣＲ４０４ないし４０９に現在記憶されている値（Ｘ１、Ｘ２、Ｙ１、Ｙ２、Ｚ１、Ｚ２）とは一致しないため、Ｂｌｏｂ５０７に含まれているＤａｔａ  Ｐは復号されない。さらに、Ｂｌｏｂ５０８は、復号条件としてＰＣＲ４０４、４０５の値Ｘ１、Ｘ２のみが指定されており、これらの値はＰＣＲ４０４、４０５に現在記憶されている値Ｘ１、Ｘ２と一致するため、Ｂｌｏｂ５０８に含まれているＤａｔａ  Ｐは復号されて出力される。
【００５５】
次に、画像形成装置１の動作手順について説明する。
画像形成装置１は、起動時にソフトウェア・プログラムのハッシュ値を算出してＴＰＭ４０のＰＣＲ４０４ないし４０９に記録するハッシュ値記録処理、初回起動時に秘密情報を暗号化してＢｌｏｂを生成するブロブ生成処理、アプリケーションパッケージ５０４に含まれるアプリケーショ・ソフトウェア等の実行時において、データ保存の際に保存データを暗号化してＨＤＤ２６に記憶するデータ保存処理、及び、ＨＤＤ２６に保存されたデータを読み出して復号するデータ読出し処理を行う。
【００５６】
まず、画像形成装置１が起動時に行なうハッシュ値記録処理の手順について、図５に示すフロー図にしたがって説明する。
まず、ユーザが画像形成装置１の電源を投入すると、ＣＰＵ２０は、ＲＯＭ２２が記憶するＢＩＯＳ２２０を、ＲＡＭ２４にダウンロードして実行し（Ｓ１０１）、ＢＩＯＳ２２０自身のハッシュ値をハッシュ関数ＳＨＡ−２５６により算出する（Ｓ１０２）。次に、分割手段２０２は、算出されたハッシュ値を分割して２つの１２８ｂｉｔ長のｂｉｔ列を生成し（Ｓ１０３）、記録手段２０４は、生成した２つのｂｉｔ列を個別のハッシュ値としてＴＰＭ４０に入力し、ＰＣＲ４０４、４０５にそれぞれ記憶させる（Ｓ１０４）。
【００５７】
次に、ＣＰＵ２０は、ＢＩＯＳ２２０のプログラムに基づき、基本パッケージ５０２のハッシュ値をハッシュ関数ＳＨＡ−２５６により算出し（Ｓ１０５）、分割手段２０２は、算出されたハッシュ値を分割して２つの１２８ｂｉｔ長のｂｉｔ列を生成する（Ｓ１０６）。次に、記録手段２０４は、生成した２つのｂｉｔ列を個別のハッシュ値としてＴＰＭ４０に入力し、ＰＣＲ４０６、４０７にそれぞれ記憶させた後（Ｓ１０７）、基本パッケージ５０２に実行を移す（Ｓ１０８）。
【００５８】
続いて、ＣＰＵ２０は、基本パッケージ５０２のプログラムに基づき、アプリケーションパッケージ５０４のハッシュ値をハッシュ関数ＳＨＡ−２５６により算出し（Ｓ１０９）、分割手段２０２は、算出されたハッシュ値を分割して２つの１２８ｂｉｔ長のｂｉｔ列を生成する（Ｓ１１０）。次に、記録手段２０４は、生成した２つのｂｉｔ列を個別のハッシュ値としてＴＰＭ４０に入力し、ＰＣＲ４０８、４０９にそれぞれ記憶させた後（Ｓ１１１）、アプリケーションパッケージ５０４に実行を移して（Ｓ１１２）、処理を終了する。
【００５９】
次に、画像形成装置１における、ブロブ生成処理の手順について、図６に示すフロー図にしたがって説明する。
本処理は、画像形成装置１の初回起動時に、初期設定としてユーザが秘密情報であるデータを入力したときに、開始する。
【００６０】
処理を開始すると、ブロブ生成手段２０８は、改ざんが行なわれていない正当なＢＩＯＳ２２０のハッシュ値Ｘと、正当な基本パッケージ５０２のハッシュ値Ｙと、正当なアプリケーションパッケージ５０４のハッシュ値Ｚとを、条件指定手段２０６に渡す（Ｓ２０１）。ここで、これらのハッシュ値Ｘ、Ｙ、Ｚは、例えば、予め算出してプログラムの中に含めておくことができる。
【００６１】
次に、条件指定手段２０６は、ハッシュ値Ｘ、Ｙ、Ｚを分割し、それぞれ、２つの１２８ｂｉｔ長のｂｉｔ列、Ｘ１とＸ２、Ｙ１とＹ２、及びＺ１とＺ２を生成し（Ｓ２０２）、ＰＣＲ４０４ないし４０９の値の組み合わせ（Ｘ１、Ｘ２、Ｙ１、Ｙ２、Ｚ１、Ｚ２）を、復号条件としてＴＰＭ４０に入力し（Ｓ２０３）、ブロブ生成手段２０８は、初期設定としてユーザが入力したデータをＴＰＭ４０に入力する（Ｓ２０４）。なお、本実施形態では、当該データは、ＨＤＤ２６に記憶するデータの暗号化及び復号を行なうための暗号鍵とする。
【００６２】
これにより、ＴＰＭ４０は、入力されたデータ（暗号鍵）を、メモリ４０２に保存されている秘密鍵により暗号化し、当該暗号化したデータと、上記入力された復号条件とを含むＢｌｏｂ５０６を出力する。
【００６３】
次に、ブロブ生成手段２０８は、ＴＰＭ４０からＢｌｏｂ５０６を取得し（Ｓ２０５）、取得したＢｌｏｂ５０６をＮＶＲＡＭ５０に記憶させた後（Ｓ２０６）、処理を終了する。
【００６４】
次に、画像形成装置１における、データ保存処理の手順について、図７に示すフロー図にしたがって説明する。
本処理は、アプリケーションパッケージ５０４に含まれるアプリケーショ・ソフトウェア等の実行時において、ＨＤＤ２６へのデータ保存を行う際に開始する。
処理を開始すると、データ保存手段２１０は、まずＢｌｏｂ５０６をＮＶＲＡＭ５０から読み出して、ＴＰＭ４０に入力する（Ｓ３０１）。
【００６５】
これに対し、ＴＰＭ４０は、入力されたＢｌｏｂ５０６に含まれている復号条件、すなわち、ＰＣＲ４０４ないし４０９の値の組み合わせ（Ｘ１、Ｘ２、Ｙ１、Ｙ２、Ｚ１、Ｚ２）を参照し、この値の組み合わせがＰＣＲ４０４ないし４０９に現在記憶されている値の組み合わせと一致するか否かを判断する。そして、一致するときは、Ｂｌｏｂ５０６に含まれている暗号化されたデータ（暗号鍵）を、メモリ４０２に保存されている秘密鍵により復号して出力し、一方、一致しないときは、例えば、所定のエラーコードを出力する。
【００６６】
次に、データ保存手段２１０は、ＴＰＭ４０が暗号鍵を出力したか否かを判断し（Ｓ３０２）、暗号鍵を出力したときは（Ｓ３０２、Ｙｅｓ）、出力された暗号鍵をエンコーダ／デコーダ２８に入力すると共に（Ｓ３０３）、ＨＤＤ２６に保存する保存データとそのファイル名とを、エンコーダ／デコーダ２８に入力する（Ｓ３０４）。
【００６７】
続いて、エンコーダ／デコーダ２８は、暗号鍵により保存データを暗号化し、暗号化した保存データを、上記ファイル名を用いてＨＤＤ２６に記憶させた後（Ｓ３０５）、暗号鍵を破棄して（Ｓ３０６）、処理を終了する。
【００６８】
一方、ステップＳ３０２においてＴＰＭ４０が暗号鍵を出力しなかったときは（Ｓ３０２、Ｎｏ）、データ保存手段２１０は、ＬＣＤ３０にエラーメッセージを表示して（Ｓ３０７）、処理を終了する。
【００６９】
次に、画像形成装置１におけるデータ読出し処理の手順について、図８に示すフロー図にしたがって説明する。
本処理は、アプリケーションパッケージ５０４に含まれるアプリケーショ・ソフトウェア等の実行時において、ＨＤＤ２６からデータ読出しを行う際に開始する。
処理を開始すると、データ読出し手段２１２は、Ｂｌｏｂ５０６をＮＶＲＡＭ５０から読み出して、ＴＰＭ４０に入力する（Ｓ４０１）。
【００７０】
次に、データ読出し手段２１２は、ＴＰＭ４０が暗号鍵を出力したか否かを判断し（Ｓ４０２）、暗号鍵を出力したときは（Ｓ４０２、Ｙｅｓ）、出力された暗号鍵をエンコーダ／デコーダ２８に入力する（Ｓ４０３）。そして、エンコーダ／デコーダ２８を介して、ＨＤＤ２６に対し、読み出すデータのファイル名を指定する（Ｓ４０４）。
【００７１】
続いて、ＨＤＤ２６は、指定されたファイル名で保存されているデータをエンコーダ／デコーダ２８に出力し（Ｓ４０５）、エンコーダ／デコーダ２８は、ＨＤＤ２６が出力したデータを、暗号鍵を用いて復号して出力した後（Ｓ４０６）、暗号鍵を破棄して（Ｓ４０７）、処理を終了する。
【００７２】
一方、ステップＳ４０２においてＴＰＭ４０が暗号鍵を出力しなかったときは（Ｓ４０２、Ｎｏ）、データ読出し手段２１２は、ＬＣＤ３０にエラーメッセージを表示して（Ｓ４０８）、処理を終了する。
【００７３】
以上説明したように、本実施形態では、正当性検証の対象であるソフトウェア毎に、ハッシュ関数ＳＨＡ−２５６が生成する２５６ｂｉｔのハッシュ値を分割して、１２８ｂｉｔ長の２つのｂｉｔ列を生成し、生成したｂｉｔ列が表す値をＴＰＭ４０が備えるＰＣＲ４０４ないし４０９のうち２つのＰＣＲに記憶させる。また、Ｂｌｏｂを生成する際には、暗号化データの復号条件（即ち、正当性判断条件）として、正当な上記ソフトウェア・プログラムについての２５６ｂｉｔのハッシュ値を、上記と同様に分割し、当該分割によって得られる２つの値の組み合わせを、暗号化データの復号条件（即ち、正当性判断条件）としてＴＰＭ４０に入力する。
【００７４】
これにより、画像形成装置１は、ハッシュ関数ＳＨＡ−１が生成する１６０ｂｉｔ長のハッシュ値にしか対応していないＴＰＭ４０を用いて、「暗号の２０１０年問題」に対応したハッシュ関数ＳＨＡ−２５６により算出される２５６ｂｉｔのハッシュ値により、正当性検証を行なうことができる。
【００７５】
なお、本実施形態では、一例としてＭＦＰの構成を示したが、これに限らず、ＴＰＭを用いて正当性検証を行なう機能を持ち、当該機能により正当性が検証されたソフトウェアにより制御されるサブシステムを内包するシステムであれば、どのようなシステムでも、本発明を適用することができる。
【符号の説明】
【００７６】
１・・・画像形成装置、８・・・本体制御部、２０・・・ＣＰＵ、２２・・・ＲＯＭ、２４・・・ＲＡＭ、２６・・・ＨＤＤ、２８・・・エンコーダ／デコーダ、４０、８０・・・ＴＰＭ、５０・・・ＮＶＲＡＭ、８２〜８４、４０４〜４０９・・・ＰＣＲ、９０、９２〜９４、５０６〜５０８・・・Ｂｌｏｂ、２０２・・・分割手段、２０４・・・記録手段、２０６・・・条件指定手段、２０８・・・ブロブ生成手段、２１０・・・データ保存手段、２１２・・・データ読出し手段、４１２・・・暗号化手段、４１４・・・復号手段。
【先行技術文献】
【特許文献】
【００７７】
【特許文献１】特開２００８−２２６１５９号公報
【特許文献２】特開２００８−２３４２１７号公報
【図１】
0005736994.tif 000002
【図２】
0005736994.tif 000003
【図３】
0005736994.tif 000004
【図４】
0005736994.tif 000005
【図５】
0005736994.tif 000006
【図６】
0005736994.tif 000007
【図７】
0005736994.tif 000008
【図８】
0005736994.tif 000009
【図９】
0005736994.tif 000010
【図１０】
0005736994.tif 000011