説明

情報処理装置、正当性検証方法、及びプログラム

【課題】TPM(Transfer Platform Module)内のレジスタのbit長よりも長いハッシュ値を用いて、当該TPMにより不正なソフトウェアの実行を防止する。
【解決手段】ソフトウェアのプログラム・コードから算出されるハッシュ値を記憶するPCR(Platform Configuration Register)404〜409と、PCR404〜409に記憶されたハッシュ値が予め指定された指定値と一致することを条件として、前記ソフトウェアを正当と判断し、暗号化されたデータの復号を行う復号手段414とを有するTPM40を備えた情報処理装置であって、前記ハッシュ値を分割して、PCR404〜409のbit長以下のbit長を持つ複数のbit列を生成する分割手段202と、前記複数のbit列を、それぞれPCR404〜409に記憶させる記録手段204と、を有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、正当性検証方法、及びプログラムに関し、特に、不正に改ざんされたソフトウェアの動作を防止する情報処理装置、当該情報処理装置における正当性検証方法、及びプログラムに関する。
【背景技術】
【0002】
近年、画像処理装置や複合機(MFP:Multifunction Printer)等の、コンピュータ(情報処理装置)が組み込まれた機器(組み込み機器)においても、セキュリティの向上が問題になってきている。
この問題に対処するため、機器内部に保有する使用者のプライベートな情報を保護し、機器ソフトウェアの不正な改ざんを防止すべく、その機器に対して製造メーカが保証できる正当なソフトウェアが動作することを保証する正当性検証を行うことで、不正ソフトの動作を防止するTPM(Trusted Platform Module)又はTPMチップと称されるセキュリティチップ(セキュリティ専用集積回路)を用いた仕組みが提案されている。
【0003】
図9は、TPMを用いた従来の情報処理装置における、起動時の正当性検証フローを示した模式図である。
図9の上部は、情報処理装置のプラットフォーム70、即ちCPU(Central Processing Unit)その他の、プログラムを実行するための基盤となるハードウェアの総体を示し、当該プラットフォーム70上で、各種のソフトウェア・プログラムが実行される。一例として図9においては、3つのモジュール(プログラム)、すなわち、BIOS(Basic Input/Output System)72と、OS(Operating System、オペレーティングシステム)等を含む基本パッケージ74と、各種のアプリケーション・ソフトウェアを含むアプリケーションパッケージ76とが、プラットフォーム70を構成するROM(Read Only Memory)等の不揮発性メモリからRAM(Random Access Memory)等の揮発性メモリに、それらの一部あるいは全部がロードされてCPUで実行される。また、図9下部は、当該情報処理装置が有するTPM80を示し、このTPM80は、後述するハッシュ値を記憶するレジスタであるPCR(Platform Configuration Register)82ないし84を有している。
【0004】
この情報処理装置は、電源投入等による起動時に、プラットフォーム70上で、まずBIOS72を不揮発性メモリからロードして実行する。このとき、BIOS72は自身のハッシュ値を算出して、TPM80が備えるPCR82に記憶する。ここで、ハッシュ値とは、プログラム・コードをハッシュ関数と称される特殊な関数により演算して得られる数値をいい、ハッシュ関数はプログラム・コードが異なれば異なるハッシュ値を生成する。このため、算出したハッシュ値が、例えば過去に算出したハッシュ値と一致すれば、そのプログラムは変更等が行われていない同一のプログラムであると判断することができる。このハッシュ関数として、従来、SHA−1と称される関数が用いられており、SHA−1は160bit(20byte)長のハッシュ値を生成する。なお、各プログラムのハッシュ値を記憶させるPCRは、プログラムの種類毎に予め定められている。
【0005】
続いてBIOS72は、次にロードされる基本パッケージ74のハッシュ値を算出する。このハッシュ値の算出は、通常、基本パッケージ74を不揮発性メモリから揮発性メモリにロードする際に行われる。そして、算出したハッシュ値を、PCR83に記憶する。
さらに、基本パッケージ74のハッシュ値の算出後に、揮発性メモリにロードされた基本パッケージ74に実行が移され、基本パッケージ74により、次にロードされるアプリケーションパッケージ76のハッシュ値が算出されて、算出されたハッシュ値がPCR84に記憶され、アプリケーションパッケージ76に実行が移管される。
【0006】
このように、BIOS72、基本パッケージ74、又はアプリケーションパッケージ76の各ブートステージ(実行開始処理)ごとに、PCR82ないし84に、順次、各プログラムのハッシュ値が記録されることでトラストチェーン(ソフトウェアの各階層毎に算出された一連のハッシュ値の記録)が構築される。
【0007】
また、TPM80は、内部に固有の秘密鍵をもち、この秘密鍵はTPM80を破壊しない限り物理的に取り出せない構造となっている。そして、暗号化すべきデータ(例えばユーザパスワード)と、暗号化後の当該データの復号条件であるPCR82ないし84の値の組み合わせとをTPM80に入力すると、TPM80は、保有する秘密鍵によりデータを暗号化し、暗号化したデータと上記復号条件とを含んだ情報を出力する。この情報をBlob(ブロブ)と呼ぶ。
【0008】
このBlobに含まれる暗号化されたデータは、暗号化の際に使用した固有の秘密鍵をもつTPM80を用いることで復号することができる。すなわち、BlobをTPM80に入力すると、TPM80は、Blobに含まれる復号条件、すなわち、PCR82ないし84の値の組み合わせを参照し、参照した値の組み合わせが、PCR82ないし84に現在記憶されている値の組み合わせと一致するか否かを判断する。そして、これらの組み合わせが一致すれば、当該Blobに含まれている暗号化されたデータを、TPM80が保有する秘密鍵により復号して、出力するのである。
【0009】
ここで、正当な(改ざんされていない状態の)BIOS72、正当な基本パッケージ74、及び正当なアプリケーションパッケージ76について予め算出された各ハッシュ値で構成されるPCR82ないし84の値の組み合わせを、Blobに含ませる上記復号条件として用いれば、これらのプログラムが正当である場合にのみ、暗号化されたデータが復号されることとなる。すなわち、上記復号条件を用いることにより、TPM80を用いて各ソフトウェア・プログラムの正当性検証を行なうことができ、当該検証の結果、各ソフトウェア・プログラムが正当である場合には、暗号化されたデータが出力されることとなる。また、暗号化するデータとして、ユーザパスワード等の秘密情報を用いれば、ソフトウェア・プログラムが正当でない場合には、ユーザパスワードを正しく照合できないこととなり、不正ソフトウェアの実行を防止することができる。
【0010】
図10は、TPMを用いた従来の情報処理装置における、データの暗号化動作及び復号動作を表した模式図である。
図10Aは、暗号化動作を示す模式図であり、図10Bは、復号動作を示す模式図である。
【0011】
まず、データの暗号化動作(図10A)では、TPM80に対し、図10A左側に示す暗号化すべきデータ(Data P)と、当該データの復号条件であるPCR82ないし84の値の組み合わせQ、R、Sが入力される。ここで、値Q、R、Sは、それぞれ、正当なBIOS72、正当な基本パッケージ74、及び正当なアプリケーションパッケージ76について予め算出されたハッシュ値とする。
【0012】
TPM80は、これらの入力情報に基づき、TPM80内部に保有する秘密鍵によりData Pを暗号化し、暗号化したData Pと復号条件Q、R、Sとを含むBlob90を作成する。なお、作成されたBlob90は、例えば、情報処理装置が備える不揮発性RAM(NVRAM、Non-volatile RAM)等に記憶される。
【0013】
次に、データの復号動作(図10B)は、上記のように作成されたBlobをTPM80に入力することにより行なわれる。一例とし、図10Bでは、図示左側に示すBlob92ないし94が、TPM80にそれぞれ入力されるものとする。
【0014】
図10Bの中央はTPM80であり、PCR82ないし84には、BIOS72、基本パッケージ74、及びアプリケーションパッケージ76について算出されたハッシュ値Q、R、Sがそれぞれ記憶されている。さらに、図示右側には、各Blob92ないし94に含まれるデータの復号が行なわれるか否かが、それぞれ、○及び×で示されている。
【0015】
Blob92は、復号条件であるPCR82ないし84の組み合わせとして3つの値(Q、R、S)が含まれており、これらの値と、PCR82ないし84に現在記憶されている値(Q、R、S)が一致することから、Blob92に含まれているData Pは、TPM80により復号されて出力されることとなる。
【0016】
一方、Blob93は、復号条件であるPCR82ないし84の組み合わせとして3つの値(Q、T、S)が含まれており、これらの値の組み合わせは、PCR82ないし84に現在記憶されている値(Q、R、S)とは一致しないため、Blob93に含まれているData Pは復号されない。
【0017】
さらに、Blob94は、復号条件であるPCR82ないし84の組み合わせとして、PCR82の値Qのみが指定されており、この値はPCR82に現在記憶されている値Qと一致するため、Blob94に含まれているData Pは復号されて出力される。
【0018】
上述した動作により、TPM80は、各ソフトウェアの正当性検証を行うと共に、各ソフトウェアが正当である場合にのみ暗号化されたデータを復号して出力することにより、不正なソフトウェアの実行を防止することができる。
【0019】
上記TPMを用いた情報処理装置として、例えば、プログラムの更新により当該プログラムのハッシュ値が変化したときに、更新前のプログラムのハッシュ値に基づいて作成されたBlobのデータが復号できなくなるのを回避するため、プログラムの更新時に、既存のBlobに含まれているデータを更新前のプログラムのハッシュ値に基づいて復号した後、更新後のプログラムのハッシュ値を用いて当該データを再暗号化してBlobを再生成する情報処理装置が知られている(特許文献1参照)。
【0020】
また、TPMを用いた情報処理装置の他の例として、固定ディスク装置等の記憶装置にデータを暗号化して保存しておくことを目的とし、当該データの暗号化及び復号に用いる暗号鍵を、TPMによりBlob内に暗号化して保存しておき、当該記憶装置へのデータの保存や読出しの際に当該暗号鍵をBlobから取得し、取得した暗号鍵を用いて記憶装置へのデータの保存や読出しを行なう情報処理装置が知られている(特許文献2参照)。
【0021】
ところで、種々の情報処理装置にデファクトスタンダードとして広く使用されている暗号方式では、近年のコンピュータの処理能力の進歩に伴って、当該暗号方式により作成された暗号が解読される危険性が高まっており、より解読困難な暗号方式への切り替えが必要となっている。
また、伝達された暗号データの改ざん検出(データ正当性検証)に使用されるハッシュ関数についても、広く使用されているハッシュ関数SHA−1では改ざんを検出できない事態が発生する可能性が高まっていることから、より安全性の高いハッシュ関数への変更が必要となっている。
【0022】
上記背景において、アメリカ合衆国政府の使用する暗号技術を決定する国立標準技術研究所(National Institute of Standards and Technology, NIST)は、当該政府の使用する標準暗号方式として従来使用してきた暗号鍵(RSA等)とハッシュ関数SHA−1とを、2010年12月30日までに、より長いbit長の暗号鍵や、より長いbit長のハッシュ値を与えるハッシュ関数へ変更することとしており、いわゆる「暗号の2010年問題」が生じている。
【0023】
日本においても、内閣官房情報セキュリティセンター(National Information Security Center, NISC)が、2013年を目処に、160bitのハッシュ値を与える従来のSHA−1に代えて256bitのハッシュ値を与えるSHA−256を採用する等の対応を決定している。
【0024】
ところが、本出願の出願時点において、TPMの規格を決定する業界団体であるTCG(Trusted Computing Group)から出されているTPMの仕様(TPM Main Specification Level 2 Version 1.2, Revision 1.3)は、ハッシュ関数SHA−1にのみ対応しており、取り扱えるハッシュ値は160bit(20byte)以下の長さに限定されている。すなわち、上記TPMの仕様においては、TPM内部のPCRが記憶できるハッシュ値の長さは最大160bitであり、かつ、PCRへの入力インタフェースも160bitであることから、TCGの規格に則った形では、256bit(36byte)長のハッシュ値を生成するハッシュ関数SHA-256を使用することはできず、上記2010年問題に対応できない。
【発明の概要】
【発明が解決しようとする課題】
【0025】
本発明は、上記従来の問題に鑑みなされたものであって、その目的は、TPMを用いた情報処理装置において、TPMが有するPCRのbit長よりも長いbit長のハッシュ値を用いて、ソフトウェアの正当性検証と保存データの暗号化・復号を行なえるようにすることである。
【課題を解決するための手段】
【0026】
本発明は、ソフトウェアのプログラム・コードから算出されるハッシュ値を記憶するレジスタと、前記レジスタに記憶された前記ハッシュ値が予め指定された指定値と一致することを条件として、前記ソフトウェアを正当と判断し、暗号化されたデータの復号を行う復号手段と、を有するTPM(Transfer Platform Module)を備えた情報処理装置であって、前記ハッシュ値を分割して、前記レジスタのbit長以下の長さを持つ複数のbit列を生成する分割手段と、前記複数のbit列を前記TPMに入力して、それぞれ前記レジスタに記憶させる手段と、を有する情報処理装置である。
また、本発明は、ソフトウェアのプログラム・コードから算出されるハッシュ値を記憶するレジスタと、前記レジスタに記憶された前記ハッシュ値が予め指定された指定値と一致することを条件として、前記ソフトウェアを正当と判断し、暗号化されたデータの復号を行う復号手段と、を有するTPM(Transfer Platform Module)を備えた情報処理装置における正当性検証方法であって、前記ハッシュ値を分割して、前記レジスタのbit長以下の長さを持つ複数のbit列を生成する分割工程と、前記分割工程において前記ハッシュ値を分割して生成された前記複数のbit列を、前記TPMに入力して、それぞれ前記レジスタに記憶させる工程と、を有する正当性検証方法である。
また、本発明は、ソフトウェアのプログラム・コードから算出されるハッシュ値を記憶するレジスタと、前記レジスタに記憶された前記ハッシュ値が予め指定された指定値と一致することを条件として、前記ソフトウェアを正当と判断し、暗号化されたデータの復号を行う復号手段とを有するTPM(Transfer Platform Module)を備えた情報処理装置のコンピュータを、前記ハッシュ値を分割して、前記レジスタのbit長以下の長さを持つ複数のbit列を生成する分割手段と、前記複数のbit列を前記TPMに入力して、それぞれ前記レジスタに記憶させる手段、として機能させるプログラムである。
【発明の効果】
【0027】
本発明によれば、TPMを用いた情報処理装置において、TPMが有するPCRのbit長よりも長いbit長のハッシュ値を用いて、ソフトウェアの正当性検証と保存データの暗号化・復号を行なうことができる。
【図面の簡単な説明】
【0028】
【図1】本発明の一実施形態に係る画像形成装置の構成を示すブロック図である。
【図2】図1に示す画像形成装置における、情報処理装置である本体制御部の構成を示すブロック図である。
【図3】図1に示す画像形成装置の、起動時におけるハッシュ値の記録処理を示した模式図である。
【図4】図1に示す画像形成装置における、データの暗号化動作及び復号動作を表した模式図である。
【図5】図1に示す画像形成装置が起動時に行なう、ハッシュ値記録処理の手順を示すフロー図である。
【図6】図1に示す画像形成装置における、ブロブ生成処理の手順を示すフロー図である。
【図7】図1に示す画像形成装置における、データ保存処理の手順を示すフロー図である。
【図8】図1に示す画像形成装置における、データ読出し処理の手順を示すフロー図である。
【図9】TPMを用いた従来の情報処理装置における、起動時の正当性検証フローを示した模式図である。
【図10】TPMを用いた従来の情報処理装置における、データの暗号化動作及び復号動作を表した模式図である。
【発明を実施するための形態】
【0029】
以下、図面を参照して、本発明の実施の形態を説明する。
本実施形態に係る画像形成装置は、印刷動作等の制御を行うコンピュータ(情報処理装置)を備え、当該情報処理装置は、ハッシュ関数SHA−1にのみ対応する160bit長のPCRを有するTPMを備える。そして、本画像形成装置は、ハッシュ関数SHA−256を用いて、ソフトウェア・プログラムについての256bit長のハッシュ値を算出し、当該ハッシュ値を分割して128bit長の2つのbit列を生成し、各bit列を個別のハッシュ値として上記160bit長の2つのPCRにそれぞれ記憶する。
【0030】
また、正当な上記ソフトウェア・プログラムについて予め算出されたハッシュ値を、上記と同様に分割して128bit長の2つのbit列を生成し、これら2つのbit列が表す2つの値を、復号条件、即ち、当該ソフトウェアの正当性判断条件としてBlobを生成する。
すなわち、本画像形成装置は、正当性検証を行なう対象であるソフトウェア毎に、PCRを2つずつペアにして用いて当該ソフトウェアのハッシュ値を記憶し、当該ペアを構成するPCR毎に復号条件を設定してBlobを生成することで、160bitのハッシュ値にしか対応していない従来のTPMチップを使用して、256bitのハッシュ値に基づく正当性検証を行なうものである。
【0031】
図1は、本発明の一実施形態に係る画像形成装置の構成を示すブロック図である。
本画像形成装置1は、印刷機能、画像読取機能、及びファクシミリ通信機能を備えた複合プリンタ(MFP:Multifunction Printer)であって、プリンタ(不図示)やスキャナ(不図示)により記録用紙への画像形成や原稿読み取り等を行うエンジンサブシステム2と、ファクシミリ装置(不図示)により公衆回線を介してファクシミリ通信を行なうFAX(facsimile、ファックス)サブシステム4と、操作用キーボード(不図示)等によりユーザからの入力を取得する操作部サブシステム6と、これら3つのサブシステムの動作を統括的に制御する情報処理装置である本体制御部8と、を有している。
【0032】
また、本体制御部8とエンジンサブシステム2はPCI express規格に準拠したシリアルバスであるPCIeバス10により接続されており、本体制御部8とFAXサブシステム4及び操作部サブシステム6とは、USB(Universal Serial Bus)規格に準拠したシリアルバスであるUSBバス12、14により、それぞれ接続されている。
【0033】
図2は、画像形成装置1における情報処理装置である本体制御部8の構成を示すブロック図である。
本体制御部8は、CPU20と、CPU20の起動時に実行されるBIOS220等のプログラムが書き込まれたROM22と、データの一時記憶のためのRAM24とで構成されるコンピュータと、データを記憶し保存する固定ディスク装置(HDD、Hard Disk Drive)26と、HDD26へ記憶するデータの暗号化及びHDD26から読み出されたデータの復号を行なうエンコーダ/デコーダ28と、ユーザに対しデータの表示等を行なう液晶表示装置(LCD、Liquid Crystal Display)30と、LCD30の表示画面上に配置され、ユーザがデータ等を入力する際に使用するタッチパネル32と、を有している。
【0034】
また、本体制御部8は、CPU20が実行するソフトウェアの正当性検証等を行なうセキュリティチップであるTPM40と、各種のソフトウェア・プログラムを記憶した不揮発性RAM(NVRAM)50と、を有している。
【0035】
TPM40は、入力されたデータを暗号化するための秘密鍵を記憶したメモリ402と、CPU20がBIOS220等のソフトウェア・プログラムについて算出したハッシュ値を記憶するレジスタであるPCR404ないし409と、TPM40内部の動作を制御する制御部410と、入力されたデータを上記秘密鍵により暗号化する暗号化手段412と、入力されたBlobに含まれる暗号化されたデータを、当該Blobに含まれる復号条件が満たされていることを条件に、上記秘密鍵により復号する復号手段414と、を有している。
【0036】
ここで、TPM40は、ハッシュ関数SHA−1が生成する160bitのハッシュ値にのみ対応し、PCR404ないし409が記憶できるハッシュ値の最大のbit長(PCR404ないし409のbit長)は、160bitとなっている。
【0037】
また、NVRAM50には、OSを含んだソフトウェア・プログラムである基本パッケージ502と、エンジンサブシステム2が制御するプリンタ(不図示)やスキャナ(不図示)、あるいは、FAXサブシステム4が制御するファクシミリ装置(不図示)等を動作させるためのソフトウェア・プログラムを含むアプリケーションパッケージ504と、TPM40が生成するBlob506ないし508が記憶されている。ここで、Blob506には、HDD26にデータを保存したりHDD26からデータを読み出す際に当該データの暗号化又は復号を行なうための暗号鍵が、暗号化された状態で含まれているものとする。
【0038】
さらに、本体制御部8は、CPU20が、ROM22又はNVRAM50に記憶されているコンピュータ・プログラムを実行することにより実現される機能実現手段として、分割手段202と、記録手段204と、条件指定手段206と、ブロブ生成手段208と、データ保存手段210と、データ読出し手段212と、を有している。なお、コンピュータ・プログラムは、コンピュータ読み取り可能な任意の記憶媒体に記憶させておくことができる。
【0039】
分割手段202は、CPU20がBIOS220等に基づいてハッシュ関数SHA−256により算出した、各ソフトウェア・プログラムについての256bitのハッシュ値のbit列を分割して、上位128bitのbit列と下位128bitのbit列に分割する。なお、256bitのハッシュ値の分割方法は、上記に限らず、分割後のbit列の長さが、PCR404ないし409のbit長(160bit)以下になるような分割方法であればよい。
【0040】
記録手段204は、分割手段202が生成した128bit長の2つのbit列を、個別のハッシュ値としてTPM40に入力し、TPM40が備えるPCR404ないし409のうち、いずれか2つのPCRにそれぞれ記憶させる。
【0041】
条件指定手段206は、ブロブ生成手段208がTPM40によりBlobを生成する際に、ソフトウェア・プログラムが正当である場合のハッシュ値を、復号条件(正当性判断条件)としてTPM40に入力する。ただし、上記正当である場合のハッシュ値は、ハッシュ関数SHA−256により256bitの値として与えられることから、条件指定手段206は、分割手段202と同様の方法により、上記正当である場合のハッシュ値を分割して128bit長の2つのbit列を生成し、これら2つのbit列を、当該ソフトウェアの正当性判断条件としてTPM40に入力する。
【0042】
ブロブ生成手段208は、正当な各ソフトウェア・プログラムについて算出されたハッシュ値を条件指定手段206に与えて上記2つのbit列をTPM40に入力させると共に、暗号化対象であるデータをTPM40に入力してBlobを生成する。
【0043】
データ保存手段210は、アプリケーションパッケージ504の実行時等において、HDD26へデータを保存する際に、NVRAM50からBlob506を読み出してTPM40に入力し、Blob506に含まれている暗号鍵をTPM40から取得する。また、取得した当該暗号鍵をエンコーダ/デコーダ28に渡し、エンコーダ/デコーダ28により保存データを暗号化してHDD26に記憶する。
【0044】
データ読出し手段212は、アプリケーションパッケージ504の実行時等において、HDD26からデータを読み出す際に、NVRAM50からBlob506を読み出してTPM40に入力し、Blob506に含まれている暗号鍵をTPM40から取得する。また、取得した当該暗号鍵をエンコーダ/デコーダ28に渡し、HDD26から読み出したデータをエンコーダ/デコーダ28により復号して、平文(暗号化されていない状態)のデータを得る。
【0045】
上記の構成を備える画像形成装置1は、ユーザが電源を投入すると、CPU20により、ROM22が記憶するBIOS220と、NVRAM50が記憶する基本パッケージ502及びアプリケーションパッケージ504を、順次、RAM24に読み出して実行する。その際、CPU20は、BIOS220及び基本パッケージ502を実行することにより、BIOS220、基本パッケージ502、及びアプリケーションパッケージ504のハッシュ値を算出してTPM40のPCR404ないし409に記憶する。
【0046】
図3は、画像形成装置1の、起動時におけるハッシュ値の記録処理を示した模式図である。
図3上部は、本体制御部8のプラットフォーム60、即ちCPU20その他の、プログラムを実行するための基盤となるハードウェアの総体を示し、当該プラットフォーム60上で、BIOS220と、基本パッケージ502と、アプリケーションパッケージ504とが実行される。また、図3下部はTPM40のPCR404ないし409を示している。
【0047】
図3に示す画像形成装置1におけるハッシュ値の記録処理と、図9に示す従来の情報処理装置におけるハッシュ値の記録処理との最大の違いは、図3においては、ハッシュ値算出にSHA−256を使用し、256bitの各ハッシュ値を、PCRを2つずつ使って記憶することである。また、TPM40に対するハッシュ値報告(ハッシュ値の入力)では、256bitのハッシュ値を、例えば半分ずつの、2つの128bitのbit列に分割し、これら2つのbit列を2つのハッシュ値として別々に報告(入力)する。
【0048】
画像形成装置1では、電源投入後に、まず、CPU20によりBIOS220が実行を開始し、BIOS220自身のハッシュ値をハッシュ関数SHA−256により算出する。そして、算出された256bitのハッシュ値を分割して2つの128bit長のbit列とし、各bit列を個別のハッシュ値としてTPM40に入力して、PCR404とPCR405にそれぞれ記憶する。次に、BIOS220は、次に実行される基本パッケージ502のハッシュ値をハッシュ関数SHA−256により算出し、上記と同様に2つの128bit長のbit列に分割して、TPM40のPCR406、407にそれぞれ記憶した後、基本パッケージ502に実行を移す。
【0049】
続いて、基本パッケージ502は、次に実行されるアプリケーションパッケージ504のハッシュ値をハッシュ関数SHA−256により算出し、上記と同様に2つの128bit長のbit列に分割して、TPM40のPCR408、409にそれぞれ記憶した後、アプリケーションパッケージ504に実行を移す。
【0050】
また、画像形成装置1は、TPM40により、ユーザパスワード等の秘密情報を含むデータの暗号化及び復号を行なう。
図4は、画像形成装置1における、データの暗号化動作及び復号動作を表した模式図である。
図4Aは、暗号化動作を示す模式図であり、図4Bは、復号動作を示す模式図である。
【0051】
まず、データの暗号化動作(図4A)では、TPM40に対し、図4A左側に示す暗号化すべきデータ(Data P)と、当該データの復号条件としてPCR404ないし409の値の組み合わせX1、X2、Y1、Y2、Z1、Z2が入力される。ここで、X1、X2は、BIOS220が正当である場合の256bitのハッシュ値を128bit長に分割して得られる2つの値、Y1、Y2は、基本パッケージ502が正当である場合の256bitのハッシュ値を128bit長に分割して得られる2つの値、Z1、Z2は、アプリケーションパッケージ504が正当である場合の256bitのハッシュ値を128bit長に分割して得られる2つの値とする。
【0052】
TPM40は、これら入力情報に基づき、TPM40のメモリ402に保有する秘密鍵によりData Pを暗号化し、暗号化したData Pと復号条件X1、X2、Y1、Y2、Z1、Z2とを含むBlob506を作成する。なお、本実施形態では、HDD26に記憶するデータの暗号化・復号に用いる暗号鍵を上記Data Pとして、Blob506が作成されるものとする。また、上記の暗号化動作は、例えば、画像形成装置1の初回起動時に、ユーザが初期設定としてユーザパスワードや暗号鍵などの秘密情報を入力したときに実行される。
【0053】
次に、データの復号動作(図4B)では、例えば図4B左側に示すBlob506ないし508が、TPM40にそれぞれ入力される。
このTPM40のPCR404ないし409には、それぞれ、BIOS220のハッシュ値を分割したX1、X2、基本パッケージ502のハッシュ値を分割したY1、Y2、及びアプリケーションパッケージ504のハッシュ値を分割したZ1、Z2が記憶されている。さらに、図4Bの図示右側には、各Blob506ないし508に含まれるデータの復号が行なわれるか否かが、それぞれ、○及び×で示されている。
【0054】
Blob506は、復号条件であるPCR404ないし409の値の組み合わせとして6つの値(X1、X2、Y1、Y2、Z1、Z2)が含まれており、これらの値と、PCR404ないし409に現在記憶されている値が一致するため、Blob506に含まれているData Pは、TPM40により復号されて出力されることとなる。また、Blob507は、復号条件が(X1、X2、G1、G2、Z1、Z2)となっており、これらの値の組み合わせは、PCR404ないし409に現在記憶されている値(X1、X2、Y1、Y2、Z1、Z2)とは一致しないため、Blob507に含まれているData Pは復号されない。さらに、Blob508は、復号条件としてPCR404、405の値X1、X2のみが指定されており、これらの値はPCR404、405に現在記憶されている値X1、X2と一致するため、Blob508に含まれているData Pは復号されて出力される。
【0055】
次に、画像形成装置1の動作手順について説明する。
画像形成装置1は、起動時にソフトウェア・プログラムのハッシュ値を算出してTPM40のPCR404ないし409に記録するハッシュ値記録処理、初回起動時に秘密情報を暗号化してBlobを生成するブロブ生成処理、アプリケーションパッケージ504に含まれるアプリケーショ・ソフトウェア等の実行時において、データ保存の際に保存データを暗号化してHDD26に記憶するデータ保存処理、及び、HDD26に保存されたデータを読み出して復号するデータ読出し処理を行う。
【0056】
まず、画像形成装置1が起動時に行なうハッシュ値記録処理の手順について、図5に示すフロー図にしたがって説明する。
まず、ユーザが画像形成装置1の電源を投入すると、CPU20は、ROM22が記憶するBIOS220を、RAM24にダウンロードして実行し(S101)、BIOS220自身のハッシュ値をハッシュ関数SHA−256により算出する(S102)。次に、分割手段202は、算出されたハッシュ値を分割して2つの128bit長のbit列を生成し(S103)、記録手段204は、生成した2つのbit列を個別のハッシュ値としてTPM40に入力し、PCR404、405にそれぞれ記憶させる(S104)。
【0057】
次に、CPU20は、BIOS220のプログラムに基づき、基本パッケージ502のハッシュ値をハッシュ関数SHA−256により算出し(S105)、分割手段202は、算出されたハッシュ値を分割して2つの128bit長のbit列を生成する(S106)。次に、記録手段204は、生成した2つのbit列を個別のハッシュ値としてTPM40に入力し、PCR406、407にそれぞれ記憶させた後(S107)、基本パッケージ502に実行を移す(S108)。
【0058】
続いて、CPU20は、基本パッケージ502のプログラムに基づき、アプリケーションパッケージ504のハッシュ値をハッシュ関数SHA−256により算出し(S109)、分割手段202は、算出されたハッシュ値を分割して2つの128bit長のbit列を生成する(S110)。次に、記録手段204は、生成した2つのbit列を個別のハッシュ値としてTPM40に入力し、PCR408、409にそれぞれ記憶させた後(S111)、アプリケーションパッケージ504に実行を移して(S112)、処理を終了する。
【0059】
次に、画像形成装置1における、ブロブ生成処理の手順について、図6に示すフロー図にしたがって説明する。
本処理は、画像形成装置1の初回起動時に、初期設定としてユーザが秘密情報であるデータを入力したときに、開始する。
【0060】
処理を開始すると、ブロブ生成手段208は、改ざんが行なわれていない正当なBIOS220のハッシュ値Xと、正当な基本パッケージ502のハッシュ値Yと、正当なアプリケーションパッケージ504のハッシュ値Zとを、条件指定手段206に渡す(S201)。ここで、これらのハッシュ値X、Y、Zは、例えば、予め算出してプログラムの中に含めておくことができる。
【0061】
次に、条件指定手段206は、ハッシュ値X、Y、Zを分割し、それぞれ、2つの128bit長のbit列、X1とX2、Y1とY2、及びZ1とZ2を生成し(S202)、PCR404ないし409の値の組み合わせ(X1、X2、Y1、Y2、Z1、Z2)を、復号条件としてTPM40に入力し(S203)、ブロブ生成手段208は、初期設定としてユーザが入力したデータをTPM40に入力する(S204)。なお、本実施形態では、当該データは、HDD26に記憶するデータの暗号化及び復号を行なうための暗号鍵とする。
【0062】
これにより、TPM40は、入力されたデータ(暗号鍵)を、メモリ402に保存されている秘密鍵により暗号化し、当該暗号化したデータと、上記入力された復号条件とを含むBlob506を出力する。
【0063】
次に、ブロブ生成手段208は、TPM40からBlob506を取得し(S205)、取得したBlob506をNVRAM50に記憶させた後(S206)、処理を終了する。
【0064】
次に、画像形成装置1における、データ保存処理の手順について、図7に示すフロー図にしたがって説明する。
本処理は、アプリケーションパッケージ504に含まれるアプリケーショ・ソフトウェア等の実行時において、HDD26へのデータ保存を行う際に開始する。
処理を開始すると、データ保存手段210は、まずBlob506をNVRAM50から読み出して、TPM40に入力する(S301)。
【0065】
これに対し、TPM40は、入力されたBlob506に含まれている復号条件、すなわち、PCR404ないし409の値の組み合わせ(X1、X2、Y1、Y2、Z1、Z2)を参照し、この値の組み合わせがPCR404ないし409に現在記憶されている値の組み合わせと一致するか否かを判断する。そして、一致するときは、Blob506に含まれている暗号化されたデータ(暗号鍵)を、メモリ402に保存されている秘密鍵により復号して出力し、一方、一致しないときは、例えば、所定のエラーコードを出力する。
【0066】
次に、データ保存手段210は、TPM40が暗号鍵を出力したか否かを判断し(S302)、暗号鍵を出力したときは(S302、Yes)、出力された暗号鍵をエンコーダ/デコーダ28に入力すると共に(S303)、HDD26に保存する保存データとそのファイル名とを、エンコーダ/デコーダ28に入力する(S304)。
【0067】
続いて、エンコーダ/デコーダ28は、暗号鍵により保存データを暗号化し、暗号化した保存データを、上記ファイル名を用いてHDD26に記憶させた後(S305)、暗号鍵を破棄して(S306)、処理を終了する。
【0068】
一方、ステップS302においてTPM40が暗号鍵を出力しなかったときは(S302、No)、データ保存手段210は、LCD30にエラーメッセージを表示して(S307)、処理を終了する。
【0069】
次に、画像形成装置1におけるデータ読出し処理の手順について、図8に示すフロー図にしたがって説明する。
本処理は、アプリケーションパッケージ504に含まれるアプリケーショ・ソフトウェア等の実行時において、HDD26からデータ読出しを行う際に開始する。
処理を開始すると、データ読出し手段212は、Blob506をNVRAM50から読み出して、TPM40に入力する(S401)。
【0070】
次に、データ読出し手段212は、TPM40が暗号鍵を出力したか否かを判断し(S402)、暗号鍵を出力したときは(S402、Yes)、出力された暗号鍵をエンコーダ/デコーダ28に入力する(S403)。そして、エンコーダ/デコーダ28を介して、HDD26に対し、読み出すデータのファイル名を指定する(S404)。
【0071】
続いて、HDD26は、指定されたファイル名で保存されているデータをエンコーダ/デコーダ28に出力し(S405)、エンコーダ/デコーダ28は、HDD26が出力したデータを、暗号鍵を用いて復号して出力した後(S406)、暗号鍵を破棄して(S407)、処理を終了する。
【0072】
一方、ステップS402においてTPM40が暗号鍵を出力しなかったときは(S402、No)、データ読出し手段212は、LCD30にエラーメッセージを表示して(S408)、処理を終了する。
【0073】
以上説明したように、本実施形態では、正当性検証の対象であるソフトウェア毎に、ハッシュ関数SHA−256が生成する256bitのハッシュ値を分割して、128bit長の2つのbit列を生成し、生成したbit列が表す値をTPM40が備えるPCR404ないし409のうち2つのPCRに記憶させる。また、Blobを生成する際には、暗号化データの復号条件(即ち、正当性判断条件)として、正当な上記ソフトウェア・プログラムについての256bitのハッシュ値を、上記と同様に分割し、当該分割によって得られる2つの値の組み合わせを、暗号化データの復号条件(即ち、正当性判断条件)としてTPM40に入力する。
【0074】
これにより、画像形成装置1は、ハッシュ関数SHA−1が生成する160bit長のハッシュ値にしか対応していないTPM40を用いて、「暗号の2010年問題」に対応したハッシュ関数SHA−256により算出される256bitのハッシュ値により、正当性検証を行なうことができる。
【0075】
なお、本実施形態では、一例としてMFPの構成を示したが、これに限らず、TPMを用いて正当性検証を行なう機能を持ち、当該機能により正当性が検証されたソフトウェアにより制御されるサブシステムを内包するシステムであれば、どのようなシステムでも、本発明を適用することができる。
【符号の説明】
【0076】
1・・・画像形成装置、8・・・本体制御部、20・・・CPU、22・・・ROM、24・・・RAM、26・・・HDD、28・・・エンコーダ/デコーダ、40、80・・・TPM、50・・・NVRAM、82〜84、404〜409・・・PCR、90、92〜94、506〜508・・・Blob、202・・・分割手段、204・・・記録手段、206・・・条件指定手段、208・・・ブロブ生成手段、210・・・データ保存手段、212・・・データ読出し手段、412・・・暗号化手段、414・・・復号手段。
【先行技術文献】
【特許文献】
【0077】
【特許文献1】特開2008−226159号公報
【特許文献2】特開2008−234217号公報

