JP2020187650A - Controller system and method - Google Patents
Controller system and method Download PDFInfo
- 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
Links
Images
Landscapes
- Accessory Devices And Overall Control Thereof (AREA)
- Stored Programmes (AREA)
Abstract
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が一括して検証することで、改竄検知のための処理時間の短縮が実現される。
しかしながら、相互接続する複数のコントローラが存在するマルチコントローラシステムでは、単一のコントローラが一括して全てのプログラムの正当性を検証しようとすると、コントローラ間の通信のために却って処理時間が長期化し得る。一方、個々のコントローラが互いに独立してコントローラ内のプログラムの正当性を検証する仕組みを実装しようとすると、実装コストが多大となり得る。 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.
以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものでない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一の又は同様の構成に同一の参照番号を付し、重複した説明は省略される。 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
メインコントローラ20は、複合機10に含まれる複数のコンポーネントの動作を統合的に制御するコントローラである。メインコントローラ20は、後述するスキャナコントローラ30、プリンタコントローラ50及びUIコントローラ70と接続される。メインコントローラ20は、さらに、複合機10の外部のネットワーク又は外部装置と有線で又は無線で接続されてもよい。
The
スキャナコントローラ30は、スキャナ40の動作を制御するコントローラである。スキャナ40は、原稿を走査して当該原稿の画像を読み取る画像読み取り部としての役割を有する。例えば、スキャナ40により原稿の画像が読み取られると、スキャナコントローラ30は、読み取られた画像について必要に応じて画像処理を実行し、処理された画像をメインコントローラ20へ送信する。
The
プリンタコントローラ50は、プリンタ60の動作を制御するコントローラである。プリンタ60は、画像を印刷する印刷部としての役割を有する。例えば、プリンタコントローラ50は、印刷されるべき画像をメインコントローラ20から受信し、受信した画像について必要に応じて画像処理を実行し、処理後の画像をプリンタ60へ出力する。プリンタ60は、プリンタコントローラ50から入力される画像を印刷する。プリンタ60は、メインコントローラ20による制御の下で、スキャナ40により読み取られた画像をスキャナコントローラ30及びプリンタコントローラ50を介して受信し、受信した画像を印刷(即ち、コピー)してもよい。
The
UIコントローラ70は、UI80を介したユーザによる操作の受け付け及びユーザへの情報の出力を制御するコントローラである。UI80は、ユーザによる操作を受け付ける操作部としての役割を有する。例えば、UI80は、複合機10の動作に関するメニューをディスプレイ(図示せず)へ表示する。また、UI80は、例えばタッチパネル、ボタン又はスイッチといった入力インタフェース(図示せず)を介して、原稿のスキャン若しくはコピー、又は画像の印刷といった機能の実行を求めるユーザ操作を受け付ける。UIコントローラ70は、こうしたユーザ操作に応じて、対応するコマンドをメインコントローラ20へ送信する。メインコントローラ20は、コマンドの受信に応じて、スキャナコントローラ30を介してスキャナ40に原稿をスキャンさせ、及び/又はプリンタコントローラ50を介してプリンタ60に画像を印刷させる。
The
以下の説明において、メインコントローラ20と通信し及びメインコントローラ20により制御されるスキャナコントローラ30、プリンタコントローラ50及びUIコントローラ70の各々を、サブコントローラという。メインコントローラ20及びサブコントローラの各々は、1つ以上のプログラムを記憶するメモリと、プログラムを実行するプロセッサ(例えば、CPU)とを有する。これらプログラムのより詳細な構成について、後にさらに説明する。
In the following description, each of the
<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
図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
CPU101は、後述するブートローダ(IPL(Initial Program Loader)ともいう)を実行するプロセッサである。CPU101は、ブートローダを実行してブートプログラムが正当であるか(例えば、改竄又は劣化により変化していないか)を判定し、正当性が肯定されると、CPU102のリセットを解除する。ブートプログラムが正当であるかの判定は、ブートプログラムに関連付けられる署名を検証することにより行われる。追加的に、CPU101は、メインコントローラ20用のブート以外の目的のための1つ以上のプログラムが正当であるかを判定してもよい。
The
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
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
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
画像処理部106は、スキャナコントローラ30から受信される読み取り画像についてのシェーディング、及びプリンタコントローラ50へ送信される印刷画像についてのハーフトーンといった画像処理を実行するコンポーネントである。
The
RAM I/F111は、SOC21によるDRAM121へのアクセスのためのインタフェースである。RAM I/F111は、例えば、DRAM121からのデータの読み出し及びDRAM121へのデータの書き込みといった動作を制御し得る。DRAM121は、CPU102及び画像処理部106のためのワークメモリとして使用され、CPU102により実行されるプログラム及びその他のデータを一時的に記憶する。
The RAM I /
フラッシュメモリI/F112は、SOC21によるNORフラッシュメモリ122へのアクセスのためのインタフェースである。フラッシュメモリI/F112は、例えば、NORフラッシュメモリ122からのデータの読み出し及びNORフラッシュメモリ122へのデータの書き込みといった動作を制御し得る。NORフラッシュメモリ122は、上述したブートプログラム及び当該ブートプログラムに関連付けられる署名データを記憶する。
The flash memory I /
プリンタコントローラI/F113は、メインコントローラ20によるプリンタコントローラ50との通信のためのインタフェースである。本実施形態において、メインコントローラ20は、プリンタコントローラI/F113を介して、後述するプリンタコントローラ50内のメモリから読み出されるデータ(例えば、プリンタコントローラ50用の正当性判定プログラム及び署名)を受信し得る。
The printer controller I /
画像送信部114は、プリンタ60により印刷されるべき画像を、メインコントローラ20からプリンタコントローラ50へ送信する。プリンタ60により印刷されるべき画像は、例えば、画像処理部106により処理されたハーフトーン画像であってもよい。
The
外部ポートI/F115は、複合機10の入出力機能を提供する汎用のポートを制御するインタフェースである。例えば、外部ポートI/F115は、必要に応じて、出力ポート(図示せず)を介してLED125を点灯し、消灯し又は点滅させてもよい。外部ポートI/F115は、複合機10に発生した異常をユーザへ報知するために、(例えば、ソフトウェア異常又はハードウェア異常といった異常の種類に対応するパターンで)LED125を点灯させ又は点滅させてもよい。
The external port I /
<1−3.サブコントローラの構成>
プリンタコントローラ50は、上述したように、一実施形態に係る複合機10のサブコントローラの一例である。
<1-3. Sub-controller configuration>
As described above, the
図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
CPU202は、プリンタコントローラ50用の正当性判定プログラムがメインコントローラ20において正当であると判定されると、当該正当性判定プログラムを実行して、プリンタコントローラ50用の他のプログラムの正当性を判定する。プリンタコントローラ50用の正当性判定プログラムの正当性は、上述したように、メインコントローラ20のCPU102において、当該正当性判定プログラムに関連付けられる署名を検証することにより判定され得る。本実施形態において、プリンタコントローラ50用のプログラムは、少なくともプリンタコントローラ50において稼働する第2システムをブートする機能を含む。第2システムは、例えば、プリンタコントローラ50のBIOS及びオペレーティングシステムを含み得る。追加的に、CPU202は、正当であると判定されたプリンタコントローラ50用の他のプログラムを実行して、プリンタコントローラ50の多様なコンポーネントを制御してもよい。
When the validity determination program for the
画像処理部206は、メインコントローラ20から受信されるハーフトーン画像について、微小変倍及びPWM(Pulse Width Modulation)といった印刷用の事前処理を実行するコンポーネントである。
The
メインコントローラI/F208は、プリンタコントローラ50によるメインコントローラ20との通信のためのインタフェースである。本実施形態において、プリンタコントローラ50は、メインコントローラI/F208を介して、後述するNORフラッシュメモリ222から読み出されるプリンタコントローラ50用の正当性判定プログラム及び署名をメインコントローラ20へ送信し得る。
The main controller I /
画像受信部209は、プリンタ60により印刷されるべき画像を、メインコントローラ20から受信する。画像受信部209により受信される画像は、例えば、メインコントローラ20において処理されたハーフトーン画像であってもよい。
The
RAM I/F211は、SOC51によるDRAM221へのアクセスのためのインタフェースである。RAM I/F211は、例えば、DRAM221からのデータの読み出し及びDRAM221へのデータの書き込みといった動作を制御し得る。DRAM221は、CPU202及び画像処理部206のためのワークメモリとして使用され、CPU202により実行されるプログラム及びその他のデータを一時的に記憶する。
The RAM I /
フラッシュメモリI/F212は、SOC51によるNORフラッシュメモリ222へのアクセスのためのインタフェースである。フラッシュメモリI/F212は、例えば、NORフラッシュメモリ222からのデータの読み出し及びNORフラッシュメモリ222へのデータの書き込みといった動作を制御し得る。NORフラッシュメモリ222は、上述したプリンタコントローラ50用の正当性判定プログラム及び当該正当性判定プログラムに関連付けられる署名データを記憶する。
The flash memory I /
システム制御部215は、プリンタコントローラ50の電源の投入に応じて、プリンタコントローラ50の最小限の機能をアクティブ化する。例えば、プリンタコントローラ50の最小限の機能は、メインコントローラI/F208、フラッシュメモリI/F212及びNORフラッシュメモリ222の機能、並びにそれら機能の間のバスを介した通信機能を含んでもよい。これら機能のアクティブ化は、例えば、ハードシーケンサのみで制御されてもよい。システム制御部215は、CPU202及びメインコントローラI/F208と連携して、SOC51におけるクロック制御及びリセット制御を行ってもよい。
The
プリンタI/F216は、プリンタコントローラ50によるプリンタ60の制御に関連する制御通信、及び印刷用画像のプリンタ60への送信のためのインタフェースである。
The printer I /
<1−4.ソフトウェア構成>
図3は、一実施形態に係る複合機10におけるプログラムの配置の一例を信頼の連鎖と共に示すプログラム配置図である。
<1-4. Software configuration>
FIG. 3 is a program layout diagram showing an example of program layout in the
図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
ブートローダ300は、複合機10の電源の投入に応じてCPU101により実行されるプログラムである。ブートローダ300は、ロジックの書き換えを困難にする形でROM103に記憶され、それにより、複合機10のシステム全体の信頼性を保証するための信頼の連鎖の出発点であるRoTを提供する。ブートローダ300は、第1判定部301を含む。
The
第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
ブートプログラム310は、ブートローダ300によりブートプログラム310が正当であると判定された場合にCPU102により実行される、メインコントローラ20用のプログラムである。図3の例において、ブートプログラム310は、初期化部311及びコントローラ間判定部312を含む。初期化部311は、RAM I/F111及びプリンタコントローラI/F113といったメインコントローラ20の様々なコンポーネントの初期化を行う。初期化部311は、メインコントローラ20において稼働する第1システムのBIOS及びオペレーティングシステムを起動してもよい。
The
コントローラ間判定部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
なお、図3には、初期化部311及びコントローラ間判定部312が単一のプログラムに含まれる例を示しているが、初期化部311及びコントローラ間判定部312は、別個のプログラムにそれぞれ含まれてもよい。
Note that FIG. 3 shows an example in which the
正当性判定プログラム330は、プリンタコントローラ50用の1つ以上のプログラムが正当であるかを判定するためにCPU202により実行されるプログラムである。正当性判定プログラム330は、ブートプログラム310により正当性判定プログラム330が正当であると判定された場合に実行される。図3の例において、正当性判定プログラム330は、第2判定部321を含む。
The
第2判定部321は、プリンタコントローラ50にて実行されるプリンタコントローラ50用の1つ以上のプログラム(即ち、サブコントローラ用プログラム)が正当であるかを検証する。図3の例において、サブコントローラ用プログラムは、システム起動プログラム325を含む。したがって、第2判定部321は、システム起動プログラム325が正当であるかを、例えばシステム起動プログラム325に関連付けられる署名又はハッシュ値を検証することにより判定する(図中の矢印A3)。システム起動プログラム325の署名又はハッシュ値は、正当性判定プログラム330により保持されていてもよく、又はプリンタコントローラ50内のいずれかのメモリに記憶されていてもよい。ここでの正当性の判定は、上述したブートプログラム310及び正当性判定プログラム330についての判定と同様に行われてよい。第2判定部321は、システム起動プログラム325が正当であると判定される場合には、CPU202にシステム起動プログラム325を実行させる。
The
システム起動プログラム325は、第2判定部321によりシステム起動プログラム325が正当であると判定された場合に実行されるプログラムである。システム起動プログラム325は、例えば、プリンタコントローラ50において稼働する第2システムのBIOS及びオペレーティングシステムを起動(即ち、第2システムをブート)してもよい。
The
ここで、メインコントローラ20は、プリンタコントローラ50にて正当性判定プログラム330により行われるプリンタコントローラ50用のプログラムが正当であるかの判定を待つことなく、メインコントローラ20のシステムのための処理を実行し得る。このように、本実施形態では、正当性が保証されるべきサブコントローラの全てのプログラムについてメインコントローラで正当性が判定されるケースと比較して、より早期にメインコントローラのリソースをシステムの制御のために解放することが可能である。
Here, the
図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
また、本実施形態において、プリンタコントローラ50のNORフラッシュメモリ222は、上述したように、サブコントローラ用正当性判定プログラムを当該プログラムに関連付けられる署名と共に予め記憶するプログラム記憶部としての役割を有する。一方、メインコントローラ20のOTP104は、その署名を生成する際に使用された署名鍵に対応する検証鍵を予め記憶する鍵記憶部としての役割を有する。このように、サブコントローラ側でサブコントローラ用正当性判定プログラム及びその署名を保持し、メインコントローラ側で検証鍵を保持する構成を採用することで、コントローラ間の高いレベルの独立性を確保することができる。即ち、サブコントローラ側のシステムの修正のためにプログラムを正当に変更する場合には、サブコントローラ側のデータ(プログラム及び署名)のみを更新すればよく、メインコントローラへの影響が回避される。
Further, in the present embodiment, as described above, the NOR
<<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
まず、S10で、メインコントローラ20は、メインコントローラ用プログラム正当性判定処理を実行する。メインコントローラ用プログラム正当性判定処理は、例えば複合機10の電源の投入に応じてリセットを解除されたCPU101により実行され得る。メインコントローラ用プログラム正当性判定処理のより詳細な流れの一例について、後にさらに説明する。
First, in S10, the
メインコントローラ用プログラム正当性判定処理の結果として、メインコントローラ用プログラムが正当であると判定された場合、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
コントローラ間正当性判定処理の結果として、正当性判定プログラム330が正当であると判定された場合、S25での分岐を経て、処理はS30へ進む。一方、正当性判定プログラム330が正当でないと判定された場合、処理はS40へ進む。
If the
正当性判定プログラム330が正当であると判定された場合、S28で、メインコントローラ20は、S30でのサブコントローラ用プログラムの正当性の判定を待つことなく、メインコントローラ20のシステムのための処理を実行する。その間、S30で、サブコントローラであるプリンタコントローラ50は、サブコントローラ用プログラム正当性判定処理を実行する。サブコントローラ用プログラム正当性判定処理は、例えばS20における正当性判定の結果リセットを解除されたCPU202により実行され得る。サブコントローラ用プログラム正当性判定処理のより詳細な流れの一例について、後にさらに説明する。
When the
サブコントローラ用プログラム正当性判定処理の結果として、サブコントローラ用プログラムが正当であると判定された場合、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
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
<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,
まず、S100で、CPU101は、ROM103に予め記憶されているブートローダ300を起動する。
First, in S100, the
次いで、S101で、CPU101は、ブートプログラム310をNORフラッシュメモリ122から読み出し、ブートプログラム310のハッシュ値をセキュアアシスト部105に算出させることにより導出する。
Next, in S101, the
次いで、S102で、CPU101は、ブートプログラム310に関連付けられる署名314をNORフラッシュメモリ122から読み出す。そして、CPU101は、OTP104に記憶されている検証鍵でセキュアアシスト部105に署名314を復号させることにより、ブートプログラム310の正当なハッシュ値を復元する。
Then, in S102, the
次いで、S103で、CPU101は、S101で導出したハッシュ値がS102で復元したハッシュ値に一致するかを判定する。これらハッシュ値が一致する場合には、処理はS104へ進む。一方、ハッシュ値が一致しない場合には、処理はS106へ進む。
Next, in S103, the
ハッシュ値が一致する場合、S104で、CPU101は、ブートプログラム310が正当であると判定し、S105で、メインコントローラ20のCPU102のリセットを解除する。その結果、安全であることが確認されたブートプログラム310の実行がCPU102により開始され得る。
If the hash values match, in S104, the
ハッシュ値が一致しない場合、S106で、CPU101は、ブートプログラム310が正当でないと判定する。その結果、図4のS40において説明したエラー通知が行われ得る。
If the hash values do not match, in S106, the
<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
まず、S200で、CPU102は、ブートプログラム310を起動する。
First, in S200, the
次いで、S201で、CPU102は、サブコントローラ向けのインタフェースに相当するプリンタコントローラI/F113をアクティブ化する。
Then, in S201, the
次いで、S202で、CPU102は、プリンタコントローラI/F113を介してプリンタコントローラ50のNORフラッシュメモリ222から正当性判定プログラム330を読み出し、正当性判定プログラム330のハッシュ値を導出する。正当性判定プログラム330のハッシュ値は、例えば正当性判定プログラム330のプログラムデータに基づいてセキュアアシスト部105により算出され得る。
Next, in S202, the
次いで、S203で、CPU102は、正当性判定プログラム330に関連付けられる署名324をNORフラッシュメモリ222から読み出す。さらに、CPU102は、OTP104に記憶されている検証鍵でセキュアアシスト部105に署名324を復号させることにより、正当性判定プログラム330の正当なハッシュ値を復元する。
Next, in S203, the
次いで、S204で、CPU102は、S202で導出したハッシュ値がS203で復元したハッシュ値に一致するかを判定する。これらハッシュ値が一致する場合には、処理はS205へ進む。一方、ハッシュ値が一致しない場合には、処理はS207へ進む。
Next, in S204, the
ハッシュ値が一致する場合、S205で、CPU102は、正当性判定プログラム330が正当であると判定し、S206で、サブコントローラであるプリンタコントローラ50のCPU202のリセットを解除する。その結果、安全であることが確認された正当性判定プログラム330の実行がCPU202により開始され得る。
When the hash values match, in S205, the
ハッシュ値が一致しない場合、S207で、CPU102は、正当性判定プログラム330が正当でないと判定する。その結果、図4のS40において説明したエラー通知が行われ得る。
If the hash values do not match, in S207, the
<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,
なお、サブコントローラ用プログラム正当性判定処理が実行される前に、複合機10又はプリンタコントローラ50の電源の投入に応じて、システム制御部215によりプリンタコントローラ50の上述した最小限の機能がアクティブ化されているものとする。
Before the program validity determination process for the sub-controller is executed, the
まず、S300で、CPU202は、正当性判定プログラム330をNORフラッシュメモリ222から読み出して起動する。
First, in S300, the
次いで、S301で、CPU202は、プリンタコントローラ50用のプログラムをNORフラッシュメモリ222から読み出し、読み出したプログラムのハッシュ値を導出する。
Next, in S301, the
次いで、S302で、CPU202は、プリンタコントローラ50用のプログラムの正当なハッシュ値を取得する。プリンタコントローラ50用のプログラムのハッシュ値は、当該プログラムに関連付けられる署名から復元されてもよく、あるいは暗号化されていない状態で予め保持されていてもよい。
Then, in S302, the
次いで、S303で、CPU202は、S301で導出したハッシュ値がS302で取得したハッシュ値に一致するかを判定する。これらハッシュ値が一致する場合には、処理はS304へ進む。一方、ハッシュ値が一致しない場合には、処理はS306へ進む。
Next, in S303, the
ハッシュ値が一致する場合、S304で、CPU202は、プリンタコントローラ50用のプログラムが正当であると判定し、S305で、プリンタコントローラ50用のプログラムを起動する。例えば、CPU202によりシステム起動プログラム325が起動され得る。
If the hash values match, in S304, the
ハッシュ値が一致しない場合、S306で、CPU202は、プリンタコントローラ50用のプログラムが正当でないと判定する。その結果、図4のS40において説明したエラー通知が行われ得る。
If the hash values do not match, in S306, the
以上説明したように、本実施形態によれば、第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
また、説明の簡明さのために図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
上記実施形態では、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
メインコントローラ20のブートローダ300は、第1判定部301を含み、RoTを提供する。メインコントローラ20のブートプログラム310は、コントローラ間判定部312を含む。第1判定部301は、ブートプログラム310に関連付けられる署名314を検証することにより、ブートプログラム310(即ち、コントローラ間判定部312)の正当性を判定する(矢印B1)。
The
プリンタコントローラ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
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
本変形例では、相互接続する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)
第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判定部は、信頼の基点を提供し、
前記第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コントローラ用プログラムが正当であると前記第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.
前記第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.
前記プログラム記憶部は、前記第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.
前記第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.
前記第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.
第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つと、
を含み、
前記第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コントローラにおいて、第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.
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) |
-
2019
- 2019-05-16 JP JP2019093135A patent/JP2020187650A/en active Pending
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 |