(57)【要約】【課題】ＴＰＭを有していない構成においても、起動時にシステムの改ざんを検知する仕組みを提供する。【解決手段】本情報処理装置は、ブートプログラムの起動に続いて複数のモジュールを順次起動するものである。各モジュールは、次に起動するモジュールの署名を検証する検証情報を用いて、次に起動するモジュールの改ざんを検知し、署名の検証が成功すると、次に起動するモジュールを起動する。さらに、各モジュールは、検証情報と自身の署名とを予め保持している。【選択図】  図２
2019075000.tif 000002
【特許請求の範囲】
【請求項１】
ブートプログラムの起動に続いて複数のモジュールを順次起動する情報処理装置であって、
各モジュールは、
次に起動するモジュールの署名を検証する検証情報を用いて、該次に起動するモジュールの改ざんを検知する検知手段と、
前記検知手段による署名の検証が成功すると、前記次に起動するモジュールを起動する起動手段と
を備え、
各モジュールは、前記検証情報と自身の署名とを予め保持していることを特徴とする情報処理装置。
【請求項２】
前記ブートプログラムは、
前記検知手段及び前記起動手段を備え、
前記検証情報を予め保持していることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記起動手段は、前記検知手段による署名の検証が失敗すると、前記情報処理装置の起動を停止することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記複数のモジュールには、ＢＩＯＳ（Ｂａｓｉｃ Ｉｎｐｕｔ/Ｏｕｔｐｕｔ Ｓｙｓｔｅｍ）、ローダー、カーネル、第１プログラム、及び第２プログラムが含まれ、
前記ブートプログラム及びＢＩＯＳはＲＯＭ（Ｒｅａｄ-Ｏｎｌｙ Ｍｅｍｏｒｙ）に保存され、前記ローダー、前記カーネル、及び前記第１プログラムはフラッシュメモリに保存され、前記第２プログラムはＨＤＤ（Ｈａｒｄ Ｄｉｓｋ Ｄｒｉｖｅ）に保存されることを特徴とする請求項１又は２に記載の情報処理装置。
【請求項５】
前記フラッシュメモリは、さらに、前記第２プログラムを保存し、
前記第２プログラムを起動するモジュールの前記起動手段は、前記ＨＤＤに保存されている前記第２プログラムについての前記検知手段による署名の検証が失敗すると、前記フラッシュメモリに保存されている第２プログラムを前記ＨＤＤに再展開し、該第２プログラムを起動することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記起動手段は、ユーザ入力に従って起動する次のモジュールを切り替えて起動し、
各モジュールは、次に起動可能な複数のモジュールのそれぞれの検証情報と、自身の署名とを予め保持していることを特徴とする請求項１又は２に記載の情報処理装置。
【請求項７】
各モジュールを制御するメインコントローラと、
前記メインコントローラとは別にプロセッサ及びメモリを有し、前記ブートプログラムを制御する埋め込みコントローラとをさらに備えることを特徴とする請求項１乃至６の何れか１項に記載の情報処理装置。
【請求項８】
ブートプログラムの起動に続いて複数のモジュールを順次起動する情報処理装置の制御方法であって、
各モジュールは、
次に起動するモジュールの署名を検証する検証情報を用いて、該次に起動するモジュールの改ざんを検知する検知工程と、
前記検知工程による署名の検証が成功すると、前記次に起動するモジュールを起動する起動工程と
を含むことを特徴とする情報処理装置の制御方法。
【請求項９】
ブートプログラムの起動に続いて複数のモジュールを順次起動する情報処理装置の制御方法における各工程をコンピュータに実行させるためのプログラムであって、前記制御方法は、
各モジュールは、
次に起動するモジュールの署名を検証する検証情報を用いて、該次に起動するモジュールの改ざんを検知する検知工程と、
前記検知工程による署名の検証が成功すると、前記次に起動するモジュールを起動する起動工程と
を含むことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、その制御方法、及びプログラムに関する。
【背景技術】
【０００２】
コンピュータシステムにおけるソフトウェアの脆弱性をついて、ソフトウェアを改ざんし、コンピュータを悪用する攻撃が問題となっている。これらの攻撃対策として、非特許文献１には、ＴＣＧ（Ｔｒｕｓｔｅｄ  Ｃｏｍｐｕｔｉｎｇ  Ｇｒｏｕｐ）において、コンピュータ・システム（プラットフォーム）におけるコンピューティング環境のセキュリティ強化を目的としたＴＰＭ（Ｔｒｕｓｔｅｄ  Ｐｌａｔｆｏｒｍ  Ｍｏｄｕｌｅ）を提案している。ＴＰＭでは、ＣＲＴＭ（Ｃｏｒｅ  Ｒｏｏｔ  ｏｆ  Ｔｒｕｓｔ  ｆｏｒ  Ｍｅａｓｕｒｅｍｅｎｔ）から順々に起動してくタイミングで、ＢＩＯＳ／ＵＥＦＩ、ＢｏｏｔＬｏａｄｅｒのハッシュ値を取得し、次々にＴＰＭのＰＣＲにＥｘｔｅｎｄしながら起動する。さらに、ＴＰＭでは、起動完了後、ＴＰＭにあるＰＣＲ値と正解値が一致するかどうか判定することで改ざん検知を行う。このようなセキュアな起動はＴｒｓｕｔｅｄ  Ｂｏｏｔ（Ｓｅｃｕｒｅ  Ｂｏｏｔ）と呼ばれている。なお、ＣＲＴＭやＴＰＭは書き換え不可の構成であるため、改ざん検知処理を実行する部分を改ざんして、回避するような攻撃は原理的に不可能である。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】”ＴＰＭとは”、［ｏｎｌｉｎｅ］、［平成２９年１０月１２日検索］、インサイトインターナショナル株式会社、インターネット＜http://www.insight-intl.com/jigyou/securitysystem/about_TPM/about_TPM4.html＞
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記従来技術には以下に記載する課題がある。例えば、低コストデバイス等のＴＰＭを有していない構成では、Ｔｒｓｕｔｅｄ  Ｂｏｏｔを実現することができない。このような構成の場合、改ざんの検証処理は、当該処理を実行するアプリケーションの起動が完了した後に実行される。従って、改ざんが行われていたとしてもすぐに検知することができず、ＢＩＯＳやＯＳがある程度動作した後に改ざんが検知されるため、悪意等により改ざんされたアプリケーションが動作する余地を与えてしまう。
【０００５】
本発明は、上述の問題の少なくとも一つに鑑みて成されたものであり、ＴＰＭを有していない構成においても、起動時にシステムの改ざんを検知する仕組みを提供することを目的とする。
【０００６】
本発明のさらなる別の目的は、より堅牢な、システムにおける改ざんを検知する仕組みを提供することにある。
【課題を解決するための手段】
【０００７】
本発明は、例えば、ブートプログラムの起動に続いて複数のモジュールを順次起動する情報処理装置であって、各モジュールは、次に起動するモジュールの署名を検証する検証情報を用いて、該次に起動するモジュールの改ざんを検知する検知手段と、前記検知手段による署名の検証が成功すると、前記次に起動するモジュールを起動する起動手段とを備え、各モジュールは、前記検証情報と自身の署名とを予め保持していることを特徴とする。
【発明の効果】
【０００８】
本発明の一つの側面によれば、ＴＰＭを有していない構成においても、起動時にシステムの改ざんを検知することができる。また、本発明の他の側面によれば、より堅牢な、システムにおける改ざんを検知する仕組みを提供することができる。
【図面の簡単な説明】
【０００９】
【図１】一実施形態に係る複合機のハードウェア構成図。
【図２】一実施形態に係る複合機のソフトウェア構成図。
【図３】一実施形態に係る起動時の動作を示す模式図。
【図４】一実施形態に係る処理手順を示すフローチャート。
【図５】一実施形態に係る処理手順を示すフローチャート。
【図６】一実施形態に係る処理手順を示すフローチャート。
【発明を実施するための形態】
【００１０】
以下に本発明の一実施形態を示す。以下で説明される個別の実施形態は、本発明の上位概念、中位概念及び下位概念など種々の概念を理解するために役立つであろう。また、本発明の技術的範囲は、特許請求の範囲によって確立されるのであって、以下の個別の実施形態によって限定されるわけではない。
【００１１】
＜第１の実施形態＞
以下では、添付図面を参照して、本発明の第１の実施形態について説明する。なお、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。また、実施形態に係る情報処理装置として複合機（デジタル複合機／ＭＦＰ／Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）を例に説明する。しかしながら適用範囲は複合機に限定はせず、情報処理装置であればよい。
【００１２】
＜情報処理装置のハードウェア構成＞
まず、図１を参照して、本実施形態に係る情報処理装置である複合機１００と埋め込みコントローラ（Ｅｍｂｅｄｄｅｄ  Ｃｏｎｔｒｏｌｌｅｒ）１１３のハードウェア構成を説明する。複合機１００は、ＣＰＵ１０１、ＲＯＭ（Ｒｅａｄ-Ｏｎｌｙ Ｍｅｍｏｒｙ）１０２、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０３、ＨＤＤ（Ｈａｒｄ Ｄｉｓｋ Ｄｒｉｖｅ）１０４、ネットワークＩ／Ｆ制御部１０５、スキャナＩ／Ｆ制御部１０６、プリンタＩ／Ｆ制御部１０７、パネル制御部１０８、スキャナ１１１、プリンタ１１２、埋め込みコントローラ１１３、フラッシュメモリ１１４、及びＬＥＤ１１７を備える。また、埋め込みコントローラ１１３は、ＣＰＵ１１５及びＲＡＭ１１６を備える。
【００１３】
ＣＰＵ１０１は、複合機１００のソフトウェアプログラムを実行し、装置全体の制御を統括的に行う。ＲＯＭ１０２はリードオンリーメモリであり、複合機１００のＢＩＯＳ（Ｂａｓｉｃ Ｉｎｐｕｔ/Ｏｕｔｐｕｔ Ｓｙｓｔｅｍ）、固定パラメータ等を格納している。ＲＡＭ１０３はランダムアクセスメモリであり、ＣＰＵ１０１が複合機１００を制御する際に、プログラムや一時的なデータの格納などに使用される。ＨＤＤ１０４はハードディスクドライブであり、一部のアプリケーションや、各種データを格納する。フラッシュメモリ１１４は、ローダー、カーネル、アプリケーションなどの各種モジュールを格納する。
【００１４】
埋め込みコントローラ１１３のＣＰＵ１１５は、埋め込みコントローラ１１３のソフトウェアプログラムを実行し、複合機１００における一部の制御を行う。ＲＡＭ１１６はランダムアクセスメモリであり、ＣＰＵ１１５が複合機１００を制御する際に、プログラムや一時的なデータの格納などに使用される。複合機１００は、埋め込みコントローラ１１３に対して、システムを統括的に制御するメインコントローラを備える。当該メインコントローラは、少なくともＣＰＵ１０１、ＲＯＭ１０２、及びＲＡＭ１０３を含んで構成される。
【００１５】
ネットワークＩ／Ｆ制御部１０５は、ネットワーク１１８とのデータの送受信を制御する。スキャナＩ／Ｆ制御部１０６は、スキャナ１１１による原稿の読み取り制御する。プリンタＩ／Ｆ制御部１０７は、プリンタ１１２による印刷処理などを制御する。パネル制御部１０８は、タッチパネル式の操作パネル１１０を制御し、各種情報の表示、使用者からの指示入力を制御する。バス１０９は、ＣＰＵ１０１、ＲＯＭ１０２、ＲＡＭ１０３、ＨＤＤ１０４、ネットワークＩ／Ｆ制御部１０５、スキャナＩ／Ｆ制御部１０６、及びプリンタＩ／Ｆ制御部１０７を相互に接続する。さらに、バス１０９は、パネル制御部１０８、埋め込みコントローラ１１３、及びフラッシュメモリ１１４も相互に接続する。このバス１０９を介して、ＣＰＵ１０１からの制御信号や各装置間のデータ信号が送受信される。ＬＥＤ１１７は必要に応じて点灯し、ソフトウェアやハードウェアの異常を外部に伝えるために利用される。
【００１６】
＜情報処理装置のソフトウェア構成＞
次に、図２（ａ）を参照して、本実施形態に係る複合機１００が有するソフトウェアモジュールを説明する。複合機１００は、ソフトウェアモジュールとして、埋め込みコントローラ１１３内にブートプログラム２０９を含む。さらに、複合機１００は、ＢＩＯＳ２１０、ローダー２１１、カーネル２１２、Ｎａｔｉｖｅプログラム２１３、Ｊａｖａ（登録商標）プログラム２１４、ＵＩ制御部２０３、及び通信管理部２０７を含む。
【００１７】
通信管理部２０７は、ネットワーク１１８に接続されるネットワークＩ／Ｆ制御部１０５を制御して、ネットワーク１１８を介して外部とデータの送受信を行う。ＵＩ制御部２０３は、パネル制御部２０８を介して操作パネル１１０への入力を受け取り、入力に応じた処理や操作パネル１１０への画面出力を行う。
【００１８】
ブートプログラム２０９は複合機１００の電源を入れると埋め込みコントローラ１１３のＣＰＵ１１５で実行されるプログラムであり、起動に関わる処理を実行するほかにＢＩＯＳの改ざん検知を行うＢＩＯＳ改ざん検知部２０１を含む。ＢＩＯＳ２１０はブートプログラム２０９の実行後にＣＰＵ１０１で実行されるプログラムであり、起動に関わる処理を実行するほかにローダー２１１の改ざん検知を行うローダー改ざん検知部２０２を含む。
【００１９】
ローダー２１１はＢＩＯＳ２１０の処理が完了した後にＣＰＵ１０１で実行されるプログラムであり、起動に関わる処理を実行するほかにカーネルの改ざん検知を行うカーネル改ざん検知部２０４を有する。カーネル２１２はローダー２１１の処理が完了した後にＣＰＵ１０１で実行されるプログラムであり、起動に関わる処理を実行するほかにＮａｔｉｖｅプログラム２１３の改ざん検知を行うＮａｔｉｖｅ改ざん検知部２０５を有する。
【００２０】
Ｎａｔｉｖｅプログラム２１３はＣＰＵ１０１で実行されるプログラムであり、複合機１００のＪａｖａ（登録商標）プログラム２１４と連携して各機能を提供する複数のプログラムからなる。例えば、スキャナＩ／Ｆ制御部１０６やプリンタＩ／Ｆ制御部１０６を制御するプログラムや起動プログラムなどである。カーネル２１２によってＮａｔｉｖｅプログラムの中から起動プログラムが呼び出され、起動処理を実行する。またプログラムの中の一つとしてＪａｖａプログラムの改ざん検知を行うＪａｖａプログラム改ざん検知部を有する。
【００２１】
Ｊａｖａプログラム２１４はＣＰＵ１０１で実行されるプログラムであり、複合機１００のＮａｔｉｖｅプログラム２１３と連携して各機能を提供するプログラムである。例えば、操作パネル１１０に画面を表示するプログラムなどがある。
【００２２】
＜起動手順＞
以下では、図３（ａ）及び図３（ｂ）を参照して、複合機１００の起動手順について説明する。図３（ａ）は、改ざん検知を行わずに複合機１００が起動する順序を示す。ブートプログラム２０９がＢＩＯＳ２１０を起動し、ＢＩＯＳ２１０がローダー２１１を起動し、ローダー２１１がカーネル２１２を起動し、カーネル２１２がＮａｔｉｖｅプログラム２１３の中から起動プログラムを起動する。起動プログラムの中でＪａｖａプログラム２１４が起動され、以降はＮａｔｉｖｅプログラム２１３とＪａｖａプログラム２１４が連携して複合機１００の機能を提供する。このように各モジュールは所定の順序で起動制御が行われ、前のモジュールの起動が完了すると次のモジュールの起動処理が実行される。
【００２３】
図３（ｂ）は、改ざん検知を行いながら複合機１００が起動する順序を示す。図示するように、ブートプログラム２０９から、ＢＩＯＳ２１０、ローダー２１１、カーネル２１２、Ｎａｔｉｖｅプログラム２１３、Ｊａｖａプログラム２１４の順に改ざん検知を行いながら起動する。起動するモジュールの改ざん検知は、直前に起動されたモジュールが行う。例えば、ＢＩＯＳ２１０の改ざん検知は、ブートプログラム２０９が行う。また、図３（ｂ）は各プログラムの保存場所、デジタル署名（以下、署名と称する。）と署名を検証するための公開鍵（検証情報）の保存場所を表している。
【００２４】
以下では、ＲＯＭ１０２にブートプログラム２０９とＢＩＯＳ２１０が保存され、フラッシュメモリ１１４にローダー２１１とカーネル２１２とＮａｔｉｖｅプログラム（第１プログラム）２１３とが保存されているものとする。さらに、ＨＤＤ１０４にＪａｖａプログラム２１４（第２プログラム）が保存されているものとする。
【００２５】
ブートプログラム２０９にはＢＩＯＳの署名検証用の公開鍵３００が保存され、ＢＩＯＳ２１０にはＢＩＯＳの署名３０２とローダー検証用の公開鍵３０３が保存される。ローダー２１１にはローダー署名３０４とカーネル検証用の公開鍵３０５が保存される。また、カーネル２１２にはカーネル署名３０６とＮａｔｉｖｅプログラム検証用の公開鍵３０７が保存され、Ｎａｔｉｖｅプログラム２１３にはＮａｔｉｖｅプログラムの署名３０８とＪａｖａプログラム検証用の公開鍵３０９が保存される。さらに、Ｊａｖａプログラム２１４には、Ｊａｖａプログラムの署名３１０が保存される。これらの公開鍵と署名は予め複合機１００の工場出荷前にプログラムに対して付与されることが望ましい。本実施形態に係る複合機１００においては、２０１、２０２、２０４〜２０６の各検知部が、次に起動する各プログラム（各モジュール）を検証し、問題がなければ次のプログラムを起動することで改ざん検知を行う。
【００２６】
＜処理手順＞
次に、図４を参照して、本実施形態に係る複合機１００の起動時における処理手順を説明する。複合機１００に電源が投入されると、ＲＯＭ１０２からＲＡＭ１１６にブートプログラム２０９が読み込まれ、ＣＰＵ１１５によって実行される。
【００２７】
Ｓ４０１で、ブートプログラム２０９に含まれるＢＩＯＳ改ざん検知部２０１は、ＢＩＯＳの署名検証を行い、成功したか否かを判定する。具体的には、ＢＩＯＳ改ざん検知部２０１は、フラッシュメモリ１１４からＢＩＯＳ２１０とローダー検証用の公開鍵３０３、ＢＩＯＳの署名３０２をＲＡＭ１１６に読み込む。さらに、ＢＩＯＳ改ざん検知部２０１は、ＢＩＯＳ検証用の公開鍵３００を用いてＢＩＯＳの署名３０２の検証を行い成功したか判定する。署名の検証に失敗した場合、Ｓ４０３に進み、ＢＩＯＳ改ざん検知部２０１は、ＬＥＤ１１７を点灯させ、処理を終了する。一方、署名の検証に成功した場合、ＢＩＯＳ改ざん検知部２０１はＣＰＵ１０１に通電し、ブートプログラムの処理を終了する。その後、本フローチャートはＣＰＵ１０１によって実行されるＳ４０２以降の処理に移行する。
【００２８】
ＣＰＵ１０１は通電されると、Ｓ４０２で、フラッシュメモリ１１４からＢＩＯＳ２１０とローダー検証用の公開鍵３０３をＲＡＭ１０３に読み込み、ＢＩＯＳ２１０を起動する。以降の処理は、全てＣＰＵ１０１によって処理されるものとして説明する。
【００２９】
ＢＩＯＳ２１０が起動されるとＳ４０４に移行する。Ｓ４０４で、ＢＩＯＳ２１０は、各種初期化処理を実行し、ＢＩＯＳ２１０に含まれるローダー改ざん検知部２０２がフラッシュメモリ１１４からローダー２１１とカーネル検証用の公開鍵３０５、ローダー署名３０４をＲＡＭ１０３に読み込む。さらに、ローダー改ざん検知部２０２は、ローダー検証用の公開鍵３０５を用いてローダー署名３０４の検証を行い成功したか判定する。署名の検証に失敗した場合は、Ｓ４１２に進み、ローダー改ざん検知部２０２は、操作パネル１１０にエラーメッセージを表示し処理を終了する。一方、署名の検証に成功した場合は、ローダー改ざん検知部２０４は処理を終了し、Ｓ４０５に進み、ＢＩＯＳ２１０がＲＡＭ１０３に読み込まれたローダー２１１を起動する。
【００３０】
ローダー２１１が起動されるとＳ４０６に移行する。Ｓ４０６で、ローダー２１１は、各種初期化処理を実行し、ローダー２１１に含まれるカーネル改ざん検知部２０４がフラッシュメモリ１１４からカーネル２１２とＮａｔｉｖｅプログラム検証用の公開鍵３０７とカーネル署名３０６をＲＡＭ１０３に読み込む。カーネル改ざん検知部２０４はＳ４０６でカーネル検証用の公開鍵３０５を用いて、カーネル署名３０６の検証を行い成功したか判定する。署名の検証に失敗した場合はＳ４１２に進み、カーネル改ざん検知部２０４は操作パネル１１０にエラーメッセージを表示し、処理を終了する。一方、署名の検証に成功した場合、カーネル改ざん検知部２０４は処理を終了し、Ｓ４０７に進み、ローダー２１１がＲＡＭ１０３に読み込まれたカーネル２１２を起動する。
【００３１】
カーネル２１２が起動されるとＳ４０８に移行する。Ｓ４０８で、カーネル２１２は、各種初期化処理を実行する。さらに、カーネル２１２に含まれるプログラム改ざん検知部２０５がフラッシュメモリ１１４からＮａｔｉｖｅプログラム２１３とＪａｖａプログラム検証用の公開鍵３０８とＮａｔｉｖｅプログラムの署名３０９をＲＡＭ１０３に読み込む。プログラム改ざん検知部２０５は、Ｓ４０８でＮａｔｉｖｅプログラム検証用の公開鍵３０７を用いて、Ｎａｔｉｖｅプログラムの署名３０９の検証を行い成功したか判定する。署名の検証に失敗した場合、Ｓ４１２にてプログラム改ざん検知部２０５は操作パネル１１０にエラーメッセージを表示し処理を終了する。一方、署名の検証に成功した場合、プログラム改ざん検知部２０５は処理を終了し、Ｓ４０９にてＮａｔｉｖｅプログラム２１３を起動する。
【００３２】
Ｎａｔｉｖｅプログラム２１３のうち、改ざん検知の処理を実行するＪａｖａプログラム改ざん検知部２０６が起動されるとＳ４１０に移行する。Ｓ４１０で、Ｊａｖａプログラム改ざん検知部２０６は、ＨＤＤ１０４からＪａｖａプログラム２１４とＪａｖａプログラムの署名３１０をＲＡＭ１０３に読み込む。Ｊａｖａプログラム改ざん検知部２０６はＳ４１０でＪａｖａプログラム検証用の公開鍵３０８を用いて、Ｊａｖａプログラムの署名３１０の検証を行い成功したか判定する。署名の検証に失敗した場合はＳ４１２に進み、Ｊａｖａプログラム改ざん検知部２０６は、操作パネル１１０にエラーメッセージを表示し処理を終了する。署名の検証に成功した場合、Ｊａｖａプログラム改ざん検知部２０５は処理を終了し、Ｓ４１１でＮａｔｉｖｅプログラム２１３はＪａｖａプログラム２１４を起動する。
【００３３】
以上説明したように、本実施形態に係る情報処理装置は、ブートプログラムの起動に続いて複数のモジュールを順次起動するものである。各モジュールは、次に起動するモジュールの署名を検証する検証情報を用いて、次に起動するモジュールの改ざんを検知し、署名の検証が成功すると、次に起動するモジュールを起動する。さらに、各モジュールは、検証情報と自身の署名とを予め保持している。これにより、本情報処理装置は、ＴＰＭの構成を有していなくとも、ＢＩＯＳ２１０、ローダー２１１、カーネル２１２、Ｎａｔｉｖｅプログラム２１３、Ｊａｖａプログラム２１４の何れかが改ざんされた場合でも改ざんを検知できる。また、各ソフトウェアプログラムが起動する直前で改ざん検知を行い、改ざんが見つかった場合は即座に起動を止めるため、改ざんされたソフトウェアプログラムが一瞬でも動くことはなく常にセキュアな状態でしか複合機１００が動かないことを担保できる。また、本情報処理装置は、他の側面によれば、より堅牢な、システムにおける改ざんを検知する仕組みを提供することができる。
【００３４】
＜第２の実施形態＞
以下では、本発明の第２の実施形態について説明する。上記第１の実施形態では、ＨＤＤ１０４にＪａｖａプログラムを記憶する構成であった。ＨＤＤ１０４はデータ保存にも使われる領域であるため、読み書き可能となっており、最も改ざんされる可能性が高い。上記第１の実施形態において、改ざんされると複合機１００の起動は停止するため、可用性が低下するという問題がある。そこで、本実施形態ではＨＤＤ１０４に記憶されたＪａｖａプログラムが改ざんされたとしても可用性が低下しない方法について説明する。
【００３５】
＜起動手順＞
次に、図３（ｃ）を参照して、本実施形態における各プログラムや署名、公開鍵の保存場所と起動順序を説明する。図３（ｃ）に示すように、各モジュールの起動手順については、上記第１の実施形態で説明した図３（ｂ）と同様である。しかし、本実施形態では、上記第１の実施形態と異なり、ＨＤＤ１０４に加えてフラッシュメモリ１１４にもＪａｖａプログラム３３１を記憶する。さらに、Ｊａｖａプログラム３３１とともに、Ｊａｖａプログラム２１４の署名３１０と同一の署名３３０がＨＤＤ１０４に保存される。署名３３０は改ざんされない限り、ＨＤＤ１０４に記憶されている署名３１０と同一である。
【００３６】
＜処理手順＞
次に、図５を参照して、本実施形態に係る複合機１００の起動時における処理手順を説明する。Ｓ４０１〜Ｓ４０７、Ｓ４０９、Ｓ４１０、及びＳ４１２は上記第１の実施形態と同様の処理であるため説明を省略する。
【００３７】
Ｓ４０７でカーネル２１２が起動されると、各種初期化処理を実行してＳ５０１に進む。その中でカーネル２１２に含まれるプログラム改ざん検知部２０５はフラッシュメモリ１１４からＮａｔｉｖｅプログラム２１３、Ｊａｖａプログラム２１４をＲＡＭ１０３に読み込む。さらに、プログラム改ざん検知部２０５は、フラッシュメモリ１１４からＪａｖａプログラム検証用の公開鍵３０８、Ｎａｔｉｖｅプログラムの署名３０９、Ｊａｖａプログラム３３１の署名３３０をＲＡＭ１０３に読み込む。
【００３８】
その後Ｓ５０１で、プログラム改ざん検知部２０５は、Ｎａｔｉｖｅプログラム検証用の公開鍵３０７を用いて、Ｎａｔｉｖｅプログラム２１３の署名３０９の検証を行う。さらに、プログラム改ざん検知部２０５はＪａｖａプログラム検証用の公開鍵３０８を用いてＪａｖａプログラム３３１の署名３３０の検証を行って、両方の署名検証に成功したか判定する。両方の署名検証に成功した場合、Ｓ４０９に遷移する。一方、いずれかの署名検証に失敗した場合、Ｓ４１２に遷移する。
【００３９】
Ｓ４０９の処理が終了し、Ｓ４１０で、Ｊａｖａプログラム２１４の署名検証に失敗したと判定すると、Ｓ５０２に遷移する。Ｓ５０２で、Ｊａｖａプログラム改ざん検知部２０６は、ＨＤＤ１０４からＪａｖａプログラム２１４を削除し、フラッシュメモリ１１４に記憶されたＪａｖａプログラム３３１とその署名３３０をＨＤＤ１０４に書き込む再展開処理を実行する。再展開処理を終えると、Ｊａｖａプログラム改ざん検知部２０６は処理を終了し、Ｓ４１１に進みＪａｖａプログラム２１４を起動する。
【００４０】
以上説明したように、本実施形態によれば、ＨＤＤ１０４に加えて、フラッシュメモリ１１４にもＪａｖａプログラムを保持する。これにより、改ざんされる可能性が高いＨＤＤ１０４のＪａｖａプログラムが改ざんされていたとしても、フラッシュメモリ１１４にあるＪａｖａプログラム３３１を再展開して、改ざんを修復することができるため、可用性が低下することを回避することができる。
【００４１】
＜第３の実施形態＞
以下では、本発明の第３の実施形態について説明する。図３（ｄ）に示すように、複合機１００にカーネルやプログラムを複数保持し、ローダーで起動するカーネルやプログラムを切り替える構成をとる場合がある。このような構成の場合、上記第１及び第２の実施形態の構成だとカーネル２１２以外のカーネルＢ２２０を起動しようとした場合、署名が存在せず、改ざんされていないにも関わらず改ざん検知してしまい、起動しないという問題がある。そこで、本実施形態では異なるカーネル、異なるプログラムを保持する構成であっても改ざん検知して起動する方法について説明する。
【００４２】
＜ソフトウェア構成＞
まず、図２（ｂ）を参照して、本実施形態に係る複合機１００が有するソフトウェアモジュールの構成例を説明する。２０１〜２１４は図２（ａ）と同等であるため説明を省略する。
【００４３】
ローダー２２３はＢＩＯＳ２１０の処理が完了した後にＣＰＵ１０１で実行されるプログラムであり、起動に関わる処理を実行するほかにカーネルの改ざん検知を行うカーネル改ざん検知部２２４を有する。ローダー２２３は、操作パネル１１０を介したユーザ入力に従って起動するカーネルを切り替える。
【００４４】
カーネルＢ２２０は、ＣＰＵ１０１で実行されるカーネル２１２とは異なるプログラムであり、起動に関わる処理を実行するほかにＮａｔｉｖｅプログラムＢ２２２の改ざん検知を行うプログラム改ざん検知部２２１を有する。ＮａｔｉｖｅプログラムＢ２２２は、ＣＰＵ１０１で実行されるプログラムであり、複合機１００のアップデート機能を提供する。カーネルＢ２２０によって呼び出されて、カーネル２１２やＮａｔｉｖｅプログラム２１３、Ｊａｖａプログラム２１４をアップデートする機能を提供する。なお、ＮａｔｉｖｅプログラムＢ２２２はアップデート機能に限らず、ほかの機能を提供するプログラムであってもよい。
【００４５】
＜起動手順＞
次に、図３（ｅ）を参照して、ローダー２２３によって起動するカーネルがカーネル２１２か、又はカーネルＢ２２０かによって改ざん検知される対象が切り替わって起動する処理の流れを説明する。
【００４６】
ローダー２２３には、ローダー２２３の署名３０４とカーネル２１２検証用の公開鍵３０５、カーネルＢ２２０検証用の公開鍵３４０が含まれているものとする。さらに、カーネルＢ２２０には、カーネルＢの署名３４１とＮａｔｉｖｅプログラムＢ検証用の公開鍵３４２が含まれ、ＮａｔｉｖｅプログラムＢ２２２にはＮａｔｉｖｅプログラムＢの署名３４３が含まれる。これらの公開鍵と署名は予め複合機１００の工場出荷前にプログラムに対して付与されることが望ましい。このように、ローダー２２３には、次に起動可能な複数のカーネルそれぞれの公開鍵（検証情報）が含まれる。
【００４７】
＜処理手順＞
次に、図６を参照して、本実施形態に係る複合機１００の起動時における処理手順を説明する。Ｓ４０１〜Ｓ４０４、Ｓ４０６〜Ｓ４１２の処理は図４と同等であるため説明を省略する。
【００４８】
Ｓ６００で、ローダー２２３が起動されると、各種初期化処理を行う。続いて、Ｓ６０１で、ローダー２２３は、操作パネル１１０を介してカーネルＢ２２０が起動対象として選択されたか否かを判定する。カーネルＢ２２０が起動対象として選択されなかった場合は、Ｓ４０６の処理に遷移する。一方、カーネルＢ２２０が選択されると、ローダー２２３に含まれるカーネル改ざん検知部２２４がフラッシュメモリ１１４からカーネルＢ２２０とＮａｔｉｖｅプログラムＢ検証用の公開鍵３４２とカーネルＢの署名３４１をＲＡＭ１０３に読み込む。カーネル改ざん検知部２２４は、Ｓ６０２でカーネルＢ検証用の公開鍵３４２を用いて、カーネルＢの署名３４１の検証を行い成功したか判定する。署名の検証に失敗した場合はＳ４１２に処理を遷移する。一方、署名の検証に成功した場合、カーネル改ざん検知部２２１は処理を終了し、Ｓ６０３でローダー２２３がＲＡＭ１０３に読み込まれたカーネルＢ２２０を起動する。
【００４９】
カーネルＢ２２０は起動されると、各種初期化処理を行い、カーネルＢ２２０に含まれるプログラム改ざん検知部２２１がフラッシュメモリ１１４からＮａｔｉｖｅプログラムＢ２２２とＮａｔｉｖｅプログラムＢの署名３４３をＲＡＭ１０３に読み込む。プログラム改ざん検知部２２１はＳ６０４にてＮａｔｉｖｅプログラムＢ検証用の公開鍵３４２を用いて、ＮａｔｉｖｅプログラムＢの署名３４３の検証を行い成功したか判定する。署名の検証に失敗した場合、Ｓ４１２の処理に遷移する。一方、署名の検証に成功した場合、プログラム改ざん検知部２２１は処理を終了し、Ｓ６０５でＮａｔｉｖｅプログラムＢ２２２を起動する。ＮａｔｉｖｅプログラムＢ２２２は起動するとアップデート機能をユーザに提供する。
【００５０】
以上説明したように、本実施形態によれば、複数のカーネル、複数のプログラムを保持する構成であってもそれらの改ざんを検知して起動することができ、上記第１及び第２の実施形態と同等の効果を奏することができる。
【００５１】
＜変形例＞
本発明は上記実施形態に限らず様々な変形が可能である。上記第１乃至第３の実施形態では公開鍵が全て異なるものであるとして説明したが、同じものがあってもよい。また、各プログラムの保存場所としてＲＯＭ１０２、フラッシュメモリ１１４、ＨＤＤ１０４があるものとして説明したが、保存場所を限定するものではなく、別の記憶媒体であってもよい。またプログラムの保存場所が説明した箇所になくてもよく、例えばＲＯＭ１０２上にローダー２２３を記憶する構成であってもよい。
【００５２】
＜その他の実施形態＞
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００５３】
１００：複合機、１０１：ＣＰＵ、１０２：ＲＯＭ、１０３：ＲＡＭ、１０４：ＨＤＤ、１０５：ネットワークＩ／Ｆ制御部、１０６：スキャナＩ／Ｆ制御部、１０７：プリンタＩ／Ｆ制御部、１０８：パネル制御部、１０９：バス、１１０：操作パネル、１１１：スキャナ、１１２：プリンタ、１１３：埋め込みコントローラ、１１４：フラッシュメモリ、１１５：ＣＰＵ、１１６：ＲＡＭ、１１７：ＬＥＤ、１１８：ネットワーク、２０１：ＢＩＯＳ改ざん検知部、２０２：ローダー改ざん検知部、２０４：カーネル改ざん検知部、２０５：プログラム改ざん検知部、２０６：Ｊａｖａプログラム改ざん検知部
【図１】
2019075000.tif 000003
【図２】
2019075000.tif 000004
【図３】
2019075000.tif 000005
【図４】
2019075000.tif 000006
【図５】
2019075000.tif 000007
【図６】
2019075000.tif 000008