JP2021089607A - 情報処理装置 - Google Patents
情報処理装置 Download PDFInfo
- Publication number
- JP2021089607A JP2021089607A JP2019219857A JP2019219857A JP2021089607A JP 2021089607 A JP2021089607 A JP 2021089607A JP 2019219857 A JP2019219857 A JP 2019219857A JP 2019219857 A JP2019219857 A JP 2019219857A JP 2021089607 A JP2021089607 A JP 2021089607A
- Authority
- JP
- Japan
- Prior art keywords
- timer
- cpu
- time
- program
- reset
- 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
- Debugging And Monitoring (AREA)
Abstract
【課題】検証により改竄が検出されたプログラムの復旧処理を行った後、装置が起動するときにWDTによるリセットが実行されるのを防止する情報処理装置を提供する。【解決手段】情報処理装置MFP1は、プログラムを実行して制御するメインCPUと、プログラムを検証するサブCPUと、装置の動作中に計時を行い、当該計時のクリア制御が第1所定時間内に行われない場合にリセット信号を出力する第1タイマとサブCPUがプログラムの検証で異常を検知したときに計時を行い、計時のクリア制御が第2所定時間内に行われない場合にリセット信号を出力する第2タイマとを備えたWDT部と、WDT部からのリセット信号に基づいてメインCPU及びサブCPUへのリセット信号を生成するリセット回路とを有する。サブCPUは、プログラムの検証で異常を検知すると第1タイマによる計時を停止させ、第2タイマによる計時を開始させてプログラムの復旧処理を行う。【選択図】図1
Description
本発明は、情報処理装置に関するものである。
ソフトウェアのハングアップ等が原因でシステムの正常動作が難しくなった場合、システム全体のリセットを実行して自動復旧を試みることを目的として、ウォッチドッグタイマ(Watch Dog Timer:WDT)が活用されてきた。WDTは、システムの動作中にカウンタ等によって計時を行い、そのカウンタに対するクリア制御が一定時間内に行われない場合、システムに異常が発生しているとみなし、強制的にシステムリセットを実行する。一般的に、カウンタに対するクリア制御は、システム制御を統括するメインCPUにより行われる。WDTはカウント値のクリア制御を受けると、それまでの計時値をリセットして、初期値から計時を再開する。例えば、特許文献1には、複数のCPUが同時に動作する場合に、各CPUが適切に動作していることを確認できるWDTが記載されている。
一方で、起動プログラムが改竄されていないことを検証しながらシステムを起動するセキュアブートを導入したMFP(Multi-function peripheral)が近年導入されつつある。このようなMFPは、ユーザによる電源スイッチのオン等によって行われるシステム起動の中で、最初にBIOS(Basi Input/Output System)やファームウェアに対する改竄の有無を検証することで、システムの起動中に、ソフトウェアの安全性を担保する。ここで検証の結果NGが発生すると、システムの起動の強制停止や、改竄されていると判定されたソフトウェアの復旧を実施する。ソフトウェアの復旧は、予め外部からの書き込みが不可能な領域にマスタデータを保持しておき、ソフトウェアの復旧が必要になった場合、そのNGと判定されたデータをマスタデータで上書きすることで、ソフトソフトウェアを復旧する。尚、上述したプログラムの改竄の有無の検証は、起動プログラムを実行するCPU自身は、その起動プログラムの改竄を検知できないため、起動プログラムを実行するCPUとは異なるサブCPUにより、その起動プログラムの改竄の有無を検証している。
上述したプログラムの改竄の有無を検証するシステムでは、サブCPUがブートコードの改竄の有無を検証する間、WDTをクリアできるメインCPUが動作できない。そのため、ブートコードの復旧が必要となった場合、メインCPUの起動までに要する時間が更に長くなる。そのため、システムとしては正常に動作しているにも拘わらず、WDTのタイムアウト時間に到達してしまい、不必要なリセットが実行されてしまうおそれがあった。
本発明の目的は、上記従来技術の問題点の少なくとも一つを解決することにある。
本発明の目的は、プログラムの検証により異常が検出され、そのプログラムの復旧処理を行った後、装置が起動するときにWDTによるリセットが実行されるのを防止する技術を提供することにある。
上記目的を達成するために本発明の一態様に係る情報処理装置は以下のような構成を備える。即ち、
情報処理装置であって、
プログラムを実行して前記情報処理装置を制御する第1CPUと、
前記プログラムを検証する第2CPUと、
前記情報処理装置の動作中に計時を行い、当該計時のクリア制御が第1所定時間内に行われない場合にリセット信号を出力する第1タイマ手段と、
前記第2CPUが前記プログラムの検証で異常を検知したときに計時を行い、当該計時のクリア制御が第2所定時間内に行われない場合にリセット信号を出力する第2タイマ手段と、
前記第1タイマ手段及び前記第2タイマ手段からのリセット信号に基づいて前記第1CPU及び前記第2CPUへのリセット信号を生成するリセット手段と、を有し、
前記第2CPUは、前記プログラムの検証で異常を検知すると前記第1タイマ手段による計時を停止させ、前記第2タイマ手段による計時を開始させて前記プログラムの復旧処理を行うことを特徴とする。
情報処理装置であって、
プログラムを実行して前記情報処理装置を制御する第1CPUと、
前記プログラムを検証する第2CPUと、
前記情報処理装置の動作中に計時を行い、当該計時のクリア制御が第1所定時間内に行われない場合にリセット信号を出力する第1タイマ手段と、
前記第2CPUが前記プログラムの検証で異常を検知したときに計時を行い、当該計時のクリア制御が第2所定時間内に行われない場合にリセット信号を出力する第2タイマ手段と、
前記第1タイマ手段及び前記第2タイマ手段からのリセット信号に基づいて前記第1CPU及び前記第2CPUへのリセット信号を生成するリセット手段と、を有し、
前記第2CPUは、前記プログラムの検証で異常を検知すると前記第1タイマ手段による計時を停止させ、前記第2タイマ手段による計時を開始させて前記プログラムの復旧処理を行うことを特徴とする。
本発明によれば、プログラムの改竄が検出されて、その復旧処理を実行する場合でも、WDTを適切に動作させることができるという効果がある。
本発明のその他の特徴及び利点は、添付図面を参照とした以下の説明により明らかになるであろう。なお、添付図面においては、同じ若しくは同様の構成には、同じ参照番号を付す。
添付図面は明細書に含まれ、その一部を構成し、本発明の実施形態を示し、その記述と共に本発明の原理を説明するために用いられる。
本発明の実施形態に係る複合機(MFP)のハードウェアの構成を説明するブロック図。
実施形態に係るメインCPUの構成を説明するブロック図。
実施形態に係るサブCPUの構成を説明するブロック図。
実施形態に係るフラッシュROMのメモリマップを示す図。
実施形態に係るWDT部の内部構成を説明するブロック図。
実施形態において、サブCPUによる改竄検証処理が実施されてメインCPUが起動するまでのMFPの起動処理を説明するシーケンス図。
実施形態において、サブCPUによる改竄検証処理の結果、改竄されていると判定され、復旧処理が行われるときのMFPの起動処理を説明するシーケンス図。
実施形態に係るサブCPUの処理を説明するフローチャート。
実施形態に係るMFPのメインCPUの処理を説明するフローチャート。
実施形態に係るWDT部の処理を説明するフローチャート。
実施形態に係るリセット回路による処理を説明するフローチャート。
以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものでない。実施形態には複数の特徴が記載されているが、これら複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一もしくは同様の構成に同一の参照番号を付し、重複した説明は省略する。なお、実施形態では、ブートコードの改竄検知時における改竄検知方法の一実施形態として、複合機(MFP)を例に本発明に係る情報処理装置の一例を説明する。尚、特に断らない限り、本発明の機能が実行されるのであれば、単体の機器であっても、複数の機器からなるシステムであっても、本発明を適用できることは言うまでもない。
図1は、本発明の実施形態に係る複合機(MFP)1のハードウェアの構成を説明するブロック図である。
メインCPU(Central Processing Unit)101は、MFP1全体の制御を司る。DRAM(Dynamic Random Access Memory)102は、メインCPU101で実行されるプログラムを格納すると共に、一時的に各種データを保存するワークエリアとして機能する。操作部103は、操作部I/F113を介してメインCPU101にユーザによる操作を通知する。ネットワークI/F104は、LAN130と接続して外部機器と通信を行う。プリンタ部105は、画像データを紙面上に印刷する。スキャナ部106は、紙面上の画像を光学的に読み取り電気信号に変換してスキャン画像データを生成する。FAX部107は、公衆回線110と接続して外部機器とファクシミリ通信を行う。HDD(ハードデスクドライブ)108は、メインCPU101で実行されるプログラムを格納すると共に、プリントジョブやスキャンジョブ等のスプール領域としても利用される。また、スキャン画像を保管し再利用するための領域としても利用される。信号バス109は、各モジュールを相互に接続して通信を行う。公衆回線110は、FAX部107と外部機器を相互接続する。画像処理部111は、ネットワークI/F104を介して受信したプリントジョブをプリンタ部105で印刷するのに適した画像データに変換したり、スキャナ部106で読み取ったスキャン画像のノイズ除去や色空間変換、回転、圧縮等の処理を実行する。更に画像処理部111は、HDD108に保管されたスキャン画像の画像処理を実行する。フラッシュROM112は、メインCPU101で実行されるブートコードを含むプログラムを格納すると共に、MFP1のデフォルト設定値等を記憶する。操作部I/F113は、操作部103と信号バス109を相互接続する。SPIバス114は、メインCPU101、フラッシュROM112、サブCPU115を相互接続する。
サブCPU115は、MFP1の起動時に、メインCPU101が起動する前にフラッシュROM112からブートコードを読み出して、ブートコードが改竄されていないか検証を行う。改竄の検知方法としては、例えばブートコードのデジタル署名の公開鍵情報(ハッシュ値を公開鍵暗号化した値)を、製造時にサブCPU115のOTP(One Time Programable)304領域(図3)に記憶させておき、読み出したブートコードをこの公開鍵情報で復号化して検証を行う。公開鍵暗号の方法としてはRSA2048、ECDSAなどがある。
メインCPUのリセット信号117は、電源制御部118のGPIOポートから出力されて、メインCPU101のリセット端子に接続される。リセット信号117は、後に図7で詳細に説明する改竄検証が完了し、改竄無しとサブCPU115が判定した場合に、ロウレベルからハイレベルに遷移する。ここで、ロウレベルとは「0」を示す電気信号の状態を示す。またハイレベルとは「1」を示す電気信号の状態を表す。リセット信号117がハイレベルになると、メインCPU101はリセットが解除されて起動を開始する。
電源制御部118は、MFP1内の各モジュールの電力供給を制御するとともに、その内部に、後述するWDT部140及びリセット回路122を有している。また電源制御部118は信号バス109に接続されており、メインCPU101で動作するソフトウェアによる各種制御レジスタへのアクセスが可能な構成になっている。電源線119は、各モジュールに電力を供給する。電源供給線120は、商業用AC電源を供給している。
リセット回路122は、サブCPU115、及びメインCPU101に対するリセット信号の制御を行う。リセット回路122は、システムの電源がオンされると、サブCPUのリセット信号123をロウレベルからハイレベルに遷移する。サブCPU115のリセット信号123は、リセット回路122から出力されてサブCPU115のリセット端子に接続される。サブCPU115のリセット信号123がハイレベルになると、サブCPU115はリセットが解除されて起動を開始する。またリセット回路122は、後述する改竄検証完了通知信号131がサブCPU115から入力されると、メインCPU101のリセット信号117をハイレベルにしてリセットを解除する。更に、リセット回路122は、後述するWDT部140からの制御によりメインCPU101、及びサブCPU115をリセットする。
改竄検証完了通知信号131は、サブCPU115がブートコードに改竄がないことを確認し、正常に検証が完了したことを通知するための信号である。改竄検証完了通知信号131は、サブCPU115のGPIOポートから出力されて、電源制御部118に備えられるリセット回路122に接続される。実施形態において、改竄検証完了通知信号131の初期値はロウレベルであり、通知を行う場合はハイレベルとする。リセット回路122は、改竄検証完了通知信号131がハイレベルになると、メインCPU101のリセット信号117をハイレベルとすることでメインCPU101のリセット解除する。
ネットワークI/F用フラッシュROM133は、ネットワークI/F104が動作するために必要なファームウェアを記憶している。WDT部140は、システムの電源がオンされると、所定の遅延時間後にWDT部140の内部に備えられるタイマ回路によるカウントを開始する。WDT部140は、予め設定されたタイムアウト値にカウント値が到達すると、強制システムリセット信号132をハイレベルにすることで、リセット回路122にシステムリセットを実行するよう指示する。WDT部140は、後述するタイマ切り替え信号141(図5)の信号レベルによって、内部に保有する2つのタイマの内の一つを選択してカウントを行う。タイマ切り替え信号141の信号レベルは、サブCPU115による改竄検証処理の結果、改竄の形跡が有り、復旧が必要と判断された場合の復旧処理の前後でサブCPU115によってハイレベル又はロウレベルに変更される。実施形態において、通常時に用いられるタイマは、タイマ切り替え信号141の信号レベルがロウレベルの場合に選択される。
また実施形態において、サブCPU115が処理完了までに時間を要する処理を実行する際に選択する、タイムアウトまでの時間が長いタイマはタイマ切り替え信号141の信号レベルがハイレベルの場合に選択されるものとする。実施形態におけるタイマ切り替え信号141の初期値はロウレベルであるものとする。
WDT部140は、CPU101からのタイマ502(図5)のクリア制御レジスタへの書き込み、もしくはタイマ切り替え信号141の信号レベルが変化してカウントに使用されるタイマが切り替わることをトリガとして、カウント値を初期値へ戻して再度カウントを行うように構成される。
リセット回路122は、強制システムリセット信号132がハイレベルになると、リセット信号117、リセット信号123をロウレベルに変更することで、メインCPU101、及びサブCPU115をリセットする。リセット回路122は更に不図示のリセット信号を通じて、MFP1を構成する各モジュールをリセットできるようにすることもできる。WDTクリア信号141は、WDT部140に設定されているタイムアウト時間間隔よりも短い間隔でサブCPU115からWDT部140に出力される。
図2は、実施形態に係るメインCPU101の構成を説明するブロック図である。
CPUコア201は、CPUの基本機能を担っている。実施形態では、CPU101が起動すると、信号バス109を通じてWDT部140にタイマ502(図5)のクリア制御を行うことで、WDT部140によるリセット制御を抑制する。SPIマスタ202は、SPIマスタ202と外部SPIデバイスとを電気的に接続するSPIバス114を介し、外部のSPIデバイスとのデータの読み書きを行う。信号バスインターフェース203は、信号バス109とメインCPU101内の信号バス209とを接続する。信号バス209は、メインCPU101内の各モジュールを接続する。リセット信号117がロウレベルのときはメインCPU101はリセット状態となり、リセット信号117がハイレベルのとき、メインCPU101はリセット解除状態となる。
実施形態では、サブCPU115によって、サブCPUファームウェア(FW)404(図4)及び、メインCPU BIOS401(図4)が改竄されてないことが確認されると、サブCPU115と電源制御部118とによってリセット信号117が制御されてメインCPU101のリセットが解除される。これによりメインCPU101は、自身の起動プログラムに一切の改竄がないことを保証された状態で起動を開始することができる。リセット信号117がリセット状態(ロウレベル)からリセット解除状態(ハイレベル)に遷移すると、CPUコア201は先ず、フラッシュROM112に記憶されているメインCPU BIOS404をDRAM102にロードして実行する。
図3は、実施形態に係るサブCPU115の構成を説明するブロック図である。
CPUコア301は、CPUの基本機能を担っている。SPIマスタ302は、SPIマスタ302と外部SPIデバイスとを電気的に接続するSPIバス114を介し、外部のSPIデバイスとのデータの読み書きを行う。GPIO(General-purpose Input/Output)303は、外部のデバイスと相互に接続してデータの送信を行う。GPIO303には2本の信号が接続されていて、一つ目はサブCPU115がブートコードの検証が正常に完了したことを示す、改竄検証完了通知信号131である。2つ目はWDT部140が持つタイマを切り替えるためのタイマ切り替え信号141である。
OTPメモリ領域304には、製造時にサブCPUファームウェア404(図4)のハッシュ値を公開鍵で暗号化した値、及びTagのアドレスが書き込まれる。この領域に書き込まれたデータは一度書き込まれると二度と書換えることはできない。SRAM305は、サブCPU115のワークメモリとして使用される。暗号/復号処理部308は、公開鍵で暗号化した値からサブCPUファームウェア404のハッシュ値を復号するほか、公開鍵で暗号化したメインCPU BIOSのハッシュ値を復号する。信号バス309は、サブCPU115の各モジュールを接続する。ブートROM(Read Only Memory)310は、サブCPU115のブートコードを記憶する。
サブCPU115には、図1で説明したリセット信号123が入力される。サブCPU115のCPUコア301は、リセット信号123がロウレベルのときリセット状態となり、リセット信号123がハイレベルのときにリセット解除状態となる。リセット信号123がリセット状態からリセット解除状態に遷移すると、CPUコア301は先ず、ブートROM310から自身のブートコードを読み出し実行する。Crypto RAM311は、暗号/復号処理部308で利用する機密性の高いデータ等の一時記憶が可能なワーク領域として用いられる。
図4は、実施形態に係るフラッシュROM112のメモリマップを示す図である。
メインCPU BIOS401は、メインCPU101で実行されるコードを記憶している。BIOS署名402は、メインCPU BIOS401のハッシュ値に対するRSA署名値を記憶している。Tag403は、サブCPUファームウェア404の先頭アドレスを記憶している。Tag403自体のアドレスは、OTP304に記憶されている。サブCPUファームウェア404は、サブCPU115で実行されるコードを記憶している。ファームウェア(FW)署名405は、サブCPUファームウェア404、またはサブCPUファームウェア404の先頭の特定部分のECDSA署名値を記憶している。ROM−ID406は、メインCPU BIOS401の先頭アドレス、サイズ及びBIOS署名のアドレスを記憶している。407〜411は、これまでに説明したメインCPU BIOS401からROM−ID406までの各データの復旧用GoldenMasterデータで、WriteProtect等の外部からの書き換えが不可能な記憶領域に保持されている。実施形態では、一続きのアドレスの一部に対して、WriteProtect設定ができるデバイスを使用することを想定した図として記載している。
図5は、実施形態に係るWDT部140の内部構成を説明するブロック図である。
WDT制御部501は、次に説明するタイマ502、及びタイマ503のクリア制御と、これら2つのタイマの中から、タイムアウト判定に使うタイマを選択するタイマ切り替え信号141の信号レベルに応じて選択する。
タイマ502は、タイマ切り替え信号141の信号レベルがロウレベルの場合にWDT制御部501によって選択される。タイマ502は、自身に予め設定されたタイムアウト値とタイマ回路によるカウント値を比較しながら、タイムアウト値とカウント値が等しくなった場合に、WDT制御部501へタイムアウトが発生したことを通知する。またWDT制御部501からカウント値のクリア制御によって、カウント値を初期値に戻して再度カウントを開始する。
タイマ503は、タイマ切り替え信号141の信号レベルがハイレベルの場合にWDT制御部501によって選択される。タイマ503は、自身に予め設定されたタイムアウト値とタイマ回路によるカウント値を比較しながら、タイムアウト値とカウント値が等しくなった場合に、WDT制御部501へタイムアウトが発生したことを通知する。またWDT制御部501からカウント値のクリア制御によって、カウント値を初期値に戻して再度カウントを開始する。
実施形態では、タイマ502は、通常用いられるタイマとし、タイムアウト値はサブCPU115が改竄検証処理を実施するのに必要な時間に、CPU101が起動してからシステムバス109を介したカウントクリア制御が実施可能になるまでの時間を加算し、更に、マージン時間を追加して設定される。一方タイマ503は、サブCPU115が改竄検証を行った結果、改竄されていると判定した場合の復旧処理に要する時間にマージン時間を加算した時間に設定される。タイマ502及びタイマ503がタイマ切り替え信号141によって切り替えられるタイミングについては図1で説明した通りである。
WDT制御部501は、タイマ502とタイマ503の内、入力されるタイマ切り替え信号141の信号レベルに応じて選択しているタイマからのタイムアウト発生を検出すると、強制システムリセット信号132をリセット回路122へ出力する。更に、システムバス109を介してメインCPU101から行われるカウントクリア設定をトリガとして、WDT制御部501が選択しているタイマのタイマ値のクリアを実行する。
実施形態においては、タイマ502とタイマ503は排他的に使用するため、不要なタイマの動作を停止する例で説明するが、WDT制御部501が選択しているタイマからのタイムアウトのみを検出するように構成すれば、タイマを切り替える際にタイマの動作を停止する動作が必要なくなるため、より簡単な制御で実施可能となる。
また実施形態では、サブCPU115が改竄検証処理を実施中、メインCPU101がリセット状態であって動作できないため、サブCPU115が改竄検証処理中にメインCPU101によるクリア設定は行われない。これはサブCPU115が改竄検証を行った結果、改竄されていると判定すると、改竄が発見されたデータに対してGoldenMasterデータを上書きすることによる復旧処理中も同じこととなる。
一方でサブCPU115による改竄検証が完了してメインCPU101による制御が開始されると、メインCPU101はシステムバス109を介して定期的にカウントクリア設定を行うことで、タイムアウトの発生を防ぎ、システムの動作を継続させることができる。
次に、実施形態におけるMFP1の起動処理の中で、これまでに説明してきた主要なコンポーネント間の処理関係を時系列に説明する。
図6Aは、実施形態において、サブCPU115による改竄検証処理が実施されてメインCPU101が起動するまでのMFP1の起動処理を説明するシーケンス図である。
まずS601で、MFP1はユーザによって起動操作がなされる。これによりS602で電源制御部118に電源が供給され、各モジュールへ電源が分配される。これにより、WDT部140、リセット回路122、サブCPU115、メインCPU101へ電力の供給が開始される。この状態では、リセット回路122は、サブCPU115へ接続されるサブCPUリセット信号123と、メインCPU101へ接続されるメインCPU101のリセット信号117をともにロウレベルにキープし、リセット継続する。
こうして電源が供給されると、WDT部140はS603でタイマ切り替え信号141の信号レベルを確認してタイマを選択し、ここではタイマ502を選択してタイマ502によるによるカウントを開始する。ここでタイマ502が選択されているのは、タイマ切り替え信号141の初期値がロウレベルであるためである。これと並列して、リセット回路122はS604で、サブCPU115へ接続されるサブCPUリセット信号123をハイレベルに変更することで、サブCPU115のリセットを解除する。
これによりS605でサブCPU115は、サブCPUファームウェア404の検証を開始する。これと同時に、サブCPU115はリセットが解除されると、S606でメインCPU BIOS401の改竄検証を開始する。そして、改竄が検知されなかった場合はS607で、サブCPU115は改竄検証終了信号131をハイレベルに変更する。こうして、改竄の事実が無く起動可能なことをリセット回路122に通知し、S608で省電力状態へ移行する。
こうして改竄検証終了信号131がアサートされたリセット回路122はS609で、メインCPU101のリセット信号117をロウレベルからハイレベルに変更することにより、メインCPU101のリセットを解除する。そして、リセットが解除されたメインCPU101はS610で、自身が起動するのに必要なメインCPU BIOS401をフラッシュROM112から読み出してメインCPU101の起動を開始する。そしてS611でメインCPU101は、メインCPU BIOS401の読み出しを行って、BIOS起動を行うと、その後はOSの起動を含むシステムの起動を開始する。
次に、メインCPU101はWDT制御ソフトウェアが起動するとS612で、システムバス109を介してWDT140のタイマ502のカウント値をクリアする。それとともにS614で、WDT140が持つタイマのクリア制御を行う間隔を生成するためのタイマを起動する。このタイマはCPU101上で動作するソフトウェアで実現するとして説明を続けるが、メインCPU1010内部にカウンタ回路がある場合はそれを活用してもよいことは言うまでもない。またWDT140はS613で、メインCPU101からのタイマ502のカウント値のクリアに応じて、タイマ502,503のカウント値をクリアし、タイマ502によるカウントを開始する。
そしてS615で、メインCPU101で動作するタイマがタイムアウトに到達するとS616で、WDT部140へ信号バス109を介してアクセスし、図示しないWDTクリアレジスタに「1」を書き込むことで、WDT部140のタイマ502をクリアする。WDT部140は、WDTクリアレジスタが「1」に変化するとS617で、タイマ502,503のカウント値のクリア制御を実施し、再度、タイマ502によるカウントを開始する。
このとき、S607までにサブCPU115による処理に異常が発生した場合、WDT部140のタイマ502によるカウント値が予め定められたタイムアウト値を超過してしまうため、タイムアウトが発生する。また、メインCPU101で動作するソフトウェアがハングアップ等によりWDTクリアレジスタの設定を行えなくなった場合も、WDT部140のタイマ502によるカウント値が予め定められたタイムアウト値を超過してしまうため、タイムアウトが発生する。このようにして一度タイムアウトが発生すると、WDT部140のWDT制御部501は、リセット回路122へ強制システムリセット信号132を出力し、メインCPU101とサブCPU115をリセットするように制御する。リセット回路122によるリセット処理は予め定められた時間継続し、リセット回路122によるリセットが解除されると、S603以降の動作を再度実施する。
次に図6Bを参照して、サブCPU115による改竄検証処理の結果、改竄されていると判定されて復旧処理が行われる場合で、CPU101が起動するまでのMFP1の起動処理に関するシーケンスについて説明する。
図6Bは、実施形態において、サブCPU115による改竄検証処理の結果、改竄されていると判定され、復旧処理が行われるときのMFP1の起動処理を説明するシーケンス図である。
まず、S601からS617までは図6Aと同様であるため、その説明を割愛し、差分となるS618以降の処理を説明する。
S606におけるサブCPU115によるメインCPU BIOS401の検証の結果、メインCPU BIOS401に何らかの改竄が発見されていた場合、サブCPU115はS618でメインCPU BIOS401の復旧処理を開始する。そしてS619で、タイマ切り替え信号141の信号レベルを初期値であるロウレベルからハイレベルに変更する。これにより、WDT140内のWDT制御部501は、サブCPU115によってCPU BIOS401の復旧処理が開始されたことを認識し、S620で、タイマ503を使ってカウントを開始する。ここでタイマ503は既に説明した通り、サブCPU115によるメインCPU BIOS401の復旧処理が完了するのに必要な時間にマージン時間を加算した値をタイムアウト値として保持している。
こうしてサブCPU115によるメインCPU BIOS401の復旧処理が滞りなく完了するとS607で、サブCPU115は既に説明した改竄検証終了信号131をリセット回路122へアサートする。更にサブCPU115はS621で、タイマ切り替え信号141をハイレベルからロウレベルへ変更する。これにより、WDT140内のWDT制御部501は、サブCPU115によるCPU BIOS401の復旧処理が完了し、通常動作が開始されたことを認識し、S622で、タイマ502を使ってカウントを再開することができる。
ここで仮にメインCPU BIOS401の復旧処理中に何等かの異常が発生して処理が停止してしまった場合、S620で開始したWDT部140のタイマ503によるカウント値が予め定められたタイムアウト値を超過してしまう。これによりタイムアウトが発生する。こうして一度タイムアウトが発生すると、WDT部140のWDT制御部501は、リセット回路122へ強制システムリセット信号132を出力して、メインCPU101とサブCPU115をリセットするように制御する。リセット回路122によるリセット処理は、予め定められた時間継続し、リセット回路122によるリセットが解除されると、S603以降の動作を再度実施する。
次に、実施形態に係るサブCPU115の詳細な処理手順を図7のフローチャートを参照して説明する。
図7は、実施形態に係るサブCPU115の処理を説明するフローチャートである。尚、このフローチャートで示す処理は、CPUコア301がフラッシュROM112からSRAM305に展開したプログラムを実行することにより実現される。
まずS701でCPUコア301は起動すると直ちにブートROM310内のコードを実行し、SPIバス114を介してフラッシュROM112からサブCPUファームウェア404とFW署名405をSRAM305に読み込む。そして、GPIOポートの初期化を行って改竄検証完了通知信号131とタイマ切り替え信号141を初期状態であるロウレベルにセットする。続いてS702に進みCPUコア301は、暗号/復号処理部308によってFW署名405をOTP304内の公開鍵で復号化して、正解となるハッシュ値を得る。そしてS703に進みCPUコア301は、暗号/復号処理部308によってサブCPUファームウェア404のハッシュ値を計算する。次にS704に進みCPUコア301は、S702で得られたハッシュ値と、S703で計算したハッシュ値とを比較し、これらが不一致の場合は、後に説明するS718へ進む。
一方、これが一致した場合はS705に進みCPUコア301は、サブCPUファームウェア404をSRAM305に読み込む。次にS706に進みCPUコア301は、SRAM305に読み込んだサブCPUファームウェア404を実行する。次にS707に進みCPUコア301は、実行したサブCPUファームウェア404の制御に基づき、ROM−ID406をフラッシュROM112からCrypto RAM311に読み込む。そしてS708に進みCPUコア301は、ROM−ID406からメインCPU BIOS401のアドレスとBIOS署名402のアドレスを得る。そしてS709に進みCPUコア301は、BIOS署名402をSRAM305に読み込む。続いてS710に進みCPUコア301は、暗号/復号処理部308によってBIOS署名402をサブCPUファームウェア404に付属している公開鍵で復号化してハッシュ値を得る。次にS711に進みCPUコア301は、メインCPU BIOS401をSRAM305に読み込む。そしてS712に進みCPUコア301は、暗号/復号処理部308によってメインCPU BIOS401のハッシュ値を計算する。そしてS713に進みCPUコア301は、S710で得たハッシュ値とS712で算出したハッシュ値とを比較し、これらが一致した場合はS714に進み、GPIO303を制御して改竄検証完了通知信号131をハイレベルにセットしてS715に進む。一方、これらが不一致の場合はS718へ進む。
S715でCPUコア301は、改竄検証完了通知信号131をハイレベルにセットすると、それからタイマ切り替え信号141をロウレベルにセットする。そしてS716でGPIO303を制御してリセット信号をハイレベルで出力する。その後S717でCPUコア301は、電力消費の最も少ないスリープ状態に移行し、その状態を維持する。尚、このスリープ状態では、GPIO303の出力状態を維持している。また、一度スリープ状態に入った後は通常状態に戻る必要はないが、サブCPU115を改竄検証以外の用途にも利用するのであれば、図示しない割り込み信号の受信を許可して通常状態へ復帰させることも可能である。
またS704、もしくはS713で不一致の場合はS718に進みCPUコア301は、タイマ切り替え信号141をハイレベルにセットする。その後S719でCPUコア301は、改竄が検出されたデータを、WriteProtect等が施されたセキュアな領域に保持されているGoldenMasterデータで上書きするデータの復旧処理を行う。こうしてサブCPU115によるGoldenMasterデータによる上書き処理が完了すると、S714へ進みサブCPU115による処理の終了シーケンスを実施する。
尚、実施形態ではGoldenMasterデータによる上書き処理が完了すると、サブCPU115による改竄検証処理が完了するとして説明しているが、上書き処理が完了した後にS701から再度フローを進めることで、より時間を要するが、よりセキュアなブートシーケンスを組むことも可能である。
次に実施形態におけるメインCPU101の処理手順を図8のフローチャートを用いて説明する。
図8は、実施形態に係るMFP1のメインCPU101の処理を説明するフローチャートである。
メインCPU101はリセットが解除されるとS801で、フラッシュROM112に記憶されたメインCPU BIOS401をDRAM102に読み込む。次にS802に進みメインCPU101は、DRAM102へ読み込んだメインCPU BIOS401を実行し、メインCPU101内の入出力の初期化を行う。次にS803に進みメインCPU101は、HDD108からOS(オペレーティングシステム)をDRAM102に読み込む。読み取り後S804でメインCPU101は、OSを起動する。続いてS805に進みメインCPU101は、プリンタ部105、スキャナ部106、FAX部107、画像処理部111、ネットワークI/F104操作部103を初期化するとともに、WDT140のタイマ502を定期的にクリア制御するソフトウェアを起動し、MFP1として機能可能な状態にする。
次に、実施形態におけるWDT部140の処理手順を図9のフローチャートを用いて説明する。
図9は、実施形態に係るWDT部140の処理を説明するフローチャートである。
WDT部140は、電源の供給が始まるとS901でタイマ502を起動し、カウントを開始する。次にS902に進みWDT部140は、改竄検証完了通知信号131を監視して、改竄検証が完了したか否かを判定する。ここで改竄検証が完了していた場合はS903に進み、タイマ502によるカウントを選択してタイマ502によるカウントを開始し、タイマ503の動作を停止してS910に進む。このときタイマ502は、メインCPU101が適切に動作していることを確認できる所定時間を計時し、その所定時間内にクリア制御が実行されないとS911でタイムアウトになることになる。
一方、で改竄検証が完了していなかった場合はS904に進み、サブCPU115からのタイマ切り替え信号141がハイレベルであるか否か判定する。ハイレベルであればS907に進んでタイマ503によるカウントを実施中であるか否かを判定する。ここでタイマ503によるカウントを実施していない場合はS908に進み、タイマ503によるカウントを開始するとともに、タイマ502による計時を止める。
一方、S904でタイマ切り替え信号141がロウレベルであった場合S905に進み、タイマ502がタイムアウトしたかどうか判定する。タイマ502がタイムアウトしたときはS906に進み、強制システムリセット信号132を出力して、この処理を終える。一方、S905でタイマ502がタイムアウトしていない場合はS902に進んでカウントを継続する。
またS907でタイマ503によるカウント中であった場合はS909に進み、タイマ503がタイムアウトしたかどうか判定する。タイマ503がタタイムアウトした場合はS906に進み、強制システムリセット信号132を出力して、この処理を終える。またS909でタイマ503がタイムアウトしていない場合はS902に進んで、カウントを継続する。
S910では、サブCPU115による改竄検証処理が完了し、タイマ502によるカウントが開始され、またメインCPU101の起動が開始されている。よってWDT部140は、WDT制御部501に実装されるWDTクリアレジスタに「1」が書き込まれた否かを判定する。ここでWDTクリアレジスタが「1」に設定されていた場合はS912に進み、タイマ502のカウント値をクリアし、タイマ502によるカウントを再開する。一方、WDTクリアレジスタが「0」であった場合はS911に進み、タイマ502がタイムアウトしたかどうかを判定する。ここでタイムアウトしていた場合はS906に進み、強制システムリセット信号132を出力して、この処理を終える。一方S911で、タイマ502がタイムアウトしていない場合はS910に進み、タイマ502によるカウントを継続する。
以上のように制御することで、サブCPUによるプログラムの改竄検証処理の結果、改竄が発生したと判定し、GoldenMasterデータを使った復旧処理を行う間、WDTによる強制システムリセットの出力を防止できる。そして復旧処理後、メインCPUが正常に起動すると、メインCPUによってWDT(タイマ502)が制御されるためMFPを適切に制御できるようになる。
またサブCPUによるプログラムの改竄検証処理の結果、プログラムの改竄が発生していない、即ちプログラムの異常が検知されないときは、タイマ502によるウオッチドッグタイマ機能が実行され、メインCPUが正常に動作している限り、タイマ502がタイムアウトすることによる強制システムリセット信号が出力されることはない。
次に、本実施形態におけるリセット回路122の処理手順を図10のフローチャートを用いて説明する。
図10は、実施形態に係るリセット回路122による処理を説明するフローチャートである。
リセット回路122は電源の供給が始まるとS1001で、リセット信号123をハイレベルにしてサブCPU115のリセットを解除する。次にS1002で、改竄検証完了通知信号131がハイレベルになったか否かを判定する。ここで改竄検証完了通知信号131がハイレベルになって改竄の検証が成功、即ち、正常に終了したと判定したときはS1003に進む。S1003でリセット回路122は、リセット信号117をハイレベルにしてメインCPU101のリセットを解除して、この処理を終了する。
一方、S1002で改竄検証完了通知信号131がハイレベルにならず、改竄検証が継続中の場合はS1004に進み、WDT部140が強制システムリセット信号132が入力されて、強制システムリセットを実行するように制御されたか否かを判定する。リセット回路122は、強制システムリセット信号132が入力されると、何らかの異常が発生して処理が停止しているとみなして、メインCPU101とサブCPU115をリセットして処理を終える。一方、S1004で強制システムリセット信号132が入力されていないときはS1002へ戻り処理を継続する。
このように制御することにより、WDT部140でタイムアウトが発生した場合、速やかにCPU101とサブCPU115をリセットすることができる。ここで、リセットするのはメインCPU101とサブCPU115と説明してきたが、関連する機能モジュール、もしくはMFP1全体をリセットしてしまっても問題無いことは言うまでもない。
以上説明したように実施形態によれば、サブCPUが実行期間が長い復旧処理を実行する場合でも、不必要なリセット実行を回避することできるようになる。更に、プログラムの改竄を検証している間にサブCPUに何らかの問題が発生して処理が停止してしまった場合でも、WDTによって適切にリカバリ動作を実行できるようになる。
また、サブCPUが、メインCPUをリセット状態に保ちながらプログラムの改竄を検証する際、その検証に要する時間が、所定時間よりも長くなるとWDTからのタイムアウトによるリセット制御が実行される。これにより、検証中のサブCPUの異常も検出できる。
さらに、サブCPUがプログラムの改竄を検証して異常(改竄)を検出すると、検証に要する時間を計時していた第1タイマに代わって、プログラムの復旧処理に要る時間を計時する第2タイマによる計時を行うことで、サブCPUによるプログラムの復旧処理中に、WDTからのタイムアウトによるリセット制御の発生を防止できる。
尚、実施形態で記載した信号の極性はシステムの定めに応じて変更してもよいことは言うまでもない。
また実施形態では、WDT部140、及びリセット回路122を電源制御部118の内部に含む構成を代表例として説明したが、これに限らず、それぞれが信号バス109に接続された形態をとってもよい。
また実施形態で説明した構成要素の一部がSOC(System On Chip)に集積された場合でも、サブCPU115がメインCPU101の起動を制御しつつ、メインCPU BIOS401の改竄検証を行う場合に、実施形態が適用できることは言うまでもない。
また実施形態は、タイマ503を省略し、サブCPU115による復旧処理中はタイマを動作させないという形態をとることで、より少ない回路規模で不要なリセット処理を回避できる。しかしながら、この場合、復旧処理中に何らかの異常が発生した場合の検知ができなくなるため、本実施形態に記載した構成のように2つのタイマを備えた構成とするのが望ましい。
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本発明は上記実施形態に制限されるものではなく、本発明の精神及び範囲から逸脱することなく、様々な変更及び変形が可能である。従って、本発明の範囲を公にするために、以下の請求項を添付する。
1…MFP,101…メインCPU、112…フラッシュROM、115…サブCPU、118…電源制御部、122…リセット回路、140…WDT部、501…WDT制御部、502,503…タイマ、131…改竄検証完了通知信号、132…強制システムリセット信号、141…タイマ切り替え信号
Claims (11)
- 情報処理装置であって、
プログラムを実行して前記情報処理装置を制御する第1CPUと、
前記プログラムを検証する第2CPUと、
前記情報処理装置の動作中に計時を行い、当該計時のクリア制御が第1所定時間内に行われない場合にリセット信号を出力する第1タイマ手段と、
前記第2CPUが前記プログラムの検証で異常を検知したときに計時を行い、当該計時のクリア制御が第2所定時間内に行われない場合にリセット信号を出力する第2タイマ手段と、
前記第1タイマ手段及び前記第2タイマ手段からのリセット信号に基づいて前記第1CPU及び前記第2CPUへのリセット信号を生成するリセット手段と、を有し、
前記第2CPUは、前記プログラムの検証で異常を検知すると前記第1タイマ手段による計時を停止させ、前記第2タイマ手段による計時を開始させて前記プログラムの復旧処理を行うことを特徴とする情報処理装置。 - 前記第1所定時間は、前記第2CPUが前記プログラムの検証に要する時間に、前記第1CPUが起動してから前記第1タイマ手段のクリア制御が実施可能になるまでの時間を加算し、更に、マージン時間を追加した時間であることを特徴とする請求項1に記載の情報処理装置。
- 前記第2所定時間は、前記復旧処理が完了するのに必要な時間にマージン時間を加算した時間であることを特徴とする請求項1又は2に記載の情報処理装置。
- 前記リセット信号は、少なくとも前記第1CPUと前記第2CPUをリセットする信号であることを特徴とする請求項1に記載の情報処理装置。
- 前記リセット手段は、前記第2CPUが前記プログラムの検証を実行している間、前記第1CPUをリセットし、前記第2CPUが前記プログラムの検証で異常を検知しないときは前記第1CPUのリセットを解除することを特徴とする請求項1乃至4のいずれか1項に記載の情報処理装置。
- 前記第2CPUは、前記プログラムのハッシュ値に基づいて前記プログラムを検証することを特徴とする請求項1乃至5のいずれか1項に記載の情報処理装置。
- 第1CPUと、
前記第1CPUが実行するプログラムを検証する第2CPUと、
第1タイマと第2タイマとを有し、当該第1タイマ或いは前記第2タイマの計時に対するリセット制御が所定時間内に行われない場合に、前記第1CPU及び前記第2CPUをリセットするリセット信号を出力するタイマ手段と、を有し、
前記タイマ手段は、前記第2CPUが前記プログラムの検証で異常を検知したときに前記第1タイマによる計時を停止させて前記第2タイマにより計時を行い、前記第2タイマが第1所定時間を計時してタイムアウトすると前記リセット信号を出力することを特徴とする情報処理装置。 - 前記タイマ手段は、前記第2CPUによる前記プログラムの検証に要する時間を前記第1タイマにより計時させ、前記第1タイマの計時が第2所定時間を超えてタイムアウトすると前記リセット信号を出力することを特徴とする請求項7に記載の情報処理装置。
- 前記タイマ手段は、前記第2CPUが前記プログラムの検証に成功したときは、前記第2タイマによる計時を停止させて、前記第1タイマによる前記第1CPUの動作を検証するための計時を開始させることを特徴とする請求項7又は8に記載の情報処理装置。
- 前記第1タイマによる前記第1CPUの動作を検証するための計時では、前記第1CPUは所定時間ごとに前記第1タイマのリセット制御を行うことを特徴とする請求項9に記載の情報処理装置。
- 前記第1所定時間は、前記プログラムの復旧処理が完了するのに必要な時間にマージン時間を加算した時間であることを特徴とする請求項7乃至10のいずれか1項に記載の情報処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019219857A JP2021089607A (ja) | 2019-12-04 | 2019-12-04 | 情報処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019219857A JP2021089607A (ja) | 2019-12-04 | 2019-12-04 | 情報処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021089607A true JP2021089607A (ja) | 2021-06-10 |
Family
ID=76220177
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019219857A Pending JP2021089607A (ja) | 2019-12-04 | 2019-12-04 | 情報処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2021089607A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022249820A1 (ja) | 2021-05-27 | 2022-12-01 | 京セラ株式会社 | 通信制御方法、無線端末、基地局、及びris装置 |
-
2019
- 2019-12-04 JP JP2019219857A patent/JP2021089607A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022249820A1 (ja) | 2021-05-27 | 2022-12-01 | 京セラ株式会社 | 通信制御方法、無線端末、基地局、及びris装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11657125B2 (en) | Information processing apparatus and reset control method | |
US11006013B2 (en) | Image processing apparatus, having second processor to verify boot program has been altered, method of controlling the same, and storage medium | |
US20210011660A1 (en) | Information processing apparatus and control method | |
JP2020177539A (ja) | 情報処理装置、及びその制御方法 | |
US11418671B2 (en) | Information processing apparatus, and method of controlling the same | |
JP2021089607A (ja) | 情報処理装置 | |
JP7321795B2 (ja) | 情報処理装置、情報処理方法およびプログラム | |
JP2013041458A (ja) | データ処理装置及びその制御方法 | |
JP5967945B2 (ja) | 情報処理装置、情報処理装置の制御方法、及びプログラム | |
JP6590722B2 (ja) | 電子機器、その制御方法及びプログラム | |
JP2008229977A (ja) | 画像処理装置,画像処理方法,プログラム,および記録媒体 | |
JP7210238B2 (ja) | 情報処理装置、情報処理装置の制御方法、及び、プログラム | |
JP2020187649A (ja) | 情報処理装置、制御方法、およびプログラム | |
US20230273798A1 (en) | Information processing apparatus and method for controlling information processing apparatus | |
US20220321724A1 (en) | Information processing apparatus and method of notifying verification result of program | |
JP2023167086A (ja) | 情報処理装置及び情報処理装置の制御方法 | |
JP7465107B2 (ja) | 情報処理装置及び方法 | |
JP2021051713A (ja) | 情報処理装置及びリセット制御方法 | |
JP2022182838A (ja) | 情報処理装置とその制御方法 | |
JP2021111916A (ja) | 情報処理装置及びプログラム復旧方法 | |
JP2023167825A (ja) | 情報処理装置、情報処理装置の制御方法 | |
JP2020102129A (ja) | 情報処理装置、情報処理装置の制御方法、及びプログラム | |
JP2023124500A (ja) | 情報処理装置、情報処理装置の制御方法およびプログラム | |
JP2023124088A (ja) | 情報処理装置および情報処理装置の制御方法 | |
JP6291983B2 (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 |