JP2020187650A - Controller system and method - Google Patents

Controller system and method Download PDF

Info

Publication number
JP2020187650A
JP2020187650A JP2019093135A JP2019093135A JP2020187650A JP 2020187650 A JP2020187650 A JP 2020187650A JP 2019093135 A JP2019093135 A JP 2019093135A JP 2019093135 A JP2019093135 A JP 2019093135A JP 2020187650 A JP2020187650 A JP 2020187650A
Authority
JP
Japan
Prior art keywords
controller
program
valid
determination
validity
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2019093135A
Other languages
Japanese (ja)
Inventor
弘翼 矢崎
Kosuke Yazaki
弘翼 矢崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2019093135A priority Critical patent/JP2020187650A/en
Publication of JP2020187650A publication Critical patent/JP2020187650A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Accessory Devices And Overall Control Thereof (AREA)
  • Stored Programmes (AREA)

Abstract

To provide a mechanism for a multi-controller system, with which it is possible to realize appropriate protection against risks such as program falsification or deterioration at a low cost while avoiding the excessive extension of a processing time.SOLUTION: The controller system comprises: a first controller including a first determination unit for determining whether a program for the first controller which is executed by the first controller is valid; and a second controller including a second determination unit for determining whether a program for the second controller which is executed by the second controller is valid. The first controller determines whether a validity determination program for the second controller which is executed by the second determination unit in order to determine whether the program for the second controller is valid. A corresponding method is also provided.SELECTED DRAWING: Figure 3

Description

本開示は、一般的にコントローラシステムに関し、より具体的には、コントローラシステムにおいてプログラムの正当性を検証することに関する。 The present disclosure relates generally to controller systems, and more specifically to verifying the validity of programs in controller systems.

情報機器に組み込まれるファームウェアなどのプログラムを改竄して、情報機器を不正に利用しようとするサイバー攻撃が知られている。そうした攻撃に対する解決策の1つは、セキュアブートである。セキュアブートでは、通常、ブートプログラムをプロセッサのためにロードするブートローダが、ブートプログラムの実行前にブートプログラムのデジタル署名(以下、単に署名ともいう)を検証して、ブートプログラムが正当であることを確認する。ブートローダは、ロジックの書き換えを困難にする形で(例えば、ハードウェアを利用して)実装され、信頼の基点(Root Of Trust;RoT)を提供する。RoTとして信頼されるブートローダにより正当であると判定されたブートプログラムは、BIOS(Basic Input Output System)及びオペレーティングシステムといった他のプログラムの正当性を確認する。このようにして信頼の連鎖を形成しながらシステムを構成する全てのプログラムの正当性を確認することで、プログラムの改竄による不正利用に対し情報機器を保護することができる。こうした手法は、プログラムの改竄ではなく、プログラムデータの劣化に起因する動作不良に対する情報機器の保護をも提供する。 Cyber attacks are known that attempt to illegally use information devices by falsifying programs such as firmware embedded in information devices. One of the solutions to such attacks is secure boot. In secure boot, the boot loader, which usually loads the boot program for the processor, verifies the boot program's digital signature (hereinafter simply referred to as the signature) before executing the boot program to ensure that the boot program is valid. Confirm. The bootloader is implemented in a way that makes it difficult to rewrite the logic (eg, using hardware) and provides a root of trust (RoT). A boot program determined to be legitimate by a boot loader trusted as RoT confirms the legitimacy of other programs such as BIOS (Basic Input Output System) and operating system. By confirming the validity of all the programs constituting the system while forming a chain of trust in this way, it is possible to protect the information device against unauthorized use due to falsification of the programs. Such a technique also provides protection of information equipment against malfunctions caused by deterioration of program data, rather than tampering with the program.

プログラムのデジタル署名は、プログラムデータから導出されるハッシュ値を公開鍵暗号の鍵ペアのうちの秘密鍵である署名鍵で暗号化することにより生成される。デジタル署名を生成するための手法として、例えば、RSA暗号に基づく方式、DSA(Digital Signature Algorithm)方式及びECDSA(Elliptic Curve DSA)方式が知られている。生成されたデジタル署名は、典型的には、プログラムデータと共に不揮発性のメモリ内に記憶される。プログラムの正当性の確認は、メモリ内のプログラムデータから導出されるハッシュ値が、検証鍵(鍵ペアのうちの公開鍵)を用いてデジタル署名から復元されるハッシュ値に一致するかを検証することにより行われる。これらハッシュ値が一致する場合には、プログラムデータは改竄されておらず、劣化もしていない。 The digital signature of the program is generated by encrypting the hash value derived from the program data with the signature key, which is the private key of the public key cryptographic key pair. As a method for generating a digital signature, for example, a method based on RSA encryption, a DSA (Digital Signature Algorithm) method, and an ECDSA (Elliptic Curve DSA) method are known. The generated digital signature is typically stored in non-volatile memory along with the program data. To verify the validity of a program, verify whether the hash value derived from the program data in memory matches the hash value restored from the digital signature using the verification key (public key of the key pair). It is done by. If these hash values match, the program data has not been tampered with and has not deteriorated.

特許文献1は、1つのコントローラ内に複数のCPU(Central Processing Unit)を含む複合機のプラットフォームにおける改竄検知のための手法を提案している。具体的には、特許文献1により開示された手法では、サブCPU用のプログラム及びメインCPU用のプログラムの正当性をサブCPUが一括して検証することで、改竄検知のための処理時間の短縮が実現される。 Patent Document 1 proposes a method for detecting tampering on a platform of a multifunction device including a plurality of CPUs (Central Processing Units) in one controller. Specifically, in the method disclosed in Patent Document 1, the sub CPU collectively verifies the validity of the program for the sub CPU and the program for the main CPU, thereby shortening the processing time for tampering detection. Is realized.

特開2014−021953号公報Japanese Unexamined Patent Publication No. 2014-021953

しかしながら、相互接続する複数のコントローラが存在するマルチコントローラシステムでは、単一のコントローラが一括して全てのプログラムの正当性を検証しようとすると、コントローラ間の通信のために却って処理時間が長期化し得る。一方、個々のコントローラが互いに独立してコントローラ内のプログラムの正当性を検証する仕組みを実装しようとすると、実装コストが多大となり得る。 However, in a multi-controller system with multiple interconnected controllers, if a single controller attempts to verify the validity of all programs at once, the processing time can be rather long due to communication between the controllers. .. On the other hand, if individual controllers try to implement a mechanism for verifying the validity of a program in the controller independently of each other, the implementation cost can be large.

したがって、マルチコントローラシステムにおいて、処理時間の過剰な長期化を回避しつつ、プログラムの改竄及び劣化といったリスクに対する適切な保護を低コストで実現することのできる仕組みが提供されることが求められている。 Therefore, in a multi-controller system, it is required to provide a mechanism capable of realizing appropriate protection against risks such as program falsification and deterioration at low cost while avoiding an excessively prolonged processing time. ..

ある観点によれば、第1コントローラにて実行される第1コントローラ用プログラムが正当であるかを判定する第1判定部、を含む上記第1コントローラと、第2コントローラにて実行される第2コントローラ用プログラムが正当であるかを判定する第2判定部、を含む上記第2コントローラと、を備え、上記第1コントローラは、上記第2コントローラ用プログラムが正当であるかを判定するために上記第2判定部により実行される第2コントローラ用正当性判定プログラムが正当であるかを判定する、コントローラシステムが提供される。 According to a certain viewpoint, the first controller including the first determination unit for determining whether the program for the first controller executed by the first controller is valid, and the second controller executed by the second controller. The second controller including the second determination unit for determining whether the controller program is valid, and the first controller is used to determine whether the second controller program is valid. A controller system for determining whether the validity determination program for the second controller executed by the second determination unit is valid is provided.

本開示によれば、マルチコントローラシステムにおいて、処理時間の過剰な長期化を回避しつつ、プログラムの改竄及び劣化といったリスクに対する適切な保護を低コストで実現することが可能となる。 According to the present disclosure, in a multi-controller system, it is possible to realize appropriate protection against risks such as program falsification and deterioration at low cost while avoiding an excessively long processing time.

一実施形態に係る複合機のハードウェア構成図。The hardware block diagram of the multifunction device which concerns on one Embodiment. 一実施形態に係るメインコントローラ及びサブコントローラの構成図。The block diagram of the main controller and the sub controller which concerns on one Embodiment. 一実施形態に係る複合機におけるプログラムの配置の一例を信頼の連鎖と共に示すプログラム配置図。A program layout diagram showing an example of program layout in a multifunction device according to an embodiment together with a chain of trust. 一実施形態に係るコントローラシステムにより実行される処理の概略的な流れの一例を示すフローチャート。A flowchart showing an example of a schematic flow of processing executed by a controller system according to an embodiment. 図4に示したメインコントローラ用プログラム正当性判定処理の流れの一例を示すフローチャート。FIG. 3 is a flowchart showing an example of the flow of the program validity determination process for the main controller shown in FIG. 図4に示したコントローラ間正当性判定処理の流れの一例を示すフローチャート。The flowchart which shows an example of the flow of the legitimacy determination process between controllers shown in FIG. 図4に示したサブコントローラ用プログラム正当性判定処理の流れの一例を示すフローチャート。FIG. 5 is a flowchart showing an example of the flow of the program validity determination process for the sub controller shown in FIG. 一変形例に係る多段階のコントローラ間検証について説明するための説明図。Explanatory drawing for explaining multi-step inter-controller verification which concerns on one modification.

以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものでない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一の又は同様の構成に同一の参照番号を付し、重複した説明は省略される。 Hereinafter, embodiments will be described in detail with reference to the accompanying drawings. The following embodiments do not limit the invention according to the claims. Although a plurality of features are described in the embodiment, not all of the plurality of features are essential to the invention, and the plurality of features may be arbitrarily combined. Further, in the accompanying drawings, the same or similar configurations are given the same reference numbers, and duplicate description is omitted.

<<1.装置の構成例>>
<1−1.全体的な構成>
本開示に係る技術は、限定ではないものの、複数のコントローラを備えるコントローラシステムをプラットフォームとして有する情報処理装置の全般に適用され得る。本節では、本開示に係る技術がデジタル複合機(Multi-Function Peripheral(MFP))に適用される例を説明する。以下では、デジタル複合機を単に複合機ともいう。しかしながら、本開示に係る技術は、複合機に限定されず、いかなる種類の情報処理装置に適用されてもよい。
<< 1. Device configuration example >>
<1-1. Overall configuration>
The technique according to the present disclosure can be applied to all information processing devices having a controller system including a plurality of controllers as a platform, although not limited to the above. This section describes an example in which the technology according to the present disclosure is applied to a digital multifunction device (Multi-Function Peripheral (MFP)). Hereinafter, the digital multifunction device is also simply referred to as a multifunction device. However, the technique according to the present disclosure is not limited to the multifunction device, and may be applied to any kind of information processing device.

