JP2020053002A - 情報処理装置とその制御方法、及びプログラム - Google Patents

情報処理装置とその制御方法、及びプログラム Download PDF

Info

Publication number
JP2020053002A
JP2020053002A JP2019027655A JP2019027655A JP2020053002A JP 2020053002 A JP2020053002 A JP 2020053002A JP 2019027655 A JP2019027655 A JP 2019027655A JP 2019027655 A JP2019027655 A JP 2019027655A JP 2020053002 A JP2020053002 A JP 2020053002A
Authority
JP
Japan
Prior art keywords
firmware
information processing
processing apparatus
program
update
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
Application number
JP2019027655A
Other languages
English (en)
Inventor
曜子 徳元
Yoko Tokumoto
曜子 徳元
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Publication of JP2020053002A publication Critical patent/JP2020053002A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Facsimiles In General (AREA)

Abstract

【課題】安全性が確認されていない通常ファームによる、一時展開されているアップデート用ファームウェアへのアップデートを防止する。【解決手段】複数のファームウェアを含む情報処理装置であって、第1ファームウェアにより、ダウンロードしたファームウェアを一時展開して記憶し、その記憶されている一時展開されたファームウェアを使用して前記第1ファームウェアを更新するために第2ファームウェアを起動する。第2ファームウェアの起動中に、前記第2ファームウェアの改ざんを検知し、第2ファームウェアの改ざんを検知しない場合、前記第1ファームウェアの改ざんを検知し、第1ファームウェアの改ざんを検知しない場合に、記憶されている前記一時展開されたファームウェアを使用して前記第1ファームウェアを更新する。【選択図】図5

Description

