(57)【要約】【課題】  、不正なプログラムが実行されるのを防止することができる情報処理装置、プログラム起動方法、プログラム起動プログラム及び記録媒体の提供を目的とする。【解決手段】  プログラムを実行する情報処理装置であって、前記プログラムを起動する前に、前記プログラムを構成する情報に基づいて第一の署名データを生成し（Ｓ１１４）、前記第一の署名データと前記プログラムに対応して保存されている第二の署名データとを比較することにより前記プログラムの正当性を判断し（Ｓ１１７）、正当であることが確認された場合に前記プログラムを起動することにより上記課題を解決する。【選択図】  図１２
2005148934.tif 000002
【特許請求の範囲】
【請求項１】
プログラムを実行する情報処理装置であって、
前記プログラムを起動する前に、前記プログラムを構成する情報に基づいて第一の署名データを生成し、前記第一の署名データと前記プログラムに対応して保存されている第二の署名データとを比較することにより前記プログラムの正当性を判断し、正当であることが確認された場合に前記プログラムを起動することを特徴とする情報処理装置。
【請求項２】
前記第二の署名データは暗号化されて保存されており、
前記情報処理装置は、暗号化されている前記第二の署名データを予め保存されている暗号鍵に基づいて復号化し、
前記第一の署名データと復号化された第二の署名データとを比較することにより前記プログラムの正当性を判断することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記第一の署名データの値と前記第二の署名データの値とが一致した場合に、前記プログラムは正当であると判断することを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
前記プログラムを構成する情報と前記プログラムが記録されている記録媒体に一意に割り当てられた情報とに基づいて前記第一の署名データを生成することを特徴とする請求項１乃至３いずれか一項記載の情報処理装置。
【請求項５】
前記プログラムはカーネルであり、
前記カーネルを起動する前に前記カーネルを構成する情報に基づいて前記第一の署名データを生成し、該第一の署名データと前記カーネルに対応して保存されている前記第二の署名データとを比較することにより前記カーネルの正当性を判断することを特徴とする請求項１乃至４いずれか一項記載の情報処理装置。
【請求項６】
前記プログラムは前記カーネル上で動作するアプリケーションプログラムの起動処理を実行するアプリケーション起動プログラムであり、
前記アプリケーション起動プログラムを起動する前に、前記アプリケーション起動プログラムを構成する情報に基づいて前記第一の署名データを生成し、該第一の署名データと前記アプリケーション起動プログラムに対応して保存されている前記第二の署名データとを比較することにより前記アプリケーション起動プログラムの正当性を判断することを特徴とする請求項５記載の情報処理装置。
【請求項７】
前記プログラムは前記アプリケーションプログラムであり、前記アプリケーションプログラムを起動する前に、前記アプリケーションプログラムを構成する情報に基づいて前記第一の署名データを生成し、該第一の署名データと前記アプリケーションプログラムに対応して保存されている前記第二の署名データとを比較することにより前記アプリケーションプログラムの正当性を判断することを特徴とする請求項６記載の情報処理装置。
【請求項８】
前記カーネルより前に起動される所定のプログラムが、前記カーネルを構成する情報に基づいて前記第一の署名データを生成し、該第一の署名データと前記カーネルに対応して保存されている前記第二の署名データとを比較することにより前記カーネルの正当性を判断することを特徴とする請求項５乃至７いずれか一項記載の情報処理装置。
【請求項９】
前記所定のプログラムは、前記カーネルを起動することを特徴とする請求項８記載の情報処理装置。
【請求項１０】
前記所定のプログラムは、更に、前記アプリケーション起動プログラムを構成する情報に基づいて前記第一の署名データを生成し、該第一の署名データと前記アプリケーション起動プログラムに対応して保存されている前記第二の署名データとを比較することにより前記アプリケーション起動プログラムの正当性を判断することを特徴とする請求項８又は９記載の情報処理装置。
【請求項１１】
前記アプリケーション起動プログラムが、前記アプリケーションプログラムを構成する情報に基づいて前記第一の署名データを生成し、該第一の署名データと前記アプリケーションプログラムに対応して保存されている前記第二の署名データとを比較することにより前記アプリケーションプログラムの正当性を判断することを特徴とする請求項６乃至１０いずれか一項記載の情報処理装置。
【請求項１２】
前記所定のプログラムは前記暗号鍵を有し、該暗号鍵を用いて前記カーネルに対応して保存されている前記第二の署名データ又は前記アプリケーション起動プログラムに対応して保存されている前記第二の署名データを復号化することを特徴とする請求項８乃至１１いずれか一項記載の情報処理装置。
【請求項１３】
前記アプリケーション起動プログラムは、前記所定のプログラムより前記暗号鍵を引き継いで、該暗号鍵を用いて前記アプリケーションプログラムに対応して保存されている前記第二の署名データを復号化することを特徴とする請求項１２記載の情報処理装置。
【請求項１４】
前記所定のプログラムは、前記カーネルに前記暗号鍵を引き渡し、
前記アプリケーション起動プログラムは、前記カーネルより前記暗号鍵を取得することを特徴とする請求項１３記載の情報処理装置。
【請求項１５】
前記情報処理装置の起動時に最初に起動されるプログラムが、前記所定のプログラムを構成する情報に基づいて前記第一の署名データを生成し、該第一の署名データと前記所定のプログラムに対応して保存されている前記第二の署名データとを比較することにより前記所定のプログラムの正当性を判断することを特徴とする請求項８乃至１１いずれか一項記載の情報処理装置。
【請求項１６】
前記最初に起動されるプログラムは前記暗号鍵を有し、該暗号鍵を用いて前記所定のプログラムに対応して保存されている前記第二の署名データ又は前記アプリケーション起動プログラムに対応して保存されている前記第二の署名データを復号化することを特徴とする請求項１５記載の情報処理装置。
【請求項１７】
前記所定のプログラムは、前記最初に起動されるプログラムより前記暗号鍵を取得し、該暗号鍵を用いて前記カーネルに対応して保存されている前記第二の署名データ又は前記アプリケーション起動プログラムに対応して保存されている前記第二の署名データを復号化することを特徴とする請求項１６記載の情報処理装置。
【請求項１８】
プログラムを実行する情報処理装置におけるプログラム起動方法であって、
前記プログラムを起動する前に前記プログラムを構成する情報に基づいて第一の署名データを生成する署名データ生成手順と、
前記署名データ生成手順において生成された前記第一の署名データと前記プログラムに対応して保存されている第二の署名データとを比較することにより前記プログラムの正当性を判断するプログラム認証手順と、
前記プログラム認証手順において正当であることが確認された場合に、前記プログラムを起動するプログラム起動で順と
を有することを特徴とするプログラム起動方法。
【請求項１９】
前記第二の署名データは暗号化されて保存されており、
暗号化されている前記第二の署名データを予め保存されている暗号鍵に基づいて復号化する署名データ複合化手順を更に有し、
前記プログラム認証手順は、前記第一の署名データと復号化された第二の署名データとを比較することにより前記プログラムの正当性を判断することを特徴とする請求項１８記載のプログラム起動方法。
【請求項２０】
前記プログラム認証手順は、前記第一の署名データの値と前記第二の署名データの値とが一致した場合に、前記プログラムは正当であると判断することを特徴とする請求項１８又は１９記載のプログラム起動方法。
【請求項２１】
前記署名データ生成手順は、前記プログラムを構成する情報と前記プログラムが記録されている記録媒体に一意に割り当てられた情報とに基づいて前記第一の署名データを生成することを特徴とする請求項１８乃至２０いずれか一項記載のプログラム起動方法。
【請求項２２】
プログラムを実行する情報処理装置に、
前記プログラムを起動する前に前記プログラムを構成する情報に基づいて第一の署名データを生成する署名データ生成手順と、
前記署名データ生成手順において生成された前記第一の署名データと前記プログラムに対応して保存されている第二の署名データとを比較することにより前記プログラムの正当性を判断するプログラム認証手順と、
前記プログラム認証手順において正当であることが確認された場合に、前記プログラムを起動するプログラム起動で順と
を実行させるためのプログラム起動プログラム。
【請求項２３】
プログラムを実行する情報処理装置に、
前記プログラムを起動する前に前記プログラムを構成する情報に基づいて第一の署名データを生成する署名データ生成手順と、
前記署名データ生成手順において生成された前記第一の署名データと前記プログラムに対応して保存されている第二の署名データとを比較することにより前記プログラムの正当性を判断するプログラム認証手順と、
前記プログラム認証手順において正当であることが確認された場合に、前記プログラムを起動するプログラム起動で順と
を実行させるためのプログラム起動プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、プログラム起動方法、プログラム起動プログラム及び記録媒体に関し、特に不正なプログラムの起動を防止するための情報処理装置、プログラム起動方法、プログラム起動プログラム及び記録媒体に関する。
【背景技術】
【０００２】
コンピュータ等、ソフトウェアを処理することによって様々な機能を実現する情報処理装置は、例えば、図１に示すようなソフトウェア構成を有している。
【０００３】
図１は、各種ソフトウェアを動作させる情報処理装置における従来のソフトウェア構成例を示す図である。図１に示される情報処理装置５００は、システムＢＩＯＳ５０１と、ブートローダ５０２と、カーネル５０３と、起動プロセス５０４と、アプリケーション５０５ａ、５０５ｂ及び５０５ｃ等の各種アプリケーション（以下、総称する場合「アプリケーション５０５」という。）とから構成されている。
【０００４】
システムＢＩＯＳ５０１は、情報処理装置５００の起動時に最初に起動されるプログラムであり、ブートローダ５０２を起動する。ブートローダ５０２は、情報処理装置５００にインストールされている各種ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）を使い分けるために、その起動時にカーネル５０３等、指定されたカーネルを起動するプログラムである。
【０００５】
カーネル５０３は、メモリ管理やタスク管理等ＯＳの基本機能を実現するプログラムであり、その起動時に起動プロセス５０４を起動する。起動プロセス５０４は、各種アプリケーションを起動するためのプロセスである。
【０００６】
アプリケーション５０５ａ、５０５ｂ及び５０５ｃは、カーネル上でプロセスとして動作し、ユーザ、又は情報処理装置５００内のその他の機能に対して各種のサービスを提供するためのプログラムである。
【０００７】
図１のようなソフトウェア構成を有する情報処理装置５００においては、その起動時に図２に示されるような処理が実行される。図２は、情報処理装置における従来の起動処理を説明するためのシーケンス図である。
【０００８】
情報処理装置５００の電源が入れられると、システムＢＩＯＳ５０１が起動される（Ｓ９０１）。システムＢＩＯＳ５０１は、必要な初期化及び診断処理等を実行し（Ｓ９０２）、異常がないことを確認するとブートローダ５０２を起動する（Ｓ９０３）。
【０００９】
ブートローダ５０２は、やはり必要な初期化及び診断処理等を実行し（Ｓ９０４）、異常がないことを確認するとカーネル５０３を起動する（Ｓ９０５）。カーネル５０３は、デバイスドライバの初期化等を実行し（Ｓ９０６）、起動プロセス５０４を起動する（Ｓ９０７）。
【００１０】
起動プロセス５０４は、カーネル上に常駐し、必要に応じてアプリケーション５０５ａ等、各種アプリケーションを起動する。すなわち、その後にカーネル上で動作するアプリケーションは、全て起動プロセス５０４によって起動される。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかしながら、従来の起動処理においては、プログラムを起動する側は、起動対象となるプログラムの正当性の確認等を行っていないため、起動対象となるプログラムが不正に書き換えられている場合には、不正なプログラムがそのまま起動されるという危険性があった。
【００１２】
例えば、起動プロセス５０４が不正に書き換えられた場合を想定する。図３は、起動プロセスが不正に書き換えられた場合のソフトウェア構成例を示す図である。図３中、図１と同一部分には同一符号を付し、その説明は省略する。
【００１３】
図３の情報処理装置５００においては、本来の起動プロセス５０４が、不正な起動プロセス５０４ｂによって同じファイル名で書き換えられている。また、不正な起動プロセス５０４ｂによって起動され、例えば、システムファイルの破壊等の不正な処理を実行する不正なアプリケーション５０６が追加されている。
【００１４】
図４は、起動プロセスが不正に書き換えられた場合に想定される起動処理を説明するためのシーケンス図である。図４中、図２におけるステップと同一ステップには同一符号を付している。すなわち、図４において、カーネル５０３が起動され、デバイスドライバの初期化処理が実行されるまで（Ｓ９０６）の処理は図２と同様に実行される。
【００１５】
その後、カーネル５０３は起動プロセス５０４を起動することになるが、起動プロセス５０４は、不正な起動プロセス５０４ｂに同じファイル名で書き換えられているため、カーネル５０３は、不正な起動プロセス５０４ｂをそのまま起動してしまう（Ｓ５１１）。
【００１６】
その結果、不正な起動プロセス５０４ｂによって不正なアプリケーション５０６が起動され（Ｓ５１２）、情報処理装置５００のシステムファイルは、不正なアプリケーション５０６によって破壊されてしまうという事態が発生しうる。
【００１７】
本発明は、上記の点に鑑みてなされたものであって、不正なプログラムが実行されるのを防止することができる情報処理装置、プログラム起動方法、プログラム起動プログラム及び記録媒体の提供を目的とする。
【課題を解決するための手段】
【００１８】
そこで上記課題を解決するため、本発明は、プログラムを実行する情報処理装置であって、前記プログラムを起動する前に、前記プログラムを構成する情報に基づいて第一の署名データを生成し、前記第一の署名データと前記プログラムに対応して保存されている第二の署名データとを比較することにより前記プログラムの正当性を判断し、正当であることが確認された場合に前記プログラムを起動することを特徴とする。
【００１９】
このような情報処理装置では、プログラムを起動する前に当該プログラムの正当性を確認することができるため、不正なプログラムが実行されることを防止することができる。
【００２０】
また、上記課題を解決するため、本発明は、上記情報処理装置におけるプログラム起動方法、前記プログラム起動方法を前記情報処理装置に実行させるためのプログラム起動プログラム、又は前記プログラム起動プログラムを記録した記録媒体としてもよい。
【発明の効果】
【００２１】
本発明によれば、不正なプログラムが実行されるのを防止することができる情報処理装置、プログラム起動方法、プログラム起動プログラム及び記録媒体を提供することができる。
【発明を実施するための最良の形態】
【００２２】
以下、図面に基づいて本発明の実施の形態を説明する。本実施の形態においては、プログラムを実行する情報処理装置の具体例として、コピー機等の画像形成装置を用いて説明する。近年の画像形成装置には、各種アプリケーションが実装され、そのアプリケーションプログラムを処理することによって各種の機能を実現するものが提供されている。
【００２３】
図５は、本発明の実施の形態における画像形成装置のコントローラボードの構成例を示す図である。図５に示されるように、画像形成装置１０のコントローラボード１００は、ＣＰＵ１０１、メモリ１０２、チップセット１０３、ＢＩＯＳフラッシュロム１０４、ＡＳＩＣ（Application Specific Integrated Circuit）１０５、起動用ＳＤ（Secure Digital memory card）スロット１０６、及びユーザアプリケーション用ＳＤスロット１０７等から構成されている。
【００２４】
ＣＰＵ１０１は、画像形成装置１０に実装されたプログラムを処理することにより当該プログラムに係る機能を実現するための部品である。メモリ１０２は、プログラムの実行時に当該プログラム等を格納するための記憶領域である。チップセット１０３は、ＣＰＵ１０１、メモリ１０２、ＢＩＯＳフラッシュロム１０４及びＡＳＩＣ１０５等を相互に接続すると共に、これらの部品を制御するためのコントローラボード１００の中枢部品である。
【００２５】
ＢＩＯＳフラッシュロム１０４は、後述されるようにシステムＢＩＯＳが書き込まれているＲＯＭである。ＡＳＩＣ１０５は、画像処理用のハードウェア要素を有する画像処理用途向けのＩＣである。
【００２６】
起動用ＳＤスロット１０６及びユーザアプリケーション用ＳＤスロット１０７は、ＳＤカードを装着するためのスロットである。起動用ＳＤスロット１０６は、システムの起動に必要なプログラム等が書き込まれたＳＤカード（以下、「起動用ＳＤカード１０８」という。）が装着されるスロットであり、ユーザアプリケーション用ＳＤスロット１０７は、画像形成装置１０のユーザが必要に応じてアプリケーションを追加する際に当該アプリケーションが書き込まれたＳＤカード（以下、「ユーザアプリケーション用ＳＤカード１０９」という。）を装着するためのスロットである。したがって、ユーザアプリケーション用ＳＤスロット１０７においては、起動用ＳＤスロット１０６に比べて頻繁にＳＤカードが差し替えられる。
【００２７】
図６は、本発明の実施の形態における画像形成装置のソフトウェア構成例を示す図である。図６に示されるように、画像形成装置１０には、システムＢＩＯＳ１１と、ブートロー１２と、カーネル１３と、起動プロセス１４と、アプリケーション１５ａ、１５ｂ及び１５ｃ等の各種アプリケーション（以下、総称する場合「アプリケーション１５」という。）とが実装されている。
【００２８】
システムＢＩＯＳ１１は、画像形成装置１０の起動時に最初に起動されるプログラムであり、ブートローダ１２を起動する。ブートローダ１２は、画像形成装置１０にインストールされている各種ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）を使い分けるために、その起動時にカーネル１３等、指定されたカーネルを起動するプログラムである。なお、本実施の形態におけるブートローダ１２は、公開鍵１２１を有している。公開鍵１２１は、ブートローダ１２が、カーネル１３及び起動プロセス１４等の正当性を確認するために用いる暗号鍵である。
【００２９】
カーネル１３は、メモリ管理やタスク管理等ＯＳの基本機能を実現するプログラムであり、その起動時に起動プロセス１４を起動する。起動プロセス１４は、各種アプリケーション１５を起動するためのプログラムである。
【００３０】
アプリケーション１５ａ、１５ｂ及び１５ｃは、カーネル１３上でプロセスとして動作し、ユーザ、又は画像形成装置１０内のその他の機能に対して各種のサービスを提供するためのプログラムである。
【００３１】
画像形成装置１０にはまた、カーネル１３、起動プロセス１４、及びアプリケーション１５のそれぞれの正当性を保証するための電子的な署名情報（電子署名）が記録されたファイルとしてカーネル電子署名ファイル１３１と、起動プロセス電子署名ファイル１４１と、アプリケーション電子署名ファイル１５１ａ、１５１ｂ及び１５１ｃ（以下、総称する場合「アプリケーション電子署名ファイル１５１」という。）とが保存されている。
【００３２】
図７は、画像形成装置における各種ソフトウェア等の配置位置を示す図である。図７に示されるように、システムＢＩＯＳ１１は、ＢＩＯＳフラッシュロム１０４に格納されている。また、ブートローダ１２、カーネル１３、カーネル電子署名ファイル１３１、起動プロセス１４、及び起動プロセス電子署名ファイル１４１は、起動用ＳＤスロット１０６に装着された起動用ＳＤカード１０８に格納されている。更に、アプリケーション１５及びアプリケーション電子署名ファイル１５１は、ユーザアプリケーション用ＳＤスロット１０７に装着されたユーザアプリケーション用ＳＤカード１０９に格納されている。
【００３３】
なお、図７のようにブートローダ１２を起動用ＳＤスロット１０６に配置した場合は、ブートローダ１２が有している公開鍵１２１が、悪意のあるユーザによって容易に参照及び改竄されてしまう可能性がある。ＳＤカードは簡単に取り外すことができ、その内容は他のＰＣ（Personal Computer）等において容易に参照及び書き換えが可能だからである。したがって、ブートローダ１２をＢＩＯＳフラッシュロム１０４に配置するようにしてもよい。
【００３４】
図８は、ブートローダをＢＩＯＳフラッシュロムに配置した例を示す図である。ＢＩＯＳフラッシュロム１０４の内容を参照するのは、ＳＤカードの内容を参照する場合に比べ困難であるため、図８のように、ブートローダ１２をＢＩＯＳフラッシュロム１０４に配置することによって、公開鍵１２１の改竄等の危険性を低減させることができる。
【００３５】
以下、画像形成装置１０の処理手順について説明する。図９は、画像形成装置の起動処理を説明するためのシーケンス図である。
【００３６】
画像形成装置１０の電源が入れられると、システムＢＩＯＳ１１が起動される（Ｓ１１）。システムＢＩＯＳ１１は、必要な初期化及び診断処理等を実行し（Ｓ１２）、異常がないことを確認するとブートローダ１２を起動する（Ｓ１３）。
【００３７】
ブートローダ１２は、やはり必要な初期化及び診断処理等を実行し（Ｓ１４）、異常がないことを確認すると、公開鍵１２１を使ってカーネル１３及び起動プロセス１４の正当性をチェックする（Ｓ１５、Ｓ１６）。なお、公開鍵１２１を使った正当性のチェックの詳細については後述する。
【００３８】
カーネル１３及び起動プロセス１４が正当であることが確認できた場合は、ブートローダ１２は、カーネル１３を起動する（Ｓ１７）。なお、ブートローダ１２は、カーネル１３を起動する際に、引数として公開鍵１２１をカーネル１３に引き渡す。したがって、公開鍵１２１が、カーネル１３によって保持される。
【００３９】
カーネル１３は、デバイスドライバの初期化等を実行し（Ｓ１８）、起動プロセス１４を起動する（Ｓ１９）。
【００４０】
起動プロセス１４は、カーネル１３が保持している公開鍵１２１を、例えば、カーネル１３のシステムコールを呼び出すことにより取得し、保持しておく（Ｓ２０）。その後も起動プロセス１４はカーネル上に常駐し、アプリケーション１５の起動が要求された際に、公開鍵１２１を使ってアプリケーション１５の正当性をチェックし（Ｓ２１）、正当であることが確認されたアプリケーション１５のみを起動する（Ｓ２２）。
【００４１】
上述における公開鍵１２１の流れに焦点を当て、図１０を用いて説明する。図１０は、公開鍵の流れを説明するための図である。システムＢＩＯＳ１１は、公開鍵１２１を有していないため、システムＢＩＯＳ１１がブートローダ１２を起動する際には、公開鍵１２１は移動しない（Ｓ３１）。ブートローダ１２は、自らが有している公開鍵１２１を使って、カーネル１３及び起動プロセス１４の正当性を確認し、カーネル１３を起動する。この際に引数として公開鍵１２１がカーネル１３に渡され、公開鍵１２１はカーネル１３によって保持される（Ｓ３２）。
【００４２】
カーネル１３が、起動プロセス１４を起動すると（Ｓ３３）、起動プロセス１４は、カーネル１３のシステムコールを呼び出すことにより、カーネル１３に保持されている公開鍵１２１を取得する（Ｓ３４）。その後、起動プロセス１４は、アプリケーション１５を起動する際に、公開鍵１２１を使ってアプリケーション１５の正当性を確認する（Ｓ３５）。
【００４３】
上述したように、本実施の形態における画像形成装置１０によれば、カーネル１３、起動プロセス１４及びアプリケーション１５については正当性が確認された場合のみ起動されるため、これらが不正に改竄されている場合はその旨を検知することができ、不正なプログラムが実行されることによる予期せぬ障害の発生を未然に防止することができる。
【００４４】
なお、上述において、システムＢＩＯＳ１１ではなくブートローダ１２がカーネル１３及び起動プロセス１４の正当性を確認しているのは、ブートローダ１２でないと起動すべきカーネル１３を判断することができないからであり、また、起動すべきカーネル１３が判断できないと、カーネル１３上で起動される起動プロセス１４を判断することができないからである。
【００４５】
また、カーネル１３ではなく、起動プロセス１４がアプリケーション１５の正当性を確認しているのは、正当性を確認するための機能（後述する認証ルーチン１９５）に要する実装が大きいことによる。すなわち、カーネル１３をなるべく軽い実装にしておくためであり、アプリケーション１５の起動に必ず関与する起動プロセス１４に当該実装を行うことにより、カーネル１３は、軽い実装のままアプリケーション１５の正当性を可能としているのである。
【００４６】
次に、カーネル１３、起動プロセス１４及びアプリケーション１５等の正当性を確認するための認証処理（ステップＳ１５、Ｓ１６及びＳ２２）の詳細について説明する。なお、認証処理は全て共通的な処理であるため、以下においては、認証する側を認証チェックプログラムと、認証される側を対象プログラムと抽象化して説明することとする。
【００４７】
すなわち、ステップＳ１５においてはブートローダ１２が認証チェックプログラムに該当し、カーネル１３が対象プログラムに該当する。また、ステップＳ１６においてはブートローダ１２が認証チェックプログラムに該当し、起動プロセス１４が対象プログラムに該当する。更に、ステップＳ２１においては起動プロセス１４が認証チェックプログラムに該当し、アプリケーション１５が対象プログラムに該当する。
【００４８】
また、認証処理は対象ファイルの形式によって多少異なったものとなるため、以下においては、対象ファイルがＥＬＦ形式による場合とｇｚｉｐ圧縮されている場合とに分けて認証処理を説明する。
【００４９】
図１１は、対象プログラムがＥＬＦ形式によって生成されている場合の認証チェックプログラムによる認証処理の概要を説明するための図である。
【００５０】
図１１において、ＳＤカード１１０は、起動用ＳＤカード１０８及びユーザアプリケーション用ＳＤカード１０９の両者を抽象化して表現するものであり、ｅｌｆファイル１６０ａ及びｅｌｆ電子署名ファイル１７０ａを格納している。
【００５１】
ｅｌｆファイル１６０ａは、ＥＬＦ形式によって生成されている対象ファイルであり、ｅｌｆ実行形式ファイルヘッダ１６１ａ、テキスト領域１６２ａ、データ領域１６３ａ、ＢＳＳ領域１６４ａ及びシンボル領域１６５ａ等から構成されている。ｅｌｆ実行形式ファイルヘッダ１６１ａは、ヘッダ情報が格納されている領域である。テキスト領域１６２ａとデータ領域１６３ａとはプログラムの本体である。ＢＳＳ領域１６４ａは、０で埋められた領域であり、シンボル領域１６５ａは、デバッグ情報が格納された領域である。
【００５２】
ｅｌｆ電子署名ファイル１７０ａは、ｅｌｆファイル１６０ａに対する電子署名であるｅｌｆ電子署名１７１ａが暗号化されて格納されている電子署名ファイルである。すなわちｅｌｆ電子署名ファイル１７０ａは、カーネル電子署名ファイル１３１、起動プロセス電子署名ファイル１４１、又はアプリケーション電子署名ファイル１５１等を抽象化して表現したものである。
【００５３】
認証チェックプログラムは、まず、ｅｌｆファイル１６０ａのうちｅｌｆ実行形式ファイルヘッダ１６１ａを除く領域をメモリ１０２上に展開し（Ｓ１０１）、メモリ１０２上に展開したテキスト領域１６２ａとデータ領域１６３ａとを、例えばメッセージダイジエストによって数値化することにより電子署名１６６ａを生成する（Ｓ１０２）。
【００５４】
続いてｅｌｆ電子署名ファイル１７０ａを公開鍵１２１によって復号化し、暗号化されていたｅｌｆ電子署名１７１ａをｅｌｆ電子署名１７２ａとしてメモリ１０２上に展開する（Ｓ１０３）。
【００５５】
最後に、電子署名１６６ａとｅｌｆ電子署名１７２ａとの値を比較し、両者の値が一致した場合はｅｌｆファイル１６０ａを正当なファイルであると判断し、両者の値が一致しない場合はｅｌｆファイル１６０ａを不正なファイルであると判断する。
【００５６】
図１１で図示した処理を図１２によって更に詳細に説明する。図１２は、対象プログラムがＥＬＦ形式によって生成されている場合の認証チェックプログラムによる認証処理を説明するためのフローチャートである。
【００５７】
まず、認証チェックプログラムは、公開鍵１２１を取得する（Ｓ１１１）。ｅｌｆファイル１６０ａの存在を確認し（Ｓ１１２）、ｅｌｆファイル１６０ａが存在する場合はｅｌｆファイル１６０ａをメモリ１０２上に展開する（Ｓ１１３）。更に、メモリ１０２上に展開したｅｌｆファイル１６０ａのテキスト領域１６２ａとデータ領域１６３ａとに基づいて電子署名１６６ａ（ＭＤ１）を生成する（Ｓ１１４）。
【００５８】
続いて、ｅｌｆ電子署名ファイル１７０ａの存在を確認し（Ｓ１１５）、ｅｌｆ電子署名ファイル１７０ａが存在する場合はｅｌｆ電子署名ファイル１７０ａを公開鍵１２１で復号化し、ｅｌｆ電子署名１７２ａ（ＭＤ２）をメモリ１０２上に展開する。
【００５９】
最後に、電子署名１６６ａとｅｌｆ電子署名１７２ａとの値を比較し（Ｓ１１７）、両者の値が同一の場合はｅｌｆファイル１６０ａを正当なファイルであると判断し（Ｓ１１８）、メモリ１０２に展開されているｅｌｆファイル１６０ａを起動する（Ｓ１１９）。
【００６０】
このように、ｅｌｆファイル１６０の電子署名を生成する際に、ＳＤカード１０に保存されているｅｌｆファイル１６０にアクセスするのではなく、ｅｌｆファイル１６０を起動するためにメモリ１０２上に展開されている情報に基づいてｅｌｆファイル１６０の電子署名を生成することで、一般にアクセス速度が遅いＳＤカード１０に対するアクセス回数を低減することができ認証処理の高速化を図ることができる。
【００６１】
なお、電子署名１６６ａとｅｌｆ電子署名１７２ａとの値が異なる場合や、ｅｌｆファイル１６０ａ又はｅｌｆ電子署名ファイル１７０ａが存在しない場合は、ｅｌｆファイル１６０ａの認証に失敗したものと判断し（Ｓ１２０）、起動処理を停止する（Ｓ１２１）。
【００６２】
次に、対象ファイルがｇｚｉｐ圧縮されている場合について説明する。図１３は、対象プログラムがｇｚｉｐ圧縮されている場合の認証チェックプログラムによる認証処理の概要を説明するための図である。図１３中、図１１と同一部分には同一符号を付し、その説明は省略する。
【００６３】
図１３において、ｇｚｉｐ圧縮ファイル１６０ｂは、ｇｚｉｐ圧縮されている対象ファイルであり、ｇｚｉｐファイルヘッダ１６１ｂ及び圧縮データ１６２ｂ等から構成されている。ｇｚｉｐファイルヘッダ１６１ｂは、ヘッダ情報が格納されている領域である。圧縮データ１６２ｂは圧縮されたプログラムの本体である。
【００６４】
ｇｚｉｐ電子署名ファイル１７０ｂは、ｇｚｉｐ圧縮ファイル１６０ｂに対する電子署名であるｇｚｉｐ電子署名１６１ｂが暗号化されて格納されている電子署名ファイルである。すなわちｇｚｉｐ電子署名ファイル１７０ｂは、カーネル電子署名ファイル１３１、起動プロセス電子署名ファイル１４１、又はアプリケーション電子署名ファイル１５１等を抽象化して表現したものである。
【００６５】
認証チェックプログラムは、まず、ｇｚｉｐ圧縮ファイル１６０ｂの圧縮データ１６２ｂをメモリ１０２上に解凍し（Ｓ２０１）、解凍した解凍済みデータ１６３ｂを、例えばメッセージダイジエストによって数値化することにより電子署名１６４ｂを生成する（Ｓ２０２）。
【００６６】
続いて、ｇｚｉｐ電子署名ファイル１７０ｂを公開鍵１２１によって復号化し、暗号化されていたｇｚｉｐ電子署名１７１ｂをｇｚｉｐ電子署名１７２ｂとしてメモリ１０２上に展開する（Ｓ２０３）。
【００６７】
最後に、電子署名１６４ｂとｇｚｉｐ電子署名１７２ｂとの値を比較し、両者の値が一致した場合はｇｚｉｐ圧縮ファイル１６０ｂを正当なファイルであると判断し、両者の値が一致しない場合はｇｚｉｐ圧縮ファイル１６０ｂを不正なファイルであると判断する。
【００６８】
図１３で図示した処理を図１４によって更に詳細に説明する。図１４は、対象プログラムがｇｚｉｐ圧縮されている場合の認証チェックプログラムによる認証処理を説明するためのフローチャートである。
【００６９】
まず、認証チェックプログラムは、公開鍵１２１を取得する（Ｓ２１１）。ｇｚｉｐ圧縮ファイル１６０ｂの存在を確認し（Ｓ２１２）、ｇｚｉｐ圧縮ファイル１６０ｂが存在する場合はｇｚｉｐ圧縮ファイル１６０ｂをメモリ１０２上に解凍する（Ｓ２１３）。更に、解凍した解凍済みデータ１６３ｂに基づいて電子署名１６３ｂ（ＭＤ１）を生成する（Ｓ２１４）。
【００７０】
続いて、ｇｚｉｐ電子署名ファイル１７０ｂの存在を確認し（Ｓ２１５）、ｇｚｉｐ電子署名ファイル１７０ｂが存在する場合はｇｚｉｐ電子署名ファイル１７０ｂを公開鍵１２１で復号化し、ｇｚｉｐ電子署名１７２ｂ（ＭＤ２）をメモリ１０２上に展開する。
【００７１】
最後に、電子署名１６４ｂとｇｚｉｐ電子署名１７２ｂとの値を比較し（Ｓ２１７）、両者の値が同一の場合はｇｚｉｐ圧縮ファイル１６０ｂを正当なファイルであると判断し（Ｓ２１８）、メモリ上に展開されている解凍済みデータ１６３ｂを起動する（Ｓ２１９）。
【００７２】
なお、電子署名１６４ｂとｇｚｉｐ電子署名１７２ｂとの値が異なる場合や、ｇｚｉｐ圧縮ファイル１６０ｂ又はｇｚｉｐ電子署名ファイル１７０ｂが存在しない場合は、ｇｚｉｐ圧縮ファイル１６０ｂの認証に失敗したものと判断し（Ｓ２２０）、起動処理を停止する（Ｓ２２１）。
【００７３】
ところで、上述した方法では、ＳＤカード１０は認証の対象とされていないため、ＳＤカード１０の内容が他のＳＤカードに不正にコピーされ、コピーされた他のＳＤカードが利用された場合に、対象ファイルが不正にコピーされたものであることを検知することができない。そこで、次に、ＳＤカードについても認証の対象とすることにより、より高いセキュリティの確保を可能とした例について説明する。
【００７４】
図１５は、ＳＤカードも認証の対象とする場合の認証チェックプログラムによる認証処理の概要を説明するための図である。図１５中、図１３と同一部分には同一符号を付し、その説明は省略する。
【００７５】
図１５と図１３とを比較すると、図１５のＳＤカード１０には、ＳＤＩＤ１８０が更に格納されている。ＳＤＩＤ１８０は、各ＳＤカードに一意に割り当てられたＩＤである。
【００７６】
認証チェックプログラムは、まず、ｇｚｉｐ圧縮ファイル１６０ｂの圧縮データ１６２ｂをメモリ１０２上に解凍すると共に（Ｓ３０１）ＳＤＩＤ１８０をメモリ１０２上に展開し（Ｓ３０２）、解凍した解凍済みデータ１６３ｂとＳＤＩＤ１８０とを、例えばメッセージダイジエストによって数値化することにより電子署名１６４ｂを生成する（Ｓ３０３）。
【００７７】
続いて、ｇｚｉｐ電子署名ファイル１７０ｂを公開鍵１２１によって復号化し、暗号化されていたｇｚｉｐ電子署名１７１ｂをｇｚｉｐ電子署名１７２ｂとしてメモリ１０２上に展開する（Ｓ３０４）。
【００７８】
最後に、電子署名１６４ｂとｇｚｉｐ電子署名１７２ｂとの値を比較し、両者の値が一致した場合はｇｚｉｐ圧縮ファイル１６０ｂを正当なファイルであると判断し、両者の値が一致しない場合はｇｚｉｐ圧縮ファイル１６０ｂを不正なファイルであると判断する。
【００７９】
図１５で図示した処理を図１６によって更に詳細に説明する。図１６は、ＳＤカードも認証の対象とする場合の認証チェックプログラムによる認証処理を説明するためのフローチャートである。
【００８０】
まず、認証チェックプログラムは、公開鍵１２１を取得する（Ｓ３１１）。ｇｚｉｐ圧縮ファイル１６０ｂの存在を確認し（Ｓ３１２）、ｇｚｉｐ圧縮ファイル１６０ｂが存在する場合はｇｚｉｐ圧縮ファイル１６０ｂをメモリ１０２上に解凍する（Ｓ３１３）。更に、ＳＤＩＤ１８０をメモリ１０２上に展開し（Ｓ３１４）、解凍済みデータ１６３ｂとＳＤＩＳ１０２とに基づいて電子署名１６３ｂ（ＭＤ１）を生成する（Ｓ３１５）。
【００８１】
続いて、ｇｚｉｐ電子署名ファイル１７０ｂの存在を確認し（Ｓ３１６）、ｇｚｉｐ電子署名ファイル１７０ｂが存在する場合はｇｚｉｐ電子署名ファイル１７０ｂを公開鍵１２１で復号化し、ｇｚｉｐ電子署名１７２ｂをメモリ１０２上に展開する（Ｓ３１７）。
【００８２】
最後に、電子署名１６４ｂとｇｚｉｐ電子署名１７２ｂとの値を比較し（Ｓ３１８）、両者の値が同一の場合はｇｚｉｐ圧縮ファイル１６０ｂを正当なファイルであると判断し（Ｓ３１９）、メモリ上に展開されている解凍済みデータ１６３ｂを起動する（Ｓ３２０）。
【００８３】
なお、電子署名１６４ｂとｇｚｉｐ電子署名１７２ｂとの値が異なる場合や、ｇｚｉｐ圧縮ファイル１６０ｂ又はｇｚｉｐ電子署名ファイル１７０ｂが存在しない場合は、ｇｚｉｐ圧縮ファイル１６０ｂの認証に失敗したものと判断し（Ｓ３２１）、起動処理を停止する（Ｓ３２２）。
【００８４】
図１５及び図１６に示した方法では、各ＳＤカードに一意な値であるＳＤＩＤ１８０を用いて電子署名１２３を生成するため、電子署名１２３の値はＳＤカードごとに異なったものとなる。したがって、対象ファイルが他のＳＤカードに不正にコピーされた場合は、電子署名１２３とｇｚｉｐ電子署名１７１ｂとの値が一致せず、不正にコピーされた旨を検知することができる。
【００８５】
なお、図１５及び図１６においては、対象ファイルがｇｚｉｐ圧縮されている場合について説明しているが、対象ファイルがＥＬＦ形式による場合も、ＳＤＩＤ１８０を用いて電子署名を生成するようにすることで、同様の効果を得ることができる。
【００８６】
更に、上述した認証処理を実現するための認証チェックプログラムの詳細について説明する。図１７は、認証チェックプログラムのオブジェクト図である。図１７のオブジェクト図は、対象ファイルがＥＬＦ形式による場合であってもｇｚｉｐ圧縮されている場合であっても共通であるため、更に抽象化して説明する。
【００８７】
図１７に示されるように、認証チェックプログラム１９０は、電子署名比較メソッド、ファイル読み込みメソッド及びプログラム起動メソッド等を有しており、更に認証チェックルーチン１９５を内包している。
【００８８】
電子署名比較メソッドは、対象ファイル１６０から生成した電子署名と、予め電子署名ファイルに保存されている電子署名との値を比較するためのメソッドである。ファイル読み込みメソッドは、対象ファイル１６０をメモリ１０２上に展開するためのメソッドである。プログラム起動メソッドは、認証された対象ファイル１６０を起動するためのメソッドである。
【００８９】
認証チェックルーチン１９５は、電子署名生成メソッドと電子署名復号化メソッドとを有したライブラリである。電子署名生成メソッドは対象ファイルから電子署名を生成するためのメソッドであり、電子署名復号化メソッドは、公開鍵１２１を用いて電子署名ファイルを復号化するためのメソッドである。
【００９０】
図１８は、認証処理の際の認証チェックプログラム内の動作を説明するためのシーケンス図である。
【００９１】
認証チェックプログラム１０６は、ファイル読み込みメソッドを呼び出すことによりＳＤカード１０に格納されている対象ファイル１６０をメモリ１０２上に展開する（Ｓ４０１）。認証チェックプログラム１９０が、認証チェックルーチン１９５の電子署名生成メソッドを呼び出すと（Ｓ４０２）、認証チェックルーチン１９５は、メモリ１０２上に展開された対象ファイル１６０に基づいて電子署名を生成し、生成した電子署名を認証チェックプログラム１９０に対して返却する（Ｓ４０３）。
【００９２】
続いて、認証チェックプログラム１９０が、認証チェックルーチン１９５の電子署名復号化メソッドを呼び出すと（Ｓ４０４）、認証チェックルーチン１９５は、暗号化されている電子署名ファイルを公開鍵１２１によって復号化し、復号化された電子署名を認証チェックプログラム１９０に対して返却する（Ｓ４０５）。
【００９３】
認証チェックプログラム１８０は、二つの電子署名の値を比較し（Ｓ４０６）、両者が一致した場合は、対象ファイル１９０を起動する（Ｓ４０７）。
【００９４】
なお、上述（図７等）においては、ブートローダ１２が公開鍵１２１を有している例について説明したが、公開鍵１２１は、必ずしもブートローダ１２１が有している必要はなく、例えば、システムＢＩＯＳ１１に持たせるようにしてもよい。以下、システムＢＩＯＳ１１が公開鍵を有している場合について説明する。
【００９５】
図１９は、システムＢＩＯＳに公開鍵を持たせた場合の画像形成装置のソフトウェア構成例を示す図である。図１９中、図７と同一部分には同一符号を付し、その説明は省略する。図１９と図７とを比較すると、図１９においてはブートローダ１２ではなくシステムＢＩＯＳ１１が公開鍵１２１を有している。更に、ブートローダ１２に対する電子署名が格納されているブートローダ電子署名ファイル１２２が、起動用ＳＤカード１０８に保存されている。
【００９６】
以下、図１９の画像形成装置１０の処理手順について説明する。図２０は、システムＢＩＯＳに公開鍵を持たせた場合の画像形成装置の起動処理を説明するためのシーケンス図である。
【００９７】
画像形成装置１０の電源が入れられると、システムＢＩＯＳ１１が起動される（Ｓ５１１）。システムＢＩＯＳ１１は、必要な初期化及び診断処理等を実行し（Ｓ５１２）、異常がないことを確認すると、公開鍵１２１とブートローダ電子署名ファイル１２２とに基づいてブートローダ１２の正当性をチェックする。ブートローダ１２の正当性が確認できた場合は、システムＢＩＯＳ１１は、ブートローダ１２を起動する（Ｓ５１４）。
【００９８】
ブートローダ１２は、ソフトウェア割り込みを利用してシステムＢＩＯＳ１１より公開鍵１２１を取得し保持しておく（Ｓ５１５）。ブートローダ１２は更に、必要な初期化及び診断処理等を実行し（Ｓ５１６）、異常がないことを確認すると、取得した公開鍵１２１を使ってカーネル１３及び起動プロセス１４の正当性をチェックする（Ｓ５１７、Ｓ５１８）。
【００９９】
カーネル１３及び起動プロセス１４の正当性が確認できた場合は、ブートローダ１２は、カーネル１３を起動する（Ｓ５１９）。なお、ブートローダ１２は、カーネル１３を起動する際に、引数として公開鍵１２１をカーネル１３に引き渡す。したがって、公開鍵１２１が、カーネル１３によって保持される。
【０１００】
以降の処理は、図９におけるステップＳ１８以降の処理と同じであるため説明を省略する。
【０１０１】
なお、上述における公開鍵１２１の流れに焦点を当て、図２１を用いて説明する。図２１は、システムＢＩＯＳに公開鍵を持たせた場合の公開鍵の流れを説明するための図である。システムＢＩＯＳ１１によって起動されたブートローダ１２は、ソフトウェア割り込みによってシステムＢＩＯＳ１１が有している公開鍵１２１を取得する（Ｓ５３１）。
【０１０２】
ブートローダ１２は、取得した公開鍵１２１を使って、カーネル１３及び起動プロセス１４の正当性を確認し、カーネル１３を起動する。この際に引数として公開鍵１２１がカーネル１３に渡され、公開鍵１２１はカーネル１３によって保持される（Ｓ５３２）。
【０１０３】
カーネル１３が、起動プロセス１４を起動すると（Ｓ５３３）、起動プロセス１４は、カーネル１３のシステムコールを呼び出すことにより、カーネル１３に保持されている公開鍵１２１を取得する（Ｓ５３４）。その後、起動プロセス１４は、アプリケーション１５を起動する際に、公開鍵１２１を使ってアプリケーション１５の正当性を確認する（Ｓ５３５）。
【０１０４】
このように、システムＢＩＯＳ１１に公開鍵を持たせるようにすることによって、ブートローダ１２の正当性のチェックも可能となり、より高度なセキュリティの確保が可能となる。
【０１０５】
なお、上述における画像形成装置１０は、例えば、図２２及び図２３に示されるような機能構成又はハードウェア構成を有する多機能型の融合機を用いても良い。
【０１０６】
図２２は、融合機の一例の構成図を示す。融合機１０００は、プロッタ１０１１と，スキャナ１０１２と，ファクシミリなどのその他のハードウェアリソース１０１３と，ソフトウェア群１０２０と，融合機起動部１０５０とを有する。また、ソフトウェア群１０２０はアプリケーション１０３０とプラットフォーム１０４０とを有する。
【０１０７】
アプリケーション１０３０は、プリンタ，コピー，ファクシミリおよびスキャナなどの画像形成処理にかかるユーザサービスにそれぞれ固有の処理を行うものである。
【０１０８】
アプリケーション１０３０は、ページ記述言語（ＰＤＬ，ＰＣＬ）およびポストスクリプト（ＰＳ）を有するプリンタ用のアプリケーションであるプリンタアプリ１０３１と，コピー用のアプリケーションであるコピーアプリ１０３２と，ファクシミリ用アプリケーションであるファックスアプリ１０３３と，スキャナ用アプリケーションであるスキャナアプリ１０３４と，ネットワークファイル用アプリケーションであるネットファイルアプリ１０３５とを有している。
【０１０９】
また、プラットフォーム１０４０は、アプリケーション１０３０からの処理要求を解釈してハードウェア資源の獲得要求を発生するコントロールサービスと、１つ以上のハードウェア資源の管理を行ってコントロールサービスからの獲得要求を調停するシステムリソースマネージャ（以下、ＳＲＭという）１０４３と、オペレーティングシステム（以下、ＯＳという）１０４１とを有するように構成されている。
【０１１０】
コントロールサービスは、システムコントロールサービス（以下、ＳＣＳという）１０４２，エンジンコントロールサービス（以下、ＥＣＳという）１０４４，メモリコントロールサービス（以下、ＭＣＳという）１０４５，オペレーションパネルコントロールサービス（以下、ＯＣＳという）１０４６，ファックスコントロールサービス（以下、ＦＣＳという）１０４７，ネットワークコントロールサービス（以下、ＮＣＳという）１０４８など、一つ以上のサービスモジュールを有するように構成されている。
【０１１１】
なお、プラットフォーム１０４０は予め定義されている関数によりアプリケーション１０３０からの処理要求を受信可能とするアプリケーションプログラムインタフェース（以下、ＡＰＩという）を有するように構成されている。ＯＳ１０４１は、ユニックス（ＵＮＩＸ（登録商標））等であって、アプリケーション１０３０およびプラットフォーム１０４０の各ソフトウェアをプロセスとして並列実行する。
【０１１２】
ＳＲＭ１０４３のプロセスは、ＳＣＳ１０４２と共にシステムの制御およびハードウェア資源の管理を行うものである。例えばＳＲＭ１０４３のプロセスは、エンジン，メモリ，ＨＤＤファイル，ホストＩ／Ｏ（セントロＩ／Ｆ，ネットワークＩ／Ｆ，ＩＥＥＥ１３９４  Ｉ／Ｆ，ＲＳ２３２Ｃ  Ｉ／Ｆなど）のハードウェア資源を利用する上位層からの要求に従って調停を行い、実行制御する。
【０１１３】
具体的に、ＳＲＭ１０４３は要求されたハードウェア資源が利用可能であるか（他の要求により利用されていないかどうか）を判定し、利用可能であれば要求されたハードウェア資源が利用可能である旨を上位層に通知する。また、ＳＲＭ１０４３は上位層からの要求に対してハードウェア資源を利用するためのスケジューリングを行い、要求内容（例えば、プリンタエンジンによる紙搬送と作像動作，メモリ確保，ファイル生成など）を直接実施している。
【０１１４】
ＳＣＳ１０４２のプロセスは、アプリケーション管理，操作部制御，システム画面表示，ＬＥＤ表示，ハードウェア資源管理，割り込みアプリケーション制御などの処理を行う。ＥＣＳ１０４４のプロセスは、プロッタ１０１１，スキャナ１０１２，その他のハードウェアリソース１０１３などのエンジンの制御を行う。
【０１１５】
ＭＣＳ１０４５のプロセスは、画像メモリの取得および解放，ＨＤＤの利用，画像データの圧縮および伸張などのメモリ制御を行う。ＯＣＳ１０４６のプロセスは、オペレータと本体制御との間の情報伝達手段となるオペレーションパネル（操作パネル）の制御を行う。
【０１１６】
ＦＣＳ１０４７のプロセスは、システムコントローラの各アプリケーション層からＰＳＴＮまたはＩＳＤＮ網を利用したファクシミリ送受信，バックアップ用のメモリで管理されている各種ファクシミリデータの登録／引用，ファクシミリ読み取り，ファクシミリ受信印刷，融合送受信を行うためのＡＰＩを提供する。
【０１１７】
ＮＣＳ１０４８のプロセスは、ネットワークＩ／Ｏを必要とするアプリケーションに対して共通に利用できるサービスを提供するものであり、ネットワーク側から各プロトコルによって受信したデータを各アプリケーションに振り分けたり、各アプリケーションからのデータをネットワーク側に送信する際の仲介を行う。
【０１１８】
例えばＮＣＳ１０４８は、ネットワークを介して接続されるネットワーク機器とのデータ通信をｈｔｔｐｄ（HyperText Transfer Protocol Daemon）により、ＨＴＴＰ（HyperText Transfer Protocol）で制御する。
【０１１９】
融合機起動部１０５０は、融合機１０００の電源投入時に最初に実行され、プラットフォーム１０４０やアプリケーション１０３０を起動するものである。
【０１２０】
融合機１０００は、各アプリケーションで共通的に必要な処理をプラットフォーム１０４０で一元的に処理することができる。次に、融合機１０００のハードウェア構成について説明する。
【０１２１】
図２３は、融合機の一例のハードウェア構成図を示す。図２３の融合機１０００は、コントローラ１０６０，オペレーションパネル１０８０，ＦＣＵ１０８１，エンジン部１０８２を有する。
【０１２２】
コントローラ１０６０は、ＣＰＵ１０６１，システムメモリ１０６２，ノースブリッジ（ＮＢ）１０６３，サウスブリッジ（ＳＢ）１０６４，ＡＳＩＣ１０６６，ローカルメモリ１０６７，ＨＤＤ１０６８、ネットワークインタフェースカード（ＮＩＣ）１０６９，ＵＳＢデバイス１０７０，ＩＥＥＥ１３９４デバイス１０７１，セントロニクス１０７２を有する。
【０１２３】
オペレーションパネル１０８０は、コントローラ１０６０のＡＳＩＣ１０６６に接続されている。また、ＦＣＵ１０８１およびエンジン部１０８２は、コントローラ１０６０のＡＳＩＣ１０６６にＰＣＩバス１０８３で接続されている。
【０１２４】
コントローラ１０６０は、ＡＳＩＣ１０６６にローカルメモリ１０６７，ＨＤＤ１０６８などが接続されると共に、ＣＰＵ１０６１とＡＳＩＣ１０６６とがＣＰＵチップセットのＮＢ１０６３を介して接続されている。コントローラ１０６０は、ＮＢ１０６３を介してＣＰＵ１０６１とＡＳＩＣ１０６６とを接続することにより、ＣＰＵ１０６１のインタフェースが公開されていない場合に対応する。なお、ＡＳＩＣ１０６６とＮＢ１０６３とはＡＧＰ（Accelerated Graphics Port ）１０６５を介して接続されている。
【０１２５】
このように、図２２のアプリケーション１０３０やプラットフォーム１０４０を形成する一つ以上のプロセスを実行制御するため、ＡＳＩＣ１０６６とＮＢ１０６３とを低速のＰＣＩバスでなくＡＧＰ１０６５を介して接続することで、パフォーマンスの低下を防いでいる。
【０１２６】
ＣＰＵ１０６１は、融合機１０００の全体制御を行うものである。ＣＰＵ１０６１は、ＳＣＳ１０４２，ＳＲＭ１０４３，ＥＣＳ１０４４，ＭＣＳ１０４５，ＯＣＳ１０４６，ＦＣＳ１０４７，ＮＣＳ１０４８をＯＳ１０４１上に起動して実行させると共に、アプリケーション１０３０を形成するプリンタアプリ１０３１，コピーアプリ１０３２，ファックスアプリ１０３３，スキャナアプリ１０３４，ネットファイルアプリ１０３５を起動して実行させる。
【０１２７】
ＮＢ１０６３は、ＣＰＵ１０６１，システムメモリ１０６２，ＳＢ１０６４，ＡＳＩＣ１０６６，ＮＩＣ１０６９，ＵＳＢデバイス１０７０，ＩＥＥＥ１３９４デバイス１０７１およびセントロニクス１０７２を接続するためのブリッジである。
【０１２８】
ＳＢ１０６４，ＮＩＣ１０６９，ＵＳＢデバイス１０７０，ＩＥＥＥ１３９４デバイス１０７１およびセントロニクス１０７２は、ＰＣＩバス１０７３を介してＮＢ１０６３に接続されている。なお、ＳＢ１０６４は、ＰＣＩバス１０７３とＲＯＭや周辺デバイス等とを接続するためのブリッジである。
【０１２９】
システムメモリ１０６２は、融合機１０００の描画用メモリなどとして用いるメモリである。ローカルメモリ１０６７はコピー用画像バッファ，符号バッファとして用いるメモリである。
【０１３０】
ＡＳＩＣ１０６６は、画像処理用のハードウェア要素を有する画像処理用途向けのＩＣである。ＨＤＤ１０６８は、画像データの蓄積，文書データの蓄積，プログラムの蓄積，フォントデータの蓄積，フォームの蓄積などを行うストレージ（補助記憶機器）の一例である。
【０１３１】
ＮＩＣ１０６９は、融合機１０００をネットワークに接続するインタフェース機器である。ＵＳＢデバイス１０７０，ＩＥＥＥ１３９４デバイス１０７１およびセントロニクス１０７２は、夫々の規格に準じたインタフェースである。
【０１３２】
また、オペレーションパネル１０８０は、オペレータからの入力操作を受け付けると共に、オペレータに向けた表示を行う操作部である。なお、ＦＣＵ１０８１はバックアップ用のメモリを有している。ＦＣＵ１０８１が有するメモリは、例えば融合機１０００の電源がＯＦＦのときに受信したファクシミリデータを一時的に格納するために利用される。
【０１３３】
以上、本発明の好ましい実施例について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【図面の簡単な説明】
【０１３４】
【図１】各種ソフトウェアを動作させる情報処理装置における従来のソフトウェア構成例を示す図である。
【図２】情報処理装置における従来の起動処理を説明するためのシーケンス図である。
【図３】起動プロセスが不正に書き換えられた場合のソフトウェア構成例を示す図である。
【図４】起動プロセスが不正に書き換えられた場合に想定される起動処理を説明するためのシーケンス図である。
【図５】本発明の実施の形態における画像形成装置のコントローラボードの構成例を示す図である。
【図６】本発明の実施の形態における画像形成装置のソフトウェア構成例を示す図である。
【図７】画像形成装置における各種ソフトウェア等の配置位置を示す図である。
【図８】ブートローダをＢＩＯＳフラッシュロムに配置した例を示す図である。
【図９】画像形成装置の起動処理を説明するためのシーケンス図である。
【図１０】公開鍵の流れを説明するための図である。
【図１１】対象プログラムがＥＬＦ形式によって生成されている場合の認証チェックプログラムによる認証処理の概要を説明するための図である。
【図１２】対象プログラムがＥＬＦ形式によって生成されている場合の認証チェックプログラムによる認証処理を説明するためのフローチャートである。
【図１３】対象プログラムがｇｚｉｐ圧縮されている場合の認証チェックプログラムによる認証処理の概要を説明するための図である。
【図１４】対象プログラムがｇｚｉｐ圧縮されている場合の認証チェックプログラムによる認証処理を説明するためのフローチャートである。
【図１５】ＳＤカードも認証の対象とする場合の認証チェックプログラムによる認証処理の概要を説明するための図である。
【図１６】ＳＤカードも認証の対象とする場合の認証チェックプログラムによる認証処理を説明するためのフローチャートである。
【図１７】認証チェックプログラムのオブジェクト図である。
【図１８】認証処理の際の認証チェックプログラム内の動作を説明するためのシーケンス図である。
【図１９】システムＢＩＯＳに公開鍵を持たせた場合の画像形成装置のソフトウェア構成例を示す図である。
【図２０】システムＢＩＯＳに公開鍵を持たせた場合の画像形成装置の起動処理を説明するためのシーケンス図である。
【図２１】システムＢＩＯＳに公開鍵を持たせた場合の公開鍵の流れを説明するための図である。
【図２２】融合機の一例の構成図を示す。
【図２３】融合機の一例のハードウェア構成図を示す。
【符号の説明】
【０１３５】
１０          画像形成装置
１１          システムＢＩＯＳ
１２          ブートローダ
１３          カーネル
１４          処理プロセス
１５ａ、１５ｂ、１５ｃ    アプリケーション
１０１        ＣＰＵ
１０２        メモリ
１０３        チップセット
１０４        ＢＩＯＳフラッシュロム
１０５        ＡＳＩＣ
１０６        起動用ＳＤスロット
１０７        ユーザアプリケーション用ＳＤスロット
１２１        公開鍵
１２２        ブートローダ電子署名ファイル
１３１        カーネル電子署名ファイル
１４１        起動プロセス電子署名ファイル
１５１ａ、１５１ｂ、１５１ｃ    アプリケーション電子署名ファイル
１６０        対象ファイル
１６０ａ      ｅｌｆファイル
１６１ａ      ｅｌｆ実行形式ファイルヘッダ
１６２ａ      テキスト領域
１６３ａ      データ領域
１６４ａ      ＢＳＳ領域
１６５ａ      シンボル領域
１６６ａ      電子署名
１６０ｂ      ｇｚｉｐ圧縮ファイル
１６１ｂ      ｇｚｉｐファイルヘッダ
１６２ｂ      圧縮データ
１６３ｂ      解凍済みデータ
１６４ｂ      電子署名
１７０ａ      ｅｌｆ電子署名ファイル
１７１ａ、１７２ａ      ｅｌｆ電子署名
１７２ａ      ｅｌｆ電子署名
１７０ｂ      ｇｚｉｐ電子署名ファイル
１７１ｂ、１７２ｂ      ｇｚｉｐ電子署名
１８０        ＳＤＩＤ
１９０        認証チェックプログラム
１９５        認証チェックルーチン
５００        情報処理装置
５０１        システムＢＩＯＳ
５０２        ブートローダ
５０３        カーネル
５０４        起動プロセス
５０４ｂ      不正な起動プロセス
５０５ａ、５０５ｂ、５０５ｃ        アプリケーション
５０６        不正なアプリケーション
１０００        融合機
１０１１        プロッタ
１０１２        スキャナ
１０１３        ハードウェアリソース
１０２０        ソフトウェア群
１０３０        アプリケーション
１０３１        プリンタアプリ
１０３２        コピーアプリ
１０３３        ファックスアプリ
１０３４        スキャナアプリ
１０３５        ネットファイルアプリ
１０４０        プラットフォーム
１０４１        オペレーティングシステム（ＯＳ）
１０４２        システムコントロールサービス（ＳＣＳ）
１０４３        システムリソースマネージャ（ＳＲＭ）
１０４４        エンジンコントロールサービス（ＥＣＳ）
１０４５        メモリコントロールサービス（ＭＣＳ）
１０４６        オペレーションパネルコントロールサービス（ＯＣＳ）
１０４７        ファックスコントロールサービス（ＦＣＳ）
１０４８        ネットワークコントロールサービス（ＮＣＳ）
１０５０        融合機起動部
１０６０        コントローラ
１０６１        ＣＰＵ
１０６２        システムメモリ
１０６３        ノースブリッジ（ＮＢ）
１０６４        サウスブリッジ（ＳＢ）
１０６５        ＡＧＰ（Accelerated Graphics Port）
１０６６        ＡＳＩＣ
１０６７        ローカルメモリ
１０６８        ハードディスク装置（ＨＤＤ）
１０８０        オペレーションパネル
１０８１        ファックスコントロールユニット（ＦＣＵ）
１０８２        エンジン部
【図１】
2005148934.tif 000003
【図２】
2005148934.tif 000004
【図３】
2005148934.tif 000005
【図４】
2005148934.tif 000006
【図５】
2005148934.tif 000007
【図６】
2005148934.tif 000008
【図７】
2005148934.tif 000009
【図８】
2005148934.tif 000010
【図９】
2005148934.tif 000011
【図１０】
2005148934.tif 000012
【図１１】
2005148934.tif 000013
【図１２】
2005148934.tif 000014
【図１３】
2005148934.tif 000015
【図１４】
2005148934.tif 000016
【図１５】
2005148934.tif 000017
【図１６】
2005148934.tif 000018
【図１７】
2005148934.tif 000019
【図１８】
2005148934.tif 000020
【図１９】
2005148934.tif 000021
【図２０】
2005148934.tif 000022
【図２１】
2005148934.tif 000023
【図２２】
2005148934.tif 000024
【図２３】
2005148934.tif 000025