図1は、一実施形態に係る複合機10のハードウェア構成図である。図1を参照すると、複合機10は、メインコントローラ20、スキャナコントローラ30、スキャナ40、プリンタコントローラ50、プリンタ60、ユーザインタフェース(UI)コントローラ70、及びUI80を備える。 FIG. 1 is a hardware configuration diagram of the multifunction device 10 according to the embodiment. Referring to FIG. 1, the multifunction device 10 includes a main controller 20, a scanner controller 30, a scanner 40, a printer controller 50, a printer 60, a user interface (UI) controller 70, and a UI 80.

メインコントローラ20は、複合機10に含まれる複数のコンポーネントの動作を統合的に制御するコントローラである。メインコントローラ20は、後述するスキャナコントローラ30、プリンタコントローラ50及びUIコントローラ70と接続される。メインコントローラ20は、さらに、複合機10の外部のネットワーク又は外部装置と有線で又は無線で接続されてもよい。 The main controller 20 is a controller that integrally controls the operations of a plurality of components included in the multifunction device 10. The main controller 20 is connected to the scanner controller 30, the printer controller 50, and the UI controller 70, which will be described later. The main controller 20 may be further connected to the external network or external device of the multifunction device 10 by wire or wirelessly.

スキャナコントローラ30は、スキャナ40の動作を制御するコントローラである。スキャナ40は、原稿を走査して当該原稿の画像を読み取る画像読み取り部としての役割を有する。例えば、スキャナ40により原稿の画像が読み取られると、スキャナコントローラ30は、読み取られた画像について必要に応じて画像処理を実行し、処理された画像をメインコントローラ20へ送信する。 The scanner controller 30 is a controller that controls the operation of the scanner 40. The scanner 40 has a role as an image reading unit that scans a document and reads an image of the document. For example, when the image of the original is read by the scanner 40, the scanner controller 30 executes image processing on the read image as necessary, and transmits the processed image to the main controller 20.

プリンタコントローラ50は、プリンタ60の動作を制御するコントローラである。プリンタ60は、画像を印刷する印刷部としての役割を有する。例えば、プリンタコントローラ50は、印刷されるべき画像をメインコントローラ20から受信し、受信した画像について必要に応じて画像処理を実行し、処理後の画像をプリンタ60へ出力する。プリンタ60は、プリンタコントローラ50から入力される画像を印刷する。プリンタ60は、メインコントローラ20による制御の下で、スキャナ40により読み取られた画像をスキャナコントローラ30及びプリンタコントローラ50を介して受信し、受信した画像を印刷(即ち、コピー)してもよい。 The printer controller 50 is a controller that controls the operation of the printer 60. The printer 60 has a role as a printing unit for printing an image. For example, the printer controller 50 receives an image to be printed from the main controller 20, executes image processing on the received image as necessary, and outputs the processed image to the printer 60. The printer 60 prints an image input from the printer controller 50. The printer 60 may receive the image read by the scanner 40 via the scanner controller 30 and the printer controller 50 under the control of the main controller 20, and print (that is, copy) the received image.

UIコントローラ70は、UI80を介したユーザによる操作の受け付け及びユーザへの情報の出力を制御するコントローラである。UI80は、ユーザによる操作を受け付ける操作部としての役割を有する。例えば、UI80は、複合機10の動作に関するメニューをディスプレイ(図示せず)へ表示する。また、UI80は、例えばタッチパネル、ボタン又はスイッチといった入力インタフェース(図示せず)を介して、原稿のスキャン若しくはコピー、又は画像の印刷といった機能の実行を求めるユーザ操作を受け付ける。UIコントローラ70は、こうしたユーザ操作に応じて、対応するコマンドをメインコントローラ20へ送信する。メインコントローラ20は、コマンドの受信に応じて、スキャナコントローラ30を介してスキャナ40に原稿をスキャンさせ、及び/又はプリンタコントローラ50を介してプリンタ60に画像を印刷させる。 The UI controller 70 is a controller that controls acceptance of operations by the user and output of information to the user via the UI 80. The UI 80 has a role as an operation unit that accepts operations by the user. For example, the UI 80 displays a menu related to the operation of the multifunction device 10 on a display (not shown). Further, the UI 80 accepts a user operation requesting execution of a function such as scanning or copying a document or printing an image via an input interface (not shown) such as a touch panel, a button or a switch. The UI controller 70 transmits a corresponding command to the main controller 20 in response to such a user operation. The main controller 20 causes the scanner 40 to scan the document via the scanner controller 30 and / or causes the printer 60 to print the image via the printer controller 50 in response to receiving the command.

以下の説明において、メインコントローラ20と通信し及びメインコントローラ20により制御されるスキャナコントローラ30、プリンタコントローラ50及びUIコントローラ70の各々を、サブコントローラという。メインコントローラ20及びサブコントローラの各々は、1つ以上のプログラムを記憶するメモリと、プログラムを実行するプロセッサ(例えば、CPU)とを有する。これらプログラムのより詳細な構成について、後にさらに説明する。 In the following description, each of the scanner controller 30, the printer controller 50, and the UI controller 70 that communicates with the main controller 20 and is controlled by the main controller 20 is referred to as a sub controller. Each of the main controller 20 and the sub controller has a memory for storing one or more programs and a processor (for example, a CPU) for executing the programs. More detailed configurations of these programs will be described later.

<1−2.メインコントローラの構成>
図2は、一実施形態に係るメインコントローラ及びサブコントローラの構成図である。ここでは、サブコントローラがプリンタコントローラ50である例が示されている。
<1-2. Main controller configuration>
FIG. 2 is a configuration diagram of a main controller and a sub controller according to an embodiment. Here, an example in which the sub controller is the printer controller 50 is shown.

図2を参照すると、メインコントローラ20は、システムオンチップ(SOC)21、DRAM121、NORフラッシュメモリ122及びLED125を含む。SOC21は、メインコントローラ20の制御機能を実現するためのコンポーネントを集積した半導体チップである。具体的には、SOC21は、システムバス100、CPU101、CPU102、ROM103、OTP104、セキュアアシスト部105及び画像処理部106を含む。SOC21は、さらに、RAMインタフェース(I/F)111、フラッシュメモリI/F112、プリンタコントローラI/F113、画像送信部114及び外部ポートI/F115を含む。システムバス100は、SOC21に含まれるこれらコンポーネントを相互に接続する。 Referring to FIG. 2, the main controller 20 includes a system-on-chip (SOC) 21, DRAM 121, NOR flash memory 122 and LED 125. The SOC 21 is a semiconductor chip in which components for realizing the control function of the main controller 20 are integrated. Specifically, the SOC 21 includes a system bus 100, a CPU 101, a CPU 102, a ROM 103, an OTP 104, a secure assist unit 105, and an image processing unit 106. The SOC 21 further includes a RAM interface (I / F) 111, a flash memory I / F 112, a printer controller I / F 113, an image transmitter 114, and an external port I / F 115. The system bus 100 connects these components contained in the SOC 21 to each other.

CPU101は、後述するブートローダ(IPL(Initial Program Loader)ともいう)を実行するプロセッサである。CPU101は、ブートローダを実行してブートプログラムが正当であるか(例えば、改竄又は劣化により変化していないか)を判定し、正当性が肯定されると、CPU102のリセットを解除する。ブートプログラムが正当であるかの判定は、ブートプログラムに関連付けられる署名を検証することにより行われる。追加的に、CPU101は、メインコントローラ20用のブート以外の目的のための1つ以上のプログラムが正当であるかを判定してもよい。 The CPU 101 is a processor that executes a boot loader (also referred to as an IPL (Initial Program Loader)) described later. The CPU 101 executes the boot loader to determine whether the boot program is valid (for example, whether it has been changed due to falsification or deterioration), and if the validity is affirmed, the CPU 102 is released from the reset. Determining whether a boot program is legitimate is made by verifying the signature associated with the boot program. Additionally, the CPU 101 may determine if one or more programs for purposes other than booting for the main controller 20 are legitimate.

CPU102は、正当であると判定されたブートプログラムを実行して、メインコントローラ20のシステムを起動する。さらに、CPU102は、正当であると判定されたメインコントローラ20用の他のプログラムを実行して、メインコントローラ20の多様なコンポーネントを制御してもよい。本実施形態において、メインコントローラ20用のプログラムは、少なくともメインコントローラ20において稼働する第1システムをブートする機能を含む。第1システムは、例えば、メインコントローラ20のBIOS及びオペレーティングシステムを含み得る。さらに、本実施形態において、CPU102は、サブコントローラであるプリンタコントローラ50において使用される正当性判定プログラムが正当であるかを、当該プログラムに関連付けられる署名を検証することにより判定する。一例として、プリンタコントローラ50用の正当性判定プログラム及びその署名は、後述するNORフラッシュメモリ222内に予め記憶され、メインコントローラI/F208及びプリンタコントローラI/F113を介して読み出される。CPU102は、プリンタコントローラ50用の正当性判定プログラムが正当であると判定される場合に、プリンタコントローラ50のCPU202のリセットを解除する。 The CPU 102 executes a boot program determined to be valid to start the system of the main controller 20. Further, the CPU 102 may execute another program for the main controller 20 determined to be legitimate to control various components of the main controller 20. In the present embodiment, the program for the main controller 20 includes at least a function of booting the first system running on the main controller 20. The first system may include, for example, the BIOS of the main controller 20 and the operating system. Further, in the present embodiment, the CPU 102 determines whether the validity determination program used in the printer controller 50, which is a sub controller, is valid by verifying the signature associated with the program. As an example, the validity determination program for the printer controller 50 and its signature are stored in advance in the NOR flash memory 222, which will be described later, and are read out via the main controller I / F 208 and the printer controller I / F 113. The CPU 102 releases the reset of the CPU 202 of the printer controller 50 when it is determined that the validity determination program for the printer controller 50 is valid.

ROM(Read Only Memory)103は、CPU101により実行される上述したブートローダを予め記憶する。ROM103は、例えば、一旦書き込まれたデータの書き換えが不能なマスクROMで構成され得る。それにより、ブートローダのロジックの書き換えが困難とされ、ブートローダ(あるいはCPU101)をRoTとして位置付けることが可能となる。 The ROM (Read Only Memory) 103 stores in advance the above-mentioned boot loader executed by the CPU 101. The ROM 103 may be composed of, for example, a mask ROM in which the data once written cannot be rewritten. As a result, it becomes difficult to rewrite the logic of the boot loader, and the boot loader (or CPU101) can be positioned as RoT.

OTP(One Time Programmable ROM)104は、製造時に一度だけ書き込みが可能なROMであり、個々のプログラムに関連付けられる署名の検証の際に利用される検証鍵を記憶する。検証鍵は、公開鍵暗号の鍵ペアにおける公開鍵に該当し、秘密鍵に該当する署名鍵で暗号化済みのプログラムのハッシュ値(即ち、署名)から正当なハッシュ値を復元することを可能にする。 The OTP (One Time Programmable ROM) 104 is a ROM that can be written only once at the time of manufacture, and stores a verification key used for verifying a signature associated with an individual program. The verification key corresponds to the public key in the key pair of public key cryptography, and it is possible to recover a valid hash value from the hash value (that is, signature) of the program encrypted with the signature key corresponding to the private key. To do.

