(57)【要約】      （修正有）【課題】プログラムの改ざん検知よりも起動速度を優先したい場合に、起動に要する時間を短縮できる情報処理装置、起動方法、及びプログラムを提供する。【解決手段】プログラムの起動ごとに改ざん検知処理を行う情報処理装置であって、改ざん検知処理を行うか否かを示す設定を、他のプログラムの改ざん検知処理を最初に行う第一のプログラムが参照可能な第一領域と、第一のプログラムが起動された時点では第一のプログラムが参照できない第二領域と、に書き込み可能な書き込み手段を備える。第一のプログラムは、第一領域に書き込まれている設定に応じて改ざん検知処理を行い、第二領域を参照可能な第二のプログラムは、第二領域に書き込まれている設定に応じて改ざん検知処理を行う。【選択図】図３
2020042632.tif 000002
【特許請求の範囲】
【請求項１】
プログラムの起動ごとに改ざん検知処理を行う情報処理装置であって、
改ざん検知処理を行うか否かを示す設定を、他のプログラムの改ざん検知処理を最初に行う第一のプログラムが参照可能な第一領域と、前記第一のプログラムが起動された時点では前記第一のプログラムが参照できない第二領域と、に書き込み可能な書き込み手段を備え、
前記第一のプログラムは、前記第一領域に書き込まれている前記設定に応じて前記改ざん検知処理を行い、
前記第二領域を参照可能な第二のプログラムは、前記第二領域に書き込まれている前記設定に応じて前記改ざん検知処理を行う、
ことを特徴とする情報処理装置。
【請求項２】
前記第一領域と前記第二領域とは、異なる記憶装置の記憶領域であることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第一領域は、前記第一のプログラムが格納されている記憶装置の領域であり、
前記第二領域は、前記第二のプログラムが格納されている記憶装置の領域であることを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記第一のプログラムは、ＢＩＯＳであり、
前記第二のプログラムは、前記第二領域を参照可能なドライバを有効にする処理を含むプログラムであることを特徴とする請求項１から３のいずれか一項に記載の情報処理装置。
【請求項５】
前記改ざん検知処理を行うか否かを示す設定をユーザーに選択させる選択手段をさらに備えることを特徴とする請求項１から４のいずれか一項に記載の情報処理装置。
【請求項６】
前記書き込み手段は、前記ユーザーによって選択された設定を、前記第一領域および前記第二領域の両方に書き込むことを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記書き込み手段および前記選択手段は、前記第二のプログラムによって起動される第三のプログラムによって機能することを特徴とする請求項５または６に記載の情報処理装置。
【請求項８】
前記第二のプログラムは、前記第一領域の設定と前記第二領域の設定とが一致していない場合、改ざん検知処理を行う設定となるように前記第一領域の設定と前記第二領域の設定とを一致させる処理をすることを特徴とする請求項１から７のいずれか一項に記載の情報処理装置。
【請求項９】
前記第一領域の設定が改ざん検知処理を行う設定であり、かつ前記第二領域の設定が改ざん検知処理を行わない設定である場合、
前記第二のプログラムは、前記第二領域の設定を、改ざん検知処理を行う設定に変更し、その後、前記第二領域に書き込まれている前記設定に応じて前記改ざん検知処理を行うことを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記第一領域の設定が改ざん検知処理を行わない設定であり、かつ前記第二領域の設定が改ざん検知処理を行う設定である場合、
前記第二のプログラムは、前記第一領域の設定を、改ざん検知処理を行う設定に変更し、その後、前記情報処理装置を再起動する処理を行うことを特徴とする請求項８に記載の情報処理装置。
【請求項１１】
プログラムの起動ごとに改ざん検知処理を行う情報処理装置の起動方法であって、
他のプログラムの改ざん検知処理を最初に行う第一のプログラムが起動されると、該第一のプログラムは、該第一のプログラムが参照可能な第一領域に書き込まれている、改ざん検知処理を行うか否かを示す設定に応じて前記改ざん検知処理を行い、
前記第一のプログラムが起動されている時点では前記第一のプログラムが参照できない第二領域を参照可能な第二のプログラムが起動されると、該第二のプログラムは、前記第二領域に書き込まれている前記設定に応じて前記改ざん検知処理を行う
ことを特徴とする、情報処理装置の起動方法。
【請求項１２】
改ざん検知処理を行うか否かを示す設定を、他のプログラムの改ざん検知処理を最初に行う第一のプログラムが参照可能な第一領域と、前記第一のプログラムが起動されている時点では前記第一のプログラムが参照できない第二領域と、に格納し、プログラムの起動ごとに改ざん検知処理を行う情報処理装置に用いられるプログラムであって、
前記情報処理装置に、
前記第二領域を参照可能なドライバを有効にするステップと、
前記第一領域の設定と前記第二領域の設定とが一致していない場合、改ざん検知処理を行う設定となるように前記第一領域の設定と前記第二領域の設定とを一致させる処理をするステップと
を実行させるためのプログラム。
【請求項１３】
改ざん検知処理を行うか否かを示す設定を、他のプログラムの改ざん検知を最初に行う第一のプログラムが参照可能な第一領域と、前記第一のプログラムが起動されている時点では前記第一のプログラムが参照できない第二領域と、に格納し、プログラムの起動ごとに改ざん検知処理を行う情報処理装置に用いられるプログラムであって、
前記情報処理装置に、
前記改ざん検知処理を行うか否かを示す設定をユーザーに選択させるステップと、
前記ユーザーによって選択された設定を、前記第一領域および前記第二領域の両方に書き込むステップと
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、改ざん検知を行うことが可能な情報処理の技術に関するものである。
【背景技術】
【０００２】
プログラムの脆弱性をついて、プログラムを改ざんし、コンピュータを悪用する攻撃が問題となっている。特許文献１には、プログラムの改ざん検知を行う技術が記載されている。具体的には、特許文献１には、耐タンパーモジュールを用いてプログラムのハッシュ値を計算して、保存しておき、起動するたびにプログラムのハッシュ値を再計算して検証を行うことで改ざん検知を行う技術が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】国際公開第２００９／０４４５３３号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１の技術では、改ざん検知処理が必ず実行されることになる。このため、例えば改ざん検知よりも起動速度を優先したいユーザーにとっては、起動処理に時間を要する事態が生じてしまう。
【課題を解決するための手段】
【０００５】
本発明の一態様に係る情報処理装置は、プログラムの起動ごとに改ざん検知処理を行う情報処理装置であって、改ざん検知処理を行うか否かを示す設定を、他のプログラムの改ざん検知処理を最初に行う第一のプログラムが参照可能な第一領域と、前記第一のプログラムが起動された時点では前記第一のプログラムが参照できない第二領域と、に書き込み可能な書き込み手段を備え、前記第一のプログラムは、前記第一領域に書き込まれている前記設定に応じて前記改ざん検知処理を行い、前記第二領域を参照可能な第二のプログラムは、前記第二領域に書き込まれている前記設定に応じて前記改ざん検知処理を行う、ことを特徴とする。
【発明の効果】
【０００６】
本発明によれば、改ざん検知よりも起動速度を優先したい場合に、起動に要する時間を短縮できる。
【図面の簡単な説明】
【０００７】
【図１】複合機のハードウェア構成図。
【図２】複合機のソフトウェア構成図。
【図３】起動時の動作を示す模式図。
【図４】設定画面を示す模式図。
【図５】設定変更時の処理を示すフローチャート。
【図６】改ざん検知処理を示すフローチャート。
【発明を実施するための形態】
【０００８】
以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。尚、以下の実施形態では、情報処理装置として複合機（ＭＦＰ）を例に挙げて説明する。しかしながら複合機に限定されるものではなく、任意のタイプの情報処理装置を用いることができる。
【０００９】
＜＜実施形態１＞＞
本実施形態の情報処理装置の構成の説明に先立って、改ざん検知処理の概要を説明する。情報処理装置を起動する際には、一般的に、複数のプログラムが順次起動されることになる。例えば、ブートプログラム、ＢＩＯＳ、ローダー、カーネル、アプリケーションの順に、段階的にプログラムが起動される。ブートプログラム、ＢＩＯＳ、ローダー、カーネル、およびアプリケーションは、それぞれが別個のプログラムである。他のプログラムによって起動される各プログラムには、署名が格納されている。各プログラムを起動するときに、署名検証が行われ、検証に成功した場合のみ、プログラムを起動することで、改ざん検知処理が行われる。
【００１０】
このように、改ざん検知処理が実行される場合には、通常の起動処理に加えて検証処理が行われることになる。このため、情報処理装置が起動完了するまでに要する時間が長くなる。そこで、改ざん検知処理の実行の有効（ＯＮ）または無効（ＯＦＦ）をアプリケーションによって設定して制御する構成が考えられる。改ざん検知処理を省略して、情報処理装置の起動を早めたいと考えるユーザーもいるからである。
【００１１】
ここで、アプリケーション（以下、アプリという）が一般的に利用する記憶領域（例えばＨＤＤの記憶領域）に、改ざん検知処理の有効・無効の設定情報を格納する形態を想定する。この場合、アプリが起動される段階よりも前の段階で起動されるプログラムは、その設定情報を参照することができない。例えば、ＢＩＯＳおよびローダーは、必要最低限のハードウェアが利用できる状態で起動処理が行われる。従って、アプリが一般的に利用する記憶領域（例えばＨＤＤの記憶領域）に改ざん検知処理の有効・無効の設定情報が格納されると、ＢＩＯＳおよびローダーは、その設定情報を参照することができない。この結果、セキュリティを担保するために、常にＢＩＯＳ、ローダー、およびカーネルの検証を行わざるを得ず、設定情報が無効（ＯＦＦ）に設定されていたとしても、起動は遅くなる。
【００１２】
一方で、ＢＩＯＳ等から利用できる記憶領域に改ざん検知の有効・無効の設定情報を格納する方法も考えられる。しかしながら、ＢＩＯＳ等から利用できる記憶領域に設定情報を格納すると、アプリで管理される通常の設定情報の管理とは別の管理が必要となる。例えば、バックアップおよびリストアに際して別個の手当てが必要となり、管理が煩雑になる。
【００１３】
以下で説明する実施形態では、改ざん検知処理が有効であるかまたは無効であるかを適切に設定して、改ざん検知処理を実行するかを切り替えることができる形態を説明する。また、改ざん検知処理の実行の有効・無効の設定情報を、異なる記憶領域に重複して格納することで、設定情報が無効に設定されている場合に、検証処理を行わずに起動を早めることができる形態を説明する。また、設定情報を、異なる記憶領域に重複して格納することで、管理を容易にする形態を説明する。
【００１４】
＜ハードウェア構成＞
図１は、複合機１００のハードウェア構成を説明するブロック図である。複合機１００は、ＣＰＵ１０１、ＲＯＭ１０２、ＲＡＭ１０３、ＨＤＤ１０４、ネットワークＩ／Ｆ制御部１０５、スキャナＩ／Ｆ制御部１０６、プリンタＩ／Ｆ制御部１０７、パネル制御部１０８、を備えている。また、操作パネル１１０、スキャナ１１１、プリンタ１１２、およびフラッシュメモリ１１４を備えている。
【００１５】
ＣＰＵ１０１は、各種のソフトウェアプログラムを実行し、装置全体の制御を行う。ＲＯＭ１０２は、リードオンリーメモリである。ＲＯＭ１０２には、複合機１００の電源が投入されると、ＣＰＵ１０１によって最初に直接読み込まれて、実行されるプログラムであるブートプログラムが格納されている。
【００１６】
ＲＡＭ１０３は、ランダムアクセスメモリである。ＲＡＭ１０３は、ＣＰＵ１０１が複合機１００を制御する際に、プログラムや一時的なデータの格納などに使用される。特に断りがない限り、本明細書では、各プログラムがＲＡＭ１０３に読み込まれ、ＣＰＵ１０１によって実行されることを、プログラムを「起動する」と呼ぶ。
【００１７】
フラッシュメモリ１１４は、不揮発性のメモリである。フラッシュメモリ１１４には、ブートプログラムによって起動されるプログラムであるＢＩＯＳと、ＢＩＯＳによって参照される設定情報であるＢＩＯＳ設定とが格納されている。ＨＤＤ１０４には、プログラムであるローダー、カーネル、およびアプリケーション（アプリ）が記憶されている。
【００１８】
ネットワークＩ／Ｆ制御部１０５は、外部機器とのネットワーク１１３を介するデータの送受信を制御する。スキャナＩ／Ｆ制御部１０６は、スキャナ１１１による原稿の読み取りを制御する。プリンタＩ／Ｆ制御部１０７は、プリンタ１１２による印刷処理などを制御する。パネル制御部１０８は、タッチパネル式の操作パネル１１０を制御し、各種情報の表示や使用者からの指示入力を制御する。
【００１９】
バス１０９は、ＣＰＵ１０１、ＲＯＭ１０２、ＲＡＭ１０３、ＨＤＤ１０４、ネットワークＩ／Ｆ制御部１０５、スキャナＩ／Ｆ制御部１０６、プリンタＩ／Ｆ制御部１０７、パネル制御部１０８、およびフラッシュメモリ１１４を相互に接続する。バス１０９を介して、ＣＰＵ１０１からの制御信号や各装置間のデータ信号が送受信される。
【００２０】
＜ソフトウェアモジュール＞
図２は、複合機１００が有するソフトウェアモジュールを説明するブロック図である。また、各ソフトウェアモジュールが格納されるハードウェアも併せて記載している。複合機１００は、ブートプログラム２０９、ＢＩＯＳ２１０、ローダー２１１、カーネル２１２、アプリ２１３、および通信管理部２０８を備えている。ブートプログラム２０９は、ＲＯＭ１０２に格納されている。ＢＩＯＳ２１０は、フラッシュメモリ１１４に格納されている。ローダー２１１、カーネル２１２、アプリ２１３、および通信管理部２０８は、ＨＤＤ１０４に格納されている。
【００２１】
ブートプログラム２０９は、ＢＩＯＳ改ざん検知処理部２０１を有する。ＢＩＯＳ２１０は、ＢＩＯＳ設定部２０２とローダー改ざん検知処理部２０３とを有する。ローダー２１１は、カーネル改ざん検知処理部２０４を有する。カーネル２１２は、アプリ改ざん検知処理部２０５を有する。アプリ２１３は、ＵＩ制御部２０６を有する。各プログラムが起動されると、ＣＰＵ１０１が、各プログラムに格納されている各検知処理部として機能する。
【００２２】
通信管理部２０８は、ネットワーク１１３に接続されるネットワークＩ／Ｆ制御部１０５を制御して外部とデータの送受信を行う。ＵＩ制御部２０６は、パネル制御部１０８を介して操作パネル１１０への入力を受け取り、入力に応じた処理や操作パネル１１０への画面出力を行う。
【００２３】
ブートプログラム２０９は、複合機１００の電源が投入されるとＣＰＵ１０１によって実行されるプログラムである。ブートプログラム２０９に従って、ＣＰＵ１０１は、起動に関わる処理を行う。また、ブートプログラム２０９は、ＢＩＯＳ２１０の改ざん検知処理を行うＢＩＯＳ改ざん検知処理部２０１を有する。
【００２４】
ＢＩＯＳ２１０は、ブートプログラム２０９によって起動されるプログラムである。ＢＩＯＳ２１０は、ハードウェアの初期化等の起動に関わる処理を行うプログラムである。ＢＩＯＳ２１０は、この起動処理に関わる設定を行うＢＩＯＳ設定部２０２と、ローダー２１１の改ざん検知処理を行うローダー改ざん検知処理部２０３とを有する。なお、ＢＩＯＳ２１０が起動している時点ではカーネル２１２が起動していないので、ＨＤＤ１０４にアクセスするためのドライバ（後述する）が存在していない。このため、ＢＩＯＳ２１０は、ＨＤＤ１０４の領域のうち、ローダー２１１が格納されている所定の領域にしかアクセスできない。
【００２５】
ローダー２１１は、ＢＩＯＳ２１０によって起動されるプログラムである。ローダー２１１は、カーネル２１２を選択して起動する処理を行うプログラムである。ローダー２１１は、カーネル２１２の改ざん検知処理を行うカーネル改ざん検知処理部２０４を有する。
【００２６】
カーネル２１２は、ローダー２１１によって起動されるプログラムである。カーネル２１２は、各種ドライバを読み込み、アプリ２１３の動作を補助する。ドライバは、アプリ２１３が、ハードウェアであるＣＰＵ１０１、ＲＡＭ１０３、またはＨＤＤ１０４にアクセスし、利用することを可能にする機能を持つ。さらにカーネル２１２は、アプリ２１３の改ざん検知処理を行うアプリ改ざん検知処理部２０５を有する。
【００２７】
アプリ２１３は、カーネル２１２によって起動されるプログラムである。たとえば、アプリ２１３の例として、パネル制御部１０８および操作パネル１１０を制御して、ユーザーによる複合機１００の操作を受け入れるＵＩ制御部２０６がある。なお、アプリ２１３は、この例に限られるものではない。例えば、ネットワーク１１３からネットワークＩ／Ｆ制御部１０５が受信した印刷データを、プリンタＩ／Ｆ制御部１０７およびプリンタ１１２を利用して印刷する印刷機能を有するアプリも含まれる。その他、複合機が備えている機能を実行するアプリが複数存在し得るが、ここでの説明は省略する。
【００２８】
＜起動動作の流れ＞
図３は、複合機１００の起動時における各プログラムの動作処理を説明する模式図である。図３（ａ）は、比較例を示す図であり、改ざん検知処理の実行の有効・無効を切り替える設定値（設定情報）が、ＨＤＤ１０４に格納されているケースの図である。まず図３（ａ）を用いて、ブートプログラム２０９、ＢＩＯＳ２１０、ローダー２１１、カーネル２１２、アプリ２１３の順に各プログラムを起動する処理を説明する。また、各プログラムが、次段で起動されるプログラムに対して改ざん検知処理を行いながら段階的にプログラムを起動する処理の流れを説明する。なお、図３（ａ）では、各プログラム、デジタル署名（以下「署名」と呼ぶ）、公開鍵、および設定値が格納（記憶）されたハードウェアも併せて示されている。
【００２９】
ブートプログラム２０９には、ＢＩＯＳ検証用公開鍵３００が含まれている。ＢＩＯＳ２１０には、ＢＩＯＳ署名３０２とローダー検証用公開鍵３０３とが含まれている。フラッシュメモリ１１４内において、ＢＩＯＳ２１０とは別の領域に、ＢＩＯＳ２１０の動作設定を示す情報であるＢＩＯＳ設定３１０が格納されている。ＢＩＯＳ設定の例としては、複数の記憶装置が接続されている場合、どの記憶装置から優先して読み込み起動処理を行うかの設定などがある。本実施形態では、ＨＤＤ１０４が優先されて読み込まれて起動する設定がされているものとして説明する。
【００３０】
ローダー２１１には、ローダー署名３０４とカーネル検証用公開鍵３０５とが含まれている。カーネル２１２には、カーネル署名３０６とアプリ検証用公開鍵３０７とが含まれている。アプリ２１３には、アプリ署名３０８が含まれている。またＨＤＤ１０４内において、アプリ２１３から利用される設定値３０９が保存されているものとする。なお、各プログラムにおける公開鍵および署名は、あらかじめ複合機１００の出荷前に各プログラムに対して付与されているものとする。
【００３１】
図２および図３（ａ）に示しているように、ＢＩＯＳ改ざん検知処理部２０１、ローダー改ざん検知処理部２０３、カーネル改ざん検知処理部２０４、およびアプリ改ざん検知処理部２０５の各検知部が、次に起動するプログラムの署名を検証する。検証の結果、問題がなければ、次のプログラムを起動する。このような処理を行うことで、段階的に改ざん検知処理を行いながら複合機１００の起動が行われる。このように改ざん検知処理を行いながら起動を行う複合機１００では、改ざん検知処理を行わない複合機に比べて処理が増えるので、起動が遅くなる。
【００３２】
複合機１００のユーザーのなかには、改ざん検知処理で得られるセキュリティの向上よりも起動時間が高速な方が良いというユーザーもいる。このため、ユーザーによる設定によって、改ざん検知機能の有効および無効が切り替えられることが望ましい。
【００３３】
図４は、ＵＩ制御部２０６によって操作パネル１１０に表示される複合機１００の設定画面４０１の模式図である。ボタン４０２およびボタン４０３は、留め置き印刷機能を有効にするか無効にするかを選択するボタンである。留め置き印刷機能とは、複合機の備える印刷機能において、ネットワークＩ/Ｆ制御部１０５に受信した印刷データを直ちにプリンタ１１２から印刷するのではなく、ＵＩ制御部２０６から印刷を指示した場合のみ印刷する機能である。
【００３４】
ボタン４０４およびボタン４０５は、複合機１００の改ざん検知機能を有効にするか無効にするかを選択するボタンである。ボタン４０６が選択されると、設定画面４０１の設定内容がＨＤＤ１０４に記憶される。ボタン４０７が選択されると、設定画面４０１で選択された内容はキャンセルされる。
【００３５】
設定画面４０１を通じて選択された内容は、図３（ａ）に示す設定値３０９として、ＨＤＤ１０４に格納される。設定値３０９は、アプリ２１３の各機能で利用される。設定値３０９がアプリ２１３と同じ記憶装置（ＨＤＤ１０４）に格納されている方が、アプリ２１３は、設定値３０９の管理が容易である。例えば、アプリ２１３は、同一のアクセスインターフェースで設定値３０９を操作することができるからである。また、バックアップおよびリストア処理をする際にも管理が容易となる。従って、設定値３０９は、アプリ２１３と同じＨＤＤ１０４に格納されている。
【００３６】
ＵＩ制御部２０６は、設定画面４０１を表示する際には、ＨＤＤ１０４の設定値３０９を読み取って現在の設定内容を表示する。図４の例では、ボタン４０２およびボタン４０４が選択された状態で設定画面４０１が表示されている例を示している。即ち、ボタン４０２およびボタン４０４の選択内容が、設定値３０９によって設定されている現在の設定内容であることを示している。なお、図４では、留め置きプリントの利用に関する設定値と改ざん検知の利用に関する設定値とを同じ設定画面４０１から設定する形態を説明したが、夫々を別の画面から設定する形態であってもよい。また、他の設定値を同一画面で設定する構成でもよい。
【００３７】
このように、改ざん検知処理の利用に関する設定情報（設定値３０９）をＨＤＤ１０４に格納し、ユーザーによって設定情報が変更されることが可能であれば、改ざん検知処理の実行の有効・無効をユーザーが切り替えることは、可能である。しかしながら、ＢＩＯＳ２１０およびローダー２１１が起動している時点では、ＨＤＤ１０４の設定値３０９にアクセスするためのドライバが読み込まれていない。ＨＤＤ１０４にアクセスするためのドライバは、カーネル２１２の起動によって読み込まれることになる。従って、ＢＩＯＳ２１０およびローダー２１１では、設定値３０９を取得することができない。このため、改ざん検知処理の有効・無効を切り替えることができない。設定値３０９を参照して改ざん検知処理の有効・無効を切り替えることができるのは、図３（ａ）では、ドライバを有効化するカーネル２１２からとなる。
【００３８】
つまり、図３（ａ）のように、改ざん検知機能を有する複合機１００で改ざん検知機能を無効にしたとしても、改ざん検知機能のない複合機と概ね同等の起動時間を達成することはできない。なお、仮にフラッシュメモリ１１４に改ざん検知処理の設定を格納すると、前述したように、アプリ２１３が、他の設定値と同一のアクセスインターフェースで操作ができず、バックアップやリストアの際にも特別な処理を行う必要がある。このため、設定値の管理が煩雑となる。
【００３９】
図３（ｂ）は、本実施形態において、複合機１００の起動時における各プログラムの動作処理を説明する模式図である。図３（ｂ）では、フラッシュメモリ１１４内において、ＢＩＯＳ２１０およびＢＩＯＳ設定３１０とは別の領域に、改ざん検知設定３１１（設定情報）を格納している。改ざん検知設定３１１は、改ざん検知処理の有効・無効を示す設定情報であり、設定値３０９と同期がとられる。改ざん検知設定３１１の内容に応じて、ＢＩＯＳ２１０およびローダー２１１による改ざん検知処理（図３（ａ）における（３）検証および（５）検証）の実行の有無が切り替えられる。図３（ｂ）のその他については、図３（ａ）で説明した内容と同一である。本実施形態では、複数の記憶領域に改ざん検知処理の実行の有無を示す設定を同期して格納することで、管理が煩雑とならずに改ざん検知処理の実行の有無を切り替えることができる。また、改ざん検知機能を無効にした場合、改ざん検知処理を行う場合に比べて起動時間を早めることができる。
【００４０】
＜改ざん検知の設定変更のフローチャート＞
図５は、ＵＩ制御部２０６によって設定変更が行われるときの処理を説明するフローチャートである。図５のフローチャートで示される一連の処理は、複合機１００のＣＰＵ１０１が、ＨＤＤ１０４に記憶されているアプリ２１３のプログラムコードをＲＡＭに展開し実行することにより行われる。なお、各処理の説明における記号「Ｓ」は、当該フローチャートにおけるステップであることを意味する。
【００４１】
ＵＩ制御部２０６は、操作パネル１１０から設定変更指示を受け取ると、Ｓ５０１にて変更指示を受けた設定が、改ざん検知の設定か否かを判定する。改ざん検知の設定ではない場合、処理はＳ５０３に進む。続いてＳ５０３においてＵＩ制御部２０６は、ＨＤＤ１０４の設定値３０９に変更内容を格納して処理を終了する。
【００４２】
一方、Ｓ５０１にて改ざん検知の設定であると判定した場合、ＵＩ制御部２０６は、Ｓ５０２に処理を進める。Ｓ５０２にてＵＩ制御部２０６は、フラッシュメモリ１１４に、改ざん検知設定の変更内容を改ざん検知設定３１１として格納する。その後、Ｓ５０３に進み、ＵＩ制御部２０６は、同様に、改ざん検知設定の変更内容をＨＤＤ１０４の設定値３０９に含めて格納して処理を終了する。即ち、改ざん検知設定の変更内容は、フラッシュメモリ１１４とＨＤＤ１０４との両方に書き込まれて格納される。
【００４３】
なお、ＵＩ制御部２０６は、改ざん検知に関する設定を操作パネル１１０に表示する際は、ＨＤＤ１０４の設定値３０９の改ざん検知設定を読み取って表示する。つまり、アプリ２１３であるＵＩ制御部２０６は、改ざん検知の設定変更があった場合には、フラッシュメモリ１１４の記憶領域に改ざん検知設定３１１として設定変更の内容を格納する処理を追加的に行う。それ以外の改ざん検知設定に関する処理については、アプリ２１３であるＵＩ制御部２０６は、比較例と同様の処理をすることになる。即ち、ＨＤＤ１０４の記憶領域に設定値３０９に含めて改ざん検知設定を格納したり、ＨＤＤ１０４の設定値３０９を参照した表示処理が行われたりする。従って、アプリ２１３は、改ざん検知に関する設定を、他の設定値と同一のアクセスインターフェースで操作することができる。また、バックアップやリストアの際にも特別な処理を行わなくて済む。
【００４４】
＜改ざん検知のフローチャート＞
図６は、改ざん検知設定３１１および設定値３０９の内容を参照しながら行われる処理を説明するフローチャートである。図６のフローチャートで示される一連の処理は、複合機１００のＣＰＵ１０１が、フラッシュメモリ１１４およびＨＤＤ１０４に記憶されているプログラムコードをＲＡＭに展開し、実行することにより行われる。即ち、ＣＰＵ１０１が、ＢＩＯＳ２１０、ローダー２１１、カーネル２１２、およびアプリ２１３の各プログラムコードを実行することにより行われる。また、図６に示す一部の処理は、ＣＰＵ１０１が、ＲＯＭ１０２に記憶されているブートプログラム２０９のプログラムコードを実行することにより行われる。
【００４５】
複合機１００の電源が投入されると、ＣＰＵ１０１は、ＲＯＭ１０２から直接ブートプログラム２０９を読み取り、ブートプログラム２０９を実行する。ブートプログラム２０９が実行されると、Ｓ６０１において、ＢＩＯＳ改ざん検知処理部２０１は、ＢＩＯＳ２１０、ローダー検証用公開鍵３０３、およびＢＩＯＳ署名３０２をフラッシュメモリ１１４からＣＰＵ１０１に読み込む。そして、ＢＩＯＳ改ざん検知処理部２０１は、ＢＩＯＳ検証用公開鍵３００を用いてＢＩＯＳ署名３０２の検証を行い、検証に成功したかを判定する。
【００４６】
署名の検証に失敗した場合、Ｓ６１３に処理が進む。そしてＳ６１３においてＢＩＯＳ改ざん検知処理部２０１は、操作パネル１１０にエラーメッセージを表示して処理を終了する。一方、署名の検証に成功した場合、ＢＩＯＳ改ざん検知処理部２０１は、改ざん検知処理を終了し、Ｓ６０２に処理が進む。続いて、Ｓ６０２においてブートプログラム２０９は、ＢＩＯＳ２１０を起動する。
【００４７】
ＢＩＯＳ２１０が起動されると、ＢＩＯＳ２１０は、ＢＩＯＳ設定３１０に従ってハードウェアの初期化などの起動処理を行う。次にＳ６０３において、ＢＩＯＳ２１０に含まれるローダー改ざん検知処理部２０３は、フラッシュメモリ１１４の改ざん検知設定３１１を取得し、改ざん検知設定３１１が有効を示す設定であるかを判定する。
【００４８】
改ざん検知設定３１１が無効を示す設定であると判定した場合、ローダー改ざん検知処理部２０３は、処理を終了し、Ｓ６０５に処理が進む。Ｓ６０５においてＢＩＯＳ２１０は、ローダー２１１の検証は行わずに、「改ざん検知処理なし」でローダー２１１を起動する。即ち、ＢＩＯＳ２１０は、ローダー２１１をＨＤＤ１０４からＲＡＭ１０３に読み込み、起動する。ローダー２１１は、「改ざん検知処理なし」で起動されると、改ざん検知処理を行わずにカーネル２１２を起動するように構成されている。Ｓ６０５の後、Ｓ６０８に処理が進む。Ｓ６０８においてローダー２１１は、改ざん検知処理は行わずにカーネル２１２を起動する。即ち、ローダー２１１は、カーネル２１２、をＨＤＤ１０４からＲＡＭ１０３に読み込み、起動する。
【００４９】
一方、Ｓ６０３にて改ざん検知設定３１１が有効を示す設定であると判定された場合、Ｓ６０４に処理が進む。Ｓ６０４においてＢＩＯＳ２１０に含まれるローダー改ざん検知処理部２０３は、ローダー２１１、カーネル検証用公開鍵３０５、およびローダー署名３０４をＨＤＤ１０４からＲＡＭ１０３に読み込む。そして、ローダー改ざん検知処理部２０３は、ローダー検証用公開鍵３０３を用いてローダー署名３０４の検証を行い、成功したかを判定する。
【００５０】
Ｓ６０４にてローダー署名３０４の検証に失敗した場合、Ｓ６１３に処理が進む。Ｓ６１３においてローダー改ざん検知処理部２０３は、操作パネル１１０にエラーメッセージを表示し処理を終了する。
【００５１】
一方、Ｓ６０４にてローダー署名３０４の検証に成功した場合、Ｓ６０６に処理が進む。Ｓ６０６においてローダー改ざん検知処理部２０３の処理は終了し、ＢＩＯＳ２１０は、「改ざん検知処理あり」でローダー２１１を起動する。ローダー２１１は、「改ざん検知処理あり」で起動されると、改ざん検知処理を行ってカーネル２１２を起動するように構成されている。このため、「改ざん検知処理あり」で起動されると、Ｓ６０６においてローダー２１１に含まれるカーネル改ざん検知処理部２０４は、カーネル２１２、アプリ検証用公開鍵３０７、およびカーネル署名３０６をＨＤＤ１０４からＲＡＭ１０３に読み込む。Ｓ６０７においてカーネル改ざん検知処理部２０４は、カーネル検証用公開鍵３０５を用いて、カーネル署名３０６の検証を行い成功したかを判定する。
【００５２】
Ｓ６０７にてカーネル署名３０６の検証に失敗した場合、Ｓ６１３に処理が進む。Ｓ６１３においてカーネル改ざん検知処理部２０４は、操作パネル１１０にエラーメッセージを表示し処理を終了する。
【００５３】
一方、Ｓ６０７にてカーネル署名３０６の検証に成功した場合、Ｓ６０８に処理が進む。Ｓ６０８においてカーネル改ざん検知処理部２０４の処理は終了し、ローダー２１１は、カーネル２１２を起動する。
【００５４】
このように、Ｓ６０８でカーネルが起動されるケースとして、２通りのケースがある。２通りのケースは、改ざん検知設定３１１に基づいて切り替えられる。即ち、改ざん検知設定３１１が無効を示す設定の場合には、ローダー２１１およびカーネル２１２は、改ざん検知処理が行われずに起動される。改ざん検知設定３１１が有効を示す設定の場合には、ローダー２１１およびカーネル２１２は、改ざん検知処理が行われて起動される。本実施形態では、改ざん検知設定３１１が、ＢＩＯＳ２１０が参照可能な記憶領域に記憶されている。このため、ＢＩＯＳ２１０とローダー２１１は、ＨＤＤ１０４に格納されている設定値３０９を参照せずに、改ざん検知を実行するかを切り替えることができる。
【００５５】
引き続き、図６の処理を説明する。カーネル２１２が起動されると、カーネル２１２は、各種ドライバの読み込みなどの初期化処理を行う。各種ドライバの読み込みが行われることで、ＨＤＤ１０４の設定値３０９が参照可能になる。Ｓ６０９において、カーネル２１２に含まれるアプリ改ざん検知処理部２０５が起動する。そして、アプリ改ざん検知処理部２０５は、ＨＤＤ１０４の設定値３０９から改ざん検知の設定を取得し、かつ、フラッシュメモリ１１４から改ざん検知設定３１１を取得する。そして、アプリ改ざん検知処理部２０５は、ＨＤＤ１０４およびフラッシュメモリ１１４からそれぞれ取得した改ざん検知の設定を比較する。図５で説明したように、フラッシュメモリ１１４の改ざん検知設定３１１と、ＨＤＤ１０４の設定値とは、同期が取られている。従って、基本的には、フラッシュメモリ１１４の改ざん検知設定３１１と、ＨＤＤ１０４の設定値とは同じ設定を示す値になっている。しかしながら、デバイス（ＨＤＤ１０４およびフラッシュメモリ１１４）が故障等によって交換された場合には、同期が取れていない場合がある。Ｓ６０９の比較処理は、このような同期が取れていない場合が起こり得ることを考慮した処理である。詳細は後述する。
【００５６】
Ｓ６０９にて、ＨＤＤ１０４およびフラッシュメモリ１１４からそれぞれ取得した改ざん検知の設定が一致していると判定された場合、Ｓ６１０に処理が進む。Ｓ６１０においてアプリ改ざん検知処理部２０５は、改ざん検知の設定が有効を示す設定であるか判定する。
【００５７】
Ｓ６１０にて改ざん検知の設定が無効を示す設定であると判定された場合、Ｓ６１２に処理が進む。Ｓ６１２においてアプリ改ざん検知処理部２０５の処理は終了し、カーネル２１２は、アプリ２１３を起動する。即ち、カーネル２１２は、改ざん検知処理を行わずに、ＨＤＤ１０４からアプリ２１３をＲＡＭ１０３に読み込み、起動する。そして、一例の処理が終了する。
【００５８】
一方、Ｓ６１０にて改ざん検知の設定が有効を示す設定であると判定された場合、Ｓ６１１に処理が進む。Ｓ６１１においてアプリ改ざん検知処理部２０５は、ＨＤＤ１０４からアプリ２１３およびアプリ署名３０８をＲＡＭ１０３に読み込む。次にアプリ改ざん検知処理部２０５は、アプリ検証用公開鍵３０７を用いて、アプリ署名３０８の検証を行い、成功したかを判定する。
【００５９】
Ｓ６１０にてアプリ署名３０８の検証に失敗した場合、Ｓ６１３に処理が進む。Ｓ６１３においてアプリ改ざん検知処理部２０５は、操作パネル１１０にエラーメッセージを表示し処理を終了する。
【００６０】
一方、Ｓ６１０にてアプリ署名３０８の検証に成功した場合、Ｓ６１２に処理が進む。Ｓ６１２においてカーネル２１２は、前述したように、アプリ２１３を起動する。そして、一例の処理が終了する。
【００６１】
次に、Ｓ６０９にて、ＨＤＤ１０４およびフラッシュメモリ１１４から取得した改ざん検知の設定が一致していないと判定された場合の処理を説明する。Ｓ６０９で設定が一致していないと判定された場合、Ｓ６１４に処理が進む。Ｓ６１４においてアプリ改ざん検知処理部２０５は、フラッシュメモリ１１４の改ざん検知設定３１１が有効を示す設定であり、かつＨＤＤ１０４の設定値３０９が無効を示す設定であるかを判定する。
【００６２】
フラッシュメモリ１１４の改ざん検知設定３１１が有効を示す設定であり、かつＨＤＤ１０４の設定値３０９が無効を示す設定である場合、Ｓ６１５に処理が進む。Ｓ６１５においてアプリ改ざん検知処理部２０５は、ＨＤＤ１０４の設定値３０９の改ざん検知設定３１１を、有効を示す設定に更新する。そして、Ｓ６１１に処理が進む。Ｓ６１１では、前述のように、アプリ改ざん検知処理部２０５がアプリ署名３０８の検証を行う処理が行われる。
【００６３】
このＳ６１４からＳ６１５に続く処理は、フラッシュメモリ１１４の改ざん検知設定３１１とＨＤＤ１０４の設定値３０９が、いずれも有効を示す設定で同期が行われている状態において、ＨＤＤ１０４が故障等によって交換された場合の処理に相当する。即ち、ＨＤＤ１０４が交換されたことで、設定値３０９が、改ざん検知設定が無効であることを示す設定になってしまったときに必要な処理である。この処理が行われない場合には、改ざん検知処理は、ＢＩＯＳ２１０からカーネル２１２までしか行われない。つまり、アプリ２１３の検証が行われない。このため、ＨＤＤ１０４の交換前と異なる設定で動作してしまい、セキュリティが低下する。さらに、操作パネル１１０で改ざん検知設定を参照した場合に、設定値３０９が、改ざん検知が無効であることを示す設定になっているにも関わらず、実際には一部の改ざん検知処理が行われることになる。即ち、ＢＩＯＳ２１０からカーネル２１２までの改ざん検知処理が行われることになる。このため、操作パネル１１０で参照される改ざん検知の設定と、実動作とで不整合が生じてしまい、ユーザーに正しい複合機１００の動作情報が伝わらなくなる。Ｓ６１４からＳ６１５に続く処理を行うことで、このような事態が生じてしまうことを防止できる。
【００６４】
一方、Ｓ６１４にて、フラッシュメモリ１１４の改ざん検知設定３１１が無効を示す設定であり、かつＨＤＤ１０４の設定値３０９が有効を示す設定である場合、Ｓ６１６に処理が進む。Ｓ６１６においてアプリ改ざん検知処理部２０５は、フラッシュメモリ１１４の改ざん検知設定３１１を、有効を示す設定に更新する。そして、Ｓ６１７に処理が進む。Ｓ６１７においてアプリ改ざん検知処理部２０５は、複合機１００の再起動を行う。そして、一例の処理が終了する。
【００６５】
このＳ６１４、Ｓ６１６、Ｓ６１７と続く処理は、フラッシュメモリ１１４が故障等によって交換され、改ざん検知設定３１１が無効を示す設定になってしまったときに必要な処理である。この処理が行われない場合、操作パネル１１０で改ざん検知設定を参照した場合に、改ざん検知設定が有効であると表示されるにも関わらず、アプリ２１３以外の改ざん検知処理が行われておらずセキュリティが低下する。また、操作パネル１１０で参照される改ざん検知の設定と、実動作とで不整合が生じてしまい、ユーザーに正しい複合機１００の動作情報が伝わらなくなる。Ｓ６１４、Ｓ６１６、Ｓ６１７と続く処理を行うことで、改ざん検知設定３１１が有効を示す設定である状態で再起動が行われる。なお、Ｓ６１６に処理が進んでいる場合とは、フラッシュメモリ１１４の改ざん検知設定３１１が無効であることを示す設定で処理が行われている状態である。このため、改ざん検知処理なしでローダー２１１およびカーネル２１２が起動されている状態である。Ｓ６１６およびＳ６１７により、フラッシュメモリ１１４の改ざん検知設定３１１が有効を示す設定である状態に変更され、その後、改めて図６のフローチャートの処理が行われることになる。従って、ローダー２１１およびカーネル２１２が改ざん検知処理ありで起動されることになる。
【００６６】
以上説明したように、本実施形態においては、改ざん検知処理に関する設定を、ＢＩＯＳ２１０が起動時に参照可能な第一領域と、ＢＩＯＳ２１０が起動時に参照不可能な第二領域に格納する。第一領域および第二領域は、アプリ２１３から参照可能な領域である。また、この第一領域の設定と第二領域の設定とは、アプリ２１３によって同期された状態になっている。このようにして、改ざん検知に関する設定を格納しておくことにより、改ざん検知処理を実行するかを切り替えることができる。また、改ざん検知機能を持つ情報処理装置において、改ざん検知機能を無効にすることで、起動時間を早めることができる。
【００６７】
また、アプリ２１３は、改ざん検知処理の設定を同期して格納する場合を除いて、改ざん検知の設定を他の設定値と同じように扱うことができるので、管理が容易になる。また、本実施形態では、改ざん検知処理の設定を、ＨＤＤ１０４とフラッシュメモリ１１４との２か所に格納し、かつ同期しながら処理が行われることになる。このため、攻撃者が不正に設定を書き換えて改ざん検知設定をＯＦＦにしようとする場合、二箇所同時に書き換える必要が出てくるので、攻撃難易度が上がる効果も得られる。
【００６８】
＜＜その他の実施形態＞＞
以上説明した実施形態では、改ざん検知の方法として公開鍵と署名を使う方式を例に挙げて説明したが、他の方式を用いてもよい。また記憶装置として、ＨＤＤ１０４とフラッシュメモリ１１４とが存在するものとして説明したが、他の記憶装置であってもよい。情報処理装置の起動時に動作する起動プログラムが参照可能な記憶装置、および、起動プログラムが参照不可能な記憶装置となり得る複数の記憶装置が存在する形態であれば、いずれの記憶装置でもよい。
【００６９】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００７０】
２０１  ＢＩＯＳ改ざん検知処理部 
２０３  ローダー改ざん検知処理部
２０４  カーネル改ざん検知処理部
２０５  アプリ改ざん検知処理部
３０９  設定値
３１１  改ざん検知設定
【図１】
2020042632.tif 000003
【図２】
2020042632.tif 000004
【図３】
2020042632.tif 000005
【図４】
2020042632.tif 000006
【図５】
2020042632.tif 000007
【図６】
2020042632.tif 000008