JP2020187649A - Information processing system, control method, and program - Google Patents
Information processing system, control method, and program Download PDFInfo
- Publication number
- JP2020187649A JP2020187649A JP2019093134A JP2019093134A JP2020187649A JP 2020187649 A JP2020187649 A JP 2020187649A JP 2019093134 A JP2019093134 A JP 2019093134A JP 2019093134 A JP2019093134 A JP 2019093134A JP 2020187649 A JP2020187649 A JP 2020187649A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- programs
- information processing
- program
- sub 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
- Accessory Devices And Overall Control Thereof (AREA)
- Facsimiles In General (AREA)
Abstract
Description
本発明は、プロセッサが実行するプログラムの正当性を検証する情報処理装置、制御方法、およびプログラムに関する。 The present invention relates to an information processing device, a control method, and a program for verifying the validity of a program executed by a processor.
従来の画像処理装置(MFP)におけるブートコードの改竄検知方法において、メインCPUが実行するブートコードをメインCPUが起動する前にコントローラが読み出し、コントローラは読み出したブートコードが改竄されていないかを検証する。また、コントローラは読み出したブートコードの改竄を検知した場合、リカバリ用のブートコードをコピーして復旧する、あるいは、メインCPUの動作を停止する方法がある。 In the conventional boot code tampering detection method in an image processing device (MFP), the controller reads the boot code executed by the main CPU before the main CPU starts, and the controller verifies whether the read boot code has been tampered with. To do. Further, when the controller detects that the read boot code has been tampered with, there is a method of copying the boot code for recovery to recover or stopping the operation of the main CPU.
例えば、特許文献1には、第一のブートイメージを検証し、改竄を検知した場合、第二のブートイメージを使用し、使用不可能な場合、第三のブートイメージを実行する制御例が示されている。 For example, Patent Document 1 shows a control example in which the first boot image is verified, the second boot image is used when tampering is detected, and the third boot image is executed when it cannot be used. Has been done.
画像処理装置などの情報処理装置は、メインCPUの他に、別の機能手段を備える場合があり、前記機能手段は、メインCPUとは別のCPUで動作する場合がある。このような場合、それぞれのブートコードの改竄検知処理を行う必要がある。すなわち、メインCPUまたは別のCPUのブートコードが改竄または故障している場合、別のFLASH ROMから起動する、またはリカバリ用のFLASH ROMからデータをコピーする。このため、メインCPUおよび別のCPUのそれぞれにデフォルトのFLASH ROMと、リカバリ用のFLASH ROMとが必要となるため、FLASH ROMが各所に2重に必要となりコストがかさむ課題があった。 An information processing device such as an image processing device may include another functional means in addition to the main CPU, and the functional means may operate on a CPU different from the main CPU. In such a case, it is necessary to perform tampering detection processing of each boot code. That is, if the boot code of the main CPU or another CPU is tampered with or has failed, it boots from another FLASH ROM or copies data from the FLASH ROM for recovery. For this reason, a default FLASH ROM and a FLASH ROM for recovery are required for each of the main CPU and another CPU, so that there is a problem that the FLASH ROM is required twice in various places, which increases the cost.
本発明は、上述の問題に鑑みて成されたものであり、複数のブートコードの改竄検知を行う情報処理装置のコストを低減することを目的とする。 The present invention has been made in view of the above problems, and an object of the present invention is to reduce the cost of an information processing device that detects falsification of a plurality of boot codes.
本発明は、例えば情報処理装置であって、少なくとも1つのコントローラと、複数のプロセッサと、前記複数のプロセッサが実行する複数のプログラムを格納する少なくとも1つの第1のメモリと、前記複数のプログラムのリカバリを行うためのデータを格納する1つの第2のメモリと、を備え、前記少なくとも1つのコントローラは、前記少なくとも1つの第1のメモリから前記複数のプログラムを読み出す読出手段と、前記読出手段で読み出した前記複数のプログラムの正当性を検証する検証手段と、前記検証手段が前記複数のプログラムの少なくともいずれかの正当性が確認できなかった場合に、前記第2のメモリに格納された前記データに基づいて、前記少なくとも1つの第1のメモリに格納された、正当性が確認できなかったプログラムをリカバリするリカバリ手段と、を備えることを特徴とする。 The present invention is, for example, an information processing apparatus, wherein at least one controller, a plurality of processors, at least one first memory for storing a plurality of programs executed by the plurality of processors, and the plurality of programs. A second memory for storing data for performing recovery is provided, and the at least one controller has a read means for reading the plurality of programs from the at least one first memory, and the read means. The verification means for verifying the validity of the plurality of programs read out, and the data stored in the second memory when the verification means cannot confirm the validity of at least one of the plurality of programs. Based on the above, the program is characterized by comprising a recovery means for recovering a program whose validity has not been confirmed, which is stored in at least one first memory.
本発明によれば、複数のブートコードの改竄検知を行う情報処理装置のコストを低減することができる。 According to the present invention, it is possible to reduce the cost of an information processing device that detects falsification of a plurality of boot codes.
以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものではなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。 Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings. It should be noted that the following embodiments do not limit the present invention according to the claims, and not all combinations of features described in the present embodiment are essential for the means for solving the present invention. ..
<第1の実施形態>
以下、本実施形態に係るブートコードの改竄検知処理を実行する情報処理装置(MFP)について説明する。なお、特に断らない限り、本実施形態に係る機能が実行されるのであれば、単体の機器であっても、複数の機器からなるシステムであっても、本発明を適用できることは言うまでもない。
<First Embodiment>
Hereinafter, an information processing device (MFP) that executes falsification detection processing of the boot code according to the present embodiment will be described. It goes without saying that the present invention can be applied to a single device or a system composed of a plurality of devices as long as the functions according to the present embodiment are executed unless otherwise specified.
図1は、本実施形態に係るMFP1の構成を表す図である。図1において、MFP1はメインCPU(Central Processing Unit)101、DRAM(Dynamic Random Access Memory)102、およびネットワークI/F(インタフェース)104を備える。また、MFP1は操作部103、プリンタ部105、スキャナ部106、FAX107、画像処理部111、および電源処理部118を備える。
FIG. 1 is a diagram showing a configuration of the MFP 1 according to the present embodiment. In FIG. 1, the MFP 1 includes a main CPU (Central Processing Unit) 101, a DRAM (Dynamic Random Access Memory) 102, and a network I / F (interface) 104. Further, the MFP 1 includes an
メインCPU101は、MFP1全体の制御を司るプロセッサである。DRAM102は、メインCPU101で実行されるプログラムを格納すると共に一時的なデータのワークエリアとして機能する。操作部103は、ユーザ操作を受付け、操作部I/F113を介してメインCPU101に受け付けたユーザ操作を通知する。ネットワークI/F104は、有線接続または無線接続を介してLAN130と接続して外部機器と通信を行う。プリンタ部105は、画像データを紙面上に印字する。スキャナ部106は、紙面上の画像を光学的に読み取り電気信号に変換してスキャン画像を生成する。FAX107は、公衆回線110と接続して外部機器とファクシミリ通信を行う。信号バス109は、各モジュールを相互に接続し、通信を可能にする。
The
公衆回線110は、FAX107と外部機器を相互接続する。画像処理部111は、ネットワークI/F104で受信したプリントジョブをプリンタ部105で印刷するのに適した画像への変換処理、スキャナ部106で読み取ったスキャン画像のノイズ除去や色空間変換、回転、圧縮等の処理を実行する。また、HDD(Hard Disk Drive)125に保管されたスキャン画像の画像処理を実行する。
The
電源制御部118は、MFP1内の各モジュールの電力供給を制御する。電源線119は、電源制御部118から各モジュールに電力を供給する。電源供給線120は、電源制御部118から商業用AC電源が供給される。
The
また、図1で、MFP1は、リセット回路122、HDD制御部124、HDD125、サブCPU115、サブCPU2 126、FLASH ROM(FLASH Read Only Memory)112、およびFLASH ROM2 127を備える。
Further, in FIG. 1, the MFP 1 includes a
リセット回路122は、システムの電源がONされると所定の遅延時間後にサブCPUへのリセット信号123を「Lo」レベルから「Hi」レベルに遷移する。サブCPUリセット信号123は、リセット回路122から出力されてサブCPU115のリセット端子に接続される。サブCPUリセット信号123が「Hi」レベルになると、サブCPU115はリセットが解除されて起動を開始する。すなわち、リセット回路122は、起動時に後述する改竄検知処理を実行させるトリガとなるリセット信号123をサブCPU115およびサブCPU2 126に送信する。サブCPU115はメインCPU101が実行するブートコード(プログラム)の正当性を検証するためのコントローラである。サブCPU2 126は、HDD制御部124が実行するブートコード(プログラム)の正当性を検証するためのコントローラである。すなわち、サブCPUは、複数のCPUのそれぞれに対して個別に設けられる。
When the power of the system is turned on, the
HDD125は、HDD制御部124を介してメインCPU101で実行されるプログラムを格納すると共にプリントジョブやスキャンジョブ等のスプール領域としても利用される。また、スキャン画像を保管し再利用するための領域としても利用される。HDD制御部124は、HDD125のデータ入出力を制御する。
The HDD 125 stores a program executed by the
FLASH ROM112は、メインCPU101で実行されるブートコードを含むプログラムを格納すると共にMFP1のデフォルト設定値を記憶するための記憶部(メモリ)である。FLASH ROM127は、HDD制御部124で実行されるブートコードを含むプログラムを格納するための記憶部(メモリ)である。すなわち、FLASH ROMは、複数のCPUのそれぞれに対して個別に設けられる。一例では、FLASH ROM112に格納されたデータは、暗号化されている。操作部I/F113は、操作部103と信号バス109を相互接続する。Serial Peripheral Interface(SPI)バス114は、メインCPU101、FLASH ROM112、サブCPU115を相互接続する。
The
サブCPU115は、MFP1の起動時に、メインCPU101が起動する前にFLASH ROM112からブートコードを読み出して、正当性を検証する。すなわち、改竄がされていないか、FLASH ROM112の故障などによりデータの変化が発生していないかを検証する。改竄の検知方法としては、例えばブートコードのデジタル署名の公開鍵情報(ハッシュ値を公開鍵暗号化した値)を製造時にサブCPU115内のOTP(One Time Program)304領域に記憶させておく。そして、読み出したブートコードをこの公開鍵情報で復号化して検証を行う。公開鍵暗号の方法としてはRSA2048、ECDSA(Elliptic Curve Digital Signature Algorithm)などを含む。リセット信号117は、サブCPU115のGPIOポートから出力されてメインCPU101のリセット端子に接続される。
When the MFP1 is started, the
サブCPU2 126は、MFP1の起動時に、HDD制御部124が起動する前にFLASH ROM2 127からブートコードを読み出して、正当性を検証する。すなわち、改竄がされていないか、FLASH ROM2 127の故障などによりデータの損失が発生していないかを検証する。改竄の検知方法としては、例えばブートコードのデジタル署名の公開鍵情報(ハッシュ値を公開鍵暗号化した値)を製造時にサブCPU115内のOTP(One Time Program)領域に記憶させておく。そして、読み出したブートコードをこの公開鍵情報で復号化して検証を行う。公開鍵暗号の方法としてはRSA2048、ECDSA(Elliptic Curve Digital Signature Algorithm)などを含む。リセット信号129は、サブCPU2 126のGPIOポートから出力されてHDD制御部124のリセット処理用に接続される。
The sub CPU 2 126 reads the boot code from the FLASH ROM 2 127 at the time of starting the MFP 1 before the
次に、図2を参照してメインCPU101の構成を説明する。図2において、メインCPU101は、CPUコア201、SPI Master202を備える。CPUコア201は、CPUの基本機能を担っている。SPI Master202は、外部のSPIデバイスと相互に接続してデータの読み書きを行う。
Next, the configuration of the
また、メインCPU101は、外部のSPIデバイスと電気的に接続するためにSPIバス206を備える。信号バス209は、メインCPU101内の各モジュールを接続する。「Lo」レベルのリセット信号117が入力された場合、メインCPU101はリセット状態に遷移する。「Hi」レベルのリセット信号117が入力された場合、メインCPU101はリセット解除状態に遷移する。リセット信号117がリセット状態からリセット解除状態に遷移すると、CPUコア201は先ず、FLASH ROM112内に記憶されているメインCPU BIOS501をDRAM102にロードして実行する。
Further, the
次に、図3を参照してサブCPU115の構成を説明する。図3において、サブCPU115はCPUコア301、SPI Master302、GPIO(General−purpose input/output)303、およびOTP(One Time Programmable)を備える。また、サブCPU115はSRAM305、暗号処理部308、Boot ROM(Read Only Memory)310、およびCrypto RAM311を備える。サブCPU115内のモジュールは、信号バス309によって通信可能に接続される。
Next, the configuration of the
CPUコア301は、サブCPU115の基本機能を担っている。SPI Master302は、外部のSPIデバイスと相互に接続してデータの読み書きを行う。本実施形態において、サブCPU115のSPI Master302はバス114およびバス128に接続する。GPIO303は、外部のデバイスと相互に接続してデータの送受信を行う。サブCPU115のGPIO303は、メインCPU101にリセット信号117を送信する。OTPメモリ領域304は、製造時にサブCPU FW(Firmware)のハッシュ値を公開鍵暗号化した値およびTagのアドレスが書き込まれる。この領域に書き込まれたデータは一度書き込まれると二度と書換えることはできない。
The
SRAM305は、サブCPU115内のワークメモリとして使用される。暗号処理部308は、公開鍵暗号化した値からサブCPU FWのハッシュ値を復号するほか、公開鍵暗号化したメインCPU BIOSのハッシュ値を復号する。Boot ROM310は、サブCPU115のブートコードを記憶する。
The
GPIO303が出力するリセット信号117が「Lo」レベルの場合、メインCPU101はリセット状態となり、リセット信号117が「Hi」レベルの場合、メインCPU101はリセット解除状態となる。リセット信号117がリセット状態からリセット解除状態に遷移すると、CPUコア301は先ず、Boot ROM310から自身のブートコードを読み出し実行する。Crypto RAM311は、暗号処理部308で利用する機密性の高いデータ等を記憶する。
When the
なお、サブCPU2 126も、サブCPU115と同様の構成を備える。サブCPU2 126のGPIOは、HDD制御部124にリセット信号129を送信する。また、サブCPU2 126のSPI Masterはバス128に接続する。
The sub CPU 2 126 also has the same configuration as the
次に、図4を参照してHDD制御部124およびHDD125の構成を説明する。図4において、HDD制御部124はCPUコア401、SPI Master402、HDD転送制御部1 403、およびHDD転送制御部2 404を備える。HDD制御部124内のモジュールは、内部データバス407によって通信可能に接続される。
Next, the configurations of the
CPUコア401は、HDD制御部124を制御するためのCPUの基本機能を担っている。SPI Master402は、外部のSPIデバイスと相互に接続してデータの読み書きを行う。
The
HDD転送制御部1 403のおよびHDD転送制御部2 404は、CPUコア401の命令により、HDD125の読み書き処理の制御を行う。HDD125の読み出し動作の場合、CPUコア401はHDD転送制御部2 404にHDDの読み出しを設定する。そして、設定されたデータをHDD転送制御部2 404がHDDから読み出し、SATAインタフェースバス408を経由してCPUコア401に送信する。そして、HDD転送制御部2 404、HDD制御部124の内部データバス407、およびHDD転送制御部1 403を経由して、データバス405を介してDRAM102に書き込む動作を行う。
The HDD transfer control unit 1 403 and the HDD transfer control unit 2 404 control the read / write process of the
また、HDD125の書き込み動作の場合、CPUコア401はHDD転送制御部2 404にHDD125の書き込みを設定する。その後、データバス405から転送されたデータをHDD転送制御部1 403、HDD制御部124の内部データバス407、HDD転送制御部2 404、およびSATAインタフェースバス408を経由して、HDD125へ書き込み動作を実行する。SPIバス406は、外部のSPIデバイスと電気的に接続する。
Further, in the case of the writing operation of the
CPUコア401に入力されるリセット信号129が「Lo」レベルである場合、HDD制御部124はリセット状態となり、リセット信号129が「Hi」レベルである場合、HDD制御部124はリセット解除状態となる。リセット信号129がリセット状態からリセット解除状態に遷移すると、CPUコア401は先ず、FLASH ROM2 127内に記憶されているHDD制御部CPU BIOSをSPI Master402にロードして実行する。
When the
次に、図5を参照してFLASH ROM112のメモリマップの一例を説明する。図5において、FLASH ROM112のメモリマップは、メインCPU BIOS501、メインCPU BIOS署名502、Tag503、サブCPU FW504、FW署名505、およびROM−ID506を含む。また、FLASH ROM112のメモリマップは、Tag0 507、Tag1 508、リカバリブートコード0 509、およびリカバリブートコード1 510を含む。
Next, an example of the memory map of the
メインCPU BIOS501には、メインCPU101で実行されるコードが記憶される。BIOS署名502には、メインCPU BIOSのハッシュ値に対するRSA署名値が格納される。Tag503は、サブCPU FW504の先頭アドレスが記憶されている。Tag503自体のアドレスはOTP304に記憶されている。
The code executed by the
サブCPU FW504には、サブCPU115で実行されるコードが記憶されている。FW署名505には、サブCPU FW504、またはサブCPU FW504の先頭の特定部分のECDSA署名値が記憶されている。ROM−ID506は、メインCPU BIOS501の先頭アドレス、サイズおよびメインCPU BIOS署名502のアドレスが記憶されている。
The code executed by the
Tag0 507には、リカバリブートコード0 509の先頭アドレスが記憶されている。Tag0 507自体のアドレスはOTP304に記憶されている。Tag1 508には、リカバリブートコード1 510の先頭アドレスが記憶されている。Tag1 508自体のアドレスはOTP304に記憶されている。
The start address of the recovery boot code 0 509 is stored in
次に、図13を参照してFLASH ROM2 127のメモリマップの一例を説明する。図13において、FLASH ROM2 127のメモリマップは、HDD制御部CPU BIOS1301、HDD制御部CPU署名1302、Tag1303、サブCPU FW1304、FW署名1305、およびROM−ID1306を含む。
Next, an example of the memory map of the
HDD制御部CPU BIOS1301は、HDD制御部124のCPUコア401によって実行されるコードが記憶される。HDD制御部CPU署名1302には、HDD制御部CPU BIOSのハッシュ値に対するRSA署名値が格納される。Tag1303には、サブCPU FW1304の先頭アドレスが記憶されている。
The HDD control
サブCPU FW1304には、サブCPU2 126によって実行されるコードが記憶されている。FW署名1305には、サブCPU FW1304の先頭の特定部分のECDSA署名値が記憶されている。ROM−ID1306は、HDD制御部CPU BIOS1301の先頭アドレス、サイズおよびHDD制御部CPU署名1302のアドレスが記憶されている。
The code executed by the sub CPU 2 126 is stored in the
次に、本実施形態におけるサブCPU115の処理手順を図6のフローチャートを用いて説明する。図6の処理は、MFP1の電源投入時にサブCPU115によって実行される。
Next, the processing procedure of the
まず、S601で、サブCPU115は起動すると直ちにBoot ROM310内のコードを実行し、SPIバス114を介してFLASH ROM112からサブCPU FW504をSRAM305に読み込む。続いて、サブCPU115は処理をS602に進め、暗号処理部308によってFW署名505をOTP304内の公開鍵で復号化して、正解となるハッシュ値を得る。続いてサブCPU 115は処理をS603に進め、暗号処理部308によってサブCPU FW504のハッシュ値を計算する。次にサブCPU115は処理をS604に進め、S602で取得したハッシュ値とS603で計算したハッシュ値を比較し、不一致の場合(S604でNO)は処理を終了する。S602のハッシュ値とS603のハッシュ値とが一致した場合(S604でYES)、サブCPU115は処理をS605に進め、サブCPU FW504をSRAM305に読み込み、サブCPU115はサブCPU FW504を実行する。
First, in S601, as soon as the
次にサブCPU115は処理をS606に進め、ROM−ID506をFLASH ROM112からCrypto RAM311に読み込む。続いてサブCPU115は処理をS607に進め、ROM−ID506からメインCPU BIOS501のアドレスとメインCPU BIOS署名502のアドレスとを得る。次にサブCPU115は処理をS608に進め、メインCPU BIOS署名502をSRAM305に読み込む。続いてサブCPU115は処理をS609に進め、暗号処理部308によってメインCPU BIOS署名502をサブCPU FW504に付属している公開鍵で復号化してハッシュ値を得る。
Next, the
次にサブCPU115は処理をS610に進め、メインCPU BIOS501をSRAM305に読み込む。次にサブCPU115はS611に進め、暗号処理部308によってメインCPU BIOS501のハッシュ値を計算する。そして、サブCPU115はS612に処理を進め、S609のハッシュ値とS611のハッシュ値とを比較する。S609のハッシュ値とS611のハッシュ値とが一致する場合(S612でYES)、サブCPU115は処理をS618に進める。また、S609のハッシュ値とS611のハッシュ値とが不一致の場合(S612でNO)、サブCPU115は処理をS613に進め、OTP304のリカバリ用Tagを取得する。すなわち、サブCPU115は、S613において、S611で計算したハッシュ値がS609のハッシュ値と一致しないため、メインCPU BIOS501に改竄またはデータの破損が発生したと判定し、リカバリ用Tag0 507を取得する。リカバリ用Tag0 507にはリカバリブートコード0 509の先頭アドレスが記憶されている。
Next, the
続いて、サブCPU115は処理をS614に進め、再度、暗号処理部308によってメインCPU BIOS署名502をサブCPU FW504に付属している公開鍵で復号化してハッシュ値を得る。次にサブCPU115は処理をS615に進め、リカバリブートコード0 509をSRAM305に読み込む。なお、一例では、S615においてサブCPU115はリカバリブートコード0 509でメインCPU BIOSを上書きすることでメインCPU BIOSのリカバリを行ってもよい。
Subsequently, the
次にサブCPU115は処理をS616に進め、暗号処理部308によってリカバリブートコード0 509のハッシュ値を計算する。そして、サブCPU115は処理をS617に進め、S614のハッシュ値とS616のハッシュ値とを比較する。S614のハッシュ値とS616のハッシュ値とが一致した場合(S617でYES)は、サブCPU115は処理をS618に進めてGPIO303を制御して「Hi」レベルのリセット信号117を出力する。S614のハッシュ値とS616のハッシュ値とが一致しない場合(S617でNO)、サブCPU115は図6の処理を終了する。
Next, the
次に、サブCPU2 126の処理手順を図12のフローチャートを用いて説明する。図12の処理は、サブCPU2 126が「Hi」レベルのサブCPUリセット信号123を入力された場合に実行される。
Next, the processing procedure of the sub CPU 2 126 will be described with reference to the flowchart of FIG. The process of FIG. 12 is executed when the sub CPU 2 126 receives a “Hi” level sub
まず、S1201において、サブCPU2 126はHDD制御部CPU BIOS署名1302をFLASH ROM2 127から取得する。続いて、サブCPU2 126はS1202に処理を進め、HDD制御部CPU BIOS署名1302をSRAM305に読み込む。続いてサブCPU2 126は処理をS1203に進め、暗号処理部308によってHDD制御部CPU BIOS署名1302をサブCPU FW1304に付属している公開鍵で復号化してハッシュ値を得る。次にサブCPU2 126は処理をS1204に進め、HDD制御部CPU BIOS1301をSRAM305に読み込む。
First, in S1201, the sub CPU 2 126 acquires the HDD control unit
次にサブCPU2 126は処理をS1205に進め、暗号処理部308によってHDD制御部CPU BIOS1301のハッシュ値を計算する。そして、サブCPU2 126は処理をS1206に進め、S1203のハッシュ値とS1205のハッシュ値とを比較する。S1203のハッシュ値とS1205のハッシュ値とが不一致の場合(S1206でNO)、サブCPU2 126は、処理をS1207に進めてOTP304のリカバリ用Tag1を取得する。すなわち、S1203のハッシュ値とS1205のハッシュ値とが一致しないため、サブCPU2 126はS1207でHDD制御部CPU BIOS1301に改竄または故障が発生したと判定し、リカバリ用Tag1 508を取得する。リカバリ用Tag1 508にはHDD制御部CPU BIOS1301のリカバリ用のリカバリブートコード1 510の先頭アドレスが記憶されている。
Next, the sub CPU 2 126 advances the processing to S1205, and the
ここで、サブCPU2 126は、HDD制御部CPU BIOS1301に対応するリカバリブートコード1 510を、Inter−Integrated Circuit(I2C)バス128を経由して、FLASH ROM112から取得する。ここで、サブCPU2 126は、不図示のバスによってFLASH ROM112に接続されてもよいし、サブCPU115を介してFLASH ROM112にアクセスしてもよい。そして、サブCPU2 126はS1208に進め、FLASH ROM2 127への上書きによる書き換えを行うことでHDD制御部CPU BIOS1301のリカバリを行う。続いて、サブCPU2 126は処理をS1209に進め、書き換えの完了を確認する。書き換えが完了していない場合は(S1209でNO)、処理をS1208に戻す。一方、書き換えが完了した場合(S1209でYES)は、処理をS1210に進め、暗号処理部308によって署名をサブCPU FW1304に付属している公開鍵で復号化してハッシュ値を得る。
Here, the sub CPU 2 126 acquires the recovery boot code 1 510 corresponding to the HDD control
続いて、サブCPU2 126は処理をS1211に進め、FLASH ROM2 127から書き換え後のHDD制御部CPU BIOS1301をSRAM305に読み込む。次にサブCPU2 126は処理をS1212に進め、暗号処理部308によって書き換え後の、HDD制御部CPU BIOS1301のハッシュ値を計算する。そして、サブCPU2 126は処理をS1213に進め、S1210のハッシュ値とS1212のハッシュ値とを比較する。S1210のハッシュ値とS1212のハッシュ値とが一致した場合(S1213でYES)、サブCPU2 126は処理をS1214に進め、GPIO303を制御して「Hi」レベルのリセット信号129を出力する。S1210のハッシュ値とS1212のハッシュ値とが一致しない場合は図12の処理を終了する。
Subsequently, the sub CPU 2 126 advances the process to S1211, and reads the rewritten HDD control
以上説明した様に、本実施形態に係るMFP1は、メインCPU101およびHDD制御部124の構成となるCPUコア401において、起動時に各々のROMのブートコードおよびシステムファームウェアの改竄検知を行う。これによって、検証が不一致の場合、各々のROMのリカバリ用のデータを1つのFLASH ROM112に配置することが可能となる。これにより、1つのFLASH ROMから各領域のリカバリを実行することが可能となり、コストを安価に製造し、かつ、システムのセキュリティを確保することが可能となる。
As described above, the MFP 1 according to the present embodiment detects falsification of the boot code and system firmware of each ROM at the time of booting in the
なお、本実施形態では、正当性が確認できなかった場合に、サブCPUがリカバリブートコードで起動用のプログラムを上書きするものとして説明を行ったが、サブCPUはリカバリブートコードに基づいて誤り訂正を行い、ブートコードの修復を行ってもよい。 In the present embodiment, when the validity cannot be confirmed, the sub CPU overwrites the boot program with the recovery boot code, but the sub CPU corrects the error based on the recovery boot code. And repair the boot code.
<第2の実施形態>
第2の実施形態では、複数のCPUのための複数のブートコードのリカバリ用データを格納する1つのFLASH ROMを、複数のCPUのための複数のブートコードを格納するFLASH ROMとは別個のROMとして備えるMFPについて説明する。なお、特に断らない限り、本実施形態に係る機能が実行されるのであれば、単体の機器であっても、複数の機器からなるシステムであっても、本発明を適用できることは言うまでもない。また、第1の実施形態と同様の構成または処理には同一の参照符号を付し、説明は省略する。
<Second embodiment>
In the second embodiment, one FLASH ROM that stores recovery data of a plurality of boot codes for a plurality of CPUs is a ROM that is separate from the FLASH ROM that stores a plurality of boot codes for a plurality of CPUs. The MFP provided as is described. It goes without saying that the present invention can be applied to a single device or a system composed of a plurality of devices as long as the functions according to the present embodiment are executed unless otherwise specified. Further, the same reference numerals are given to the same configurations or processes as in the first embodiment, and the description thereof will be omitted.
図7は、本実施形態に係るMFP1001の構成を表す図である。図7において、MFP1001は、SPIバス114に接続されたリカバリ用FLASH ROM(FLASH Read Only Memory)131を備える。FLASH ROM131は、メインCPU101およびHDD制御部124の構成となるCPUコア401で実行されるブートコードを含むプログラムのリカバリデータを格納すると共にMFP1のデフォルト設定値を記憶する。
FIG. 7 is a diagram showing the configuration of the
図8は、リカバリ用FLASH ROM 131のメモリマップを示す図である。図8において、リカバリ用FLASH ROM 131のメモリマップは、Tag0 801、Tag1 802、リカバリブートコード0 803、およびリカバリブートコード1 804を含む。
FIG. 8 is a diagram showing a memory map of the
Tag0 801には、リカバリブートコード0 803の先頭アドレスが記憶されている。Tag1 802には、リカバリブートコード1 804の先頭アドレスが記憶されている。リカバリブートコード0 803には、メインCPU101で実行されるコードが記憶されている。リカバリブートコード1 804には、HDD制御部124におけるCPUコア401で実行されるコードが記憶されている。
The start address of the recovery boot code 0 803 is stored in Tag 0 801. The start address of the recovery boot code 1 804 is stored in the Tag 1 802. The recovery boot code 0 803 stores the code executed by the
次に、本実施形態におけるサブCPU115およびサブCPU2 126の処理手順を図9のフローチャートを用いて説明する。図9のフローチャートは、MFP1001の電源投入時に、サブCPU2 126によって実行される。
Next, the processing procedure of the
まず、サブCPU2 126は起動するとS901でBoot ROM310内のコードを実行し、SPIバス128を介してFLASH ROM2 127からサブCPU FW1104をSRAM305に読み込む。次にサブCPU2 126は処理をS902に進め、暗号処理部308によってFW署名1105をOTP304内の公開鍵で復号化して、ハッシュ値を得る。続いてサブCPU2 126は処理をS903に進め、暗号処理部308によってサブCPU FW1104のハッシュ値を計算する。次にサブCPU2 126は処理をS904に進め、S902において復号化で得られたハッシュ値と、S903において計算したハッシュ値を比較する。S902のハッシュ値とS903のハッシュ値とが一致する場合(S904でYES)は処理をS910に進める。
First, when the sub CPU 2 126 is started, the code in the
S902のハッシュ値とS903のハッシュ値とが不一致の場合(S904でNO)はS905に処理を進め、OTP304のリカバリ用TAGを取得する。すなわち、S902のハッシュ値とS903のハッシュ値とが一致しないため、サブCPU2 126はサブCPU FWに改竄または故障が発生したと判定し、リカバリ用Tag1 507を取得する。リカバリ用Tag1 508にはリカバリブートコード1 510の先頭アドレスが記憶されている。 If the hash value of S902 and the hash value of S903 do not match (NO in S904), the process proceeds to S905 and the recovery TAG of OTP304 is acquired. That is, since the hash value of S902 and the hash value of S903 do not match, the sub CPU 2 126 determines that the sub CPU FW has been tampered with or has a failure, and acquires the recovery Tag 1 507. The recovery Tag 1 508 stores the start address of the recovery boot code 1 510.
続いて、サブCPU2 126は処理をS906に進め、再度、暗号処理部308によって署名をサブCPU FW504に付属している公開鍵で復号化してハッシュ値を得る。次にサブCPU2 126は処理をS907に進め、リカバリ用FLASH ROM131からリカバリブートコード1 510をSRAM305に読み込む。次に、サブCPU2 126は処理をS908に進め、サブCPU2 126の暗号処理部308によってリカバリブートコード1 510のハッシュ値を計算する。そして、サブCPU2 126は処理をS909に進め、S906のハッシュ値とS908のハッシュ値とを比較する。S906のハッシュ値とS908のハッシュ値とが一致しない場合(S909でNO)は図9の処理を終了する。S906のハッシュ値とS908のハッシュ値とが一致する場合(S909でYES)は、サブCPU2 126は処理をS910に進め、GPIO303を制御して「Hi」レベルのリセット信号129を出力する。
Subsequently, the sub CPU 2 126 advances the processing to S906, and the
以上説明した様に、本実施形態に係るMFP1001は、メインCPU101およびHDD制御部124の構成となるCPUコア401において、各々のROMのブートコードの改竄検知を行う。これによって、検証が不一致の場合、ブートコードのリカバリ処理を行うROMとして、FLASH ROM131を構成することも可能となる。
As described above, the
<第3の実施形態>
第3の実施形態では、複数のCPUのための複数のブートコードを格納するFLASH ROMと、複数のブートコードの正当性を検証するコントローラとの間のインタフェースに応じてリカバリ用データのプロトコル変換を行うMFPについて説明する。なお、特に断らない限り、本発明の機能が実行されるのであれば、単体の機器であっても、複数の機器からなるシステムであっても、本発明を適用できることは言うまでもない。また、第1または第2の実施形態と同様の構成または処理には同一の参照符号を付し、説明は省略する。
<Third embodiment>
In the third embodiment, the protocol conversion of the recovery data is performed according to the interface between the FLASH ROM that stores the plurality of boot codes for the plurality of CPUs and the controller that verifies the validity of the plurality of boot codes. The MFP to be performed will be described. It goes without saying that the present invention can be applied to a single device or a system composed of a plurality of devices as long as the functions of the present invention are executed unless otherwise specified. Further, the same reference numerals are given to the same configurations or processes as in the first or second embodiment, and the description thereof will be omitted.
本実施形態ではメインCPU101およびHDD制御部124のCPUコア401において、各々のROMのブートコードを検証するサブCPU115とサブCPU2 126の接続インタフェースが異なる場合の処理について説明する。
In the present embodiment, in the
まず、図10を参照して、本実施形態に係るMFP1101の構成例を説明する。MFP1101は、SPIバス114に接続されたリカバリ用FLASH ROM131を備える。また、サブCPU115は、SPIバスと異なるI2Cバス132に接続し、プロトコル変換を行う。I2Cバス132を介して、サブCPU2 126、FLASH ROM2 127、HDD制御部124の構成となるCPUコア401を相互接続する構成を備える。
First, a configuration example of the
図11は、電源投入時にサブCPU2 126によって実行される処理手順の一例を示す。 FIG. 11 shows an example of a processing procedure executed by the sub CPU 2 126 when the power is turned on.
まず、サブCPU2 126は起動するとS1101でBoot ROM310内のコードを実行し、I2Cバス132を介してFLASH ROM2 127からサブCPU FW1104をSRAM305に読み込む。次にサブCPU2 126は処理をS1102に進め暗号処理部308によってFW署名1105をOTP304内の公開鍵で復号化して、正解となるハッシュ値を得る。続いてサブCPU2 126は処理をS1103に進め、暗号処理部308によってサブCPU FW1104のハッシュ値を計算する。次にサブCPU2 126は処理をS1104に進め、S1102において復号化で得られたハッシュ値とS1103において計算したハッシュ値とを比較する。S1102のハッシュ値とS1103のハッシュ値とが一致する場合(S1104でYES)はサブCPU2 126は処理をS1111に進める。S1102のハッシュ値とS1103のハッシュ値とが不一致の場合(S1104でNO)はS1105に処理を進め、OTP304のリカバリ用TAGを取得する。リカバリ用Tag1 508にはリカバリブートコード1 510の先頭アドレスが記憶されている。
First, when the sub CPU 2 126 is started, the code in the
続いて、サブCPU2 126は処理をS1106に処理を進め、再度、暗号処理部308によって署名をサブCPU FW504に付属している公開鍵で復号化してハッシュ値を得る。次にサブCPU115はS1107に処理を進め、リカバリブートコード1 510のインタフェース変換を行い、SPIからI2Cのインタフェース変換を行い、サブCPU2 126にリカバリブートコード1 510を送信する。次にサブCPU2 126は処理をS1108に進め、リカバリブートコード1 510をSRAM305に上書きする。次にサブCPU2 126は処理をS1109に進め、暗号処理部308によってリカバリブートコード1 510のハッシュ値を計算する。そして、サブCPU2 126は処理をS1110に進め、S1106のハッシュ値とS1109のハッシュ値とを比較する。S1106のハッシュ値とS1109のハッシュ値とが一致した場合(S1110でYES)はサブCPU2 126は処理をS1111に進め、GPIO303を制御して「Hi」レベルのリセット信号129を出力する。
Subsequently, the sub CPU 2 126 advances the processing to S1106, and the
以上説明した様に、本実施形態に係るMFP1101は、メインCPU101およびHDD制御部124のCPUコア401において、各々のROMのブートコードの改竄検知を行う。また、検証が不一致におけるブートコードのリカバリ処理において、サブCPU115と各々のFLASH ROMとの間の接続インタフェースにおいて、異なるプロトコルの場合もインタフェース変換を行う。これによって、異なるプロトコルを用いるFLASH ROMを用いたリカバリ対応処理が可能となる。
As described above, the
<その他の実施形態>
上述の各実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
<Other Embodiments>
Also in the process of supplying a program that realizes one or more functions of each of the above-described embodiments to a system or device via a network or storage medium, and reading and executing the program by one or more processors in the computer of the system or device. It is feasible. It can also be realized by a circuit (for example, ASIC) that realizes one or more functions.
1:MFP、101:メインCPU、112:FLASH ROM、115:サブCPU、117:リセット信号 1: MFP, 101: Main CPU, 112: FLASH ROM, 115: Sub CPU, 117: Reset signal
Claims (17)
少なくとも1つのコントローラと、複数のプロセッサと、前記複数のプロセッサが実行する複数のプログラムを格納する少なくとも1つの第1のメモリと、前記複数のプログラムのリカバリを行うためのデータを格納する1つの第2のメモリと、を備え、
前記少なくとも1つのコントローラは、
前記少なくとも1つの第1のメモリから前記複数のプログラムを読み出す読出手段と、
前記読出手段で読み出した前記複数のプログラムの正当性を検証する検証手段と、
前記検証手段が前記複数のプログラムの少なくともいずれかの正当性が確認できなかった場合に、前記第2のメモリに格納された前記データに基づいて、前記少なくとも1つの第1のメモリに格納された、正当性が確認できなかったプログラムをリカバリするリカバリ手段と、
を備えることを特徴とする情報処理装置。 It is an information processing device
At least one controller, a plurality of processors, at least one first memory for storing a plurality of programs executed by the plurality of processors, and one first memory for storing data for recovering the plurality of programs. With 2 memories,
The at least one controller
A reading means for reading the plurality of programs from the at least one first memory, and
A verification means for verifying the validity of the plurality of programs read by the reading means, and
When the verification means cannot confirm the validity of at least one of the plurality of programs, the verification means is stored in the at least one first memory based on the data stored in the second memory. , Recovery means to recover programs whose validity could not be confirmed,
An information processing device characterized by being equipped with.
前記検証手段が前記複数のプログラムの少なくともいずれかの正当性が確認できた場合に、正当性が確認できたプログラムに対応するプロセッサに、前記正当性が確認できたプログラムのロードを促すリセット信号を送信するリセット手段を有することを特徴とする請求項1から5のいずれか1項に記載の情報処理装置。 The at least one controller
When the verification means can confirm the validity of at least one of the plurality of programs, a reset signal prompting the processor corresponding to the program whose validity has been confirmed to load the program whose validity has been confirmed is sent. The information processing apparatus according to any one of claims 1 to 5, further comprising a reset means for transmitting.
前記情報処理装置の全体を制御する第1のプロセッサと、
前記第1のプロセッサが実行する第1のプログラムを格納する第1のメモリと、
記憶部のデータ入出力を制御する第2のプロセッサと、
前記第2のプロセッサが実行する第2のプログラムを格納する第2のメモリと、
コントローラと、
前記第1および第2のプログラムのリカバリを行うためのデータを格納する第3のメモリと、
を備え、
前記コントローラは、
前記第1および第2のメモリから前記第1および第2のプログラムを読み出す読出手段と、
前記読出手段で読み出した前記第1および第2のプログラムの正当性を検証する検証手段と、
前記検証手段が前記第1および第2のプログラムの少なくともいずれかの正当性が確認できなかった場合に、前記第3のメモリに格納された前記データに基づいて、前記第1および第2のプログラムの少なくともいずれかに格納された、正当性が確認できなかったプログラムをリカバリするリカバリ手段と、
を有することを特徴とする情報処理装置。 It is an information processing device
A first processor that controls the entire information processing device,
A first memory for storing a first program executed by the first processor, and
A second processor that controls the data input / output of the storage unit,
A second memory for storing a second program executed by the second processor, and
With the controller
A third memory for storing data for recovering the first and second programs, and
With
The controller
A reading means for reading the first and second programs from the first and second memories, and
Verification means for verifying the validity of the first and second programs read by the reading means, and
When the verification means cannot confirm the validity of at least one of the first and second programs, the first and second programs are based on the data stored in the third memory. A recovery method for recovering unvalidated programs stored in at least one of
An information processing device characterized by having.
複数のプロセッサが実行する複数のプログラムを格納する少なくとも1つの第1のメモリから前記複数のプログラムをロードするロード工程と、
前記ロード工程において読み出した前記複数のプログラムの正当性を検証する検証工程と、
前記検証工程において前記複数のプログラムの少なくともいずれかの正当性が確認できなかった場合に、前記複数のプログラムのリカバリを行うためのデータを格納する1つの第2のメモリに格納された前記データに基づいて、前記少なくとも1つの第1のメモリに格納された、正当性が確認できなかったプログラムをリカバリするリカバリ工程と、
を含むことを特徴とする制御方法。 It is a control method for information processing equipment.
A loading process of loading the plurality of programs from at least one first memory for storing a plurality of programs executed by a plurality of processors.
A verification step for verifying the validity of the plurality of programs read in the loading step, and a verification step.
When the legitimacy of at least one of the plurality of programs cannot be confirmed in the verification step, the data stored in one second memory for storing the data for recovering the plurality of programs Based on this, a recovery step of recovering an unvalidated program stored in at least one first memory,
A control method characterized by including.
前記第1のプロセッサが実行する第1のプログラムを格納する第1のメモリと、
記憶部のデータ入出力を制御する第2のプロセッサと、
前記第2のプロセッサが実行する第2のプログラムを格納する第2のメモリと、
コントローラと、
前記第1および第2のプログラムのリカバリを行うためのデータを格納する第3のメモリと、
を備える情報処理装置の制御方法であって、
前記第1および第2のメモリから前記第1および第2のプログラムを読み出す読出工程と、
前記読出工程において読み出した前記第1および第2のプログラムの正当性を検証する検証工程と、
前記検証工程において前記第1および第2のプログラムの少なくともいずれかの正当性が確認できなかった場合に、前記第3のメモリに格納された前記データに基づいて、前記第1および第2のプログラムの少なくともいずれかに格納された、正当性が確認できなかったプログラムをリカバリするリカバリ工程と、
を含むことを特徴とする制御方法。 The first processor that controls the entire information processing device,
A first memory for storing a first program executed by the first processor, and
A second processor that controls the data input / output of the storage unit,
A second memory for storing a second program executed by the second processor, and
With the controller
A third memory for storing data for recovering the first and second programs, and
It is a control method of an information processing device provided with
A read step of reading the first and second programs from the first and second memories, and
A verification step for verifying the validity of the first and second programs read in the reading step, and
When the validity of at least one of the first and second programs cannot be confirmed in the verification step, the first and second programs are based on the data stored in the third memory. A recovery process that recovers unvalidated programs stored in at least one of
A control method characterized by including.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019093134A JP2020187649A (en) | 2019-05-16 | 2019-05-16 | Information processing system, control method, and program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019093134A JP2020187649A (en) | 2019-05-16 | 2019-05-16 | Information processing system, control method, and program |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2020187649A true JP2020187649A (en) | 2020-11-19 |
Family
ID=73221836
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019093134A Pending JP2020187649A (en) | 2019-05-16 | 2019-05-16 | Information processing system, control method, and program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2020187649A (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11893397B2 (en) | 2021-10-01 | 2024-02-06 | Fujitsu Limited | Non-transitory computer-readable recording medium, control method, and information processing device |
-
2019
- 2019-05-16 JP JP2019093134A patent/JP2020187649A/en active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11893397B2 (en) | 2021-10-01 | 2024-02-06 | Fujitsu Limited | Non-transitory computer-readable recording medium, control method, and information processing device |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6226709B2 (en) | Image forming apparatus, control method therefor, and program | |
JP2020177539A (en) | Information processing device and control method thereof | |
US8290159B2 (en) | Data recovery method, image processing apparatus, controller board, and data recovery program | |
JP6362483B2 (en) | Information processing apparatus, information processing method, and program | |
JP7100502B2 (en) | Information processing equipment, its control method, and programs | |
JP7170482B2 (en) | Information processing device, its control method, and program | |
JP2018022985A (en) | Information processing apparatus, control method of the same, and program | |
JP4511264B2 (en) | Image forming apparatus and information output method of the image forming apparatus | |
JP2020187649A (en) | Information processing system, control method, and program | |
JP2009160832A (en) | Printer, multifunctional machine, and printing control method | |
JP7286381B2 (en) | Information processing device and its control method | |
JP7321795B2 (en) | Information processing device, information processing method and program | |
US20230103698A1 (en) | Information processing apparatus and control method therefor | |
JP5000346B2 (en) | Image processing apparatus, image processing method, program, and recording medium | |
JP2009033539A (en) | Image forming apparatus | |
KR102467636B1 (en) | Information processing apparatus, method of controlling information processing apparatus, and storage medium | |
JP2008171041A (en) | Image forming device, start up method of image forming device, control device, and start up method of extension unit | |
JP7289641B2 (en) | Information processing device and its control method | |
JP2021089607A (en) | Information processing apparatus | |
JP2006293833A (en) | Image processing apparatus, image processing method, and program | |
JP2021111916A (en) | Information processing device and program restoration method | |
US12099851B2 (en) | Information processing apparatus and method for controlling information processing apparatus | |
JP5223493B2 (en) | Information communication system and its authentication program | |
US20230273798A1 (en) | Information processing apparatus and method for controlling information processing apparatus | |
JP2020154601A (en) | Information processing device and its control method, and program |
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 |