セキュアアシスト部105は、プログラムデータから当該プログラムデータのハッシュ値を算出する機能を提供することにより、署名の検証を支援する。例えば、NORフラッシュメモリ122から読み出されるブートプログラムのプログラムデータから算出されるハッシュ値が、当該プログラムの署名から復元されるハッシュ値に一致しない場合、ブートプログラムは正当でないと判定され得る。これは、ブートプログラムが改竄又は劣化に起因して正当な開発者の意図に反して変化していることを意味する。同様に、NORフラッシュメモリ222から読み出される正当性判定プログラムから算出されるハッシュ値が、当該プログラムの署名から復元されるハッシュ値に一致しない場合、その正当性判定プログラムは正当でないと判定され得る。セキュアアシスト部105は、さらに、署名鍵で暗号化された暗号化済みデータを、OTP104に記憶されている検証鍵で復号する機能をも提供する。例えば、セキュアアシスト部105は、ブートプログラムに関連付けられる署名の復号、及びプリンタコントローラ50用の正当性判定プログラムに関連付けられる署名の復号のために使用され得る。複数のプログラムの署名は、それぞれのプログラムに固有の異なる検証鍵で復号されてもよく、又は単一の共通的な検証鍵で復号されてもよい。 The secure assist unit 105 supports signature verification by providing a function of calculating a hash value of the program data from the program data. For example, if the hash value calculated from the program data of the boot program read from the NOR flash memory 122 does not match the hash value restored from the signature of the program, the boot program may be determined to be invalid. This means that the boot program has changed against the intent of a legitimate developer due to tampering or degradation. Similarly, if the hash value calculated from the legitimacy determination program read from the NOR flash memory 222 does not match the hash value restored from the signature of the program, the legitimacy determination program may be determined to be invalid. The secure assist unit 105 also provides a function of decrypting the encrypted data encrypted with the signature key with the verification key stored in the OTP 104. For example, the secure assist unit 105 can be used to decrypt the signature associated with the boot program and the signature associated with the legitimacy determination program for the printer controller 50. The signatures of a plurality of programs may be decrypted with different verification keys unique to each program, or may be decrypted with a single common verification key.

画像処理部106は、スキャナコントローラ30から受信される読み取り画像についてのシェーディング、及びプリンタコントローラ50へ送信される印刷画像についてのハーフトーンといった画像処理を実行するコンポーネントである。 The image processing unit 106 is a component that executes image processing such as shading of the scanned image received from the scanner controller 30 and halftone of the printed image transmitted to the printer controller 50.

RAM I/F111は、SOC21によるDRAM121へのアクセスのためのインタフェースである。RAM I/F111は、例えば、DRAM121からのデータの読み出し及びDRAM121へのデータの書き込みといった動作を制御し得る。DRAM121は、CPU102及び画像処理部106のためのワークメモリとして使用され、CPU102により実行されるプログラム及びその他のデータを一時的に記憶する。 The RAM I / F 111 is an interface for accessing the DRAM 121 by the SOC 21. The RAM I / F 111 can control operations such as reading data from the DRAM 121 and writing data to the DRAM 121, for example. The DRAM 121 is used as a work memory for the CPU 102 and the image processing unit 106, and temporarily stores a program and other data executed by the CPU 102.

フラッシュメモリI/F112は、SOC21によるNORフラッシュメモリ122へのアクセスのためのインタフェースである。フラッシュメモリI/F112は、例えば、NORフラッシュメモリ122からのデータの読み出し及びNORフラッシュメモリ122へのデータの書き込みといった動作を制御し得る。NORフラッシュメモリ122は、上述したブートプログラム及び当該ブートプログラムに関連付けられる署名データを記憶する。 The flash memory I / F 112 is an interface for accessing the NOR flash memory 122 by the SOC 21. The flash memory I / F 112 can control operations such as reading data from the NOR flash memory 122 and writing data to the NOR flash memory 122, for example. The NOR flash memory 122 stores the boot program described above and signature data associated with the boot program.

プリンタコントローラI/F113は、メインコントローラ20によるプリンタコントローラ50との通信のためのインタフェースである。本実施形態において、メインコントローラ20は、プリンタコントローラI/F113を介して、後述するプリンタコントローラ50内のメモリから読み出されるデータ(例えば、プリンタコントローラ50用の正当性判定プログラム及び署名)を受信し得る。 The printer controller I / F 113 is an interface for communication between the main controller 20 and the printer controller 50. In the present embodiment, the main controller 20 may receive data (for example, a validity determination program and a signature for the printer controller 50) read from the memory in the printer controller 50, which will be described later, via the printer controller I / F 113. ..

画像送信部114は、プリンタ60により印刷されるべき画像を、メインコントローラ20からプリンタコントローラ50へ送信する。プリンタ60により印刷されるべき画像は、例えば、画像処理部106により処理されたハーフトーン画像であってもよい。 The image transmission unit 114 transmits an image to be printed by the printer 60 from the main controller 20 to the printer controller 50. The image to be printed by the printer 60 may be, for example, a halftone image processed by the image processing unit 106.

外部ポートI/F115は、複合機10の入出力機能を提供する汎用のポートを制御するインタフェースである。例えば、外部ポートI/F115は、必要に応じて、出力ポート(図示せず)を介してLED125を点灯し、消灯し又は点滅させてもよい。外部ポートI/F115は、複合機10に発生した異常をユーザへ報知するために、(例えば、ソフトウェア異常又はハードウェア異常といった異常の種類に対応するパターンで)LED125を点灯させ又は点滅させてもよい。 The external port I / F 115 is an interface for controlling a general-purpose port that provides an input / output function of the multifunction device 10. For example, the external port I / F 115 may turn on, turn off, or blink the LED 125 via an output port (not shown), if necessary. The external port I / F 115 may turn on or blink the LED 125 (for example, in a pattern corresponding to the type of abnormality such as software abnormality or hardware abnormality) in order to notify the user of the abnormality that has occurred in the multifunction device 10. Good.

<1−3.サブコントローラの構成>
プリンタコントローラ50は、上述したように、一実施形態に係る複合機10のサブコントローラの一例である。
<1-3. Sub-controller configuration>
As described above, the printer controller 50 is an example of the sub-controller of the multifunction device 10 according to the embodiment.

図2を参照すると、プリンタコントローラ50は、SOC51、DRAM221及びNORフラッシュメモリ222を含む。SOC51は、プリンタコントローラ50の制御機能を実現するためのコンポーネントを集積した半導体チップである。具体的には、SOC51は、システムバス200、CPU202、画像処理部206、メインコントローラI/F208、画像受信部209、RAM I/F211、フラッシュメモリI/F212、システム制御部215及びプリンタI/F216を含む。システムバス200は、SOC51に含まれるこれらコンポーネントを相互に接続する。 Referring to FIG. 2, the printer controller 50 includes an SOC 51, a DRAM 221 and a NOR flash memory 222. The SOC 51 is a semiconductor chip in which components for realizing the control function of the printer controller 50 are integrated. Specifically, the SOC 51 includes a system bus 200, a CPU 202, an image processing unit 206, a main controller I / F 208, an image receiving unit 209, a RAM I / F 211, a flash memory I / F 212, a system control unit 215, and a printer I / F 216. including. The system bus 200 connects these components included in the SOC 51 to each other.

CPU202は、プリンタコントローラ50用の正当性判定プログラムがメインコントローラ20において正当であると判定されると、当該正当性判定プログラムを実行して、プリンタコントローラ50用の他のプログラムの正当性を判定する。プリンタコントローラ50用の正当性判定プログラムの正当性は、上述したように、メインコントローラ20のCPU102において、当該正当性判定プログラムに関連付けられる署名を検証することにより判定され得る。本実施形態において、プリンタコントローラ50用のプログラムは、少なくともプリンタコントローラ50において稼働する第2システムをブートする機能を含む。第2システムは、例えば、プリンタコントローラ50のBIOS及びオペレーティングシステムを含み得る。追加的に、CPU202は、正当であると判定されたプリンタコントローラ50用の他のプログラムを実行して、プリンタコントローラ50の多様なコンポーネントを制御してもよい。 When the validity determination program for the printer controller 50 is determined to be valid in the main controller 20, the CPU 202 executes the validity determination program and determines the validity of another program for the printer controller 50. .. As described above, the legitimacy of the legitimacy determination program for the printer controller 50 can be determined by verifying the signature associated with the legitimacy determination program in the CPU 102 of the main controller 20. In the present embodiment, the program for the printer controller 50 includes at least a function of booting a second system running on the printer controller 50. The second system may include, for example, the BIOS of the printer controller 50 and the operating system. In addition, the CPU 202 may execute other programs for the printer controller 50 that are determined to be legitimate to control various components of the printer controller 50.

画像処理部206は、メインコントローラ20から受信されるハーフトーン画像について、微小変倍及びPWM(Pulse Width Modulation)といった印刷用の事前処理を実行するコンポーネントである。 The image processing unit 206 is a component that executes preprocessing for printing such as minute scaling and PWM (Pulse Width Modulation) on the halftone image received from the main controller 20.

メインコントローラI/F208は、プリンタコントローラ50によるメインコントローラ20との通信のためのインタフェースである。本実施形態において、プリンタコントローラ50は、メインコントローラI/F208を介して、後述するNORフラッシュメモリ222から読み出されるプリンタコントローラ50用の正当性判定プログラム及び署名をメインコントローラ20へ送信し得る。 The main controller I / F 208 is an interface for communication between the printer controller 50 and the main controller 20. In the present embodiment, the printer controller 50 may transmit the validity determination program and the signature for the printer controller 50 read from the NOR flash memory 222 described later to the main controller 20 via the main controller I / F 208.

画像受信部209は、プリンタ60により印刷されるべき画像を、メインコントローラ20から受信する。画像受信部209により受信される画像は、例えば、メインコントローラ20において処理されたハーフトーン画像であってもよい。 The image receiving unit 209 receives an image to be printed by the printer 60 from the main controller 20. The image received by the image receiving unit 209 may be, for example, a halftone image processed by the main controller 20.

RAM I/F211は、SOC51によるDRAM221へのアクセスのためのインタフェースである。RAM I/F211は、例えば、DRAM221からのデータの読み出し及びDRAM221へのデータの書き込みといった動作を制御し得る。DRAM221は、CPU202及び画像処理部206のためのワークメモリとして使用され、CPU202により実行されるプログラム及びその他のデータを一時的に記憶する。 The RAM I / F 211 is an interface for accessing the DRAM 221 by the SOC 51. The RAM I / F 211 can control operations such as reading data from DRAM 221 and writing data to DRAM 221 for example. The DRAM 221 is used as a work memory for the CPU 202 and the image processing unit 206, and temporarily stores a program and other data executed by the CPU 202.

