IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ キヤノン株式会社の特許一覧

特許7500400情報処理装置、情報処理装置の制御方法及びプログラム
<>
  • 特許-情報処理装置、情報処理装置の制御方法及びプログラム 図1
  • 特許-情報処理装置、情報処理装置の制御方法及びプログラム 図2
  • 特許-情報処理装置、情報処理装置の制御方法及びプログラム 図3
  • 特許-情報処理装置、情報処理装置の制御方法及びプログラム 図4
  • 特許-情報処理装置、情報処理装置の制御方法及びプログラム 図5
  • 特許-情報処理装置、情報処理装置の制御方法及びプログラム 図6
  • 特許-情報処理装置、情報処理装置の制御方法及びプログラム 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-07
(45)【発行日】2024-06-17
(54)【発明の名称】情報処理装置、情報処理装置の制御方法及びプログラム
(51)【国際特許分類】
   G06F 21/57 20130101AFI20240610BHJP
【FI】
G06F21/57 350
G06F21/57 320
【請求項の数】 12
(21)【出願番号】P 2020191893
(22)【出願日】2020-11-18
(65)【公開番号】P2022080687
(43)【公開日】2022-05-30
【審査請求日】2023-11-09
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】江口 貴巳
(72)【発明者】
【氏名】田頭 信博
(72)【発明者】
【氏名】河津 鮎太
【審査官】辻 勇貴
(56)【参考文献】
【文献】特開2020-160747(JP,A)
【文献】特開2010-102579(JP,A)
【文献】特開2020-126576(JP,A)
【文献】特開2011-253408(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/57
IEEE Xplore
(57)【特許請求の範囲】
【請求項1】
第1のブートコードを保持する第1の保存媒体と、前記第1のブートコードの復旧に用いる第2のブートコードを保持する第2の保存媒体とを備える情報処理装置であって、
前記第1のブートコードの検証範囲を指定する第1の検証範囲設定領域および前記第2のブートコードの検証範囲を指定する第2の検証範囲設定領域の改ざんの有無を検証する第1の検証手段と、
前記第1の検証範囲設定領域が改ざんされていない場合、前記第1のブートコードの改ざんの有無を検証する第2の検証手段と、
前記第1のブートコードが改ざんされており且つ前記第2の検証範囲設定領域が改ざんされていない場合、前記第2のブートコードの改ざんの有無を検証する第3の検証手段と、
前記第2のブートコードが改ざんされていない場合、前記第2のブートコードを用いて前記第1のブートコードを復旧する復旧手段と、を備え、
前記第1の検証範囲設定領域および第2の検証範囲設定領域は、前記情報処理装置の起動後に書き換わらない領域であることを特徴とする情報処理装置。
【請求項2】
前記第3の検証手段は、さらに、前記第1の検証範囲設定領域が改ざんされている場合、前記第2のブートコードの改ざんの有無を検証し、
前記復旧手段は、前記第2のブートコードが改ざんされていない場合、前記第2のブートコードを用いて前記第1のブートコードを復旧することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記第1のブートコードを用いて前記第2のブートコードを更新する更新手段をさらに備え、
前記更新手段は、前記第1の検証範囲設定領域が改ざんされておらず、前記第1のブートコードが改ざんされておらず、且つ前記第2の検証範囲設定領域が改ざんされている場合、更新を行うことを特徴とする請求項1又は2に記載の情報処理装置。
【請求項4】
前記第1の検証範囲設定領域に含まれる前記第1のブートコードのバージョン情報と、前記第2の検証範囲設定領域に含まれる前記第2のブートコードのバージョン情報とを比較する比較手段と、
前記第1のブートコードのバージョン情報と前記第2のブートコードのバージョン情報とが異なる場合、前記第1のブートコードを用いて前記第2のブートコードを更新する更新手段と、をさらに備え、
前記比較手段は、前記第1の検証範囲設定領域が改ざんされておらず、前記第1のブートコードが改ざんされておらず、且つ前記第2の検証範囲設定領域が改ざんされていない場合、比較を行うことを特徴とする請求項1又は2に記載の情報処理装置。
【請求項5】
前記第1の検証範囲設定領域および前記第2の検証範囲設定領域の両方が改ざんされている場合、前記情報処理装置の起動処理を中止する中止手段をさらに備えることを特徴とする請求項1乃至4の何れか1項に記載の情報処理装置。
【請求項6】
前記復旧手段により前記第2のブートコードを用いて前記第1のブートコードを復旧する処理を実行した後、前記第1のブートコードの改ざんの有無を検証する第4の検証手段と、
前記第4の検証手段により前記第1のブートコードが改ざんされていることが検証された場合、前記情報処理装置の起動処理を中止する中止手段と、
をさらに備えることを特徴とする請求項1乃至4の何れか1項に記載の情報処理装置。
【請求項7】
前記第2の検証手段は、前記第1の保存媒体に記憶された第1の署名値を使用して前記第1のブートコードの改ざんの有無を検証し、
前記第3の検証手段は、前記第2の保存媒体に記憶された第2の署名値を使用して前記第2のブートコードの改ざんの有無を検証することを特徴とする請求項1乃至6の何れか1項に記載の情報処理装置。
【請求項8】
前記第1のブートコードはBIOSであり、前記第2のブートコードはBIOSゴールデンコピーであることを特徴とする請求項1乃至7の何れか1項に記載の情報処理装置。
【請求項9】
前記第1の検証範囲設定領域により指定される検証範囲は、前記第1の検証範囲設定領域それ自体を含み、
前記第2の検証範囲設定領域により指定される検証範囲は、前記第2の検証範囲設定領域それ自体を含むことを特徴とする請求項1乃至8の何れか1項に記載の情報処理装置。
【請求項10】
前記情報処理装置は、前記情報処理装置の各手段として機能する組み込みコントローラソフトに従って動作する組み込みコントローラを備えており、
前記第1の検証範囲設定領域により指定される検証範囲および前記第2の検証範囲設定領域により指定される検証範囲は、前記組み込みコントローラソフトを含むことを特徴とする請求項1乃至8の何れか1項に記載の情報処理装置。
【請求項11】
第1のブートコードを保持する第1の保存媒体と、前記第1のブートコードの復旧に用いる第2のブートコードを保持する第2の保存媒体とを備える情報処理装置の制御方法であって、
前記第1のブートコードの検証範囲を指定する第1の検証範囲設定領域および前記第2のブートコードの検証範囲を指定する第2の検証範囲設定領域の改ざんの有無を検証する第1の検証工程と、
前記第1の検証範囲設定領域が改ざんされていない場合、前記第1のブートコードの改ざんの有無を検証する第2の検証工程と、
前記第1のブートコードが改ざんされており且つ前記第2の検証範囲設定領域が改ざんされていない場合、前記第2のブートコードの改ざんの有無を検証する第3の検証工程と、
前記第2のブートコードが改ざんされていない場合、前記第2のブートコードを用いて前記第1のブートコードを復旧する復旧工程と、を有し、
前記第1の検証範囲設定領域および第2の検証範囲設定領域は、前記情報処理装置の起動後に書き換わらない領域であることを特徴とする情報処理装置の制御方法。
【請求項12】
コンピュータを、請求項1乃至10の何れか1項に記載の情報処理装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理装置の制御方法及びプログラムに関するものである。
【背景技術】
【0002】
情報処理装置を制御するソフトウェアを第三者が不正な方法で改ざんし、情報処理装置内の情報資産を盗む攻撃や、ソフトウェアが改ざんされた情報処理装置を踏み台にする攻撃が問題になっている。このような攻撃を防止するために、情報処理装置内のソフトウェアが第三者によって改ざんされていないことを検証する方法が考案されている。さらに、ソフトウェアの改ざんを検出した際に、当該ソフトウェアを復旧する方法も考案されている。特に機器の最初に起動するソフトウェアであるBIOSやUEFIは、起動初期の段階ということもあり、ネットワーク機能等の基本機能が使えないため、復旧方法が限られる。BIOSはBasic Input Output Systemの略であり、UEFIはUnified Extensible Firmware Interfaceの略である。なお、BIOSは機器の起動に関わるソフトウェアのため、ブートコードと呼称される場合がある。
【0003】
特許文献1では、組み込みコントローラが第1のメモリに保持しているsystem firmware(BIOS)の改ざんを検知する。そして、改ざんされていると判断したとき、第2のメモリに予め保持している復旧用のsystem firmware(BIOSゴールデンコピー)で上書きし、復旧する。以下、組み込みコントローラをEC(Embedded Controller)と呼称する場合がある。復旧処理により、第1のメモリに保持している起動用のBIOSが改ざんされていない状態に戻るため、機器が正常起動可能となる。
【0004】
なお、第1のメモリはCPUからアクセス可能だが、BIOSゴールデンコピーの不正書き換えを防止するため、第2のメモリは組み込みコントローラのみがアクセス可能なバス構成となっている。また、特許文献1では、第1のメモリ内のBIOSと第2のメモリ内のBIOSゴールデンコピーとが同一となるようにポリシーで制御している。例えば、ポリシーがBIOSゴールデンコピーの書き換えを許可する設定の場合、第1のメモリ内のBIOSと第2のメモリ内のBIOSゴールデンコピーのハッシュ値を比較する。そして、ハッシュ値が異なる場合、第1のメモリ内のBIOSで第2のメモリ内のBIOSゴールデンコピーを上書きすることで両者を同一にする。
【先行技術文献】
【特許文献】
【0005】
【文献】米国特許第9880908号明細書
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、特許文献1は、BIOSの検証範囲について言及していない。BIOSは設定値等、起動後に書き変わる領域があるため、BIOSのすべての範囲を検証範囲にすると、署名値生成後、特定の領域が書き換わった時、検証時に署名検証に失敗してしまうという課題がある。
【0007】
本発明は、上記の課題に鑑みてなされたものであり、ソフトウェアの改ざんの有無の検証及び復旧処理を行う際に、当該ソフトウェアのブートコードの設定値等が書き換わっても検証を実現するための技術を提供することを目的とする。
【課題を解決するための手段】
【0008】
上記の目的を達成する本発明に係る情報処理装置は、
第1のブートコードを保持する第1の保存媒体と、前記第1のブートコードの復旧に用いる第2のブートコードを保持する第2の保存媒体とを備える情報処理装置であって、
前記第1のブートコードの検証範囲を指定する第1の検証範囲設定領域および前記第2のブートコードの検証範囲を指定する第2の検証範囲設定領域の改ざんの有無を検証する第1の検証手段と、
前記第1の検証範囲設定領域が改ざんされていない場合、前記第1のブートコードの改ざんの有無を検証する第2の検証手段と、
前記第1のブートコードが改ざんされており且つ前記第2の検証範囲設定領域が改ざんされていない場合、前記第2のブートコードの改ざんの有無を検証する第3の検証手段と、
前記第2のブートコードが改ざんされていない場合、前記第2のブートコードを用いて前記第1のブートコードを復旧する復旧手段と、
を備えることを特徴とする。
【発明の効果】
【0009】
本発明によれば、ソフトウェアの改ざんの有無の検証及び復旧処理を行う際に、当該ソフトウェアのブートコードの設定値等が書き換わっても検証を実行することが可能となる。
【図面の簡単な説明】
【0010】
図1】一実施形態に係るMFPとPCの接続形態を示すブロック構成図。
図2】一実施形態に係るMFPのコントローラ部の内部構成図。
図3】一実施形態に係るMFPのコントローラ内で実行されるソフトウェアのブロック構成図。
図4】一実施形態に係るSPI-Flashに配置されるデータの一例を示す図。
図5】一実施形態に係る検証範囲設定領域のフォーマットの一例を示す図。
図6】一実施形態に係る各検証結果と後続処理の関係を示す図。
図7】一実施形態に係る処理を実施する手順を示すフローチャート。
【発明を実施するための形態】
【0011】
以下、添付図面を参照して実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものでない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
【0012】
本実施形態では、情報処理装置がブートコードの検証および復旧用のソフトウェアであるゴールデンコピーの更新、およびブートコードの検証に失敗したときの復旧処理について説明する。本実施形態では、情報処理装置の例として画像形成装置であるMFP (Multi-Function Peripheral:複合機)について記述するが、本実施形態は複合機以外の情報処理装置にも適用可能な技術である。また、ソフトウェアの例としてBIOSを用いて説明するが、例えばNIC(Network Interface Card)のファームウェアの検証にも適用することができる。
【0013】
<システム構成>
図1のブロック図を参照して、本実施形態に係る情報処理装置(MFP)とクライアントPCとの接続形態を説明する。
【0014】
MFP100とクライアントPC110とは、LAN120を介して接続されている。MFP100は、コントローラ部101と、操作部102と、プリンタ部103と、スキャナ部104とを備えている。
【0015】
コントローラ部101は、操作部102は、ユーザとの間で入出力を行うための操作部である。プリンタ部103は、電子データを紙媒体に出力する。スキャナ部104は、紙媒体を読み込み電子データに変換する。操作部102とプリンタ部103とスキャナ部104とは、コントローラ部101に接続されており、コントローラ部101の制御に従い複合機としての機能を実現する。
【0016】
クライアントPC110はMFP100に対してプリントジョブの送信といった処理を行う。
【0017】
<コントローラ部のハードウェア構成>
図2は、本実施形態に係るMFP100のコントローラ部101の詳細を示すブロック図である。CPU201は、コントローラ部101内の主な演算処理を行う。なお、後述する組み込みコントローラ212が具備するCPUと区別するために、本実施形態ではCPU201を「メインCPU」と呼称する場合がある。CPU201はバスを介してDRAM202と接続される。DRAM202は、CPU201が演算する過程で演算命令を表すプログラムデータや、処理対象のデータを一時的に配置するための作業メモリとして、CPU201によって使用される。CPU201は、バスを介してI/Oコントローラ203と接続される。I/Oコントローラ203は、CPU201の指示に従い各種デバイスに対する入出力を行う。I/Oコントローラ203にはSATA(Serial Advanced Technology Attachment)I/F205が接続され、その先にFlashROM211が接続される。CPU201は、FlashROM211をMFP100の機能を実現するためのプログラム、およびドキュメントファイルを永続的に記憶するために使用する。I/Oコントローラ203には、ネットワークI/F204が接続され、ネットワークI/F204の先には、有線LANデバイス210が接続される。
【0018】
CPU201は、ネットワークI/F204を介して有線LANデバイス210を制御することで、LAN120上の通信を実現する。I/Oコントローラ203にはパネルI/F206が接続され、CPU201は、パネルI/F206を介して操作部102に対するユーザ向けの入出力を実現する。I/Oコントローラ203にはプリンタI/F207が接続され、CPU201は、プリンタI/F207を介してプリンタ部103を利用した紙媒体の出力処理を実現する。I/Oコントローラ203にはスキャナI/F208が接続され、CPU201はスキャナI/F208を介してスキャナ部104を利用した原稿の読み込み処理を実現する。I/Oコントローラ203にはUSB I/F209が接続され、USB I/F209に接続された任意の機器の制御を行う。SPI-Flash1 213は、CPU203とバスで接続されていて、図3及び図4を参照して後述するBIOS360を実現する制御プログラムを記憶している。SPI-Flash2 214 は図4を参照して後述する BIOS360復旧用のバイナリデータであるBIOSゴールデンコピー404(以下、BIOS GCと呼称する場合がある)を記憶している。ここでSPIは、Serial Peripheral Interfaceの略であり、SPI-Flashはフラッシュメモリの一種である。本実施形態では、第1の保存媒体としてSPI-Flash1 213、第2の保存媒体としてSPI-Flash2 214を例示して説明するが、SPI-Flashである必要はなく、同様の機能を持つ別種のフラッシュメモリや保存媒体を用いてもよい。
【0019】
組み込みコントローラ212は、MFP100の電源投入後、最初に起動するハードウェアチップであり、後述するBIOS360の改ざん検知、BIOS GC404を用いたBIOS360の復旧、及びBIOS GC404のアップデート処理を行う。組み込みコントローラ212は、CPU201とは独立して動作可能なマイクロコントローラであり、内部にCPUやROM・RAMなどのメモリを別途具備しているため、独自で演算処理が可能である。組み込みコントローラ212は、SPI-Flash1 213、SPI-Flash2 214、及び CPU201とバスで接続されている。組み込みコントローラ212は、BIOS360の改ざん検知やBIOS GC404のアップデート処理等の完了後にCPU201にリセット信号を送ることでCPU201を起動させ、制御を渡す。CPU201に制御を渡した後は、組み込みコントローラ212はスリープ状態に入る。
【0020】
[コピー機能]
コピー機能を実施する場合、CPU201は、SATA I/F205を介してFlashROM211からプログラムデータ(モジュールデータ)をDRAM202に読み込む。CPU201は、DRAM202に読み込まれたプログラム(モジュール)に従いパネルI/F206を介して操作部102に対するユーザからのコピー指示を検出する。CPU201は、コピー指示を検出するとスキャナI/F208を介してスキャナ部104から原稿を電子データとして受け取りDRAM202に格納する。CPU201は、DRAM202に格納した画像データに対して出力に適した色変換処理などを実施する。CPU201は、DRAM202に格納した画像データをプリンタI/F207を介してプリンタ部103に転送し、紙媒体への出力処理を実施する。
【0021】
[PDL印刷]
PDL印刷を実施する場合、クライアントPC110は、LAN120を介して印刷指示を行う。CPU201は、SATA I/F205を介してFlashROM211からプログラムデータ(モジュールデータ)をDRAM202に読み込む。そして、DRAM202に読み込まれたプログラム(モジュール)に従いネットワークI/F204を介して印刷指示を検出する。CPU201は、PDL送信指示を検出するとネットワークI/F204を介して印刷データを受信し、SATA I/F205を介してFlashROM211に印刷データを保存する。CPU201は、印刷データの保存が完了すると、FlashROM211に保存した印刷データをDRAM202に画像データとして展開する。CPU201は、DRAM202に格納した画像データに対して出力に適した色変換処理などを実施する。CPU201は、DRAM202に格納した画像データをプリンタI/F207を介してプリンタ部103に転送し、紙媒体への出力処理を実施する。
【0022】
<コントローラ部の機能構成>
続いて、図3のブロック図を参照して、本実施形態に係るMFP100のコントローラ部101で実行されるソフトウェアが実現する機能構成の一例を説明する。なお、コントローラ部101で実行されるソフトウェアのうち、組み込みコントローラソフト350だけは組み込みコントローラ212が実行し、それ以外は全てCPU201が実行する。
【0023】
組み込みコントローラ212は、組み込みコントローラソフト350を実行する。なお、組み込みコントローラソフト350の保存場所は、組み込みコントローラ212が読み出し、実行できる場所であればよい。例えば、組み込みコントローラ212が具備するROM(不図示)に組み込みコントローラソフト350を保存してもよいし、SPI-Flash1 213、SPI-Flash2 214に保存してもよい。最初に、組み込みコントローラソフト350の機能について説明する。組み込みコントローラソフト350は、改ざん検知部351、復旧部352、設定領域読み込み部353、バージョン比較部354、及び第1のアップデート部355を含む。
【0024】
改ざん検知部351は、SPI-Flash1 213が保持する図4を参照して後述する第1のBIOS署名値401を用いて、BIOS360の改ざん有無を検証する。署名検証方法としては、例えば、公知技術であるRSA公開鍵暗号方式を用いた署名検証アルゴリズムや、楕円曲線公開鍵暗号方式を用いたECDSA署名検証アルゴリズムを利用することができる。署名検証に用いる公開鍵は、組み込みコントローラ212が具備するROM(不図示)内に保持してもよいし、SPI-Flash1 213、SPI-Flash2 214内に保持してもよい。
【0025】
また、改ざん検知部351は、SPI-Flash2 214が保持する図4を参照して後述する第2のBIOS署名値406を用いて、BIOS GC404の改ざん有無を検証する機能も具備する。
【0026】
さらに、改ざん検知部351は、SPI-Flash1 213が保持する図4を参照して後述する第1の検証範囲設定領域の署名値402を用い、第1の検証範囲設定領域403の改ざん有無を検証する機能も具備する。さらに、改ざん検知部351は、SPI-Flash2 214が保持する図4を参照して後述する第2の検証範囲設定領域の署名値407を用い、第2の検証範囲設定領域408の改ざん有無を検証する機能も具備する。
【0027】
復旧部352は、改ざん検知部351でBIOS360の改ざんを検知した際に、SPI-Flash2 214が保持するBIOS GC404を用い、BIOS360を復旧する機能を持つ。復旧方法としては、例えば、SPI-Flash1 213のBIOS360を消去し、空いた領域にSPI-Flash2 214から読み出したBIOS GC404を書き込むことで実現できる。
【0028】
BIOS GC404は、BIOS360のコピーデータであるため、このように改ざんされたBIOS360をBIOS GC404で上書きすることで、BIOS360を正常な状態に復旧できる。その際、同様にして第2のBIOS署名値406で第1のBIOS署名値401の上書きも行う。さらに、後述する第2の検証範囲設定領域408および第2の検証範囲設定領域の署名値407で、それぞれ第1の検証範囲設定領域403および第1の検証範囲設定領域の署名値402の上書きも行う。
【0029】
設定領域読み込み部353は、図4および図5を参照して後述するSPI-Flash1 213が保持する第1の検証範囲設定領域403もしくはSPI-Flash2 214が保持する第2の検証範囲設定領域408を読み込む。設定領域読み込み部353は、図7で後述するように、改ざん検知部351によって第1の検証範囲設定領域403もしくは第2の検証範囲設定領域408が改ざんされていないことを確認した後に動作する。第1の検証範囲設定領域403もしくは第2の検証範囲設定領域408は、検証範囲を指定するための領域である。それらのフォーマットは一例として図5に示すように、BIOS360のバージョン情報であるバージョン識別子、BIOSの検証範囲の数を示す検証対象数、検証対象数に応じた複数の検証範囲の開始アドレスおよび検証範囲のサイズで構成されている。図示の例では検証範囲の開始アドレス1、検証範囲のサイズ1が示されているが、以降同様にして、検証範囲の開始アドレス2、検証範囲のサイズ2…と続く。
【0030】
BIOS360内で設定値等書き換わる領域を除外して非連続な領域を対象としてハッシュ値を算出し、電子署名を生成した場合、検証範囲は複数となり、検証対象数が2以上となる。
【0031】
バージョン比較部354は、BIOS360のバージョン情報である第1の検証範囲設定領域403のバージョン情報と、BIOS GC404のバージョン情報である第2の検証範囲設定領域408のバージョン情報とを比較する。バージョン情報としては、一般に用いられているバージョン情報を適用することができ、例えば時系列順にソフトウェアの更新・リリース履歴を表す増加値として表現することができる。
【0032】
具体的には、BIOSの現在のバージョン情報を「1.0」とした場合、バグや機能追加、脆弱性修正等で更新・リリースしたBIOSのバージョン情報を「1.1」とインクリメントした数値で表現することができる。この場合、バージョン情報を比較した結果、「1.1」>「1.0」となるため、バージョン情報「1.1」を持つBIOSのほうが新しいBIOSであると判断できる。バージョン比較部354は、BIOS360のバージョン情報とBIOS GC404のバージョン情報とを比較することで、BIOS360及びBIOS GC404のどちらのバージョンのほうが新しいかを判断できる。
【0033】
なお、上述のバージョン情報はあくまで一例であり、数値とアルファベットを混ぜ合わせてもよい。例えば、現バージョンを「1.0a」、新バージョンを「1.0b」とすることで、アルファベットの順序(a<b<c<・・・・<zの大小関係) を時系列の更新履歴の表現として用いることもできる。
【0034】
第1のアップデート部355は、バージョン比較部354でBIOS GC404よりBIOS360のほうが新しいバージョンだと判断した場合、BIOS360を用いて、BIOS GC404をアップデートする。具体的なアップデート方法としては、例えば、SPI-Flash2 214内のBIOS GC404を消去し、消去で空いた領域にSPI-Flash1 213から読みだしたBIOS360を書き込むことで実現できる。また、第1のアップデート部355は、同様にして、第2のBIOS署名値406を第1のBIOS署名値401で上書きすることで、アップデートされたBIOS GC404に対応した署名値に書き換える。同様に、第2の検証範囲設定領域408および第2の検証範囲設定領域の署名値407も、それぞれ第1の検証範囲設定領域403および第1の検証範囲設定領域の署名値407で書き換える。
【0035】
なお、本実施形態において、図4で示すようにBIOS360は、第1の検証範囲設定領域403、第1の検証範囲設定領域の署名値402、第1のBIOS署名値401、第1の組み込みコントローラソフト350を含む。また、BIOS GC404は、第2の検証範囲設定領域408、第2の検証範囲設定領域の署名値407、第2のBIOS署名値406、第2の組み込みコントローラソフト405を含む。そのため、BIOS GC404の書き換えと同時に、その他の情報も一括で書き換わる。
【0036】
組み込みコントローラソフト350は、上述した機能の処理完了後、CPU201に制御を移すためにCPU201にリセット信号を送信し、スリープ状態に入る。
【0037】
次に、CPU201により実行される機能について説明する。CPU201は、SPI-Flash1 213に記憶されたBIOS360を実行する。CPU201は、FlashROM211に記憶された、ローダ370、initrd380、カーネル390をDRAM202に読み込んだ後に実行する。CPU201は、FlashROM211に記憶されたコントローラソフト300をDRAM202に読み込んだ後に実行する。BIOS360は、I/Oコントローラ203やDRAM202をCPU201が制御するための基本処理を実行する。さらにBIOS360は、FlashROM211からローダ370を読み込み、開始する処理を含む。ローダ370は、FlashROM211からOSのカーネル390、initrd380を読み込み、開始する処理を実行する。initrd380は、FlashROM211からコントローラソフト300を読み込み、開始する処理を実行する。
【0038】
操作制御部301は、操作部102にユーザ向けの画面イメージを表示し、およびユーザ操作の検知と画面上に表示したボタン等の画面部品に紐づけられた処理を実行する。データ記憶部302は、他の制御部からの要求でデータをFlashROM211に記憶したり、FlashROM211から読み出したりする。例えば、ユーザが何らかの機器設定を変更したい場合は、操作部102にユーザが入力した内容を操作制御部301が検知し、操作制御部301からの要求に応じて、データ記憶部302が、変更された設定値をFlashROM211に保存する。
【0039】
ジョブ制御部303は、他の制御部からの指示に従って、ジョブ実行の制御を行う。
【0040】
画像処理部304は、ジョブ制御部303からの指示に従って、画像データを用途ごとに適した形式に加工する。印刷処理部305は、ジョブ制御部303からの指示に従い、プリンタI/F207を介して、紙媒体に画像を印刷し出力する。読み取り処理部306は、ジョブ制御部303からの指示時に従い、スキャナI/F208を介して、設置された原稿を読み込む。
【0041】
ネットワーク制御部307は、データ記憶部302に記憶された設定値に従い、システム起動時や、設定変更検出時にIPアドレスなどのネットワーク設定をTCP/IP制御部308に対して行う。TCP/IP制御部308は、他の制御部からの指示に従い、ネットワークI/F204を介して、ネットワークパケットの送受信処理を行う。USB制御部309は、USB I/F209を制御し、USB接続された任意の機器の制御を行う。
【0042】
第2のアップデート部310は、SPI-Flash1 213が保持するBIOS360を更新する。具体的な更新方法としては、例えば、ネットワーク経由やUSBメモリ経由で取得した更新用BIOSで、SPI-Flash1 213内のBIOS360を上書きすることで実現できる。同様に更新用BIOSに付随する更新用BIOSのバージョン情報及び署名値で、SPI-Flash1 213内の第1のバージョン情報及び第1の署名値402も更新される。第2のアップデート部310は、BIOSの更新処理完了後、前述した第1のアップデート部355でBIOS GC404を更新するために、再起動を要求する。
【0043】
以上、本実施形態における機能構成について説明した。
【0044】
<データの一例>
ここで、図4に、第1の保存媒体であるSPI-Flash1 213及び第2の保存媒体であるSPI-Flash2 214に配置されるデータを例示する。
【0045】
SPI-Flash1 213は、CPU201及び組み込みコントローラ212からアクセス可能である。SPI-Flash1 213は、BIOS360、第1の検証範囲設定領域403、第1の検証範囲設定領域の署名値402、第1のBIOS署名値401、第1の組み込みコントローラソフト350を保持する。第1の検証範囲設定領域403は、情報処理装置の起動後に書き換わらない領域である。
【0046】
本実施形態では、BIOS360の検証範囲設定領域を第1の検証範囲設定領域403としてBIOS360に内包する構成で説明するが、これはあくまで例示である。BIOS360に包含させず、BIOS360とは分ける形で第1の検証範囲設定領域403および第1の検証範囲設定領域の署名値402をSPI-Flash1 213内に保持してもよい。第1のBIOS署名値401は、BIOS360に関するデジタル署名値であり、前述したように、改ざん検知部351でBIOS360の改ざん有無を検証するために用いられる。
【0047】
一方、SPI-Flash2 214は、組み込みコントローラ212からのみアクセス可能である。SPI-Flash2 214は、BIOS GC404、第2の検証範囲設定領域408、第2の検証範囲設定領域の署名値407、第2のBIOS署名値406、第2の組み込みコントローラソフト405を保持する。第2の検証範囲設定領域408は、情報処理装置の起動後に書き換わらない領域である。本実施形態では、上述同様、BIOS GC404の検証範囲設定領域を第2の検証範囲設定領域408としてBIOS GC404に内包する構成で説明する。同様に第2のBIOS署名値406は、BIOS GC404に対するデジタル署名値となる。
【0048】
ここで、BIOS GC404は、前述したように復旧部352でBIOS360を正常状態に復旧するために用いるバイナリデータである。改ざんやデータ損失、BIOS360更新直後の起動でない限り、通常、BIOS GC404、第2の検証範囲設定領域408、第2の検証範囲設定領域の署名値407、第2のBIOS署名値406、第2の組み込みコントローラソフト405は、それぞれSPI-Flash1 213内のBIOS360、第1の検証範囲設定領域403、第1の検証範囲設定領域の署名値402、第1のBIOS署名値401、第1の組み込みコントローラソフト350と同じバイナリデータ(コピーデータ)となる。
【0049】
<処理>
続いて、図7のフローチャートを参照して、本実施形態に係るソフトウェアの改ざん検知、改ざんされたソフトウェアの復旧および復旧用ソフトウェアのアップデート処理を説明する。本処理は主に組み込みコントローラ212により実行される。
【0050】
MFP100の電源投入後、まず組み込みコントローラ212が組み込みコントローラソフト350を起動する(S701)。改ざん検知部351は、署名検証により第1のブートコード(BIOS360)の第1の検証範囲設定領域403および第2のブートコード(BIOS GC404)第2の検証範囲設定領域408の改ざん有無をそれぞれ検証する(S702)。検証には第1の検証範囲設定領域の署名値402および第2の検証範囲設定領域の署名値407を使用する。
【0051】
第1の検証範囲設定領域403および第2の検証範囲設定領域408両方の署名検証に失敗した場合(S702で失敗)、MFP100の起動処理を中止して起動失敗を通知する(S716)。通知は、ログを残したり、操作部102を介したエラー通知や、MFP100及び組み込みコントローラ212が具備するLEDや電源ランプの点滅等でユーザにエラー発生を通知したりしてもよい。
【0052】
一方、第1の検証範囲設定領域403および第2の検証範囲設定領域408の少なくとも一方の署名検証に成功した場合(S702で少なくともどちらか成功)、設定領域読み込み部353が検証成功の有無を記憶する。
【0053】
その後、設定領域読み込み部353は、検証に成功した第1の検証範囲設定領域403および/または第2の検証範囲設定領域408を読み込む(S703)。
【0054】
設定領域読み込み部353は、第1の検証範囲設定領域403の検証に成功した(読み込みに成功した)か否かを判定する(S704)。
【0055】
第1の検証範囲設定領域403の検証に成功しかつ情報の読み込みに成功した場合(S704でYES)、改ざん検知部351は、BIOS360の改ざん有無を検証する(S705)。検証の際、S703で読み込んだ第1の検証範囲設定領域403の検証範囲数、検証範囲開始アドレス、検証範囲サイズを用いてハッシュ値を算出する。SPI-Flash1 213の検証範囲開始アドレスから検証範囲サイズの範囲までを読み込んでハッシュ関数のUpdate処理を実行すること検証範囲数分繰り返す。最後にハッシュ関数のFinalize処理を実行してハッシュ値を算出し、検証処理に使用する。
【0056】
一方、第1の検証範囲設定領域403の検証に失敗した場合もしくは情報の読み込みに失敗した場合(S704で失敗)、S706に進む。
【0057】
そして、BIOS360の検証に失敗した場合(S705で失敗)、S710に進む。BIOS360の検証に成功した場合、S706に進む。
【0058】
S710では、設定領域読み込み部353は、S702で実施した第2の検証範囲設定領域408の署名検証結果が失敗か成功かを判定する。そして、失敗の場合(S710で失敗)、MFP100の起動処理を中止して起動失敗を通知する(S716)。
【0059】
一方、第2の検証範囲設定領域408の署名検証結果が成功の場合(S710で成功)、BIOS GC404の真正性を確認するために改ざん検知部351がBIOS GC404を署名検証する(S711)。検証には、S703で読み込んだ第2の検証範囲設定領域408の検証範囲数、検証範囲開始アドレス、検証範囲サイズを用いる。
【0060】
検証に失敗した場合(S711で失敗)、MFP100の起動処理を中止して起動失敗を通知する(S716)。一方、検証に成功した場合(S711で成功)、S712へ進む。復旧部352がBIOS360の復旧処理を行う(S712)。復旧後、復旧が正しく実行されたことを確認するためにBIOS360を署名検証する(S713)。その際、第1の検証範囲設定領域403を再度検証し、読み込み直し、読み込んだ第1の検証範囲設定領域403の検証範囲数、検証範囲開始アドレス、検証範囲サイズを用いて検証する。検証に失敗した場合(S713で失敗)、MFP100の起動処理を中止して起動失敗を通知する(S716)。一方、検証に成功した場合(S713で成功)、S707へ進む。
【0061】
そして、組み込みコントローラ212は、CPU201に制御を移すためにCPU201にリセット信号を送信する(S707)。その後、組み込みコントローラ212はスリープ状態に入る(S708)。リセット信号を受け、CPU201が起動し、CPU201はSPI-Flash1 213のBIOS360を読み出し、起動する。その後、CPU201は、FlashROM211に記憶された、ローダ370、initrd380、カーネル390をDRAM202に読み込んだ後に実行しOSを起動する。その後、CPU201は、FlashROM211に記憶されたコントローラソフト300をDRAM202に読み込んだ後に実行する(S709)。
【0062】
また、S706では、所定のディシジョンテーブル(例えば後述する図6)に応じて処理が分岐する。組み込みコントローラソフト350は、第1の検証範囲設定領域403と第2の検証範囲設定領域408のバージョン情報比較結果で後続の処理を決定する。あるいは、S702で実施した第1の検証範囲設定領域403の署名検証結果もしくは第2の検証範囲設定領域408の署名検証結果に応じて後続の処理を決定する。
【0063】
例えば、(1)第1の検証範囲設定領域403の署名検証結果が失敗の場合、BIOS360が改ざんされていると判断する。改ざん検知部351がBIOS GC404を署名検証(S711)し、コピー元の真正性を確認してから復旧部352がBIOS360の復旧を行う(S712)。
【0064】
(2)バージョン情報が異なる時、もしくは第2の検証範囲設定領域408の署名検証結果が失敗の場合、第1のアップデート部354がBIOS GC404を更新する(S714)。更新後、更新が正しく実行されたことを確認するために改ざん検知部351がBIOS GC404を署名検証する(S715)。その際、第2の検証範囲設定領域408を再度検証し、読み込み直し、読み込んだ第2の検証範囲設定領域408の検証範囲数、検証範囲開始アドレス、検証範囲サイズを用いて検証する。失敗したら起動失敗を通知する(S716)。成功したら、リセット信号送信処理(S707)に進む。
【0065】
(3)バージョン情報が等しいとき、BIOS GC404をアップデートする必要はないと判断し、そのままリセット信号送信処理(S707)に進む。
【0066】
図6の表は、第1の検証範囲設定領域403(BIOS)と第2の検証範囲設定領域408(BIOS GC)のバージョン情報比較結果、第1の検証範囲設定領域403の署名検証結果、第2の検証範囲設定領域408の署名検証結果、BIOS360の検証結果に応じた後続の処理の一例を示す。
【0067】
図6に示すように、第1の検証範囲設定領域403(BIOS)の署名検証結果が成功、第2の検証範囲設定領域408(BIOS GC)の署名検証結果が成功、BIOS360の検証結果が成功の場合、第1の検証範囲設定領域403(BIOS)と第2の検証範囲設定領域408(BIOS GC)のバージョン情報が異なるとき、BIOS GC404を更新する。
【0068】
第1の検証範囲設定領域403(BIOS)の署名検証結果が成功、第2の検証範囲設定領域408(BIOS GC)の署名検証結果が失敗、BIOS360の検証結果が成功の場合、BIOS GC404を更新する。第1の検証範囲設定領域403(BIOS)の署名検証結果が成功、第2の検証範囲設定領域408(BIOS GC)の署名検証結果が成功、BIOS360の検証結果が失敗の場合、BIOS360の復旧を行う。
【0069】
第1の検証範囲設定領域403(BIOS)の署名検証結果が成功、第2の検証範囲設定領域408(BIOS GC)の署名検証結果が失敗、BIOS360の検証結果が失敗の場合、起動失敗を通知する。第1の検証範囲設定領域403(BIOS)の署名検証結果が失敗、第2の検証範囲設定領域408(BIOS GC)の署名検証結果が成功の場合、BIOS360の復旧を行う。
【0070】
第1の検証範囲設定領域403(BIOS)の署名検証結果が失敗、第2の検証範囲設定領域408(BIOS GC)の署名検証結果が失敗の場合、起動失敗を通知する。以上が図7の一連の処理である。
【0071】
以上説明したように、本実施形態では、非連続な検証範囲を記述可能な検証範囲設定領域(ブートコードの設定値が書き換わっても影響を受けない領域)を設ける。そして、検証範囲設定領域の署名検証が成功したら検証範囲設定領域を読み込み、その検証範囲を用いてBIOSを署名検証する。
【0072】
これにより、ソフトウェアの改ざんの有無の検証及び復旧処理を行う際に、当該ソフトウェアのブートコードの設定値が書き換わっても検証を実行することが可能となる。
【0073】
[変形例1]
上記実施形態では、改ざん検知部351で第1の検証範囲設定領域403を検証した後、第1の検証範囲設定領域403の検証範囲数、検証範囲開始アドレス、検証範囲サイズを用いてBIOS360の改ざん有無を検証した。本変形例では、さらに、検証範囲設定領域で指定する検証範囲に検証範囲設定領域そのものを含めることとする。
【0074】
例えば、第1の検証範囲設定領域403により指定される検証範囲は、第1の検証範囲設定領域403それ自体を含み、第2の検証範囲設定領域408により指定される検証範囲は、第2の検証範囲設定領域それ自体を含んでもよい。
【0075】
この変形により、別バージョンのBIOS用に生成した、異なる検証範囲を持つ検証範囲設定領域および検証範囲設定領域の署名値に書き換えて署名検証を失敗させる攻撃を検知することができる。さらに、別バージョンのBIOS用に生成した、検証範囲が狭い検証範囲設定領域および検証範囲設定領域の署名値で置き換えて改ざんBIOSで検証成功させる攻撃も防ぐことができる。生成した署名値を利用した処理フローは図7の処理と同様である。
【0076】
[変形例2]
さらに、検証範囲設定領域で指定する検証範囲に第1の組み込みコントローラソフト350を含めることによって、別バージョンの組み込みコントローラソフト350で置き換えるロールバック攻撃を防ぐことができる。
【0077】
例えば、組み込みコントローラ212は、上記実施形態に係る情報処理装置(MFP100)の各処理を実行する組み込みコントローラソフト350に従って動作する。第1の検証範囲設定領域403により指定される検証範囲および第2の検証範囲設定領域408により指定される検証範囲は、当該組み込みコントローラソフト350を含んでもよい。生成した署名値を利用した処理フローは図7の処理と同様である。
【0078】
[変形例3]
上記実施形態では非連続な検証範囲に対してハッシュ関数を実行して生成した1つのハッシュ値から生成した署名値を用いて改ざん検知を実行していた。そのほかの実現方法としては、分割した検証範囲ごとにハッシュ値および署名値を生成し、検証に使用することも可能である。
【0079】
なお、上記実施形態及び各変形例では、BIOSを例に挙げ説明したが、BIOS以外のファームウェア及びソフトウェア(プログラム)にも本発明を適用可能である。例えば、MFP100がNICを具備する場合、組み込みコントローラ212がNICのファームウェアにアクセスできるようにバスを繋げる。そして、NICファームウェアのゴールデンコピーを組み込みコントローラ212からのみアクセス可能なSPI-Flashに格納するように構成する。これにより、NICファームウェアの復旧及びNICファームウェアのゴールデンコピーのアップデートを実現できる。
【0080】
また、上記実施形態およびその変形例では、組み込みコントローラ212が直接組み込みコントローラソフト350を起動する例で説明したが、多段に起動するようにしてもよい。例えば、組み込みコントローラソフト350の改ざん検知(署名検証)、及びその起動を行う起動用ソフトウェアを組み込みコントローラ212のROM内に保存することで多段にできる。このようにすることで、最初に組み込みコントローラ212のROM内に保存された起動用ソフトウェアが立ち上がり、SPI-Flashに保存された組み込みコントローラソフト350の改ざん有無を検証する。そして、改ざんがない場合に限り、組み込みコントローラソフト350を起動するように制御できる。なお、この場合別途組み込みコントローラソフト350のデジタル署名値をSPI-Flash内に保持することとなる。
【0081】
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【0082】
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
【符号の説明】
【0083】
100:MFP、101:コントローラ部、201:CPU、212:組み込みコントローラ、300:コントローラソフト、350:組み込みコントローラソフト、351:改ざん検知部、352:復旧部、353:設定領域読み込み部、354:バージョン比較部、355:第1のアップデート部
図1
図2
図3
図4
図5
図6
図7