本発明は、情報処理装置とその制御方法、及びプログラムに関する。
デジタル複合機のファームウェアは、不具合の修正や機能追加のために、市場にリリースされた後、ユーザ先でもしばしばアップデートされる。デジタル複合機のファームウェアのアップデートは、顧客にとっては機器のダウンタイムとなるので、できるだけアップデート時間を短縮してダウンタイムを削減することが望まれている。そのために、通常、起動中にバックグラウンドで予めアップデートに必要なファームウェアをダウンロードして、一時展開しておき、再起動時に、その一時展開した新ファームウェアに差し替えて起動する方法が考えられている。これにより、最小限のダウンタイムでファームウェアを更新することができる。また、ダウンタイムとなるファームウェアの更新を、ユーザがデジタル複合機を使用しない時間帯(例えば、深夜)等に設定することも実施されている。
一方、このようなファームウェアを配信する側では、改ざんされて不正にアップデートされないように、配信するファームウェアの署名暗号化を行って配信している。従って、デジタル複合機のファームウェアのアップデートに際しては、起動時にバックグラウンドでダウンロードして一時展開する際に、ダウンロード後に改ざんされていないことをチェックした後、復号化して一時展開を行う。従って、事前にバックグラウンドでダウンロードして一時展開を実施する場合で、ファームウェアの更新時刻を別途設定した場合は、その設定された時刻まで、復号化された展開済ファームウェアがデバイス内に置かれることになる。従って、この一時展開後から、ファームウェアの更新時刻までの間に、悪意を持ってデジタル複合機にアクセスしたり、HDD等の記憶装置を取り換えられたりすると、ファームウェアのチェックなしで、不正なファームウェアにアップデートされるおそれがある。そのため特許文献1では、ファームウェアを一時展開した後に、その一時展開した領域のハッシュ値を取得する。そして、アップデートする前に、その一時展開した領域のハッシュ値を再度計算して、以前のハッシュ値と比較することで改ざんを検知し、不正なアップデートを防止する方法が提案されている。
一方、ファームウェアのアップデートの場面に限らず、ソフトウェアの脆弱性をついて、ソフトウェアを改ざんし、コンピュータを悪用する攻撃が問題となっている。そういった攻撃対策として、例えば特許文献2には、耐タンパーモジュールを用いてプログラムのハッシュ値を計算して保存しておき、起動するたびにプログラムのハッシュ値を再計算して検証することで改ざんを検知する方法が提案されている。
また、特別なハードウェアを必要とする耐タンパーモジュールを使用せず、起動時に順次プログラムを起動していく際に、次のプログラムの正解値を保持しておき、正解値が一致するかどうかで、各プログラムの改ざん検知を行う方法も考えられる。このような順次プログラムを起動する際に各プログラムの改ざんを検知する方法では、基本的にはそのときに起動するプログラムだけが、改ざん検知を行って起動される。以下、説明の簡略化のために、このような起動時の改ざん検知の仕組みをセキュアブートと呼ぶ。このセキュアブートの仕組みは、近年のセキュリティ機能の需要の高まりからデジタル複合機のファームウェアのアップデートにも適用されつつある。
デジタル複合機のファームウェアのアップデートでは、通常のファームウェアを更新するためのアップデート用のファームウェアが存在し、そのアップデート用ファームウェアによってアップデート処理を実行する。以下、説明の簡略化のために、アップデート用ファームをsafeファーム、通常ファームはstdファームと記載する。stdファームとsafeファームの起動を切り替える際には再起動を行うので、前述のセキュアブートが適用されている場合、それぞれのファームウェアの起動時にセキュアブートの処理が行われることになる。
特開2015−132923号公報 特開2008−244992号公報
デジタル複合機のバックグラウンドアップデートでは、stdファームによる通常起動中に、バックグラウンドで予めアップデートに必要なファームウェアをダウンロードして一時展開しておく。その後、アップデートに設定された時刻に達したときに、再起動してセキュアブートによるsafeファームの起動を行い、一時展開した新ファームウェアを使用してアップデートする。このとき、事前に新ファームウェアの一時展開を実施したstdファームが、前回の起動のときのセキュアブートによる改ざん検知処理以降に、侵入されてメモリの改ざんが行われたり、破壊が行われたりしたかどうかのチェックは実施していない。よって、ファームウェアをアップデートするタイミングでは、stdファームの安全性は確認されていない。従って、安全性が確認されていないstdファームによって、一時展開されているファームウェアによるアップデートが実行されることになる。
本発明の目的は、上記従来技術の問題点の少なくとも一つを解決することにある。
本発明の目的は、一時展開されているファームウェアのアップデートの際に、その一時展開を実施したファームウェアの改ざんを検知することにより、安全性が確認されていないファームウェアによるアップデートを防止することにある。
上記目的を達成するために本発明の一態様に係る情報処理装置は以下のような構成を備える。即ち、
複数のファームウェアを含む情報処理装置であって、
第1ファームウェアにより、ダウンロードしたファームウェアを一時展開して記憶する記憶手段と、
前記記憶手段に記憶されている一時展開されたファームウェアを使用して前記第1ファームウェアを更新するために第2ファームウェアを起動する起動手段と、
前記第2ファームウェアの起動中に、前記第2ファームウェアの改ざんを検知する第1検知手段と、
前記第1検知手段が前記第2ファームウェアの改ざんを検知しない場合、前記第1ファームウェアの改ざんを検知する第2検知手段と、
前記第2検知手段が前記第1ファームウェアの改ざんを検知しない場合に、前記記憶手段に記憶されている前記一時展開されたファームウェアを使用して前記第1ファームウェアを更新する第1更新手段と、を有することを特徴とする。
本発明によれば、一時展開されているファームウェアのアップデートの際に、その一時展開を実施したファームウェアの改ざんを検知することにより、改ざんされた可能性のあるプログラムによるアップデートを防止できるという効果がある。
本発明のその他の特徴及び利点は、添付図面を参照とした以下の説明により明らかになるであろう。なお、添付図面においては、同じ若しくは同様の構成には、同じ参照番号を付す。
添付図面は明細書に含まれ、その一部を構成し、本発明の実施形態を示し、その記述と共に本発明の原理を説明するために用いられる。
実施形態に係る情報処理装置のハードウェア構成を説明するブロック図。 実施形態に係る情報処理装置が有するファームウェアモジュールの構成を説明するブロック図。 実施形態に係る情報処理装置で実行される、一般的なバックグラウンドでのアップデート処理を説明するフローチャート。 実施形態に係る情報処理装置100によるセキュアブートの処理を説明するフローチャート。 本発明の実施形態における、セキュアブート設定時のバックグラウンドアップデートのフローチャートである。 実施形態に係るエラーコードの表示例を示す図。 本発明の他の実施形態に係る情報処理装置におけるセキュアブート設定時のバックグラウンドアップデート処理を説明するフローチャート。
以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。尚、実施形態に係る情報処理装置として複合機(デジタル複合機/MFP/Multi Function Peripheral)を例に説明する。しかしながら適用範囲は複合機に限定はせず、情報処理装置であればよい。
図1は、実施形態に係る情報処理装置100のハードウェア構成を説明するブロック図である。
CPU110を含む制御部150は、情報処理装置100全体の動作を制御する。CPU110は、フラッシュメモリ119に記憶された制御プログラムをRAM112に展開し、その展開したプログラムを実行することにより読取制御や印刷制御、ファームアップデート制御などの各種制御処理を実行する。またフラッシュメモリ119は、ワークエリア、またユーザデータ領域としても用いられる。ROM191はリードオンリーメモリで、情報処理装置100のBIOS(Basic Input Output System)、固定パラメータ等を格納している。RAM112は、CPU110の主メモリ、ワークエリア等の一時記憶領域として用いられる。SRAM113は不揮発メモリであり、情報処理装置100で必要となる設定値や画像調整値などを記憶しており、電源を再投入してもデータが消えないようになっている。HDD118は、ファームアップデート用のファイル格納領域を備え、画像データやユーザデータ等も記憶する。
操作部I/F115は、操作部120と制御部150とを接続する。操作部120には、タッチパネル機能を有する表示部やキーボードなどが備えられている。プリンタI/F116は、プリンタエンジン121と制御部150とを接続する。プリンタエンジン121内に含む図示しないROMにはプリンタエンジンファーム131が格納されている。プリンタエンジン121で印刷すべき画像データはプリンタI/F116を介して制御部150からプリンタエンジン121に転送され、プリンタエンジン121において記録媒体上に印刷される。スキャナI/F117は、スキャナエンジン122と制御部150とを接続する。スキャナエンジン122内に含む図示しないROMにはスキャナエンジンファーム132が格納されている。スキャナエンジン122は、原稿上の画像を読み取って画像データを生成し、スキャナI/F117を介して制御部150に入力する。ネットワークI/FカードNIC114は、制御部150(情報処理装置100)をLAN130に接続する。NIC114は、LAN130上の外部装置(例えば、外部サーバ150やPC160)に画像データや情報を送信したり、逆にアップデートファームや各種情報を受信したりする。外部サーバ150はインターネット上に存在するケースもある。PC160上に存在する図示しないWebブラウザから情報処理装置100の操作を行うこともある。
集積回路111は、ある一連の関連のある複数の集積回路のことを示す。RTC170はRealTimeClock(リアルタイムクロック)であり、計時専用のチップである。外部電源140が接続されていなくとも、図示しない内蔵電池から電源供給を受けるため、スリープ時も動作することができる。これにより、集積回路111に対して一部の電源供給が行われる状態においては、スリープからの復帰が実現できる。逆に、集積回路111に電源供給がまったく行われないシャットダウン状態の場合には、RTC170は動作することができない。CPU181は、組み込み制御部180のソフトウェアプログラムを実行し、情報処理装置100の中で一部の制御を行う。RAM182はランダムアクセスメモリで、CPU181が情報処理装置100を制御する際に、プログラムや一時的なデータの格納などに使用される。LED190は必要に応じて点灯し、ソフトウェアやハードウェアの異常を外部に伝えるために利用される。
図2は、実施形態に係る情報処理装置100が有するファームウェアモジュールの構成を説明するブロック図である。
通信管理部201は、ネットワーク130に接続されるNIC114を制御して、ネットワーク130を介して外部とデータの送受信を行う。UI制御部202は、操作部I/F115を介して操作部120への入力を受け取り、入力に応じた処理や画面出力を行う。ブートプログラム203は、情報処理装置100の電源を入れると組み込み制御部180のCPU181で実行されるプログラムで、起動に関わる処理を行う他にBIOS205の改ざん検知を行うBIOS改ざん検知部204を有する。BIOS205は、ブートプログラム203の実行後にCPU110で実行されるプログラムで、起動に関わる処理を行う他にローダ207の改ざん検知を行うローダ改ざん検知部206を有する。
ローダ207は、BIOS303の処理が終わった後にCPU110で実行されるプログラムで、起動に関わる処理を行う他にカーネル213の改ざん検知を行うカーネル改ざん検知部208を有する。
stdパーティション209とsafeパーティション210はともに、フラッシュメモリ119内に構成されるパーティションである。stdパーティション209は、通常起動用ファームであるstdファーム211を含む。safeパーティション210は、アップデート起動用ファームであるsafeファーム212を含む。stdファーム211は、カーネル213と、通常起動用プログラム215を含んでいる。カーネル213は、ローダ207の処理が終わった後にCPU110で実行されるプログラムで、起動に関わる処理を行う他に、通常起動用プログラム215の改ざん検知を行うプログラム改ざん検知部214を有する。
通常起動用プログラム215は、CPU110で実行されるプログラムであり、情報処理装置100で各機能を提供する複数のプログラムを有している。これらプログラムは、例えばスキャナI/F117やプリンタI/F116を制御するプログラムや起動プログラムなどである。カーネル213によって通常起動用プログラム215の中から起動プログラムが呼び出されて起動処理を行う。また通常起動用プログラム215は、safeファームアップデート用プログラム(更新プログラム)216を含む。safeファームアップデート用プログラム216は、safeファーム212をアップデートする機能を備える。またstdファーム211は、ファームウェアのダウンロードを行うファームウェアダウンロード用プログラム220、バックグラウンドでのファームウェアの一時展開を行うバックグラウンドダウンロード用プログラム220アップデート用プログラム221も含む。
safeファーム212は、カーネルB217と、stdファームアップデート用プログラム219を有する。カーネルB217は、ローダ207の処理が終わった後にCPU110で実行されるプログラムで、起動に関わる処理を行う他に、stdファームアップデート用プログラム219の改ざん検知を行うプログラム改ざん検知部B218を有する。stdファームアップデート用プログラム219は、stdファーム211と、図1で説明したプリンタエンジンファーム131とスキャナエンジンファーム132をアップデートする機能を備える。情報処理装置100として、例えば図示しないフィニッシャなどのスキャナエンジンやプリンタエンジン以外の構成が接続された場合も同様になる。
情報処理装置100は起動モードを切り替えながらアップデートを実現するが、起動モードとは、stdファーム211での起動と、safeファーム212での起動を指す。またそれぞれ、起動モードの切り替えを行う機能を備え、ローダ207がSRAM113に保存される起動モードの情報に応じてstdファーム211とsafeファーム212の起動を行う。
HDD118には、ダウンロードしたファームウェアを一時的に配置するダウンロード領域222、ダウンロードしたファームウェアを一時的に展開する一時展開領域223がある。
次に本実施形態の前提となる、一般的なバックグラウンドでのアップデート処理の概要を図3のフローチャートを参照して説明する。
図3は、実施形態に係る情報処理装置で実行される、一般的なバックグラウンドでのアップデート処理を説明するフローチャートである。即ち、ここでは後述するプログラムの改ざんを検知するセキュアブートが設定されていない場合で説明する。このフローチャートで示す処理は、CPU110が、フラッシュメモリ119に記憶されているプログラムをRAM112に展開して実行することにより達成される。
stdパーティション209のstdファーム211が起動している通常起動状態で、CPU110はS301において、外部サーバ150もしくは操作部120からの指示により、ファームウェアのアップデート指示を受信する。このとき、CPU110がフラッシュメモリ119のstdファーム211に含まれるファームウェアダウンロード用プログラム220に対してアップデート指示を通知する。このアップデート指示時に応じてCPU110は、アップデート対象となる新ファームウェアのファームウェア情報を取得し、ファームウェアダウンロード用プログラム220を実行して、フラッシュメモリ119内のファームウェア情報格納領域に保存する。次にS302に進みCPU11は、操作部120に認証画面を表示する。そしてS303でCPU110は、その認証画面を介してユーザの認証が確認されるとS304に進み、そうでないときはこの処理を終了する。
S304でCPU110は、外部サーバ150から新しいファームウェアをHDD118のダウンロード領域222にバックグラウンドでダウンロードする。この新しいファームウェアとは、フラッシュメモリ119のstdパーティション209、safeパーティション210に格納される新しいバージョンの各プログラムである。尚、このとき、ユーザ認証の必要のないファームウェアの場合は、S302、S303はスキップしてよい。ここでダウンロードされたファームウェアは改ざん防止のために署名暗号化されている。よってダウンロード完了後、S305に進みCPU11は、バックグラウンドダウンロード用プログラム220とアップデート用プログラム221を実行し、ダウンロード領域222にダウンロードされた新ファームウェアを復号して一時展開領域223に一時展開する。ここで行うファームウェアの一時展開とは、最終的にフラッシュメモリ119に展開されるべきファームウェアの展開を予めHDD118上で行うことである。後に実施する情報処理装置100の再起動時に、予めHDD118の一時展開領域223に展開しておいた展開データをフラッシュメモリ119上の領域へコピーして差し替える。これにより、safeファーム212の起動中に復号化、展開、適用を行うアップデートに比べダウンタイムを短縮することができる。
次にS306に進みCPU110は、フラッシュメモリ119内の適用時刻(アップデート日時)情報の格納領域を参照し、ファームウェアの適用時刻の設定が行われていれば、S306において適用時刻に達したかどうかを判定する。この適用時刻の設定は、予め所定の時刻が設定されていてもよいし、ファームウェアのアップデートを受信した際に外部サーバ150から設定したり、ユーザが操作部120から設定してもよい。S306で適用時刻に達していた場合はS307に進みCPU110は、操作部120に認証画面を表示する。そしてS308でユーザの認証が確認されるとS309に進みCPU110は、safeファーム212による再起動を指示する。尚、ここでも、ユーザ認証の必要のないファームウェアの場合は、S307,S308はスキップしてよい。
S310でCPU110は、safeファーム212による再起動処理の実行中にstdファームアップデート用プログラム219によって、一時展開領域223に展開済の新ファームウェアのうち、stdパーティション209の新stdファームを、フラッシュメモリ119にコピーして旧ファームウェアと差し替える。続いてS311に進みCPU110は、そのコピーされた新しいstdパーティション209のstdファームによって通常起動する。次にS312に進みCPU110は、stdパーティション209の新stdファームが起動している状態で、バックグラウンドでsafeファームアップデート用プログラム216を起動する。これによりS313でCPU110は、safeファーム212を、バックグラウンドで新しいバージョンのsafeファームにアップデートする。stdパーティション209のstdファーム211の起動時は、safeパーティション210に格納されるsafeファーム212は使用されていないので、情報処理装置100の動作に影響を与えずにアップデートを実行することが可能である。safeファーム212のアップデートは、HDD118の一時展開領域223の展開済データのコピーと差し替えで実施してもよいし、ダウンロードされた新ファームウェアの復号化、展開、適用を実施してもよい。
このようにして、セキュアブートが設定されていない場合に、バックグラウンドでのアップデート処理を実行できる。尚、S301、S304において、外部サーバ150からファームウェアを取得する例を説明したが、新しいファームウェアの取得方法は他の方法であってもかまわない。例えば、USBメモリやPC160にファームウェアを格納し、デバイスに接続することでも同様の処理を実施することができる。
図4は、実施形態に係る情報処理装置100によるセキュアブートの処理を説明するフローチャートである。
このセキュアブートの方法は、ブートプログラム203、BIOS205、ローダ207、通常起動であればstdファーム211内のカーネル213と通常起動用プログラム215が、改ざん検知を行いながら起動する。アップデート用起動であればローダ207以降は、safeファーム212内のカーネルB317とstdファームアップデート用プログラム219が改ざん検知を行いながら起動する。ブートプログラム203にはBIOS署名検証用の公開鍵、BIOS205にはBIOS署名とローダ検証用公開鍵、ローダ207にはローダ署名とカーネル検証用公開鍵、カーネルB検証用公開鍵が含まれているものとする。またカーネル213には、カーネル署名と通常起動用プログラム検証用公開鍵、通常起動用プログラム215には、通常起動用プログラム署名が含まれているものとする。更にカーネルB317には、カーネルB署名とstdファームアップデート用プログラム検証用公開鍵が、stdファームアップデート用プログラム219には、stdファームアップデート用署名が含まれているものとする。これらの公開鍵と署名は、予め情報処理装置100の出荷前にプログラムに対して付与されているものとする。改ざん検知部204、206、208、214、218が各プログラムを検証し、問題がなければ次のプログラムを起動することで改ざん検知を行いながら情報処理装置100が起動される。以降では、ROM191にブートプログラム203とBIOS205、フラッシュメモリ119にローダ207とstdファーム211とsafeファーム212が保存されているものとして説明する。
情報処理装置100の電源がオンされるとCPU181は、ROM191からRAM182にブートプログラム203を読み込んで実行する。このときブートプログラム203に含まれるBIOS改ざん検知部204は、フラッシュメモリ119からBIOS205とローダ検証用公開鍵、BIOS署名をRAM182に読み込む。次にBIOS改ざん検知部204として機能し、S401でBIOS検証用公開鍵を用いてBIOS署名の検証を行う。ここで署名の検証に失敗した場合はS403に進み、CPU181はLED190を点灯して、エラーの発生を通知して、この処理を終了する。
一方、署名の検証に成功した場合はS402に進みCPU181は、CPU110に通電してブートプログラムの処理を終了する。これによりS402でCPU110は、ROM191からBIOS205とローダ検証用公開鍵をRAM112に読み込んでBIOS205を起動する。これ以降の処理は全てCPU110によって処理されるものとして説明する。
BIOS205は起動されると、各種初期化処理を行い、BIOS205に含まれるローダ改ざん検知部206がフラッシュメモリ119からローダ207とカーネル検証用公開鍵、ローダ署名をRAM112に読み込む。そしてS404に進みCPU110はローダ改ざん検知部206として機能し、ローダ検証用公開鍵を用いてローダ署名の検証を行い成功したか否か判定する。ここで署名の検証に失敗した場合はS410に進んでエラー表示を行って、この処理を終了する。
一方、ローダの署名の検証に成功した場合はS405に進み、CPU110はローダ改ざん検知部206としての処理を終了し、BIOS205がRAM112に読み込まれたローダ207を起動する。こうしてローダ207が起動されると、各種初期化処理を行い、SRAM113を参照して起動モード等のフラグの確認を行う。この実施形態では通常起動時の例で説明するため、ここではSRAM113ではstdファーム211を起動する起動モードが選択されるフラグが立っていることを前提とし、ローダ207はstdパーティション209に含まれるstdファーム211の起動を開始する。
そしてS406に進みCPU110は、ローダ207に含まれるカーネル改ざん検知部208として機能し、フラッシュメモリ119からstdファーム211のカーネル213と、通常起動用プログラム検証用公開鍵とカーネル署名をRAM112に読み込む。そしてカーネル改ざん検知部208は、そのカーネル検証用公開鍵を用いて、カーネル署名の検証を行い成功したか判定する。署名の検証に失敗した場合はS410に進むが、そうでないときはS407に進み、CPU110はカーネル改ざん検知部208としての処理を終了してS407に進む。S407でCPU110は、ローダ207を実行してRAM112に読み込まれたカーネル213を起動する。こうしてカーネル213が起動されると、各種初期化処理を行う。次にS408に進みCPU110は、カーネル213に含まれるプログラム改ざん検知部214として機能し、フラッシュメモリ119から通常起動用プログラム215と通常起動用プログラム署名をRAM112に読み込む。そしてプログラム改ざん検知部214は、通用起動用プログラム検証用公開鍵を用いて、通常起動用プログラム署名の検証を行い成功したか判定する。ここで署名の検証に失敗した場合はS410に進むが、そうでないときはCPU110は、プログラム改ざん検知部214としての処理を終了し、S409で通常起動用プログラム215を起動して、この処理を終了する。
一方、S404、S406、S408でそれぞれ、ローダ207、stdファーム211のカーネル213、または通常起動用プログラム215の署名の検証に失敗し、それらプログラムの改ざんが検知された場合はS410に進む。S410でCPU110は、それぞれローダ改ざん検知部206、カーネル改ざん検知部208、プログラム改ざん検知部214として機能し、操作部120に、例えば図6に示すエラーコードを表示して、この処理を終了する。
また実施形態では、情報処理装置100が通常起動を開始し改ざんを検知するケースを例としたが、アップデート用起動を開始して改ざんを検知した場合であっても同様に改ざんを検知することが可能である。具体的には、アップデート用起動の処理時は、S405において、SRAM113にsafeファーム212を起動する起動モードを選択するフラグが立っている。ローダ207は、そのフラグを確認した後、safeパーティション210に含まれるsafeファーム212の起動を開始する。stdファーム211の起動と同じように、safeファーム212内のカーネルB217、stdファームアップデート用プログラム219の起動を順次進め、改ざんがあった場合は、操作部120に図6のエラーコードを表示して処理を終了する。
図6は、実施形態に係るエラーコードの表示例を示す図である。
ユーザは、このエラーコードを担当サービスに連絡することにより、起動時に、どのようなエラー(プログラムの改ざん)が発生しているか確認することができる。
セキュアブートの場合は、基本的にそのとき起動するプログラムのみ改ざん検知を行うため、通常起動時はstdファーム211、アップデート用起動の場合はsafeファーム212のみの改ざん検知を行う。従って、通常起動時にsafeファーム212の改ざん検知は行われず、また、アップデート用起動の場合はstdファーム211の改ざん検知は行われない。
図5は、実施形態に係る情報処理装置100におけるセキュアブート設定時のバックグラウンドアップデート処理を説明するフローチャートである。このフローチャートで示す処理は、CPU110が、フラッシュメモリ119に記憶されているプログラムをRAM112に展開して実行することにより達成される。尚、前述の図3と共通する処理(S301〜S313)は同じ参照番号を付して、その説明を省略する。
S305でCPU110が、stdファーム211内のバックグラウンドアップデート用プログラム221により新ファームウェアをRAM112に一時展開した後、S501でバックグラウンドアップデートを通知するフラグをSRAM113にセットする。
そしてS309で再起動を開始するとS502に進む。セキュアブート設定時は、図4のセキュアブートの処理に従って、順次、起動するプログラムの改ざん検知を実施しながら再起動する。S502でCPU110は、図4のS401〜S405のセキュアブートの処理に従ってBIOS205及びローダ207の改ざん検知を実施しながら再起動する。この再起動中に改ざんが検知されるとS502からS508に進みCPU110は、操作部120に図6のエラーコードを表示して、この処理を終了する。
BIOS205及びローダ207の改ざんが検知されなければS503に進み、ローダ207はSRAM113を参照して起動モード等のフラグの確認を行う。バックグラウンドアップデートにおいて、新ファームウェア適用処理の再起動時には、バックグラウンドダウンロード用プログラム220アップデート用プログラム221によって設定されたsafeファーム212を起動する起動モードが選択されるフラグが立っているものとする。ローダ207は、そのフラグを確認後、safeパーティション210に含まれるsafeファーム212の起動を開始する。こうしてS503でCPU110は、safeファーム212内のカーネルB317、stdファームアップデート用プログラム219の改ざん検知を実施しながら順次起動を進める。ここまでの起動で改ざんが検知されるとS503からS508に進みCPU110は、操作部120に図6のエラーコードを表示して、この処理を終了する。
S503でsafeファーム212の改ざんが検知されなければS504に進みCPU110は、バックグラウンドアップデートのフラグがSRAM113にセットされているかどうか判定する。ここでフラグが立っていなければ、通常起動中に一時展開された新ファームウェアのデータは存在しないものと判断する。そして、その判断に基づいてS507でCPU110は、safeファーム212内のstdファームアップデート用プログラム219を実行して、ダウンロード領域222に格納されている新stdファームを復号化し、stdパーティション209に直接展開してstdファームをアップデートしてS505に進む。
一方、S504でバックグラウンドアップデートのフラグが立っていた場合はS505に進みCPU110は、アップデート前の旧stdファーム211内のカーネル213と通常起動用プログラム215の改ざん検知を実施する。ここでstdファーム211が改ざんされていると判定すると、通常起動中に行われたS305での新ファームウェアのバックグラウンドでの復号化と一時展開処理が、不正なプログラムで実施された可能性がある。そのためS506に進みCPU110は、一時展開領域223に展開済の新stdファームのデータを破棄してS507に進む。S507でCPU110は、改ざん検知で問題のなかったsafeファーム212のstdファームアップデート用プログラム219によって、ダウンロード領域222に格納されている新stdファームを復号化し、stdパーティション209に直接展開してアップデートする処理を実行してS311に進む。
またS505でCPU110は、stdファーム211が改ざんされていないと判定すると、一時展開領域223に展開済の新stdファームのデータは問題ないものとしてS310に進み、図3のバックグラウンドアップデートの処理を実施する。尚、セキュアブート設定時は、S311で新stdファームによる起動を行う際にも改ざん検知の処理が行われるが、ここではその説明を省略する。
以上説明したように実施形態によれば、事前にバックグラウンドで新ファームの一時展開を実施した旧stdファーム211の改ざん検知を、一時展開済の新stdファームのデータの適用(アップデート)時に実施する。これにより、改ざんされた可能性のある不正なプログラムで一時展開されたデータによるアップデートを防止することできる。
上述の実施形態では、セキュアブート設定時のバックグラウンドアップデートにおいて、図5のS506のstdファーム211の改ざん検知の処理で、旧stdファーム211に含まれる全てのプログラムの改ざん検知処理を実施していた。この改ざん検知処理は、改ざん検知対象となるファームウェアが大きくなるほど処理に時間を要するので、時間短縮のために、チェックが必要なプログラムに限定して改ざん検知処理を実施するようにしても良い。
例えば、バックグラウンドアップデートの場合、S506で、新ファームウェアの一時展開を行うファームウェアダウンロード用プログラム221、バックグラウンドアップデート用プログラム221に限定して改ざん検知処理を行うことで、改ざん検知にかかる時間を短縮することが可能になる。
また、改ざん検知処理に要する時間を短縮する方法として、事前にバックグラウンドで新ファームの一時展開を実施した旧stdファーム211の改ざん検知処理を、一時展開済の新stdファームのデータの適用(アップデート)直前に、バックグラウンドで実施することも考えられる。
図7は、本発明の他の実施形態に係る情報処理装置100におけるセキュアブート設定時のバックグラウンドアップデート処理を説明するフローチャートである。ここでは、新ファームの一時展開を実施した旧stdファーム211の改ざん検知処理をバックグラウンドで実施する場合の処理を示している。このフローチャートで示す処理は、CPU110が、フラッシュメモリ119に記憶されているプログラムをRAM112に展開して実行することにより達成される。尚、図7は、前述の図5のS501からS308の間で実行される処理として説明する。従って、前述の図5と共通する処理は省略して示している。尚、このフローチャートで示す処理は、CPU110が、フラッシュメモリ119に記憶されているプログラムをRAM112に展開して実行することにより達成される。
S306でCPU110は、適用時刻に達したかどうかを判定し、適用時刻に達していると判定した場合はS701に進む。S701でCPU110は、バックグラウンドでアップデート前の旧stdファーム211内のカーネル213と通常起動用プログラム215の改ざん検知を実施する。ここで旧stdファーム211が改ざんされていると判定すると、通常起動中に行われたS305における新ファームウェアのバックグラウンドでの復号化と一時展開処理が、不正なプログラムで実施された可能性がある。そのためS701からS702に進みCPU110は、S501でバックグラウンドアップデートを通知するフラグをSRAM113にセットしていたフラグを落とす(オフにする)。そしてS703に進みCPU110は、一時展開領域223に展開済の新stdファームのデータを破棄してS308に進む。
その後S309で再起動後した後、S504でバックグラウンドアップデートのフラグが立っていなければS507に進みCPU110は、改ざん検知で問題の無かったsafeファーム212のstdファームアップデート用プログラム219によって、ダウンロード領域222に格納されている新stdファームを復号化し、stdパーティション209に直接展開してアップデートする処理を実行する。
以上説明したように他の実施形態によれば、バックグラウンドで旧stdファーム211の改ざん検知処理を実施することで、S309で再起動を指示してからS311においてアップデートされた新stdファームによって起動するまでの、情報処理装置100のアップデート適用によるダウンタイムを短縮できる。
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本発明は上記実施形態に制限されるものではなく、本発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、本発明の範囲を公にするために、以下の請求項を添付する。
100…情報処理装置、110…CPU、112…RAM、119…フラッシュメモリ、120…操作部、190…LED、203…ブートプログラム、205…BIOS,207…ローダ、213…カーネル