フラッシュメモリI/F212は、SOC51によるNORフラッシュメモリ222へのアクセスのためのインタフェースである。フラッシュメモリI/F212は、例えば、NORフラッシュメモリ222からのデータの読み出し及びNORフラッシュメモリ222へのデータの書き込みといった動作を制御し得る。NORフラッシュメモリ222は、上述したプリンタコントローラ50用の正当性判定プログラム及び当該正当性判定プログラムに関連付けられる署名データを記憶する。 The flash memory I / F 212 is an interface for accessing the NOR flash memory 222 by the SOC 51. The flash memory I / F 212 can control operations such as reading data from the NOR flash memory 222 and writing data to the NOR flash memory 222, for example. The NOR flash memory 222 stores the legitimacy determination program for the printer controller 50 described above and the signature data associated with the legitimacy determination program.

システム制御部215は、プリンタコントローラ50の電源の投入に応じて、プリンタコントローラ50の最小限の機能をアクティブ化する。例えば、プリンタコントローラ50の最小限の機能は、メインコントローラI/F208、フラッシュメモリI/F212及びNORフラッシュメモリ222の機能、並びにそれら機能の間のバスを介した通信機能を含んでもよい。これら機能のアクティブ化は、例えば、ハードシーケンサのみで制御されてもよい。システム制御部215は、CPU202及びメインコントローラI/F208と連携して、SOC51におけるクロック制御及びリセット制御を行ってもよい。 The system control unit 215 activates the minimum functions of the printer controller 50 in response to the power-on of the printer controller 50. For example, the minimum functions of the printer controller 50 may include the functions of the main controller I / F208, the flash memory I / F212, and the NOR flash memory 222, and the communication function via the bus between these functions. Activation of these functions may be controlled, for example, only by a hard sequencer. The system control unit 215 may perform clock control and reset control in the SOC 51 in cooperation with the CPU 202 and the main controller I / F 208.

プリンタI/F216は、プリンタコントローラ50によるプリンタ60の制御に関連する制御通信、及び印刷用画像のプリンタ60への送信のためのインタフェースである。 The printer I / F 216 is an interface for control communication related to control of the printer 60 by the printer controller 50 and transmission of a print image to the printer 60.

<1−4.ソフトウェア構成>
図3は、一実施形態に係る複合機10におけるプログラムの配置の一例を信頼の連鎖と共に示すプログラム配置図である。
<1-4. Software configuration>
FIG. 3 is a program layout diagram showing an example of program layout in the multifunction device 10 according to the embodiment together with a chain of trust.

図3に示した例では、メインコントローラ20において、ブートローダ300がメインコントローラ20のROM103に配置され、ブートプログラム310及びブートプログラムに関連付けられる署名314がNORフラッシュメモリ122に配置される。また、サブコントローラであるプリンタコントローラ50において、正当性判定プログラム330、正当性判定プログラム330に関連付けられる署名324、及びシステム起動プログラム325がNORフラッシュメモリ222に配置される。 In the example shown in FIG. 3, in the main controller 20, the boot loader 300 is arranged in the ROM 103 of the main controller 20, and the boot program 310 and the signature 314 associated with the boot program are arranged in the NOR flash memory 122. Further, in the printer controller 50 which is a sub controller, the validity determination program 330, the signature 324 associated with the validity determination program 330, and the system startup program 325 are arranged in the NOR flash memory 222.

ブートローダ300は、複合機10の電源の投入に応じてCPU101により実行されるプログラムである。ブートローダ300は、ロジックの書き換えを困難にする形でROM103に記憶され、それにより、複合機10のシステム全体の信頼性を保証するための信頼の連鎖の出発点であるRoTを提供する。ブートローダ300は、第1判定部301を含む。 The boot loader 300 is a program executed by the CPU 101 when the power of the multifunction device 10 is turned on. The boot loader 300 is stored in the ROM 103 in a form that makes it difficult to rewrite the logic, thereby providing RoT, which is the starting point of the chain of trust for guaranteeing the reliability of the entire system of the multifunction device 10. The boot loader 300 includes a first determination unit 301.

第1判定部301は、メインコントローラ20にて実行される1つ以上のメインコントローラ用プログラムが正当であるかを検証する。図3の例において、メインコントローラ用プログラムは、ブートプログラム310を含む。したがって、第1判定部301は、ブートプログラム310が正当であるかを、ブートプログラム310に関連付けられる署名314を検証することにより判定する(図中の矢印A1)。より具体的には、例えば、署名314に含まれる暗号化済みハッシュ値から復元されるハッシュ値が、ブートプログラム310から導出されるハッシュ値に一致する場合には、ブートプログラム310は正当であると判定される。これらハッシュ値が一致しない場合には、ブートプログラム310が改竄又は劣化に起因して変化していると推定され、ブートプログラム310は正当でないと判定される。暗号化済みハッシュ値からのハッシュ値の復元は、OTP104により予め記憶される検証鍵で暗号化済みハッシュ値を復号することにより行われ得る。なお、署名を生成し及び検証するためのデジタル署名方式として、RSA暗号に基づく方式、DSA方式及びECDSA方式といった、いかなる種類の方式が用いられてもよい。第1判定部301は、ブートプログラム310が正当であると判定される場合には、CPU102のリセットを解除し、CPU102にブートプログラム310を実行させる。 The first determination unit 301 verifies whether one or more main controller programs executed by the main controller 20 are valid. In the example of FIG. 3, the program for the main controller includes the boot program 310. Therefore, the first determination unit 301 determines whether the boot program 310 is valid by verifying the signature 314 associated with the boot program 310 (arrow A1 in the figure). More specifically, for example, if the hash value restored from the encrypted hash value contained in the signature 314 matches the hash value derived from the boot program 310, the boot program 310 is justified. It is judged. If these hash values do not match, it is presumed that the boot program 310 has changed due to falsification or deterioration, and the boot program 310 is determined to be invalid. Restoration of the hash value from the encrypted hash value can be performed by decrypting the encrypted hash value with the verification key stored in advance by OTP104. As the digital signature method for generating and verifying the signature, any kind of method such as an RSA encryption-based method, a DSA method, and an ECDSA method may be used. When the boot program 310 is determined to be valid, the first determination unit 301 releases the reset of the CPU 102 and causes the CPU 102 to execute the boot program 310.

ブートプログラム310は、ブートローダ300によりブートプログラム310が正当であると判定された場合にCPU102により実行される、メインコントローラ20用のプログラムである。図3の例において、ブートプログラム310は、初期化部311及びコントローラ間判定部312を含む。初期化部311は、RAM I/F111及びプリンタコントローラI/F113といったメインコントローラ20の様々なコンポーネントの初期化を行う。初期化部311は、メインコントローラ20において稼働する第1システムのBIOS及びオペレーティングシステムを起動してもよい。 The boot program 310 is a program for the main controller 20 that is executed by the CPU 102 when the boot loader 300 determines that the boot program 310 is valid. In the example of FIG. 3, the boot program 310 includes an initialization unit 311 and an inter-controller determination unit 312. The initialization unit 311 initializes various components of the main controller 20 such as the RAM I / F111 and the printer controller I / F113. The initialization unit 311 may start the BIOS and the operating system of the first system operating in the main controller 20.

コントローラ間判定部312は、後述するプリンタコントローラ50用の正当性判定プログラム330が正当であるかを、正当性判定プログラム330に関連付けられる署名324を検証することにより判定する(図中の矢印A2)。この正当性の判定は、上述したように、第1判定部301により正当であると判定されたブートプログラム310(メインコントローラ用プログラムの1つ)の実行に基づく。具体的には、コントローラ間判定部312は、署名324に含まれる暗号化済みハッシュ値から復元されるハッシュ値が、正当性判定プログラム330から導出されるハッシュ値に一致する場合には、正当性判定プログラム330は正当であると判定される。これらハッシュ値が一致しない場合には、正当性判定プログラム330が改竄又は劣化に起因して変化していると推定され、正当性判定プログラム330は正当でないと判定される。暗号化済みハッシュ値からのハッシュ値の復元は、OTP104により予め記憶される検証鍵で暗号化済みハッシュ値を復号することにより行われ得る。ここでも、デジタル署名方式として、RSA暗号に基づく方式、DSA方式及びECDSA方式といった、いかなる種類の方式が用いられてもよい。コントローラ間判定部312は、正当性判定プログラム330が正当であると判定される場合には、プリンタコントローラ50のCPU202のリセットを解除し、CPU202に正当性判定プログラム330を実行させる。 The inter-controller determination unit 312 determines whether the validity determination program 330 for the printer controller 50, which will be described later, is valid by verifying the signature 324 associated with the validity determination program 330 (arrow A2 in the figure). .. As described above, the determination of the validity is based on the execution of the boot program 310 (one of the programs for the main controller) determined to be valid by the first determination unit 301. Specifically, the inter-controller determination unit 312 determines the validity when the hash value restored from the encrypted hash value included in the signature 324 matches the hash value derived from the validity determination program 330. The determination program 330 is determined to be valid. If these hash values do not match, it is presumed that the legitimacy determination program 330 has changed due to falsification or deterioration, and the legitimacy determination program 330 is determined to be invalid. Restoration of the hash value from the encrypted hash value can be performed by decrypting the encrypted hash value with the verification key stored in advance by OTP104. Here, as the digital signature method, any kind of method such as an RSA encryption-based method, a DSA method, and an ECDSA method may be used. When the legitimacy determination program 330 is determined to be legitimate, the inter-controller determination unit 312 releases the reset of the CPU 202 of the printer controller 50 and causes the CPU 202 to execute the legitimacy determination program 330.

なお、図3には、初期化部311及びコントローラ間判定部312が単一のプログラムに含まれる例を示しているが、初期化部311及びコントローラ間判定部312は、別個のプログラムにそれぞれ含まれてもよい。 Note that FIG. 3 shows an example in which the initialization unit 311 and the inter-controller determination unit 312 are included in a single program, but the initialization unit 311 and the inter-controller determination unit 312 are included in separate programs, respectively. It may be.

正当性判定プログラム330は、プリンタコントローラ50用の1つ以上のプログラムが正当であるかを判定するためにCPU202により実行されるプログラムである。正当性判定プログラム330は、ブートプログラム310により正当性判定プログラム330が正当であると判定された場合に実行される。図3の例において、正当性判定プログラム330は、第2判定部321を含む。 The validity determination program 330 is a program executed by the CPU 202 to determine whether or not one or more programs for the printer controller 50 are valid. The legitimacy determination program 330 is executed when the boot program 310 determines that the legitimacy determination program 330 is legitimate. In the example of FIG. 3, the legitimacy determination program 330 includes the second determination unit 321.

