(57)【要約】【課題】デジタル署名が無効な状態になってもソフトウェアの正当性を検証可能な情報処理装置、ソフトウェア検証方法及びソフトウェア検証プログラムを提供することを目的とする。【解決手段】情報処理装置１であって、ソフトウェア１５の正当性を検証する為に利用される証明書の失効を検知する失効検知手段６１と、証明書を利用してソフトウェア１５の正当性を検証するソフトウェア検証手段６３と、証明書が格納されている格納手段１１とを有し、ソフトウェア検証手段６３は、証明書が失効しておらず、ソフトウェア１５に正当性があるときに、ソフトウェア１５から一意に計算される値を、格納手段１１に格納しておき、証明書が失効しているか又はソフトウェア１５に正当性がないときに、ソフトウェア１５から一意に計算される値を用いてソフトウェア１５の正当性を検証することにより上記課題を解決する。【選択図】図６
2008226160.tif 000002
【特許請求の範囲】
【請求項１】
動作させるソフトウェアの正当性を検証する情報処理装置であって、
前記ソフトウェアの正当性を検証する為に利用される証明書の失効を検知する失効検知手段と、
前記証明書を利用して前記ソフトウェアの正当性を検証するソフトウェア検証手段と、
前記証明書が格納されている格納手段とを有し、
前記ソフトウェア検証手段は、前記証明書が失効しておらず、前記ソフトウェアに正当性があるときに、前記ソフトウェアから一意に計算される値を、前記格納手段に格納しておき、前記証明書が失効しているか又は前記ソフトウェアに正当性がないときに、前記ソフトウェアから一意に計算される値を用いて前記ソフトウェアの正当性を検証することを特徴とする情報処理装置。
【請求項２】
前記失効検知手段は、証明書の有効期限をチェックすることで前記証明書の失効を検知することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記失効検知手段は、外部のサーバからネットワーク経由で提供された、失効した証明書のリストをチェックすることで前記証明書の失効を検知することを特徴とする請求項１記載の情報処理装置。
【請求項４】
前記失効検知手段は、前記ソフトウェア、又は前記ソフトウェアの正当性を検証する為に利用される暗号鍵の証明書の失効を検知することを特徴とする請求項２又は３記載の情報処理装置。
【請求項５】
前記ソフトウェア検証手段は、前記証明書が失効しておらず、前記ソフトウェアに正当性があるときに、前記ソフトウェアのハッシュ値を、前記格納手段に格納しておき、前記証明書が失効しているか又は前記ソフトウェアに正当性がないときに、前記ソフトウェアのハッシュ値を用いて前記ソフトウェアの正当性を検証することを特徴とする請求項１記載の情報処理装置。
【請求項６】
前記ソフトウェア検証手段は、前記証明書が失効しておらず、前記ソフトウェアに正当性があるときに、前記ソフトウェアのハッシュ値のリストを、前記格納手段に格納しておき、前記証明書が失効しているか又は前記ソフトウェアに正当性がないときに、前記ソフトウェアのハッシュ値のリストを用いて前記ソフトウェアの正当性を検証することを特徴とする請求項１記載の情報処理装置。
【請求項７】
前記証明書が失効しているか又は前記ソフトウェアに正当性がないときに、その旨を表示する表示手段を更に有することを特徴とする請求項１記載の情報処理装置。
【請求項８】
前記格納手段は、ＴＰＭ（Trusted Platform Module）によって実現されることを特徴とする請求項１乃至７何れか一項記載の情報処理装置。
【請求項９】
動作させるソフトウェアの正当性を検証する情報処理装置のソフトウェア検証方法であって、
前記ソフトウェアの正当性を検証する為に利用される証明書の失効を検知する失効検知ステップと、
前記証明書を利用して前記ソフトウェアの正当性を検証するソフトウェア検証ステップと、
前記証明書を格納手段に格納する格納ステップとを有し、
前記ソフトウェア検証ステップは、前記証明書が失効しておらず、前記ソフトウェアに正当性があるときに、前記ソフトウェアから一意に計算される値を、前記格納手段に格納しておき、前記証明書が失効しているか又は前記ソフトウェアに正当性がないときに、前記ソフトウェアから一意に計算される値を用いて前記ソフトウェアの正当性を検証することを特徴とするソフトウェア検証方法。
【請求項１０】
前記失効検知ステップは、証明書の有効期限をチェックすることで前記証明書の失効を検知することを特徴とする請求項９記載のソフトウェア検証方法。
【請求項１１】
前記失効検知ステップは、外部のサーバからネットワーク経由で提供された、失効した証明書のリストをチェックすることで前記証明書の失効を検知することを特徴とする請求項１０記載のソフトウェア検証方法。
【請求項１２】
前記失効検知ステップは、前記ソフトウェア、又は前記ソフトウェアの正当性を検証する為に利用される暗号鍵の証明書の失効を検知することを特徴とする請求項１０又は１１記載のソフトウェア検証方法。
【請求項１３】
前記ソフトウェア検証ステップは、前記証明書が失効しておらず、前記ソフトウェアに正当性があるときに、前記ソフトウェアのハッシュ値を、前記格納手段に格納しておき、前記証明書が失効しているか又は前記ソフトウェアに正当性がないときに、前記ソフトウェアのハッシュ値を用いて前記ソフトウェアの正当性を検証することを特徴とする請求項９記載のソフトウェア検証方法。
【請求項１４】
前記ソフトウェア検証ステップは、前記証明書が失効しておらず、前記ソフトウェアに正当性があるときに、前記ソフトウェアのハッシュ値のリストを、前記格納手段に格納しておき、前記証明書が失効しているか又は前記ソフトウェアに正当性がないときに、前記ソフトウェアのハッシュ値のリストを用いて前記ソフトウェアの正当性を検証することを特徴とする請求項９記載のソフトウェア検証方法。
【請求項１５】
前記証明書が失効しているか又は前記ソフトウェアに正当性がないときに、その旨を表示手段に表示する表示ステップを更に有することを特徴とする請求項９記載のソフトウェア検証方法。
【請求項１６】
前記格納手段は、ＴＰＭ（Trusted Platform Module）によって実現されることを特徴とする請求項９乃至１５何れか一項記載のソフトウェア検証方法。
【請求項１７】
動作させるソフトウェアの正当性を検証する情報処理装置に、
前記ソフトウェアの正当性を検証する為に利用される証明書の失効を検知する失効検知手順と、
前記証明書を利用して前記ソフトウェアの正当性を検証するソフトウェア検証手順と、
前記証明書を格納手段に格納する格納手順とを実行させ、
前記ソフトウェア検証手順は、前記証明書が失効しておらず、前記ソフトウェアに正当性があるときに、前記ソフトウェアから一意に計算される値を、前記格納手段に格納しておき、前記証明書が失効しているか又は前記ソフトウェアに正当性がないときに、前記ソフトウェアから一意に計算される値を用いて前記ソフトウェアの正当性を検証させるように実行させることを特徴とするソフトウェア検証プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、ソフトウェア検証方法及びソフトウェア検証プログラムに係り、特に動作させるソフトウェアの正当性を検証する情報処理装置、その情報処理装置で利用するソフトウェア検証方法及びソフトウェア検証プログラムに関する。
【背景技術】
【０００２】
例えば情報処理装置の一例としての複合機（ＭＦＰ）では、動作させるソフトウェアの正当性を検証することが、セキュリティを確保する上で必要である。例えば複合機は不正なソフトウェアの動作を許可してしまうと、操作者の意図しない動作や操作者が蓄積したデータに対する不正なアクセス等がなされる可能性もあった。
【０００３】
ソフトウェアの正当性を検証することはＩＥＥＥ  Ｐ２６００で標準化を進めている複合機の要求仕様（情報セキュリティ機器の認証スキームＩＳＯ１５４０８／ＣｏｍｍｏｎＣｒｉｔｅｒｉａ／ＣＣで言うところのＰｒｏｔｅｃｔｉｏｎＰｒｏｆｉｌｅ／ＰＰ）にも挙げられている。例えば特許文献１には動作させるアプリケーション（アプリ）の正当性を検証してアプリの動作可否を判断する内容が記載されている。
【特許文献１】特表２００３−５０７７８５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来の複合機には、ソフトウェアの正当性を検証する仕組みとしてデジタル署名を利用しているものがあった。しかしながら、従来の複合機には、デジタル署名の有効期限が切れてしまった場合やデジタル署名に利用した共通ルート鍵が漏洩してしまった場合について考慮しているものが無かった。
【０００５】
例えば複合機はデジタル署名の有効期限が切れてしまった場合やデジタル署名に利用した共通ルート鍵が漏洩してしまった場合など、デジタル署名が無効な状態になる度に利用できなくなるのでは不便である。
【０００６】
本発明は、上記の点に鑑みなされたもので、デジタル署名が無効な状態になってもソフトウェアの正当性を検証可能な情報処理装置、ソフトウェア検証方法及びソフトウェア検証プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するため、本発明は、動作させるソフトウェアの正当性を検証する情報処理装置であって、前記ソフトウェアの正当性を検証する為に利用される証明書の失効を検知する失効検知手段と、前記証明書を利用して前記ソフトウェアの正当性を検証するソフトウェア検証手段と、前記証明書が格納されている格納手段とを有し、前記ソフトウェア検証手段は、前記証明書が失効しておらず、前記ソフトウェアに正当性があるときに、前記ソフトウェアから一意に計算される値を、前記格納手段に格納しておき、前記証明書が失効しているか又は前記ソフトウェアに正当性がないときに、前記ソフトウェアから一意に計算される値を用いて前記ソフトウェアの正当性を検証することを特徴とする。
【０００８】
本発明は、動作させるソフトウェアの正当性を検証する情報処理装置のソフトウェア検証方法であって、前記ソフトウェアの正当性を検証する為に利用される証明書の失効を検知する失効検知ステップと、前記証明書を利用して前記ソフトウェアの正当性を検証するソフトウェア検証ステップと、前記証明書を格納手段に格納する格納ステップとを有し、前記ソフトウェア検証ステップは、前記証明書が失効しておらず、前記ソフトウェアに正当性があるときに、前記ソフトウェアから一意に計算される値を、前記格納手段に格納しておき、前記証明書が失効しているか又は前記ソフトウェアに正当性がないときに、前記ソフトウェアから一意に計算される値を用いて前記ソフトウェアの正当性を検証することを特徴とする。
【０００９】
本発明は、動作させるソフトウェアの正当性を検証する情報処理装置に、前記ソフトウェアの正当性を検証する為に利用される証明書の失効を検知する失効検知手順と、前記証明書を利用して前記ソフトウェアの正当性を検証するソフトウェア検証手順と、前記証明書を格納手段に格納する格納手順とを実行させ、前記ソフトウェア検証手順は、前記証明書が失効しておらず、前記ソフトウェアに正当性があるときに、前記ソフトウェアから一意に計算される値を、前記格納手段に格納しておき、前記証明書が失効しているか又は前記ソフトウェアに正当性がないときに、前記ソフトウェアから一意に計算される値を用いて前記ソフトウェアの正当性を検証させるように実行させることを特徴とするソフトウェア検証プログラムであることを特徴とする。
【００１０】
なお、本発明の構成要素、表現または構成要素の任意の組合せを、方法、装置、システム、コンピュータプログラム、記録媒体、データ構造などに適用したものも本発明の態様として有効である。
【発明の効果】
【００１１】
本発明によれば、デジタル署名が無効な状態になってもソフトウェアの正当性を検証可能な情報処理装置、ソフトウェア検証方法及びソフトウェア検証プログラムを提供可能である。
【発明を実施するための最良の形態】
【００１２】
次に、本発明を実施するための最良の形態を、以下の実施例に基づき図面を参照しつつ説明していく。なお、情報処理装置の一例としての複合機は、ある機能を実現する目的で構成された機器組込み型システム（組込み）の一例である。まず、本発明の理解を容易とする為、ＴＰＭ（Trusted Platform Module ）を利用してソフトウェアの正当性を検証する処理について説明する。
【００１３】
図１はＴＰＭを利用してソフトウェアの正当性を検証する処理を表した一例のイメージ図である。ＴＰＭ１１は例えばマザーボードに直付けされるチップで実現される。複合機１の起動時、ＢＩＯＳ１２のＣＲＴＭ及びＰＯＳＴ、ブート１３のｂｏｏｔ１〜３及びｎｅｔｂｓｄの原文から固定長の疑似乱数を生成する演算手法によって計算されるハッシュ値がＴＰＭ１１のＰＣＲ（Platform Configuration Register）へ格納される。ＴＰＭ１１のＰＣＲには、複合機１の起動に伴い、ファームウェアに応じたハッシュ値が格納されることとなる。
【００１４】
なお、ＢＩＯＳ１２のＣＲＴＭからブート１３のｂｏｏｔ１（ＭＢＲ）までの検証仕様はＴＣＧ（Trusted Computing Group）により規定されている。図１における実線の矢印は起動フローを表す。破線の矢印は検証アクションを示す。図１における「ｍｅａｓｕｒｅ」はＴＣＧ方式によるものである。「Ｒｅｐｏｒｔ」はＴＰＭ１１に対するハッシュ値の報告を表している。
【００１５】
ブート１３のｂｏｏｔ３以降に起動されるｎｅｔｂｓｄ（ｋｅｒｎｅｌ），ｄｉａｇ及びシステム１４のプラットフォーム検証モジュール等のモジュールはＳＥＲＥＳ認証（ＲＳＡ認証）の仕組みで認証される。ＴＰＭ１１はＰＣＲに格納されたハッシュ値に基づくアクセスコントロールを実施する。
【００１６】
複合機１は、ＴＰＭ１１内にあるＰＣＲへファームウェアを構成する各モジュールから一意に計算されるハッシュ値を格納し、ＰＣＲに登録されたハッシュ値を共通ルート鍵のアクセス条件とすることで、不正なシステムによるデータ窃取から共通ルート鍵を保護している。つまり、複合機１はファームウェアのブート１３までＴＰＭ１１の仕組みを利用して共通ルート鍵へのアクセス制御を行っている。具体的に、複合機１は共通ルート鍵を暗号化しておき、復号鍵をＴＰＭ１１の仕組みで保護することで共通ルート鍵へのアクセス制御を行っている。
【００１７】
そして、複合機１はシステム１４より上位のソフトウェアであるコピーやスキャナなどのアプリケーション（ソフトウェア）の正当性の検証を、アプリケーションのハッシュ値を暗号化したデジタル署名を付与し、ＴＰＭ１１内に格納された共通ルート鍵を利用してデジタル署名のチェックを行うことで実現している。
【００１８】
図２は、共通ルート鍵，ファームウェアの署名鍵及びデジタル署名の関係を表した一例のイメージ図である。図２に示すように、共通ルート鍵２１は各署名用鍵２２〜２５のデジタル署名に利用される。また、各署名用鍵２２〜２５はシステム，オプション，共通オプションなどの各種モジュール２６〜３０のデジタル署名に利用される。
【００１９】
図３はモジュールのインストール時におけるデジタル署名をチェックする仕組みを表した一例のイメージ図である。複合機１Ａ〜１Ｄは時間の経過を表している。また、複合機１Ａは共通オプション２８を、そのまま導入できないことを表している。
【００２０】
複合機１Ｂは共通ルート鍵２１を利用して共通オプション署名用鍵２３のデジタル署名のチェックを行った後、共通オプション署名用鍵２３を導入することを表している。複合機１Ｃは、共通オプション署名用鍵２３を利用して共通オプション２８のデジタル署名のチェックを行ったあと、複合機１Ｄのように共通オプション２８を導入することを表している。
【００２１】
本発明の複合機１においてソフトウェアの正当性を検証する為に利用するデジタル署名は共通ルート鍵２１が危殆化することや、格納している場所がクラッキングされるなどで漏洩してしまうこと等を想定して、有効性をチェックする必要がある。
【００２２】
図４は共通ルート鍵証明書の有効性をチェックする手法のイメージ図である。図４の複合機１は内部時計４１によって、ＴＰＭ１１の内部に格納している共通ルート鍵証明書の有効期限をチェックすることで、共通ルート鍵証明書の有効性をチェックする。図５は共通ルート鍵証明書の有効性をチェックする他の手法のイメージ図である。図５の複合機１は外部のサーバ２によって開示されている、失効した共通ルート鍵証明書のリスト（失効リスト）をチェックすることで、共通ルート鍵証明書の有効性をチェックする。図５には第三者信頼機関（ＴＴＰ）のサーバ３が含まれている。
【００２３】
以下では、共通ルート鍵証明書やアプリケーションの署名用鍵証明書の有効期限が切れた場合にソフトウェアの正当性を検証する実施例１と、失効リストに共通ルート鍵証明書やアプリケーションの署名用鍵証明書が載った（共通ルート鍵証明書やアプリケーションの署名用鍵が失効した）場合にソフトウェアの正当性を検証する実施例２とに分けて説明する。
【実施例１】
【００２４】
図６は共通ルート鍵証明書の有効期限が切れた場合にソフトウェアの正当性を検証する処理を表した一例の構成図である。実施例１は複合機１における共通ルート鍵の時限的な失効を脅威とするものである。実施例１の複合機１は共通ルート鍵証明書の有効期限で共通ルート鍵の時限的な失効を判断する。
【００２５】
図６の複合機１はブート１３に共通ルート鍵証明書の有効期限で共通ルート鍵の時限的な失効を検知する失効検知モジュール６１を有する。複合機１のシステム１４はプラットフォームの正当性を検証するプラットフォーム検証モジュール６２と、アプリケーション１５の正当性を検証するアプリ検証モジュール６３とを有する。
【００２６】
図６の複合機１は、共通ルート鍵が危殆化する前、正常起動しているアプリケーション１５のハッシュ値を記録しておく。共通ルート鍵が危殆化した場合、複合機１は記録しておいた正常起動しているアプリケーション１５のハッシュ値を頼りにアプリケーション１５の正当性を検証する。
【００２７】
図７は共通ルート鍵証明書の有効期限が切れていない場合の複合機の動作を表した一例のシーケンス図である。ステップＳ１に進み、ｂｏｏｔ３  ６４は失効検知モジュール６１，ｎｅｔｂｓｄ（ｋｅｒｎｅｌ）などのハッシュ値を計算する。
【００２８】
ステップＳ２に進み、ｂｏｏｔ３  ６４は計算したハッシュ値を、ＴＰＭ１１のＰＣＲへ格納する。ステップＳ３に進み、ｂｏｏｔ３  ６４は失効検知モジュール６１を起動させる。ステップＳ４に進み、失効検知モジュール６１はプラットフォーム検証モジュール６２に共通ルート鍵証明書を要求する。
【００２９】
ステップＳ５に進み、プラットフォーム検証モジュール６２はＴＰＭ１１に、ＰＣＲへ格納されているＰＣＲ値を要求する。ステップＳ６に進み、ＴＰＭ１１はＴＰＭ署名付きＰＣＲ値をプラットフォーム検証モジュール６２に送信する。
【００３０】
ステップＳ７に進み、プラットフォーム検証モジュール６２はリポジトリ１６に正規ＰＣＲ値を要求する。ステップＳ８に進み、プラットフォーム検証モジュール６２はリポジトリ１６から正規ＰＣＲ値を受信する。
【００３１】
ステップＳ９に進み、プラットフォーム検証モジュール６２は、ＴＰＭ署名付きＰＣＲ値および正規ＰＣＲ値が同じであるかを確認する。ＴＰＭ署名付きＰＣＲ値および正規ＰＣＲ値が同じであるとき、プラットフォーム検証モジュール６２は、ブート１３に正当性があると判断する。ここでは、ＴＰＭ署名付きＰＣＲ値および正規ＰＣＲ値が同じであるとする。
【００３２】
ステップＳ１０に進み、プラットフォーム検証モジュール６２は共通ルート鍵証明書をＴＰＭ１１に要求する。ステップＳ１１に進み、プラットフォーム検証モジュール６２はＴＰＭ１１から共通ルート鍵証明書を受信する。
【００３３】
ステップＳ１２に進み、プラットフォーム検証モジュール６２は共通ルート鍵証明書を失効検知モジュール６１に送信する。ステップＳ１３に進み、失効検知モジュール６１は共通ルート鍵証明書の有効期限を確認する。ここでは、共通ルート鍵証明書の有効期限が切れていないものとする。
【００３４】
ステップＳ１４に進み、失効検知モジュール６１は、各アプリケーション１５の署名用鍵証明書の有効期限を確認する。ここでは、各アプリケーション１５の署名用鍵証明書の有効期限が切れていないものとする。ステップＳ１５に進み、失効検知モジュール６１はアプリ検証モジュール６３に各アプリケーション１５の正当性の検証を要求する。
【００３５】
ステップＳ１６に進み、アプリ検証モジュール６３は各アプリケーション１５のデジタル署名の検証を行う。ここではデジタル署名が正しいものとする。アプリ検証モジュール６３はステップＳ１７に進み、各アプリケーション１５のハッシュ値を計算する。ステップＳ１８に進み、アプリ検証モジュール６３は各アプリケーション１５のハッシュ値の署名要求をＴＰＭ１１へ行う。
【００３６】
なお、署名要求は各アプリケーション１５のハッシュ値毎に行ってもよいし、全てのアプリケーション１５のハッシュ値をリストにし、そのリストに対して行うようにしてもよい。それらの組み合わせとして、署名要求は各アプリケーション１５のハッシュ値毎に行うと共に、全てのアプリケーション１５のハッシュ値をリストにし、そのリストに対して行うようにしてもよい。
【００３７】
署名要求は各アプリケーション１５のハッシュ値毎に行うと、アプリケーション１５毎の有効期限が切れた場合に対応しやすい。また、署名要求は全てのアプリケーション１５のハッシュ値をリストにし、そのリストに対して行うと、後でデジタル署名を検証する場合に処理が少なくて済む。
【００３８】
ステップＳ１９に進み、ＴＰＭ１１はＴＰＭ１１内に格納されている共通ルート鍵（秘密鍵）を利用して、各アプリケーション１５のハッシュ値又はリストにデジタル署名を行う。ステップＳ２０に進み、ＴＰＭ１１はＴＰＭ署名付きハッシュ値又はリストをアプリ検証モジュール６３に送信する。
【００３９】
ステップＳ２１に進み、アプリ検証モジュール６３はＴＰＭ署名付きハッシュ値又はリストをリポジトリ１６に格納する。ステップＳ２２に進み、アプリ検証モジュール６３はリポジトリ１６からＴＰＭ署名付きハッシュ値又はリストの格納結果を受信する。ここではＴＰＭ署名付きハッシュ値又はリストを格納できたものとする。
【００４０】
ステップＳ２３に進み、アプリ検証モジュール６３は各アプリケーション１５の正当性の検証結果を失効検知モジュール６１に通知する。失効検知モジュール６１はステップＳ２４に進み、各アプリケーション１５に正当性があるという結果をｂｏｏｔ３  ６４に通知する。このあと、ｂｏｏｔ３  ６４は各アプリケーション１５を起動する。
【００４１】
図７のシーケンス図では、共通ルート鍵証明書、各アプリケーション１５の署名用鍵証明書の有効期限が共に切れておらず、各アプリケーション１５のデジタル署名が正しい場合に、アプリケーション１５のハッシュ値又はリストにデジタル署名を行ったＴＰＭ署名付きハッシュ値又はリストをリポジトリ１６に格納している。
【００４２】
この結果、図７のシーケンス図に示すように処理を行う複合機１は正常な状態のソフトウェアのハッシュ値又はリストを得ることができる。複合機１は共通ルート鍵証明書の有効期限が切れた場合、図７のシーケンス図に示す処理により得たハッシュ値又はリストを利用して、図８に示すようにアプリケーション１５の正当性を検証する。
【００４３】
図８は共通ルート鍵証明書の有効期限が切れている場合の複合機の動作を表した一例のシーケンス図である。ステップＳ３１において失効検知モジュール６１がルート鍵証明書を受信するまでの処理は、図７のステップＳ１〜Ｓ１２と同様であるため、図示及び説明を省略する。
【００４４】
ステップＳ３２に進み、失効検知モジュール６１は共通ルート鍵証明書の有効期限を確認する。ここでは、共通ルート鍵証明書の有効期限が切れているものとする。ステップＳ３３に進み、失効検知モジュール６１は共通ルート鍵証明書の有効期限が切れているという結果をｂｏｏｔ３  ６４に通知する。ステップＳ３４に進み、ｂｏｏｔ３  ６４は共通ルート鍵が危殆化しているというメッセージを管理者等に通知する。
【００４５】
なお、複合機１はメッセージを管理者等に通知して各アプリケーション１５を起動するようにしてもよい。複合機１は各アプリケーション１５を起動するか、共通ルート鍵を含めたファームウェアアップデートを行うかを管理者等に選択させるようにしてもよい。
【００４６】
以降、全てのアプリケーション１５の起動はハッシュ検証モードで行う。ハッシュ検証モードであるか否かはメモリ上で記憶しておくため、再起動時、ステップＳ３４までの処理が最初から行われる。
【００４７】
ステップＳ３５に進み、ｂｏｏｔ３  ６４は、失効検知モジュール６１をハッシュ検証モードで起動させる。ステップＳ３６に進み、失効検知モジュール６１は、アプリ検証モジュール６３にハッシュ検証モードによる各アプリケーション１５の正当性の検証を要求する。ステップＳ３７に進み、アプリ検証モジュール６３は、各アプリケーション１５のハッシュ値を計算する。
【００４８】
ステップＳ３８に進み、アプリ検証モジュール６３はリポジトリ１６に正規のハッシュ値又はリストを要求する。ステップＳ３９に進み、アプリ検証モジュール６３はリポジトリ１６からＴＰＭ署名付きハッシュ値又はリストを受信する。
【００４９】
ステップＳ４０に進み、アプリ検証モジュール６３はＴＰＭ１１に共通ルート鍵（公開鍵）を要求する。ステップＳ４１に進み、アプリ検証モジュール６３はＴＰＭ１１から公開鍵を受信する。ステップＳ４２に進み、アプリ検証モジュール６３は公開鍵を利用してＴＰＭ署名の検証を行う。ここではＴＰＭ署名が正しいものとする。
【００５０】
ステップＳ４３に進み、アプリ検証モジュール６３は公開鍵を利用してＴＰＭ署名付きハッシュ値又はリストのハッシュ値と、ステップＳ３７で計算した各アプリケーション１５のハッシュ値とが同じであるかをチェックする。ここではＴＰＭ署名付きハッシュ値又はリストのハッシュ値とステップＳ３７で計算した各アプリケーション１５のハッシュ値とが同じであるとする。
【００５１】
ステップＳ４４に進み、アプリ検証モジュール６３は各アプリケーション１５の正当性の検証結果を失効検知モジュール６１に通知する。失効検知モジュール６１はステップＳ４５に進み、各アプリケーション１５に正当性があるという結果をｂｏｏｔ３  ６４に通知する。このあと、ｂｏｏｔ３  ６４は各アプリケーション１５を起動する。
【００５２】
なお、新たなハードウェアやファームウェアを追加する場合には、同時に共通ルート鍵の更新が必要となる。新たなハードウェアやファームウェアを追加しない場合には、現状の構成で利用できる。
【００５３】
この結果、図８のシーケンス図に示すように処理を行う複合機１は、共通ルート鍵証明書の有効期限が切れている場合に、各アプリケーション１５のデジタル署名でなく、各アプリケーション１５のハッシュ値で正当性を検証できる。また、複合機１は共通ルート鍵が危殆化していることを管理者等に通知できる。
【００５４】
複合機１は各アプリケーション１５の署名用鍵証明書の有効期限が切れた場合、図７のシーケンス図に示す処理により得たハッシュ値又はリストを利用して、図９に示すようにアプリケーション１５の正当性を検証する。
【００５５】
図９はアプリケーションの署名用鍵証明書の有効期限が切れている場合の複合機の動作を表した一例のシーケンス図である。失効検知モジュール６１がルート鍵証明書の有効期限を確認するまでの処理は、図７のステップＳ１〜Ｓ１３と同様であるため、図示及び説明を省略する。
【００５６】
ステップＳ５１に進み、失効検知モジュール６１はアプリケーション１５の署名用鍵証明書の有効期限を確認する。ここでは、アプリケーション１５の署名用鍵証明書の有効期限が切れているものとする。
【００５７】
ステップＳ５２に進み、失効検知モジュール６１はアプリケーション１５の署名用鍵証明書の有効期限が切れているという結果をｂｏｏｔ３  ６４に通知する。ステップＳ３４に進み、ｂｏｏｔ３  ６４はアプリケーション１５の署名用鍵証明書が失効しているというメッセージを管理者等に通知する。
【００５８】
なお、複合機１はメッセージを管理者等に通知して各アプリケーション１５を起動するようにしてもよい。複合機１は各アプリケーション１５を起動するか、アップデートを行うかを管理者等に選択させるようにしてもよい。ステップＳ５１における署名用鍵証明書の有効期限の確認は、起動されるアプリケーション１５ごとに行う。
【００５９】
一旦、署名用鍵証明書の有効期限が切れていると確認されたアプリケーション１５の起動は、ハッシュ検証モードで行われる。ハッシュ検証モードであるか否かはメモリ上で記憶しておくため、再起動時、ステップＳ５３までの処理が最初から行われる。以降の処理は図８のステップＳ３５以降と同様であるため、説明を省略する。
【００６０】
この結果、図９のシーケンス図に示すように処理を行う複合機１は、アプリケーション１５の署名用鍵証明書の有効期限が切れている場合に、各アプリケーション１５のデジタル署名でなく、各アプリケーション１５のハッシュ値で正当性を検証できる。また、複合機１は、アプリケーション１５の署名用鍵証明書が失効していることを管理者等に通知できる。
【実施例２】
【００６１】
図１０は失効リストに共通ルート鍵証明書が載った場合にソフトウェアの正当性を検証する処理を表した一例の構成図である。即ち、実施例２における複合機１はクラッキングなどにより共通ルート鍵（秘密鍵）が漏洩してしまった場合にもソフトウェアの正当性を検証できる。
【００６２】
実施例２は複合機１における共通ルート鍵のクラッキングなどによる失効を脅威とするものである。実施例２の複合機１は外部のサーバ２によって開示されている失効リストで共通ルート鍵の失効を判断する。外部のサーバ２は例えば複合機１のメーカ等によって提供される。
【００６３】
図１０の複合機１はブート１３に失効リストで共通ルート鍵の失効を検知する失効検知モジュール６１を有する。複合機１のシステム１４はプラットフォームの正当性を検証するプラットフォーム検証モジュール６２と、アプリケーション１５の正当性を検証するアプリ検証モジュール６３とを有する。
【００６４】
図１０の複合機１は共通ルート鍵証明書が失効リストに載る前に、正常起動しているアプリケーション１５のハッシュ値を記録しておく。複合機１は共通ルート鍵証明書が失効リストに載った場合、記録しておいた正常起動しているアプリケーション１５のハッシュ値を頼りにアプリケーション１５の正当性を検証する。
【００６５】
実施例２の複合機１は外部のサーバ２へのアクセスと、ＴＴＰのサーバ３での署名検証とが実施例１の複合機１と異なっている。実施例２の複合機１は外部のサーバ２やＴＴＰのサーバ３の場所（アドレス）等の情報をＴＰＭ１１に格納しておく。また、複合機１は正常起動しているときに、外部のサーバ２やＴＴＰのサーバ３の情報をアップデートするような仕組みを設けても良い。更に、複合機１は正常起動しているとき、外部のサーバ２やＴＴＰのサーバ３の情報に対してＴＰＭ署名を付与しておくことで、情報の改竄などを防ぎつつ鮮度を保持することができる。
【００６６】
図１１は、失効リストに共通ルート鍵証明書が載っていない場合の複合機の動作を表した一例のシーケンス図である。ステップＳ６１に進み、ｂｏｏｔ３  ６４は、失効検知モジュール６１，ｎｅｔｂｓｄ（ｋｅｒｎｅｌ）などのハッシュ値を計算する。
【００６７】
ステップＳ６２に進み、ｂｏｏｔ３  ６４は計算したハッシュ値を、ＴＰＭ１１のＰＣＲへ格納する。ステップＳ６３に進み、ｂｏｏｔ３  ６４は失効検知モジュール６１を起動させる。ステップＳ６４に進み、失効検知モジュール６１は外部のサーバ２へ失効リストを要求する。ステップＳ６５に進み、失効検知モジュール６１は外部のサーバ２から失効リストを受信する。
【００６８】
ステップＳ６６に進み、失効検知モジュール６１は失効リストのデジタル署名の検証をＴＴＰのサーバ３に要求する。ステップＳ６７に進み、失効検知モジュール６１はＴＴＰのサーバ３から検証結果を受信する。ここでは、失効リストのデジタル署名が正しいものとする。
【００６９】
ステップＳ６８に進み、失効検知モジュール６１は失効リストに共通ルート鍵証明書が載っていないかを検証する。ここでは共通ルート鍵証明書が失効リストに載っていないものとする。
【００７０】
ステップＳ６９に進み、失効検知モジュール６１は失効リストに各アプリケーション１５の署名用鍵証明書が載っていないかを検証する。ここでは共通ルート鍵証明書が失効リストに載っていないものとする。この後の処理は、図７のステップＳ１５以降と同様であるため、説明を省略する。
【００７１】
図１１のシーケンス図では、共通ルート鍵証明書、各アプリケーション１５の署名用鍵証明書が共に失効していない（失効リストに載っていない）場合に、アプリケーション１５のハッシュ値又はリストにデジタル署名を行ったＴＰＭ署名付きハッシュ値又はリストをリポジトリ１６に格納している。
【００７２】
この結果、図１１のシーケンス図に示すように処理を行う複合機１は正常な状態のソフトウェアのハッシュ値又はリストを得ることができる。複合機１は共通ルート鍵証明書が失効リストに載った場合、図１１のシーケンス図に示す処理により得たハッシュ値又はリストを利用して、図１２に示すようにアプリケーション１５の正当性を検証する。
【００７３】
図１２は共通ルート鍵証明書が失効リストに載った場合の複合機の動作を表した一例のシーケンス図である。ステップＳ７１以前の処理は、図１１のステップＳ６１〜Ｓ６７と同様であるため、図示及び説明を省略する。
【００７４】
ステップＳ７１に進み、失効検知モジュール６１は失効リストに共通ルート鍵証明書が載っていないかを検証する。ここでは共通ルート鍵証明書が失効リストに載っていたものとする。ステップＳ７２に進み、失効検知モジュール６１は共通ルート鍵証明書が失効リストに載っているという結果をｂｏｏｔ３  ６４に通知する。そして、ステップＳ７３に進み、ｂｏｏｔ３  ６４は共通ルート鍵が危殆化しているというメッセージを管理者等に通知する。
【００７５】
なお、複合機１はメッセージを管理者等に通知して各アプリケーション１５を起動するようにしてもよい。複合機１は各アプリケーション１５を起動するか、共通ルート鍵を含めたファームウェアアップデートを行うかを管理者等に選択させるようにしてもよい。
【００７６】
以降、全てのアプリケーション１５の起動はハッシュ検証モードで行う。ハッシュ検証モードであるか否かはメモリ上で記憶しておくため、再起動時、ステップＳ７３までの処理が最初から行われる。以降の処理は図８のステップＳ３５以降と同様であるため、説明を省略する。
【００７７】
この結果、図１１のシーケンス図に示すように処理を行う複合機１は、共通ルート鍵証明書が失効している場合に、各アプリケーション１５のデジタル署名ではなく、各アプリケーション１５のハッシュ値で正当性を検証できる。また、複合機１は共通ルート鍵が失効していることを管理者等に通知できる。
【００７８】
複合機１は各アプリケーション１５の署名用鍵証明書の有効期限が切れた場合、図１１のシーケンス図に示す処理により得たハッシュ値又はリストを利用して、図１３に示すようにアプリケーション１５の正当性を検証する。
【００７９】
図１３はアプリケーションの署名用鍵証明書が失効リストに載った場合の複合機の動作を表した一例のシーケンス図である。ステップＳ８１以前の処理は、図１１のステップＳ６１〜Ｓ６７と同様であるため、図示及び説明を省略する。
【００８０】
ステップＳ８１に進み、失効検知モジュール６１はアプリケーション１５の署名用鍵証明書が載っていないかを検証する。ここではアプリケーション１５の署名用鍵証明書が失効リストに載っていたものとする。ステップＳ８２に進み、失効検知モジュール６１はアプリケーション１５の署名用鍵証明書が失効リストに載っているという結果を、ｂｏｏｔ３  ６４に通知する。ステップＳ８３に進み、ｂｏｏｔ３  ６４はアプリケーション１５の署名用鍵証明書が失効しているというメッセージを管理者等に通知する。
【００８１】
なお、複合機１はメッセージを管理者等に通知して各アプリケーション１５を起動するようにしてもよい。複合機１は各アプリケーション１５を起動するか、アップデートを行うかを管理者等に選択させるようにしてもよい。ステップＳ８１における署名用鍵証明書の失効の確認は、起動されるアプリケーション１５ごとに行う。
【００８２】
一旦、署名用鍵証明書が失効していると確認されたアプリケーション１５の起動は、ハッシュ検証モードで行われる。ハッシュ検証モードであるか否かはメモリ上で記憶しておくため、再起動時、ステップＳ８３までの処理が最初から行われる。以降の処理は図８のステップＳ３５以降と同様であるため、説明を省略する。
【００８３】
この結果、図１３のシーケンス図に示すように処理を行う複合機１は、アプリケーション１５の署名用鍵証明書が失効している場合に、各アプリケーション１５のデジタル署名でなく、各アプリケーション１５のハッシュ値で正当性を検証できる。また、複合機１はアプリケーション１５の署名用鍵証明書が失効していることを管理者等に通知できる。
【００８４】
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【図面の簡単な説明】
【００８５】
【図１】ＴＰＭを利用してソフトウェアの正当性を検証する処理を表した一例のイメージ図である。
【図２】共通ルート鍵，ファームウェアの署名鍵及びデジタル署名の関係を表した一例のイメージ図である。
【図３】モジュールのインストール時におけるデジタル署名をチェックする仕組みを表した一例のイメージ図である。
【図４】共通ルート鍵証明書の有効性をチェックする手法のイメージ図である。
【図５】共通ルート鍵証明書の有効性をチェックする他の手法のイメージ図である。
【図６】共通ルート鍵証明書の有効期限が切れた場合にソフトウェアの正当性を検証する処理を表した一例の構成図である。
【図７】共通ルート鍵証明書の有効期限が切れていない場合の複合機の動作を表した一例のシーケンス図である。
【図８】共通ルート鍵証明書の有効期限が切れている場合の複合機の動作を表した一例のシーケンス図である。
【図９】アプリケーションの署名用鍵証明書の有効期限が切れている場合の複合機の動作を表した一例のシーケンス図である。
【図１０】失効リストに共通ルート鍵証明書が載った場合にソフトウェアの正当性を検証する処理を表した一例の構成図である。
【図１１】失効リストに共通ルート鍵証明書が載っていない場合の複合機の動作を表した一例のシーケンス図である。
【図１２】共通ルート鍵証明書が失効リストに載った場合の複合機の動作を表した一例のシーケンス図である。
【図１３】アプリケーションの署名用鍵証明書が失効リストに載った場合の複合機の動作を表した一例のシーケンス図である。
【符号の説明】
【００８６】
１    複合機
２    外部のサーバ
３    ＴＴＰのサーバ
１１    ＴＰＭ
１２    ＢＩＯＳ
１３    ブート
１４    システム
１５    アプリケーション
６１    失効検知モジュール
６２    プラットフォーム検証モジュール
６３    アプリ検証モジュール
【図１】
2008226160.tif 000003
【図２】
2008226160.tif 000004
【図３】
2008226160.tif 000005
【図４】
2008226160.tif 000006
【図５】
2008226160.tif 000007
【図６】
2008226160.tif 000008
【図７】
2008226160.tif 000009
【図８】
2008226160.tif 000010
【図９】
2008226160.tif 000011
【図１０】
2008226160.tif 000012
【図１１】
2008226160.tif 000013
【図１２】
2008226160.tif 000014
【図１３】
2008226160.tif 000015