(57)【要約】【課題】改ざん等されている異常なソフトウェアによりシステムに外部接続されるデバイスが異常制御されるリスクや、正常に動作しないデバイスによる無駄な電力消費を抑制すること。【解決手段】画像形成装置1では、起動時等に、ソフトウェア（例えばUSBデバイスドライバ305やUSBデバイスファームウェア306）の改変に関する検証を行い（S502、S506）、該検証によりソフトウェアの改変に関して異常と判定された場合（S503でNo、S507でNo）には、該ソフトウェアに対応するデバイス（例えばUSBデバイス206）の利用を制限した状態で画像形成装置1を動作させる（S510）。【選択図】図５
2019200660.tif 000002
【特許請求の範囲】
【請求項１】
デバイスが接続される情報処理装置であって、
前記情報処理装置の本体から前記デバイスを制御可能な制御手段と、
前記デバイスを制御するデバイスごとのソフトウェアを記憶する記憶手段と、
前記ソフトウェアの改変に関する検証を行う検証手段と、を有し、
前記制御手段は、前記検証手段により前記ソフトウェアの改変に関して異常と判定された場合には、該ソフトウェアに対応するデバイスの利用を制限した状態で前記情報処理装置を動作させることを特徴とする情報処理装置。
【請求項２】
前記制御手段は、前記検証手段により前記ソフトウェアの改変に関して異常と判定された場合には、該ソフトウェアを動作させないことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記制御手段は、前記検証手段により前記ソフトウェアの改変に関して異常と判定された場合には、該ソフトウェアに対応するデバイスの電源をオフにすることを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記制御手段は、前記検証手段により前記ソフトウェアの改変に関して異常と判定された場合には、該ソフトウェアにより実現される機能以外の機能に限定して該ソフトウェアに対応するデバイスを動作させることを特徴とする請求項１又は２に記載の情報処理装置。
【請求項５】
前記デバイスごとのソフトウェアには、前記制御手段で動作して対応するデバイスを制御する第１種別のソフトウェア、対応するデバイスに転送されて該デバイスで動作し該デバイスを制御する第２種別のソフトウェアの少なくともいずれかが含まれ、
前記制御手段は、前記検証手段により前記第１種別のソフトウェアの改変に関して異常と判定された場合には該ソフトウェアに対応するデバイスの電源をオフにし、前記第２種別のソフトウェアの改変に関して異常と判定された場合には該ソフトウェアにより実現される機能以外の機能に限定して該ソフトウェアに対応するデバイスを動作させることを特徴とする請求項１に記載の情報処理装置。
【請求項６】
前記制御手段は、前記第１種別のソフトウェアの改変に関して異常と判定された場合には該ソフトウェアを起動させず、前記第２種別のソフトウェアの改変に関して異常と判定された場合には該ソフトウェアを該ソフトウェアに対応するデバイスに転送しないことを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記制御手段は、前記検証手段により改変に関して異常と判定されたソフトウェアが前記本体が省電力状態の場合に前記デバイスを制御するソフトウェアである場合、前記本体を省電力状態へ移行させないことを特徴とする請求項４〜６のいずれか１項に記載の情報処理装置。
【請求項８】
前記制御手段は、前記検証手段により改変に関して異常と判定されたソフトウェアが前記本体が省電力状態の場合に前記デバイスを制御するソフトウェアである場合、前記本体が前記省電力状態へ移行する場合に該ソフトウェアに対応するデバイスの電源をオフにする制御を行うことを特徴とする請求項４〜６のいずれか１項に記載の情報処理装置。
【請求項９】
前記デバイスは、電力の供給を受ける電力線を含む複数の信号線を介して前記本体と接続され、
前記制御手段は、前記電力線を介した電力の供給を停止することにより該デバイスの電源をオフにすることを特徴とする請求項３、５、６、８のいずれか１項に記載の情報処理装置。
【請求項１０】
前記複数の信号線は、USB規格の仕様に対応する信号線であり、
前記デバイスは、前記本体に接続されるUSBデバイスであることを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
前記検証手段は、前記情報処理装置の起動時、前記本体への前記デバイスの接続を検知した場合及び前記ソフトウェアの更新を検知した場合の少なくともいずれかの場合に前記ソフトウェアの改変に関する検証を行うことを特徴とする請求項１〜１０のいずれか１項に記載の情報処理装置。
【請求項１２】
画像形成装置であることを特徴とする請求項１〜１１のいずれか１項に記載の情報処理装置。
【請求項１３】
デバイスが接続される本体と、前記本体から前記デバイスを制御可能な制御手段と、前記デバイスを制御するデバイスごとのソフトウェアを記憶する記憶手段と、を有する情報処理装置の制御方法であって、
前記ソフトウェアの改変に関する検証を行う検証ステップと、
前記検証ステップにより前記ソフトウェアの改変に関して異常と判定された場合には、該ソフトウェアに対応するデバイスの利用を制限した状態で前記情報処理装置を動作させる制御ステップと、
を有することを特徴とする情報処理装置の制御方法。
【請求項１４】
コンピュータを、請求項１〜１２のいずれか１項に記載の検証手段及び制御手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システム外部に接続されるデバイスを制御するためのソフトウェアを検証する情報処理装置、情報処理装置の制御方法、及びプログラムに関する。
【背景技術】
【０００２】
近年、システムの堅牢性向上のため、ソフトウェアを動作させる前に、そのソフトウェアに対して何等かの検証を行い、検証結果が妥当な場合にのみ、そのソフトウェアの動作を開始する技術がある。この技術により、検証結果が異常な場合にはソフトウェアが改ざん等されていると判断し、異常なソフトウェアの動作を防ぎ、意図しない制御がなされることを防止することができる。
【０００３】
また、USB（Universal Serial Bus）やPCI（Peripheral Component Interconnect）などのバスでシステムと接続される外部デバイスがある。外部デバイスの例としては、USB接続されたLAN（Local Area Network）デバイスなどがある。これら外部デバイスには、外部デバイス上で動作し、自身を制御するファームウェアを必要とするものが一定数存在する。このような外部デバイスには、ファームウェアがシステムから転送されロードされる。これら外部デバイスのファームウェアについても改ざん等のリスクがある。
特許文献１には、ソフトウェアの改ざん検知方法が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−３０１４２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
外部デバイス用のファームウェアが改ざんされていた場合、そのファームウェアによりデバイスが異常制御されるリスクや、このように正常に動作しないデバイスにより無駄に電力が消費されるといった課題があった。
【０００６】
本発明は、上記の問題点を解決するためになされたものである。本発明は、改ざん等されている異常なソフトウェアによりデバイスが異常制御されるリスクや、正常に動作しないデバイスによる無駄な電力消費を抑制する仕組みを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明は、デバイスが接続される情報処理装置であって、前記情報処理装置の本体から前記デバイスを制御可能な制御手段と、前記デバイスを制御するデバイスごとのソフトウェアを記憶する記憶手段と、前記ソフトウェアの改変に関する検証を行う検証手段と、を有し、前記制御手段は、前記検証手段により前記ソフトウェアの改変に関して異常と判定された場合には、該ソフトウェアに対応するデバイスの利用を制限した状態で前記情報処理装置を動作させることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、改ざん等されている異常なソフトウェアによりデバイスが異常制御されるリスクや、正常に動作しないデバイスによる無駄な電力消費を抑制することができる。
【図面の簡単な説明】
【０００９】
【図１】本実施形態の画像形成装置のハードウェア構成を例示するブロック図。
【図２】本実施形態の画像形成装置と外部デバイスとの接続構成を例示する図。
【図３】本実施形態の画像形成装置におけるソフトウェアの保存先を例示する図。
【図４】本実施形態の画像形成装置の起動処理の一例を示すフローチャート。
【図５】第１実施形態における外部デバイスの起動処理を例示するフローチャート。
【図６】第２実施形態における外部デバイスの起動処理を例示するフローチャート。
【発明を実施するための形態】
【００１０】
以下、本発明を実施するための最良の形態について図面を用いて説明する。なお、以下の実施の形態は特許請求の範囲に係る発明を限定するものでなく、また実施の形態で説明されている特徴の組み合わせの全てが発明の解決手段に必須のものとは限らない。
【００１１】
〔第１実施形態〕
図１は、本発明の情報処理装置の一実施形態を示す画像形成装置のハードウェア構成の一例を示すブロック図である。
【００１２】
図１において、画像形成装置1は、本発明の情報処理装置の一実施形態を示す。
画像形成装置1において、CPU101は、画像形成装置1を稼働させるためのソフトウェアを動作させる中央演算処理装置である。システムバス102は、CPU101が他のユニットにアクセスするため、及び、他のユニット同士がアクセスするための通路となる。RAM（Random Access Memory）104は、画像形成装置1のプログラムが展開され、プログラム動作時の変数や、各ユニットからDMA（Dynamic Memory Access）で転送されるデータの格納領域となる。
【００１３】
HDD（ハードディスクユニット）103は、画像形成装置1のソフトウェア及び、画像形成装置1が動作するために必要なデータベース、一時保存ファイル等を格納する。なお、図１では、HDDを備える構成を例示しているが、HDDの代わりに又はHDDと併用してSSD（Solid State Drive）等の他の記憶装置を備える構成でもよい。
【００１４】
ネットワークコントローラ105及びネットワークコントローラI／F106は、画像形成装置1とネットワーク上の他の機器と通信を行う。
【００１５】
USBホストコントローラ107及びUSBホストI／F108は、画像形成装置1とUSBデバイスとの通信を制御する。図１では、USBホストI／F108は１つのみの記載であるが、実際には複数存在する。USBホストI／F108は、USBケーブルを使用してUSBデバイスと接続される。USBデバイスの形態によっては、USBケーブルは使用せず直接接続される形態となる。
【００１６】
ディスプレイ111は、画像形成装置1の動作状況をユーザ等が確認できるように表示する。ディスプレイコントローラ110は、ディスプレイ111の表示制御を行う。
入力部113は、画像形成装置1へのユーザからの指示を受け付ける。入力部コントローラ112は、入力部113を制御する。入力部113は、具体的にはキーボードやマウス、テンキー、カーソルキー、タッチパネルや、操作部キーボードといった入力システムである。入力部113がタッチパネルである場合は、物理的にはディスプレイ111の表面に装着された形態になる。
【００１７】
リアルタイムクロック（以下RTC）114は、画像形成装置1の時計機能、アラーム機能、タイマー機能等を有する。
不揮発メモリ115は、書き換え可能なメモリであり、SRAMや、EEPROM等であってもよい。なお、SRAMは「Static Random Access Memory」、EEPROMは「Electrically Erasable Programmable Read Only Memory」の略である。
また、不揮発メモリ115は、書き換え不可能なメモリであってもよい。
【００１８】
CPLD109は、CPU101を介して、基盤回路上の信号線のLow／High状況を読み取る、又は、CPU101がLow／High状況の設定を変更可能にするユニットである。CPLD109は、プログラマブルなロジックデバイスであり、画像形成装置1上で電力関係のOFF／ONを制御可能にしているユニットである。なお、CPLDは「Complex Programmable Logic Device」の略である。また、CPLD109の内部には、GPIOが存在する。GPIOは「General-purpose input/output」の略であり、汎用入出力を意味する。CPU101は、そのGPIOレジスタの設定値を変更することで、電力関係のOFF／ONを可能としている。
【００１９】
スキャナ117は、原稿から画像を読み取る読取装置である。スキャナ117は、スキャナI／F116及びシステムバス102を介して画像形成装置1と接続される。
プリンタ119は、シートに画像を形成するものであり、プリンタI／F118及びシステムバス102を介して画像形成装置1と接続される。
【００２０】
なお、本実施形態では、本発明の情報処理装置の一例として画像形成装置を用いて説明する。しかし、本発明の情報処理装置は、USB等のインタフェースを介して外部デバイスを接続可能な情報処理装置であればよく、画像形成装置に限定されるものではなく、パーソナルコンピュータ（PC）や、その他の家電であってよい。また、本実施形態では、本発明の情報処理装置が、USB経由で接続された外部デバイスの制御を例に説明するが、本発明の情報処理装置と外部デバイスとを接続するインタフェースは、USBに限定されるものではない。
【００２１】
図２は、画像形成装置1と外部デバイスとの接続構成の一例を示す図である。
USBデバイス206は、画像形成装置1と接続される外部デバイスの一例を示すものである。USBデバイス206は、４本の信号線を介して画像形成装置1と接続されている。USBデバイスに対し、４本の信号線が接続されることがUSB規格の仕様である。
【００２２】
USB規格における４本の信号線は、VBUS202、D-203、D+204及びGND205で構成される。VBUS202は、USBデバイス206への電力を供給する電力線である。D-203とD+204は、USBデバイス206とUSBホストコントローラ107との間を通信するデータを流す差動信号線である。GND205は、グランド信号線である。
なお、コネクタ部207は、USBホストI／F108とUSBデバイス206とのコネクタ部である。
【００２３】
AND回路201は、CPU101の指示で制御されるCPLD109内部のGPIOからの出力値と、USBホストI／F108から出力されるVBUSの出力値の論理積を取る。これにより、USBデバイス206に与えるVBUS202のOFF／ONを切り換える。図２では、AND回路を用いて簡易的にVBUSのOFF／ONを切り換え制御する構成を示している。しかし、ハイサイドスイッチとOR回路を用いてVBUSのOFF／ONを制御することも可能であるが、他の方法を用いてもよい。
このような構成により、CPU101の指示によりVBUS202のOFF／ONの制御が可能となる。すなわち、CPU101の指示によりVBUS202を介した電力の供給を停止することにより、USBデバイス206への電力供給を遮断し、USBデバイス206を電源オフにすることが可能となる。
【００２４】
図３は、画像形成装置1上のソフトウェアが保存されているハードウェア領域を模式的に例示する図である。図３に示すソフトウェアは一例であり、他の構成であってもよい。以下、CPU101等がソフトウェアである「ＳＷ」を実行することにより実現される機能を説明する場合に、「ＳＷが・・・する」等のように、ソフトウェアである「ＳＷ」を主体として記載する場合がある。
【００２５】
まず、BIOS（Basic Input Output System）301は、図１に示される各ハードウェアブロックの簡単な初期設定を行うためのソフトウェアである。BIOS301は、不揮発メモリ115上に保存されている。なお、BIOS301は、画像形成装置1に電源が投入されるとCPU101により不揮発メモリ115上から読み出されて実行される。
【００２６】
BIOS301は、RAM104を初期化後、自身をRAM104に展開し、RAM104上で処理を継続する。その他のソフトウェア302〜307は、HDD103上に保存されている。なお、BIOS301は、後述するLoader302をHDD103から読み出し、RAM104上にロードする。
【００２７】
Loader302は、上述のように、BIOS301によりRAM104上にロードされ、CPU101により実行される。Loader302は、OS（Operating System）303をHDD103から読み出し、RAM104上にロードする。これにより、OS303はCPU101により実行される。
OS303は、各ハードウェアブロックの初期化やそれらのリソース管理を行い、個々のハードウェアについては必要に応じてハードウェアに紐づくデバイスドライバ304をRAM104上にロードし、それらを用いて制御を行う。
【００２８】
デバイスドライバ304は、システムの備えるハードウェアごとに用意されるものであり、複数種類がHDD103上に保存されていることが一般的である。デバイスドライバ304は、本体側で動作して対応するデバイスを制御する種別のソフトウェアである。ここでは、説明のためにUSBデバイス206を制御するデバイスドライバを特別にUSBデバイスドライバ305とし区別することにする。
【００２９】
なお、USBデバイス206には、USBデバイスドライバ305の他、USBデバイス206上にロードされ、USBデバイス206上で実行されるUSBデバイスファームウェア306を必要とするものがある。この理由としては、例えば、CPU101が省電力状態においても、USBデバイス206には通電が継続され、USBデバイス206単体で制御を行う必要性があるためである。もしくは、上記理由としては、USBデバイス206の詳細な制御手順をファームウェア306に隠ぺいする目的等の場合もあるが、これらに限定されるものではない。
【００３０】
上述のように、USBデバイスファームウェア306は、USBデバイス206に転送されてUSBデバイス206で動作しUSBデバイス206を制御する種別のソフトウェアである。なお、USBデバイスファームウェア306のUSBデバイス206への転送（図３の310）は、USBデバイスドライバ305により行われる。USBデバイスドライバ305がUSBデバイスファームウェア306を転送するタイミング（310のタイミング）は、USBデバイスドライバ305の起動時にＵＳＢデバイスファームウェア306が更新されていることを検知したタイミングである。もしくは、USBデバイス206が不揮発領域を備えない構成の場合などは、毎回の起動時にUSBデバイスドライバ305がファームウェア306を転送するケースもあり得る。
【００３１】
HDD103上には、その他に、複数のアプリケーション307が保存されている。これらは、画像形成装置1の機能（例えばコピー機能、プリント機能、スキャン機能等）を提供するためのものである。なお、アプリケーション307は、必要に応じてデバイスドライバやファームウェア経由でハードウェア制御を行う。一例として、アプリケーション307は、ネットワークコントローラI／F106を介して接続されるPC等から印刷指示および印刷データを受信し、プリンタI／F118経由でプリンタ119に印刷指示を行う。
【００３２】
図４は、画像形成装置1の起動処理の一例を示すフローチャートである。
まず、画像形成装置1に電源が投入されると、CPU101は、不揮発メモリ115上に保存されているBIOS301を実行する（BIOS起動；S401）。CPU101は、BIOS301の機能により、HDD103やRAM104を使用可能なように初期設定を行うなど、各ハードウェアブロックの簡単な初期設定を行い、後段のソフトウェアでアクセス可能な状態にする。
【００３３】
さらに、CPU101は、BIOS301の機能により、HDD103に保存されているLoader302をRAM104にロードする。ここで、CPU101は、BIOS301の機能により、読み出したLoader302に対して、BIOS301が保持する公開鍵を用いて署名検証（改変に関する検証）を行い、検証結果が正常である場合はLoader302に制御を移す（Loader起動；S402）。なお、上記公開鍵は、不揮発メモリ115上に保存されていてもよい。
【００３４】
CPU101は、Loader302の機能により、次に起動する対象であるOS303をHDD103より読み出し、RAM104に展開し、上述の署名検証と同様にOS303に対して署名検証を行う。検証結果が正常である場合は、CPU101は、OS303に制御を移す（OS起動；S403）。
【００３５】
続いてCPU101は、OS303の機能により、デバイスドライバ起動処理を行う（S404）。このデバイスドライバ起動処理では、CPU101は、OS303の機能により、HDD103に保存されている各種デバイスドライバ304、305を読み出し、個々に署名検証を行う。デバイスドライバとしては、ディスプレイコントローラ110を制御するデバイスドライバや、USBホストコントローラ107を制御するデバイスドライバ、ネットワークコントローラ105を制御するデバイスドライバなどがある。個々のデバイスドライバのうち、署名検証結果が正常であるデバイスドライバが起動される。起動されたデバイスドライバに対応するデバイスについては、以降のアプリケーションから制御可能となる。このデバイスドライバの一つであるUSBデバイスドライバ305の起動処理について、後述の図５にて詳細に述べる。
【００３６】
次にCPU101は、OS303の機能により、各種アプリケーション307を署名検証し、検証結果が正常であったアプリケーション307を起動する（S405）。各種アプリケーションとしては、コピー機能を司るコピーアプリケーションや、プリント機能を司るプリントアプリケーションなどがある。
【００３７】
図５は、第１実施形態におけるデバイスドライバ起動処理を例示するフローチャートである。このデバイスドライバ起動処理では、外部デバイス（例えばUSBデバイス）のデバイスドライバおよびファームウェア検証を実施し、その結果に基づきデバイスの起動処理もしくは電源オフ制御を実施する。なお、この処理は、画像形成装置1の起動時、画像形成装置1本体への外部デバイスの接続を検知した場合及びデバイスドライバやファームウェアの更新を検知した場合の少なくともいずれかの場合に実行されるものとする。
【００３８】
まず、CPU101は、OS303の機能により、HDD103からUSBデバイスドライバ305をRAM104上にロードする（S501）。
次にCPU101は、OS303の機能により、USBデバイスドライバ305の署名検証（改変に関する検証）を行う（S502）。署名検証方法については公知であるため、ここでは詳細については記載しない。
【００３９】
次にCPU101は、OS303の機能により、上記S502の検証結果について判定を行う（S503）。
上記S503において、検証結果が正常値でない（改変に関して異常）と判定した場合（S503でNoの場合）、CPU101は、OS303の機能により、USBデバイス206の通電をOFFする（S510）。具体的には、図２に示したCPLD109及びAND回路201を介してVBUS202をOFF制御することでUSBデバイス206の通電をOFFする。なお、この場合、OS303は、USBデバイスドライバ305を動作させない、及び、USBデバイスファームウェア306のUSBデバイス206への転送を行わない。すなわち、USBデバイス206の利用を制限した状態（ここでは利用しない状態）で画像形成装置1を動作させるように制御する。これにより、改ざん等されている不正なデバイスドライバによる異常制御が行われるリスクや、そのようなデバイスによる無駄な電力消費を抑制することができる。
【００４０】
一方、上記S503において、検証結果が正常値であると判定した場合（S503でYesの場合）、CPU101は、OS303の機能により、RAM104上のUSBデバイスドライバ305の動作を開始させる（S504）。
【００４１】
引き続きCPU101は、USBデバイスドライバ305もしくはOS303の機能により、USBデバイスファームウェア306の検証作業を行う。
まずCPU101は、USBデバイスドライバ305もしくはOS303の機能により、HDD103上のUSBデバイスファームウェア306を読み出し、RAM104上にロードする（S505）。
次に、CPU101は、USBデバイスドライバ305もしくはOS303の機能により、上記S502と同様に、USBデバイスファームウェア306について検証を行う（S506）。
【００４２】
次にCPU101は、USBデバイスドライバ305もしくはOS303の機能により、上記S506の検証結果について判定を行う（S507）。検証結果が正常値であると判定した場合（S507でYesの場合）、CPU101は、USBデバイスドライバ305の機能により、USBデバイスファームウェア306をUSBデバイス206に転送する（S508）。転送が完了した場合、CPU101は、USBデバイスドライバ305の機能により、USBデバイスファームウェア306の動作を開始させ（S509）、本フローチャートの処理を終了する。これにより、USBデバイス206が起動する。
【００４３】
一方、上記S507にて、検証結果が正常値でない（改変に関して異常）と判定した場合（S507でNoの場合）、CPU101は、S510に処理を進める。S510において、CPU101は、USBデバイスドライバ305もしくはOS303の機能により、CPLD109及びAND回路201を介してUSBデバイス206の通電をOFFする。なお、この場合、USBデバイスドライバ305もしくはOS303は、USBデバイスファームウェア306をUSBデバイス206に転送しない。すなわち、USBデバイス206の利用を制限した状態（ここでは利用しない状態）で画像形成装置1を動作させるように制御する。これにより、改ざん等されている不正なファームウェアがデバイスにロードされデバイスが異常制御されるリスクや、ファームウェアが無い状況においてデバイスにより無駄に電力が消費されることなどを抑制することができる。
【００４４】
なお、図４のS404では、以上と同様の処理を各デバイスのデバイスドライバについて行うものとする。しかし、デバイスに転送されて該デバイス上で動作するファームウェアが存在しないデバイスについてはS505〜S509の処理は行われないものとする。
【００４５】
なお、本実施形態では、USBデバイス及びその制御ソフトウェア（ここではUSBデバイスのデバイスドライバ及びUSBデバイス上で動作するファームウェア）を例に説明を行ったが、USBデバイスに限定されるものではない。システムに外部に接続されるデバイス及びその制御ソフトウェアであれば、どのようなデバイス及びその制御ソフトウェアであっても、本発明は適用可能である。
【００４６】
以上のように、システムに外部に接続されるデバイスの制御ソフトウェアを改変に関して検証し、異常（不正）なソフトウェアの場合には、その制御ソフトウェアの実行、その制御ソフトウェアのデバイスへの転送、及び該デバイスへの電力供給を制限（防止）する。これにより、改ざん等されている不正な制御ソフトウェアがシステム上で実行され異常制御が行われるリスクを抑えることができる。また、不正な制御ソフトウェアがデバイスにロードされデバイスが異常制御されるリスク、正常な制御ソフトウェアが無い状況においてデバイスにより無駄に電力が消費されることなどを抑制することができる。すなわち、システムの外部に接続されたデバイスの制御ソフトを検証し、検証結果が異常値の場合は外部デバイスの電力や機能を抑制し、消費電力抑制や異常動作の抑止をはかることができる。
【００４７】
〔第２実施形態〕
本実施形態では、外部デバイスの制御を、ファームウェアが無くともデバイスドライバのみで一部制御でき、機能を限定して使用可能（縮退動作可能）な場合について説明する。この場合、第２実施形態では、第１実施形態とは異なり、デバイスドライバが正常な場合、外部デバイスへの通電を完全に切ることは行わず、外部デバイスへの通電を維持したまま機能制限状態のまま外部デバイスを使用する。第２実施形態は、デバイスドライバ起動処理（外部デバイスの起動処理）のみ第１実施形態と異なっているため、その部分のみ説明し、同一の構成については説明を省略する。
【００４８】
図６は、第２実施形態におけるデバイスドライバ起動処理を例示するフローチャートである。このデバイスドライバ起動処理では、外部デバイス（例えばUSBデバイス）のデバイスドライバおよびファームウェア検証を実施し、その結果に基づきデバイスの起動処理もしくは縮退動作制御を実施する。なお、この処理は、画像形成装置1の起動時、画像形成装置1本体への外部デバイスの接続を検知した場合及びデバイスドライバやファームウェアの更新を検知した場合の少なくともいずれかの場合に実行されるものとする。
【００４９】
なお、本実施形態におけるUSBデバイスファームウェア306は、例えば、画像形成装置1が省電力状態の場合に、USBデバイス206を制御するファームウェアであるとする。よって、画像形成装置1が通常電力状態の場合に動作するUSBデバイス206の機能については、USBデバイスファームウェア306が無くとも機能に問題は無く動作するものとする。
【００５０】
よって、本実施形態では、USBデバイスドライバ305が異常の場合には、USBデバイス206を全く制御できなくなるため、第１実施形態と同じようにUSBデバイス206の通電をオフする。一方で、USBデバイスドライバ305が正常であるが、USBデバイスファームウェア306が不正な場合は、USBデバイスファームウェア306にまつわる機能のみを制限して他の機能に限定して動作させる。以下、図６を用いて詳細に説明する。
【００５１】
まず、図６のS601〜S606、S610及びS607（Yes）〜S609の処理は、図５のS501〜S506、S510及びS507（Yes）〜S509の処理と同一であるので説明を省略する。以下、S607でNoの場合のみ説明する。
【００５２】
S607でNoの場合、CPU101は、USBデバイスドライバ305の機能により、USBデバイスファームウェア306にまつわる機能を制限し、該機能以外の機能に限定してUSBデバイス206を動作させるように制御する（S611）。すなわち、USBデバイス206の利用を制限した状態で画像形成装置1を動作させるように制御する。なお、この場合、USBデバイスドライバ305もしくはOS303は、USBデバイスファームウェア306をUSBデバイス206に転送しない制御を行う。
【００５３】
上記USBデバイス206の利用を制限した状態で画像形成装置1を動作させるように制御として、具体的には、CPU101は、S611において、画像形成装置1の省電力状態への移行を制限するよう設定値を変更する。画像形成装置1を省電力状態へ移行させないことにより、省電力状態で機能するUSBデバイスファームウェア306にまつわる機能を使用せず、USBデバイス206を動作させることが可能となる。もしくは、画像形成装置1の省電力状態への移行は許可するが、画像形成装置1が省電力状態の場合にはUSBデバイス206に通電がなされないように、USBデバイス206に対する通電設定値を変更する。これにより、画像形成装置1の省電力状態における、省電力状態では使用できないUSBデバイス206による無駄な消費電力を抑制することができる。すなわち、USBデバイスドライバ305が正常であるが、USBデバイスファームウェア306が不正（異常）な場合には、USBデバイスファームウェア306にまつわる機能のみを制限する。そして、USBデバイスドライバ305で実現可能な機能でUSBデバイス206を動作させる。
【００５４】
以上のように、システムに外部に接続されるデバイス上で動作する制御ソフトウェアを改変に関して検証し、改変に関して異常な場合には、その制御ソフトウェアのデバイスへの転送を行わず、該ファームウェアに関連するデバイスの機能を制限する。これにより、改ざん等されている不正な制御ソフトウェアがデバイス上で実行され異常制御が行われるリスクなどを抑制することができる。すなわち、システムの外部に接続されたデバイスの制御ソフトを検証し、検証結果が異常値の場合は外部デバイスの電力や機能を抑制し、消費電力抑制や異常動作の抑止をはかることができる。
【００５５】
以上、各実施形態では、改変に関する検証によりソフトウェア（例えばUSBデバイスドライバ305やUSBデバイスファームウェア306）が改変に関して異常と判定された場合には、該ソフトウェアを動作させない（実行や転送を行わない）ように制御する。さらに、該ソフトウェアに対応するデバイス（例えばUSBデバイス206）の利用を制限した状態（電源オフ又は機能制限した状態）で画像形成装置1を動作させる。よって、改ざん等されている異常なソフトウェアによりデバイスが異常制御されるリスクや、正常に動作しないデバイスによる無駄な電力消費を抑制することができる。
【００５６】
なお、上述した各種データの構成及びその内容はこれに限定されるものではなく、用途や目的に応じて、様々な構成や内容で構成されていてもよい。
以上、一実施形態について示したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
また、上記各実施例を組み合わせた構成も全て本発明に含まれるものである。
【００５７】
（その他の実施例）
本発明は、上述の実施例の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路（例えば、ASIC）によっても実現可能である。
また、本発明は、複数の機器から構成されるシステムに適用しても、1つの機器からなる装置に適用してもよい。
本発明は上記実施例に限定されるものではなく、本発明の趣旨に基づき種々の変形（各実施例の有機的な組合せを含む）が可能であり、それらを本発明の範囲から除外するものではない。即ち、上述した各実施例及びその変形例を組み合わせた構成も全て本発明に含まれるものである。
【符号の説明】
【００５８】
1    画像形成装置
103    HDD
107    USBホストコントローラ
108    USBホストI/F
115    不揮発メモリ
206    USBデバイス
305    USBデバイスドライバ
306    USBデバイスファームウェア
【図１】
2019200660.tif 000003
【図２】
2019200660.tif 000004
【図３】
2019200660.tif 000005
【図４】
2019200660.tif 000006
【図５】
2019200660.tif 000007
【図６】
2019200660.tif 000008