第2判定部321は、プリンタコントローラ50にて実行されるプリンタコントローラ50用の1つ以上のプログラム(即ち、サブコントローラ用プログラム)が正当であるかを検証する。図3の例において、サブコントローラ用プログラムは、システム起動プログラム325を含む。したがって、第2判定部321は、システム起動プログラム325が正当であるかを、例えばシステム起動プログラム325に関連付けられる署名又はハッシュ値を検証することにより判定する(図中の矢印A3)。システム起動プログラム325の署名又はハッシュ値は、正当性判定プログラム330により保持されていてもよく、又はプリンタコントローラ50内のいずれかのメモリに記憶されていてもよい。ここでの正当性の判定は、上述したブートプログラム310及び正当性判定プログラム330についての判定と同様に行われてよい。第2判定部321は、システム起動プログラム325が正当であると判定される場合には、CPU202にシステム起動プログラム325を実行させる。 The second determination unit 321 verifies whether one or more programs for the printer controller 50 (that is, a program for the sub controller) executed by the printer controller 50 are valid. In the example of FIG. 3, the sub-controller program includes the system boot program 325. Therefore, the second determination unit 321 determines whether the system startup program 325 is valid, for example, by verifying the signature or hash value associated with the system startup program 325 (arrow A3 in the figure). The signature or hash value of the system boot program 325 may be held by the validity determination program 330, or may be stored in any memory in the printer controller 50. The determination of correctness here may be performed in the same manner as the determination for the boot program 310 and the validity determination program 330 described above. The second determination unit 321 causes the CPU 202 to execute the system startup program 325 when it is determined that the system startup program 325 is valid.

システム起動プログラム325は、第2判定部321によりシステム起動プログラム325が正当であると判定された場合に実行されるプログラムである。システム起動プログラム325は、例えば、プリンタコントローラ50において稼働する第2システムのBIOS及びオペレーティングシステムを起動(即ち、第2システムをブート)してもよい。 The system startup program 325 is a program executed when the second determination unit 321 determines that the system startup program 325 is valid. The system boot program 325 may boot (ie boot) the BIOS and operating system of the second system running on the printer controller 50, for example.

ここで、メインコントローラ20は、プリンタコントローラ50にて正当性判定プログラム330により行われるプリンタコントローラ50用のプログラムが正当であるかの判定を待つことなく、メインコントローラ20のシステムのための処理を実行し得る。このように、本実施形態では、正当性が保証されるべきサブコントローラの全てのプログラムについてメインコントローラで正当性が判定されるケースと比較して、より早期にメインコントローラのリソースをシステムの制御のために解放することが可能である。 Here, the main controller 20 executes the process for the system of the main controller 20 without waiting for the printer controller 50 to determine whether the program for the printer controller 50 performed by the validity determination program 330 is valid. Can be done. As described above, in the present embodiment, the resources of the main controller are controlled by the system earlier than the case where the legitimacy is determined by the main controller for all the programs of the sub controller whose validity should be guaranteed. It is possible to release for.

図3に示したように、メインコントローラ20のブートローダ300(あるいは第1判定部301)がRoTを提供する一方で、サブコントローラであるプリンタコントローラ50はRoTを提供しない。このように、本実施形態では、相互接続する複数のコントローラが存在するマルチコントローラシステムにおいて、メインコントローラ以外のコントローラへのRoTの実装が省略されるため、実装コストの増大を抑制することができる。また、本実施形態では、サブコントローラにおいて、サブコントローラにて実行されるサブコントローラ用プログラムの正当性が、サブコントローラ用の正当性判定プログラムの正当性を除いて、サブコントローラ内で判定される。したがって、正当性の検証のためにコントローラ間で数多くのデータビットを通信する必要性が回避されるため、通信負荷を軽減できると共に、(他のコントローラの処理の終了を待つための待ち時間を含む)正当性の検証のための処理時間を短縮することができる。そのうえ、本実施形態では、メインコントローラ20において提供されるRoTを起点として、複数のコントローラをまたいだ信頼の連鎖が途切れることなく構築される。そのため、マルチコントローラシステム全体として、プログラムの改竄及び劣化といったリスクに対する適切な保護(セキュアブート)を実現することができる。 As shown in FIG. 3, the boot loader 300 (or the first determination unit 301) of the main controller 20 provides the RoT, while the printer controller 50, which is the sub controller, does not provide the RoT. As described above, in the present embodiment, in the multi-controller system in which a plurality of interconnected controllers exist, the implementation of RoT on the controller other than the main controller is omitted, so that the increase in the mounting cost can be suppressed. Further, in the present embodiment, in the sub-controller, the legitimacy of the sub-controller program executed by the sub-controller is determined in the sub-controller except for the legitimacy of the legitimacy determination program for the sub-controller. Therefore, the need to communicate a large number of data bits between controllers for validity verification is avoided, so that the communication load can be reduced and (including the waiting time for waiting for the processing of other controllers to finish). ) The processing time for verification of correctness can be shortened. Moreover, in the present embodiment, starting from RoT provided in the main controller 20, a chain of trust across a plurality of controllers is constructed without interruption. Therefore, the entire multi-controller system can realize appropriate protection (secure boot) against risks such as program falsification and deterioration.

また、本実施形態において、プリンタコントローラ50のNORフラッシュメモリ222は、上述したように、サブコントローラ用正当性判定プログラムを当該プログラムに関連付けられる署名と共に予め記憶するプログラム記憶部としての役割を有する。一方、メインコントローラ20のOTP104は、その署名を生成する際に使用された署名鍵に対応する検証鍵を予め記憶する鍵記憶部としての役割を有する。このように、サブコントローラ側でサブコントローラ用正当性判定プログラム及びその署名を保持し、メインコントローラ側で検証鍵を保持する構成を採用することで、コントローラ間の高いレベルの独立性を確保することができる。即ち、サブコントローラ側のシステムの修正のためにプログラムを正当に変更する場合には、サブコントローラ側のデータ(プログラム及び署名)のみを更新すればよく、メインコントローラへの影響が回避される。 Further, in the present embodiment, as described above, the NOR flash memory 222 of the printer controller 50 has a role as a program storage unit that stores the legitimacy determination program for the sub-controller together with the signature associated with the program in advance. On the other hand, the OTP 104 of the main controller 20 has a role as a key storage unit that stores in advance the verification key corresponding to the signature key used when generating the signature. In this way, by adopting a configuration in which the sub-controller validation program and its signature are held on the sub-controller side and the verification key is held on the main controller side, a high level of independence between the controllers is ensured. Can be done. That is, when the program is legitimately changed to modify the system on the sub-controller side, only the data (program and signature) on the sub-controller side needs to be updated, and the influence on the main controller is avoided.

<<2.処理の流れの例>>
<2−1.概略的な流れ>
図4は、一実施形態に係るコントローラシステムにより実行される処理の概略的な流れの一例を示すフローチャートである。図4に示した処理は、第1コントローラ及び第2コントローラを備えるコントローラシステムにおいて、プログラムの正当性を検証するために実行され得る。第1コントローラはメインコントローラであってもよく、第2コントローラはサブコントローラであってもよい。なお、本明細書では、信頼の連鎖において基点を提供するコントローラをメインコントローラ、それ以外のコントローラをサブコントローラと称している。メイン及びサブとの用語は、単に信頼の連鎖における位置関係(信頼の基点を提供するものがメインであり、それ以外がサブである)を意味し、他の何らの階層的関係を示唆するものではない。
<< 2. Example of processing flow >>
<2-1. General flow>
FIG. 4 is a flowchart showing an example of a schematic flow of processing executed by the controller system according to the embodiment. The process shown in FIG. 4 can be executed in order to verify the validity of the program in the controller system including the first controller and the second controller. The first controller may be the main controller and the second controller may be the sub controller. In this specification, the controller that provides the base point in the chain of trust is referred to as a main controller, and the other controllers are referred to as sub-controllers. The terms main and sub simply mean the positional relationship in the chain of trust (the one that provides the starting point of trust is the main, and the others are the sub), and suggests any other hierarchical relationship. is not.

具体的な例として、図4に示した処理は、複合機10のメインコントローラ20及びプリンタコントローラ50により実行されるものとする。なお、以下の説明では、処理ステップをS(ステップ)を略記する。 As a specific example, it is assumed that the processing shown in FIG. 4 is executed by the main controller 20 and the printer controller 50 of the multifunction device 10. In the following description, S (step) is abbreviated as the processing step.

まず、S10で、メインコントローラ20は、メインコントローラ用プログラム正当性判定処理を実行する。メインコントローラ用プログラム正当性判定処理は、例えば複合機10の電源の投入に応じてリセットを解除されたCPU101により実行され得る。メインコントローラ用プログラム正当性判定処理のより詳細な流れの一例について、後にさらに説明する。 First, in S10, the main controller 20 executes the program validity determination process for the main controller. The program validity determination process for the main controller can be executed by, for example, the CPU 101 whose reset is released when the power of the multifunction device 10 is turned on. An example of a more detailed flow of the program validity determination process for the main controller will be further described later.

メインコントローラ用プログラム正当性判定処理の結果として、メインコントローラ用プログラムが正当であると判定された場合、S15での分岐を経て、処理はS20へ進む。メインコントローラ用プログラムが正当でないと判定された場合、処理はS40へ進む。 If the main controller program is determined to be valid as a result of the main controller program validity determination process, the process proceeds to S20 via the branch in S15. If it is determined that the program for the main controller is not valid, the process proceeds to S40.

メインコントローラ用プログラムが正当であると判定された場合、S20で、メインコントローラ20は、さらにコントローラ間正当性判定処理を実行する。コントローラ間正当性判定処理における正当性判定の対象は、プリンタコントローラ50の正当性判定プログラム330のみである。コントローラ間正当性判定処理は、例えばS10における正当性判定の結果リセットを解除されたCPU102により実行され得る。コントローラ間正当性判定処理のより詳細な流れの一例について、後にさらに説明する。 When it is determined that the program for the main controller is valid, the main controller 20 further executes the inter-controller validity determination process in S20. The target of the legitimacy determination in the inter-controller validity determination process is only the legitimacy determination program 330 of the printer controller 50. The inter-controller validity determination process can be executed by, for example, the CPU 102 whose reset result of the validity determination in S10 is released. An example of a more detailed flow of the legitimacy determination process between controllers will be further described later.

コントローラ間正当性判定処理の結果として、正当性判定プログラム330が正当であると判定された場合、S25での分岐を経て、処理はS30へ進む。一方、正当性判定プログラム330が正当でないと判定された場合、処理はS40へ進む。 If the legitimacy determination program 330 is determined to be legitimate as a result of the inter-controller validity determination process, the process proceeds to S30 via the branch in S25. On the other hand, if the legitimacy determination program 330 is determined to be invalid, the process proceeds to S40.