Claims (11)

  1. 複数のファームウェアを含む情報処理装置であって、
    第1ファームウェアにより、ダウンロードしたファームウェアを一時展開して記憶する記憶手段と、
    前記記憶手段に記憶されている一時展開されたファームウェアを使用して前記第1ファームウェアを更新するために第2ファームウェアを起動する起動手段と、
    前記第2ファームウェアの起動中に、前記第2ファームウェアの改ざんを検知する第1検知手段と、
    前記第1検知手段が前記第2ファームウェアの改ざんを検知しない場合、前記第1ファームウェアの改ざんを検知する第2検知手段と、
    前記第2検知手段が前記第1ファームウェアの改ざんを検知しない場合に、前記記憶手段に記憶されている前記一時展開されたファームウェアを使用して前記第1ファームウェアを更新する第1更新手段と、
    を有することを特徴とする情報処理装置。
  2. 前記第2検知手段により前記第1ファームウェアの改ざんが検知されると、前記記憶手段に記憶された前記一時展開されたファームウェアを破棄し、前記第2ファームウェアに含まれる前記第1ファームウェアの更新プログラムに従って前記第1ファームウェアを更新する第2更新手段を、更に有することを特徴とする請求項1に記載の情報処理装置。
  3. 前記ファームウェアのダウンロードは、前記情報処理装置がバックグラウンドで実行することを特徴とする請求項1又は2に記載の情報処理装置。
  4. 前記第1検知手段及び前記第2検知手段による検知は、BIOS(Basic Input Output System)の改ざんの検知、及びローダの改ざんを検知を含むことを特徴とする請求項1乃至3のいずれか1項に記載の情報処理装置。
  5. 前記記憶手段に記憶されている一時展開されたファームウェアを使用して前記第1ファームウェアを更新するための日時を設定する設定手段を、更に有し、
    前記起動手段は前記設定手段により設定された前記日時になると前記第2ファームウェアを起動することを特徴とする請求項1乃至4のいずれか1項に記載の情報処理装置。
  6. 前記第1更新手段或いは前記第2更新手段により前記第1ファームウェアが更新された後、前記情報処理装置は、前記第1ファームウェアで起動した後、バックグラウンドで前記第2ファームウェアを更新するプログラムを起動して前記第2ファームウェアを更新することを特徴とする請求項2に記載の情報処理装置。
  7. 前記ファームウェアのダウンロードは、外部から前記ファームウェアを受信することにより行われることを特徴とする請求項1乃至6のいずれか1項に記載の情報処理装置。
  8. 前記ファームウェアのダウンロードは、前記情報処理装置に接続されたメモリから前記ファームウェアを受信することにより行われることを特徴とする請求項1乃至6のいずれか1項に記載の情報処理装置。
  9. 前記第2検知手段は、前記第1ファームウェアを起動した後、バックグラウンドで前記第1ファームウェアの改ざんを検知することを特徴とする請求項1に記載の情報処理装置。
  10. 複数のファームウェアを含む情報処理装置を制御する制御方法であって、
    第1ファームウェアにより、ダウンロードしたファームウェアを一時展開して記憶する記憶工程と、
    前記記憶工程で記憶されている一時展開されたファームウェアを使用して前記第1ファームウェアを更新するために第2ファームウェアを起動する起動工程と、
    前記第2ファームウェアの起動中に、前記第2ファームウェアの改ざんを検知する第1検知工程と、
    前記第1検知工程が前記第2ファームウェアの改ざんを検知しない場合、前記第1ファームウェアの改ざんを検知する第2検知工程と、
    前記第2検知工程が前記第1ファームウェアの改ざんを検知しない場合に、前記記憶工程で記憶されている前記一時展開されたファームウェアを使用して前記第1ファームウェアを更新する第1更新工程と、
    を有することを特徴とする制御方法。
  11. コンピュータを、請求項1乃至9のいずれか1項に記載の情報処理装置の各手段として機能させるためのプログラム。