【特許請求の範囲】
【請求項1】
ソフトウェアのプログラム・コードから算出されるハッシュ値を記憶するレジスタと、前記レジスタに記憶された前記ハッシュ値が予め指定された指定値と一致することを条件として、前記ソフトウェアを正当と判断し、暗号化されたデータの復号を行う復号手段と、を有するTPM(Transfer Platform Module)を備えた情報処理装置であって、
前記ハッシュ値を分割して、前記レジスタのbit長以下の長さを持つ複数のbit列を生成する分割手段と、
前記複数のbit列を前記TPMに入力して、それぞれ前記レジスタに記憶させる手段と、
を有する情報処理装置。
【請求項2】
請求項1に記載された情報処理装置において、
前記複数のbit列が記憶されている前記レジスタ毎の前記指定値を、前記ソフトウェア毎に前記TPMに入力する条件指定手段を有する情報処理装置。
【請求項3】
ソフトウェアのプログラム・コードから算出されるハッシュ値を記憶するレジスタと、前記レジスタに記憶された前記ハッシュ値が予め指定された指定値と一致することを条件として、前記ソフトウェアを正当と判断し、暗号化されたデータの復号を行う復号手段と、を有するTPM(Transfer Platform Module)を備えた情報処理装置における正当性検証方法であって、
前記ハッシュ値を分割して、前記レジスタのbit長以下の長さを持つ複数のbit列を生成する分割工程と、
前記分割工程において前記ハッシュ値を分割して生成された前記複数のbit列を、前記TPMに入力して、それぞれ前記レジスタに記憶させる工程と、
を有する正当性検証方法。
【請求項4】
ソフトウェアのプログラム・コードから算出されるハッシュ値を記憶するレジスタと、前記レジスタに記憶された前記ハッシュ値が予め指定された指定値と一致することを条件として、前記ソフトウェアを正当と判断し、暗号化されたデータの復号を行う復号手段とを有するTPM(Transfer Platform Module)を備えた情報処理装置のコンピュータを、
前記ハッシュ値を分割して、前記レジスタのbit長以下の長さを持つ複数のbit列を生成する分割手段と、
前記複数のbit列を前記TPMに入力して、それぞれ前記レジスタに記憶させる手段、
として機能させるプログラム。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2013−3786(P2013−3786A)
【公開日】平成25年1月7日(2013.1.7)
【国際特許分類】
【出願番号】特願2011−133505(P2011−133505)
【出願日】平成23年6月15日(2011.6.15)
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】