正当性判定プログラム330が正当であると判定された場合、S28で、メインコントローラ20は、S30でのサブコントローラ用プログラムの正当性の判定を待つことなく、メインコントローラ20のシステムのための処理を実行する。その間、S30で、サブコントローラであるプリンタコントローラ50は、サブコントローラ用プログラム正当性判定処理を実行する。サブコントローラ用プログラム正当性判定処理は、例えばS20における正当性判定の結果リセットを解除されたCPU202により実行され得る。サブコントローラ用プログラム正当性判定処理のより詳細な流れの一例について、後にさらに説明する。 When the validity determination program 330 is determined to be valid, in S28, the main controller 20 performs processing for the system of the main controller 20 without waiting for the determination of the validity of the subcontroller program in S30. Run. Meanwhile, in S30, the printer controller 50, which is a sub-controller, executes the program validity determination process for the sub-controller. The program validity determination process for the sub controller can be executed by, for example, the CPU 202 whose reset as a result of the validity determination in S20 is released. An example of a more detailed flow of the program validity determination process for the sub controller will be further described later.

サブコントローラ用プログラム正当性判定処理の結果として、サブコントローラ用プログラムが正当であると判定された場合、S35での分岐を経て、処理はS38へ進む。一方、サブコントローラ用プログラムが正当でないと判定された場合、処理はS40へ進む。 If the sub-controller program is determined to be valid as a result of the sub-controller program validity determination process, the process proceeds to S38 via the branch in S35. On the other hand, if it is determined that the sub-controller program is not valid, the process proceeds to S40.

サブコントローラ用プログラムが正当であると判定された場合、S38で、サブコントローラであるプリンタコントローラ50は、プリンタコントローラ50のシステムのための処理を実行する。 If it is determined that the sub-controller program is valid, in S38, the sub-controller printer controller 50 executes the process for the system of the printer controller 50.

S10、S20及びS30のうちの少なくとも1つでプログラムの正当性が否定された場合、複合機10の起動は失敗する。この場合、S40で、メインコントローラ20は、エラー通知を実行する。エラー通知は、例えば、LED125の点滅、警報音の出力又はディスプレイ上でのエラーメッセージの表示など、いかなる手法で行われてもよい。 If the validity of the program is denied in at least one of S10, S20, and S30, the startup of the multifunction device 10 will fail. In this case, in S40, the main controller 20 executes an error notification. The error notification may be performed by any method such as blinking of the LED 125, output of an alarm sound, or display of an error message on the display.

<2−2.メインコントローラ内の正当性判定>
図5は、図4のS10に示したメインコントローラ用プログラム正当性判定処理の流れの一例を示すフローチャートである。この処理は、装置の電源の投入に応じてリセットを解除されるメインコントローラのプロセッサ(例えば、複合機10のメインコントローラ20のCPU101)により実行され得る。
<2-2. Validity judgment in the main controller>
FIG. 5 is a flowchart showing an example of the flow of the program validity determination process for the main controller shown in S10 of FIG. This process can be executed by a processor of the main controller (for example, CPU 101 of the main controller 20 of the multifunction device 10) whose reset is released when the power of the apparatus is turned on.

まず、S100で、CPU101は、ROM103に予め記憶されているブートローダ300を起動する。 First, in S100, the CPU 101 starts the boot loader 300 stored in advance in the ROM 103.

次いで、S101で、CPU101は、ブートプログラム310をNORフラッシュメモリ122から読み出し、ブートプログラム310のハッシュ値をセキュアアシスト部105に算出させることにより導出する。 Next, in S101, the CPU 101 reads the boot program 310 from the NOR flash memory 122, and causes the secure assist unit 105 to calculate the hash value of the boot program 310 to derive the boot program 310.

次いで、S102で、CPU101は、ブートプログラム310に関連付けられる署名314をNORフラッシュメモリ122から読み出す。そして、CPU101は、OTP104に記憶されている検証鍵でセキュアアシスト部105に署名314を復号させることにより、ブートプログラム310の正当なハッシュ値を復元する。 Then, in S102, the CPU 101 reads the signature 314 associated with the boot program 310 from the NOR flash memory 122. Then, the CPU 101 restores the legitimate hash value of the boot program 310 by causing the secure assist unit 105 to decrypt the signature 314 with the verification key stored in the OTP 104.

次いで、S103で、CPU101は、S101で導出したハッシュ値がS102で復元したハッシュ値に一致するかを判定する。これらハッシュ値が一致する場合には、処理はS104へ進む。一方、ハッシュ値が一致しない場合には、処理はS106へ進む。 Next, in S103, the CPU 101 determines whether the hash value derived in S101 matches the hash value restored in S102. If these hash values match, the process proceeds to S104. On the other hand, if the hash values do not match, the process proceeds to S106.

ハッシュ値が一致する場合、S104で、CPU101は、ブートプログラム310が正当であると判定し、S105で、メインコントローラ20のCPU102のリセットを解除する。その結果、安全であることが確認されたブートプログラム310の実行がCPU102により開始され得る。 If the hash values match, in S104, the CPU 101 determines that the boot program 310 is valid, and in S105, releases the reset of the CPU 102 of the main controller 20. As a result, execution of the boot program 310 confirmed to be safe may be started by the CPU 102.

ハッシュ値が一致しない場合、S106で、CPU101は、ブートプログラム310が正当でないと判定する。その結果、図4のS40において説明したエラー通知が行われ得る。 If the hash values do not match, in S106, the CPU 101 determines that the boot program 310 is not valid. As a result, the error notification described in S40 of FIG. 4 can be performed.

<2−3.コントローラ間の正当性判定>
図6は、図4のS20に示したコントローラ間正当性判定処理の流れの一例を示すフローチャートである。この処理は、メインコントローラ用プログラムの正当性判定の結果としてリセットを解除されるメインコントローラのプロセッサ(例えば、複合機10のメインコントローラ20のCPU102)により実行され得る。
<2-3. Validity between controllers>
FIG. 6 is a flowchart showing an example of the flow of the inter-controller validity determination process shown in S20 of FIG. This process can be executed by the processor of the main controller (for example, the CPU 102 of the main controller 20 of the multifunction device 10) whose reset is released as a result of the validity determination of the program for the main controller.

まず、S200で、CPU102は、ブートプログラム310を起動する。 First, in S200, the CPU 102 starts the boot program 310.

次いで、S201で、CPU102は、サブコントローラ向けのインタフェースに相当するプリンタコントローラI/F113をアクティブ化する。 Then, in S201, the CPU 102 activates the printer controller I / F 113, which corresponds to the interface for the sub-controller.

次いで、S202で、CPU102は、プリンタコントローラI/F113を介してプリンタコントローラ50のNORフラッシュメモリ222から正当性判定プログラム330を読み出し、正当性判定プログラム330のハッシュ値を導出する。正当性判定プログラム330のハッシュ値は、例えば正当性判定プログラム330のプログラムデータに基づいてセキュアアシスト部105により算出され得る。 Next, in S202, the CPU 102 reads the legitimacy determination program 330 from the NOR flash memory 222 of the printer controller 50 via the printer controller I / F 113, and derives the hash value of the legitimacy determination program 330. The hash value of the legitimacy determination program 330 can be calculated by the secure assist unit 105 based on, for example, the program data of the legitimacy determination program 330.

次いで、S203で、CPU102は、正当性判定プログラム330に関連付けられる署名324をNORフラッシュメモリ222から読み出す。さらに、CPU102は、OTP104に記憶されている検証鍵でセキュアアシスト部105に署名324を復号させることにより、正当性判定プログラム330の正当なハッシュ値を復元する。 Next, in S203, the CPU 102 reads the signature 324 associated with the validity determination program 330 from the NOR flash memory 222. Further, the CPU 102 restores the legitimate hash value of the validity determination program 330 by causing the secure assist unit 105 to decrypt the signature 324 with the verification key stored in the OTP 104.

次いで、S204で、CPU102は、S202で導出したハッシュ値がS203で復元したハッシュ値に一致するかを判定する。これらハッシュ値が一致する場合には、処理はS205へ進む。一方、ハッシュ値が一致しない場合には、処理はS207へ進む。 Next, in S204, the CPU 102 determines whether the hash value derived in S202 matches the hash value restored in S203. If these hash values match, the process proceeds to S205. On the other hand, if the hash values do not match, the process proceeds to S207.

ハッシュ値が一致する場合、S205で、CPU102は、正当性判定プログラム330が正当であると判定し、S206で、サブコントローラであるプリンタコントローラ50のCPU202のリセットを解除する。その結果、安全であることが確認された正当性判定プログラム330の実行がCPU202により開始され得る。 When the hash values match, in S205, the CPU 102 determines that the validity determination program 330 is valid, and in S206, the reset of the CPU 202 of the printer controller 50, which is a sub controller, is released. As a result, execution of the legitimacy determination program 330 confirmed to be safe can be started by the CPU 202.

ハッシュ値が一致しない場合、S207で、CPU102は、正当性判定プログラム330が正当でないと判定する。その結果、図4のS40において説明したエラー通知が行われ得る。 If the hash values do not match, in S207, the CPU 102 determines that the validity determination program 330 is not valid. As a result, the error notification described in S40 of FIG. 4 can be performed.

<2−4.サブコントローラ内の正当性判定>
図7は、図4のS30に示したサブコントローラ用プログラム正当性判定処理の流れの一例を示すフローチャートである。この処理は、正当性判定プログラムの正当性判定の結果としてリセットを解除されるサブコントローラのプロセッサ(例えば、複合機10のプリンタコントローラ50のCPU202)により実行され得る。
<2-4. Validity judgment in the sub controller>
FIG. 7 is a flowchart showing an example of the flow of the program validity determination process for the sub-controller shown in S30 of FIG. This process can be executed by the processor of the sub-controller (for example, CPU 202 of the printer controller 50 of the multifunction device 10) whose reset is released as a result of the validity determination of the validity determination program.

なお、サブコントローラ用プログラム正当性判定処理が実行される前に、複合機10又はプリンタコントローラ50の電源の投入に応じて、システム制御部215によりプリンタコントローラ50の上述した最小限の機能がアクティブ化されているものとする。 Before the program validity determination process for the sub-controller is executed, the system control unit 215 activates the above-mentioned minimum functions of the printer controller 50 in response to the power-on of the multifunction device 10 or the printer controller 50. It is assumed that it has been done.

まず、S300で、CPU202は、正当性判定プログラム330をNORフラッシュメモリ222から読み出して起動する。 First, in S300, the CPU 202 reads the validity determination program 330 from the NOR flash memory 222 and starts it.

次いで、S301で、CPU202は、プリンタコントローラ50用のプログラムをNORフラッシュメモリ222から読み出し、読み出したプログラムのハッシュ値を導出する。 Next, in S301, the CPU 202 reads the program for the printer controller 50 from the NOR flash memory 222, and derives the hash value of the read program.

次いで、S302で、CPU202は、プリンタコントローラ50用のプログラムの正当なハッシュ値を取得する。プリンタコントローラ50用のプログラムのハッシュ値は、当該プログラムに関連付けられる署名から復元されてもよく、あるいは暗号化されていない状態で予め保持されていてもよい。 Then, in S302, the CPU 202 acquires a valid hash value of the program for the printer controller 50. The hash value of the program for the printer controller 50 may be restored from the signature associated with the program, or may be pre-held in an unencrypted state.

