情報処理装置、ソフトウェア検証方法及びソフトウェア検証プログラム
【課題】デジタル署名が無効な状態になってもソフトウェアの正当性を検証可能な情報処理装置、ソフトウェア検証方法及びソフトウェア検証プログラムを提供することを目的とする。
【解決手段】情報処理装置1であって、ソフトウェア15の正当性を検証する為に利用される証明書の失効を検知する失効検知手段61と、証明書を利用してソフトウェア15の正当性を検証するソフトウェア検証手段63と、証明書が格納されている格納手段11とを有し、ソフトウェア検証手段63は、証明書が失効しておらず、ソフトウェア15に正当性があるときに、ソフトウェア15から一意に計算される値を、格納手段11に格納しておき、証明書が失効しているか又はソフトウェア15に正当性がないときに、ソフトウェア15から一意に計算される値を用いてソフトウェア15の正当性を検証することにより上記課題を解決する。
【解決手段】情報処理装置1であって、ソフトウェア15の正当性を検証する為に利用される証明書の失効を検知する失効検知手段61と、証明書を利用してソフトウェア15の正当性を検証するソフトウェア検証手段63と、証明書が格納されている格納手段11とを有し、ソフトウェア検証手段63は、証明書が失効しておらず、ソフトウェア15に正当性があるときに、ソフトウェア15から一意に計算される値を、格納手段11に格納しておき、証明書が失効しているか又はソフトウェア15に正当性がないときに、ソフトウェア15から一意に計算される値を用いてソフトウェア15の正当性を検証することにより上記課題を解決する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、ソフトウェア検証方法及びソフトウェア検証プログラムに係り、特に動作させるソフトウェアの正当性を検証する情報処理装置、その情報処理装置で利用するソフトウェア検証方法及びソフトウェア検証プログラムに関する。
【背景技術】
【0002】
例えば情報処理装置の一例としての複合機(MFP)では、動作させるソフトウェアの正当性を検証することが、セキュリティを確保する上で必要である。例えば複合機は不正なソフトウェアの動作を許可してしまうと、操作者の意図しない動作や操作者が蓄積したデータに対する不正なアクセス等がなされる可能性もあった。
【0003】
ソフトウェアの正当性を検証することはIEEE P2600で標準化を進めている複合機の要求仕様(情報セキュリティ機器の認証スキームISO15408/CommonCriteria/CCで言うところのProtectionProfile/PP)にも挙げられている。例えば特許文献1には動作させるアプリケーション(アプリ)の正当性を検証してアプリの動作可否を判断する内容が記載されている。
【特許文献1】特表2003−507785号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
従来の複合機には、ソフトウェアの正当性を検証する仕組みとしてデジタル署名を利用しているものがあった。しかしながら、従来の複合機には、デジタル署名の有効期限が切れてしまった場合やデジタル署名に利用した共通ルート鍵が漏洩してしまった場合について考慮しているものが無かった。
【0005】
例えば複合機はデジタル署名の有効期限が切れてしまった場合やデジタル署名に利用した共通ルート鍵が漏洩してしまった場合など、デジタル署名が無効な状態になる度に利用できなくなるのでは不便である。
【0006】
本発明は、上記の点に鑑みなされたもので、デジタル署名が無効な状態になってもソフトウェアの正当性を検証可能な情報処理装置、ソフトウェア検証方法及びソフトウェア検証プログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
上記課題を解決するため、本発明は、動作させるソフトウェアの正当性を検証する情報処理装置であって、前記ソフトウェアの正当性を検証する為に利用される証明書の失効を検知する失効検知手段と、前記証明書を利用して前記ソフトウェアの正当性を検証するソフトウェア検証手段と、前記証明書が格納されている格納手段とを有し、前記ソフトウェア検証手段は、前記証明書が失効しておらず、前記ソフトウェアに正当性があるときに、前記ソフトウェアから一意に計算される値を、前記格納手段に格納しておき、前記証明書が失効しているか又は前記ソフトウェアに正当性がないときに、前記ソフトウェアから一意に計算される値を用いて前記ソフトウェアの正当性を検証することを特徴とする。
【0008】
本発明は、動作させるソフトウェアの正当性を検証する情報処理装置のソフトウェア検証方法であって、前記ソフトウェアの正当性を検証する為に利用される証明書の失効を検知する失効検知ステップと、前記証明書を利用して前記ソフトウェアの正当性を検証するソフトウェア検証ステップと、前記証明書を格納手段に格納する格納ステップとを有し、前記ソフトウェア検証ステップは、前記証明書が失効しておらず、前記ソフトウェアに正当性があるときに、前記ソフトウェアから一意に計算される値を、前記格納手段に格納しておき、前記証明書が失効しているか又は前記ソフトウェアに正当性がないときに、前記ソフトウェアから一意に計算される値を用いて前記ソフトウェアの正当性を検証することを特徴とする。
【0009】
本発明は、動作させるソフトウェアの正当性を検証する情報処理装置に、前記ソフトウェアの正当性を検証する為に利用される証明書の失効を検知する失効検知手順と、前記証明書を利用して前記ソフトウェアの正当性を検証するソフトウェア検証手順と、前記証明書を格納手段に格納する格納手順とを実行させ、前記ソフトウェア検証手順は、前記証明書が失効しておらず、前記ソフトウェアに正当性があるときに、前記ソフトウェアから一意に計算される値を、前記格納手段に格納しておき、前記証明書が失効しているか又は前記ソフトウェアに正当性がないときに、前記ソフトウェアから一意に計算される値を用いて前記ソフトウェアの正当性を検証させるように実行させることを特徴とするソフトウェア検証プログラムであることを特徴とする。
【0010】
なお、本発明の構成要素、表現または構成要素の任意の組合せを、方法、装置、システム、コンピュータプログラム、記録媒体、データ構造などに適用したものも本発明の態様として有効である。
【発明の効果】
【0011】
本発明によれば、デジタル署名が無効な状態になってもソフトウェアの正当性を検証可能な情報処理装置、ソフトウェア検証方法及びソフトウェア検証プログラムを提供可能である。
【発明を実施するための最良の形態】
【0012】
次に、本発明を実施するための最良の形態を、以下の実施例に基づき図面を参照しつつ説明していく。なお、情報処理装置の一例としての複合機は、ある機能を実現する目的で構成された機器組込み型システム(組込み)の一例である。まず、本発明の理解を容易とする為、TPM(Trusted Platform Module )を利用してソフトウェアの正当性を検証する処理について説明する。
【0013】
図1はTPMを利用してソフトウェアの正当性を検証する処理を表した一例のイメージ図である。TPM11は例えばマザーボードに直付けされるチップで実現される。複合機1の起動時、BIOS12のCRTM及びPOST、ブート13のboot1〜3及びnetbsdの原文から固定長の疑似乱数を生成する演算手法によって計算されるハッシュ値がTPM11のPCR(Platform Configuration Register)へ格納される。TPM11のPCRには、複合機1の起動に伴い、ファームウェアに応じたハッシュ値が格納されることとなる。
【0014】
なお、BIOS12のCRTMからブート13のboot1(MBR)までの検証仕様はTCG(Trusted Computing Group)により規定されている。図1における実線の矢印は起動フローを表す。破線の矢印は検証アクションを示す。図1における「measure」はTCG方式によるものである。「Report」はTPM11に対するハッシュ値の報告を表している。
【0015】
ブート13のboot3以降に起動されるnetbsd(kernel),diag及びシステム14のプラットフォーム検証モジュール等のモジュールはSERES認証(RSA認証)の仕組みで認証される。TPM11はPCRに格納されたハッシュ値に基づくアクセスコントロールを実施する。
【0016】
複合機1は、TPM11内にあるPCRへファームウェアを構成する各モジュールから一意に計算されるハッシュ値を格納し、PCRに登録されたハッシュ値を共通ルート鍵のアクセス条件とすることで、不正なシステムによるデータ窃取から共通ルート鍵を保護している。つまり、複合機1はファームウェアのブート13までTPM11の仕組みを利用して共通ルート鍵へのアクセス制御を行っている。具体的に、複合機1は共通ルート鍵を暗号化しておき、復号鍵をTPM11の仕組みで保護することで共通ルート鍵へのアクセス制御を行っている。
【0017】
そして、複合機1はシステム14より上位のソフトウェアであるコピーやスキャナなどのアプリケーション(ソフトウェア)の正当性の検証を、アプリケーションのハッシュ値を暗号化したデジタル署名を付与し、TPM11内に格納された共通ルート鍵を利用してデジタル署名のチェックを行うことで実現している。
【0018】
図2は、共通ルート鍵,ファームウェアの署名鍵及びデジタル署名の関係を表した一例のイメージ図である。図2に示すように、共通ルート鍵21は各署名用鍵22〜25のデジタル署名に利用される。また、各署名用鍵22〜25はシステム,オプション,共通オプションなどの各種モジュール26〜30のデジタル署名に利用される。
【0019】
図3はモジュールのインストール時におけるデジタル署名をチェックする仕組みを表した一例のイメージ図である。複合機1A〜1Dは時間の経過を表している。また、複合機1Aは共通オプション28を、そのまま導入できないことを表している。
【0020】
複合機1Bは共通ルート鍵21を利用して共通オプション署名用鍵23のデジタル署名のチェックを行った後、共通オプション署名用鍵23を導入することを表している。複合機1Cは、共通オプション署名用鍵23を利用して共通オプション28のデジタル署名のチェックを行ったあと、複合機1Dのように共通オプション28を導入することを表している。
【0021】
本発明の複合機1においてソフトウェアの正当性を検証する為に利用するデジタル署名は共通ルート鍵21が危殆化することや、格納している場所がクラッキングされるなどで漏洩してしまうこと等を想定して、有効性をチェックする必要がある。
【0022】
図4は共通ルート鍵証明書の有効性をチェックする手法のイメージ図である。図4の複合機1は内部時計41によって、TPM11の内部に格納している共通ルート鍵証明書の有効期限をチェックすることで、共通ルート鍵証明書の有効性をチェックする。図5は共通ルート鍵証明書の有効性をチェックする他の手法のイメージ図である。図5の複合機1は外部のサーバ2によって開示されている、失効した共通ルート鍵証明書のリスト(失効リスト)をチェックすることで、共通ルート鍵証明書の有効性をチェックする。図5には第三者信頼機関(TTP)のサーバ3が含まれている。
【0023】
以下では、共通ルート鍵証明書やアプリケーションの署名用鍵証明書の有効期限が切れた場合にソフトウェアの正当性を検証する実施例1と、失効リストに共通ルート鍵証明書やアプリケーションの署名用鍵証明書が載った(共通ルート鍵証明書やアプリケーションの署名用鍵が失効した)場合にソフトウェアの正当性を検証する実施例2とに分けて説明する。
【実施例1】
【0024】
図6は共通ルート鍵証明書の有効期限が切れた場合にソフトウェアの正当性を検証する処理を表した一例の構成図である。実施例1は複合機1における共通ルート鍵の時限的な失効を脅威とするものである。実施例1の複合機1は共通ルート鍵証明書の有効期限で共通ルート鍵の時限的な失効を判断する。
【0025】
図6の複合機1はブート13に共通ルート鍵証明書の有効期限で共通ルート鍵の時限的な失効を検知する失効検知モジュール61を有する。複合機1のシステム14はプラットフォームの正当性を検証するプラットフォーム検証モジュール62と、アプリケーション15の正当性を検証するアプリ検証モジュール63とを有する。
【0026】
図6の複合機1は、共通ルート鍵が危殆化する前、正常起動しているアプリケーション15のハッシュ値を記録しておく。共通ルート鍵が危殆化した場合、複合機1は記録しておいた正常起動しているアプリケーション15のハッシュ値を頼りにアプリケーション15の正当性を検証する。
【0027】
図7は共通ルート鍵証明書の有効期限が切れていない場合の複合機の動作を表した一例のシーケンス図である。ステップS1に進み、boot3 64は失効検知モジュール61,netbsd(kernel)などのハッシュ値を計算する。
【0028】
ステップS2に進み、boot3 64は計算したハッシュ値を、TPM11のPCRへ格納する。ステップS3に進み、boot3 64は失効検知モジュール61を起動させる。ステップS4に進み、失効検知モジュール61はプラットフォーム検証モジュール62に共通ルート鍵証明書を要求する。
【0029】
ステップS5に進み、プラットフォーム検証モジュール62はTPM11に、PCRへ格納されているPCR値を要求する。ステップS6に進み、TPM11はTPM署名付きPCR値をプラットフォーム検証モジュール62に送信する。
【0030】
ステップS7に進み、プラットフォーム検証モジュール62はリポジトリ16に正規PCR値を要求する。ステップS8に進み、プラットフォーム検証モジュール62はリポジトリ16から正規PCR値を受信する。
【0031】
ステップS9に進み、プラットフォーム検証モジュール62は、TPM署名付きPCR値および正規PCR値が同じであるかを確認する。TPM署名付きPCR値および正規PCR値が同じであるとき、プラットフォーム検証モジュール62は、ブート13に正当性があると判断する。ここでは、TPM署名付きPCR値および正規PCR値が同じであるとする。
【0032】
ステップS10に進み、プラットフォーム検証モジュール62は共通ルート鍵証明書をTPM11に要求する。ステップS11に進み、プラットフォーム検証モジュール62はTPM11から共通ルート鍵証明書を受信する。
【0033】
ステップS12に進み、プラットフォーム検証モジュール62は共通ルート鍵証明書を失効検知モジュール61に送信する。ステップS13に進み、失効検知モジュール61は共通ルート鍵証明書の有効期限を確認する。ここでは、共通ルート鍵証明書の有効期限が切れていないものとする。
【0034】
ステップS14に進み、失効検知モジュール61は、各アプリケーション15の署名用鍵証明書の有効期限を確認する。ここでは、各アプリケーション15の署名用鍵証明書の有効期限が切れていないものとする。ステップS15に進み、失効検知モジュール61はアプリ検証モジュール63に各アプリケーション15の正当性の検証を要求する。
【0035】
ステップS16に進み、アプリ検証モジュール63は各アプリケーション15のデジタル署名の検証を行う。ここではデジタル署名が正しいものとする。アプリ検証モジュール63はステップS17に進み、各アプリケーション15のハッシュ値を計算する。ステップS18に進み、アプリ検証モジュール63は各アプリケーション15のハッシュ値の署名要求をTPM11へ行う。
【0036】
なお、署名要求は各アプリケーション15のハッシュ値毎に行ってもよいし、全てのアプリケーション15のハッシュ値をリストにし、そのリストに対して行うようにしてもよい。それらの組み合わせとして、署名要求は各アプリケーション15のハッシュ値毎に行うと共に、全てのアプリケーション15のハッシュ値をリストにし、そのリストに対して行うようにしてもよい。
【0037】
署名要求は各アプリケーション15のハッシュ値毎に行うと、アプリケーション15毎の有効期限が切れた場合に対応しやすい。また、署名要求は全てのアプリケーション15のハッシュ値をリストにし、そのリストに対して行うと、後でデジタル署名を検証する場合に処理が少なくて済む。
【0038】
ステップS19に進み、TPM11はTPM11内に格納されている共通ルート鍵(秘密鍵)を利用して、各アプリケーション15のハッシュ値又はリストにデジタル署名を行う。ステップS20に進み、TPM11はTPM署名付きハッシュ値又はリストをアプリ検証モジュール63に送信する。
【0039】
ステップS21に進み、アプリ検証モジュール63はTPM署名付きハッシュ値又はリストをリポジトリ16に格納する。ステップS22に進み、アプリ検証モジュール63はリポジトリ16からTPM署名付きハッシュ値又はリストの格納結果を受信する。ここではTPM署名付きハッシュ値又はリストを格納できたものとする。
【0040】
ステップS23に進み、アプリ検証モジュール63は各アプリケーション15の正当性の検証結果を失効検知モジュール61に通知する。失効検知モジュール61はステップS24に進み、各アプリケーション15に正当性があるという結果をboot3 64に通知する。このあと、boot3 64は各アプリケーション15を起動する。
【0041】
図7のシーケンス図では、共通ルート鍵証明書、各アプリケーション15の署名用鍵証明書の有効期限が共に切れておらず、各アプリケーション15のデジタル署名が正しい場合に、アプリケーション15のハッシュ値又はリストにデジタル署名を行ったTPM署名付きハッシュ値又はリストをリポジトリ16に格納している。
【0042】
この結果、図7のシーケンス図に示すように処理を行う複合機1は正常な状態のソフトウェアのハッシュ値又はリストを得ることができる。複合機1は共通ルート鍵証明書の有効期限が切れた場合、図7のシーケンス図に示す処理により得たハッシュ値又はリストを利用して、図8に示すようにアプリケーション15の正当性を検証する。
【0043】
図8は共通ルート鍵証明書の有効期限が切れている場合の複合機の動作を表した一例のシーケンス図である。ステップS31において失効検知モジュール61がルート鍵証明書を受信するまでの処理は、図7のステップS1〜S12と同様であるため、図示及び説明を省略する。
【0044】
ステップS32に進み、失効検知モジュール61は共通ルート鍵証明書の有効期限を確認する。ここでは、共通ルート鍵証明書の有効期限が切れているものとする。ステップS33に進み、失効検知モジュール61は共通ルート鍵証明書の有効期限が切れているという結果をboot3 64に通知する。ステップS34に進み、boot3 64は共通ルート鍵が危殆化しているというメッセージを管理者等に通知する。
【0045】
なお、複合機1はメッセージを管理者等に通知して各アプリケーション15を起動するようにしてもよい。複合機1は各アプリケーション15を起動するか、共通ルート鍵を含めたファームウェアアップデートを行うかを管理者等に選択させるようにしてもよい。
【0046】
以降、全てのアプリケーション15の起動はハッシュ検証モードで行う。ハッシュ検証モードであるか否かはメモリ上で記憶しておくため、再起動時、ステップS34までの処理が最初から行われる。
【0047】
ステップS35に進み、boot3 64は、失効検知モジュール61をハッシュ検証モードで起動させる。ステップS36に進み、失効検知モジュール61は、アプリ検証モジュール63にハッシュ検証モードによる各アプリケーション15の正当性の検証を要求する。ステップS37に進み、アプリ検証モジュール63は、各アプリケーション15のハッシュ値を計算する。
【0048】
ステップS38に進み、アプリ検証モジュール63はリポジトリ16に正規のハッシュ値又はリストを要求する。ステップS39に進み、アプリ検証モジュール63はリポジトリ16からTPM署名付きハッシュ値又はリストを受信する。
【0049】
ステップS40に進み、アプリ検証モジュール63はTPM11に共通ルート鍵(公開鍵)を要求する。ステップS41に進み、アプリ検証モジュール63はTPM11から公開鍵を受信する。ステップS42に進み、アプリ検証モジュール63は公開鍵を利用してTPM署名の検証を行う。ここではTPM署名が正しいものとする。
【0050】
ステップS43に進み、アプリ検証モジュール63は公開鍵を利用してTPM署名付きハッシュ値又はリストのハッシュ値と、ステップS37で計算した各アプリケーション15のハッシュ値とが同じであるかをチェックする。ここではTPM署名付きハッシュ値又はリストのハッシュ値とステップS37で計算した各アプリケーション15のハッシュ値とが同じであるとする。
【0051】
ステップS44に進み、アプリ検証モジュール63は各アプリケーション15の正当性の検証結果を失効検知モジュール61に通知する。失効検知モジュール61はステップS45に進み、各アプリケーション15に正当性があるという結果をboot3 64に通知する。このあと、boot3 64は各アプリケーション15を起動する。
【0052】
なお、新たなハードウェアやファームウェアを追加する場合には、同時に共通ルート鍵の更新が必要となる。新たなハードウェアやファームウェアを追加しない場合には、現状の構成で利用できる。
【0053】
この結果、図8のシーケンス図に示すように処理を行う複合機1は、共通ルート鍵証明書の有効期限が切れている場合に、各アプリケーション15のデジタル署名でなく、各アプリケーション15のハッシュ値で正当性を検証できる。また、複合機1は共通ルート鍵が危殆化していることを管理者等に通知できる。
【0054】
複合機1は各アプリケーション15の署名用鍵証明書の有効期限が切れた場合、図7のシーケンス図に示す処理により得たハッシュ値又はリストを利用して、図9に示すようにアプリケーション15の正当性を検証する。
【0055】
図9はアプリケーションの署名用鍵証明書の有効期限が切れている場合の複合機の動作を表した一例のシーケンス図である。失効検知モジュール61がルート鍵証明書の有効期限を確認するまでの処理は、図7のステップS1〜S13と同様であるため、図示及び説明を省略する。
【0056】
ステップS51に進み、失効検知モジュール61はアプリケーション15の署名用鍵証明書の有効期限を確認する。ここでは、アプリケーション15の署名用鍵証明書の有効期限が切れているものとする。
【0057】
ステップS52に進み、失効検知モジュール61はアプリケーション15の署名用鍵証明書の有効期限が切れているという結果をboot3 64に通知する。ステップS34に進み、boot3 64はアプリケーション15の署名用鍵証明書が失効しているというメッセージを管理者等に通知する。
【0058】
なお、複合機1はメッセージを管理者等に通知して各アプリケーション15を起動するようにしてもよい。複合機1は各アプリケーション15を起動するか、アップデートを行うかを管理者等に選択させるようにしてもよい。ステップS51における署名用鍵証明書の有効期限の確認は、起動されるアプリケーション15ごとに行う。
【0059】
一旦、署名用鍵証明書の有効期限が切れていると確認されたアプリケーション15の起動は、ハッシュ検証モードで行われる。ハッシュ検証モードであるか否かはメモリ上で記憶しておくため、再起動時、ステップS53までの処理が最初から行われる。以降の処理は図8のステップS35以降と同様であるため、説明を省略する。
【0060】
この結果、図9のシーケンス図に示すように処理を行う複合機1は、アプリケーション15の署名用鍵証明書の有効期限が切れている場合に、各アプリケーション15のデジタル署名でなく、各アプリケーション15のハッシュ値で正当性を検証できる。また、複合機1は、アプリケーション15の署名用鍵証明書が失効していることを管理者等に通知できる。
【実施例2】
【0061】
図10は失効リストに共通ルート鍵証明書が載った場合にソフトウェアの正当性を検証する処理を表した一例の構成図である。即ち、実施例2における複合機1はクラッキングなどにより共通ルート鍵(秘密鍵)が漏洩してしまった場合にもソフトウェアの正当性を検証できる。
【0062】
実施例2は複合機1における共通ルート鍵のクラッキングなどによる失効を脅威とするものである。実施例2の複合機1は外部のサーバ2によって開示されている失効リストで共通ルート鍵の失効を判断する。外部のサーバ2は例えば複合機1のメーカ等によって提供される。
【0063】
図10の複合機1はブート13に失効リストで共通ルート鍵の失効を検知する失効検知モジュール61を有する。複合機1のシステム14はプラットフォームの正当性を検証するプラットフォーム検証モジュール62と、アプリケーション15の正当性を検証するアプリ検証モジュール63とを有する。
【0064】
図10の複合機1は共通ルート鍵証明書が失効リストに載る前に、正常起動しているアプリケーション15のハッシュ値を記録しておく。複合機1は共通ルート鍵証明書が失効リストに載った場合、記録しておいた正常起動しているアプリケーション15のハッシュ値を頼りにアプリケーション15の正当性を検証する。
【0065】
実施例2の複合機1は外部のサーバ2へのアクセスと、TTPのサーバ3での署名検証とが実施例1の複合機1と異なっている。実施例2の複合機1は外部のサーバ2やTTPのサーバ3の場所(アドレス)等の情報をTPM11に格納しておく。また、複合機1は正常起動しているときに、外部のサーバ2やTTPのサーバ3の情報をアップデートするような仕組みを設けても良い。更に、複合機1は正常起動しているとき、外部のサーバ2やTTPのサーバ3の情報に対してTPM署名を付与しておくことで、情報の改竄などを防ぎつつ鮮度を保持することができる。
【0066】
図11は、失効リストに共通ルート鍵証明書が載っていない場合の複合機の動作を表した一例のシーケンス図である。ステップS61に進み、boot3 64は、失効検知モジュール61,netbsd(kernel)などのハッシュ値を計算する。
【0067】
ステップS62に進み、boot3 64は計算したハッシュ値を、TPM11のPCRへ格納する。ステップS63に進み、boot3 64は失効検知モジュール61を起動させる。ステップS64に進み、失効検知モジュール61は外部のサーバ2へ失効リストを要求する。ステップS65に進み、失効検知モジュール61は外部のサーバ2から失効リストを受信する。
【0068】
ステップS66に進み、失効検知モジュール61は失効リストのデジタル署名の検証をTTPのサーバ3に要求する。ステップS67に進み、失効検知モジュール61はTTPのサーバ3から検証結果を受信する。ここでは、失効リストのデジタル署名が正しいものとする。
【0069】
ステップS68に進み、失効検知モジュール61は失効リストに共通ルート鍵証明書が載っていないかを検証する。ここでは共通ルート鍵証明書が失効リストに載っていないものとする。
【0070】
ステップS69に進み、失効検知モジュール61は失効リストに各アプリケーション15の署名用鍵証明書が載っていないかを検証する。ここでは共通ルート鍵証明書が失効リストに載っていないものとする。この後の処理は、図7のステップS15以降と同様であるため、説明を省略する。
【0071】
図11のシーケンス図では、共通ルート鍵証明書、各アプリケーション15の署名用鍵証明書が共に失効していない(失効リストに載っていない)場合に、アプリケーション15のハッシュ値又はリストにデジタル署名を行ったTPM署名付きハッシュ値又はリストをリポジトリ16に格納している。
【0072】
この結果、図11のシーケンス図に示すように処理を行う複合機1は正常な状態のソフトウェアのハッシュ値又はリストを得ることができる。複合機1は共通ルート鍵証明書が失効リストに載った場合、図11のシーケンス図に示す処理により得たハッシュ値又はリストを利用して、図12に示すようにアプリケーション15の正当性を検証する。
【0073】
図12は共通ルート鍵証明書が失効リストに載った場合の複合機の動作を表した一例のシーケンス図である。ステップS71以前の処理は、図11のステップS61〜S67と同様であるため、図示及び説明を省略する。
【0074】
ステップS71に進み、失効検知モジュール61は失効リストに共通ルート鍵証明書が載っていないかを検証する。ここでは共通ルート鍵証明書が失効リストに載っていたものとする。ステップS72に進み、失効検知モジュール61は共通ルート鍵証明書が失効リストに載っているという結果をboot3 64に通知する。そして、ステップS73に進み、boot3 64は共通ルート鍵が危殆化しているというメッセージを管理者等に通知する。
【0075】
なお、複合機1はメッセージを管理者等に通知して各アプリケーション15を起動するようにしてもよい。複合機1は各アプリケーション15を起動するか、共通ルート鍵を含めたファームウェアアップデートを行うかを管理者等に選択させるようにしてもよい。
【0076】
以降、全てのアプリケーション15の起動はハッシュ検証モードで行う。ハッシュ検証モードであるか否かはメモリ上で記憶しておくため、再起動時、ステップS73までの処理が最初から行われる。以降の処理は図8のステップS35以降と同様であるため、説明を省略する。
【0077】
この結果、図11のシーケンス図に示すように処理を行う複合機1は、共通ルート鍵証明書が失効している場合に、各アプリケーション15のデジタル署名ではなく、各アプリケーション15のハッシュ値で正当性を検証できる。また、複合機1は共通ルート鍵が失効していることを管理者等に通知できる。
【0078】
複合機1は各アプリケーション15の署名用鍵証明書の有効期限が切れた場合、図11のシーケンス図に示す処理により得たハッシュ値又はリストを利用して、図13に示すようにアプリケーション15の正当性を検証する。
【0079】
図13はアプリケーションの署名用鍵証明書が失効リストに載った場合の複合機の動作を表した一例のシーケンス図である。ステップS81以前の処理は、図11のステップS61〜S67と同様であるため、図示及び説明を省略する。
【0080】
ステップS81に進み、失効検知モジュール61はアプリケーション15の署名用鍵証明書が載っていないかを検証する。ここではアプリケーション15の署名用鍵証明書が失効リストに載っていたものとする。ステップS82に進み、失効検知モジュール61はアプリケーション15の署名用鍵証明書が失効リストに載っているという結果を、boot3 64に通知する。ステップS83に進み、boot3 64はアプリケーション15の署名用鍵証明書が失効しているというメッセージを管理者等に通知する。
【0081】
なお、複合機1はメッセージを管理者等に通知して各アプリケーション15を起動するようにしてもよい。複合機1は各アプリケーション15を起動するか、アップデートを行うかを管理者等に選択させるようにしてもよい。ステップS81における署名用鍵証明書の失効の確認は、起動されるアプリケーション15ごとに行う。
【0082】
一旦、署名用鍵証明書が失効していると確認されたアプリケーション15の起動は、ハッシュ検証モードで行われる。ハッシュ検証モードであるか否かはメモリ上で記憶しておくため、再起動時、ステップS83までの処理が最初から行われる。以降の処理は図8のステップS35以降と同様であるため、説明を省略する。
【0083】
この結果、図13のシーケンス図に示すように処理を行う複合機1は、アプリケーション15の署名用鍵証明書が失効している場合に、各アプリケーション15のデジタル署名でなく、各アプリケーション15のハッシュ値で正当性を検証できる。また、複合機1はアプリケーション15の署名用鍵証明書が失効していることを管理者等に通知できる。
【0084】
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【図面の簡単な説明】
【0085】
【図1】TPMを利用してソフトウェアの正当性を検証する処理を表した一例のイメージ図である。
【図2】共通ルート鍵,ファームウェアの署名鍵及びデジタル署名の関係を表した一例のイメージ図である。
【図3】モジュールのインストール時におけるデジタル署名をチェックする仕組みを表した一例のイメージ図である。
【図4】共通ルート鍵証明書の有効性をチェックする手法のイメージ図である。
【図5】共通ルート鍵証明書の有効性をチェックする他の手法のイメージ図である。
【図6】共通ルート鍵証明書の有効期限が切れた場合にソフトウェアの正当性を検証する処理を表した一例の構成図である。
【図7】共通ルート鍵証明書の有効期限が切れていない場合の複合機の動作を表した一例のシーケンス図である。
【図8】共通ルート鍵証明書の有効期限が切れている場合の複合機の動作を表した一例のシーケンス図である。
【図9】アプリケーションの署名用鍵証明書の有効期限が切れている場合の複合機の動作を表した一例のシーケンス図である。
【図10】失効リストに共通ルート鍵証明書が載った場合にソフトウェアの正当性を検証する処理を表した一例の構成図である。
【図11】失効リストに共通ルート鍵証明書が載っていない場合の複合機の動作を表した一例のシーケンス図である。
【図12】共通ルート鍵証明書が失効リストに載った場合の複合機の動作を表した一例のシーケンス図である。
【図13】アプリケーションの署名用鍵証明書が失効リストに載った場合の複合機の動作を表した一例のシーケンス図である。
【符号の説明】
【0086】
1 複合機
2 外部のサーバ
3 TTPのサーバ
11 TPM
12 BIOS
13 ブート
14 システム
15 アプリケーション
61 失効検知モジュール
62 プラットフォーム検証モジュール
63 アプリ検証モジュール
【技術分野】
【0001】
本発明は、情報処理装置、ソフトウェア検証方法及びソフトウェア検証プログラムに係り、特に動作させるソフトウェアの正当性を検証する情報処理装置、その情報処理装置で利用するソフトウェア検証方法及びソフトウェア検証プログラムに関する。
【背景技術】
【0002】
例えば情報処理装置の一例としての複合機(MFP)では、動作させるソフトウェアの正当性を検証することが、セキュリティを確保する上で必要である。例えば複合機は不正なソフトウェアの動作を許可してしまうと、操作者の意図しない動作や操作者が蓄積したデータに対する不正なアクセス等がなされる可能性もあった。
【0003】
ソフトウェアの正当性を検証することはIEEE P2600で標準化を進めている複合機の要求仕様(情報セキュリティ機器の認証スキームISO15408/CommonCriteria/CCで言うところのProtectionProfile/PP)にも挙げられている。例えば特許文献1には動作させるアプリケーション(アプリ)の正当性を検証してアプリの動作可否を判断する内容が記載されている。
【特許文献1】特表2003−507785号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
従来の複合機には、ソフトウェアの正当性を検証する仕組みとしてデジタル署名を利用しているものがあった。しかしながら、従来の複合機には、デジタル署名の有効期限が切れてしまった場合やデジタル署名に利用した共通ルート鍵が漏洩してしまった場合について考慮しているものが無かった。
【0005】
例えば複合機はデジタル署名の有効期限が切れてしまった場合やデジタル署名に利用した共通ルート鍵が漏洩してしまった場合など、デジタル署名が無効な状態になる度に利用できなくなるのでは不便である。
【0006】
本発明は、上記の点に鑑みなされたもので、デジタル署名が無効な状態になってもソフトウェアの正当性を検証可能な情報処理装置、ソフトウェア検証方法及びソフトウェア検証プログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
上記課題を解決するため、本発明は、動作させるソフトウェアの正当性を検証する情報処理装置であって、前記ソフトウェアの正当性を検証する為に利用される証明書の失効を検知する失効検知手段と、前記証明書を利用して前記ソフトウェアの正当性を検証するソフトウェア検証手段と、前記証明書が格納されている格納手段とを有し、前記ソフトウェア検証手段は、前記証明書が失効しておらず、前記ソフトウェアに正当性があるときに、前記ソフトウェアから一意に計算される値を、前記格納手段に格納しておき、前記証明書が失効しているか又は前記ソフトウェアに正当性がないときに、前記ソフトウェアから一意に計算される値を用いて前記ソフトウェアの正当性を検証することを特徴とする。
【0008】
本発明は、動作させるソフトウェアの正当性を検証する情報処理装置のソフトウェア検証方法であって、前記ソフトウェアの正当性を検証する為に利用される証明書の失効を検知する失効検知ステップと、前記証明書を利用して前記ソフトウェアの正当性を検証するソフトウェア検証ステップと、前記証明書を格納手段に格納する格納ステップとを有し、前記ソフトウェア検証ステップは、前記証明書が失効しておらず、前記ソフトウェアに正当性があるときに、前記ソフトウェアから一意に計算される値を、前記格納手段に格納しておき、前記証明書が失効しているか又は前記ソフトウェアに正当性がないときに、前記ソフトウェアから一意に計算される値を用いて前記ソフトウェアの正当性を検証することを特徴とする。
【0009】
本発明は、動作させるソフトウェアの正当性を検証する情報処理装置に、前記ソフトウェアの正当性を検証する為に利用される証明書の失効を検知する失効検知手順と、前記証明書を利用して前記ソフトウェアの正当性を検証するソフトウェア検証手順と、前記証明書を格納手段に格納する格納手順とを実行させ、前記ソフトウェア検証手順は、前記証明書が失効しておらず、前記ソフトウェアに正当性があるときに、前記ソフトウェアから一意に計算される値を、前記格納手段に格納しておき、前記証明書が失効しているか又は前記ソフトウェアに正当性がないときに、前記ソフトウェアから一意に計算される値を用いて前記ソフトウェアの正当性を検証させるように実行させることを特徴とするソフトウェア検証プログラムであることを特徴とする。
【0010】
なお、本発明の構成要素、表現または構成要素の任意の組合せを、方法、装置、システム、コンピュータプログラム、記録媒体、データ構造などに適用したものも本発明の態様として有効である。
【発明の効果】
【0011】
本発明によれば、デジタル署名が無効な状態になってもソフトウェアの正当性を検証可能な情報処理装置、ソフトウェア検証方法及びソフトウェア検証プログラムを提供可能である。
【発明を実施するための最良の形態】
【0012】
次に、本発明を実施するための最良の形態を、以下の実施例に基づき図面を参照しつつ説明していく。なお、情報処理装置の一例としての複合機は、ある機能を実現する目的で構成された機器組込み型システム(組込み)の一例である。まず、本発明の理解を容易とする為、TPM(Trusted Platform Module )を利用してソフトウェアの正当性を検証する処理について説明する。
【0013】
図1はTPMを利用してソフトウェアの正当性を検証する処理を表した一例のイメージ図である。TPM11は例えばマザーボードに直付けされるチップで実現される。複合機1の起動時、BIOS12のCRTM及びPOST、ブート13のboot1〜3及びnetbsdの原文から固定長の疑似乱数を生成する演算手法によって計算されるハッシュ値がTPM11のPCR(Platform Configuration Register)へ格納される。TPM11のPCRには、複合機1の起動に伴い、ファームウェアに応じたハッシュ値が格納されることとなる。
【0014】
なお、BIOS12のCRTMからブート13のboot1(MBR)までの検証仕様はTCG(Trusted Computing Group)により規定されている。図1における実線の矢印は起動フローを表す。破線の矢印は検証アクションを示す。図1における「measure」はTCG方式によるものである。「Report」はTPM11に対するハッシュ値の報告を表している。
【0015】
ブート13のboot3以降に起動されるnetbsd(kernel),diag及びシステム14のプラットフォーム検証モジュール等のモジュールはSERES認証(RSA認証)の仕組みで認証される。TPM11はPCRに格納されたハッシュ値に基づくアクセスコントロールを実施する。
【0016】
複合機1は、TPM11内にあるPCRへファームウェアを構成する各モジュールから一意に計算されるハッシュ値を格納し、PCRに登録されたハッシュ値を共通ルート鍵のアクセス条件とすることで、不正なシステムによるデータ窃取から共通ルート鍵を保護している。つまり、複合機1はファームウェアのブート13までTPM11の仕組みを利用して共通ルート鍵へのアクセス制御を行っている。具体的に、複合機1は共通ルート鍵を暗号化しておき、復号鍵をTPM11の仕組みで保護することで共通ルート鍵へのアクセス制御を行っている。
【0017】
そして、複合機1はシステム14より上位のソフトウェアであるコピーやスキャナなどのアプリケーション(ソフトウェア)の正当性の検証を、アプリケーションのハッシュ値を暗号化したデジタル署名を付与し、TPM11内に格納された共通ルート鍵を利用してデジタル署名のチェックを行うことで実現している。
【0018】
図2は、共通ルート鍵,ファームウェアの署名鍵及びデジタル署名の関係を表した一例のイメージ図である。図2に示すように、共通ルート鍵21は各署名用鍵22〜25のデジタル署名に利用される。また、各署名用鍵22〜25はシステム,オプション,共通オプションなどの各種モジュール26〜30のデジタル署名に利用される。
【0019】
図3はモジュールのインストール時におけるデジタル署名をチェックする仕組みを表した一例のイメージ図である。複合機1A〜1Dは時間の経過を表している。また、複合機1Aは共通オプション28を、そのまま導入できないことを表している。
【0020】
複合機1Bは共通ルート鍵21を利用して共通オプション署名用鍵23のデジタル署名のチェックを行った後、共通オプション署名用鍵23を導入することを表している。複合機1Cは、共通オプション署名用鍵23を利用して共通オプション28のデジタル署名のチェックを行ったあと、複合機1Dのように共通オプション28を導入することを表している。
【0021】
本発明の複合機1においてソフトウェアの正当性を検証する為に利用するデジタル署名は共通ルート鍵21が危殆化することや、格納している場所がクラッキングされるなどで漏洩してしまうこと等を想定して、有効性をチェックする必要がある。
【0022】
図4は共通ルート鍵証明書の有効性をチェックする手法のイメージ図である。図4の複合機1は内部時計41によって、TPM11の内部に格納している共通ルート鍵証明書の有効期限をチェックすることで、共通ルート鍵証明書の有効性をチェックする。図5は共通ルート鍵証明書の有効性をチェックする他の手法のイメージ図である。図5の複合機1は外部のサーバ2によって開示されている、失効した共通ルート鍵証明書のリスト(失効リスト)をチェックすることで、共通ルート鍵証明書の有効性をチェックする。図5には第三者信頼機関(TTP)のサーバ3が含まれている。
【0023】
以下では、共通ルート鍵証明書やアプリケーションの署名用鍵証明書の有効期限が切れた場合にソフトウェアの正当性を検証する実施例1と、失効リストに共通ルート鍵証明書やアプリケーションの署名用鍵証明書が載った(共通ルート鍵証明書やアプリケーションの署名用鍵が失効した)場合にソフトウェアの正当性を検証する実施例2とに分けて説明する。
【実施例1】
【0024】
図6は共通ルート鍵証明書の有効期限が切れた場合にソフトウェアの正当性を検証する処理を表した一例の構成図である。実施例1は複合機1における共通ルート鍵の時限的な失効を脅威とするものである。実施例1の複合機1は共通ルート鍵証明書の有効期限で共通ルート鍵の時限的な失効を判断する。
【0025】
図6の複合機1はブート13に共通ルート鍵証明書の有効期限で共通ルート鍵の時限的な失効を検知する失効検知モジュール61を有する。複合機1のシステム14はプラットフォームの正当性を検証するプラットフォーム検証モジュール62と、アプリケーション15の正当性を検証するアプリ検証モジュール63とを有する。
【0026】
図6の複合機1は、共通ルート鍵が危殆化する前、正常起動しているアプリケーション15のハッシュ値を記録しておく。共通ルート鍵が危殆化した場合、複合機1は記録しておいた正常起動しているアプリケーション15のハッシュ値を頼りにアプリケーション15の正当性を検証する。
【0027】
図7は共通ルート鍵証明書の有効期限が切れていない場合の複合機の動作を表した一例のシーケンス図である。ステップS1に進み、boot3 64は失効検知モジュール61,netbsd(kernel)などのハッシュ値を計算する。
【0028】
ステップS2に進み、boot3 64は計算したハッシュ値を、TPM11のPCRへ格納する。ステップS3に進み、boot3 64は失効検知モジュール61を起動させる。ステップS4に進み、失効検知モジュール61はプラットフォーム検証モジュール62に共通ルート鍵証明書を要求する。
【0029】
ステップS5に進み、プラットフォーム検証モジュール62はTPM11に、PCRへ格納されているPCR値を要求する。ステップS6に進み、TPM11はTPM署名付きPCR値をプラットフォーム検証モジュール62に送信する。
【0030】
ステップS7に進み、プラットフォーム検証モジュール62はリポジトリ16に正規PCR値を要求する。ステップS8に進み、プラットフォーム検証モジュール62はリポジトリ16から正規PCR値を受信する。
【0031】
ステップS9に進み、プラットフォーム検証モジュール62は、TPM署名付きPCR値および正規PCR値が同じであるかを確認する。TPM署名付きPCR値および正規PCR値が同じであるとき、プラットフォーム検証モジュール62は、ブート13に正当性があると判断する。ここでは、TPM署名付きPCR値および正規PCR値が同じであるとする。
【0032】
ステップS10に進み、プラットフォーム検証モジュール62は共通ルート鍵証明書をTPM11に要求する。ステップS11に進み、プラットフォーム検証モジュール62はTPM11から共通ルート鍵証明書を受信する。
【0033】
ステップS12に進み、プラットフォーム検証モジュール62は共通ルート鍵証明書を失効検知モジュール61に送信する。ステップS13に進み、失効検知モジュール61は共通ルート鍵証明書の有効期限を確認する。ここでは、共通ルート鍵証明書の有効期限が切れていないものとする。
【0034】
ステップS14に進み、失効検知モジュール61は、各アプリケーション15の署名用鍵証明書の有効期限を確認する。ここでは、各アプリケーション15の署名用鍵証明書の有効期限が切れていないものとする。ステップS15に進み、失効検知モジュール61はアプリ検証モジュール63に各アプリケーション15の正当性の検証を要求する。
【0035】
ステップS16に進み、アプリ検証モジュール63は各アプリケーション15のデジタル署名の検証を行う。ここではデジタル署名が正しいものとする。アプリ検証モジュール63はステップS17に進み、各アプリケーション15のハッシュ値を計算する。ステップS18に進み、アプリ検証モジュール63は各アプリケーション15のハッシュ値の署名要求をTPM11へ行う。
【0036】
なお、署名要求は各アプリケーション15のハッシュ値毎に行ってもよいし、全てのアプリケーション15のハッシュ値をリストにし、そのリストに対して行うようにしてもよい。それらの組み合わせとして、署名要求は各アプリケーション15のハッシュ値毎に行うと共に、全てのアプリケーション15のハッシュ値をリストにし、そのリストに対して行うようにしてもよい。
【0037】
署名要求は各アプリケーション15のハッシュ値毎に行うと、アプリケーション15毎の有効期限が切れた場合に対応しやすい。また、署名要求は全てのアプリケーション15のハッシュ値をリストにし、そのリストに対して行うと、後でデジタル署名を検証する場合に処理が少なくて済む。
【0038】
ステップS19に進み、TPM11はTPM11内に格納されている共通ルート鍵(秘密鍵)を利用して、各アプリケーション15のハッシュ値又はリストにデジタル署名を行う。ステップS20に進み、TPM11はTPM署名付きハッシュ値又はリストをアプリ検証モジュール63に送信する。
【0039】
ステップS21に進み、アプリ検証モジュール63はTPM署名付きハッシュ値又はリストをリポジトリ16に格納する。ステップS22に進み、アプリ検証モジュール63はリポジトリ16からTPM署名付きハッシュ値又はリストの格納結果を受信する。ここではTPM署名付きハッシュ値又はリストを格納できたものとする。
【0040】
ステップS23に進み、アプリ検証モジュール63は各アプリケーション15の正当性の検証結果を失効検知モジュール61に通知する。失効検知モジュール61はステップS24に進み、各アプリケーション15に正当性があるという結果をboot3 64に通知する。このあと、boot3 64は各アプリケーション15を起動する。
【0041】
図7のシーケンス図では、共通ルート鍵証明書、各アプリケーション15の署名用鍵証明書の有効期限が共に切れておらず、各アプリケーション15のデジタル署名が正しい場合に、アプリケーション15のハッシュ値又はリストにデジタル署名を行ったTPM署名付きハッシュ値又はリストをリポジトリ16に格納している。
【0042】
この結果、図7のシーケンス図に示すように処理を行う複合機1は正常な状態のソフトウェアのハッシュ値又はリストを得ることができる。複合機1は共通ルート鍵証明書の有効期限が切れた場合、図7のシーケンス図に示す処理により得たハッシュ値又はリストを利用して、図8に示すようにアプリケーション15の正当性を検証する。
【0043】
図8は共通ルート鍵証明書の有効期限が切れている場合の複合機の動作を表した一例のシーケンス図である。ステップS31において失効検知モジュール61がルート鍵証明書を受信するまでの処理は、図7のステップS1〜S12と同様であるため、図示及び説明を省略する。
【0044】
ステップS32に進み、失効検知モジュール61は共通ルート鍵証明書の有効期限を確認する。ここでは、共通ルート鍵証明書の有効期限が切れているものとする。ステップS33に進み、失効検知モジュール61は共通ルート鍵証明書の有効期限が切れているという結果をboot3 64に通知する。ステップS34に進み、boot3 64は共通ルート鍵が危殆化しているというメッセージを管理者等に通知する。
【0045】
なお、複合機1はメッセージを管理者等に通知して各アプリケーション15を起動するようにしてもよい。複合機1は各アプリケーション15を起動するか、共通ルート鍵を含めたファームウェアアップデートを行うかを管理者等に選択させるようにしてもよい。
【0046】
以降、全てのアプリケーション15の起動はハッシュ検証モードで行う。ハッシュ検証モードであるか否かはメモリ上で記憶しておくため、再起動時、ステップS34までの処理が最初から行われる。
【0047】
ステップS35に進み、boot3 64は、失効検知モジュール61をハッシュ検証モードで起動させる。ステップS36に進み、失効検知モジュール61は、アプリ検証モジュール63にハッシュ検証モードによる各アプリケーション15の正当性の検証を要求する。ステップS37に進み、アプリ検証モジュール63は、各アプリケーション15のハッシュ値を計算する。
【0048】
ステップS38に進み、アプリ検証モジュール63はリポジトリ16に正規のハッシュ値又はリストを要求する。ステップS39に進み、アプリ検証モジュール63はリポジトリ16からTPM署名付きハッシュ値又はリストを受信する。
【0049】
ステップS40に進み、アプリ検証モジュール63はTPM11に共通ルート鍵(公開鍵)を要求する。ステップS41に進み、アプリ検証モジュール63はTPM11から公開鍵を受信する。ステップS42に進み、アプリ検証モジュール63は公開鍵を利用してTPM署名の検証を行う。ここではTPM署名が正しいものとする。
【0050】
ステップS43に進み、アプリ検証モジュール63は公開鍵を利用してTPM署名付きハッシュ値又はリストのハッシュ値と、ステップS37で計算した各アプリケーション15のハッシュ値とが同じであるかをチェックする。ここではTPM署名付きハッシュ値又はリストのハッシュ値とステップS37で計算した各アプリケーション15のハッシュ値とが同じであるとする。
【0051】
ステップS44に進み、アプリ検証モジュール63は各アプリケーション15の正当性の検証結果を失効検知モジュール61に通知する。失効検知モジュール61はステップS45に進み、各アプリケーション15に正当性があるという結果をboot3 64に通知する。このあと、boot3 64は各アプリケーション15を起動する。
【0052】
なお、新たなハードウェアやファームウェアを追加する場合には、同時に共通ルート鍵の更新が必要となる。新たなハードウェアやファームウェアを追加しない場合には、現状の構成で利用できる。
【0053】
この結果、図8のシーケンス図に示すように処理を行う複合機1は、共通ルート鍵証明書の有効期限が切れている場合に、各アプリケーション15のデジタル署名でなく、各アプリケーション15のハッシュ値で正当性を検証できる。また、複合機1は共通ルート鍵が危殆化していることを管理者等に通知できる。
【0054】
複合機1は各アプリケーション15の署名用鍵証明書の有効期限が切れた場合、図7のシーケンス図に示す処理により得たハッシュ値又はリストを利用して、図9に示すようにアプリケーション15の正当性を検証する。
【0055】
図9はアプリケーションの署名用鍵証明書の有効期限が切れている場合の複合機の動作を表した一例のシーケンス図である。失効検知モジュール61がルート鍵証明書の有効期限を確認するまでの処理は、図7のステップS1〜S13と同様であるため、図示及び説明を省略する。
【0056】
ステップS51に進み、失効検知モジュール61はアプリケーション15の署名用鍵証明書の有効期限を確認する。ここでは、アプリケーション15の署名用鍵証明書の有効期限が切れているものとする。
【0057】
ステップS52に進み、失効検知モジュール61はアプリケーション15の署名用鍵証明書の有効期限が切れているという結果をboot3 64に通知する。ステップS34に進み、boot3 64はアプリケーション15の署名用鍵証明書が失効しているというメッセージを管理者等に通知する。
【0058】
なお、複合機1はメッセージを管理者等に通知して各アプリケーション15を起動するようにしてもよい。複合機1は各アプリケーション15を起動するか、アップデートを行うかを管理者等に選択させるようにしてもよい。ステップS51における署名用鍵証明書の有効期限の確認は、起動されるアプリケーション15ごとに行う。
【0059】
一旦、署名用鍵証明書の有効期限が切れていると確認されたアプリケーション15の起動は、ハッシュ検証モードで行われる。ハッシュ検証モードであるか否かはメモリ上で記憶しておくため、再起動時、ステップS53までの処理が最初から行われる。以降の処理は図8のステップS35以降と同様であるため、説明を省略する。
【0060】
この結果、図9のシーケンス図に示すように処理を行う複合機1は、アプリケーション15の署名用鍵証明書の有効期限が切れている場合に、各アプリケーション15のデジタル署名でなく、各アプリケーション15のハッシュ値で正当性を検証できる。また、複合機1は、アプリケーション15の署名用鍵証明書が失効していることを管理者等に通知できる。
【実施例2】
【0061】
図10は失効リストに共通ルート鍵証明書が載った場合にソフトウェアの正当性を検証する処理を表した一例の構成図である。即ち、実施例2における複合機1はクラッキングなどにより共通ルート鍵(秘密鍵)が漏洩してしまった場合にもソフトウェアの正当性を検証できる。
【0062】
実施例2は複合機1における共通ルート鍵のクラッキングなどによる失効を脅威とするものである。実施例2の複合機1は外部のサーバ2によって開示されている失効リストで共通ルート鍵の失効を判断する。外部のサーバ2は例えば複合機1のメーカ等によって提供される。
【0063】
図10の複合機1はブート13に失効リストで共通ルート鍵の失効を検知する失効検知モジュール61を有する。複合機1のシステム14はプラットフォームの正当性を検証するプラットフォーム検証モジュール62と、アプリケーション15の正当性を検証するアプリ検証モジュール63とを有する。
【0064】
図10の複合機1は共通ルート鍵証明書が失効リストに載る前に、正常起動しているアプリケーション15のハッシュ値を記録しておく。複合機1は共通ルート鍵証明書が失効リストに載った場合、記録しておいた正常起動しているアプリケーション15のハッシュ値を頼りにアプリケーション15の正当性を検証する。
【0065】
実施例2の複合機1は外部のサーバ2へのアクセスと、TTPのサーバ3での署名検証とが実施例1の複合機1と異なっている。実施例2の複合機1は外部のサーバ2やTTPのサーバ3の場所(アドレス)等の情報をTPM11に格納しておく。また、複合機1は正常起動しているときに、外部のサーバ2やTTPのサーバ3の情報をアップデートするような仕組みを設けても良い。更に、複合機1は正常起動しているとき、外部のサーバ2やTTPのサーバ3の情報に対してTPM署名を付与しておくことで、情報の改竄などを防ぎつつ鮮度を保持することができる。
【0066】
図11は、失効リストに共通ルート鍵証明書が載っていない場合の複合機の動作を表した一例のシーケンス図である。ステップS61に進み、boot3 64は、失効検知モジュール61,netbsd(kernel)などのハッシュ値を計算する。
【0067】
ステップS62に進み、boot3 64は計算したハッシュ値を、TPM11のPCRへ格納する。ステップS63に進み、boot3 64は失効検知モジュール61を起動させる。ステップS64に進み、失効検知モジュール61は外部のサーバ2へ失効リストを要求する。ステップS65に進み、失効検知モジュール61は外部のサーバ2から失効リストを受信する。
【0068】
ステップS66に進み、失効検知モジュール61は失効リストのデジタル署名の検証をTTPのサーバ3に要求する。ステップS67に進み、失効検知モジュール61はTTPのサーバ3から検証結果を受信する。ここでは、失効リストのデジタル署名が正しいものとする。
【0069】
ステップS68に進み、失効検知モジュール61は失効リストに共通ルート鍵証明書が載っていないかを検証する。ここでは共通ルート鍵証明書が失効リストに載っていないものとする。
【0070】
ステップS69に進み、失効検知モジュール61は失効リストに各アプリケーション15の署名用鍵証明書が載っていないかを検証する。ここでは共通ルート鍵証明書が失効リストに載っていないものとする。この後の処理は、図7のステップS15以降と同様であるため、説明を省略する。
【0071】
図11のシーケンス図では、共通ルート鍵証明書、各アプリケーション15の署名用鍵証明書が共に失効していない(失効リストに載っていない)場合に、アプリケーション15のハッシュ値又はリストにデジタル署名を行ったTPM署名付きハッシュ値又はリストをリポジトリ16に格納している。
【0072】
この結果、図11のシーケンス図に示すように処理を行う複合機1は正常な状態のソフトウェアのハッシュ値又はリストを得ることができる。複合機1は共通ルート鍵証明書が失効リストに載った場合、図11のシーケンス図に示す処理により得たハッシュ値又はリストを利用して、図12に示すようにアプリケーション15の正当性を検証する。
【0073】
図12は共通ルート鍵証明書が失効リストに載った場合の複合機の動作を表した一例のシーケンス図である。ステップS71以前の処理は、図11のステップS61〜S67と同様であるため、図示及び説明を省略する。
【0074】
ステップS71に進み、失効検知モジュール61は失効リストに共通ルート鍵証明書が載っていないかを検証する。ここでは共通ルート鍵証明書が失効リストに載っていたものとする。ステップS72に進み、失効検知モジュール61は共通ルート鍵証明書が失効リストに載っているという結果をboot3 64に通知する。そして、ステップS73に進み、boot3 64は共通ルート鍵が危殆化しているというメッセージを管理者等に通知する。
【0075】
なお、複合機1はメッセージを管理者等に通知して各アプリケーション15を起動するようにしてもよい。複合機1は各アプリケーション15を起動するか、共通ルート鍵を含めたファームウェアアップデートを行うかを管理者等に選択させるようにしてもよい。
【0076】
以降、全てのアプリケーション15の起動はハッシュ検証モードで行う。ハッシュ検証モードであるか否かはメモリ上で記憶しておくため、再起動時、ステップS73までの処理が最初から行われる。以降の処理は図8のステップS35以降と同様であるため、説明を省略する。
【0077】
この結果、図11のシーケンス図に示すように処理を行う複合機1は、共通ルート鍵証明書が失効している場合に、各アプリケーション15のデジタル署名ではなく、各アプリケーション15のハッシュ値で正当性を検証できる。また、複合機1は共通ルート鍵が失効していることを管理者等に通知できる。
【0078】
複合機1は各アプリケーション15の署名用鍵証明書の有効期限が切れた場合、図11のシーケンス図に示す処理により得たハッシュ値又はリストを利用して、図13に示すようにアプリケーション15の正当性を検証する。
【0079】
図13はアプリケーションの署名用鍵証明書が失効リストに載った場合の複合機の動作を表した一例のシーケンス図である。ステップS81以前の処理は、図11のステップS61〜S67と同様であるため、図示及び説明を省略する。
【0080】
ステップS81に進み、失効検知モジュール61はアプリケーション15の署名用鍵証明書が載っていないかを検証する。ここではアプリケーション15の署名用鍵証明書が失効リストに載っていたものとする。ステップS82に進み、失効検知モジュール61はアプリケーション15の署名用鍵証明書が失効リストに載っているという結果を、boot3 64に通知する。ステップS83に進み、boot3 64はアプリケーション15の署名用鍵証明書が失効しているというメッセージを管理者等に通知する。
【0081】
なお、複合機1はメッセージを管理者等に通知して各アプリケーション15を起動するようにしてもよい。複合機1は各アプリケーション15を起動するか、アップデートを行うかを管理者等に選択させるようにしてもよい。ステップS81における署名用鍵証明書の失効の確認は、起動されるアプリケーション15ごとに行う。
【0082】
一旦、署名用鍵証明書が失効していると確認されたアプリケーション15の起動は、ハッシュ検証モードで行われる。ハッシュ検証モードであるか否かはメモリ上で記憶しておくため、再起動時、ステップS83までの処理が最初から行われる。以降の処理は図8のステップS35以降と同様であるため、説明を省略する。
【0083】
この結果、図13のシーケンス図に示すように処理を行う複合機1は、アプリケーション15の署名用鍵証明書が失効している場合に、各アプリケーション15のデジタル署名でなく、各アプリケーション15のハッシュ値で正当性を検証できる。また、複合機1はアプリケーション15の署名用鍵証明書が失効していることを管理者等に通知できる。
【0084】
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【図面の簡単な説明】
【0085】
【図1】TPMを利用してソフトウェアの正当性を検証する処理を表した一例のイメージ図である。
【図2】共通ルート鍵,ファームウェアの署名鍵及びデジタル署名の関係を表した一例のイメージ図である。
【図3】モジュールのインストール時におけるデジタル署名をチェックする仕組みを表した一例のイメージ図である。
【図4】共通ルート鍵証明書の有効性をチェックする手法のイメージ図である。
【図5】共通ルート鍵証明書の有効性をチェックする他の手法のイメージ図である。
【図6】共通ルート鍵証明書の有効期限が切れた場合にソフトウェアの正当性を検証する処理を表した一例の構成図である。
【図7】共通ルート鍵証明書の有効期限が切れていない場合の複合機の動作を表した一例のシーケンス図である。
【図8】共通ルート鍵証明書の有効期限が切れている場合の複合機の動作を表した一例のシーケンス図である。
【図9】アプリケーションの署名用鍵証明書の有効期限が切れている場合の複合機の動作を表した一例のシーケンス図である。
【図10】失効リストに共通ルート鍵証明書が載った場合にソフトウェアの正当性を検証する処理を表した一例の構成図である。
【図11】失効リストに共通ルート鍵証明書が載っていない場合の複合機の動作を表した一例のシーケンス図である。
【図12】共通ルート鍵証明書が失効リストに載った場合の複合機の動作を表した一例のシーケンス図である。
【図13】アプリケーションの署名用鍵証明書が失効リストに載った場合の複合機の動作を表した一例のシーケンス図である。
【符号の説明】
【0086】
1 複合機
2 外部のサーバ
3 TTPのサーバ
11 TPM
12 BIOS
13 ブート
14 システム
15 アプリケーション
61 失効検知モジュール
62 プラットフォーム検証モジュール
63 アプリ検証モジュール
【特許請求の範囲】
【請求項1】
動作させるソフトウェアの正当性を検証する情報処理装置であって、
前記ソフトウェアの正当性を検証する為に利用される証明書の失効を検知する失効検知手段と、
前記証明書を利用して前記ソフトウェアの正当性を検証するソフトウェア検証手段と、
前記証明書が格納されている格納手段とを有し、
前記ソフトウェア検証手段は、前記証明書が失効しておらず、前記ソフトウェアに正当性があるときに、前記ソフトウェアから一意に計算される値を、前記格納手段に格納しておき、前記証明書が失効しているか又は前記ソフトウェアに正当性がないときに、前記ソフトウェアから一意に計算される値を用いて前記ソフトウェアの正当性を検証することを特徴とする情報処理装置。
【請求項2】
前記失効検知手段は、証明書の有効期限をチェックすることで前記証明書の失効を検知することを特徴とする請求項1記載の情報処理装置。
【請求項3】
前記失効検知手段は、外部のサーバからネットワーク経由で提供された、失効した証明書のリストをチェックすることで前記証明書の失効を検知することを特徴とする請求項1記載の情報処理装置。
【請求項4】
前記失効検知手段は、前記ソフトウェア、又は前記ソフトウェアの正当性を検証する為に利用される暗号鍵の証明書の失効を検知することを特徴とする請求項2又は3記載の情報処理装置。
【請求項5】
前記ソフトウェア検証手段は、前記証明書が失効しておらず、前記ソフトウェアに正当性があるときに、前記ソフトウェアのハッシュ値を、前記格納手段に格納しておき、前記証明書が失効しているか又は前記ソフトウェアに正当性がないときに、前記ソフトウェアのハッシュ値を用いて前記ソフトウェアの正当性を検証することを特徴とする請求項1記載の情報処理装置。
【請求項6】
前記ソフトウェア検証手段は、前記証明書が失効しておらず、前記ソフトウェアに正当性があるときに、前記ソフトウェアのハッシュ値のリストを、前記格納手段に格納しておき、前記証明書が失効しているか又は前記ソフトウェアに正当性がないときに、前記ソフトウェアのハッシュ値のリストを用いて前記ソフトウェアの正当性を検証することを特徴とする請求項1記載の情報処理装置。
【請求項7】
前記証明書が失効しているか又は前記ソフトウェアに正当性がないときに、その旨を表示する表示手段を更に有することを特徴とする請求項1記載の情報処理装置。
【請求項8】
前記格納手段は、TPM(Trusted Platform Module)によって実現されることを特徴とする請求項1乃至7何れか一項記載の情報処理装置。
【請求項9】
動作させるソフトウェアの正当性を検証する情報処理装置のソフトウェア検証方法であって、
前記ソフトウェアの正当性を検証する為に利用される証明書の失効を検知する失効検知ステップと、
前記証明書を利用して前記ソフトウェアの正当性を検証するソフトウェア検証ステップと、
前記証明書を格納手段に格納する格納ステップとを有し、
前記ソフトウェア検証ステップは、前記証明書が失効しておらず、前記ソフトウェアに正当性があるときに、前記ソフトウェアから一意に計算される値を、前記格納手段に格納しておき、前記証明書が失効しているか又は前記ソフトウェアに正当性がないときに、前記ソフトウェアから一意に計算される値を用いて前記ソフトウェアの正当性を検証することを特徴とするソフトウェア検証方法。
【請求項10】
前記失効検知ステップは、証明書の有効期限をチェックすることで前記証明書の失効を検知することを特徴とする請求項9記載のソフトウェア検証方法。
【請求項11】
前記失効検知ステップは、外部のサーバからネットワーク経由で提供された、失効した証明書のリストをチェックすることで前記証明書の失効を検知することを特徴とする請求項10記載のソフトウェア検証方法。
【請求項12】
前記失効検知ステップは、前記ソフトウェア、又は前記ソフトウェアの正当性を検証する為に利用される暗号鍵の証明書の失効を検知することを特徴とする請求項10又は11記載のソフトウェア検証方法。
【請求項13】
前記ソフトウェア検証ステップは、前記証明書が失効しておらず、前記ソフトウェアに正当性があるときに、前記ソフトウェアのハッシュ値を、前記格納手段に格納しておき、前記証明書が失効しているか又は前記ソフトウェアに正当性がないときに、前記ソフトウェアのハッシュ値を用いて前記ソフトウェアの正当性を検証することを特徴とする請求項9記載のソフトウェア検証方法。
【請求項14】
前記ソフトウェア検証ステップは、前記証明書が失効しておらず、前記ソフトウェアに正当性があるときに、前記ソフトウェアのハッシュ値のリストを、前記格納手段に格納しておき、前記証明書が失効しているか又は前記ソフトウェアに正当性がないときに、前記ソフトウェアのハッシュ値のリストを用いて前記ソフトウェアの正当性を検証することを特徴とする請求項9記載のソフトウェア検証方法。
【請求項15】
前記証明書が失効しているか又は前記ソフトウェアに正当性がないときに、その旨を表示手段に表示する表示ステップを更に有することを特徴とする請求項9記載のソフトウェア検証方法。
【請求項16】
前記格納手段は、TPM(Trusted Platform Module)によって実現されることを特徴とする請求項9乃至15何れか一項記載のソフトウェア検証方法。
【請求項17】
動作させるソフトウェアの正当性を検証する情報処理装置に、
前記ソフトウェアの正当性を検証する為に利用される証明書の失効を検知する失効検知手順と、
前記証明書を利用して前記ソフトウェアの正当性を検証するソフトウェア検証手順と、
前記証明書を格納手段に格納する格納手順とを実行させ、
前記ソフトウェア検証手順は、前記証明書が失効しておらず、前記ソフトウェアに正当性があるときに、前記ソフトウェアから一意に計算される値を、前記格納手段に格納しておき、前記証明書が失効しているか又は前記ソフトウェアに正当性がないときに、前記ソフトウェアから一意に計算される値を用いて前記ソフトウェアの正当性を検証させるように実行させることを特徴とするソフトウェア検証プログラム。
【請求項1】
動作させるソフトウェアの正当性を検証する情報処理装置であって、
前記ソフトウェアの正当性を検証する為に利用される証明書の失効を検知する失効検知手段と、
前記証明書を利用して前記ソフトウェアの正当性を検証するソフトウェア検証手段と、
前記証明書が格納されている格納手段とを有し、
前記ソフトウェア検証手段は、前記証明書が失効しておらず、前記ソフトウェアに正当性があるときに、前記ソフトウェアから一意に計算される値を、前記格納手段に格納しておき、前記証明書が失効しているか又は前記ソフトウェアに正当性がないときに、前記ソフトウェアから一意に計算される値を用いて前記ソフトウェアの正当性を検証することを特徴とする情報処理装置。
【請求項2】
前記失効検知手段は、証明書の有効期限をチェックすることで前記証明書の失効を検知することを特徴とする請求項1記載の情報処理装置。
【請求項3】
前記失効検知手段は、外部のサーバからネットワーク経由で提供された、失効した証明書のリストをチェックすることで前記証明書の失効を検知することを特徴とする請求項1記載の情報処理装置。
【請求項4】
前記失効検知手段は、前記ソフトウェア、又は前記ソフトウェアの正当性を検証する為に利用される暗号鍵の証明書の失効を検知することを特徴とする請求項2又は3記載の情報処理装置。
【請求項5】
前記ソフトウェア検証手段は、前記証明書が失効しておらず、前記ソフトウェアに正当性があるときに、前記ソフトウェアのハッシュ値を、前記格納手段に格納しておき、前記証明書が失効しているか又は前記ソフトウェアに正当性がないときに、前記ソフトウェアのハッシュ値を用いて前記ソフトウェアの正当性を検証することを特徴とする請求項1記載の情報処理装置。
【請求項6】
前記ソフトウェア検証手段は、前記証明書が失効しておらず、前記ソフトウェアに正当性があるときに、前記ソフトウェアのハッシュ値のリストを、前記格納手段に格納しておき、前記証明書が失効しているか又は前記ソフトウェアに正当性がないときに、前記ソフトウェアのハッシュ値のリストを用いて前記ソフトウェアの正当性を検証することを特徴とする請求項1記載の情報処理装置。
【請求項7】
前記証明書が失効しているか又は前記ソフトウェアに正当性がないときに、その旨を表示する表示手段を更に有することを特徴とする請求項1記載の情報処理装置。
【請求項8】
前記格納手段は、TPM(Trusted Platform Module)によって実現されることを特徴とする請求項1乃至7何れか一項記載の情報処理装置。
【請求項9】
動作させるソフトウェアの正当性を検証する情報処理装置のソフトウェア検証方法であって、
前記ソフトウェアの正当性を検証する為に利用される証明書の失効を検知する失効検知ステップと、
前記証明書を利用して前記ソフトウェアの正当性を検証するソフトウェア検証ステップと、
前記証明書を格納手段に格納する格納ステップとを有し、
前記ソフトウェア検証ステップは、前記証明書が失効しておらず、前記ソフトウェアに正当性があるときに、前記ソフトウェアから一意に計算される値を、前記格納手段に格納しておき、前記証明書が失効しているか又は前記ソフトウェアに正当性がないときに、前記ソフトウェアから一意に計算される値を用いて前記ソフトウェアの正当性を検証することを特徴とするソフトウェア検証方法。
【請求項10】
前記失効検知ステップは、証明書の有効期限をチェックすることで前記証明書の失効を検知することを特徴とする請求項9記載のソフトウェア検証方法。
【請求項11】
前記失効検知ステップは、外部のサーバからネットワーク経由で提供された、失効した証明書のリストをチェックすることで前記証明書の失効を検知することを特徴とする請求項10記載のソフトウェア検証方法。
【請求項12】
前記失効検知ステップは、前記ソフトウェア、又は前記ソフトウェアの正当性を検証する為に利用される暗号鍵の証明書の失効を検知することを特徴とする請求項10又は11記載のソフトウェア検証方法。
【請求項13】
前記ソフトウェア検証ステップは、前記証明書が失効しておらず、前記ソフトウェアに正当性があるときに、前記ソフトウェアのハッシュ値を、前記格納手段に格納しておき、前記証明書が失効しているか又は前記ソフトウェアに正当性がないときに、前記ソフトウェアのハッシュ値を用いて前記ソフトウェアの正当性を検証することを特徴とする請求項9記載のソフトウェア検証方法。
【請求項14】
前記ソフトウェア検証ステップは、前記証明書が失効しておらず、前記ソフトウェアに正当性があるときに、前記ソフトウェアのハッシュ値のリストを、前記格納手段に格納しておき、前記証明書が失効しているか又は前記ソフトウェアに正当性がないときに、前記ソフトウェアのハッシュ値のリストを用いて前記ソフトウェアの正当性を検証することを特徴とする請求項9記載のソフトウェア検証方法。
【請求項15】
前記証明書が失効しているか又は前記ソフトウェアに正当性がないときに、その旨を表示手段に表示する表示ステップを更に有することを特徴とする請求項9記載のソフトウェア検証方法。
【請求項16】
前記格納手段は、TPM(Trusted Platform Module)によって実現されることを特徴とする請求項9乃至15何れか一項記載のソフトウェア検証方法。
【請求項17】
動作させるソフトウェアの正当性を検証する情報処理装置に、
前記ソフトウェアの正当性を検証する為に利用される証明書の失効を検知する失効検知手順と、
前記証明書を利用して前記ソフトウェアの正当性を検証するソフトウェア検証手順と、
前記証明書を格納手段に格納する格納手順とを実行させ、
前記ソフトウェア検証手順は、前記証明書が失効しておらず、前記ソフトウェアに正当性があるときに、前記ソフトウェアから一意に計算される値を、前記格納手段に格納しておき、前記証明書が失効しているか又は前記ソフトウェアに正当性がないときに、前記ソフトウェアから一意に計算される値を用いて前記ソフトウェアの正当性を検証させるように実行させることを特徴とするソフトウェア検証プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2008−226160(P2008−226160A)
【公開日】平成20年9月25日(2008.9.25)
【国際特許分類】
【出願番号】特願2007−67252(P2007−67252)
【出願日】平成19年3月15日(2007.3.15)
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】
【公開日】平成20年9月25日(2008.9.25)
【国際特許分類】
【出願日】平成19年3月15日(2007.3.15)
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】
[ Back to top ]