JP7286381B2 - 情報処理装置とその制御方法 - Google Patents

情報処理装置とその制御方法 Download PDF

Info

Publication number
JP7286381B2
JP7286381B2 JP2019070038A JP2019070038A JP7286381B2 JP 7286381 B2 JP7286381 B2 JP 7286381B2 JP 2019070038 A JP2019070038 A JP 2019070038A JP 2019070038 A JP2019070038 A JP 2019070038A JP 7286381 B2 JP7286381 B2 JP 7286381B2
Authority
JP
Japan
Prior art keywords
cpu
program
information processing
control means
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.)
Active
Application number
JP2019070038A
Other languages
English (en)
Other versions
JP2020170256A (ja
Inventor
淳一 合田
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 JP2019070038A priority Critical patent/JP7286381B2/ja
Priority to US16/833,776 priority patent/US11379589B2/en
Publication of JP2020170256A publication Critical patent/JP2020170256A/ja
Application granted granted Critical
Publication of JP7286381B2 publication Critical patent/JP7286381B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/60Protecting data
    • G06F21/606Protecting data by securing the transmission between two devices or processes
    • G06F21/608Secure printing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Facsimiles In General (AREA)
  • Accessory Devices And Overall Control Thereof (AREA)
  • Stored Programmes (AREA)

Description

本発明は、情報処理装置とその制御方法に関するものである。
情報機器の脆弱性をついてファームウェアを改竄して情報機器を悪用する攻撃が問題となっている。そういった攻撃対策として、ブートプログラムのデジタル署名(以下、署名と呼ぶ)を用いたセキュアブートが知られている。セキュアブートは、ブートローダによって、ブートプログラムの起動前に署名を検証してその有効性を確認することで、信頼されたブートプログラムを機器上で動作させる技術である。署名の検証(以下、署名検証と呼ぶ)を実行するブートローダは通常、書き換えの困難なハードウェア等に格納される。このブートローダを信頼の基点(Root of Trust、以下RoT)とし、RoTによって信頼されたブートプログラムが、同様にOSやアプリケーションプログラムを順次検証して起動する。これにより、情報機器上で動作する全てのプログラムを信頼のチェーンでつなぐことが可能となる。
各プログラムの署名は、RSAやDSA/ECDSAといった暗号アルゴリズムに従って、プログラムのハッシュ値と署名鍵を用いて事前に生成され、不揮発性メモリにプログラムとともに格納される。そして署名検証時には、プログラム、署名、及び検証鍵を用いて、上述の暗号アルゴリズムに従った検証処理がなされる。このような署名検証により、プログラムが改ざんされているかどうかを確認してから起動することが可能となる。
特許文献1には、1つのコントローラ内に複数のCPUと各CPUの動作プログラムを有し、複数のCPUが1つの改竄検知機能を提供するモジュールであるTPM(Trusted Platform Module)を共有し、それぞれの動作プログラムを署名検証する方法が記載されている。
特開2014-21953号公報
CPUと、そのCPUが動作するプログラムとを有するコントローラが複数接続されるシステムにおいて、改竄検知機能を全てのコントローラで持つとコストが上昇する。また、各コントローラが改竄検知機能を持たない場合、改竄検知機能を持たないコントローラがブートすると、情報機器を悪用する攻撃を受ける可能性がある。
本発明の目的は、上記従来技術の問題点の少なくとも一つを解決することにある。
本発明の目的は、複数の制御手段を有する装置において、プログラムの改竄検知機能を有さない制御手段のプログラムに対しても改竄検知を行うことにより、改竄検知機能を持たない制御手段も安全に起動できる技術を提供することにある。
上記目的を達成するために本発明の一態様に係る情報処理装置は以下のような構成を備える。即ち、
少なくとも第1制御手段と第2制御手段とを有する情報処理装置であって、
前記第2制御手段は、CPUと、当該CPUにより実行される第1プログラムを不揮発に記憶する第1記憶手段と
前記情報処理装置の電源がオンされることにより、前記第1制御手段と第2制御手段との間で通信が可能な状態とする通信手段と、を有し、
前記第1制御手段は、
第1CPUと、
第2CPUと、
前記第1CPUにより実行されるブートプログラムを不揮発に記憶するROMと、
前記第2CPUにより実行される第2プログラムを不揮発に記憶する第2記憶手段と、を有し、
前記情報処理装置の起動時、前記第1CPUは前記ROMに記憶されたブートプログラムを実行して前記第2記憶手段に記憶されている前記第2プログラムの改竄の有無を検証し、
当該検証により前記第2プログラムが改竄されていないことを確認した後、前記第2CPUを起動させることにより前記第2CPUが前記第2記憶手段に記憶されている前記第2プログラムを実行することにより、前記情報処理装置の起動時、前記通信手段により前記第2制御手段から送信された前記第1プログラムに基づいて、前記第1記憶手段に記憶されている前記第1プログラムの改竄の有無を検証し、
前記検証により前記第1プログラムが改竄されていないことを確認した後、前記CPUを起動させることを特徴とする。
本発明によれば、複数の制御手段を有する装置において、プログラムの改竄検知機能を有さない制御手段のプログラムに対しても改竄検知を行うことにより、改竄検知機能を持たない制御手段も安全に起動できるという効果がある。
本発明のその他の特徴及び利点は、添付図面を参照とした以下の説明により明らかになるであろう。なお、添付図面においては、同じ若しくは同様の構成には、同じ参照番号を付す。
添付図面は明細書に含まれ、その一部を構成し、本発明の実施形態を示し、その記述と共に本発明の原理を説明するために用いられる。
本発明の実施形態1に係る複合機のハードウェア構成を説明するブロック図。 実施形態1に係るメインコントローラとプリンタコントローラのハードウェア構成を説明するブロック図。 実施形態1に係る複合機が有するソフトウェアモジュールを説明するブロック図。 実施形態1に係る複合機のCPU201がNORフラッシュメモリに格納されたブートプログラムの署名検証を実行するときの処理を説明するフローチャート。 実施形態1に係る複合機のCPU202がNORフラッシュメモリのブートプログラムを実行するときの処理を説明するフローチャート。 実施形態1に係る複合機のプリンタコントローラの起動処理を説明するフローチャート。 実施形態2に係るメインコントローラとプリンタコントローラのハードウェア構成を説明するブロック図。 実施形態2に係る複合機のCPU202がNORフラッシュメモリのブートプログラムを実行するときの処理を説明するフローチャート。
以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものでない。実施形態には複数の特徴が記載されているが、これら複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一もしくは同様の構成に同一の参照番号を付し、重複した説明は省略する。尚、実施形態に係る情報処理装置として複合機(デジタル複合機/MFP/Multi Function Peripheral)を例に説明する。しかしながら適用範囲は複合機に限定はせず、情報処理装置であればよい。
[実施形態1]
図1は、本発明の実施形態1に係る複合機100のハードウェア構成を説明するブロック図である。
メインコントローラ101は複合機100の全体の制御及び管理を行うコントローラである。後述するスキャナコントローラ106、プリンタコントローラ104、操作部コントローラ102との間で相互に通信が可能であり、また画像データの転送を行うこともできる。例えば、操作部コントローラ102から、操作部103を介したユーザの操作に基づく命令を受信する。また各コントローラと通信を行い、例えば、スキャナ107で得られた読み取り画像データに画像処理を施してプリンタ105に転送して印刷させるコピージョブ等のジョブを実行する。
スキャナコントローラ106は、スキャナ107の制御と、スキャナ107とメインコントローラ101との間の通信制御を行う。またスキャナ107で得られた画像データに対して画像処理を施してメインコントローラ101に送信する。プリンタコントローラ104は、プリンタ105の制御と、プリンタ105とメインコントローラ101との間の通信制御を行う。またプリンタコントローラ104は、メインコントローラ101から受信した画像データに対し画像処理を施してプリンタ105に送信して印刷させる。操作部コントローラ102は、操作部103の制御と、操作部103とメインコントローラ101との間の通信制御を行う。操作部コントローラ102はまた、メインコントローラ101から受信した表示情報を操作部103に送信して、操作部103にユーザへの画面表示を実行させる。実施形態1では、メインコントローラ101、スキャナコントローラ106、プリンタコントローラ104、操作部コントローラ102は、それぞれCPUとCPUが各コントローラを制御するための制御プログラムを有する。
図2は、実施形態1に係るメインコントローラ101とプリンタコントローラ104のハードウェア構成を説明するブロック図である。
メインコントローラSOC200は、メインコントローラ101の制御を行うモジュールである。実施形態1では、メインコントローラSOC200は半導体チップとして構成されているものとして説明する。ROM203はマスクROMで、CPU201で実行されるローダ300(図3)を格納している。NORフラッシュメモリ213は、CPU202で実行されるブートプログラム310(図3)及び、対応する署名データ314(図3)を格納している。CPU201,CPU202は、NORフラッシュメモリ制御部208を介してNORフラッシュメモリ213にアクセスすることができる。
CPU201は、NORフラッシュメモリ213に格納されたブートプログラム310の署名検証とCPU202のリセットの解除を行う。CPU202は、改ざんされていないと判定されたブートプログラム310を実行して起動し、メインコントローラ101の制御を行う。また実施形態1では、CPU201は、プリンタコントローラ104のNORフラッシュメモリ229に格納されるブートプログラム320(図3)の署名検証を行い、プリンタコントローラSOC230のCPU220のリセットの解除も行う。
OTP(One Time Programmable)ROM(以下、OTPと呼ぶ)204は、製造時に一度だけ書き込みが可能なROMで、ブートプログラムの署名検証のための検証鍵を保持している。この検証鍵は、後述する署名鍵で暗号化したブートプログラムの署名データを復号できる鍵である。セキュアアシスト部205は、プログラムのハッシュ値を計算するハードアシスト機能を有する。
実施形態1では、セキュアアシスト部205は、NORフラッシュメモリ213やNORフラッシュメモリ229に格納されているブートプログラムを読み出し、そのハッシュ値を計算する。また署名鍵で暗号化されたデータを、OTP204に格納される検証鍵で復号する機能も持つ。実施形態1では、この検証鍵は、ブートプログラム署名データ314及び324(図3)を復号するのに用いられる。
画像処理部206は、スキャナコントローラ106から受信した画像データに対するシェーディング処理や、プリンタコントローラ104へ出力するためのハーフトーン処理を行う。メモリ制御部207は、DRAM212へアクセスするための各種コマンド制御を行う。DRAM212は、CPU202で実行されるプログラムや、画像処理部206のワークメモリとして使用される。プリンタコントローラ通信部209は、プリンタコントローラ104と通信するための通信制御を行う通信ハードウェアモジュールである。実施形態1では、CPU202は、プリンタコントローラ通信部209を介してプリンタコントローラSOC230の各ハードウェアモジュール(例えばNORフラッシュメモリ制御部225やメモリ制御部224)にアクセスすることも可能である。プリンタコントローラ画像送信部210は、画像処理部206で処理したハーフトーン画像データをプリンタコントローラ104に転送する。外部ポート制御部211は汎用の入出力ポートであり、例えば出力ポートを制御することによりLED214を必要に応じて点灯し、ソフトウェアやハードウェアの異常を外部に伝える。システムバス215は、接続されているモジュールを相互に接続する。システムバス215を介して、各サブモジュールは各モジュール間で各種データや制御コマンド等を送受信する。
次にプリンタコントローラ104について説明する。
プリンタコントローラSOC230は、プリンタコントローラ104を制御するためのモジュールで、実施形態1では半導体チップとして構成されているものとして説明する。NORフラッシュメモリ229は、CPU220で実行されるブートプログラム320、及び、対応する署名データ324(図3)を格納する。CPU220は、NORフラッシュメモリ制御部225を介してNORフラッシュメモリ229にアクセスすることができる。メインコントローラ通信部221は、メインコントローラ101と通信するための通信ハードウェアモジュールである。このメインコントローラ通信部221は、プリンタコントローラ通信部209と通信線で物理的に接続されている。後述の通り、CPU220のブートプログラム320は、複合機100の起動時、CPU220がブートプログラム320を実行する前に、この通信線を介して、プリンタコントローラ通信部209とメインコントローラ通信部221との間で送信される。プリンタコントローラ通信部209は、CPU220がブートプログラム320を実行する前に、当該ブートプログラム320の通信を、メインコントローラ通信部221と行う。画像受信部222は、メインコントローラ101から入力されるハーフトーン画像データを受信する。画像処理部223は、メインコントローラ101から受信したハーフトーン画像データに対し、プリンタ105へ出力するための微小変倍処理やPWM処理等の画像処理を行う。プリンタIF制御部227は、CPU220がプリンタ105を制御するための通信制御、及び、画像処理部223が処理した画像データをプリンタ105に転送する。メモリ制御部224は、DRAM228へアクセスするための各種コマンド制御を行う。DRAM228は、CPU220で実行されるプログラムや、画像処理部223のワークメモリとして使用される。
システム制御部226は、プリンタコントローラ104の電源がオンされて起動したとき、プリンタコントローラSOC230が最低限必要な起動処理のみを実行する。実施形態1において最低限必要な起動処理とは、メインコントローラ通信部221とNORフラッシュメモリ制御部225とNORフラッシュメモリ229とそのモジュール間の通信を実現するシステムバス231のみを動作可能とすることである。この起動処理は、ハードシーケンサのみで制御される。またシステム制御部226は、CPU220や、メインコントローラ通信部221を介して、プリンタコントローラSOC230のクロック制御及びリセット制御が可能である。システムバス231は、接続されているモジュールを相互に接続する。システムバス231を介して、各サブモジュールは各モジュール間で各種データや制御コマンド等を送受信する。
図3は、実施形態1に係る複合機100が有するソフトウェアモジュールを説明するブロック図である。
ローダ300は、複合機100の電源がオンされるとCPU201で実行されるプログラムで、ROM203に格納されている。ローダ300は、プログラムロード部301を有し、OTP204に格納された検証鍵、及びブートプログラム署名データ314を用いてブートプログラム310を署名検証した後、CPU202のリセットを解除する。プログラムロード部301の処理の詳細については図4のフローチャートを参照して後述する。
ブートプログラム310は、ローダ300による署名検証後にCPU202で実行されるプログラムで、NORフラッシュメモリ213に格納されている。ブートプログラム署名データ314は、署名鍵及びブートプログラム310のハッシュ値から算出した、ブートプログラム310のデジタル署名データである。ここでは署名データの生成、検証アルゴリズムとして、RSA、DSA、もしくはECDSAが使用される。システム初期化部311は、メモリ制御部207やプリンタコントローラ通信部209等の各種初期化を行う。外部プログラムロード部312は、OTP204に格納された検証鍵、及びブートプログラム署名データ324を用いて、プリンタコントローラ104のNORフラッシュメモリ213に格納されているブートプログラム320を署名検証した後、CPU220のリセットを解除する。外部プログラムロード部312の処理の詳細は、図5のフローチャートを参照して後述する。
ブートプログラム320は、ブートプログラム310による署名検証後、プリンタコントローラ104のCPU220で実行されるプログラムで、NORフラッシュメモリ229に格納されている。ブートプログラム署名データ324は、署名鍵及びブートプログラム320のハッシュ値から算出した、ブートプログラム320のデジタル署名データである。ここでは署名データの生成、検証アルゴリズムとして、RSA、DSA、もしくはECDSAが使用される。
図4は、実施形態1に係る複合機100のCPU201がプログラムロード部301を実行して、NORフラッシュメモリ213に格納されたブートプログラム310の署名検証を実行するときの処理を説明するフローチャートである。このフローチャートで示す処理は、複合機100の電源が投入されてメインコントローラ101のリセットが解除されることにより開始される。
まずS401でCPU201は、セキュアアシスト部205を使用し、ブートプログラム310をNORフラッシュメモリ213から読み出して、そのハッシュ値を計算させる。次にS402に進みCPU201は、セキュアアシスト部205を使用し、ブートプログラム署名データ314をNORフラッシュメモリ213から読み出し、OTP204に格納された検証鍵を使用して、ブートプログラム署名データ314を復号して、そのハッシュ値を取得する。そしてS403に進みCPU201は、S401で計算により求めたハッシュ値と、S402で復号して得られたハッシュ値とが一致するか否か、即ち、改竄の有無を検証する。ここで一致すると判定した場合は、ブートプログラム310が改竄されていない、即ち検証結果が正当であるためS404に進み、メインことローラ101のCPU202のリセットを解除する。これによりCPU202は、改竄されていない安全なブートプログラム310をNORフラッシュメモリ213から読み出して処理を開始する。
一方、S403で、S401で計算により求めたハッシュ値と、S402でブートプログラム署名データ314を復号して取得したハッシュ値とが一致しない場合は、ブートプログラム310が改竄されていると判定してS405に進む。S405でCPU201は、エラー通知を行う。例えば、LED214を点滅させてユーザに警告する処理を行って、この処理を終了する。
図5は、実施形態1に係る複合機100のCPU202がNORフラッシュメモリ213のブートプログラムを実行するときの処理を説明するフローチャートである。このフローチャートで示す処理は、図4のS404でCPU202のリセットが解除され、CPU202がシステム初期化部311を実行して、メインコントローラ101が全て動作可能となるようが初期化された後に開始される。
この処理を示すフローチャートは、図4で説明したCPU201がローダを実行するときの処理とはほぼ同じである。相違点は、検証対象であるブートプログラムと、ブートプログラム署名データの読み出し先が、外部コントローラであるプリンタコントローラ104である点と、改竄されていない事が確認された後にリセット解除するCPUがプリンタコントローラ104のCPU220である点である。以下に詳しく説明する。
まずS501でCPU202はセキュアアシスト部205を使用し、ブートプログラム320を、プリンタコントローラ104のNORフラッシュメモリ229から読み出し、そのハッシュ値を計算させる。次にS502に進みCPU202は、セキュアアシスト部205を使用し、ブートプログラム署名データ324をNORフラッシュメモリ229から読み出し、OTP204に格納された検証鍵を使用して、そのブートプログラム署名データ324を復号して、そのハッシュ値を取得する。次にS503に進みCPU202は、S501で計算により求めたハッシュ値と、S502で復号して取得したハッシュ値とが一致するかどうか判定し、一致する場合は、NORフラッシュメモリ229のブートプログラム320が改竄されていないと判定してS504に進む。S504でCPU202は、プリンタコントローラ104のCPU220のリセットを解除する。こうしてCPU220のリセットが解除されると、CPU220は、NORフラッシュメモリ229から、改竄されていない安全なブートプログラム320を読み出して処理を開始する。
一方、S503でCPU202は、S501で計算で求めたハッシュ値と、S502で復号して取得したしたハッシュ値とが一致しないと判定すると、NORフラッシュメモリ229のブートプログラム320が改竄されていると判定してS505に進む。S505でCPU202は、エラー通知を行う。ここでは例えば、LED214を点滅させる等の処理を行って、この処理を終了する。
図6は、実施形態1に係る複合機100のプリンタコントローラ104の起動処理を説明するフローチャートである。
S601で、プリンタコントローラ104の電源がオンされるとシステム制御部226は、メインコントローラ通信部221とNORフラッシュメモリ制御部225とNORフラッシュメモリ229とそのモジュール間の通信を実現するシステムバス231のみ起動させる。次にS602に進み、前述の図5のS504で、CPU220のリセットが解除がされるのを待つ。CPU220のリセット解除がされるまでは、メインコントローラ101の外部プログラムロード部312がプリンタコントローラ104のブートプログラム320の改竄の有無を検証中である。そしてブートプログラム320が改竄されていない場合は、S602でCPU220のリセットが解除されてS603に移行する。S603でCPU220は、NORフラッシュメモリ229のブートプログラム320を読み出して起動する。尚、S602でCPU220のリセットが解除されない場合は、ブートプログラム320が改竄されている状態であり、S603の処理に進むことはない。
以上説明したように実施形態1によれば、改竄検知機能を持たない第1のコントローラが起動する前に、改竄検知機能を持つ第2のコントローラが、第1のコントローラのプログラムの改竄検知を実行する。これにより、改竄検知機能を持たない第1のコントローラも安全に起動することが可能となる。
また実施形態1では、改竄検知機能を持たない第1のコントローラを、プリンタコントローラ104を例に説明したが、プリンタコントローラに限定するものでなく、例えばスキャナコントローラ107、或いは他のコントローラでもよい。前述したようにメインコントローラSOC200は、スキャナコントローラ106や操作部コントローラ102を通信する同様の通信部を持っている。また、スキャナコントローラ106と操作部コントローラ102は、プリンタコントローラ104と同様にCPUと各コントローラを制御するプログラムを格納するNORフラッシュメモリとメインコントローラとの通信部を有している。従って、実施形態1と同様の手法で、改竄検知機能を持たないスキャナコントローラ106や操作部コントローラ102の改竄検知を行うことができる。
また、実施形態1では、改竄検知の対象となるプログラムとしてブートプログラムを例に説明したが、各コントローラを制御する全てのプログラムに適用可能であり、ブートプログラムに限定するものではない。
[実施形態2]
上述の実施形態1では、メインコントローラ101のセキュアアシスト部205がプリンタコントローラ104のNORフラッシュメモリ229のブートプログラム320を読み出して、改竄されているか検証した。ブートプログラム320の読み出し時間は、プリンタコントローラ通信部209とメインコントローラ通信部221のデータ転送性能により大きく変動する。例えば、メインコントローラSOC200及びプリンタコントローラSOC230のIOピン数を削減するためシリアル通信インタフェースを採用した場合や、コストのかかる高速シリアル通信インタフェースではない低速な通信インタフェースを使用した場合には特に転送時間が長くなる。つまり、複合機100が安全に起動するためにはメインコントローラ101だけでなく、プログラムを記憶している各外部コントローラの全てのプログラムが改竄されていないどうか確認する必要があり、各コントローラのプログラムの転送に多くの時間を必要とすることが想定される。その結果、複合機100の起動時間が長くなってしまうおそれがある。そこで実施形態2では、外部コントローラにセキュアアシスト部を設けることにより、プログラムの転送に要する時間を短縮して、複合機100の起動時間を短縮する例を説明する。
図7は、実施形態2に係るメインコントローラ101とプリンタコントローラ104のハードウェア構成を説明するブロック図で、前述の図2と共通する箇所は同じ参照番号で示し、それらの説明を省略する。
実施形態2に係るプリンタコントローラSOC230は、実施形態1に係るセキュアアシスト部205と同等の機能を有するセキュアアシスト部701を有している。また実施形態2に係るプリンタコントローラSOC230では、実施形態1に係るシステム制御部226が実行する、プリンタコントローラSOC230が最低限必要な起動処理を実行する起動制御部702が追加されている。
図8は、実施形態2に係る複合機100のCPU202がNORフラッシュメモリ213のブートプログラムを実行するときの処理を説明するフローチャートである。このフローチャートで示す処理は、図4のS404でCPU202のリセットが解除され、CPU202がシステム初期化部311を実行して、メインコントローラ101が全て動作可能となるようが初期化された後に動作する。
S801でCPU202は、プリンタコントローラSOC230のセキュアアシスト部701を使用して、プリンタコントローラ104のNORフラッシュメモリ229からブートプログラム320を読み出して、そのハッシュ値を計算させる。次にS802に進みCPU202は、S801で計算したハッシュ値を、プリンタコントローラ104のセキュアアシスト部701から取得する。次にS803に進みCPU202は、セキュアアシスト部701を使用して、ブートプログラム署名データ324をNORフラッシュメモリ229から取得する。そして検証鍵を使用して、そのブートプログラム署名データ324を復号して、そのハッシュ値を取得する。そしてS804に進みCPU202は、S802で取得したハッシュ値と、S803で復号して取得したハッシュ値とが一致するかどうか判定し、一致する場合は、NORフラッシュメモリ229のブートプログラム320が改竄されていないと判定してS805に進む。S805でCPU202は、プリンタコントローラ104のCPU220のリセットを解除する。こうしてCPU220のリセットが解除されると、CPU220は、NORフラッシュメモリ229から、改竄されていない安全なブートプログラム320を読み出して処理を開始する。
一方、S804でCPU202は、S802で取得したハッシュ値と、S803で復号して取得したハッシュ値とが一致しないと判定すると、NORフラッシュメモリ229のブートプログラム320が改竄されていると判定してS806に進む。S806でCPU202は、エラー通知を行う。ここでは例えば、LED214を点滅させる等の処理を行って、この処理を終了する。
以上説明したように実施形態2によれば、外部コントローラにブートプログラムのハッシュ値を計算させる仕組みを持つことで、ブートプログラムをメインコントローラから全て読み出すことなく、改竄検知が可能となる。つまり、外部コントローラのブートプログラムを、メインコントローラで全て読み出すことによるプログラムの転送時間を削減し、複合機の改竄検知に要する時間を短縮することができる。
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本発明は上記実施形態に制限されるものではなく、本発明の精神及び範囲から逸脱することなく、様々な変更及び変形が可能である。従って、本発明の範囲を公にするために、以下の請求項を添付する。
101…メインコントローラ、104…プリンタコントローラ、201,202,220…CPU、205,701…セキュアアシスト部、208,225…NORフラッシュメモリ制御部、213,229…NORフラッシュメモリ

Claims (7)

  1. 少なくとも第1制御手段と第2制御手段とを有する情報処理装置であって、
    前記第2制御手段は、CPUと、当該CPUにより実行される第1プログラムを不揮発に記憶する第1記憶手段と
    前記情報処理装置の電源がオンされることにより、前記第1制御手段と第2制御手段との間で通信が可能な状態とする通信手段と、を有し、
    前記第1制御手段は、
    第1CPUと、
    第2CPUと、
    前記第1CPUにより実行されるブートプログラムを不揮発に記憶するROMと、
    前記第2CPUにより実行される第2プログラムを不揮発に記憶する第2記憶手段と、を有し、
    前記情報処理装置の起動時、前記第1CPUは前記ROMに記憶されたブートプログラムを実行して前記第2記憶手段に記憶されている前記第2プログラムの改竄の有無を検証し、
    当該検証により前記第2プログラムが改竄されていないことを確認した後、前記第2CPUを起動させることにより前記第2CPUが前記第2記憶手段に記憶されている前記第2プログラムを実行することにより、前記情報処理装置の起動時、前記通信手段により前記第2制御手段から送信された前記第1プログラムに基づいて、前記第1記憶手段に記憶されている前記第1プログラムの改竄の有無を検証し、
    前記検証により前記第1プログラムが改竄されていないことを確認した後、前記CPUを起動させることを特徴とする情報処理装置。
  2. 前記第1プログラムの改竄の有無の検証は、前記第1記憶手段に記憶されている前記第1プログラムの第1ハッシュ値を求め、
    前記第1プログラムの署名データを検証鍵を使用して復号して第2ハッシュ値を取得し、前記第1ハッシュ値と前記第2ハッシュ値とが一致するかどうかに基づいて行われることを特徴とする請求項1に記載の情報処理装置。
  3. 前記第2プログラムの改竄の有無の検証は、前記第2記憶手段に記憶されている前記第2プログラムの第1ハッシュ値を求め、
    前記第2プログラムの署名データを検証鍵を使用して復号して第2ハッシュ値を取得し、前記第1ハッシュ値と前記第2ハッシュ値とが一致するかどうかに基づいて行われることを特徴とする請求項1又は2に記載の情報処理装置。
  4. 前記CPUの起動は、前記CPUのリセットを解除することにより行われることを特徴とする請求項1乃至のいずれか1項に記載の情報処理装置。
  5. 前記第1記憶手段は、フラッシュメモリを含むことを特徴とする請求項1乃至のいずれか1項に記載の情報処理装置。
  6. 前記第2記憶手段は、フラッシュメモリを含むことを特徴とする請求項又はに記載の情報処理装置。
  7. 少なくとも第1制御手段と、CPUと、当該CPUにより実行される第1プログラムを不揮発に記憶する第1記憶手段とを有する第2制御手段とを備えた情報処理装置を制御する制御方法であって、
    前記第1制御手段は、第1CPUと、第2CPUと、前記第1CPUにより実行されるブートプログラムを不揮発に記憶するROMと、前記第2CPUにより実行される第2プログラムを不揮発に記憶する第2記憶手段とを有し、
    前記第1制御手段が、前記情報処理装置の起動時、前記第1CPUは前記ROMに記憶されたブートプログラムを実行して前記第2記憶手段に記憶されている前記第2プログラムの改竄の有無を検証し、
    当該検証により前記第2プログラムが改竄されていないことを確認した後、前記第2CPUを起動させることにより前記第2CPUが前記第2記憶手段に記憶されている前記第2プログラムを実行することにより、前記情報処理装置の起動時、前記第2制御手段から送信された前記第1プログラムに基づいて、前記第1記憶手段に記憶されている前記第1プログラムの改竄の有無を検証する工程と、
    前記第1制御手段が、前記検証により前記第1プログラムが改竄されていないことを確認した後、前記第2制御手段の前記CPUを起動させる工程と、
    を有することを特徴とする制御方法。
JP2019070038A 2019-04-01 2019-04-01 情報処理装置とその制御方法 Active JP7286381B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019070038A JP7286381B2 (ja) 2019-04-01 2019-04-01 情報処理装置とその制御方法
US16/833,776 US11379589B2 (en) 2019-04-01 2020-03-30 Information processing apparatus and method of controlling the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019070038A JP7286381B2 (ja) 2019-04-01 2019-04-01 情報処理装置とその制御方法

Publications (2)

Publication Number Publication Date
JP2020170256A JP2020170256A (ja) 2020-10-15
JP7286381B2 true JP7286381B2 (ja) 2023-06-05

Family

ID=72607871

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019070038A Active JP7286381B2 (ja) 2019-04-01 2019-04-01 情報処理装置とその制御方法

Country Status (2)

Country Link
US (1) US11379589B2 (ja)
JP (1) JP7286381B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7393226B2 (ja) * 2020-01-29 2023-12-06 キヤノン株式会社 情報処理装置とその起動方法
US11853429B2 (en) * 2021-07-13 2023-12-26 Microsoft Technology Licensing, Llc Measured restart of microcontrollers

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009282845A (ja) 2008-05-23 2009-12-03 Toshiba Tec Corp 情報処理装置
JP2012164322A (ja) 2003-08-12 2012-08-30 Ricoh Co Ltd 情報処理装置、情報処理方法及び記録媒体
JP2013114620A (ja) 2011-11-30 2013-06-10 Ricoh Co Ltd 情報処理装置、情報処理装置の起動制御方法
JP2014021953A (ja) 2012-07-24 2014-02-03 Ricoh Co Ltd 情報処理装置、画像処理装置、起動制御方法及び起動制御プログラム
WO2018042766A1 (ja) 2016-08-30 2018-03-08 株式会社ソシオネクスト 処理装置、半導体集積回路及び半導体集積回路の起動方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4489030B2 (ja) * 2005-02-07 2010-06-23 株式会社ソニー・コンピュータエンタテインメント プロセッサ内にセキュアな起動シーケンスを提供する方法および装置
DE102008011925B4 (de) * 2008-02-29 2018-03-15 Globalfoundries Inc. Sicheres Initialisieren von Computersystemen
US8892855B2 (en) * 2010-08-10 2014-11-18 Maxlinear, Inc. Encryption keys distribution for conditional access software in TV receiver SOC
US10958435B2 (en) * 2015-12-21 2021-03-23 Electro Industries/ Gauge Tech Providing security in an intelligent electronic device
JP6373888B2 (ja) * 2016-03-01 2018-08-15 株式会社東芝 情報処理装置及び制御方法
KR101887974B1 (ko) * 2016-12-01 2018-08-13 현대오트론 주식회사 엔진제어기의 안전부팅을 위한 시스템 및 방법
US20180365406A1 (en) * 2017-06-20 2018-12-20 Qualcomm Incorporated Methods and systems for providing advanced secure boot features to limited-resource peripheral devices by using a secure processor
JP7022602B2 (ja) * 2018-01-24 2022-02-18 キヤノン株式会社 画像処理装置、その制御方法、及びプログラム
DE102018213616A1 (de) * 2018-06-20 2019-12-24 Robert Bosch Gmbh Kryptografiemodul und Betriebsverfahren hierfür
US11455397B2 (en) * 2018-11-13 2022-09-27 Microchip Technology Incorporated Secure boot assist for devices, and related systems, methods and devices
JP2020177539A (ja) * 2019-04-19 2020-10-29 キヤノン株式会社 情報処理装置、及びその制御方法
US11657157B2 (en) * 2019-06-06 2023-05-23 Macronix International Co., Ltd. Secure boot system, method and apparatus
US20210334378A1 (en) * 2020-04-24 2021-10-28 Dell Products L.P. System and method of authenticating firmware

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012164322A (ja) 2003-08-12 2012-08-30 Ricoh Co Ltd 情報処理装置、情報処理方法及び記録媒体
JP2009282845A (ja) 2008-05-23 2009-12-03 Toshiba Tec Corp 情報処理装置
JP2013114620A (ja) 2011-11-30 2013-06-10 Ricoh Co Ltd 情報処理装置、情報処理装置の起動制御方法
JP2014021953A (ja) 2012-07-24 2014-02-03 Ricoh Co Ltd 情報処理装置、画像処理装置、起動制御方法及び起動制御プログラム
WO2018042766A1 (ja) 2016-08-30 2018-03-08 株式会社ソシオネクスト 処理装置、半導体集積回路及び半導体集積回路の起動方法

Also Published As

Publication number Publication date
US20200311279A1 (en) 2020-10-01
US11379589B2 (en) 2022-07-05
JP2020170256A (ja) 2020-10-15

Similar Documents

Publication Publication Date Title
US7424398B2 (en) Boot validation system and method
US8438377B2 (en) Information processing apparatus, method and computer-readable storage medium that encrypts and decrypts data using a value calculated from operating-state data
US10225426B2 (en) Image forming apparatus having firmware update function, method of controlling the same, program for executing the method, and storage medium
US8832457B2 (en) Methods and apparatus for authenticating components of processing systems
US20090285390A1 (en) Integrated circuit with secured software image and method therefor
JP5493946B2 (ja) 複合システム、セキュリティ方法、セキュリティプログラム及び記録媒体
US11392701B2 (en) Information processing apparatus and method for controlling the same
CN110536042B (zh) 图像形成装置及其控制方法、存储介质
JP7286381B2 (ja) 情報処理装置とその制御方法
WO2020037613A1 (zh) 嵌入式程序的安全升级方法、装置、设备及存储介质
US20230195473A1 (en) Peripheral component interconnect express device startup method and apparatus, and storage medium
JP2007310688A (ja) マイクロコンピュータおよびそのソフトウェア改竄防止方法
JP7393226B2 (ja) 情報処理装置とその起動方法
US20210073397A1 (en) Computing device and method for operating same
JP6930884B2 (ja) Bios管理装置、bios管理システム、bios管理方法、及び、bios管理プログラム
US20090110190A1 (en) Fast secure boot implementation
JP7321795B2 (ja) 情報処理装置、情報処理方法およびプログラム
JP7263101B2 (ja) 情報処理装置、データ検証方法
JP7171339B2 (ja) 情報処理装置、情報処理装置の制御方法、及び、プログラム
JP2020187649A (ja) 情報処理装置、制御方法、およびプログラム
JP7215116B2 (ja) 情報処理装置、情報処理方法及びプログラム
JP2020187650A (ja) コントローラシステム及び方法
JP7313395B2 (ja) 情報処理装置とその制御方法、及びプログラム
US20230103698A1 (en) Information processing apparatus and control method therefor
JP2022182837A (ja) 情報処理装置、及びその制御方法

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

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220317

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230303

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: 20230425

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230524

R151 Written notification of patent or utility model registration

Ref document number: 7286381

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151