次いで、S303で、CPU202は、S301で導出したハッシュ値がS302で取得したハッシュ値に一致するかを判定する。これらハッシュ値が一致する場合には、処理はS304へ進む。一方、ハッシュ値が一致しない場合には、処理はS306へ進む。 Next, in S303, the CPU 202 determines whether the hash value derived in S301 matches the hash value acquired in S302. If these hash values match, the process proceeds to S304. On the other hand, if the hash values do not match, the process proceeds to S306.

ハッシュ値が一致する場合、S304で、CPU202は、プリンタコントローラ50用のプログラムが正当であると判定し、S305で、プリンタコントローラ50用のプログラムを起動する。例えば、CPU202によりシステム起動プログラム325が起動され得る。 If the hash values match, in S304, the CPU 202 determines that the program for the printer controller 50 is valid, and in S305, starts the program for the printer controller 50. For example, the system boot program 325 may be started by the CPU 202.

ハッシュ値が一致しない場合、S306で、CPU202は、プリンタコントローラ50用のプログラムが正当でないと判定する。その結果、図4のS40において説明したエラー通知が行われ得る。 If the hash values do not match, in S306, the CPU 202 determines that the program for the printer controller 50 is not valid. As a result, the error notification described in S40 of FIG. 4 can be performed.

以上説明したように、本実施形態によれば、第1コントローラ及び第2コントローラを備えるコントローラシステムにおいて、第1コントローラは、第1コントローラにて実行される第1コントローラ用プログラムが正当であるかを判定する。第1コントローラは、さらに、第2コントローラ用プログラムが正当であるかを判定するために第2コントローラにて実行される第2コントローラ用正当性判定プログラムが正当であるかを判定する。第2コントローラは、第2コントローラ用プログラムが正当であるかを判定する。言い換えると、第2コントローラ用の正当性判定プログラムの正当性は第1コントローラにて判定されるものの、第2コントローラ用の他のプログラムの正当性は当該正当性判定プログラムを実行することにより第2コントローラにて判定される。したがって、正当性の検証のためにコントローラ間で数多くのデータビットを通信する必要性が回避されるため、通信負荷を軽減できると共に、正当性の検証に要する処理時間を短縮することができる。そのうえ、コントローラシステム全体として、プログラムの改竄及び劣化といったリスクに対する適切な保護(セキュアブート)を、低コストで実現することができる。 As described above, according to the present embodiment, in the controller system including the first controller and the second controller, the first controller determines whether the program for the first controller executed by the first controller is valid. judge. The first controller further determines whether the second controller validity determination program executed by the second controller is valid in order to determine whether the second controller program is valid. The second controller determines whether the program for the second controller is valid. In other words, the legitimacy of the legitimacy determination program for the second controller is determined by the first controller, but the legitimacy of the other program for the second controller is determined by executing the legitimacy determination program. Determined by the controller. Therefore, it is possible to avoid the need to communicate a large number of data bits between the controllers for correctness verification, so that the communication load can be reduced and the processing time required for correctness verification can be shortened. Moreover, the controller system as a whole can realize appropriate protection (secure boot) against risks such as program tampering and deterioration at low cost.

<<3.変形例>>
本発明は上記実施形態に限定されず、様々な変形が可能である。例えば上記実施形態では、複合機10のメインコントローラ20及びプリンタコントローラ50への適用例を主に説明した。しかしながら、概して、本開示に係る技術は、少なくとも第1及び第2コントローラを備えるコントローラシステム、又はそうしたコントローラシステムを含む装置に適用可能である。上述した例に関わらず、第1コントローラ及び第2コントローラは、機能的に並列に位置付けられる2つのコントローラ(例えば、スキャナコントローラ30、プリンタコントローラ50及びUIコントローラ70のうちの任意の2つのペア)であってもよい。また、1つの第1コントローラに対して、2つ以上の第2コントローラが存在してもよい。
<< 3. Modification example >>
The present invention is not limited to the above embodiment, and various modifications are possible. For example, in the above embodiment, an example of application of the multifunction device 10 to the main controller 20 and the printer controller 50 has been mainly described. However, in general, the techniques according to the present disclosure are applicable to controller systems including at least first and second controllers, or devices including such controller systems. Notwithstanding the above example, the first controller and the second controller are two controllers that are functionally positioned in parallel (eg, any two pairs of the scanner controller 30, the printer controller 50 and the UI controller 70). There may be. Further, there may be two or more second controllers for one first controller.

また、説明の簡明さのために図2には示していないが、メインコントローラ20は、スキャナコントローラ30と通信するための通信I/F、及びUIコントローラ70と通信するための通信I/Fを含み得る。スキャナコントローラ30は、プリンタコントローラ50と同様に、少なくとも1つのプロセッサ(例えば、CPU)、当該プロセッサにより実行されるプログラムを記憶したメモリ、及びメインコントローラ20と通信するための通信I/Fを含み得る。UIコントローラ70もまた、少なくとも1つのプロセッサ、当該プロセッサにより実行されるプログラムを記憶したメモリ、及びメインコントローラ20と通信するための通信I/Fを含み得る。信頼の連鎖に沿って各コントローラにおいて正当性を判定されるプログラムは、上記実施形態で説明したプログラムに限定されず、いかなる種類のいくつのプログラムであってもよい。 Further, although not shown in FIG. 2 for the sake of simplicity of explanation, the main controller 20 provides a communication I / F for communicating with the scanner controller 30 and a communication I / F for communicating with the UI controller 70. Can include. Like the printer controller 50, the scanner controller 30 may include at least one processor (eg, a CPU), a memory that stores programs executed by the processor, and a communication I / F for communicating with the main controller 20. .. The UI controller 70 may also include at least one processor, a memory storing programs executed by the processor, and a communication I / F for communicating with the main controller 20. The program whose validity is determined in each controller along the chain of trust is not limited to the program described in the above embodiment, and may be any number of programs of any kind.

上記実施形態では、1つのメインコントローラと1つのサブコントローラとの間で、正当性判定プログラムを対象とするコントローラ間検証が実行される例を主に説明した。しかしながら、より多くのコントローラの間で多段階のコントローラ間検証が実行されてもよい。図8は、一変形例に係るそうした多段階のコントローラ間検証について説明するための説明図である。 In the above embodiment, an example in which inter-controller verification targeting a legitimacy determination program is executed between one main controller and one sub-controller has been mainly described. However, multi-step inter-controller verification may be performed among more controllers. FIG. 8 is an explanatory diagram for explaining such a multi-step inter-controller verification according to a modified example.

図8には、メインコントローラ20、第1のサブコントローラとしてのプリンタコントローラ50、及び第2のサブコントローラとしてのUIコントローラ70内の信頼の連鎖に関与するプログラムが概略的に示されている。 FIG. 8 schematically shows the programs involved in the chain of trust within the main controller 20, the printer controller 50 as the first subcontroller, and the UI controller 70 as the second subcontroller.

メインコントローラ20のブートローダ300は、第1判定部301を含み、RoTを提供する。メインコントローラ20のブートプログラム310は、コントローラ間判定部312を含む。第1判定部301は、ブートプログラム310に関連付けられる署名314を検証することにより、ブートプログラム310(即ち、コントローラ間判定部312)の正当性を判定する(矢印B1)。 The boot loader 300 of the main controller 20 includes a first determination unit 301 and provides a RoT. The boot program 310 of the main controller 20 includes an inter-controller determination unit 312. The first determination unit 301 determines the validity of the boot program 310 (that is, the inter-controller determination unit 312) by verifying the signature 314 associated with the boot program 310 (arrow B1).

プリンタコントローラ50の正当性判定プログラム330は、第2判定部321を含む。メインコントローラ20のコントローラ間判定部312は、正当性判定プログラム330に関連付けられる署名324を検証することにより、正当性判定プログラム330(即ち、第2判定部321)の正当性を判定する(矢印B2)。プリンタコントローラ50は、サブコントローラ用プログラムとして、システム起動プログラム325及びコントローラ間検証プログラム340を有する。コントローラ間検証プログラム340は、コントローラ間判定部342を含む。プリンタコントローラ50の第2判定部321は、システム起動プログラム325、及びコントローラ間検証プログラム340(即ち、コントローラ間判定部342)の正当性を判定する(矢印B3、B4)。 The validity determination program 330 of the printer controller 50 includes a second determination unit 321. The inter-controller determination unit 312 of the main controller 20 determines the validity of the validity determination program 330 (that is, the second determination unit 321) by verifying the signature 324 associated with the validity determination program 330 (arrow B2). ). The printer controller 50 has a system startup program 325 and an inter-controller verification program 340 as sub-controller programs. The inter-controller verification program 340 includes an inter-controller determination unit 342. The second determination unit 321 of the printer controller 50 determines the validity of the system startup program 325 and the inter-controller verification program 340 (that is, the inter-controller determination unit 342) (arrows B3 and B4).

UIコントローラ70の正当性判定プログラム360は、UIコントローラ70にて実行されるUIコントローラ70用のプログラムが正当であるかを判定するプログラムである。正当性判定プログラム360は、第3判定部351を含む。プリンタコントローラ50のコントローラ間判定部342は、正当性判定プログラム360に関連付けられる署名354を検証することにより、正当性判定プログラム360(即ち、第3判定部351)の正当性を判定する(矢印B5)。UIコントローラ70は、サブコントローラ用プログラムとして、システム起動プログラム365を有する。UIコントローラ70の第3判定部351は、システム起動プログラム365の正当性を判定する(矢印B6)。 The validity determination program 360 of the UI controller 70 is a program for determining whether or not the program for the UI controller 70 executed by the UI controller 70 is valid. The legitimacy determination program 360 includes a third determination unit 351. The inter-controller determination unit 342 of the printer controller 50 determines the validity of the validity determination program 360 (that is, the third determination unit 351) by verifying the signature 354 associated with the validity determination program 360 (arrow B5). ). The UI controller 70 has a system start program 365 as a sub controller program. The third determination unit 351 of the UI controller 70 determines the validity of the system startup program 365 (arrow B6).

本変形例では、相互接続する3つ以上のコントローラが存在するマルチコントローラシステムにおいて、RoTの実装に起因する実装コストの抑制と、正当性の検証に要する処理時間の長期化の防止とを両立することができる。そのうえ、メインコントローラにおいて提供されるRoTを起点として複数のコントローラをまたいだ信頼の連鎖が途切れることなく構築されるため、意図しないプログラムの変化のリスクに対する適切な保護も実現される。また、本変形例では、コントローラ間の正当性の判定が多段階で順次行われるため、特定のコントローラに判定処理の負荷が集中しない。よって、メインコントローラ及びサブコントローラのリソースを、それぞれのシステムの制御のために早期に解放することが可能である。 In this modification, in a multi-controller system in which there are three or more interconnected controllers, it is possible to suppress the mounting cost due to the mounting of RoT and prevent the processing time required for verification of validity from being prolonged. be able to. Moreover, since the chain of trust across multiple controllers is built without interruption starting from the RoT provided in the main controller, appropriate protection against the risk of unintended program changes is also realized. Further, in this modification, since the validity determination between the controllers is sequentially performed in multiple stages, the load of the determination process is not concentrated on a specific controller. Therefore, it is possible to release the resources of the main controller and the sub controller at an early stage for the control of each system.

