(57)【要約】      （修正有）【課題】ファームウェアの更新が行われる場合においても適切に検証データを更新できるようにする。【解決手段】メインシステム２１０と、アップデート用システム２２０と、を含むコントローラ１１０であって、アップデート用システム２２０において、メインシステム２１０のファームウェアを更新するファームウェア更新処理部２２１と、メインシステム２１０のファームウェアが更新された後、再起動されると、メインシステム２１０を検証データ更新モードで起動する起動制御部２１１と、起動制御部２１１によって検証データ更新モードで起動された際に、メインシステム２１０において、メインシステム２１０のファームウェアの検証データを更新するホワイトリスト更新部２１９と、ホワイトリスト更新部２１９によって検証データが更新された後、再起動されると、メインシステム２１０を通常モードで起動する起動制御部２１１と、を有する。【選択図】図２
2020013244.tif 000002
【特許請求の範囲】
【請求項１】
第１の起動システムと、第２の起動システムと、を含む複数の起動システムのうち一の起動システムを動作させる情報処理装置であって、
前記第２の起動システムにおいて、前記第１の起動システムのソフトウェアを更新する第１のソフトウェア更新手段と、
前記第１のソフトウェア更新手段によって前記第１の起動システムのソフトウェアが更新された後、再起動されると、前記第１の起動システムにおいて、前記第１の起動システムを検証データ更新モードで起動する第１の起動手段と、
前記第１の起動手段によって前記検証データ更新モードで起動された際に、前記第１の起動システムにおいて、前記第１の起動システムのソフトウェアの検証データを更新する第１の更新手段と、
前記第１の更新手段によって検証データが更新された後、再起動されると、前記第１の起動システムにおいて、前記第１の起動システムを通常モードで起動する第２の起動手段と、
を有する情報処理装置。
【請求項２】
前記第１の起動システムにおいて、前記第１の更新手段によって更新された検証データに基づいて、前記第１のソフトウェア更新手段で更新されたソフトウェアの改ざん検知を行う検知手段を更に有する請求項１記載の情報処理装置。
【請求項３】
検証データ更新モード設定が有効である場合、
前記第１のソフトウェア更新手段によって前記第１の起動システムのソフトウェアが更新された後、再起動されると、前記第１の起動手段は、前記第１の起動システムにおいて、前記第１の起動システムを前記検証データ更新モードで起動し、
前記第１の起動手段によって起動された際に、前記第１の更新手段は、前記第１の起動システムにおいて、前記第１の起動システムのソフトウェアの検証データを更新し、
前記第１の更新手段によって検証データが更新された後、再起動されると、前記第２の起動手段は、前記第１の起動システムにおいて、前記第１の起動システムを通常モードで起動する請求項１又は２記載の情報処理装置。
【請求項４】
前記検証データ更新モード設定が有効でない場合、前記第１のソフトウェア更新手段によって前記第１の起動システムのソフトウェアが更新された後、再起動されると、前記第２の起動手段は、前記第１の起動システムにおいて、前記第１の起動システムを前記通常モードで起動する請求項３記載の情報処理装置。
【請求項５】
前記第１のソフトウェア更新手段によって前記第１の起動システムのソフトウェアが更新された後、再起動されると、前記第１の起動システムにおいて、前記第２の起動システムのソフトウェアを更新する第２のソフトウェア更新手段と、
前記第２のソフトウェア更新手段によって前記第２の起動システムのソフトウェアが更新された後、再起動されると、前記第２の起動システムにおいて、前記第２の起動システムを前記検証データ更新モードで起動する第３の起動手段と、
前記第３の起動手段によって前記検証データ更新モードで起動した際に、前記第２の起動システムにおいて、前記第２の起動システムのソフトウェアの検証データを更新する第２の更新手段と、
を更に有し、
前記第２の更新手段によって検証データが更新された後、再起動されると、前記第２の起動手段は、前記第１の起動システムにおいて、前記第１の起動システムを前記通常モードで起動する請求項１又は２記載の情報処理装置。
【請求項６】
検証データ更新モード設定が有効である場合、
前記第１のソフトウェア更新手段によって前記第１の起動システムのソフトウェアが更新された後、再起動されると、前記第１の起動手段は、前記第１の起動システムにおいて、前記第１の起動システムを前記検証データ更新モードで起動し、
前記第１の起動手段によって起動された際に、前記第１の更新手段は、前記第１の起動システムにおいて、前記第１の起動システムのソフトウェアの検証データを更新し、
前記第１の起動手段によって起動された際に、前記第２のソフトウェア更新手段は、前記第１の起動システムにおいて、前記第２の起動システムのソフトウェアを更新し、
前記第１の更新手段によって更新され、前記第２のソフトウェア更新手段によって更新された後、再起動されると、前記第３の起動手段は、前記第２の起動システムにおいて、前記第２の起動システムを前記検証データ更新モードで起動し、
前記第３の起動手段によって起動された際に、前記第２の更新手段は、前記第２の起動システムにおいて、前記第２の起動システムのソフトウェアの検証データを更新し、
前記第１の更新手段によって検証データが更新された後、再起動されると、前記第２の起動手段は、前記第１の起動システムにおいて、前記第１の起動システムを前記通常モードで起動する請求項５記載の情報処理装置。
【請求項７】
前記検証データ更新モード設定が有効でない場合、
前記第１のソフトウェア更新手段によって前記第１の起動システムのソフトウェアが更新された後、再起動されると、前記第２のソフトウェア更新手段は、前記第１の起動システムにおいて、前記第１の起動システムのソフトウェアを更新し、
前記第２のソフトウェア更新手段によって前記第２の起動システムのソフトウェアが更新された後、再起動されると、前記第２の起動手段は、前記第１の起動システムにおいて、前記第１の起動システムを前記通常モードで起動する請求項６記載の情報処理装置。
【請求項８】
前記検証データ更新モードは、外部装置と通信しないモードである請求項１乃至７何れか１項記載の情報処理装置。
【請求項９】
前記情報処理装置は、画像形成装置である請求項１乃至８何れか１項記載の情報処理装置。
【請求項１０】
第１の起動システムと、第２の起動システムと、を含む複数の起動システムのうち一の起動システムを動作させる情報処理装置の制御方法であって、
前記第２の起動システムにおいて、前記第１の起動システムのソフトウェアを更新する第１のソフトウェア更新ステップと、
前記第１のソフトウェア更新ステップによって前記第１の起動システムのソフトウェアが更新された後、再起動されると、前記第１の起動システムにおいて、前記第１の起動システムを検証データ更新モードで起動する第１の起動ステップと、
前記第１の起動ステップによって前記検証データ更新モードで起動された際に、前記第１の起動システムにおいて、前記第１の起動システムのソフトウェアの検証データを更新する第１の更新ステップと、
前記第１の更新ステップによって検証データが更新された後、再起動されると、前記第１の起動システムにおいて、前記第１の起動システムを通常モードで起動する第２の起動ステップと、
を有する情報処理装置の制御方法。
【請求項１１】
コンピュータを、請求項１乃至９何れか１項記載の情報処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理装置の制御方法、及び、プログラムに関する。
【背景技術】
【０００２】
画像形成装置等の情報処理装置にインストールされたアプリケーション及びファームウェア等のプログラムの不具合修正及び機能追加等のために、市場リリース後のユーザ先でもしばしば情報処理装置のプログラムが更新される。更新のためのコンテンツを配信する際には、改ざんされて不正な更新が行われないよう、配信するコンテンツの署名暗号化を行うことが一般的となっている。
コンテンツの配信の際には、通信の負荷及び処理時間を軽減するために、データの転送サイズを削減する必要がある。そのため、コンテンツを機能ごとに分割してバージョン管理し、更新対象の複数のコンテンツから、バージョン差分のあるものを事前に特定して必要なコンテンツのみダウンロード及び更新対象とする制御を行うケースがある。また、分割されたコンテンツを圧縮し署名暗号化して配信することで、データの転送サイズを減らすとともに、実際のインストールをする前に、ダウンロードされたコンテンツの改ざんを防止するケースもある。
【０００３】
配信時にファイルを圧縮して配信するケースにおいては、インストール時に情報処理装置の記憶装置に対して、配信されたコンテンツの圧縮ファイルを展開して配置する。したがって、展開後のファイルの改ざんに対しては、コンテンツ配信時に署名暗号化する方法では防止できない。そこで、使用可能なプログラムの個々のファイルの検証データを予め保管し、プログラムの使用時に検証データを用いて当該プログラムを改ざん検証し、正しいプログラムだけを使用可能とするホワイトリスト方式が使用されている。ここでいう検証データには、プログラムの一意性を確認するために、プログラムが格納された個々のファイルのバイナリデータから、ハッシュ関数を用いて作成されたハッシュ値を用いるのが一般的である。ハッシュ関数は、ある値からハッシュ値を作成した際に、ハッシュ値を変更せずに元の値を改変することが不可能であるという特徴があり、正しいプログラムであるかどうかの改ざん検証に使用することが可能である。改ざん検証とは、ホワイトリストに保管された検証データに基づいて、プログラムが格納されたファイルが改ざんされたか否かを判定し、改ざんされたと判定した場合、警告等を使用者に通告することである。改ざん確認では、プログラムを実行する際やプログラムが格納されたファイルをオープンする際に、プログラムが格納されたファイル全体のハッシュ値が算出される。そして、算出されたハッシュ値が、ホワイトリストに保管された当該ファイルに対する検証データと一致しているか否かを確認し、一致しなければ改ざんされたとみなす。ホワイトリストを使用したチェック方式においては、更新時に展開されたファイルが後に改ざんされたとしても、ホワイトリストで管理されたファイルが実行される際に改ざんを検知することが可能となる。ここで、ホワイトリストは書き込み処理を禁止した上で管理されるものであり、通常は書き換えが不可能なデータである。しかし、ファームウェアの更新が行われる場合には更新後のファームウェアに対応するホワイトリストを正しく更新する必要がある。
【０００４】
特許文献１には、無効有効化処理部と登録部と備える電子黒板が開示されている。無効有効化処理部は、インストールモードにおいてホワイトリストを無効化する。登録部は、ホワイトリストが無効化された状態においてインストールされたプログラムをホワイトリストに登録する。無効有効化処理部は、インストールされたプログラムがホワイトリストに登録された後にホワイトリストを有効化する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１６−１３９３２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
画像形成装置等の情報処理装置には、複数の起動システムを保持するものがある。情報処理装置は、何れかの起動システムを動作させる。それぞれ起動システムは、オペレーティングシステムを有し、このオペレーティングシステムの制御下で各種の処理を行う。それぞれ起動システムを実現するためのプログラム等のファイルは、起動システムごとに記憶装置の異なるパーティションに格納される。情報処理装置が複数の起動システムを有することで、何れかの起動システムに異常が生じた場合、異常が生じた起動システムを別の起動システムから復旧できる。また、画像形成装置では、画像処理装置としてのスキャンやプリントの機能を実現するシステムと、メンテナンスのための特殊起動システムとを適切に切り替えることで、安全なファームウェアアップデートやサービス性を確保できる。
【０００７】
しかしながら、検証データを含むホワイトリストを使用したチェック方式では、別パーティションにある起動システムに対しては、ホワイトリストを無効化するだけでは正しく更新処理を行えないケースがある。ホワイトリストは、起動しているオペレーティングシステムで管理される。このため、情報処理装置が通常動作用の起動システムとメンテナンス用の起動システムを有し、それぞれの起動システムが有するオペレーティングシステムの種類やバージョンが異なると、ホワイトリストの更新処理は別の起動システムからはできない場合がある。このような場合、メンテナンス用の起動システムから通常動作用の起動システムを更新する際に、通常のプログラムの更新と同様の更新処理では、ホワイトリストの更新ができない。したがって、ホワイトリストに含まれる検証データを更新できない。
【０００８】
特許文献１記載の方法は、プログラムの更新中にホワイトリストを無効化してホワイトリスト更新を行う。この方法では、同一のオペレーティングシステム上で更新されたプログラムに対するホワイトリストの更新は可能である。しかし、起動システムを複数持つような構成において、別の起動システムからプログラムを更新した場合、検証データを含むホワイトリストの適切な更新処理を行うことができない。
【課題を解決するための手段】
【０００９】
本発明の情報処理装置は、第１の起動システムと、第２の起動システムと、を含む複数の起動システムのうち一の起動システムを動作させる情報処理装置であって、前記第２の起動システムにおいて、前記第１の起動システムのソフトウェアを更新する第１のソフトウェア更新手段と、前記第１のソフトウェア更新手段によって前記第１の起動システムのソフトウェアが更新された後、再起動されると、前記第１の起動システムにおいて、前記第１の起動システムを検証データ更新モードで起動する第１の起動手段と、前記第１の起動手段によって前記検証データ更新モードで起動された際に、前記第１の起動システムにおいて、前記第１の起動システムのソフトウェアの検証データを更新する第１の更新手段と、前記第１の更新手段によって検証データが更新された後、再起動されると、前記第１の起動システムにおいて、前記第１の起動システムを通常モードで起動する第２の起動手段と、を有する。
【発明の効果】
【００１０】
本発明によれば、適切に検証データを更新できる。
【図面の簡単な説明】
【００１１】
【図１】画像形成装置の構成等の一例を示す図である。
【図２】画像形成装置のソフトウェア構成の一例を示す図である。
【図３】画像形成装置の起動モードごとの動作の一例を示す図である。
【図４】ファームウェア更新処理の一例を示すフローチャートである。
【図５】画像形成装置のソフトウェア構成の一例を示す図である。
【図６】ファームウェア更新処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１２】
（第１の実施形態）
図１を参照して、画像形成装置１００の構成について説明する。図１は、画像形成装置１００の構成等の一例を示す図である。画像形成装置１００は、メインコントローラ１１０と操作部ユニット１２０とプリンタユニット１３０とスキャナユニット１４０とを有する。メインコントローラ１１０は、ＣＰＵ１１１と不揮発性メモリ１１２とＲＡＭ１１３とＨＤＤ１１４と操作部Ｉ／Ｆ１１５とプリンタＩ／Ｆ１１６とスキャナＩ／Ｆ１１７とＵＳＢ−ＨｏｓｔＩ／Ｆ１１８とネットワークＩ／Ｆ１１９とを有する。画像形成装置１００は、情報処理装置の一例である。
【００１３】
ＣＰＵ１１１は、画像形成装置１００の全体を制御する。ＣＰＵ１１１は、不揮発性メモリ１１２に記憶されたメインコントローラ１１０用のファームウェア等のプログラムをＲＡＭ１１３に読み出して実行する。不揮発性メモリ１１２には、プログラムの他にライセンス、機器構成情報及びファームウェアバージョン等の機器情報等も記憶されている。
不揮発性メモリ１１２は、ファームウェア等のプログラム、各種設定情報等を記憶し、記憶したデータを更新可能である。不揮発性メモリ１１２として、例えばＳＳＤ（ソリッドステートドライブ）が使われる。不揮発性メモリ１１２は、記憶媒体の一例である。
【００１４】
ＨＤＤ（ハードディスクドライブ）１１４は、ネットワークＩ／Ｆ１１９を介してＰＣ１８０から受信した印刷データを記憶する。不揮発性メモリ１１２から読み出されＣＰＵ１１１により実行されるプログラムには、プリント用アプリケーションプログラムが含まれる。プリント用アプリケーションプログラムが実行されることにより、ＨＤＤ１１４に記憶された印刷データが、プリンタユニット１３０によるプリントが可能な画像データに変換される。ＨＤＤ１１４には、プリンタユニット１３０によるプリントが可能な画像データも記憶される。また、不揮発性メモリ１１２から読み出されＣＰＵ１１１により実行されるプログラムには、スキャン用アプリケーションプログラムが含まれる。スキャン用アプリケーションプログラムが実行されることにより、スキャナユニット１４０により画像データが読み取られるとともに、読み取られた画像データがＨＤＤ１１４に転送される。そして、ＨＤＤ１１４には、読み取られた画像データが記憶される。
【００１５】
操作部Ｉ／Ｆ１１５は、操作部ユニット１２０を介して画像形成装置１００の使用者により入力される指示をＣＰＵ１１１に伝達するためのインタフェース（Ｉ／Ｆ）である。操作部Ｉ／Ｆ１１５は、操作部ユニット１２０に表示する内容を切り替えるための処理内容をＣＰＵ１１１から受信して操作部ユニット１２０に伝達する。操作部ユニット１２０は、タッチパネル機能を有する液晶表示部やキーボード等が備えられ、使用者の指示を受け付ける。操作部ユニット１２０は、液晶表示部等により、各種の情報等を表示できる。
プリンタＩ／Ｆ１１６は、プリンタユニット１３０をメインコントローラ１１０に接続するためのインタフェースである。プリンタユニット１３０は、プリンタＩ／Ｆ１１６を介してＨＤＤ１１４から転送される画像データに基づいて、印刷用紙等の記録媒体上にプリントを行う。
【００１６】
スキャナＩ／Ｆ１１７は、スキャナユニット１４０をメインコントローラ１１０に接続するためのインタフェースである。スキャナユニット１４０は、画像データを入力する入力手段であり、原稿上の画像をＣＣＤ（ＣｈａｒｇｅＣｏｕｐｌｅｄＤｅｖｉｃｅ）等により構成されるラインセンサを用いて画像データとして読み取るものである。そして、スキャナユニット１４０は、読み取った画像データをスキャナＩ／Ｆ１１７を介してＨＤＤ１１４へ転送する。ＨＤＤ１１４へ転送されて記憶された画像データは、前述したプリンタユニット１３０によりプリントすることが可能である。また、スキャナユニット１４０により読み取った画像データをプリンタユニット１３０によりプリントすることにより、複写（コピー）処理が可能となる。
【００１７】
ＵＳＢ−ＨｏｓｔＩ／Ｆ１１８は、外部ＵＳＢデバイス１６０をメインコントローラ１１０に接続するためのインタフェースである。外部ＵＳＢデバイス１６０の例としてはＦＡＸユニットが挙げられる。ＦＡＸユニットは、ＵＳＢ−ＨｏｓｔＩ／Ｆ１１８を介してＨＤＤ１１４から転送される画像データに基づいてＦＡＸ送信を行う。また、ＦＡＸユニットは、受信するデータに基づいて画像データを生成し、ＵＳＢ−ＨｏｓｔＩ／Ｆ１１８を介してＨＤＤ１１４に画像データを転送する。ＨＤＤ１１４に記憶された画像データは、前述したようにプリンタユニット１３０により記録媒体へプリントされる。外部ＵＳＢデバイス１６０の他の例として、ＵＳＢメモリ及びＵＳＢキーボード等が挙げられる。ＵＳＢメモリからは、ＵＳＢ−ＨｏｓｔＩ／Ｆ１１８を介して、ファームウェアの更新に必要な更新ファイル及び更新情報の転送も可能である。
【００１８】
ネットワークＩ／Ｆ１１９は、メインコントローラ１１０をＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）１５０に接続し、ＬＡＮ１５０上のＰＣ１８０との通信を行う。ＰＣ１８０は、画像形成装置１００とＬＡＮ１５０で接続され、画像形成装置１００に対して、印刷データの送信、ファームウェアの更新に必要な更新ファイル及び更新情報の送信等が可能である。また、ＰＣ１８０は、ＰＣ１８０で起動するＷＥＢブラウザ経由で、画像形成装置１００を操作できる。画像形成装置１００は、ＬＡＮ１５０を介して、更にサーバ装置１７０と接続され、ファームウェアの更新に必要な更新ファイル及び更新情報をダウンロードできる。更新ファイル等のダウンロードには、ＨＴＴＰ（Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）、ＦＴＰ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）等のプロトコルが使用される。ただし、更新ファイル等のダウンロードに使用されるプロトコルはこれらに限定されない。
【００１９】
サーバ装置１７０には、出荷された製品に対して更新が必要な最新のファームウェアの更新ファイルが常にアップロードされている。画像形成装置１００は、サーバ装置１７０に問い合わせることで、必要なファームウェアの更新ファイルを取得することができる。ただし、画像形成装置１００の設置環境によっては、画像形成装置１００がサーバ装置１７０に接続しないケースもある。
【００２０】
次に、図２を参照して、画像形成装置１００のソフトウェア構成について説明する。図２は、画像形成装置１００のソフトウェア構成の一例を示す図である。ここで説明するソフトウェア（プログラム）は、図２に示すように、不揮発性メモリ１１２に記憶されている。
画像形成装置１００は、起動システムとして、メインシステム２１０及びアップデート用システム２２０を有する。画像形成装置１００は、メインシステム２１０及びアップデート用システム２２０のうち一の起動システムを動作させる。メインシステム２１０及びアップデート用システム２２０は、それぞれＯＳ（オペレーティングシステム）を有する。画像形成装置１００がメインシステム２１０を動作させる場合、画像形成装置１００は、メインシステム２１０のＯＳの制御下で動作する。画像形成装置１００がアップデート用システム２２０を動作させる場合、画像形成装置１００は、アップデート用システム２２０のＯＳの制御下で動作する。メインシステム２１０は、第１の起動システムの一例である。アップデート用システム２２０は、第２の起動システムの一例である。
【００２１】
メインシステム２１０は、起動制御部２１１と起動モード保持部２１２とプリンタ制御部２１３とスキャナ制御部２１４とＵＳＢ制御部２１５と通信処理部２１６とホワイトリスト管理部２１７とファイル検証部２１８とを有する。また、メインシステム２１０は、ホワイトリスト更新部２１９と更新制御部２５０とを有する。
起動制御部２１１は、メインシステム２１０の起動時の処理を制御する。起動制御部２１１は、各種プログラムを動作させるためのメインシステム２１０のＯＳを起動させる。起動制御部２１１は、メインシステム２１０を起動させる際に、起動モード保持部２１２を参照し、起動モードに応じてメインシステム２１０の起動制御を切り替える。
【００２２】
起動モード保持部２１２は、起動モードの設定を保持する不揮発性メモリ１１２の記憶領域である。画像形成装置１００には、起動モードとして、通常モードと後述のホワイトリスト更新モードとアップデートモードとがある。このうち、通常モードとホワイトリスト更新モードとが、メインシステム２１０の起動モードである。起動モード保持部２１２は、メインシステム２１０が通常モードで起動するかホワイトリスト更新モードで起動するかの設定情報を保持する。改ざん検知設定がオンになっており、ファームウェア更新後の起動以外の場合、メインシステム２１０が通常モードで起動するように、起動モードが設定される。ホワイトリスト更新モードは、検証データ更新モードの一例である。起動モード保持部２１２が保持する起動モードの設定がホワイトリスト更新モードの場合は、検証データ更新モード設定が有効である場合の一例である。
【００２３】
プリンタ制御部２１３は、プリンタＩ／Ｆ１１６を介したプリンタユニット１３０の制御を行う。
スキャナ制御部２１４は、スキャナＩ／Ｆ１１７を介したスキャナユニット１４０の制御を行う。
ＵＳＢ制御部２１５は、ＵＳＢ−ＨｏｓｔＩ／Ｆ１１８を介して、ＵＳＢ−ＨｏｓｔＩ／Ｆ１１８に接続した外部ＵＳＢデバイス１６０の制御を行う。外部ＵＳＢデバイス１６０がＵＳＢメモリである場合、ＵＳＢメモリから、ファームウェアの更新に必要な更新ファイル及び更新情報の受信処理に関する制御を行う。ＵＳＢ制御部２１５で受信されたファイルはＨＤＤ１１４に保存される。
【００２４】
通信処理部２１６は、ネットワークＩ／Ｆ１１９を介して、ＰＣ１８０やサーバ装置１７０との通信を行い、ＬＡＮ１５０を介して、ファームウェアの更新に必要な更新ファイル及び更新情報の受信処理を行う。通信処理部２１６で受信されたファイルはＨＤＤ１１４に保存される。
ホワイトリスト管理部２１７は、メインシステム２１０のファームウェアに関するホワイトリストの管理を行う。ホワイトリスト管理部２１７で管理されるホワイトリストは、メインシステム２１０のホワイトリストであり、メインシステム２１０のファームウェアに対する検証データを含む。メインシステム２１０のホワイトリストは、通常は書き換えを禁止した状態で管理され、不揮発性メモリ１１２のメインシステム２１０の管理下にある領域に記憶される。
【００２５】
ホワイトリストは、画像形成装置１００での実行を許可するファームウェアの情報の一覧である。より具体的には、ホワイトリストは、ファームウェアの識別情報とこのファームウェアの検証データとが関連付けられたデータを１つ以上備える。ファームウェアの識別情報には、例えば、ファームウェアのファイル名等の文字列が使われる。ファームウェアの検証データは、ファームウェアの改ざんの検知に使われる。ファームウェアの検証データには、ファームウェアのファイルのハッシュ値が使われる。メインシステム２１０のホワイトリストは、画像形成装置１００での実行を許可するメインシステム２１０のファームウェアの情報の一覧である。
【００２６】
ファイル検証部２１８は、メインシステム２１０のファームウェアを実行する際やファームウェアが格納されたファイルをオープンする際に改ざんの検証を行う。より具体的には、ファイル検証部２１８は、ファームウェアのファイル全体のハッシュ値を算出する。そして、ファイル検証部２１８は、算出したハッシュ値が、ホワイトリスト管理部２１７で管理されているホワイトリストに含まれた当該ファームウェアに対応する検証データと一致しているか否かを確認する。そして、ファイル検証部２１８は、一致しなければ改ざんされたと判定する。ファイル検証部２１８の処理は、改ざん検知処理の一例である。
ホワイトリスト更新部２１９は、メインシステム２１０のファームウェアの更新後にホワイトリスト管理部２１７で管理されたホワイトリストの更新処理を行う。ホワイトリストの更新は一時的にホワイトリストを書き込み可能にすることにより実施され、ホワイトリスト更新部２１９は特殊な権限を持つ。また、本実施形態でのホワイトリストの更新の際には、ファイルのパス情報やＯＳに依存するプログラムを用いる。そのため、メインシステム２１０のファームウェアに対するホワイトリストを更新するためには、ホワイトリスト更新部２１９は、起動制御部２１１により起動されたメインシステム２１０上で動作する必要がある。
更新制御部２５０は、ファームウェアの更新に関連する処理を行う。
【００２７】
アップデート用システム２２０は、ファームウェア更新処理部２２１とセキュリティ設定取得部２２２とメインシステム起動モード設定部２２３とＵＳＢ制御部２２４と通信処理部２２５とを有する。
ファームウェア更新処理部２２１は、操作部ユニット１２０を介してユーザからファームウェア更新の実行の指示があった場合や、予め設定された時刻に到達した場合に、メインシステム２１０を構成するファームウェアの更新処理を行う。
セキュリティ設定取得部２２２は、使用者により設定されたセキュリティ設定の情報を取得する。セキュリティ設定には、改ざん検知設定が含まれる。改ざん検知設定は、ファイル検証部２１８が改ざんの検証を行うか否かの設定である。ホワイトリストの更新を行うことによりファームウェアの更新にかかる処理時間は増加する。そこで、オフ（無効）の場合はホワイトリストの更新処理を行わず、改ざん検知設定がオン（有効）になっている場合は、ファームウェアの更新処理後にホワイトリストの更新のための制御を行う。
【００２８】
メインシステム起動モード設定部２２３は、セキュリティ設定取得部２２２によって取得されたセキュリティ設定の情報に応じて、起動モード保持部２１２に対して、次回再起動時のメインシステム起動モードの設定を行う。より具体的には、メインシステム起動モード設定部２２３は、改ざん検知設定が有効の場合、起動モードをホワイトリスト更新起動モードにする設定を行い、改ざん検知設定が無効の場合、起動モードを通常モードにする設定を行う。
ＵＳＢ制御部２２４及び通信処理部２２５は、メインシステム２１０のＵＳＢ制御部２１５及び通信処理部２１６と同様の機能を有する。
メインシステム２１０、及び、アップデート用システム２２０の上記のプログラムは、更新可能なファームウェアである。メインシステム２１０、及び、アップデート用システム２２０は、上記以外のファームウェアを有していてもよい。
【００２９】
次に、図３を参照して、画像形成装置１００の起動モードごとの動作について説明する。図３は、画像形成装置１００の起動モードごとの動作の一例を示す図である。画像形成装置１００は、図３に示すように、起動モードとして、通常モードとホワイトリスト更新モードとアップデートモードとを有する。
【００３０】
＜通常モード＞
通常モードは、画像形成装置１００の基本機能を制御するための起動モードである。通常モードは、メインシステム２１０のモードであり、メインシステム２１０のＯＳで起動する。通常モードでは、画像形成装置１００は、プリンタＩ／Ｆ１１６を介したプリンタユニット１３０との通信及びスキャナＩ／Ｆ１１７を介したスキャナユニット１４０との通信を行うことでスキャン、プリント、コピーといった動作を実現する。また、通常モードでは、ＣＰＵ１１１は、ホワイトリスト管理部２１７で管理されているホワイトリストの参照が可能である。ファイル検証部２１８は、改ざん検知設定がオンになっている場合、改ざんの検知を行う。ただし、通常モードでのホワイトリストの更新処理は禁止されている。また、通常モードでは、画像形成装置１００は、ＵＳＢ制御部２１５や通信処理部２１６を介して、外部ＵＳＢデバイス１６０やサーバ装置１７０等の外部装置へのアクセスが可能であり、印刷データ等の入出力を行う。また、通常モードでは、ＣＰＵ１１１は、操作部Ｉ／Ｆ１１５を介して操作部ユニット１２０と通信し、画像形成装置１００の状態を表示したり、使用者の指示を受け付けることで、画像形成装置１００の機能の詳細な動作設定を行ったりする。
【００３１】
＜ホワイトリスト更新モード＞
ホワイトリスト更新モードは、ファームウェア更新後の新しいファームウェアに対応するようにホワイトリストを更新するための起動モードである。ホワイトリスト更新モードは、メインシステム２１０のモードであり、メインシステム２１０のＯＳで起動する。ホワイトリスト更新モードは、ホワイトリストの更新のためだけの動作モードである。したがって、ホワイトリスト更新モードでは、ホワイトリストが正しく更新されるまでは、画像形成装置１００の基本機能は動作できないように制御する必要がある。そのため、ホワイトリスト更新モードでは、画像形成装置１００は、プリンタユニット１３０やスキャナユニット１４０との通信は不可とする。画像形成装置１００がホワイトリスト更新モードで起動した場合のみ、ＣＰＵ１１１は、ホワイトリスト管理部２１７で管理されたホワイトリストへの参照と更新の両方が可能である。また、ホワイトリスト更新モードでは、画像形成装置１００は、外部ＵＳＢデバイス１６０やサーバ装置１７０等の外部装置へのアクセスを行わない。また、ホワイトリスト更新モードでは、ＣＰＵ１１１は、操作部ユニット１２０へは、ファームウェアの更新処理中である旨の状況表示のみを行い、使用者による指示の受け付け等は行わない。
【００３２】
＜アップデートモード＞
アップデートモードはメインシステム２１０を構成するプログラム群を更新するための起動モードである。アップデートモードは、アップデート用システム２２０のモードであり、アップデート用システム２２０のＯＳで起動する。アップデートモードを通常モードとは異なるＯＳで起動するようにすることには次のような利点がある。すなわち、メインシステム２１０のプログラムが何らかの理由で動作できなくなった場合も、アップデート用システム２２０がアップデートモードで起動することでメインシステム２１０のリカバリを行うことができる利点がある。
【００３３】
アップデートモードは、ファームウェア更新処理部２２１によるプログラムの更新のためのみの起動モードである。したがって、アップデートモードでは、画像形成装置１００は、プリンタユニット１３０やスキャナユニット１４０との通信は行わない。また、アップデートモードでは、ＣＰＵ１１１は、メインシステム２１０で管理されているホワイトリストの参照及び更新ができないようになっている。ただし、アップデートモードでは、画像形成装置１００は、更新対象のファームウェアの取得を行うケースがあるため、外部ＵＳＢデバイス１６０やサーバ装置１７０等の外部装置との通信は可能となっている。また、アップデートモードでは、ＣＰＵ１１１は、操作部ユニット１２０へは、ファームウェアの更新処理中である旨の状況表示のみを行い、使用者による指示の受け付け等は行わない。
【００３４】
次に、図４を参照して、ファームウェア更新処理について説明する。図４は、ファームウェア更新処理の一例を示すフローチャートである。図４の処理を実現するプログラムは、不揮発性メモリ１１２に記憶され、ＣＰＵ１１１により実行される。図４の処理の開始時は、画像形成装置１００は、メインシステム２１０を通常モードで動作させているものとする。
【００３５】
Ｓ４０１において、更新制御部２５０は、操作部ユニット１２０を介したユーザからの入力、又は、ＰＣ１８０やサーバ装置１７０から受信した情報等に基づいて、ファームウェアの更新の指示を受け付ける。
Ｓ４０２において、更新制御部２５０は、外部装置から、ファームウェアの更新に使用する更新ファイル及び更新情報を受信して、ＨＤＤ１１４に保存する。ここで、ファームウェアの更新ファイル等の送信元である外部装置は、ＵＳＢ−ＨｏｓｔＩ／Ｆ１１８を介した外部ＵＳＢデバイス１６０であってもよいし、ネットワークＩ／Ｆ１１９を介したＰＣ１８０又はサーバ装置１７０でもよい。そして、更新制御部２５０は、画像形成装置１００がアップデート用システム２２０の制御によってアップデートモードで動作するよう制御する。より具体的には、更新制御部２５０は、画像形成装置１００がシステムリブート（再起動）後に、アップデートモードで起動するよう設定し、画像形成装置１００をシステムリブートさせる。これにより、画像形成装置１００は、システムリブートする。そして、画像形成装置１００では、アップデート用システム２２０がアップデートモードで起動し、動作を開始する。
【００３６】
Ｓ４０３において、ファームウェア更新処理部２２１は、Ｓ４０２で取得された更新ファイル及び更新情報に基づいて、メインシステム２１０のファームウェアの更新処理を行う。Ｓ４０３の処理は、第１のソフトウェア更新処理の一例である。
Ｓ４０４において、セキュリティ設定取得部２２２は、使用者により設定されたセキュリティ設定情報を取得し、改ざん検知設定がオンか否かを判定する。セキュリティ設定取得部２２２は、改ざん検知設定がオンと判定した場合、処理をＳ４０５に進め、改ざん検知設定がオフと判定した場合、処理をＳ４０６に進める。
Ｓ４０５において、メインシステム起動モード設定部２２３は、画像形成装置１００が次回起動したときにホワイトリスト更新起動をするように、起動モード保持部２１２に対してホワイトリスト更新モードを設定する。
Ｓ４０６において、メインシステム起動モード設定部２２３は、画像形成装置１００をシステムリブートさせる。これにより、画像形成装置１００は、システムリブートする。
【００３７】
Ｓ４０７において、起動制御部２１１は、起動モード保持部２１２に保持された起動モードを参照し、ホワイトリスト更新モードで起動するか否かを判定する。起動制御部２１１は、ホワイトリスト更新モードで起動すると判定した場合、処理をＳ４０８に進め、ホワイトリスト更新モードでは起動しないと判定した場合、処理をＳ４１１に進める。
Ｓ４０８において、起動制御部２１１は、メインシステム２１０をホワイトリスト更新モードで起動するよう制御する。ホワイトリスト更新モードは、図３を参照して説明した通りである。Ｓ４０８の処理は、第１の起動処理の一例である。
【００３８】
Ｓ４０９において、ホワイトリスト更新部２１９は、Ｓ４０３で更新されたファームウェアのファイルに基づいて、メインシステム２１０の更新後のファームウェアに適合するように、メインシステム２１０のホワイトリストを更新する。より具体的には、ホワイトリスト更新部２１９は、Ｓ４０３で更新されたファームウェアのファイルに基づいて、更新後のファームウェアの検証データを生成する。ここでの更新後のファームウェアは、メインシステム２１０のファームウェアである。そして、ホワイトリスト更新部２１９は、生成した検証データを使用して、メインシステム２１０のホワイトリストに含まれる更新後のファームウェアに対応する検証データを更新する。Ｓ４０９の処理は、第１の更新処理の一例である。
【００３９】
Ｓ４１０において、更新制御部２５０は、起動モード保持部２１２に対して、通常モードを設定する。そして、更新制御部２５０は、システムリブートするよう制御する。これにより、画像形成装置１００は、システムリブートする。
Ｓ４１１において、起動制御部２１１は、メインシステム２１０を通常モードで起動するよう制御する。その後、メインシステム２１０は、画像形成装置１００の基本機能の動作制御を開始する。Ｓ４１１の処理は、第２の起動処理の一例である。
Ｓ４０７においてホワイトリスト更新モードでは起動しないと判定された場合、Ｓ４１１に進み、画像形成装置１００は通常モードで起動する。したがって、Ｓ４０７においてホワイトリスト更新モードで起動すると判定された場合と比べて、システムリブートの回数が１回少なく、図４のファームウェア更新処理が早く終了する。
【００４０】
以上説明したように、第１の実施形態によれば、複数の起動システムを有する画像形成装置１００が、メインシステム２１０のファームウェアを更新した場合であっても、メインシステム２１０の検証データを含むホワイトリストを適切に更新できる。また、画像形成装置１００は、外部装置にアクセスできないホワイトリスト更新モードでホワイトリストを更新する。したがって、ホワイトリストが改ざんされるおそれを抑制でき、安全にホワイトリストを更新できる。
【００４１】
（第２の実施形態）
次に、第２の実施形態について説明する。以下に記載する第２の実施形態の説明では、第１の実施形態と共通する事項について説明を省略し、第１の実施形態と異なる事項についての説明を行う。また、第１の実施形態と同じ要素については同じ符号を付しており、その詳細な説明は省略する。
図５を参照して、第２の実施形態の画像形成装置１００のソフトウェア構成について説明する。図５は、画像形成装置１００のソフトウェア構成の一例を示す図である。ここで説明するプログラムは、図５に示すように、不揮発性メモリ１１２に記憶されている。
第２の実施形態のメインシステム２１０のソフトウェア構成は、図２に示す第１の実施形態のメインシステム２１０と同様である。
【００４２】
第２の実施形態のアップデート用システム２２０は、図２に示す第１の実施形態のアップデート用システム２２０の各部に加えて、更に、次の各部を有する。すなわち、第２の実施形態のアップデート用システム２２０は、起動制御部５２６と起動モード保持部５２７とホワイトリスト管理部５２８とファイル検証部５２９とホワイトリスト更新部５３０とを有する。
【００４３】
起動制御部５２６は、メインシステム２１０の起動制御部２１１と同様に、アップデート用システム２２０の起動時の処理を制御する。起動制御部５２６は、起動制御部２１１は、各種プログラムを動作させるためのアップデート用システム２２０のＯＳを起動させる。起動制御部５２６は、アップデート用システム２２０を起動させる際に、起動モード保持部５２７を参照し、起動モードに応じてアップデート用システム２２０の起動制御を切り替える。
【００４４】
ホワイトリスト管理部５２８は、メインシステム２１０のホワイトリスト管理部２１７と同様に、アップデート用システム２２０のファームウェアに関するホワイトリストの管理を行う。ホワイトリスト管理部５２８で管理されるホワイトリストは、アップデート用システム２２０のホワイトリストであり、アップデート用システム２２０のファームウェアに対する検証データを含む。アップデート用システム２２０のホワイトリストは、通常は書き換えを禁止した状態で管理され、不揮発性メモリ１１２のアップデート用システム２２０の管理下にある領域に記憶される。
【００４５】
ファイル検証部５２９は、メインシステム２１０のファイル検証部２１８と同様に、アップデート用システム２２０のファームウェアを実行する際やファームウェアが格納されたファイルをオープンする際に改ざんの検証を行う。ファイル検証部５２９の検証の方法は、メインシステム２１０とファイル検証部２１８と同等である。ファイル検証部５２９は、ファームウェアのファイル全体のハッシュ値を算出する。そして、ファイル検証部５２９は、算出したハッシュ値が、ホワイトリスト管理部５２８で管理されているホワイトリストに含まれた当該ファームウェアに対応する検証データと一致しているか否かを確認する。そして、ファイル検証部５２９は、一致しなければ改ざんされたと判定する。
ホワイトリスト更新部５３０は、メインシステム２１０のホワイトリスト更新部２１９と同様に、アップデート用システム２２０のファームウェアの更新後にホワイトリスト管理部５２８で管理されたホワイトリストの更新処理を行う。
【００４６】
このように第２の実施形態において、アップデート用システム２２０がメインシステム２１０と同様のプログラム群を持つことで、次のように、システム全体のセキュリティが向上する。すなわち、アップデート用システム２２０の更新されたファームウェアが改ざんされる場合を考慮して、アップデート用システム２２０のファームウェアもホワイトリストにより検証を行う。これにより、システム全体のセキュリティが向上する。
【００４７】
次に、図６を参照して、第２の実施形態におけるファームウェア更新処理について説明する。図６は、更新処理の一例を示すフローチャートである。図６の処理を実現するプログラムは、不揮発性メモリ１１２に記憶され、ＣＰＵ１１１により実行される。図６の処理の開始時は、画像形成装置１００は、メインシステム２１０を通常モードで動作させているものとする。
図６のＳ６０１からＳ６０９の処理は、図４のＳ４０１からＳ４０９の処理と同様である。
【００４８】
Ｓ６１０において、メインシステム２１０は、Ｓ６０２で受信された更新ファイル及び更新情報に基づいて、アップデート用システム２２０のファームウェアの更新処理を行う。Ｓ６１０の処理は、第２のソフトウェア更新処理の一例である。
Ｓ６１１において、起動制御部２１１は、Ｓ６０７と同様に、起動モード保持部２１２に保持された起動モードを参照し、ホワイトリスト更新モードで起動するか否かを判定する。起動制御部２１１は、ホワイトリスト更新モードで起動すると判定した場合、処理をＳ６１２に進め、ホワイトリスト更新モードでは起動しないと判定した場合、処理をＳ６１６に進める。
Ｓ６１２において、起動制御部２１１は、画像形成装置１００をシステムリブートさせる。これにより、画像形成装置１００は、システムリブートする。
【００４９】
Ｓ６１３において、起動制御部５２６は、アップデート用システム２２０を更新ホワイトリスト更新モードで起動するよう制御する。第２の実施形態では、アップデート用システム２２０も、メインシステム２１０と同様に、ホワイトリスト更新モードを持つ。Ｓ６１３の処理は、第３の起動処理の一例である。
Ｓ６１４において、ホワイトリスト更新部５３０は、Ｓ６１０で更新されたファームウェアのファイルに基づいて、アップデート用システム２２０の更新後のファームウェアに適合するように、アップデート用システム２２０のホワイトリストを更新する。より具体的には、ホワイトリスト更新部５３０は、Ｓ６１０で更新されたファームウェアのファイルに基づいて、更新後のファームウェアの検証データを生成する。ここでの更新後のファームウェアは、アップデート用システム２２０のファームウェアである。そして、ホワイトリスト更新部５３０は、生成した更新後のファームウェアの検証データを使用して、アップデート用システム２２０のホワイトリストに含まれる更新後のファームウェアに対応する検証データを更新する。Ｓ６１４の処理は、第２の更新処理の一例である。
Ｓ６１５において、起動制御部５２６は、画像形成装置１００をシステムリブートさせる。これにより、画像形成装置１００は、システムリブートする。
Ｓ６１６において、起動制御部２１１は、メインシステム２１０を通常モードで起動するよう制御する。その後、メインシステム２１０は、画像形成装置１００の基本機能の動作制御を開始する。
【００５０】
以上説明したように、第２の実施形態によれば、メインシステム２１０のホワイトリスト、及び、アップデート用システム２２０のホワイトリストの更新が可能である。したがって、画像形成装置１００の更なるセキュリティの向上を図ることが可能になる。また、第１の実施形態と同様に、適切かつ安全にホワイトリストを更新できる。
【００５１】
（変形例）
図４のＳ４０１、Ｓ４０２及び図６のＳ６０１、Ｓ６０２の処理がされるとき、画像形成装置１００は、メインシステム２１０を通常モードで動作させている。しかし、図４のＳ４０１、Ｓ４０２及び図６のＳ６０１、Ｓ６０２の処理がされるとき、画像形成装置１００は、アップデート用システム２２０をアップデートモードで動作させていてもよい。この場合、Ｓ４０２及びＳ６０２においてシステムリブートは行われない。
また、上記の実施形態では、画像形成装置１００は、起動システムとして、メインシステム２１０とアップデート用システム２２０とを有するが、こられ以外の起動システムを有していてもよい。このため、画像形成装置１００は、メインシステム２１０のＯＳ及びアップデート用システム２２０のＯＳ以外のＯＳを有していてもよい。
【００５２】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００５３】
以上、本発明を実施形態と共に説明したが、上記実施形態は本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
例えば、画像形成装置１００のハードウェア構成として、ＣＰＵは複数存在してもよく、複数のＣＰＵが各装置のＨＤＤ等に記憶されているプログラムに基づき処理を実行するようにしてもよい。また、画像形成装置１００のハードウェア構成として、ＣＰＵに替えてＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を用いることとしてもよい。ソフトウェア構成の一部は、画像形成装置１００のハードウェアとして実装されてもよい。また、上記の実施形態を任意に組み合わせてもよい。
【００５４】
以上、上述した実施形態によれば、適切に検証データを更新できる。
【符号の説明】
【００５５】
１００  画像形成装置
２１０  メインシステム
２１１  起動制御部
２１７  ホワイトリスト管理部
２１８  ファイル検証部
２１９  ホワイトリスト更新部
２２０  アップデート用システム
【図１】
2020013244.tif 000003
【図２】
2020013244.tif 000004
【図３】
2020013244.tif 000005
【図４】
2020013244.tif 000006
【図５】
2020013244.tif 000007
【図６】
2020013244.tif 000008