(57)【要約】【課題】  プログラムの改竄を検知するための情報処理装置及びその方法並びにプログラム及び記憶媒体を提供すること。【解決手段】  情報処理装置１０は、プログラムの改竄を検知するための該プログラムの暗号化データを生成する暗号化データ生成部と、前記プログラムに前記暗号化データを付加したプログラムファイルを生成するファイル生成部と、を備える。情報処理装置２０は、前記暗号化データが付加されたプログラムファイルを入力する入力部と、前記プログラムと前記暗号化データとに基づいて前記プログラムが改竄されたか否かを検証する検証部と、を備える【選択図】  図１
2006191491.tif 000002
【特許請求の範囲】
【請求項１】
プログラムの改竄を検知するための該プログラムの暗号化データを生成する暗号化データ生成部と、
前記プログラムに前記暗号化データを付加したプログラムファイルを生成するファイル生成部と、
を備えることを特徴とする情報処理装置。
【請求項２】
プログラムに該プログラムの暗号化データが付加されたプログラムファイルを入力する入力部と、
前記プログラムと前記暗号化データとに基づいて前記プログラムが改竄されたか否かを検証する検証部と、
を備えることを特徴とする情報処理装置。
【請求項３】
前記プログラムをアップデートするプログラムアップデート部を備え、
前記プログラムアップデート部は、前記検証部により前記プログラムが改竄されていないと判定された場合には前記プログラムをアップデートし、前記検証部により前記プログラムが改竄されていると判定された場合には前記プログラムをアップデートしないことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記プログラムをアップデートするプログラムアップデート部を備え、
前記プログラムアップデート部は、前記検証部により前記プログラムが改竄されていないと判定された場合には前記プログラムをアップデートし、前記検証部により前記プログラムが改竄されていると判定された場合には前記プログラムの機能が制限されるように該プログラムをアップデートすることを特徴とする請求項２に記載の情報処理装置。
【請求項５】
前記検証部による検証結果を記憶する記憶部と、
前記プログラムの実行結果を出力する出力部と、
を更に備え、
前記出力部は、前記記憶部に記憶した前記検証結果を前記実行結果に付加して出力することを特徴とする請求項２乃至請求項４のいずれか１項に記載の情報処理装置。
【請求項６】
プログラムの改竄を検知するための該プログラムの暗号化データを生成する暗号化データ生成工程と、
前記プログラムに前記暗号化データを付加したプログラムファイルを生成するファイル生成工程と、
を含むことを特徴とする情報処理方法。
【請求項７】
プログラムに該プログラムの暗号化データが付加されたプログラムファイルを入力する入力工程と、
前記プログラムと前記暗号化データとに基づいて前記プログラムが改竄されたか否かを検証する検証工程と、
を含むことを特徴とする情報処理方法。
【請求項８】
前記検証工程の後に、前記プログラムをアップデートするプログラムアップデート工程を含み、
前記プログラムアップデート工程では、前記検証工程で前記プログラムが改竄されていないと判定された場合には前記プログラムをアップデートし、前記検証工程で前記プログラムが改竄されていると判定された場合には前記プログラムをアップデートしないことを特徴とする請求項７に記載の情報処理方法。
【請求項９】
前記検証工程の後に、前記プログラムをアップデートするプログラムアップデート工程を含み、
前記プログラムアップデート工程では、前記検証工程で前記プログラムが改竄されていないと判定された場合には前記プログラムをアップデートし、前記検証工程で前記プログラムが改竄されていると判定された場合には前記プログラムの機能が制限されるように該プログラムをアップデートすることを特徴とする請求項７に記載の情報処理方法。
【請求項１０】
前記検証工程での検証結果を記憶する記憶工程と、
前記プログラムの実行結果を出力する出力工程と、
を更に含み、
前記出力工程では、前記記憶工程で記憶した前記検証結果を前記実行結果に付加して出力することを特徴とする請求項７乃至請求項９のいずれか１項に記載の情報処理方法。
【請求項１１】
請求項６乃至１０のいずれか１項に記載の情報処理方法を実行することを特徴とするプログラム。
【請求項１２】
請求項６乃至１０のいずれか１項に記載の情報処理方法を実行するプログラムを記憶していることを特徴とする記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムの暗号化データを用いた情報処理装置及びその方法並びにプログラム及び記憶媒体に関する。
【背景技術】
【０００２】
近年、被写体の光学像をデジタル化して記憶する情報処理装置が実用化されている。その一つであるデジタルカメラで撮影された画像データは、コンピュータに取り込むことが簡単にできる反面、コンピュータ上で簡単に改竄（改変）することができるという問題があった。そのため、デジタルカメラで撮影された画像データは、銀塩写真よりも信頼性が低く、証拠能力が乏しいという問題があった。そこで、近年、デジタルカメラで撮影された画像データにデジタル署名を付加し、情報が改竄されているか否かを検証可能な機能を有する改竄検知システムが提案されている（特許文献１及び特許文献２を参照）。
【０００３】
一方、デジタルカメラをはじめとする多くの情報処理装置は、日々進歩する機能に対応するため、これらの情報処理装置のプログラムをアップデート可能な機能（例えば、ファームウェアアップデート機能等）を持つものが多くなっている。アップデート用のプログラムは電子ファイルの形式で配布されることが多く、ユーザは、その電子ファイルを用いてファームウェアアップデートを行うことによって、情報処理装置を買い換えることなく、最新の機能に更新することが可能となっている。
【特許文献１】米国特許第５,４９９,２９４号
【特許文献２】特開平９−２００７３０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、アップロード用のプログラムは電子ファイルの形式で配布されため、比較的容易に改竄することができるという問題がある。特に、改竄情報が改竄されているか否かを検知する改竄検知システムでは、出力情報の信頼性を確保するためにも、改竄検知システム自体のプログラムが改竄されることがあってはならない。
これに対し、特許文献１及び特許文献２は、デジタルカメラ等の映像入力装置で生成された映像データの改竄を検知するものであり、デジタルカメラ等の映像入力装置のプログラムが改竄されたか否かを検知することはできなかった。
【０００５】
本発明は、上述の問題点を鑑みてなされたものであり、プログラムの改竄を検知するための情報処理装置及びその方法並びにプログラム及び記憶媒体を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の第１の側面は、情報処理装置に係り、プログラムの改竄を検知するための該プログラムの暗号化データを生成する暗号化データ生成部と、前記プログラムに前記暗号化データを付加したプログラムファイルを生成するファイル生成部と、を備えることを特徴とする。
本発明の第２の側面は、情報処理装置に係り、プログラムに該プログラムの暗号化データが付加されたプログラムファイルを入力する入力部と、前記プログラムと前記暗号化データとに基づいて前記プログラムが改竄されたか否かを検証する検証部と、を備えることを特徴とする。
本発明の第３の側面は、情報処理方法に係り、プログラムの改竄を検知するための該プログラムの暗号化データを生成する暗号化データ生成工程と、前記プログラムに前記暗号化データを付加したプログラムファイルを生成するファイル生成工程と、を含むことを特徴とする。
本発明の第４の側面は、情報処理方法に係り、プログラムに該プログラムの暗号化データが付加されたプログラムファイルを入力する入力工程と、前記プログラムと前記暗号化データとに基づいて前記プログラムが改竄されたか否かを検証する検証工程と、を含むことを特徴とする。
本発明の第５の側面は、プログラムに係り、上記の情報処理方法を実行することを特徴とする。
本発明の第６の側面は、記憶媒体に係り、上記の情報処理方法を実行するプログラムを記憶していることを特徴とする。
【発明の効果】
【０００７】
プログラムの改竄を検知するための情報処理装置及びその方法並びにプログラム及び記憶媒体を提供することができる。
【発明を実施するための最良の形態】
【０００８】
[第１の実施形態]
以下、図面を参照して本発明に好適な第１の実施形態を説明する。図１は、第１の実施の形態におけるシステムの一構成例を説明する図である。
【０００９】
プログラム生成装置１０は、プログラムの改竄を検知するために、プログラムを暗号化した暗号化データ（デジタル署名）をそのプログラムに付加して、デジタル署名付きプログラムファイルを生成する。プログラム生成装置１０は、コンピュータであっても、コンピュータ以外の電子機器であってもよい。
【００１０】
情報処理装置２０は、プログラム生成装置１０によってプログラムに付加されたデジタル署名を用いて、プログラムが改竄されたか否かを検証する。情報処理装置２０は、デジタルカメラ、デジタルビデオカメラ、スキャナ等の撮像装置であってもよいし、カメラユニットを有する電子機器であってもよい。さらには、画像読み取りユニットを有するファクシミリ装置及び複写機等の電子機器であってもよい。
【００１１】
図２は、本発明の好適な実施の形態に係るプログラム生成装置１０の主要な機能構成を説明するブロック図である。
【００１２】
プログラム生成部２０１は、情報処理装置２０を制御するためのプログラムを生成する。例えば、プログラム生成部２０１は、ソース・プログラムを情報処理装置２０が解読可能なプログラムに翻訳する。
【００１３】
ハッシュ関数演算部２０２は、ハッシュ関数Ｈを用いて、プログラムのハッシュ値（ダイジェストデータ）を生成する。なお、ハッシュ関数Ｈは、ＭＤ−２ＭＤ−５、ＳＨＡ−１、ＲＩＰＥＭＤ−１２８及びＲＩＰＥＭＤ−１６０の何れかであってもよいし、その他のハッシュ関数であってもよい。
【００１４】
メモリ２０３は、プログラム生成装置１０又は情報処理装置２０に固有の情報である固有ＩＤ２０５（例えば、プログラム生成装置１０又は情報処理装置２０を固有に識別可能な製造番号、シリアル番号等の情報）を記憶する。また、メモリ２０３は、プログラム生成装置１０で生成されたプログラムのデジタル署名を生成するための秘密鍵Ｋｓを記憶する。
【００１５】
署名生成部２０４は、ハッシュ関数演算部２０２で生成されたダイジェストデータをメモリ２０３に記憶された秘密鍵Ｋｓを用いて演算処理し、プログラムの暗号化データとしてのデジタル署名を生成する。
【００１６】
ファイル生成部２０６は、プログラム生成装置１０で生成されたプログラムに、署名生成部２０４で生成されたデジタル署名を付加して、デジタル署名付きプログラムファイルを生成する。デジタル署名は、例えば、プログラムのヘッダ部又はフッタ部等に付加してもよいし、プログラムの動作に影響しないようにプログラム中に埋め込んでもよい。
【００１７】
図３は、本発明の好適な実施の形態に係る情報処理装置２０の主要な機能構成を説明するブロック図である。
【００１８】
メディア制御部３０１は、リムーバブルメディア３１０に記憶されたデジタル署名付きプログラムファイルを読み出し、このデジタル署名付きプログラムファイルを情報処理装置２０に入力する入力部として機能する。
【００１９】
記憶部３０２は、リムーバブルメディア３１０から読み出されたデジタル署名付きプログラムファイル及びテーブルＴ１を記憶する。テーブルＴ１は、一つ又は複数の固有ＩＤ及び各固有ＩＤに対応する公開鍵Ｋｐを管理する管理テーブルである。
【００２０】
ハッシュ関数演算部３０３は、ハッシュ関数Ｈを用いて、デジタル署名付きプログラムファイルに含まれるプログラムのハッシュ値（ダイジェストデータ）を生成する。
【００２１】
演算処理部３０５は、デジタル署名付きプログラムファイルに含まれるデジタル署名を公開鍵Ｋｐで演算処理して、ダイジェストデータを生成する。
【００２２】
検証部３０６は、デジタル署名付きプログラムファイルに含まれるデジタル署名に基づいて、プログラムが改竄されているか否かを検証する。
【００２３】
プログラムアップデート部３０７は、インタフェース部３０９又はリムーバブルメディア３１０を介して提供されたプログラムアップデート用のプログラムに基づいて、デジタル署名付きプログラムファイルに含まれるプログラムをアップデートする。プログラムアップデート用のプログラムは、上記のデジタル署名付きプログラムファイルと同様に、デジタル署名が付されたデジタル署名付きのプログラムであることが望ましい。これによって、検証部３０６は、プログラムを複数回アップデートする場合には、提供されたプログラムアップデート用プログラムに含まれるデジタル署名に基づいて、アップデート後のプログラムが改竄されているか否かを複数回にわたって検証することができる。
【００２４】
制御部３０８は、メモリ３０２に記憶されたプログラムを実行し、情報処理装置２０の各構成要素の動作を制御する。
【００２５】
インタフェース部３０９は、情報処理装置２０に送信されたデジタル署名付きプログラムを回線３１１を通じて受信して、情報処理装置２０にデジタル署名付きプログラムファイルを入力する入力部として機能する。
【００２６】
出力部３１２は、制御部３０８によって実行されたプログラムの実行結果を出力する。
【００２７】
図４は、第１の実施形態におけるシステムの処理手順について説明する図である。
【００２８】
ステップＳ４０１では、プログラム生成装置１０のプログラム生成部２０１がプログラムを生成し、生成したプログラムをハッシュ関数演算部２０２及びプログラムファイル生成部２０６に供給する。
【００２９】
ステップＳ４０２では、ハッシュ関数演算部２０２が、ハッシュ関数Ｈを用いてプログラム生成部２０１で生成されたプログラムのハッシュ値を生成し、生成したハッシュ値を署名生成部２０４に供給する。
【００３０】
ステップＳ４０３では、署名生成部２０４が、ハッシュ関数演算部２０２で生成されたハッシュ値（ダイジェストデータ）を秘密鍵Ｋｓで演算処理し、プログラムのデジタル署名を生成する。署名生成部２０４は、生成したデジタル署名をプログラムファイル生成部２０６に供給する。
【００３１】
ステップＳ４０４では、プログラムファイル生成部２０６が、署名生成部２０４で生成されたデジタル署名と、メモリ２０３に記憶された固有ＩＤ２０５と、プログラム生成部２０１で生成されたプログラムと、を含むデジタル署名付きプログラムファイルを生成する。
【００３２】
ステップＳ４０５では、ステップＳ４０４で生成されたデジタル署名付きプログラムファイルをリムーバブルメディア３１０又はインタフェース部３０９を介して情報処理装置２０に入力する。リムーバブルメディア３１０を介してデジタル署名付きプログラムファイルを情報処理装置２０に入力する場合では、メディア制御部３０１がリムーバブルメディア３１０からデジタル署名付きプログラムファイルを読み出し、読み出したデジタル署名付きプログラムファイルを記憶部３０２に格納する。一方、インタフェース部３０９を介してデジタル署名付きプログラムファイルを情報処理装置２０に入力する場合では、インタフェース部３０９が情報処理装置２０に送信されたデジタル署名付きプログラムファイルを回線３１１を通じて受信し、受信したプログラムファイルを記憶部３０２に格納する。
【００３３】
ステップＳ４０６では、演算処理部３０５が、メモリ３０２内のテーブルＴ１を参照し、固有ＩＤに対応する公開鍵Ｋｐを取得する。テーブルＴ１の一例を図５に示す。例えば、固有ＩＤが「００１」である場合、その固有ＩＤに対応する公開鍵Ｋｐは「０ｘ３３３３」となる。このようにして情報処理装置２０は固有ＩＤから公開鍵Ｋｐを得る。
【００３４】
ステップＳ４０７では、演算処理部３０５が、デジタル署名付きプログラムファイルに含まれるデジタル署名を公開鍵Ｋｐで演算処理して、ダイジェストデータを復元する。
【００３５】
ステップＳ４０８では、ハッシュ関数演算部３０３が、デジタル署名付きプログラムファイルに含まれるプログラムをハッシュ関数Ｈを用いて演算処理して、このプログラムのダイジェストデータを生成する。
【００３６】
ステップＳ４０９では、検証部３０６が、演算処理部３０５で復元されたダイジェストデータと、ハッシュ関数演算部３０３で生成されたダイジェストデータとを比較して、プログラムが改竄されているか否かを検証する。検証部３０６は、演算処理部３０５で復元されたダイジェストデータとハッシュ関数演算部３０３で生成されたダイジェストデータとが一致しなければプログラムが改竄されていると判定し、演算処理部３０５で復元されたダイジェストデータとハッシュ関数演算部３０３で生成されたダイジェストデータとが一致すればプログラムが改竄されていないと判定する。検証部３０６によりデジタル署名付きプログラムファイルが改竄されていると判定された場合では、「改竄あり」と判定された検証結果が記憶部３０２に記憶される。検証部３０６によりデジタル署名付きプログラムファイルが改竄されていないと判定された場合では、「改竄なし」と判定された検証結果が記憶部３０２に記憶される。
【００３７】
ステップＳ４１０では、プログラムアップデート部３０７が、記憶部３０２に記憶された検証結果に基づいて、プログラムのアップデートを行う。例えば、プログラムアップデート部３０７は、記憶部３０２に「改竄なし」と判定された検証結果が記憶されている場合にはプログラムのアップデートを行い、記憶部３０２に「改竄あり」と判定された検証結果が記憶されている場合にはプログラムのアップデートを行わないように、制御部３０８によって制御されうる。このように、プログラムが改竄されていた場合には、プログラムのアップデートを禁止することによって、不正なプログラムを用いて情報処理装置２０を使用することを制約することができる。
【００３８】
以上説明したように、第１の実施形態におけるシステムによれば、プログラム生成装置１０によって生成されたプログラムが改竄されたか否かを情報処理装置２０によって検証することができ、プログラムのアップデートを実行するか否かを切り替えることができる。
【００３９】
なお、本実施形態では、検証部３０６により「改竄あり」と判定された場合には、プログラムのアップデートを行わない方法を例示したが、例えば、検証部３０６により「改竄あり」と判定された場合には、プログラムの機能が制限されるようにプログラムのアップデートを行ってもよい。このように、プログラムが改竄されていた場合には、使用できるプログラムの機能を制限することによって、不正な使用をさせたくない機能を制約することができる。
【００４０】
また、プログラムが改竄されていた場合には、出力部３１２が出力する情報に「改竄あり」の情報を付加したり、埋め込んだりしてもよい。このように、プログラムが改竄されていた場合には、情報処理装置の出力部が出力する情報にプログラムが改竄されたことを示す情報を付加したり、埋め込んだりすることによって、不正なプログラムの使用があったことを出力情報に証拠として残すことができる。
【００４１】
また、プログラムのデジタル署名を生成する場合には、プログラム全体のデジタル署名を生成してもよいし、プログラムの一部のデジタル署名を生成してもよい。プログラムの一部のデジタル署名を生成する場合には、プログラムの主要部分をデジタル署名することが好ましい。これによって、例えば、上述の実施形態と同様にして、プログラムの主要部分が改竄されたか否かを検証し、プログラムの主要部分が改竄されている場合には、プログラムのアップデートを行わないか又はプログラムの機能を制限し、プログラムの主要部分が改竄されていない場合には、プログラムのアップデートを行うようにすることができる。
【００４２】
また、本実施形態では、検証用データとしてデジタル署名データを使用したが、これに限るものではなく、例えば、ＭＡＣデータを検証用データとして使用してもよい。
【００４３】
この場合、プログラム生成装置において、プログラムと、秘密情報Ａ及び秘密情報Ｂから生成された秘密鍵Ｋｓと、を用いた演算を行うことによってＭＡＣデータを生成し、このデータを用いて検証データ付きプログラムファイルを作成することができる。このような演算としては、プログラムのダイジェストデータに対して、暗号アルゴリズムによる演算処理等が考えられる。この場合では、秘密鍵Ｋｓを鍵データとして使用することができる。
【００４４】
一方、情報処理装置では、検証データ付きプログラムファイルからＭＡＣデータを抽出し、このデータとプログラムに対してプログラム生成装置と同じ演算を行うことで生成したＭＡＣデータとを比較して改竄の検出を行う。検証部は、前記２つのＭＡＣデータが一致した場合には、検証データ付きプログラムファイルに対して改竄が行われなかったと判断し、前記２つのＭＡＣデータが一致した場合には、検証データ付きプログラムファイルに対して改竄が行われたと判断することができる。ＭＡＣデータを検証用データとする場合には、プログラム生成装置と情報処理装置とは秘密鍵Ｋｓを秘密にして共有する。
【００４５】
[第２の実施形態]
以下、図面を参照して本発明の好適な第２の実施形態を説明する。図３は、本発明の好適な実施の形態に係る情報処理装置２０の主要な機能構成を説明するブロック図である。
【００４６】
メディア制御部７０１は、リムーバブルメディア３１０に記憶されたデジタル署名付きプログラムファイルを読み出して、情報処理装置２０にデジタル署名付きプログラムファイルを入力する入力部として機能する。
【００４７】
記憶部７０２は、リムーバブルメディア３１０から読み出されたデジタル署名付きプログラムファイルを記憶する。
【００４８】
ハッシュ関数演算部７０３は、ハッシュ関数Ｈを用いて、デジタル署名付きプログラムファイルに含まれるプログラムのハッシュ値（ダイジェストデータ）を生成する。
【００４９】
署名生成部７０５は、ハッシュ関数演算部７０３で生成されたダイジェストデータを秘密鍵Ｋｓで演算処理し、デジタル署名付きプログラムファイルに含まれるプログラムのデジタル署名を生成する。
【００５０】
検証部７０６は、デジタル署名付きプログラムファイルに含まれるデジタル署名に基づいて、プログラムが改竄されているか否かを検証する。
【００５１】
プログラムアップデート部７０７は、インタフェース部７０９又はリムーバブルメディア７１０を介して提供されたプログラムアップデート用のプログラムに基づいて、デジタル署名付きプログラムファイルに含まれるプログラムをアップデートする。プログラムアップデート用のプログラムは、上記のデジタル署名付きプログラムファイルと同様に、デジタル署名が付されたデジタル署名付きのプログラムであることが望ましい。これによって、検証部７０６は、プログラムを複数回アップデートする場合には、提供されたプログラムアップデート用プログラムに含まれるデジタル署名に基づいて、アップデート後のプログラムが改竄されているか否かを複数回にわたって検証することができる。
【００５２】
制御部７０８は、メモリ７０２に記憶されたプログラムを実行し、情報処理装置２０の各構成要素の動作を制御する。
【００５３】
インタフェース部７０９は、情報処理装置２０に送信されたデジタル署名付きプログラムを回線７１０を通じて受信して、情報処理装置２０にデジタル署名付きプログラムファイルを入力する入力部として機能する。
【００５４】
出力部７１１は、制御部７０６によって実行されたプログラムの実行結果を出力する。
【００５５】
図８は、第２の実施形態におけるシステムの処理手順について説明する図である。
【００５６】
ステップＳ８０１では、図２に示すプログラム生成装置１０のプログラム生成部２０１がプログラムを生成し、生成したプログラムをハッシュ関数演算部２０２及びプログラムファイル生成部２０６に供給する。
【００５７】
ステップＳ８０２では、ハッシュ関数演算部２０２が、ハッシュ関数Ｈを用いてプログラム生成部２０１で生成されたプログラムのハッシュ値を生成し、生成したハッシュ値を署名生成部２０４に供給する。
【００５８】
ステップＳ８０３では、署名生成部２０４が、ハッシュ関数演算部２０２で生成されたハッシュ値（ダイジェストデータ）を秘密鍵Ｋｓで演算処理し、プログラムのデジタル署名を生成する。署名生成部２０４は、生成したデジタル署名をプログラムファイル生成部２０６に供給する。
【００５９】
ステップＳ８０４では、プログラムファイル生成部２０６が、署名生成部２０４で生成されたデジタル署名及びプログラム生成部２０１で生成されたプログラムを含むデジタル署名付きプログラムファイルを生成する。
【００６０】
ステップＳ８０５では、ステップＳ８０４で生成されたデジタル署名付きプログラムファイルをリムーバブルメディア３１０又はインタフェース部７０９を介して情報処理装置２０に入力する。リムーバブルメディア３１０を介してデジタル署名付きプログラムファイルを情報処理装置２０に入力する場合では、メディア制御部７０１がリムーバブルメディア３１０からデジタル署名付きプログラムファイルを読み出し、読み出したデジタル署名付きプログラムファイルを記憶部７０２に格納する。一方、インタフェース部７０９を介してデジタル署名付きプログラムファイルを情報処理装置２０に入力する場合では、インタフェース部７０９が情報処理装置２０に送信されたデジタル署名付きプログラムファイルを回線７１０を通じて受信し、受信したプログラムファイルを記憶部７０２に格納する。さらに、プログラムファイルに付加されたデジタル署名を検証部７０６に供給する。
【００６１】
ステップＳ８０６では、ハッシュ関数演算部７０３が、デジタル署名付きプログラムファイルに含まれるプログラムをハッシュ関数Ｈを用いて演算処理して、このプログラムのハッシュ値（ダイジェストデータ）を生成し、生成したハッシュ値（ダイジェストデータ）を署名生成部７０５に供給する。
【００６２】
ステップＳ８０７では、署名生成部７０５が、ハッシュ関数演算部７０３で生成されたダイジェストデータを秘密鍵Ｋｓで演算処理し、プログラムのデジタル署名を生成する。署名生成部２０４は、生成したデジタル署名を検証部７０６に供給する。
【００６３】
ステップＳ８０８では、検証部７０６が、署名生成部７０５で生成されたデジタル署名と、プログラムファイルに付加されたデジタル署名とを比較して、プログラムが改竄されているか否かを検証する。検証部７０６は、署名生成部７０５で生成されたデジタル署名とプログラムファイルに付加されたデジタル署名とが一致しなければプログラムが改竄されていると判定し、署名生成部７０５で生成されたデジタル署名とプログラムファイルに付加されたデジタル署名とが一致すればプログラムが改竄されていないと判定する。検証部７０６によりデジタル署名付きプログラムファイルが改竄されていると判定された場合では、「改竄あり」と判定された検証結果が記憶部７０２に記憶される。検証部７０６によりデジタル署名付きプログラムファイルが改竄されていないと判定された場合では、「改竄なし」と判定された検証結果が記憶部７０２に記憶される。
【００６４】
ステップＳ８０９では、プログラムアップデート部７０７が、記憶部７０２に記憶された検証結果に基づいて、プログラムのアップデートを行う。例えば、プログラムアップデート部７０７は、記憶部７０２に「改竄なし」と判定された検証結果が記憶されている場合にはプログラムのアップデートを行い、記憶部７０２に「改竄あり」と判定された検証結果が記憶されている場合にはプログラムのアップデートを行わないように、制御部７０８によって制御されうる。
【００６５】
以上説明したように、第２の実施形態におけるシステムによれば、ステップＳ８０１〜ステップＳ８０３の工程と、ステップＳ８０６〜ステップＳ８０８の工程とが実質的に同一であるため、情報処理装置１０がデジタル署名を生成する機能を、情報処理装置２０がプログラムを改竄を検証する際にプログラムのデジタル署名を生成する機能に適用することによって、特別な機能を追加することなくプログラムの改竄を検知することができる。
【００６６】
［他の実施形態］
なお、本発明は、複数の機器（例えばホストコンピュータ、インタフェース機器、リーダ、撮像装置、電子機器など）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、デジタルカメラ、デジタルビデオカメラ及びスキャナ等の撮像装置、ファクシミリ装置及び複写機等の電子機器など）に適用してもよい。
【００６７】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
【００６８】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００６９】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピ（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。
【００７０】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００７１】
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００７２】
以上説明したように、本発明の実施形態におけるシステムによれば、プログラムの改竄検知機能を有する情報処理装置において、プログラムのアップデート時に、前記改竄検知機能を用いてプログラムが改竄されたか否かを検証して、プログラムのアップデートを実行するか否かを切り替えることができる。
【図面の簡単な説明】
【００７３】
【図１】本発明の好適な実施の形態に係るシステムの一構成例を示す図である。
【図２】本発明の好適な実施の形態に係るプログラム生成装置の主要な機能構成例を示す図である。
【図３】本発明の好適な第１の実施形態に係る情報処理装置の主要な機能構成例を示す図である。
【図４】本発明の好適な第１の実施形態に係るシステムの処理手順を示す図である。
【図５】本発明の好適な第１の実施形態に係るテーブルの一例を示す図である。
【図６】本発明の好適な第２の実施形態に係る情報処理装置の主要な機能構成例を示す図である。
【図７】本発明の好適な第２の実施形態に係るシステムの処理手順を示す図である。
【図１】
2006191491.tif 000003
【図２】
2006191491.tif 000004
【図３】
2006191491.tif 000005
【図４】
2006191491.tif 000006
【図５】
2006191491.tif 000007
【図６】
2006191491.tif 000008
【図７】
2006191491.tif 000009