<<4.その他の実施形態>>
本発明は、上述の実施形態の1つ以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出して実行する処理の形式でも実現可能である。また、1つ以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
<< 4. Other embodiments >>
The present invention supplies a program that realizes one or more functions of the above-described embodiment to a system or device via a network or storage medium, and one or more processors in the computer of the system or device reads the program. It can also be realized in the form of processing to be executed. It can also be realized by a circuit (for example, an ASIC) that realizes one or more functions.

本発明は上述した実施形態に制限されるものではなく、発明の精神及び範囲から逸脱することなく、様々な変更及び変形が可能である。したがって、発明の範囲を公にするために請求項を添付する。 The present invention is not limited to the above-described embodiments, and various modifications and modifications can be made without departing from the spirit and scope of the invention. Therefore, a claim is attached to make the scope of the invention public.

10:複合機、20:メインコントローラ、30:スキャナ(サブ)コントローラ、50:プリンタ(サブ)コントローラ、70:UI(サブ)コントローラ、301:第1判定部、312:コントローラ間判定部、321:第2判定部 10: Multifunction device, 20: Main controller, 30: Scanner (sub) controller, 50: Printer (sub) controller, 70: UI (sub) controller, 301: First judgment unit, 312: Inter-controller judgment unit, 321: Second judgment unit

Claims (10)

第1コントローラにて実行される第1コントローラ用プログラムが正当であるかを判定する第1判定部、を含む前記第1コントローラと、
第2コントローラにて実行される第2コントローラ用プログラムが正当であるかを判定する第2判定部、を含む前記第2コントローラと、
を備え、
前記第1コントローラは、前記第2コントローラ用プログラムが正当であるかを判定するために前記第2判定部により実行される第2コントローラ用正当性判定プログラムが正当であるかを判定する、
コントローラシステム。
The first controller including the first determination unit for determining whether the program for the first controller executed by the first controller is valid, and
The second controller including a second determination unit for determining whether the program for the second controller executed by the second controller is valid, and
With
The first controller determines whether the validity determination program for the second controller executed by the second determination unit is valid in order to determine whether the program for the second controller is valid.
Controller system.
請求項1に記載のコントローラシステムであって、
前記第1判定部は、信頼の基点を提供し、
前記第2判定部を含む前記第2コントローラは、信頼の基点を提供しない、
コントローラシステム。
The controller system according to claim 1.
The first determination unit provides a starting point of trust and
The second controller, including the second determination unit, does not provide a reliable base point.
Controller system.
請求項1又は請求項2に記載のコントローラシステムであって、
前記第1コントローラは、前記第2コントローラ用正当性判定プログラムが正当であるかを判定するコントローラ間判定部、をさらに含み、
前記コントローラ間判定部は、前記第1コントローラ用プログラムが正当であると前記第1判定部により判定される場合に、前記第1コントローラ用プログラムの実行に基づいて動作する、
コントローラシステム。
The controller system according to claim 1 or 2.
The first controller further includes an inter-controller determination unit that determines whether the validity determination program for the second controller is valid.
The inter-controller determination unit operates based on the execution of the first controller program when the first determination unit determines that the first controller program is valid.
Controller system.
請求項1乃至3のいずれか1項に記載のコントローラシステムであって、
前記第2コントローラは、前記第2コントローラ用正当性判定プログラムを予め記憶するプログラム記憶部、をさらに含む、
コントローラシステム。
The controller system according to any one of claims 1 to 3.
The second controller further includes a program storage unit that stores the validity determination program for the second controller in advance.
Controller system.
請求項4に記載のコントローラシステムであって、
前記プログラム記憶部は、前記第2コントローラ用正当性判定プログラムに関連付けられる署名であって、署名鍵で暗号化された暗号化済みハッシュ値を含む前記署名をさらに記憶し、
前記第1コントローラは、前記署名鍵に対応する検証鍵を予め記憶する鍵記憶部、をさらに含み、
前記第1コントローラは、前記暗号化済みハッシュ値を前記検証鍵を用いて復号することにより復元されるハッシュ値が、前記第2コントローラ用正当性判定プログラムから導出されるハッシュ値と一致する場合に、前記第2コントローラ用正当性判定プログラムが正当であると判定する、
コントローラシステム。
The controller system according to claim 4.
The program storage unit further stores the signature associated with the second controller validation program and includes the encrypted hash value encrypted with the signature key.
The first controller further includes a key storage unit that stores a verification key corresponding to the signature key in advance.
When the hash value restored by decrypting the encrypted hash value using the verification key in the first controller matches the hash value derived from the validity determination program for the second controller. , Judging that the validity determination program for the second controller is valid,
Controller system.
請求項1乃至5のいずれか1項に記載のコントローラシステムであって、
前記第2コントローラ用プログラムは、前記第2コントローラにおいて稼働する第2システムをブートする機能を含み、
前記第2コントローラは、前記第2コントローラ用プログラムが正当であると前記第2判定部により判定される場合に、前記第2コントローラ用プログラムを実行して、前記第2システムをブートする、
コントローラシステム。
The controller system according to any one of claims 1 to 5.
The program for the second controller includes a function of booting a second system running on the second controller.
When the second determination unit determines that the program for the second controller is valid, the second controller executes the program for the second controller and boots the second system.
Controller system.
請求項6に記載のコントローラシステムであって、
前記第1コントローラは、前記第2コントローラ用プログラムが正当であるかの前記判定を待つことなく、前記第1コントローラにおいて稼働する第1システムのための処理を実行する、
コントローラシステム。
The controller system according to claim 6.
The first controller executes processing for the first system operating in the first controller without waiting for the determination as to whether the program for the second controller is valid.
Controller system.
請求項1乃至7のいずれか1項に記載のコントローラシステムであって、
第3コントローラにて実行される第3コントローラ用プログラムが正当であるかを判定する第3判定部、を含む前記第3コントローラ、をさらに備え、
前記第2コントローラは、前記第3コントローラ用プログラムが正当であるかを判定するために前記第3コントローラにて実行される第3コントローラ用正当性判定プログラムが正当であるかを判定する、
コントローラシステム。
The controller system according to any one of claims 1 to 7.
The third controller including a third determination unit for determining whether the program for the third controller executed by the third controller is valid is further provided.
The second controller determines whether the validity determination program for the third controller executed by the third controller is valid in order to determine whether the program for the third controller is valid.
Controller system.
請求項1乃至8のいずれか1項に記載のコントローラシステムと、
画像を印刷する印刷部、原稿を走査して前記原稿の画像を読み取る画像読み取り部、及びユーザによる操作を受け付ける操作部、のうちの少なくとも1つと、
を含み、
前記第2コントローラは、前記印刷部、前記画像読み取り部、及び前記操作部のうちの前記少なくとも1つを制御する、
情報処理装置。
The controller system according to any one of claims 1 to 8.
At least one of a printing unit that prints an image, an image reading unit that scans a document and reads an image of the document, and an operation unit that accepts operations by a user.
Including
The second controller controls at least one of the printing unit, the image reading unit, and the operating unit.
Information processing device.
第1コントローラ及び第2コントローラを備えるコントローラシステムにおけるプログラムの正当性を検証する方法であって、
前記第1コントローラにおいて、第1コントローラにて実行される第1コントローラ用プログラムが正当であるかを判定することと、
前記第1コントローラにおいて、第2コントローラ用プログラムが正当であるかを判定するために前記第2コントローラにて実行される第2コントローラ用正当性判定プログラムが正当であるかを判定することと、
前記第2コントローラにおいて、前記第2コントローラ用プログラムが正当であるかを判定することと、
を含む方法。
A method of verifying the validity of a program in a controller system including a first controller and a second controller.
In the first controller, determining whether the program for the first controller executed by the first controller is valid, and
In the first controller, in order to determine whether the program for the second controller is valid, it is determined whether the validity determination program for the second controller executed by the second controller is valid.
In the second controller, determining whether the program for the second controller is valid and
How to include.
JP2019093135A 2019-05-16 2019-05-16 Controller system and method Pending JP2020187650A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2019093135A JP2020187650A (en) 2019-05-16 2019-05-16 Controller system and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019093135A JP2020187650A (en) 2019-05-16 2019-05-16 Controller system and method

Publications (1)

Publication Number Publication Date
JP2020187650A true JP2020187650A (en) 2020-11-19

Family

ID=73221809

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019093135A Pending JP2020187650A (en) 2019-05-16 2019-05-16 Controller system and method

Country Status (1)

Country Link
JP (1) JP2020187650A (en)

Similar Documents

Publication Publication Date Title
US9830456B2 (en) Trust transference from a trusted processor to an untrusted processor
US8438377B2 (en) Information processing apparatus, method and computer-readable storage medium that encrypts and decrypts data using a value calculated from operating-state data
JP6067449B2 (en) Information processing apparatus and information processing program
US10225426B2 (en) Image forming apparatus having firmware update function, method of controlling the same, program for executing the method, and storage medium
EP2741228B1 (en) System on chip to perform a secure boot, an image forming apparatus using the same, and method thereof
JP5079803B2 (en) System and method for authenticating a game device
CN101657792A (en) Trusted component update system and method
US11106798B2 (en) Automatically replacing versions of a key database for secure boots
US10282549B2 (en) Modifying service operating system of baseboard management controller
EP3076324B1 (en) Information processing apparatus and method of controlling the apparatus
CN116361747A (en) Secure operating system boot according to reference platform manifest and data encapsulation
JP6930884B2 (en) BIOS management device, BIOS management system, BIOS management method, and BIOS management program
JPWO2009013825A1 (en) Information processing apparatus and falsification verification method
TWI754219B (en) Update signals
CN117413268A (en) Firmware-based secure rental transfer
JP2009169841A (en) Information processor and portable telephone device
JP2007310688A (en) Microcomputer and software tampering prevention method thereof
JP2023129643A (en) Information processing apparatus, information processing method, and program
US11379589B2 (en) Information processing apparatus and method of controlling the same
JP2020187650A (en) Controller system and method
CN115361132A (en) Key generation method, device, system on chip, equipment and storage medium
CN114995918A (en) Starting method and configuration method and device of baseboard management controller and electronic equipment
JP7263101B2 (en) Information processing device, data verification method
JP7171339B2 (en) Information processing device, control method for information processing device, and program
JP2021140601A (en) Information processing device, control method therefor, 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