JP2021128469A - 情報処理装置と、情報処理装置における起動方法 - Google Patents
情報処理装置と、情報処理装置における起動方法 Download PDFInfo
- Publication number
- JP2021128469A JP2021128469A JP2020021879A JP2020021879A JP2021128469A JP 2021128469 A JP2021128469 A JP 2021128469A JP 2020021879 A JP2020021879 A JP 2020021879A JP 2020021879 A JP2020021879 A JP 2020021879A JP 2021128469 A JP2021128469 A JP 2021128469A
- Authority
- JP
- Japan
- Prior art keywords
- verification
- module
- program
- signature
- information processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
【課題】プログラムの起動において、そのプログラムの改ざんを検知した場合に、ROMやコントローラボードの交換といった手間やコストをかけることなく、安全に復旧させることができる情報処理装置と、情報処理装置における起動方法を提供する。【解決手段】ブートプログラムの起動に続いて複数のモジュールを順次起動する情報処理装置であって、複数のモジュールのそれぞれは、自身の署名を予め記憶し、また、次に起動するモジュールの署名を検証するための検証情報を記憶する。そして、その検証情報を使用して次に起動するモジュールの署名を検証し、その検証に成功すると、次に起動するモジュールを起動し、その検証に失敗すると、その失敗したモジュールの再インストールを、情報処理装置の再起動の後で実行するように指示する。【選択図】図4
Description
本発明は、情報処理装置と、情報処理装置における起動方法に関するものである。
コンピュータシステムにおけるソフトウェアの脆弱性をついて、ソフトウェアを改ざんし、コンピュータを悪用する攻撃が問題となっている。これらの攻撃対策として、プログラムに署名を施して保存しておき、プログラムを起動する度に、そのプログラムの署名を検証することで改ざんの有無を検知する方法が考えられている。
特許文献1は、ブートプログラムの起動に続いて複数のモジュールを順次起動する情報処理装置を記載しており、各モジュールは、次に起動するモジュールの署名を検証する検証情報を用いて、次に起動するモジュールの改ざんの有無を検証している。更に、その情報処理装置は、署名の検証に成功すると、次に起動するモジュールを起動し、更に、各モジュールは、検証情報と自身の署名とを予め保持している。
しかしながら、上記従来技術では、プログラムの起動において署名の検証に失敗した場合、改ざん検知部は操作パネルにエラーメッセージを表示し、機器の起動を停止して処理を終了してしまう。このため、モジュールが一度改ざんされた場合は、元の起動する状態に戻す復旧手段が無い。このような場合は、プログラムが搭載されたROMやコントローラボードを交換して復旧させることになり、多くの人手と多くのコストを要するという課題がある。
本発明の目的は、上記従来技術の問題点の少なくとも一つを解決することにある。
本発明の目的は、プログラムの起動において、そのプログラムの改ざんを検知した場合に、ROMやコントローラボードの交換といった手間やコストをかけることなく安全に復旧させる技術を提供することにある。
上記目的を達成するために本発明の一態様に係る情報処理装置は以下のような構成を備える。即ち、
ブートプログラムの起動に続いて複数のモジュールを順次起動する情報処理装置であって、
前記複数のモジュールのそれぞれは、
自身の署名を予め記憶する第1記憶手段と、
次に起動するモジュールの署名を検証するための検証情報を記憶する第2記憶手段と、
前記検証情報を使用して前記次に起動するモジュールの署名を検証する検証手段と、
前記検証手段による検証に成功すると、前記次に起動するモジュールを起動する起動手段と、
前記検証手段による検証に失敗したモジュールの再インストールを、前記情報処理装置の再起動の後で実行するように指示する指示手段と、を有することを特徴とする。
ブートプログラムの起動に続いて複数のモジュールを順次起動する情報処理装置であって、
前記複数のモジュールのそれぞれは、
自身の署名を予め記憶する第1記憶手段と、
次に起動するモジュールの署名を検証するための検証情報を記憶する第2記憶手段と、
前記検証情報を使用して前記次に起動するモジュールの署名を検証する検証手段と、
前記検証手段による検証に成功すると、前記次に起動するモジュールを起動する起動手段と、
前記検証手段による検証に失敗したモジュールの再インストールを、前記情報処理装置の再起動の後で実行するように指示する指示手段と、を有することを特徴とする。
本発明によれば、プログラムの起動において、そのプログラムの改ざんを検知した場合に、例えばROMやコントローラボードの交換といった手間やコストをかけることなく、安全に復旧させることができる。
本発明のその他の特徴及び利点は、添付図面を参照とした以下の説明により明らかになるであろう。なお、添付図面においては、同じ若しくは同様の構成には、同じ参照番号を付す。
添付図面は明細書に含まれ、その一部を構成し、本発明の実施形態を示し、その記述と共に本発明の原理を説明するために用いられる。
本発明の実施形態1に係る複合機のハードウェア構成を説明するブロック図。
実施形態1に係る複合機が有するソフトウェアモジュールを説明するブロック図(A)と、実施形態2に係る複合機が有するソフトウェアモジュールを説明するブロック図(B)。
実施形態1,2に係る複合機の起動手順を説明する図。
実施形態1に係る複合機の起動時の処理手順を説明するフローチャート。
実施形態2に係る複合機の起動時の処理手順を説明するフローチャート。
操作パネルに表示されるエラー画面の一例を示す図。
以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものでない。実施形態には複数の特徴が記載されているが、これら複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一もしくは同様の構成に同一の参照番号を付し、重複した説明は省略する。尚、実施形態に係る情報処理装置として複合機(デジタル複合機/MFP/Multi Function Peripheral)を例に説明する。しかしながら適用範囲は複合機に限定はせず、情報処理装置であればよい。
[実施形態1]
図1は、本発明の実施形態1に係る複合機100のハードウェア構成を説明するブロック図である。
図1は、本発明の実施形態1に係る複合機100のハードウェア構成を説明するブロック図である。
複合機100は、CPU101、ROM102、RAM103、HDD(ハードディスクドライブ)104、ネットワークI/F制御部105、スキャナI/F制御部106、プリンタI/F制御部107を有する。更に複合機100は、パネル制御部108、スキャナ111、プリンタ112、埋め込みコントローラ113、フラッシュメモリ114、及びLED117を備える。また、埋め込みコントローラ113は、CPU115及びRAM116を備える。
CPU101は、複合機100のソフトウェアプログラムを実行し、装置全体の制御を統括的に行う。ROM102はリードオンリーメモリであり、複合機100のBIOS(Basic Input/Output System)、固定パラメータ等を格納している。RAM103はランダムアクセスメモリであり、CPU101が複合機100を制御する際に、プログラムや一時的なデータなどを格納するのに使用される。HDD104は、一部のアプリケーションや、各種データ等を格納する。フラッシュメモリ114は、ローダ、カーネル、アプリケーションなどの各種モジュールを格納する。
埋め込みコントローラ113のCPU115は、埋め込みコントローラ113のソフトウェアプログラムを実行し、複合機100における一部の制御を行う。RAM116は、CPU115が複合機100を制御する際に、プログラムや一時的なデータの格納などに使用される。複合機100は、埋め込みコントローラ113を統括的に制御するメインコントローラを備える。このメインコントローラは、少なくともCPU101、ROM102、及びRAM103を含んで構成される。
ネットワークI/F制御部105は、ネットワーク118を介したデータの送受信を制御する。スキャナI/F制御部106は、スキャナ111による原稿の読み取り制御する。プリンタI/F制御部107は、プリンタ112による印刷処理などを制御する。パネル制御部108は、タッチパネル式の操作パネル110を制御し、操作パネル110による各種情報の表示、操作パネル110を介した使用者からの指示入力を制御する。バス109は、CPU101、ROM102、RAM103、HDD104、ネットワークI/F制御部105、スキャナI/F制御部106、及びプリンタI/F制御部107を相互に接続する。更に、バス109は、パネル制御部108、埋め込みコントローラ113、及びフラッシュメモリ114も相互に接続する。このバス109を介して、CPU101からの制御信号や各装置間のデータ信号が送受信される。LED117は必要に応じて点灯され、ソフトウェアやハードウェアの異常を外部に伝えるために利用される。
図2は、実施形態1,2に係る複合機100が有するソフトウェアモジュールを説明するブロック図である。
図2(A)は、実施形態1に係る複合機100が有するソフトウェアモジュールを説明する。複合機100は、ソフトウェアモジュールとして、埋め込みコントローラ113内にブートプログラム209を含む。更に、複合機100は、BIOS210、ローダ211、カーネル212、Nativeプログラム213、Java(登録商標)プログラム214、UI制御部203、及び通信管理部207を含む。
通信管理部207は、ネットワーク118に接続されるネットワークI/F制御部105を制御して、ネットワーク118を介して外部とデータの送受信を行う。UI制御部203は、パネル制御部108を介して操作パネル110からの入力、及び操作パネル110への出力を受け取り、その入力に応じた処理や、その出力に応じた操作パネル110への画面出力を行う。
ブートプログラム209は、複合機100の電源オンにより埋め込みコントローラ113のCPU115で実行されるプログラムであり、複合機100の起動に関わる処理を実行する他に、BIOSの改ざん検知を行うBIOS改ざん検知部201を含む。BIOS210は、ブートプログラム209の実行後にCPU101により実行されるプログラムであり、複合機100の起動に関わる処理を実行する他に、ローダ211の改ざん検知を行うローダ改ざん検知部202を含む。
ローダ211は、BIOS210の処理が完了した後にCPU101により実行されるプログラムであり、複合機100の起動に関わる処理を実行する。またカーネル212の改ざん検知を行うカーネル改ざん検知部204を含む。
カーネル212は、ローダ211の処理が完了した後にCPU101で実行されるプログラムであり、複合機100の起動に関わる処理を実行する他に、Nativeプログラム213の改ざん検知を行うNativeプログラム改ざん検知部205を有する。
Nativeプログラム213は、CPU101により実行されるプログラムであり、複合機100のJavaプログラム214と連携して各機能を提供する複数のプログラムを含む。これら複数のプログラムは、例えば、スキャナI/F制御部106やプリンタI/F制御部106を制御するプログラムや起動プログラム等である。カーネル212によってNativeプログラムの中から起動プログラムが呼び出され、起動処理を実行する。またプログラムの中の一つとして、Javaプログラム214の改ざん検知を行うJavaプログラム改ざん検知部206を有する。
Javaプログラム214は、CPU101で実行されるプログラムであり、複合機100のNativeプログラム213と連携して各機能を提供するプログラムである。このプログラムには、例えば、操作パネル110に画面を表示するプログラムなどが含まれる。
図3は、実施形態1,2に係る複合機100の起動手順を説明する図である。
以下では、図3(A)及び図3(B)を参照して、実施形態1に係る複合機100の起動手順について説明する。図3(A)は、プログラムの改ざん検知を行わずに複合機100が起動する順序を示す。ブートプログラム209がBIOS210を起動し、BIOS210がローダ211を起動し、ローダ211がカーネル212を起動し、カーネル212がNativeプログラム213の中から起動プログラムを起動する。ここでは起動プログラムの中でJavaプログラム214が起動され、それ以降はNativeプログラム213とJavaプログラム214が連携して複合機100の機能を提供する。このように各モジュールは所定の順序で起動制御が行われ、前のモジュールの起動が完了すると次のモジュールの起動処理が実行される。
図3(B)は、各プログラムの改ざん検知を行いながら複合機100が起動する順序を示す。図示するように、ブートプログラム209から、BIOS210、ローダ211、カーネル212、Nativeプログラム213、Javaプログラム214の順に、それぞれ次に起動するモジュールの改ざん検知を行いながら起動する。起動するモジュールの改ざん検知は、直前に起動されたモジュールが行う。例えば、BIOS210の改ざん検知は、ブートプログラム209が行う。また図3(B)は、各プログラムの保存場所、デジタル署名(以下、署名)と、その署名を検証するための公開鍵(検証情報)の保存場所を表している。
以下では、ROM102にブートプログラム209とBIOS210が保存され、フラッシュメモリ114にローダ211とカーネル212とNativeプログラム(第1プログラム)213とが保存されているものとする。更に、HDD104にJavaプログラム214(第2プログラム)が保存されているものとする。
ブートプログラム209には、BIOS210の署名検証用の公開鍵300が保存され、BIOS210には、BIOS210の署名302と、ローダ211の検証用の公開鍵303が保存される。ローダ211には、ローダ211の署名304と、カーネル212の検証用の公開鍵305が保存される。またカーネル212には、カーネル212の署名306と、Nativeプログラム213の検証用の公開鍵307が保存されている。またNativeプログラム213には、Nativeプログラム213の署名308と、Javaプログラム214の検証用の公開鍵309が保存される。更に、Javaプログラム214には、Javaプログラム214の署名310が保存される。これらの公開鍵と署名は、予め複合機100の工場出荷前にプログラムに対して付与されることが望ましい。実施形態1に係る複合機100においては、図2に示す、201,202,204,205,206の各検知部が、次に起動する各プログラム(各モジュール)を検証し、問題がなければ次のプログラムを起動する。
図4は、実施形態1に係る複合機100の起動時の処理手順を説明するフローチャートである。この処理は複合機100に電源が投入されることにより開始され、まず埋め込みコントローラ113のCPU115が、ROM102からRAM116にブートプログラム209を展開して実行する。
S401でCPU115は、ブートプログラム209に含まれるBIOS改ざん検知部201として機能し、BIOS210の署名検証を行い、その検証に成功したか否かを判定する。具体的には、BIOS改ざん検知部201は、フラッシュメモリ114からBIOS210とローダ211の検証用の公開鍵303、BIOS210の署名302をRAM116に読み込む。更に、BIOS改ざん検知部201は、BIOS210の検証用の公開鍵300を用いてBIOS210の署名302の検証を行い、その検証に成功したかどうか判定する。ここで署名302の検証に失敗した場合、即ち、BIOS210の改ざんが検知されたときはS403に進み、BIOS改ざん検知部201は、LED117を点灯させて、この処理を終了する。一方、署名302の検証に成功した場合、BIOS改ざん検知部201はCPU101に通電し、ブートプログラム209による処理を終了する。その後、このフローチャートは、CPU101によって実行されるS402以降の処理に移行する。
CPU101は通電されると、S402で、フラッシュメモリ114からBIOS210と、ローダ211の検証用の公開鍵303をRAM103に読み込んでBIOS210を起動する。よってこれ以降の処理は、全てCPU101によって処理されるものとして説明する。
こうしてCPU101はBIOS210を起動するとS404に進み、各種初期化処理を実行する。そしてCPU101はローダ改ざん検知部202として機能し、フラッシュメモリ114からローダ211と、カーネル212の検証用の公開鍵305、ローダ211の署名304をRAM103に読み込む。更に、ローダ改ざん検知部202は、ローダ211の検証用の公開鍵305を用いてローダ211の署名304を検証し、その検証に成功したか判定する。ここで署名304の検証に失敗した場合、即ち、ローダ211の改ざんが検知されたときはS412に進み、ローダ改ざん検知部202は、操作パネル110にエラーメッセージを表示して、この処理を終了する。この表示は、後述する図6の画面とは異なり、ここでは処理ボタンの表示等はせず、エラーメッセージのみの表示を行う。即ち、ローダ211の改ざんが検知されると、プログラムの正常なインストールができなくなるため、エラーメッセージの表示のみを行う。
一方、ローダ211の署名304の検証に成功した場合は、ローダ改ざん検知部202は処理を終了してS405に進み、CPU101は、RAM103に読み込まれたローダ211を起動する。
こうしてローダ211を起動するとS406に進みCPU101は、各種初期化処理を実行する。そしてCPU101は、ローダ211に含まれカーネル改ざん検知部204として機能し、フラッシュメモリ114からカーネル212と、Nativeプログラム213の検証用の公開鍵307と、カーネル212の署名306をRAM103に読み込む。そしてカーネル改ざん検知部204は、カーネル212の検証用の公開鍵305を用いて、カーネル212の署名306を検証し、その検証に成功したか判定する。ここで署名306の検証に失敗した場合、即ち、カーネル212の改ざんを検知したときはS420に進み、カーネル改ざん検知部204は操作パネル110に図6のエラー画面を表示する。
図6は、操作パネル110に表示されるエラー画面の一例を示す図である。
ここではエラーコードと、そのエラー内容602が表示される。この画面でユーザが再インストールボタン603を選択した場合はS421からS422に進みカーネル改ざん検知部204は、ソフトウェアプログラムの更新処理を行うための更新フラグをオンにして、この複合機100を再起動する。尚、この更新フラグは、例えば、HDD104、或いはフラッシュメモリ114等の不揮発メモリに記憶される。一方、ユーザがキャンセルボタン604を選択した場合、エラー内容602、再インストールボタン603及びキャンセルボタン604を非表示にし、エラーメッセージのみを表示して、この処理を終了する。
一方、S406で、カーネル212の署名の検証に成功した場合はカーネル改ざん検知部204は処理を終了してS407に進み、CPU101はRAM103に読み込まれたカーネル212を起動する。
こうしてカーネル212が起動されるとS408に移行する。S408でCPU101はカーネル212を実行して各種初期化処理を実行する。更にCPU101は、カーネル212に含まれるNativeプログラム改ざん検知部205として機能し、フラッシュメモリ114からNativeプログラム213と、Javaプログラム214の検証用の公開鍵309と、Nativeプログラム213の署名308をRAM103に読み込む。そしてNativeプログラム改ざん検知部205は、Nativeプログラム213の検証用の公開鍵307を用いて、Nativeプログラム213の署名308を検証し、その検証に成功したか判定する。ここで署名308の検証に失敗した場合、即ち、Nativeプログラム213の改ざんを検知したときはS420にに進み、Nativeプログラム改ざん検知部205は操作パネル110に、前述した図6のエラー画面を表示する。ここではエラーコードと、エラー内容602を表示する。
この画面でユーザが再インストールボタン603を選択するとS421からS422に進み、Nativeプログラム改ざん検知部205は、ソフトウェアプログラムの更新処理を行うための更新フラグをオンにして複合機100を再起動する。一方、ユーザがキャンセルボタン604を選択した場合は、エラー内容602、再インストールボタン603及びキャンセルボタン604を非表示にし、エラーメッセージのみを表示して、この処理を終了する。
一方、Nativeプログラム213の署名の検証に成功した場合、Nativeプログラム改ざん検知部205は処理を終了してS409に進みCPU101はNativeプログラム213を起動する。
こうしてCPU101はS410で、Nativeプログラム213のうち、改ざん検知の処理を実行するJavaプログラム改ざん検知部206として機能する。そしてJavaプログラム改ざん検知部206は、HDD104からJavaプログラム214と、Javaプログラム214の署名310をRAM103に読み込む。そしてJavaプログラム改ざん検知部206は、Javaプログラム214の検証用の公開鍵309を用いて、Javaプログラム214の署名310を検証し、その検証に成功したか否か判定する。ここで署名310の検証に失敗した場合、即ち、Javaプログラム214の改ざんを検知したときはS420に進み、Javaプログラム改ざん検知部206は操作パネル110に、前述の図6のエラー表示画面を表示する。ここではエラーコードと、エラー内容602を表示する。
ここでユーザが再インストールボタン603を選択するとS421からS422に進みJavaプログラム改ざん検知部206は、ソフトウェアプログラムの更新処理を行うための更新フラグをオンにして複合機100を再起動する。一方、ユーザがキャンセルボタン604を選択した場合、エラー内容602、再インストールボタン603及びキャンセルボタン604を非表示にし、エラーメッセージのみを表示して、この処理を終了する。
一方、S410でJavaプログラム214の署名310の検証に成功した場合、Javaプログラム改ざん検知部206は処理を終了してS411に進み、CPU101は、Nativeプログラム213によりJavaプログラム214を起動して、この処理を終了する。
尚、更新フラグをオンにして複合機100が再起動されると、複合機100はダウンロードモードで再起動される。そして特定のバージョンのカーネル、Nativeプログラム、Javaプログラムなどを、特定のサーバからダウンロードしてHDD104、フラッシュメモリ114等に格納する。これにより改ざんされているプログラムを、正常のプログラムに更新できる。
以上説明したように実施形態1に係る複合機によれば、ブートプログラムの起動に続いて複数のソフトウェアモジュールを順次起動する。このとき各モジュールは、次に起動するモジュールの署名を検証する検証情報を用いて、次に起動するモジュールの改ざんの有無を検証し、改ざんがないと判定すると次に起動するモジュールを起動する。更に、各モジュールは、次に起動するモジュールの検証情報と、自身の署名とを予め保持している。これにより、BIOS210、ローダ211、カーネル212、Nativeプログラム213、Javaプログラム214の何れかが改ざんされた場合でも、その改ざんを検知できる。
また、各ソフトウェアプログラムが起動する直前で、そのプログラムの改ざんの有無を検知し、改ざんが見つかった場合は即座に起動を停止できる。これにより改ざんされたソフトウェアプログラムが一瞬でも動作することがなく、常にセキュアな状態で複合機が動作することが担保できる。また他の側面によれば、より堅牢な、システムにおける改ざんを検知する仕組みを提供することができる。
[実施形態2]
次に本発明の第2の実施形態について説明する。実施形態2では、図3(C)に示すように、複合機100がカーネルやプログラムを複数保持し、ローダ223により、起動するカーネルやプログラムを切り替える構成をとる場合がある。このような構成の場合、実施形態1の構成では、カーネル212以外のカーネル220を起動しようとした場合、署名が存在せず、改ざんされていないにも関わらず改ざんされていると判定して、起動しないという問題がある。そこで実施形態2では、異なるカーネル、異なるプログラムを保持する構成であっても改ざんの有無を検知して起動する方法について説明する。尚、実施形態2に係る複合機100のハードウェア構成は、前述の実施形態1と同様であるため、その説明を省略する。
次に本発明の第2の実施形態について説明する。実施形態2では、図3(C)に示すように、複合機100がカーネルやプログラムを複数保持し、ローダ223により、起動するカーネルやプログラムを切り替える構成をとる場合がある。このような構成の場合、実施形態1の構成では、カーネル212以外のカーネル220を起動しようとした場合、署名が存在せず、改ざんされていないにも関わらず改ざんされていると判定して、起動しないという問題がある。そこで実施形態2では、異なるカーネル、異なるプログラムを保持する構成であっても改ざんの有無を検知して起動する方法について説明する。尚、実施形態2に係る複合機100のハードウェア構成は、前述の実施形態1と同様であるため、その説明を省略する。
図2(B)は、実施形態2に係る複合機100が有するソフトウェアモジュールの構成例を説明する図である。尚、図2(B)において、前述の図2(A)と共通する部分は同じ参照番号で示し、それらの説明を省略する。
ローダ223は、BIOS210の処理が完了した後にCPU101で実行されるプログラムであり、起動に関わる処理を実行する他に、カーネル212,220の改ざん検知を行うカーネル改ざん検知部224を有する。ローダ223は、操作パネル110を介したユーザ入力に従って、起動するカーネルを切り替える。
カーネル220は、CPU101で実行されるカーネル212とは異なるプログラムであり、起動に関わる処理を実行する他に、Nativeプログラム222の改ざんの有無を検知するNaiveプログラム改ざん検知部221を有する。Nativeプログラム222は、CPU101で実行されるプログラムであり、複合機100のアップデート機能を提供する。Nativeプログラム222は、カーネル220によって呼び出されて、カーネル212やNativeプログラム213、Javaプログラム214をアップデートする機能を提供する。尚、Nativeプログラム222は、これらアップデート機能に限らず、ほかの機能を提供するプログラムであってもよい。
次に、図3(D)を参照して、ローダ223によって起動するカーネルが、カーネル212であるか、又はカーネル220であるかによって改ざんが検知される対象が切り替わって起動する処理の流れを説明する。
ローダ223には、ローダ223の署名304と、カーネル212の検証用の公開鍵305、カーネル212と同等の機能を有するカーネル220の検証用の公開鍵340が含まれているものとする。更に、カーネル220には、カーネル220の署名341と、Nativeプログラム213と同等の機能を有するNativeプログラム222の検証用の公開鍵342が含まれている。そしてNativeプログラム222には、Nativeプログラム222の署名343が含まれている。これらの公開鍵と署名は、予め複合機100の工場出荷前にプログラムに対して付与されることが望ましい。このように、ローダ223には、次に起動可能な複数のカーネルそれぞれの公開鍵(検証情報)が含まれる。そしてローダ223は、次に起動されるカーネルに応じて、そのカーネルの改ざんの有無を検証するための公開鍵を切り替えて、次に起動されるカーネルの改ざんの有無を検証する。
次に図5を参照して、実施形態2に係る複合機100の起動時の処理手順を説明する。 図5は、実施形態2に係る複合機100の起動時の処理手順を説明するフローチャートである。尚、図5において、前述の実施形態1に係る図4と共通する処理は同じ参照番号を付して、それらの説明を省略する。
S500でCPU101がローダ223を起動して各種初期化処理を行う。次にS501に進みCPU101はローダ223を実行して、更新フラグがオンかどうか判定する。ここで、この更新フラグがオンでないときはS406の処理に遷移する。S406以降の処理は、図4を参照して前述した通りである。
一方、S501で更新フラグがオンであると判定すると、前回、カーネル212の検証に失敗している、即ち、カーネル212或いはNativeプログラム213のいずれかの改ざんが検知されているためS502に進む。S502でCPU101は、ローダ223に含まれるカーネル改ざん検知部224として機能し、フラッシュメモリ114からカーネル220と、Nativeプログラム222の検証用の公開鍵342と、カーネル220の署名341とをRAM103に読み込む。そしてカーネル改ざん検知部224は、カーネル220の検証用の公開鍵340を用いて、カーネル220の署名341を検証し、その検証に成功したか判定する。ここでカーネル220の署名341の検証に失敗した場合、即ち、カーネル220の改ざんが検知されたときは更新フラグをオフにしてS412に処理を遷移する。一方、署名341の検証に成功した場合、カーネル改ざん検知部224は処理を終了してS503に進み、RAM103に読み込まれたカーネル220を起動する。
こうしてカーネル220が起動されると各種初期化処理を行う。次にS504に進みCPU101は、カーネル220に含まれるNativeプログラム改ざん検知部221として機能し、フラッシュメモリ114からNativeプログラム222とNativeプログラム222の署名343をRAM103に読み込む。そしてNativeプログラム改ざん検知部221は、Nativeプログラム222の検証用の公開鍵342を用いて、Nativeプログラム222の署名343を検証し、その検証に成功したか判定する。ここで署名343の検証に失敗した場合、即ち、Nativeプログラム222の改ざんを検知したときは、更新フラグをオフにしてS412の処理に遷移する。一方、署名343の検証に成功したときは、Nativeプログラム改ざん検知部221は処理を終了してS505に進む。S505でCPU101は、Nativeプログラム222を起動する。次にS506に進みCPU101はNativeプログラム222を実行し、ROM102に記憶されたファームウェアのバージョンを取得し、ネットワーク118に繋がった外部サーバ装置(図示せず)から、複合機100の同じバージョンのソフトウェアプログラムを取得する。そしてS507に進みCPU101は、Nativeプログラム222を実行し、その取得したソフトウェアプログラムで上書き更新する。ここでは、ソフトウェアプログラム内の各ライブラリモジュールは、更新前と同じバージョンであったとしても、強制的に上書き更新する。尚、ここでは、更新するソフトウェアプログラムとして同じバージョンを用いたが、ユーザがバージョンを選択して更新しても良いし、また工場出荷時のバージョンで更新しても良い。
以上説明したように実施形態2によれば、複数のカーネル、複数のプログラムを保持する構成であっても、それらの改ざんを検知して起動することができ、上述の実施形態1と同等の効果を奏することができる。
また実施形態2によれば、カーネル、Nativeプログラム、Javaプログラムが改ざんされた場合に、別のカーネルやNativeプログラムやJavaプログラムを使用することで、改ざんされたカーネルやプログラムを更新することができる。これにより、ROMの交換やコントローラ基板の交換といった、手間やコストをかける作業を省略して、複合機を元の起動できる状態に復旧させることができる。
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本発明は上記実施形態に制限されるものではなく、本発明の精神及び範囲から逸脱することなく、様々な変更及び変形が可能である。従って、本発明の範囲を公にするために、以下の請求項を添付する。
100…複合機、101…CPU、102…ROM、104…HDD、113…埋め込みコントローラ、114…フラッシュメモリ、115…埋め込みコントローラのCPU、116…埋め込みコントローラのROM、209…ブートプログラム、210…BIOS,211,223…ローダ、212,220…カーネル、213…Nativeプログラム
Claims (8)
- ブートプログラムの起動に続いて複数のモジュールを順次起動する情報処理装置であって、
前記複数のモジュールのそれぞれは、
自身の署名を予め記憶する第1記憶手段と、
次に起動するモジュールの署名を検証するための検証情報を記憶する第2記憶手段と、
前記検証情報を使用して前記次に起動するモジュールの署名を検証する検証手段と、
前記検証手段による検証に成功すると、前記次に起動するモジュールを起動する起動手段と、
前記検証手段による検証に失敗したモジュールの再インストールを、前記情報処理装置の再起動の後で実行するように指示する指示手段と、
を有することを特徴とする情報処理装置。 - 前記検証に失敗したモジュールの再インストールは、不揮発メモリのフラグをオンすることにより指示されることを特徴とする請求項1に記載の情報処理装置。
- 前記指示手段は、前記検証手段による検証に失敗したモジュールがローダの場合は、当該モジュールの再インストールを指示できないようにすることを特徴とする請求項1に記載の情報処理装置。
- 前記情報処理装置の動作を制御する第1コントローラと、
前記第1コントローラにより制御される第2コントローラとを有し、
前記第2コントローラはブートプログラムを実行し、次に起動するモジュールであるBIOS(Basic Input/Output System)の署名を、前記ブートプログラムに含まれる前記BIOSの検証情報を使用して検証し、前記BIOSの検証に成功すると、前記第1コントローラが前記BIOSを実行することを特徴とする請求項1に記載の情報処理装置。 - 前記検証情報は、前記次に起動するモジュールの署名を検証するための公開鍵を含むことを特徴とする請求項1乃至4のいずれか1項に記載の情報処理装置。
- 前記複数のモジュールのうち第1モジュールは、前記検証手段による検証に失敗した前記次に起動するモジュールと同等の機能を有する第2モジュールを検証する検証情報を更に有し、
当該第2モジュールを検証する検証情報を用いて、前記第2モジュールの改ざんの有無を検証することを特徴とする請求項1乃至5のいずれか1項に記載の情報処理装置。 - 前記第1モジュールがローダの場合、前記次に起動するモジュールはカーネルであることを特徴とする請求項6に記載の情報処理装置。
- ブートプログラムの起動に続いて複数のモジュールを順次起動する情報処理装置における起動方法であって、
前記複数のモジュールの第1モジュールは、次に起動するモジュールの署名を検証するための検証情報を使用して前記次に起動するモジュールの署名を検証する検証工程と、
前記検証工程による検証に成功すると、前記次に起動するモジュールを起動する起動工程と、
前記検証工程による検証に失敗したモジュールの再インストールを指示する指示工程と、
前記モジュールの再インストールが指示されると、前記情報処理装置を再起動して前記モジュールを更新する工程と、
を有することを特徴とする起動方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020021879A JP2021128469A (ja) | 2020-02-12 | 2020-02-12 | 情報処理装置と、情報処理装置における起動方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020021879A JP2021128469A (ja) | 2020-02-12 | 2020-02-12 | 情報処理装置と、情報処理装置における起動方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021128469A true JP2021128469A (ja) | 2021-09-02 |
Family
ID=77488663
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020021879A Pending JP2021128469A (ja) | 2020-02-12 | 2020-02-12 | 情報処理装置と、情報処理装置における起動方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2021128469A (ja) |
-
2020
- 2020-02-12 JP JP2020021879A patent/JP2021128469A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102347703B1 (ko) | 정보 처리 장치, 그 제어 방법 및 저장 매체 | |
JP4954031B2 (ja) | 画像処理装置及び再インストール方法 | |
US20210255849A1 (en) | Information processing apparatus and method | |
JP6399797B2 (ja) | 情報処理装置及びその制御方法、並びにプログラム | |
JP7374780B2 (ja) | 情報処理装置および情報処理装置の制御方法 | |
JP2022135443A (ja) | 情報処理装置、情報処理方法及びプログラム | |
JP2020082441A (ja) | 画像形成装置、その制御方法、及びプログラム | |
JP2021128469A (ja) | 情報処理装置と、情報処理装置における起動方法 | |
JP7182966B2 (ja) | 情報処理装置、情報処理装置の起動方法、及びプログラム | |
JP6706278B2 (ja) | 情報処理装置、及び情報処理方法 | |
JP2021140601A (ja) | 情報処理装置、その制御方法、及びプログラム | |
US20230132214A1 (en) | Information processing apparatus and method of the same | |
JP2020053002A (ja) | 情報処理装置とその制御方法、及びプログラム | |
JP2020086516A (ja) | 情報処理装置、情報処理装置の制御方法、及び、プログラム | |
JP2023064046A (ja) | 情報処理装置、及びその起動方法 | |
US11928217B2 (en) | Information processing apparatus, control method of information processing apparatus, and storage medium | |
JP7282616B2 (ja) | 情報処理装置、情報処理方法およびプログラム | |
JP2021114156A (ja) | 情報処理装置、情報処理装置の処理方法およびプログラム | |
JP7129296B2 (ja) | 画像処理装置、画像処理装置の制御方法 | |
JP2022157063A (ja) | 情報処理装置、情報処理方法およびプログラム | |
JP2021117523A (ja) | 情報処理装置、情報処理装置の処理方法およびプログラム | |
JP2022187302A (ja) | 情報処理装置とその制御方法、及びプログラム | |
JP2020013244A (ja) | 情報処理装置、情報処理装置の制御方法、及び、プログラム | |
JP2003330724A (ja) | 情報処理装置、情報処理方法、及びプログラム | |
JP6072521B2 (ja) | コンピュータ起動システムおよびコンピュータ起動プログラムとコンピュータならびにコンピュータ起動方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20210103 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210113 |