JP2019027655A 2018-09-20 2019-02-19 情報処理装置とその制御方法、及びプログラム Pending JP2020053002A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2018176152 2018-09-20
JP2018176152 2018-09-20

Publications (1)

Publication Number Publication Date
JP2020053002A true JP2020053002A (ja) 2020-04-02

Family

ID=69997451

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019027655A Pending JP2020053002A (ja) 2018-09-20 2019-02-19 情報処理装置とその制御方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP2020053002A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114626067A (zh) * 2021-06-25 2022-06-14 江苏航天龙梦信息技术有限公司 一种临时固件管控方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114626067A (zh) * 2021-06-25 2022-06-14 江苏航天龙梦信息技术有限公司 一种临时固件管控方法

Similar Documents

Publication Publication Date Title
US10225426B2 (en) Image forming apparatus having firmware update function, method of controlling the same, program for executing the method, and storage medium
EP2741228B1 (en) System on chip to perform a secure boot, an image forming apparatus using the same, and method thereof
JP6305069B2 (ja) 画像形成装置及びその制御方法、並びにプログラム
JP2015052996A (ja) 画像形成装置、及び画像形成装置の制御方法
JP2021002081A (ja) 情報処理装置、その制御方法、及びプログラム
JP2019212114A (ja) 情報処理装置、その制御方法およびプログラム
CN111125686B (zh) 信息处理装置及其控制方法
JP2020095470A (ja) 情報処理装置及びその制御方法
JP2022135443A (ja) 情報処理装置、情報処理方法及びプログラム
JP2020053002A (ja) 情報処理装置とその制御方法、及びプログラム
JP2020082441A (ja) 画像形成装置、その制御方法、及びプログラム
JP5961059B2 (ja) 情報処理装置およびその起動方法
JP7182966B2 (ja) 情報処理装置、情報処理装置の起動方法、及びプログラム
JP7263101B2 (ja) 情報処理装置、データ検証方法
JP2020154601A (ja) 情報処理装置とその制御方法、及びプログラム
JP2021140601A (ja) 情報処理装置、その制御方法、及びプログラム
JP2021114173A (ja) 情報処理装置、情報処理装置の処理方法およびプログラム
JP2020052597A (ja) 情報処理装置、情報処理装置の制御方法、及び、プログラム
US11907049B2 (en) Information processing apparatus, method of controlling the same, and storage medium with features for updating code and data areas of non-volatile memory
JP2023124089A (ja) 情報処理装置
US11971991B2 (en) Information processing apparatus, control method for controlling the same and storage medium
JP2018097888A (ja) 画像形成装置、及び画像形成装置の制御方法
US20230132214A1 (en) Information processing apparatus and method of the same
JP2023064046A (ja) 情報処理装置、及びその起動方法
JP7176379B2 (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