JP2020047064A - 情報処理装置及びその制御方法、並びにプログラム - Google Patents

情報処理装置及びその制御方法、並びにプログラム Download PDF

Info

Publication number
JP2020047064A
JP2020047064A JP2018176151A JP2018176151A JP2020047064A JP 2020047064 A JP2020047064 A JP 2020047064A JP 2018176151 A JP2018176151 A JP 2018176151A JP 2018176151 A JP2018176151 A JP 2018176151A JP 2020047064 A JP2020047064 A JP 2020047064A
Authority
JP
Japan
Prior art keywords
information processing
signal
control means
boot program
processing apparatus
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.)
Granted
Application number
JP2018176151A
Other languages
English (en)
Other versions
JP7170482B2 (ja
JP2020047064A5 (ja
Inventor
大野 信一
Shinichi Ono
信一 大野
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 JP2018176151A priority Critical patent/JP7170482B2/ja
Priority to US16/569,869 priority patent/US11418671B2/en
Publication of JP2020047064A publication Critical patent/JP2020047064A/ja
Publication of JP2020047064A5 publication Critical patent/JP2020047064A5/ja
Application granted granted Critical
Publication of JP7170482B2 publication Critical patent/JP7170482B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/00912Arrangements for controlling a still picture apparatus or components thereof not otherwise provided for
    • H04N1/00928Initialisation or control of normal start-up or shut-down, i.e. non failure or error related
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1417Boot up procedures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/00885Power supply means, e.g. arrangements for the control of power supply to the apparatus or components thereof
    • H04N1/00888Control thereof
    • H04N1/00896Control thereof using a low-power mode, e.g. standby
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/00912Arrangements for controlling a still picture apparatus or components thereof not otherwise provided for
    • H04N1/00925Inhibiting an operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/0077Types of the still picture apparatus
    • H04N2201/0094Multifunctional device, i.e. a device capable of all of reading, reproducing, copying, facsimile transception, file transception

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Quality & Reliability (AREA)
  • Accessory Devices And Overall Control Thereof (AREA)
  • Facsimiles In General (AREA)

Abstract

【課題】情報処理装置の起動時に、サブCPUによるブートプログラムの検証の完了前に、メインCPUがブートプログラムを実行することを防止する技術を提供する。【解決手段】メインCPU101は、MFP1の起動時に、OTP領域に格納されているプログラムを実行することにより、フラッシュROM112に格納されているブートコードの検証結果を示す信号の受信を待つ状態に移行する。サブCPU115は、MFP1の起動時に、フラッシュROM112に格納されているブートコードの正当性を検証し、当該検証の結果を示す検証終了信号116をメインCPU101へ送信する。メインCPU101は、サブCPU115から検証終了信号116を受信すると、フラッシュROM112に格納されているブートコードを実行する。【選択図】図1

Description

本発明は、情報処理装置及びその制御方法、並びにプログラムに関するものである。
近年、複合機(MFP)等の情報処理装置では、システムの起動開始の時点で、当該システムに含まれるソフトウェアの改ざんの有無を調べ、改ざんされている可能性のあるソフトウェアを動作させない仕組み(改ざん検知機能)が導入されつつある。例えば、メインCPUが実行するブートコード(ブートプログラム)を、メインCPUの起動前にサブCPUが読み出し、読み出したブートコードの改ざんの有無をサブCPUが検証する。ブートコードの改ざんを検知した場合には、改ざんされたブートコードをメインCPUが実行することを防止するために、メインCPUを起動させないようにすることが望ましい。
メインCPUを起動させないためには、例えば、メインCPUに入力されるリセット信号を制御して、メインCPUをリセット状態に維持する方法がある。また、特許文献1には、メインCPUの起動が一旦完了したら直ちにメインCPUを割込み待ち状態に移行させる方法が記載されている。この方法では、サブCPUが起動して割込み信号をメインCPUへ送信することで、メインCPUが割込み状態から復帰してその後の処理を実行可能になる。
特開2011−13775号公報
しかし、サブCPUからメインCPUへ出力するリセット信号の制御によりメインCPUをリセット状態に維持する場合、以下のような要因により、メインCPUのリセット状態が不適切に解除されてしまう可能性がある。例えば、サブCPUにおけるリセット信号の出力用の端子に、基板実装時の半田ブリッジが生じた場合、若しくはゴミが付着した場合、又は、サブCPU自体が故障した場合、サブCPUからメインCPUへ正しいリセット信号が出力されなくなる。その結果、不正なリセット信号によりメインCPUのリセット状態が解除されると、サブCPUによるブートコードの検証の完了を待たずに、改ざんされたブートコードをメインCPUが実行してしまう可能性がある。
また、悪意のある第三者によって、サブCPUからメイン信号へのリセット信号用の配線が意図的に改造され、正しいブートコードが書き込まれたROMが、不正なブートコードが書き込まれたROMにすり替えられる可能性がある。その場合、ブートコードの検証の完了を待たずに、不正なブートコードをメインCPUが実行することで、予期しない処理を画像処理装置が実行してしまう可能性がある。
本発明は、上述の課題に鑑みてなされたものである。本発明は、情報処理装置の起動時に、サブCPUによるブートプログラムの検証の完了前に、メインCPUがブートプログラムを実行することを防止する技術を提供することを目的とする。
本発明の一態様に係る情報処理装置は、ブートプログラムが格納された不揮発性の記憶手段と、書き換えが不可能なメモリ領域を有し、前記情報処理装置の起動時に、前記メモリ領域に格納されているプログラムを実行することにより、前記記憶手段に格納されている前記ブートプログラムの検証結果を示す信号の受信を待つ状態に移行する第1制御手段と、前記記憶手段に格納されている前記ブートプログラムの正当性を検証し、当該検証の結果を示す前記信号を前記第1制御手段へ送信する第2制御手段と、を備え、前記第1制御手段は、前記第2制御手段から前記信号を受信すると、前記記憶手段に格納されている前記ブートプログラムを実行することを特徴とする。
本発明によれば、情報処理装置の起動時に、サブCPUによるブートプログラムの検証の完了前に、メインCPUがブートプログラムを実行することを防止できる。
MFPのハードウェア構成例を示すブロック図。 メインCPUのハードウェア構成例を示すブロック図。 サブCPUのハードウェア構成例を示すブロック図。 検証終了信号の信号波形の例を示す図。 サブCPUによる処理の手順を示すフローチャート。 メインCPUによる処理の手順を示すフローチャート。
以下、本発明を実施するための形態について図面を用いて説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものでなく、また実施形態で説明されている特徴の組み合わせの全てが発明の解決手段に必須のものとは限らない。
<MFPの構成>
図1は、本発明の実施形態に係る画像処理装置である複合機(MFP)のハードウェア構成例を示すブロック図である。本実施形態は、情報処理装置の一例として、メインCPU及びサブCPUを備え、画像処理を行う画像処理装置(画像形成装置)であるMFPに本発明を適用した例について説明する。なお、本発明は、メインCPU及びサブCPUを備える情報処理装置に適用可能であり、例えば、印刷装置、読取装置、複写機、及びファクシミリ装置等にも適用可能である。
本実施形態のMFP1は、メインCPU(Central Processing Unit)101、DRAM(Dynamic Random Access Memory)102、及び操作部I/F(インタフェース)103を備える。MFP1は、更に、ネットワークI/F104、プリンタ部105、スキャナ部106、FAX(ファクシミリ)部107、HDD(Hard Disk Drive)108、画像処理部111、及び電源制御部118を備える。これらのデバイスは、信号バス109に接続されており、信号バス109を介して相互に通信可能である。MFP1は、更に、操作部103、フラッシュROM(Read Only Memory)112、サブCPU115、及びリセット制御部121を備える。メインCPU101、フラッシュROM112、及びサブCPU115は、SPI(Serial Peripheral Interface)バス114に接続されており、SPIバス114を介して相互に通信可能である。
メインCPU101は、MFP1全体を制御する。DRAM102は、メインCPU101によって実行されるプログラムを格納するとともに、一時的なデータ用のワークエリアとしても使用される。操作部103は、操作部I/F113を介して信号バス109に接続されている。操作部103は、ユーザによる操作を受け付けて、当該受け付けた操作を、操作部I/F113を介してメインCPU101に通知する。
HDD108は、メインCPU101によって実行されるプログラムを格納するとともに、プリントジョブ又はスキャンジョブ等のジョブのスプール領域としても使用される。また、HDD108は、スキャン画像等の画像データを保存するために使用される。フラッシュROM112は、メインCPU101によって実行されるブートコード(ブートプログラム)を含むプログラムを格納するとともに、MFP1のデフォルト設定値を格納する、不揮発性のメモリ(記憶装置)である。
ネットワークI/F104は、LAN130に接続されており、LAN130を介して外部装置との通信を行う。例えば、ネットワークI/F104は、外部装置から送信されたプリントジョブを受信する。プリンタ部105は、入力された画像データに基づいてシート等の記録媒体に画像を形成(印刷)する。スキャナ部106は、原稿の画像を光学的に読み取って電気信号に変換することで、スキャン画像の画像データを生成する。FAX(ファクシミリ)部107は、公衆回線110に接続されており、公衆回線110を介して外部装置とのFAX通信を行う。
画像処理部111は、プリンタ部105による印刷に用いられる画像データに対して、プリンタ部105による印刷に適した画像への変換処理を行う。また、画像処理部111は、スキャナ部106により生成された、又はHDD108に保存されている画像データに対して、ノイズ除去、色空間変換、回転、及び圧縮等の画像処理を実行する。
サブCPU115は、MFP1が起動した際、メインCPU101の起動の完了前にフラッシュROM112からブートコードを読み出し、読み出したブートコードの正当性(即ち、ブートコードが改ざんされているか否か)を検証する検証処理を行う。この検証処理により、ブートコードの改ざんを検知可能である。サブCPU115は、ブートコードの検証結果を示す検証終了信号116を、メインCPU101へ出力する。
サブCPU115によって使用される改ざん検知方法は、例えば以下の方法である。まず、ブートコードのデジタル署名の公開鍵情報(ブートコードのハッシュ値を公開鍵暗号化して得られる暗号情報)を、MFP1の製造時にサブCPU115内のOTP(One Time Program)領域204(図2)に格納しておく。更に、サブCPU115が、OTP領域204に格納されている暗号情報を用いて、フラッシュROM112から読み出したブートコードの改ざんの有無(ブートコードの正当性)を検証する。なお、公開鍵暗号の方法としては、RSA2048又はECDSA等が使用されうる。
電源制御部118は、商業用AC電源から電源供給線120を介して電力の供給を受ける。また、電源制御部118は、電源線119を介して、MFP1内の各モジュールへの電力の供給を制御する。
リセット制御部121は、メインCPU101及びサブCPU115に出力するリセット信号117を用いて、メインCPU101及びサブCPU115の動作状態を、リセット状態とリセット解除状態との間で制御する。リセット信号117がL(ロー)レベルである場合、メインCPU101及びサブCPU115は、リセット状態となる。リセット信号117がH(ハイ)レベルである場合、メインCPU101及びサブCPU115は、リセット解除状態となる。
リセット制御部121は、供給される電源電圧が所定電圧を超えてから所定時間が経過すると、メインCPU101及びサブCPU115に出力するリセット信号117を、LレベルからHレベルに遷移させる。これにより、リセット制御部121は、メインCPU101及びサブCPU115のリセット解除を行う。即ち、リセット制御部121は、MFP1が電源オフ状態から起動すると、リセット信号117を用いてメインCPU101及びサブCPU115のリセット状態を解除する。
なお、本実施形態において、メインCPU101は、第1制御手段の一例として機能し、サブCPU115は、第2制御手段の一例として機能する。また、リセット制御部121は、第1制御手段及び第2制御手段のリセット状態を解除する解除手段の一例として機能する。
<メインCPUの構成>
図2は、メインCPU101のハードウェア構成例を示すブロック図である。メインCPU101は、信号バス209に接続されたモジュールとして、CPUコア201、SPI I/F202、GPIO(General-purpose input/output)203、OTP領域204、及びSRAM205を備える。
CPUコア201は、CPUの基本機能を担っている。SPI I/F202は、SPIバス114に接続されており、SPIバス114を介して外部のSPIデバイスとの間でデータの読み書きを行う。GPIO203は、外部のデバイスと通信可能に接続され、外部のデバイスとの間でデータの送受信を行う。例えば、GPIO203は、サブCPU115から送信された検証終了信号116を受信する。
OTP領域204は、プログラムを一度のみ書き込み可能なメモリ領域であり、書き換えが不可能なメモリ領域である。OTP領域204にプログラムが書き込まれると、当該プログラムを二度と書き換えることはできない。OTP領域204には、MFP1が電源オフ状態から起動した後に最初に実行されるプログラムが予め格納されている。このプログラムは、MFP1の製造時にOTP領域204に書き込まれる。SRAM205は、メインCPU101内のワークメモリとして使用される。
リセット制御部121から出力されたリセット信号117は、メインCPU101のリセット端子を介してCPUコア201に入力される。リセット信号117がLレベルの場合、メインCPU101はリセット状態となる。リセット信号117がHレベルの場合、メインCPU101はリセット解除状態となる。リセット信号117がLレベルからHレベルに遷移(即ち、メインCPU101がリセット状態からリセット解除状態に遷移)すると、CPUコア201は、まず、OTP領域204に格納されているプログラムを読み出して実行する。即ち、CPUコア201は、MFP1の起動時に、OTP領域204に格納されているプログラムを最初に実行する。
<サブCPUの構成>
図3は、サブCPU115のハードウェア構成例を示すブロック図である。サブCPU115は、信号バス309に接続されたモジュールとして、CPUコア301、SPI I/F302、GPIO303、OTP領域304、SRAM205、暗号処理部308、及びROM310を備える。
CPUコア301は、CPUの基本機能を担っている。SPI I/F302は、SPIバス114に接続されており、SPIバス114を介して外部のSPIデバイスとの間でデータの読み書きを行う。GPIO303は、外部のデバイスと通信可能に接続され、外部のデバイスとの間でデータの送受信を行う。例えば、GPIO303は、フラッシュROM112から読み出されたブートコードの検証結果を示す検証終了信号116を、メインCPU101へ送信する。
OTP領域304は、プログラムを一度のみ書き込み可能なメモリ領域であり、書き換えが不可能なメモリ領域である。OTP領域304にプログラムが書き込まれると、当該プログラムを二度と書き換えることはできない。OTP領域304には、ブートコードのハッシュ値を公開鍵暗号化して得られる暗号情報が予め格納されている。この暗号情報は、MFP1の製造時にOTP領域304に書き込まれる。SRAM305は、サブCPU115内のワークメモリとして使用される。
暗号処理部308は、OTP領域304に格納されている暗号情報を復号して、ブートコードのハッシュ値を復元する。ROM310は、サブCPU115用のブートコードを格納している。
リセット制御部121から出力されたリセット信号117は、サブCPU115のリセット端子を介してCPUコア301に入力される。リセット信号117がLレベルの場合、サブCPU115はリセット状態となる。リセット信号117がHレベルの場合、サブCPU115はリセット解除状態となる。リセット信号117がLレベルからHレベルに遷移(即ち、サブCPU115がリセット状態からリセット解除状態に遷移)すると、CPUコア301は、まず、ROM310に格納されている、サブCPU115用のブートコードを読み出して実行する。
次に、CPUコア301は、SPI I/F302を介して、フラッシュROM112に格納されている、メインCPU101用のブートコードを読み出して、当該ブートコードのハッシュ値を計算する。また、CPUコア301は、OTP領域304に格納されている暗号情報を、暗号処理部308を用いて復号してブートコードのハッシュ値を復元する。CPUコア301は、OTP領域304に格納されている暗号情報を復号して得られたハッシュ値と、フラッシュROM112から読み出したブートコードのハッシュ値とを比較することにより、ブートコードの改ざんの有無を検証する。CPUコア301は、その検証結果を、GPIO303を介して検証終了信号116としてメインCPU101に通知する。
<検証終了信号>
図4は、サブCPU115が出力する検証終了信号116の信号波形の例を示す図である。信号波形401は、ブートコードが正しい(改ざんされていない)との検証結果が得られた場合に出力される信号の波形である。信号波形402は、ブートコードが不正である(改ざんされている)との検証結果が得られた場合に出力される信号の波形である。
本実施形態では、サブCPU115は、ブートコードが正しいとの検証結果が得られた場合、HレベルとLレベルとを所定の周期で所定の回数繰り返す信号波形401を、検証終了信号116として出力する。一方、サブCPU115は、ブートコードが不正であるとの検証結果が得られた場合、一定のレベルで変化しない信号波形402を、検証終了信号116として出力する。
検証終了信号116の周期は、メインCPU101がGPIO203への信号入力をサンプリング可能な周期(サンプリング周期)に設定される必要がある。サンプリング定理によれば、サブCPU115から出力される検証終了信号116の周期は、メインCPU101のサンプリング周期の2倍以上(誤差等を考慮し、実用的には10倍程度)に設定される必要がある。例えば、メインCPU101のサンプリング周期が1msの場合、検証終了信号116の周期は10msに設定される。
このように、サブCPU115は、ブートコードの検証処理の結果、ブートコードが正しいとの検証結果が得られた場合には、特定パターンを有する信号を、検証終了信号116としてメインCPU101へ送信(出力)する。これにより、サブCPU115は、メインCPU101に対して、ブートコードが正しいとの検証結果が得られたことを通知する。なお、図4の例では、検証終了信号116の信号波形401として、HレベルとLレベルとを単純に繰り返すパターンを示しているが、より複雑なパターンが用いられてもよい。信号波形401のパターンを複雑にするほど、検証終了信号116自体が不正に操作される可能性を低くできる。
<サブCPUの処理>
図5は、サブCPU115によって実行される処理の手順を示すフローチャートである。MFP1が電源オフ状態から起動して、リセット制御部121から出力されるリセット信号117に従ってリセット状態が解除されると、サブCPU115は、図5の手順による処理を実行する。
まずS501で、サブCPU115(CPUコア301)は、SPIバス114を介してフラッシュROM112から、メインCPU101用のブートコードを読み出す。次にS502で、サブCPU115は、フラッシュROM112から読み出したブートコードの検証処理(ブートコードの正当性を検証する処理)を実行する。このように、サブCPU115は、リセット制御部121によってリセット状態が解除されると、フラッシュROM112に格納されているブートコードの検証を開始する。
S503で、サブCPU115は、S502の検証処理の結果に基づいて、ブートコードが正しいか否かを判定する。サブCPU115は、ブートコードが不正である(正当ではない)場合には、処理を終了する。なお、ブートコードが不正である場合に、サブCPU115は、ブートコードの改ざんを報知してもよい。例えば、サブCPU115は、MFP1内に配置された基板上のLED(図示せず)を点灯させてもよいし、操作部103にエラー表示を行わせることにより、ブートコードの改ざんを報知してもよい。一方、サブCPU115は、ブートコードが正しい(正当である)場合には、S504へ処理を進める。
S504で、サブCPU115は、GPIO303を介して、(図4に信号波形401として例示される)特定パターンを有する検証終了信号116を、メインCPU101へ送信する。このように、サブCPU115は、S502の検証処理の結果、フラッシュROM112に格納されているブートコードが正当であれば、特定パターンを有する検証終了信号116をメインCPU101へ送信する。その後、S505で、サブCPU115は、消費電力の低減のために、スリープ状態(省電力状態)へ移行し、処理を終了する。
<メインCPUの処理>
図6は、メインCPU101によって実行される処理の手順を示すフローチャートである。MFP1が電源オフ状態から起動して、リセット制御部121から出力されるリセット信号117に従ってリセット状態が解除されると、メインCPU101は、図6の手順による処理を実行する。
まずS601で、メインCPU101は、OTP領域204に格納されたプログラムを実行する。このプログラムは、メインCPU101のリセット解除時に、S602の処理を実行するためのプログラムである。このように、メインCPU101は、リセット制御部121によってリセット状態が解除されると、OTP領域204に格納されているプログラムの実行を開始する。
次にS602で、メインCPU101は、(図4に信号波形401として例示される)特定パターンを有する検証終了信号116を、サブCPU115から受信したか否かを判定する。この判定により、メインCPU101は、検証終了信号116として特定パターンを有する信号をサブCPU115から受信するまで待機する。即ち、メインCPU101は、MFP1の起動時に、OTP領域204に格納されているプログラムを実行することにより、検証終了信号116の受信を待つ状態に移行する。メインCPU101は、特定パターンを有する信号を検証終了信号116として受信すると、S603へ処理を進める。
S603で、メインCPU101は、正しいことが検証されたブートコードをフラッシュROM112から読み出す。更にS604で、メインCPU101は、読み出したブートコードを実行する。このように、メインCPU101は、特定パターンを有する信号をサブCPU115から受信すると、フラッシュROM112に格納されているブートコードを実行する。その後、メインCPU101は、図6の手順による処理を終了する
以上説明したように、本実施形態では、メインCPU101は、MFP1の起動時に、OTP領域204に格納されているプログラムを実行する。これにより、メインCPU101は、フラッシュROM112に格納されているブートコード(ブートプログラム)の検証結果を示す信号の受信を待つ状態に移行する。サブCPU115は、フラッシュROM112に格納されているブートコードの正当性を検証し、当該検証の結果を示す検証終了信号116をメインCPU101へ送信する。メインCPU101は、サブCPU115から検証終了信号116を受信すると、フラッシュROM112に格納されているブートコードを実行する。
このように、メインCPU101は、MFP1の起動時のリセット解除後に、まずOTP領域204に格納されているプログラムを実行することにより、検証終了信号116の受信を待つ状態に移行する。更に、メインCPU101は、ブートコードの検証の完了後にサブCPU115から送信される検証終了信号116を受信すると、フラッシュROM112に格納されているブートコードを実行する。即ち、メインCPU101は、リセット状態の解除に応じてブートコードの実行を開始するのではなく、リセット状態が解除された後、検証終了信号116を受信することでブートコードの実行を開始する。
これにより、不正なリセット信号がメインCPU101に入力されたとしても、サブCPU115によるブートコードの検証の完了前に、メインCPU101がブートコードを実行することを防ぐことが可能になる。したがって、したがって、例えば、サブCPUにおけるリセット信号の出力用の端子にゴミが付着した場合やサブCPU自体が故障した場合に、ブートコードの検証の完了を待たずに不正なブートコードをメインCPUが実行することを防止できる。また、サブCPUからメイン信号へのリセット信号用の配線が意図的に改造された場合でも、不正なブートコードをメインCPUが実行することを防止できる。
なお、上述の実施形態では、サブCPU115からメインCPU101への片方向の信号送信の例を示している。この点について、検証終了信号116を受信したメインCPU101が、サブCPU115へ受信確認信号を送信し、当該受信確認信号に応じて、サブCPU115が、再度、検証終了信号116をメインCPU101へ送信してもよい。その場合、メインCPU101は、検証終了信号116を再び受信した場合に、フラッシュROM112からブートコードを読み出して実行してもよい。これにより、検証終了信号116を用いたメインCPU101の制御についての信頼性を高めることが可能となる。
[その他の実施形態]
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
1:MFP、101:メインCPU、112:フラッシュROM、115:サブCPU、116:検証終了信号、117:リセット信号、201:CPUコア、204:OTP領域、301:CPUコア、304:OTP領域

Claims (11)

  1. 情報処理装置であって、
    ブートプログラムが格納された不揮発性の記憶手段と、
    書き換えが不可能なメモリ領域を有し、前記情報処理装置の起動時に、前記メモリ領域に格納されているプログラムを実行することにより、前記記憶手段に格納されている前記ブートプログラムの検証結果を示す信号の受信を待つ状態に移行する第1制御手段と、
    前記記憶手段に格納されている前記ブートプログラムの正当性を検証し、当該検証の結果を示す前記信号を前記第1制御手段へ送信する第2制御手段と、を備え、
    前記第1制御手段は、前記第2制御手段から前記信号を受信すると、前記記憶手段に格納されている前記ブートプログラムを実行する
    ことを特徴とする情報処理装置。
  2. 前記第2制御手段は、前記検証の結果、前記記憶手段に格納されている前記ブートプログラムが正当であれば、特定パターンを有する信号を前記信号として前記第1制御手段へ送信し、
    前記第1制御手段は、前記特定パターンを有する信号を前記第2制御手段から受信すると、前記記憶手段に格納されている前記ブートプログラムを実行する
    ことを特徴とする請求項1に記載の情報処理装置。
  3. 前記第2制御手段は、前記検証の結果、前記記憶手段に格納されている前記ブートプログラムが正当でなければ、前記特定パターンを有する信号を前記第1制御手段へ送信せずに、前記ブートプログラムの改ざんを報知する
    ことを特徴とする請求項2に記載の情報処理装置。
  4. 前記第1制御手段は、前記特定パターンを有する信号を前記第2制御手段から受信すると、受信確認信号を前記第2制御手段へ送信し、当該受信確認信号に応じて前記第2制御手段から送信される前記特定パターンを有する信号を受信すると、前記記憶手段から前記ブートプログラムを読み出して実行する
    ことを特徴とする請求項2又は3に記載の情報処理装置。
  5. 前記メモリ領域には、前記情報処理装置が電源オフ状態から起動した後に前記第1制御手段によって最初に実行されるプログラムが予め書き込まれている格納されている
    ことを特徴とする請求項1から4のいずれか1項に記載の情報処理装置。
  6. 前記情報処理装置が電源オフ状態から起動すると、前記第1制御手段及び前記第2制御手段のリセット状態を解除する解除手段を更に備え、
    前記第1制御手段は、前記解除手段によって前記リセット状態が解除されると、前記メモリ領域に格納されている前記プログラムの実行を開始する
    ことを特徴とする請求項1から5のいずれか1項に記載の情報処理装置。
  7. 前記第2制御手段は、前記解除手段によって前記リセット状態が解除されると、前記記憶手段に格納されている前記ブートプログラムの前記検証を開始する
    ことを特徴とする請求項6に記載の情報処理装置。
  8. 前記第2制御手段は、前記ブートプログラムから得られた暗号情報が予め格納された、書き換えが不可能なメモリ領域を有し、
    前記第2制御手段は、前記メモリ領域に格納されている前記暗号情報を復号して得られたハッシュ値と、前記記憶手段から読み出した前記ブートプログラムのハッシュ値とを比較することにより、前記ブートプログラムの正当性を検証する
    ことを特徴とする請求項1から7のいずれか1項に記載の情報処理装置。
  9. 前記第2制御手段は、前記ブートプログラムの前記検証が終了し、前記第1制御手段へ前記信号を送信した後に、省電力状態へ移行する
    ことを特徴とする請求項1から8のいずれか1項に記載の情報処理装置。
  10. ブートプログラムが格納された不揮発性の記憶手段と、書き換えが不可能なメモリ領域を有する第1制御手段と、第2制御手段と、を備える情報処理装置の制御方法であって、
    前記第1制御手段が、前記情報処理装置の起動時に、前記メモリ領域に格納されているプログラムを実行することにより、前記記憶手段に格納されている前記ブートプログラムの検証結果を示す信号の受信を待つ状態に移行する工程と、
    前記第2制御手段が、前記記憶手段に格納されている前記ブートプログラムの正当性を検証し、当該検証の結果を示す前記信号を前記第1制御手段へ送信する工程と、
    前記第1制御手段が、前記第2制御手段から前記信号を受信すると、前記記憶手段に格納されている前記ブートプログラムを実行する工程と、
    を含むことを特徴とする情報処理装置の制御方法。
  11. 請求項10に記載の情報処理装置の制御方法の各工程をコンピュータに実行させるためのプログラム。
JP2018176151A 2018-09-20 2018-09-20 情報処理装置及びその制御方法、並びにプログラム Active JP7170482B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018176151A JP7170482B2 (ja) 2018-09-20 2018-09-20 情報処理装置及びその制御方法、並びにプログラム
US16/569,869 US11418671B2 (en) 2018-09-20 2019-09-13 Information processing apparatus, and method of controlling the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018176151A JP7170482B2 (ja) 2018-09-20 2018-09-20 情報処理装置及びその制御方法、並びにプログラム

Publications (3)

Publication Number Publication Date
JP2020047064A true JP2020047064A (ja) 2020-03-26
JP2020047064A5 JP2020047064A5 (ja) 2021-10-28
JP7170482B2 JP7170482B2 (ja) 2022-11-14

Family

ID=69885086

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018176151A Active JP7170482B2 (ja) 2018-09-20 2018-09-20 情報処理装置及びその制御方法、並びにプログラム

Country Status (2)

Country Link
US (1) US11418671B2 (ja)
JP (1) JP7170482B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022185570A1 (ja) * 2021-03-02 2022-09-09 日立Astemo株式会社 制御装置

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7278753B2 (ja) * 2018-11-19 2023-05-22 キヤノン株式会社 ソフトウェアの改ざんを検知することが可能な情報処理装置
US11768611B2 (en) 2020-04-02 2023-09-26 Axiado Corporation Secure boot of a processing chip

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000322254A (ja) * 1999-05-07 2000-11-24 Sega Enterp Ltd 電子装置及びセキュリティチェック方法
JP2014056390A (ja) * 2012-09-12 2014-03-27 Ricoh Co Ltd 情報処理装置及び正当性検証方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050138409A1 (en) * 2003-12-22 2005-06-23 Tayib Sheriff Securing an electronic device
US7725703B2 (en) * 2005-01-07 2010-05-25 Microsoft Corporation Systems and methods for securely booting a computer with a trusted processing module
US7424398B2 (en) * 2006-06-22 2008-09-09 Lexmark International, Inc. Boot validation system and method
JP5578811B2 (ja) 2009-06-30 2014-08-27 キヤノン株式会社 情報処理装置、情報処理装置の制御方法及びプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000322254A (ja) * 1999-05-07 2000-11-24 Sega Enterp Ltd 電子装置及びセキュリティチェック方法
JP2014056390A (ja) * 2012-09-12 2014-03-27 Ricoh Co Ltd 情報処理装置及び正当性検証方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022185570A1 (ja) * 2021-03-02 2022-09-09 日立Astemo株式会社 制御装置

Also Published As

Publication number Publication date
JP7170482B2 (ja) 2022-11-14
US11418671B2 (en) 2022-08-16
US20200099815A1 (en) 2020-03-26

Similar Documents

Publication Publication Date Title
US10574854B2 (en) Imaging processing apparatus for receiving print data from server and performing image processing and method for controlling the same
US11418671B2 (en) Information processing apparatus, and method of controlling the same
US11392701B2 (en) Information processing apparatus and method for controlling the same
US11006013B2 (en) Image processing apparatus, having second processor to verify boot program has been altered, method of controlling the same, and storage medium
US20210011660A1 (en) Information processing apparatus and control method
KR20180002349A (ko) 화상 형성 장치에서 실행 파일의 위변조를 검증하는 방법 및 이를 이용하는 화상 형성 장치
JP2019159892A (ja) 情報処理装置及び情報処理方法
JP4934073B2 (ja) 画像処理装置及び画像処理方法
JP7321795B2 (ja) 情報処理装置、情報処理方法およびプログラム
JP2009033539A (ja) 画像形成装置
JP2008229977A (ja) 画像処理装置,画像処理方法,プログラム,および記録媒体
JP7289641B2 (ja) 情報処理装置、およびその制御方法
JP2021089607A (ja) 情報処理装置
JP2013101486A (ja) 電子機器システム、電子機器及び記憶媒体
JP5124241B2 (ja) 情報処理装置、情報処理方法、情報処理プログラム及び記録媒体
JP2009070106A (ja) 画像形成装置、データの処理方法並びにデータの処理プログラム
US20220121536A1 (en) Information processing apparatus
US20220121760A1 (en) Information processing apparatus
JP2020187649A (ja) 情報処理装置、制御方法、およびプログラム
JP2023124500A (ja) 情報処理装置、情報処理装置の制御方法およびプログラム
JP2022182838A (ja) 情報処理装置とその制御方法
US20230367873A1 (en) Information processing apparatus and control method of information processing apparatus
JP2023167086A (ja) 情報処理装置及び情報処理装置の制御方法
JP2019193195A (ja) 印刷装置、印刷装置の制御方法、及び、プログラム
US20240146852A1 (en) Control apparatus, method of controlling control apparatus, and storage medium

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20210103

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210113

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210913

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210913

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220428

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220506

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220622

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20221003

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221101

R151 Written notification of patent or utility model registration

Ref document number: 7170482

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151