JP2020135645A - 情報処理装置、その制御方法およびプログラム - Google Patents
情報処理装置、その制御方法およびプログラム Download PDFInfo
- Publication number
- JP2020135645A JP2020135645A JP2019030795A JP2019030795A JP2020135645A JP 2020135645 A JP2020135645 A JP 2020135645A JP 2019030795 A JP2019030795 A JP 2019030795A JP 2019030795 A JP2019030795 A JP 2019030795A JP 2020135645 A JP2020135645 A JP 2020135645A
- Authority
- JP
- Japan
- Prior art keywords
- boot code
- boot
- normal
- information processing
- cpu
- 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)
- Facsimiles In General (AREA)
Abstract
【課題】 ユーザの利便性を損なうことなく、ブートコードの異常な変化に対する耐性を向上させること。【解決手段】 情報処理装置は、複数のブートコードを格納する格納手段と、格納手段に格納された複数のブートコードのいずれかが正常であるか否かを判定する検証手段と、複数のブートコードを更新する更新手段と、を備え、検証手段は第1のブートコードが正常であるか否かを判定し、検証手段が第1のブートコードは正常であると判定した場合に、制御手段が第1のブートコードを実行させ、検証手段は第2のブートコードが正常であるか否かを判定する。【選択図】 図1
Description
本発明は、情報処理装置、その制御方法およびプログラムに関する。
システム起動用プログラム(ブートコード)の格納場所として不揮発メモリが広く用いられているが、この不揮発性メモリの内容が意図せず変化する場合がある。ブートコードの意図しない変化の原因のひとつとして、不揮発メモリの物理的な欠陥からくる経年劣化による電荷抜けによるビットの変化が挙げられる。また別の原因として、悪意ある攻撃者による電子的な攻撃によるブートコードの書き換え(改ざん)が挙げられる。このようなブートコードの変化が発生すると、システムの起動に失敗したり、攻撃者により書き換えられたプログラムによって情報の漏洩などの意図しない動作をする場合がある。
このような場合を避け、正常なブートコードを動作させるために、電源投入時(起動時)にブートコードの変化の有無を検証する技術がある。例えば特許文献1では、不揮発メモリにブートコードを複数格納し、起動時に当該ブートコードの変化の有無を検証し、変化を検出した場合にはバックアップ用不揮発メモリからブートコードを復元するような技術が提案されている。
しかしながら、特許文献1では、第1のブートコードが正常である間は第2のブートコードが変化したとしてもそれを検出することができない。そのため、第2のブートコードが変化した後に第1のブートコードが変化した場合には、エラー出力して動作を停止するしかなかった。
また起動時に第1のブートコードと第2のブートコードの両方に対して変化の有無を検証すると、ブートコードを実行し、システムが動作するまでの時間が長くなり、ユーザの利便性が低下する。
本発明の目的は、上述の課題に鑑みてなされたものであり、ユーザの利便性を損なうことなく、ブートコードの異常な変化に対する耐性を向上させることを目的とする。
本発明の一態様によると、情報処理装置は、複数のブートコードを格納する格納手段と、前記格納手段に格納された前記複数のブートコードのいずれかが正常であるか否かを判定する検証手段と、前記複数のブートコードを更新する更新手段と、を備え、前記検証手段は第1のブートコードが正常であるか否かを判定し、前記検証手段が前記第1のブートコードは正常であると判定した場合に、制御手段が前記第1のブートコードを実行させ、前記検証手段は第2のブートコードが正常であるか否かを判定することを特徴とする。
本発明によると、ユーザの利便性を損なうことなく、ブートコードの異常な変化に対する耐性を向上させることができる。
以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。なお、実施形態に係る情報処理装置として複合機(デジタル複合機/MFP/Multi Function Peripheral)を例に説明する。しかしながら適用範囲は複合機に限定はせず、情報処理装置であればよい。
<第1実施形態>
図1は本実施形態に係る複合機(MFP)100を説明するブロック図である。MFP100は、構成要素として、CPU101、ROM(Read Only Memory)102、RAM(Random Access Memory)103、HDD(Hard Disk Drive)104を含む。また、MFP100は、構成要素として、ネットワークインタフェース(I/F)制御部105、スキャナI/F制御部106、プリンタI/F制御部107、パネル制御部108、Embedded Controller(EC)113を含む。また、MFP100は、構成要素として、フラッシュメモリ114、LED117を含む。これらの構成要素は、バス109を介して相互に通信可能に接続され、CPU101からの制御信号や各構成要素間のデータ信号を送受信する。
図1は本実施形態に係る複合機(MFP)100を説明するブロック図である。MFP100は、構成要素として、CPU101、ROM(Read Only Memory)102、RAM(Random Access Memory)103、HDD(Hard Disk Drive)104を含む。また、MFP100は、構成要素として、ネットワークインタフェース(I/F)制御部105、スキャナI/F制御部106、プリンタI/F制御部107、パネル制御部108、Embedded Controller(EC)113を含む。また、MFP100は、構成要素として、フラッシュメモリ114、LED117を含む。これらの構成要素は、バス109を介して相互に通信可能に接続され、CPU101からの制御信号や各構成要素間のデータ信号を送受信する。
CPU101は、MFP100のソフトウェアプログラムを実行し、MFP全体の制御を行う。ROM102は、MFP100の周辺機器を制御するためのソフトウェアであるBIOSや、当該ソフトウェアによって使用される固定パラメータ等を格納している。RAM103は、CPU101がMFP100を制御する際に、プログラムのロード場所としてだけでなく、プログラムが動作するためのワークエリアなどとしても動作する。
フラッシュメモリ114はブートローダー、カーネル、および一部のアプリケーションを格納する格納部として機能する不揮発性メモリである。本実施形態では、フラッシュメモリ114に格納されるブートローダー、カーネル、および一部のアプリケーションをブートコードと称する。HDD104は、ブートコードの実行後に実行される一部のアプリケーションや、各種データを格納する格納部として機能する。CPU115はEC113のソフトウェアプログラムを実行し、MFP100の一部の制御を行う。RAM116はランダムアクセスメモリで、CPU115がMFP100を制御する際に、プログラムや一時的なデータの格納などに使用される。ROM118は、CPU115が動作開始したときに最初に読み出されるプログラムを格納している。
ネットワークI/F制御部105は、ネットワーク120を介して外部装置とのデータの送受信を制御する。スキャナI/F制御部106は、スキャナ111に接続され、スキャナ111の原稿の読み取り処理などを制御する。プリンタI/F制御部107は、プリンタ112に接続され、プリンタ112の印刷処理などを制御する。パネル制御部108は、タッチパネル式の操作パネル110に接続され、操作パネル110を介した各種情報の出力やユーザ操作の入力を制御する。LED117はCPU101によって制御され、必要に応じて点灯することでソフトウェアやハードウェアの異常を外部に伝えることができる。
次に図2(a)を参照して本実施形態に係るMFP100が有する機能ブロックを説明する。
フラッシュメモリ114にはブートコード201と、ブートコード202が格納されている。EC113の内部には、更新部204、検証部205およびリセット制御部206が含まれている。
図1においてフラッシュメモリ114とEC113は共通のバス109によって接続されているよう示している。しかしながら、EC113がフラッシュメモリ114のデータを読み書きするために、EC113とフラッシュメモリ114とを直接接続するために、バス109とは異なるバスを設け、それを用いても良い。
更新部204は、ブートコード201および202の更新処理を行う。検証部205は、ブートコードが意図せず変化したか否か、すなわちブートコードの正当性を検証する。正当性の検証には、一般的に広く用いられる公開鍵暗号方式を応用した電子署名技術を使用することを想定し、詳細な説明は割愛する。リセット制御部206は、MFP制御部207のリセット状態を制御する。リセット制御部206の初期状態はリセット状態であるものとする。
例えば、リセット制御部206は起動状態に遷移することで、MFP制御部207に起動指示信号を送信し、MFP制御部207がブートコードを実行するように指示する。
MFP制御部207は、MFP100からフラッシュメモリ114およびEC113を除いたもの全体に相当する。前述したように、リセット制御部206の初期状態がリセット状態であるため、電源が供給開始されてもMFP制御部207は動作を開始しない。
図2(b)は、フラッシュメモリ114に格納されているブートコードの論理的な構成を示した図である。
前述の通り公開鍵暗号方式を応用した電子署名技術を用いてブートコードの異常な変化を検出するため、ブートコードは、プログラム本体(実行コード)だけでなく、付加情報として署名データ212および公開鍵213も含む。実行コード211は、CPUが実行するプログラム本体である。署名データ212および公開鍵213は、実行コード211の正当性を検証するために必要となる付加情報である。
次に、図3(a)〜図3(c)を参照して、本実施形態に係るMFP100の電源が投入された場合にEC113が実行する処理の一例を示すフローチャートを説明する。本処理は、ソフトウェアとしてROM118に格納されており、CPU115が実行することで実現される。
まず、S301で、CPU115は、ブートコード201(boot1)の正当性を検証する。上述したように、本実施形態では公開鍵暗号方式を応用した電子署名技術を用いて確認を行うため、詳細な説明は割愛する。
続いて、CPU115は処理をS302に進め、S301におけるブートコード201の正当性の検証結果が、正当である(正常)か正当ではない(異常)かを判定する。CPU115がブートコード201の正当性の検証結果が正常であると判定した場合(S302で正常)、CPU115は処理をS303に進める。正当性の検証結果が異常であると判定した場合(S302で異常)、CPU115は処理をS305に進める。
S303で、リセット制御部206はMFP制御部207のリセット状態の解除を行い、ブートコードの実行を指示する。リセットの解除が行われると、MFP制御部207がブートコード201を読み出して動作を開始し、処理をS304に進める。続いて、S304でCPU115は、図3(b)を参照して後述する冗長性確認処理を実行し、図3(a)の処理を終了する。
S305では、CPU115は、図3(c)を参照して後述する異常処理を実行し、図3(a)の処理を終了する。
図3(b)はブートコード201が異常であると判定された場合にCPU115が実行する処理の詳細を説明するフローチャートである。本処理は、ソフトウェアとしてROM118に格納されており、CPU115が実行することで実現される。
まず、CPU115はS311で、ブートコード202(boot2)の正当性を検証する。上述したように、本実施形態では公開鍵暗号方式を応用した電子署名技術を用いて確認を行うため、詳細な説明は割愛する。
続いて、CPU115は処理をS312に進め、S311におけるブートコード202の正当性の検証結果が、正当である(正常)か正当ではない(異常)かを判定する。CPU115がブートコード202の正当性の検証結果が正常であると判定した場合(S312で正常)、CPU115は処理をS313に進める。正当性の検証結果が異常であると判定した場合(S312で異常)、CPU115は処理をS315に進める。
S313で、更新部204はブートコード202の内容で、ブートコード201の内容を上書きするように更新処理を行う。続いて、CPU115は処理をS314に進め、リセット制御部206はMFP制御部207のリセット状態の解除を行い、ブートコードの実行を指示する。MFP制御部207は、指示を受けてブートコード201を読み出して動作を開始し、図3(b)の処理を終了する。
S315では、CPU115は両方のブートコードが異常であり、リセット状態の解除が行われないため、起動処理を停止し、図3(b)の処理を終了する。なお、S315では、CPU115はLED117を点灯したり、操作パネル110にメッセージを表示するなどして、MFP100の起動処理が失敗したことをユーザに通知してもよい。
図3(c)は、S304の冗長性確認処理を詳細に説明するためのフローチャートである。本処理は、ソフトウェアとしてROM118に格納されており、CPU115が実行することで実現される。
まず、S321で、CPU115はブートコード202の正当性を検証する。上述したように、本実施形態では公開鍵暗号方式を応用した電子署名技術を用いて確認を行うため、詳細な説明は割愛する。
続いて、CPU115は処理をS322に進め、S321におけるブートコード202の正当性の検証結果が、正当である(正常)か正当ではない(異常)かを判定する。CPU115がブートコード202の正当性の検証結果が正常であると判定した場合(S322で正常)、CPU115は図3(c)の処理を終了する。正当性の検証結果が異常であると判定した場合(S322で異常)、CPU115は処理をS323に進める。S323で、更新部204はブートコード201の内容で、ブートコード202の内容を上書きする更新処理を実行し、図3(c)の処理を終了する。
以上説明したように、図3(a)〜図3(c)の処理により、システム起動毎に複数ブートコードの正当性を検証し、一方のブートコードが正常で、他方が異常である場合には、正常なブートコードで異常なブートコードを上書きする。これによって、ブートコードの異常な変化に対する耐性を向上させることができる。
なお、上記の例では電源投入時にEC113だけが動作を開始し、図3(a)〜図3(c)に示す処理を行った後にMFP制御部207が動作を開始するものとして説明を行った。しかしながら、MFP100はEC113を搭載せず、MFP制御部207内のCPU101が図3(a)〜図3(c)に示す処理を実行してもよい。この場合は、図3(a)〜図3(c)に示す処理を実行するためのプログラムをROM102に格納し、CPU101が動作開始したときにこのプログラムを実行するように構成すればよい。
また、上記の例では同一のブートコードが2つである場合についての処理を説明したが、3つ以上の場合にも適用可能である。このような場合、S304では第2および第3のブートコードの冗長性を確認する。また、S305の異常処理では、第2のブートコードが異常である(S312で異常)場合に第3のブートコードの正当性を確認し、第3のブートコードが異常である場合に起動処理を停止する。このように構成することで、さらに耐性を向上させることが可能になる。
以上説明したように、複数あるブートコードのすべての正当性を検証することで、システム起動に用いる必要のないブートコードの異常な変化を検出することができる。また、何れかのブートコードの正当性が検証できた時点でシステムの起動処理を開始するため、システム起動時間が長くなることを防ぐことができ、ユーザの利便性を損なうことを避けることができる。
<第2実施形態>
第1実施形態では、S302でブートコード201が正常であると判定された場合に、S303でリセットの解除を行うことでMFP制御部207が動作を開始し、並行してS304において冗長性確認処理を行う。一例では、冗長性確認処理によってフラッシュメモリ114へのアクセスの競合が発生しないよう処理を遅延させてもよい。第2実施形態では、フラッシュメモリへのアクセスを確認し、アクセス可能であると判定した後に冗長性確認処理を実行するMFP100の処理について説明する。なお、第1実施形態と同一若しくは同様の構成および処理については説明を省略する。
第1実施形態では、S302でブートコード201が正常であると判定された場合に、S303でリセットの解除を行うことでMFP制御部207が動作を開始し、並行してS304において冗長性確認処理を行う。一例では、冗長性確認処理によってフラッシュメモリ114へのアクセスの競合が発生しないよう処理を遅延させてもよい。第2実施形態では、フラッシュメモリへのアクセスを確認し、アクセス可能であると判定した後に冗長性確認処理を実行するMFP100の処理について説明する。なお、第1実施形態と同一若しくは同様の構成および処理については説明を省略する。
EC113内のCPU115と、MFP制御部207内のCPU101が、同時にフラッシュメモリ114へアクセスを行うことがありえる。フラッシュメモリ114へアクセスを行う信号線は各CPUに対して共有している場合がほとんどであるため、フラッシュメモリ114へのアクセスが競合することがあり得る。そのため、本実施形態に係るフラッシュメモリ114は、アクセス権を設定可能であり、アクセスするCPU115またはCPU101は、後述するアクセス権の取得によって競合を避けて動作する。
図4は、本実施形態に係る冗長性確認処理を示すフローチャートであり、図3(a)のS304において実行される。
まず、CPU115はS401で、CPU101がフラッシュメモリ114へアクセス中であるかを確認する。一例では、フラッシュメモリ114はアクセス状態を示すフラグを有し、フラッシュメモリ114へのアクセス権限を取得したCPUによってフラグをオンに設定され、当該CPUによるアクセス終了時にオフに設定される。フラッシュメモリ114へのアクセス権限を取得しようとするCPUは、フラグを確認し、フラグがオンである場合にはアクセス権限を取得できないと判定し、オフである場合にはアクセス権限を取得できると判定する。
CPU115は、CPU101がフラッシュメモリ114へアクセス中であると判定した場合(S401でYes)、処理をS401に戻す。CPU115は、CPU101がフラッシュメモリ114へアクセスしていないと判定した場合(S401でNo)、処理をS321に進め、ブートコード202の正当性を確認する。以降のS321〜S323の処理は、図3(c)を参照して説明した処理と同様であるため説明を省略する。
以上説明したように、図4の処理によってフラッシュメモリ114へのアクセスの競合を防止しながら冗長性確認処理を実行することができる。
<その他の実施形態>
CPU115は、図3(b)のS313の処理を待機させ、先にS314でブートコード201の代わりにブートコード202を読み出して動作を開始し、起動処理が終了した後に、S313の処理を実行してもよい。これによって、MFP100が起動したあとにブートコード201をブートコード202で上書きする処理を実行するため、システムが動作するまでの時間を短縮することができる。
CPU115は、図3(b)のS313の処理を待機させ、先にS314でブートコード201の代わりにブートコード202を読み出して動作を開始し、起動処理が終了した後に、S313の処理を実行してもよい。これによって、MFP100が起動したあとにブートコード201をブートコード202で上書きする処理を実行するため、システムが動作するまでの時間を短縮することができる。
また、本実施形態では、S313およびS323では、正常なブートコードで正常ではないブートコードを上書きするものとして説明を行った。しかしながら、一例では、S313およびS323で、正常なブートコードを複製し、新たに正常なブートコードを作成してもよい。これによって、不良セクタなどの修復不可能なエラーによってブートコードが正常ではなくなった場合であっても、複数の正常なブートコードを有しておくことができる。
上述の各実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
100:複合機、113:Embedded Controller、114:フラッシュメモリ
Claims (10)
- 情報処理装置であって、
複数のブートコードを格納する格納手段と、
前記格納手段に格納された前記複数のブートコードのいずれかが正常であるか否かを判定する検証手段と、
前記複数のブートコードを更新する更新手段と、
を備え、
前記検証手段は第1のブートコードが正常であるか否かを判定し、
前記検証手段が前記第1のブートコードは正常であると判定した場合に、制御手段が前記第1のブートコードを実行させ、前記検証手段は第2のブートコードが正常であるか否かを判定することを特徴とする情報処理装置。 - 前記検証手段が前記第1のブートコードは正常ではないと判定した場合に、前記検証手段は前記第2のブートコードが正常であるか否かを判定し、
前記検証手段が前記第2のブートコードは正常であると判定した場合に、前記更新手段は前記第2のブートコードで前記第1のブートコードを上書きする更新処理を実行することを特徴とする請求項1に記載の情報処理装置。 - 前記検証手段が前記第2のブートコードは正常ではないと判定した場合に、前記更新手段は前記第1のブートコードで前記第2のブートコードを上書きする更新処理を実行することを特徴とする請求項1に記載の情報処理装置。
- 前記更新手段が前記更新処理を実行したあとに、前記制御手段が前記第1のブートコードを実行させることを特徴とする請求項2に記載の情報処理装置。
- 前記制御手段が前記第2のブートコードを実行させた後に、前記更新手段が前記更新処理を実行することを特徴とする請求項2に記載の情報処理装置。
- 前記格納手段はアクセス権を設定可能であり、前記検証手段および前記更新手段のいずれかは、前記アクセス権を取得してから処理を実行することを特徴とする請求項1ないし5のいずれか1項に記載の情報処理装置。
- 前記検証手段が前記複数のブートコードのいずれもが正常ではないと判定した場合に、起動処理の失敗を通知する通知手段をさらに備えることを特徴とする請求項1ないし6のいずれか1項に記載の情報処理装置。
- 前記格納手段は、1または複数の不揮発性メモリを含むことを特徴とする請求項1ないし7のいずれか1項に記載の情報処理装置。
- 複数のブートコードを格納する第1の格納部を備える情報処理装置の制御方法であって、
前記第1の格納部に格納された第1のブートコードが正常であるか否かを判定する第1の判定工程と、
前記第1の判定工程において、前記第1のブートコードが正常であると判定した場合に、前記第1のブートコードを実行させた後に、第2のブートコードが正常であるか否かを判定する第2の判定工程と、
を有することを特徴とする制御方法。 - 請求項1乃至8の何れか一項に記載の情報処理装置としてコンピュータを動作させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019030795A JP2020135645A (ja) | 2019-02-22 | 2019-02-22 | 情報処理装置、その制御方法およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019030795A JP2020135645A (ja) | 2019-02-22 | 2019-02-22 | 情報処理装置、その制御方法およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2020135645A true JP2020135645A (ja) | 2020-08-31 |
Family
ID=72263306
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019030795A Pending JP2020135645A (ja) | 2019-02-22 | 2019-02-22 | 情報処理装置、その制御方法およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2020135645A (ja) |
-
2019
- 2019-02-22 JP JP2019030795A patent/JP2020135645A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102347703B1 (ko) | 정보 처리 장치, 그 제어 방법 및 저장 매체 | |
US10225426B2 (en) | Image forming apparatus having firmware update function, method of controlling the same, program for executing the method, and storage medium | |
EP2989579B1 (en) | Redundant system boot code in a secondary non-volatile memory | |
JP6054908B2 (ja) | 変数セットを修復する方法、コンピュータ・プログラムおよびコンピュータ | |
JP2020160747A (ja) | 情報処理装置、その制御方法、及びプログラム | |
KR20140068867A (ko) | 부팅 프로세스 동안 구성요소들을 인증하기 위한 시스템 및 방법 | |
JP6494373B2 (ja) | 情報処理装置、情報処理装置の制御方法、およびコンピュータプログラム | |
JP4947239B2 (ja) | 構成変更の検証機能を有した情報処理装置及びその制御方法 | |
JP7393226B2 (ja) | 情報処理装置とその起動方法 | |
JP7152920B2 (ja) | 情報処理装置とその制御方法、及びプログラム | |
JP7321795B2 (ja) | 情報処理装置、情報処理方法およびプログラム | |
JP7374780B2 (ja) | 情報処理装置および情報処理装置の制御方法 | |
JP2020135645A (ja) | 情報処理装置、その制御方法およびプログラム | |
KR102467636B1 (ko) | 정보 처리장치, 정보 처리장치의 제어방법, 및 기억매체 | |
EP3654183B1 (en) | Information processing apparatus and method of controlling information processing apparatus | |
JP6706278B2 (ja) | 情報処理装置、及び情報処理方法 | |
JP2020154601A (ja) | 情報処理装置とその制御方法、及びプログラム | |
US11928217B2 (en) | Information processing apparatus, control method of information processing apparatus, and storage medium | |
JP2019200660A (ja) | 情報処理装置、情報処理装置の制御方法、及びプログラム | |
JP7500400B2 (ja) | 情報処理装置、情報処理装置の制御方法及びプログラム | |
JP7011697B1 (ja) | 情報処理装置および情報処理方法 | |
JP6918994B2 (ja) | 情報処理装置および情報処理方法 | |
JP2022126549A (ja) | 情報処理装置 | |
JP2022182837A (ja) | 情報処理装置、及びその制御方法 | |
JP2023032874A (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 |