JP2020140561A - 情報処理装置、情報処理方法 - Google Patents
情報処理装置、情報処理方法 Download PDFInfo
- Publication number
- JP2020140561A JP2020140561A JP2019036850A JP2019036850A JP2020140561A JP 2020140561 A JP2020140561 A JP 2020140561A JP 2019036850 A JP2019036850 A JP 2019036850A JP 2019036850 A JP2019036850 A JP 2019036850A JP 2020140561 A JP2020140561 A JP 2020140561A
- Authority
- JP
- Japan
- Prior art keywords
- network
- information processing
- boot program
- verification
- data packet
- 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
- Test And Diagnosis Of Digital Computers (AREA)
- Debugging And Monitoring (AREA)
- Multi Processors (AREA)
Abstract
【課題】メインCPUのブートプログラムが改竄されていてメインCPUが起動しない場合においても、改竄を検知し外部の機器に送信する。【解決手段】MFP1において、メインCPU101のブートプログラムを検証し、ブートプログラムの改竄を検出した場合、メインCPU101が起動しない場合においても、メインCPU101を用いずに、ネットワークにデータパケットを送信する通信手段により、所定のデータパケットを外部に送信する。【選択図】図1
Description
プログラムを検証する情報処理装置および情報処理方法に関するものである。
近年、Local Area Network(以後、LANと呼ぶ)やインターネットに配置された管理サーバー等によって、装置の動作状況を収集することが行われている。収集された動作状況を用いて、トラブル発生時の迅速な原因特定や、消耗品の交換時期を適切に管理するといった高いサービス性を提供する仕組みが導入されてきている。通常、このような仕組みは装置内部の動作状況を収集した上で、装置内のメインCPUが、自身をホストデバイスとして、ネットワークI/Fデバイスを制御し、収集した動作状況の情報をネットワーク上の管理サーバーに送信することで実現される。
特許文献1は、ブートプログラムを起動し、そのブートプログラムがファームウェアを起動する情報処理装置において、そのファームウェアが他のファームウェアの異常を外部に通知する技術を開示する。
プロセッサのブートプログラムを検証し、検証の結果、ブートプログラムが異常である(正しくない)と判定された場合にブートプログラムを実行させないシステムがある。このようなシステムにおいて、ブートプログラムが異常であると判定されるとプロセッサが起動しないため、異常であることを外部のネットワークに通知できない。
本発明の情報処理装置は、プログラムを実行する実行手段と、前記実行手段のブートプログラムを検証する検証手段と、ネットワーク上の外部装置と通信する通信手段と、を有し、前記実行手段は、前記検証手段によって検証された前記ブートプログラムを実行し、かつ、前記ネットワークにデータパケットを送信するように前記通信手段を制御する情報処理装置において、前記通信手段は、前記検証によって前記ブートプログラムが正しくないと判定されると、所定のデータパケットを前記実行手段を用いずに前記ネットワークに送信することを特徴とする。
実行手段のブートプログラムの検証によってブートプログラムが正しくないと判定された場合に、実行手段を用いずに所定のデータパケットを外部に送信する。
以下、本発明を実施するための形態について図面を用いて説明する。
(実施例1)
本実施形態で説明する情報処理装置の一例としてMFP(Multi Function Peripheral)を挙げるが、MFP以外の情報処理装置に本実施形態で開示される技術を適用してもよい。
本実施形態で説明する情報処理装置の一例としてMFP(Multi Function Peripheral)を挙げるが、MFP以外の情報処理装置に本実施形態で開示される技術を適用してもよい。
図1はMFP1の構成を表す図であって、同図において、101はメインCPU(Central Processing Unit)であって、MFP101全体の制御を司る。このメインCPU101は、ブートプログラムであるBIOS(Basic Input/Output System)401を始めとして、後述のネットワークI/F104を制御するためのプログラムを含む各種プログラムを実行する。
102はDRAM(Dynamic Random Access Memory)であって、メインCPU101で実行されるプログラムを格納すると共に一時的なデータのワークエリアとして機能する。103は操作部であって、操作部I/F113を介してメインCPU101にユーザによる操作を通知する。
104はネットワークI/F(インターフェース)であって、LAN130と接続して外部機器(外部装置)と通信する機能を果たす。この通信はイーサネット(登録商標)規格に準拠した通信である。また、ネットワークI/F104は、後述の通り、内部にCPUコア501を有し、このCPUコア501がデータリンク層デバイスと物理層デバイスを制御して外部機器との通信を行う。ネットワークI/F104は、メインCPU101からの指示を受けて外部機器と通信することができる。つまり、ネットワークI/F104は、BIOS401およびネットワークI/F104の制御プログラムを実行したメインCPU101によって制御され、そのメインCPU101からの指示にしたがってデータパケットの送受信を外部機器と行うことができる。さらに、本実施例のネットワークI/F104は、メインCPU101からの指示を受けずに独立して外部機器と通信することもできる。つまり、ネットワークI/F104は、メインCPU101による制御を必要とせずに、データパケットを生成・送出可能である。そのため、本実施例のネットワークI/F104は、メインCPU101のブートプログラムが改竄されていてメインCPU101が起動しない場合においても、改竄を検知したことを示すエラー情報を含むデータパケットを外部機器に送信することができる。また、ネットワークI/F104は、不図示のパワーオンリセット回路を有し、このパワーオンリセット回路は、電源制御部118から電源線119を介して供給された電力の電圧が閾値以上のときにネットワークI/F104内の各部のリセットを解除する。
105はプリンタ部であって、画像データを紙面上に印字する。106はスキャナ部であって、紙面上の画像を光学的に読み取り電気信号に変換してスキャン画像を生成する。107はFAXであって、公衆回線110と接続して外部機器とファクシミリ通信を行う。
108はHDD(Hard Disk Drive)であって、メインCPU101で実行されるOS(Operating System)を始めとする各種プログラムを格納する。OSには、ネットワークI/F104を制御するためのデバイスドライバー等の各種デバイスドライバーが含まれる。またHDD108は、プリントジョブやスキャンジョブ等のスプール領域、および、スキャン画像を保管し再利用するための領域としても利用される。109は信号バスであって、各モジュールを相互に接続して通信を行う。110は公衆回線であって、FAX107と外部機器を相互接続する。111は画像処理部であって、ネットワークI/F104で受信したプリントジョブをプリンタ部105で印刷するのに適した画像への変換処理、スキャナ部106で読み取ったスキャン画像のノイズ除去や色空間変換、回転、圧縮等の処理を実行する。また、HDD108に保管されたスキャン画像の画像処理を実行する。
112はFLASH ROM(FLASH Read Only Memory)であって、メインCPU101で実行されるブートプログラム(BIOS401)を格納する。本実施例のメインCPU101は、ブートプログラムを実行し、そしてOSを起動する。OSが起動することで、OS(メインCPU101)は、各種デバイスドライバーを用いて、ネットワークI/F104等の各種デバイスを制御することが可能になる。
113は操作部I/Fであって、操作部103と信号バス109を相互接続する。114はSPIバスであってメインCPU101、FLASH ROM112、サブCPU115を相互接続する。
115はサブCPUであって、MFP1の起動時に、メインCPU101が起動する前にFLASH ROM112からメインCPU101のブートプログラムを読み出してその内容を参照し、参照された内容が改竄されていないか検証を行う。本実施例においてこのブートプログラムは、BIOS401である。改竄の検知方法としては例えば次のような方法がある。サブCPU115は、FLASH ROM112からブートプログラム(BIOS401)を読み出し、そのハッシュ値(デジタル署名)を計算する。またサブCPU115は、そのブートプログラムの暗号化されたハッシュ値(デジタル署名)をFLASH ROM112から読み出し、その暗号化された署名値を公開鍵情報を基に復号する。この公開鍵情報は、本実施形態では後述のサブCPU FW404内に記憶されている。そしてサブCPU115は、読み出したブートプログラムから計算されたハッシュ値と、復号によって得られたハッシュ値との比較を行うことで、FLASH ROM112に記憶されているブートプログラムを検証する。2つのハッシュ値が等しければブートプログラムは正しい(ブートプログラムは改竄されていない)と判定でき、異なればブートプログラムは正しくない(ブートプログラムは改竄されている)と判定できる。公開鍵暗号の方法としてはRSA2048、ECDSAなどである。ここでのサブCPU115は、メインCPU101のブートプログラムを検証する機能を果たす。
117はリセット信号であって、サブCPU115のGPIOポートから出力されて、メインCPU101のリセット端子に接続される。リセット信号117は、後に図7で詳細に説明するブートプログラムの検証が完了し、ブートプログラムが改竄されていないとサブCPU115が判定した場合に、サブCPU115によって“Lo”から“Hi”レベルに遷移する。ここで、“Lo”レベルとは0を示す電気信号の状態を示す。また、“Hi”レベルとは1を示す電気信号の状態を表す。リセット信号117が“Hi”レベルになると、メインCPU101はリセットが解除されて起動を開始する。すなわち、メインCPU101はブートプログラム(BIOS401)をFLASH ROM112から読み出して実行する。このようにサブCPU115は、メインCPU101のブートプログラムの検証結果に基づいてメインCPU101のリセットを解除して、メインCPU101を、ブートプログラムをFLASH ROM112から読み出して実行できる状態にする。
118は電源制御部であって、MFP1内の各モジュールの電力供給を制御する。119は電源線であって、メインCPU101、ネットワークI/F104、サブCPU115等の各モジュールに電力を供給する。120は電源供給線であって、商業用AC電源が供給される。
122はリセット回路であって、システムの電源がONされると所定の遅延時間後にリセット信号123を“Lo”から“Hi”レベルに遷移する。リセット信号123はサブCPU115のリセット信号であって、サブCPU115のリセット端子に接続される。リセット信号123が“Hi”レベルになると、サブCPU115はリセットが解除されて起動を開始する。
131は改竄発見通知信号であり、サブCPU115がメインCPU101のブートプログラムに改竄があると判定した場合に、プログラムの改竄があることをネットワークI/F104に通知するための所定の信号である。改竄発見通知信号131は、本実施例ではサブCPUのGPIOポートから出力されネットワークI/F104のGPIOポートに入力される。
132は改竄検証完了通知信号であり、サブCPU115がメインCPU101のブートプログラムに改竄がないことを確認し、ブートプログラムの検証が正常に完了したことを通知するための信号である。改竄検証完了通知信号132は、サブCPUのGPIOポートから出力されて、ネットワークI/F104のGPIOポートに接続される。本実施例において、改竄発見通知信号131および改竄検証完了通知信号132の初期値は“Lo”レベルであり、通知を行う場合は“Hi”レベルとすることで各情報の通知を行うものとする。
133はネットワークI/F用FLASH ROMであり、ネットワークI/F104が動作するために必要なファームウェアを記憶する。このネットワークI/F用FLASH ROM133は、次のようなパケット生成プログラムも記憶する。パケット生成プログラムは、改改竄発見通知信号131を受信した場合に、プログラムの改竄によってCPU101が起動しないことを示すエラー情報を含む所定のデータパケットを生成し、そのデータパケットをネットワークへ送信する。
図2はメインCPU101の構成を示す図である。
201はCPUコアであって、CPUの基本機能を担っている。202はSPI Masterであって、SPI Master202と外部SPIデバイスと電気的に接続するSPIバス206を介し、外部のSPIデバイスとのデータの読み書きを行う。
203は信号バスインターフェースであって、信号バス109とメインCPU101内の信号バス209を接続する。209は信号バスであってメインCPU101内の各モジュールを接続する。
リセット信号117が“Lo”レベルの場合、メインCPU201はリセット状態となる。リセット信号117が“Hi”レベルの場合、メインCPU201はリセット解除状態となる。本実施例では、サブCPU115によって、サブCPU FW404およびメインCPU BIOS401が改竄されてないことが確認されると、サブCPU115によってリセット信号117が制御されてリセット解除される。これによりメインCPU101は、自身の起動プログラムに一切の改竄がないことを保証された状態で起動開始することができる。リセット信号117がリセット状態からリセット解除状態に遷移すると、CPUコア201は先ず、FLASH ROM112内に記憶されているメインCPU BIOS404をDRAM102にロードして実行する。その後、CPUコア201は、OS等のプログラムをFLASH ROM112から読み出して実行する。
図3はサブCPU115の構成を示す図である。
301はCPUコアであって、CPUの基本機能を担っている。302はSPI Masterであって、外部のSPIデバイスと相互に接続してデータの読み書きを行う。303はGPIO(General−purpose input/output)であって、外部のデバイスと相互に接続してデータの送受信を行う。GPIO303には3本の信号が接続されていて、一つはメインCPU101をリセット状態にするためのリセット信号117である。2つ目はサブCPU115がメインCPU BIOS401に改竄があると発見した場合に、ネットワークI/F104へ改竄が発見されたことを通知する改竄発見通知信号131である。3つ目はサブCPU115がブートプログラムの検証が正常に完了したことを示す、改竄検証完了通知信号132である。
304はOTP(One Time Programmable)メモリ領域であって、サブCPU FW404のハッシュ値を暗号化した値を復号するための公開鍵情報、および、Tagのアドレスが書き込まれる。この領域に書き込まれたデータは一度書き込まれると二度と書換えることはできない。
305はSRAMであって、サブCPU115内のワークメモリとして使用される。
308は暗号処理部であって、暗号化した値からサブCPU FW404のハッシュ値を復号するほか、暗号化したメインCPU BIOS401のハッシュ値を復号する。
309は信号バスであって、サブCPU内の各モジュールを接続する。310はBoot ROM(Read Only Memory)であって、サブCPU115のブートプログラムを記憶する。
サブCPU115には、図1で説明したリセット信号123が入力される。サブCPU115のCPUコア301は、リセット信号123が“Lo”レベルの場合、CPUコア301はリセット状態となる。リセット信号123が“Hi”レベルの場合、CPUコア301はリセット解除状態となる。リセット信号123がリセット状態からリセット解除状態に遷移すると、CPUコア301は先ず、Boot ROM310から自身のブートプログラムを読み出し実行する。
311はCrypto RAMであって、暗号処理部308で利用する機密性の高いデータ等の一時記憶が可能なワーク領域として用いられる。
図4はFLASH ROM112のメモリマップを示す図である。
401はメインCPU BIOSあって、メインCPU101で実行されるブートプログラムである。
402はBIOS署名であって、メインCPU BIOS401のハッシュ値に対するRSA署名値が記憶されている。このRSA署名値とはBIOS401のハッシュ値を暗号化した値である。
403はTagであって、サブCPU FW404の先頭アドレスが記憶されている。Tag403自体のアドレスはOTP304に記憶されている。
404はサブCPU FWであって、サブCPU115で実行されるプログラムが記憶されている。
405はFW署名であって、サブCPU FW404のハッシュ値、またはサブCPU FW404の先頭の特定部分のハッシュ値のECDSA署名値が記憶されている。このECDSA署名値は、ハッシュ値が暗号化された値である。
406はROM−IDであって、メインCPU BIOS401の先頭アドレス、サイズおよびBIOS署名のアドレスが記憶されている。
本実施例ではメインCPU BIOS401、BIOS署名402、Tag403、サブCPU FW404、FW署名405は一組のセットのみを記憶した場合の例を示している。しかしながら、これらを複数のセットで記憶して置き、必要に応じて切り替えて使用することも可能である。
図5はネットワークI/F104の構成を示す図である。
501はCPUコアであって、CPUの基本機能を有するとともに、後に説明するネットワークI/F FW602を実行することで、IPパケットの生成等TCP/IPによるデータ転送に必要な機能を実現する。
502はSPI Masterであって、SPIバス506によって外部のSPIデバイスと相互に接続してデータの読み書きを行う。本実施例ではSPIデバイスとして、ネットワークI/F用FLASH ROM133が接続されている。ネットワークI/F104が起動すると、CPU501がROM510に記憶されているブートプログラムを実行し、ネットワークI/F用FLASH ROM133に記憶されているプログラムをSRAM505に読み出す。そしてCPUコア501はその読み出したプログラムを実行する。
503はGPIO(General−purpose input/output)であって、外部のデバイスと相互に接続してデータの送受信を行う。GPIO503には2本の信号が接続されていて、1つ目はサブCPU115がメインCPU BIOS401に改竄があると発見した場合に、ネットワークI/F104へ改竄が発見されたことを通知する改竄発見通知信号131である。2つ目はサブCPU115がブートプログラムの検証が正常に完了したことを示す、改竄検証完了通知信号132である。
504は信号バスインターフェースであって、信号バス109とネットワークI/F104内の信号バス509を接続する。505はSRAMであって、ネットワークI/F104内のワークメモリとして使用される。507はデータリンク層のデバイスであるMAC(Media Access Control)である。MAC507は、物理層のデバイスであるPHY(Physical Layer)508を介してLAN130への通信に必要となる転送データに対して、のMACアドレス情報およびエラー訂正情報を付与する。またMAC507は、受信データに対する受信判定およびエラー訂正処理といったデータ転送に必要な所定の処理を実施する。PHY508はネットワークI/F104内部で扱われる論理信号と、LAN130で扱われるアナログ信号との相互変換を担う。
509は信号バスであって、ネットワークI/F104内の各モジュールを接続する。510はROM(Read Only Memory)であって、ネットワークI/F104のブートプログラムを記憶する。511はFLASH ROMであって不揮発性のROMであり、ネットワークI/F104に割り当てられるMACアドレスを記憶している。
512はタイマーであって、ネットワークI/F104が起動してからの経過時間を計時する。タイマー512によって計時された経過時間は、起動後の通知信号131、132を待ち受けている時間に相当する。計時されたこの経過時間は、予め設定されたタイムアウト値と比較される。これにより、起動後の通知信号待ち受け時間にタイムアウトを設定することが可能になる。本実施例では、タイマー512が計時を開始してから所定時間経過するまでの間に改竄発見通知信号131、改竄検証完了通知信号132のいずれも受信しなかった場合、サブCPU115のFW404改竄されているとみなす。
図6は、ネットワークI/F用FLASH ROM133のメモリマップを示す図である。
601はTagであって、ネットワークI/F104用のFW602の先頭アドレスが記憶されている。Tag601自体のアドレスはROM510に記憶されている。
ネットワークI/F104用のFW602には、後に図10で説明するステップの一部を実行するプログラムが格納されている。すなわち、ネットワークI/F104が起動時にネットワーク制御のホストとして動作するために必要となる所定の設定を行うプログラムや、GPIO503の設定を行うプログラムである。
603はパケット生成プログラムであり、図10で説明するステップの一部を実行する。すなわち、GPIO503に改竄発見通知信号131による通知があった場合には、改竄発生を示すIPパケットを生成し、MAC507、PHY508を介してLAN130へ生成したパケットを転送するためのプログラムである。
次に、本実施形態におけるサブCPU115の処理手順を図7のフローチャートを用いて説明する。
リセット信号123によってリセット状態が解除されたサブCPU115は、Boot ROM310内のプログラムを実行する。そしてサブCPU115は、SPIバス114を介してFLASH ROM112からサブCPU FW404とFW署名405をSRAM305に読み込む。さらにサブCPU115は、GPIOポートの初期化を行って改竄発見通知信号131と改竄検証完了通知信号132を初期状態であるLoにセットする(S701)。
次にサブCPU115は、暗号処理部308によってFW署名405をOTP304内の公開鍵で復号化して、正解となるハッシュ値を得る(S702)。
続いてサブCPU115は、暗号処理部308によってサブCPU FW404のハッシュ値を計算する(S703)。
次にサブCPU115はS502で得られたハッシュ値とS503で計算したハッシュ値を比較し(S704)、不一致の場合(NO)は、後に説明するS716へ進む。一致した場合(YES)はサブCPU115は、サブCPU FW404をSRAM305に読み込む(S705)。
次にサブCPU115は、SRAM305に読み込んだサブCPU FW404を実行する(S706)。
次にサブCPU115は実行したサブCPU FW404の制御に基づき、ROM−ID406をFLASH ROM112からCrypto RAM311に読み込む(S707)。
続いてROM−ID406からメインCPU BIOS401のアドレスとBIOS署名402のアドレスを得る(S708)。
次にサブCPU115は、BIOS署名402をSRAM305に読み込む(S709)。
続いてサブCPU115は、暗号処理部308によってBIOS署名402をサブCPU FW404内に記憶されている公開鍵で復号化して、ハッシュ値を得る(S710)。
次にサブCPU115は、メインCPU BIOS401をSRAM305に読み込む(S711)。
次にサブCPU115は、暗号処理部308によってメインCPU BIOS401のハッシュ値を計算する(S712)。
そして、サブCPU115はS710で得たハッシュ値とS712で算出したハッシュ値を比較する(S713)。2つのハッシュ値が一致した場合(YES)、サブCPU115は、GPIO303を制御して改竄検証完了通知信号132をHiにセットし(S714)、GPIO303を制御してリセット信号117を“Hi”を出力する(S715)。
一方、2つのハッシュ値が不一致の場合(NO)、サブCPU115は、GPIO303を制御して改竄発見通知信号131をHiにセットする(S717)。
それからサブCPU115は電力消費のもっとも少ないスリープ状態に入り(S716)、その状態を維持する。なお、スリープ状態ではGPIO303の出力状態を維持している。なお、一度スリープ状態に入った後は通常状態に戻る必要はないが、サブCPU115を改竄検証以外の用途にも利用するのであれば、図示しない割り込み信号の受信を許可して通常状態へ復帰させることも可能である。
なお、本実施例ではS704での判定がNoだった場合、何もせずスリープ状態へ入るS716へ飛ぶようにすることで、サブCPU FW404で実行されるプログラムを最小構成にしている。ただし、BootROM310にプログラムを追加できる場合は、S717へと進めるようにし、サブCPU FW404起動前でも、改竄が発見されたことをネットワークI/F104へ通知できるようにすることもできる。
次に、本実施形態におけるメインCPU101の処理手順を図8のフローチャートを用いて説明する。
リセット信号117にしたがってリセット状態が解除されたメインCPU101は、検証済のメインCPU BIOS401を、FLASH ROM112からDRAM102に読み込む(S801)。
次にメインCPU101はDRAM102へ読み込んだメインCPU BIOS401を実行し、メインCPU101内の入出力の初期化を行う(S802)。
次にメインCPU101はHDD108からOSをDRAM102に読み込む(S803)。読み取り後、メインCPU101はOSを起動する(S804)。これによってメインCPU101は、ネットワークI/F104等の各デバイスを制御可能になる。
続いてメインCPU101はプリンタ部105、スキャナ部106FAX107、画像処理部111、ネットワークI/F104操作部103を初期化してMFP1として機能可能な状態にする(S805)。
図9は、本実施例において、メインCPU101が起動できない場合に、ネットワークI/F104がLAN130へ送出する所定のデータパケットの内容を説明するための図である。本実施例では、LAN130はイーサネットで構成されているものとして説明を行う。
901はEhternetフレームであり、MAC507からPHY508を介してLAN130へ出力されるデータである。
902はイーサネットヘッダであり、データの送信時にMAC507によって付与されるヘッダであり、データの送信先となるデバイスのMACアドレスや、自身のMACアドレスが情報として含まれる。特に、本実施例では送信先MACアドレスとして、ブロードキャストアドレスを指定し、同一のネットワークセグメントに接続されているすべての外部機器に対してデータが送信されるデータとすることで、簡易にデータの送信が実施できる構成となっている。
903はイーサネットフレーム901に含まれるIPパケットである。IPパケット903はIPヘッダ904と、そのデータ部に識別子905、状態フラグ906、MACアドレス907を含んでいて、ネットワークI/F104のCPUコア501で生成される。
IPパケットヘッダー904には、データ送信先のIPアドレス情報が含まれており、本実施例ではリミテッドブロードキャストアドレスを設定している。識別子905は、IPパケットのデータ部に記憶される情報である。本実施例では、パケット901をブロードキャストするため、識別子を含むことでイーサネットフレーム901を受信した外部機器がIPパケット903を処理すべきか否かを判定できるようにしている。
状態フラグ906はサブCPU115によって改竄が発見されたことを示す状態フラグである。本実施例では少なくとも、メインCPU BIOS401に改竄が発見されたのか、サブCPU FW404に改竄が発見されたのかが判別可能な情報が含まれている。MACアドレス907は、改ざんが発見された個体を特定可能な情報としてIPパケット903のデータ部に含まれる。MACアドレスは、ネットワークI/F104のCPUコア501によってFLASH ROM511から読み出されることで取得される。
以上のような内容を持つデータパケットを生成することで、改竄が発見されてCPUが起動しないことを示す情報、および改竄が発見された機種が特定可能な情報をまとめて、ネットワークI/F104がホストとなって外部機器へ通知できる。
次に、本実施形態におけるネットワークI/F104の処理手順を図10のフローチャートを用いて説明する。
パワーオンリセット回路によってリセット状態が解除されたネットワークI/F104のCPUコア501は、ROM510内のプログラムを実行する。そしてCPU501は、SPIバス506を介してネットワークI/F用FLASH ROM133からネットワークI/F FW602をSRAM505に読み込む(S1001)。
次にCPUコア501は、ネットワークI/F FW602を実行して、ネットワークI/F104の初期化を行う(S1002)。具体的には、CPUコア501は、GPIO503を初期化して、改竄発見通知信号131と改竄検証完了通知信号132を受信可能なように設定する。またCPUコア501は、FLASH ROM511に記憶されているMACアドレスのMAC507への割り付けを含むMAC507の初期設定、およびPHY508に対してネットワーク通信を開始するのに必要な初期設定を行う。この段階ではメインCPU101からのアクセスは行われないため、信号バスインターフェース504をDISABLE状態等、電力消費のもっとも少ない状態にしておく。
次にCPUコア501は、ネットワークI/F FW602に含まれるローダプログラムを実行し、SPIバス506を介してネットワークI/F用FLASH ROM133からパケット生成プログラム603を読み出し実行する(S1003)。
パケット生成プログラム603は、改竄発見通知信号131がHiとなったことをGPIO503を介して検知すると、IPパケット903を生成する。このIPパケット903は、IPパケットヘッダー904と、データ部に識別子905、状態フラグ906、そしてMACアドレス907を含む。そしてパケット生成プログラムは、生成したIPパケット903をMAC507へ転送する。すると、MAC507がイーサネットヘッダ902を付与してイーサネットフレーム901を形成した後にPHY508へ転送し、PHY508はLAN130へ図9に例示される所定のデータパケットを送信する。このようにパケット生成プログラム603は、サブCPU115からの改竄発見通知信号131にしたがってネットワークに所定のデータパケットを送信するプログラムである。
次にCPUコア501は、タイマー512を起動する(S1004)。タイマー512を起動することにより、後に説明するサブCPU115からの改竄発見通知信号131、改竄検証完了通知信号132が制御されなかったと判定するためのタイムアウト時間が計時される。
次にCPUコア501が、改竄検証完了通知信号132がHiになったか否かをGPIO503にアクセスすることで確認する(S1005)。
Hiの場合(Yes)、CPUコア501は、メインCPU101がネットワークI/F104の内部レジスタにアクセス可能となるよう設定し、メインCPU101からの制御を待つ(S1006)。すなわち、ネットワークI/F104はメインCPU101によって制御される状態になる。例えば、CPUコア501は、S1002でDisable状態にした信号バスインターフェース504をEnable状態に設定し、バス109を介してメインCPU101がネットワークI/F104へアクセスできるようにする。そして、CPUコア501は自信を省電力状態にしてもよい。
Loの場合(No)、CPUコア501は、改竄発見通知信号131がHiであるか否かをGPIO503にアクセスすることで確認する(S1007)。Hiの場合(Yes)、CPUコア501は、パケット生成プログラムにしたがって、メインCPU BIOS改ざん発生パケットを生成する(S1008)。このパケットは、改竄が発見されてメインCPU101が起動しないことを示すフラグを状態フラグ906として含む。このパケットを、メインCPU BIOS改ざん発生パケットと呼ぶ。このステップにより、改竄が発見されてメインCPU101が起動しないことをLAN130を通じて外部通知するためのデータが形成される。
Loの場合(No)、CPUコア501は、タイマー512が計時している値(経過時間)を取得し、予め設定されたタイムアウト値(タイムアウト時間)を超えたか否かを判定する(S1010)。
取得した値がタイムアウト値を超えている場合(Yes)、CPUコア501は、パケット生成プログラムにしたがって、サブCPU FW改竄発生パケットを生成する(S1011)。このパケットは、サブCPU FW404に改竄が発生したためメインCPU101が起動しないことを示すフラグを状態フラグ906として含む。このステップにより、改竄発見通知信号131、改竄検証完了通知信号132ともに変化がない場合に、外部にメインCPU101が起動しないことを外部通知するためのデータが生成される。
次に、CPUコア501は、S1008またはS1011において生成された所定のデータパケットをLAN130等の外部に送信する(S1009)。具体的には、CPUコア501は、生成したパケット1001をMAC507へ転送し、MAC507がパケット転送に必要なエラー訂正情報の付与等を行ってPHY508を介してパケットをブロードキャストする。本実施例では、IPパケットヘッダー904にリミテッドブロードキャストアドレスである255:255:255:255が設定され、同一のネットワークセグメントに接続されているすべての外部機器に対してデータが送信される。また、イーサネットヘッダ902にブロードキャストアドレスであるFF−FF−FF−FF−FF−FFを設定し、同一のネットワークセグメントに接続されているすべての外部機器に対してデータが送信されるようにしている。このように、設定されるIPアドレスを固定化することで、CPUコア501で動作するプログラムを簡易化し、少ないハード資源でも、外部機器に改竄が発見されてメインCPU101が起動できないことを通知することが可能になる。ただし、別の方法でデータを送出するように構成することも可能である。例えば、IPv6ではブロードキャストアドレスが存在しない。そこで、IPv6のフォーマットに合わせて、マルチキャストIPアドレスとしてFF02::1を設定し、かつ、マルチキャストMACアドレスとして 33:33:00:00:00:01と設定する方法でもよい。この方法によって、マルチキャストでデータの送信が行われる。また、パケット生成プログラムやネットワークI/F FW602のサイズ制約が少ないハード資源をネットワークI/F104が有する場合、次のような処理を行うプログラムを備えてデータ送信を行ってもよい。つまり、データ送信先の外部機器の情報を取得し、この情報を基にデータパケットを特定の送信先に送信するという処理である。外部機器の情報は、予めネットワークI/F用FLASH ROM133に記憶しておいたものを取得してもよい。また、外部機器の情報は、IPv4におけるARP(Address Resolution Protocol)や、IPv6におけるNDP(Neighbor Discovery Protocol)を使って取得してもよい。つまり、データ送信先を固定にしても、動的に指定してもよい。
次に図11、図12、図13を用いて、図7、図8、図10で説明した各ステップがMFP1の起動処理の中でどのような時系列関係を有しているかを説明する。ただし、図7、図8、図10を使って各部で実施される詳細な処理内容は説明した。よって、ここでは各図で説明したステップの時系列がわかるよう、ポイントとなる処理をピックアップして記述する。
図11は、サブCPU115がメインCPU BIOS401の改竄検証を行い、改竄されていると判定した場合のシーケンス図である。まず、MFP1はユーザによって起動操作がなされる(S1101)。これにより、サブCPU115とネットワークI/F104が起動する。
次に、サブCPU115がサブCPU FW404を検証する(S1102)。このステップは図7で説明したS701からS704までのステップを含む。一方、ネットワークI/F104はネットワークI/Fの初期設定を行う(S1103)。ネットワークI/F104の初期設定の中には図10で説明したS1001からS1004までのステップを含んでいる。図を見て明らかなように、S1102とS1103の各処理の間には依存関係がなく、サブCPU115およびネットワークI/F104が独立に処理を実行する。すなわちサブCPU115によるサブCPU FW404の検証の結果を待たず、かつ、検証の結果に関わらず、ネットワークI/F104は、LAN130(外部)にデータパケットを送信可能な状態になる。
サブCPU FW404の検証が完了し、改竄がないと判定すると、サブCPU115は更にメインCPU BIOS401の改竄検証を実施する(S1104)。このステップは、図7で説明したS705からS713までのステップを含む。図を見て明らかなように、S1104とS1103の各処理の間には依存関係がなく、サブCPU115およびネットワークI/F104が独立に処理を実行する。すなわちサブCPU115によるメインCPU BIOS401の検証の結果を待たず、かつ、検証の結果に関わらず、ネットワークI/F104は、LAN130(外部)にデータパケットを送信可能な状態になる。
サブCPU115はメインCPU BIOS401の改竄検証を行った結果、改竄有りと判定すると改竄発見通知信号131をアサートする(S1105)。このステップは、図7で説明したS713、S717を含む。ここで、アサートするとは、その信号が有効であるという意味を持つ信号レベルに変更することであり、ここではサブCPU115が改ざん発見通知信号131を“Lo”レベルから“Hi”レベルへと信号レベルを変化させる動作を表す。今後は、“Hi”レベルへアサートするというように、有効となる信号のレベルとともにこの用語を用いて説明をする。そして、S716で説明した通り、自身を低消費電力な状態へと移行する(S1106)。
次に、S1105によって、ネットワークI/F104は、メインCPU BIOS401に改竄が発生したことを示す情報を状態フラグとして含むパケットを生成する(S1107)。このステップは、S1008に対応する。そして、ネットワークI/F104は、生成したパケットをMAC507、PHY508を介して送信する(S1108)。このステップは、S1009に対応する。このケースでは、メインCPU101はサブCPU115によってリセット制御されているため、起動できない。そのため、図8で説明したフローは実施されない。
次に図12は、サブCPU115がサブCPU FW404を検証し、改竄されていると判定した場合のシーケンス図である。すでに図11で説明した部分は割愛する。
サブCPU115は、サブCPU FW404が改竄されていると判定すると、ネットワークI/F104へは何の信号もアサートしない。よって、ネットワークI/F104は、S1103で設定したタイマーがタイムアウトを迎える(S1201)。これは図10のS1010のYesの場合に対応する。これにより、ネットワークI/F104は、サブCPU FW404に改竄が発生したことを示す情報を状態フラグとして含むパケット903を生成する(S1202)。これは図10のS1011に対応する。このケースでは、メインCPU101はサブCPU115によってリセット制御されているため、起動できない。そのため、図8で説明したフローは実施されない。
次に図13は、サブCPU115がメインCPU BIOS401の改竄検証までを完了し、改竄されていないと判定した場合のシーケンス図である。すでに図11で説明した部分は割愛する。
サブCPU115は、S1104のメインCPU BIOS401の改竄検証を完了し、改竄されていないと判定した場合、改竄検証終了信号をHiにアサートする(S1301)。これは図10で説明したS1005において、Yesの場合に対応する。
S1301を実施すると、ネットワークI/F104は、メインCPU101、サブCPU115の起動プログラムが改竄されていないため、メインCPU101の起動が始まると判定し、メインCPU101の制御を待つ(S1302)。これは、図10のS1006に対応する。
また、S1301を実施すると、サブCPU115は直ちにメインCPU101へのリセット信号117をHiにして、メインCPU101の起動を許可する(S1303)。これは図7のS715に対応する。
次にメインCPU101は、リセット信号117がHiになってリセットが解除されたことを受けて、FLASH ROM112からメインCPU BIOS401を読みだし、メインCPUの初期化処理を開始する(S1304)。これは図8で説明したS801からS802に対応する。
次に、メインCPU101はMFP1のシステム起動処理を行う(S1305)。これは図8のS803からS805に対応する。これにより、MFP1はユーザが使用可能な状態に移行することができる。すなわち、メインCPU101は、BIOS401を実行してOSを起動することで、LAN130上の外部が装置とデータパケットを送受信するように前記通信手段を制御する。
以上説明した様に、本実施例では、ネットワークI/F104が起動直後にネットワーク制御を行うホストとして動作可能なように構成するとともに、改竄の検証結果をサブCPU115からネットワークI/F104へ通知可能なように構成する。これにより、ブートプログラムの改竄を発見してメインCPUが起動しないことをネットワーク上の機器に通知することができるようになる。
なお、本実施形態で記載した信号の極性はシステムの定めに応じて変更してもよいことは言うまでもない。また、本実施例では改竄検証完了信号132を設けたが、リセット信号117を改竄検証完了信号132としてネットワークI/F104へ入力しても、本実施例で説明したことと同様の動作が実現できる。また、本実施例では、改竄発見通知信号131と改竄検証完了信号132を専用の信号線として設けたが次のように構成してもよい。すなわち、サブCPU115とネットワークI/F104の間をCPU間通信が可能なバスで接続し、サブCPU115から改竄発見通知および改竄検証完了を示す情報をネットワークI/F104へ送信するように構成してもよい。この場合、サブCPU115とネットワークI/F104の間を直接バスで接続する形態をとってもよいし、サブCPU115を信号バス109へ接続し、信号バス109を介してネットワークI/F104に情報の通知を行う形態をとってもよい。また、本実施例で説明した構成要素の一部がSOC(System On Chip)に集積されていてもよい。
また、本実施例で説明したネットワークI/F104はイーサネット規格に準拠した通信を行うとして説明を行ったが、IEEE802.11で規格化されている無線LANに準拠した通信を行うようにしてもよい。
(他の実施例)
本発明は、上述の各実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASICやFPGA)によっても実現可能である。
本発明は、上述の各実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASICやFPGA)によっても実現可能である。
Claims (18)
- プログラムを実行する実行手段と、
前記実行手段のブートプログラムを検証する検証手段と、
ネットワーク上の外部装置と通信する通信手段と、
を有し、
前記実行手段は、前記検証手段によって検証された前記ブートプログラムを実行し、かつ、前記ネットワークにデータパケットを送信するように前記通信手段を制御する情報処理装置において、
前記通信手段は、前記検証によって前記ブートプログラムが正しくないと判定されると、所定のデータパケットを前記実行手段を用いずに前記ネットワークに送信することを特徴とする情報処理装置。 - 前記検証手段は、前記検証によって前記ブートプログラムが正しくないと判定すると、所定の信号を前記通信手段に出力し、
前記通信手段は、前記検証手段によって出力された前記所定の信号に基づいて、前記所定のデータパケットを前記ネットワークに送信することを特徴とする請求項1に記載の情報処理装置。 - 前記検証によって前記ブートプログラムが正しくないと判定された後の前記通信手段の状態は、前記ネットワークにデータパケットを送信可能な状態であることを特徴とする請求項1に記載の情報処理装置。
- 前記通信手段は、前記実行手段によって制御されることなく、前記所定のデータパケットを前記ネットワークに送信することを特徴とする請求項1に記載の情報処理装置。
- 前記通信手段は、前記検証手段による前記検証の結果に関わらず、前記ネットワークにデータパケットを送信可能な状態になることを特徴とする請求項1に記載の情報処理装置。
- 前記通信手段は、前記検証手段による前記検証の完了を待たずに前記通信手段のブートプログラムおよびファームウェアを実行し、前記ネットワークにデータパケットを送信可能な状態になることを特徴とする請求項5に記載の情報処理装置。
- 前記実行手段のブートプログラムを記憶する記憶手段を有し、
前記検証手段は、前記ブートプログラムの検証結果に基づいて、前記実行手段を、前記ブートプログラムを前記記憶手段から読み出せる状態にすることを特徴とする請求項1に記載の情報処理装置。 - 前記検証手段は、前記実行手段のリセットを解除して、前記実行手段を、前記ブートプログラムを前記記憶手段から読み出せる状態にすることを特徴とする請求項7に記載の情報処理装置。
- 前記検証手段は、前記ブートプログラムの内容を参照し、当該参照された内容に基づいて前記ブートプログラムを検証することを特徴とする請求項1に記載の情報処理装置。
- 前記検証手段は、前記ブートプログラムのハッシュ値を計算し、当該ハッシュ値に基づいて前記ブートプログラムを検証することを特徴とする請求項9に記載の情報処理装置。
- 前記実行手段は、前記検証手段によって検証された前記ブートプログラムを実行した後、前記通信手段を制御するためのプログラムを実行して前記ネットワークにデータパケットを送信するように前記通信手段を制御することを特徴とする請求項1に記載の情報処理装置。
- 前記通信手段は、イーサネット規格に準拠した通信を行うことを特徴とする請求項1に記載の情報処理装置。
- 前記通信手段は、IEEE802.11の規格に準拠した通信を行うことを特徴とする請求項1に記載の情報処理装置。
- 前記通信手段によって送信される前記所定のデータパケットは、前記ネットワークにブロードキャストされることを特徴とする請求項1に記載の情報処理装置。
- 前記通信手段によって送信される前記所定のデータパケットは、指定された特定の送信先に送信されることを特徴とする請求項1に記載の情報処理装置。
- 前記所定のデータパケットは、前記実行手段が起動しないことを示す情報を含むことを特徴とする請求項1に記載の情報処理装置。
- 前記実行手段は、前記検証によって前記ブートプログラムが正しくないと判定されると、前記ブートプログラムを実行せず、起動しないことを特徴とする請求項1に記載の情報処理装置。
- プログラムを実行する実行手段と、ネットワーク上の外部装置と通信する通信手段と、を有する情報処理装置によって実行される情報処理方法であって、
検証手段が、前記実行手段のブートプログラムを検証する検証工程と、
前記実行手段が、前記検証手段によって検証された正しい前記ブートプログラムを実行し、前記ネットワークにデータパケットを送信するように前記通信手段を制御する工程と、
前記通信手段が、前記検証工程によって前記ブートプログラムが正しくないと判定されると、所定のデータパケットを前記実行手段を用いずに前記ネットワークに送信する工程と、
を有することを特徴とする情報処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019036850A JP2020140561A (ja) | 2019-02-28 | 2019-02-28 | 情報処理装置、情報処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019036850A JP2020140561A (ja) | 2019-02-28 | 2019-02-28 | 情報処理装置、情報処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2020140561A true JP2020140561A (ja) | 2020-09-03 |
Family
ID=72280396
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019036850A Pending JP2020140561A (ja) | 2019-02-28 | 2019-02-28 | 情報処理装置、情報処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2020140561A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022185570A1 (ja) * | 2021-03-02 | 2022-09-09 | 日立Astemo株式会社 | 制御装置 |
JP2022166687A (ja) * | 2021-04-21 | 2022-11-02 | キヤノン株式会社 | 情報処理装置とその制御方法、及びプログラム |
-
2019
- 2019-02-28 JP JP2019036850A patent/JP2020140561A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022185570A1 (ja) * | 2021-03-02 | 2022-09-09 | 日立Astemo株式会社 | 制御装置 |
JP2022166687A (ja) * | 2021-04-21 | 2022-11-02 | キヤノン株式会社 | 情報処理装置とその制御方法、及びプログラム |
JP7313395B2 (ja) | 2021-04-21 | 2023-07-24 | キヤノン株式会社 | 情報処理装置とその制御方法、及びプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8417976B2 (en) | Image processing apparatus, communication system, control method thereof, and storage medium | |
JP5328225B2 (ja) | デバイス監視装置及びその制御方法、デバイス監視システム、並びにプログラム | |
EP2306267A2 (en) | Information processing apparatus, method for controlling the same, and program thereof | |
AU2013316378A1 (en) | Image forming apparatus, driving method thereof, and computer-readable recording medium | |
JP5423079B2 (ja) | 機器管理システム、機器、機器管理方法および機器管理プログラム | |
JP4618804B2 (ja) | 情報処理装置及び情報処理方法とコンピュータプログラム | |
US20130088749A1 (en) | Method and apparatus to control link speed of an image forming apparatus | |
JP2020140561A (ja) | 情報処理装置、情報処理方法 | |
EP2958346B1 (en) | Information processing apparatus, information processing method and recording medium | |
US9612645B2 (en) | Information processing apparatus, control method for information processing apparatus, and storage medium for reducing power consumption in response to a transition | |
CN103810003B (zh) | 信息处理装置及其控制方法 | |
US9134785B2 (en) | Information processing apparatus with power saving mode, and control method and communication apparatus therefor | |
EP2908210B1 (en) | Electronic device that processes data received from external apparatus | |
JP2007080245A (ja) | 画像形成装置及び認証課金方法 | |
JP2006350556A (ja) | 電子機器及びネットワークシステムとその制御方法 | |
JP6373087B2 (ja) | 情報処理装置と、その制御方法及びプログラム | |
JP5618745B2 (ja) | 通信装置、通信方法、及びプログラム | |
JP2014236396A (ja) | 画像形成装置 | |
JP2011129111A (ja) | クライアント装置、デバイス制御方法、およびデバイス制御システム | |
JP2021089607A (ja) | 情報処理装置 | |
JP2001101126A (ja) | 装置間のデータ通信方法及びそのシステム | |
JP2007028062A (ja) | 画像形成装置 | |
JP2021047620A (ja) | 情報処理装置、ソフトウェア管理方法及びプログラム | |
JP2010166313A (ja) | 通信制御装置及び画像処理装置 | |
JP2004153742A (ja) | ネットワーク機器及びネットワークシステム |