JP2020086469A - 情報処理装置およびその制御方法、並びにプログラム - Google Patents
情報処理装置およびその制御方法、並びにプログラム Download PDFInfo
- Publication number
- JP2020086469A JP2020086469A JP2018214138A JP2018214138A JP2020086469A JP 2020086469 A JP2020086469 A JP 2020086469A JP 2018214138 A JP2018214138 A JP 2018214138A JP 2018214138 A JP2018214138 A JP 2018214138A JP 2020086469 A JP2020086469 A JP 2020086469A
- Authority
- JP
- Japan
- Prior art keywords
- program
- information processing
- unit
- processing apparatus
- log
- 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
- Debugging And Monitoring (AREA)
Abstract
【課題】プログラムの起動前にプログラムの検証を実施する情報処理装置において、プログラムの改ざんを検知した場合に、情報処理装置の可用性を確保する。【解決手段】機能を提供するための複数のプログラムを記憶部に保持し、当該複数のプログラムを実行可能な情報処理装置であって、プログラムの実行要求を受け付けた際に、記憶部に保持された当該プログラムに対する改ざんの有無を検証し、検証の結果、改ざんされたものであると判定された際に、当該プログラムの情報をログとして記録するプログラム検証部319と、記録されたログを定期的に監視するログファイル監視部312と、ログの更新が行われたことを検知した場合、当該更新にて示されるプログラムの種類を解析し、解析されたプログラムの種類に応じて、前記情報処理装置にて利用可能な機能に対する制限およびユーザへの通知を行うシステム制御部314とを有する。【選択図】図3
Description
本発明は、情報処理装置およびその制御方法、並びにプログラムに関する。
情報処理装置を制御するプログラムを第三者が不正な方法で改ざんし、情報処理装置内の情報資産を盗む攻撃や、プログラムが改ざんされた情報処理装置を踏み台に利用する攻撃が問題になっている。このような攻撃を防止するために、情報処理装置内にプログラムが第三者によって改ざんされていないことを検証する方法が考案されている。ユーザが情報処理装置によって実現される機能を利用するときに情報処理装置内のプログラムが改ざんされていないことを保証するためには、その機能を実現するプログラムの実行の直前に検証する必要がある。これは、プログラムの検証と実行の間に時間差があると、その間に改ざんされる場合に対応できないためである。
特許文献1では、プログラムの実行要求をフックするフッキングプログラムを用いて、プログラムを起動する前に、プログラムのハッシュ値を計算してホワイトリストと比較し、一致する場合のみプログラムの起動を行う方法が提案されている。ホワイトリストとは、起動が許可されたプログラムの一覧を示すリストである。この方法では、プログラムを実行する各プロセスがプログラムを実行する度にプログラムの検証を行う必要がなく、フッキングプログラムに検証を任せることができる。プログラムの検証に失敗した場合、プログラムの実行要求に対してエラーを返す。この時、プログラムの実行要求に対する一般的なエラーによりプロセスにエラーを返す。特許文献1では検証失敗時には検証プログラムが検証に失敗したことを外部記憶装置上にログファイルとして記録する方法が提案されている。
特許文献1では、プログラムの実行要求が備えているエラーを利用しているため、そのエラーを返す他のケースが存在する。そのため、プログラムの実行要求元がエラーを通知されても、通知されたエラーがプログラムの改ざん検知による通知か、それ以外の原因による通知か、プログラムの実行要求元が判別できない。結果として、エラーを通知されたプロセスが情報処理装置を正常に動作するために必要な制御を決定できない。また、必要な制御を決定できないままにすると、改ざんを検知したプログラムによって実現される情報処理装置の機能をユーザが利用できなくなってしまう。
また、実行要求の結果エラーを受信した場合に、一律に「プログラムが改ざんされているので情報処理装置の機能をすべて停止する」処理にしてしまうと情報処理装置の可用性が下がる。例えば、第三者によって情報処理装置内に未知のプログラムが配置されそのプログラムを起動させる要求があった場合に、未知のプログラムはホワイトリストに含まれないため実行要求の結果エラーが返る。その際、情報処理装置の機能をすべて停止させてしまうと、通常の動作に必要なプログラムは改ざんされていないため情報処理装置は正常に動作するが、未知のプログラムのために情報処理装置が使えないという状況に陥ってしまう。
以上のことから、プログラムの改ざんの発生時には改ざんされたプログラムは改ざん検知プログラムによって実行できないためセキュリティ面の問題はない一方で、ユーザが正常に情報処理装置を利用できなくなり可用性が低下する問題がある。
本願発明は、プログラムの起動前にプログラムの検証を実施する情報処理装置において、プログラムの改ざんを検知した場合に、情報処理装置の可用性を確保することを目的とする。
上記課題を解決するために本願発明は以下の構成を有する。すなわち、機能を提供するための複数のプログラムを記憶部に保持し、当該複数のプログラムを実行可能な情報処理装置であって、プログラムの実行要求を受け付けた際に、前記記憶部に保持された当該プログラムに対する改ざんの有無を検証する検証手段と、前記検証手段による検証の結果、当該プログラムが改ざんされたものであると判定された際に、当該プログラムの情報をログとして記録する記録手段と、前記記録手段にて記録されたログを定期的に監視する監視手段と、前記監視手段にて前記ログの更新が行われたことを検知した場合、当該更新にて示されるプログラムの種類を解析する解析手段と、前記解析手段にて解析されたプログラムの種類に応じて、前記情報処理装置にて利用可能な機能に対する制限およびユーザへの通知を行う制御手段とを有する。
本願発明により、プログラムを実行可能な情報処理装置において、プログラムの改ざんを検知した場合でも、情報処理装置の可用性を確保しつつ、セキュリティの維持が可能となる。
<第1の実施形態>
以下、本発明の実施の形態を図面に基づいて解説する。本実施形態では、情報処理装置がプログラムを実行するときの実行時検証処理、及び検証失敗時の情報処理装置の制御処理について説明する。本実施形態では情報処理装置の例としてMFP(Multi−Function Peripheral:複合機)について記述するが、本発明は複合機以外の情報処理装置にも適用可能な技術である。
以下、本発明の実施の形態を図面に基づいて解説する。本実施形態では、情報処理装置がプログラムを実行するときの実行時検証処理、及び検証失敗時の情報処理装置の制御処理について説明する。本実施形態では情報処理装置の例としてMFP(Multi−Function Peripheral:複合機)について記述するが、本発明は複合機以外の情報処理装置にも適用可能な技術である。
[システム構成]
図1は、本実施形態に係るMFPとクライアントPC(Personal Computer)の接続形態の例を示すブロック図である。MFP100とクライアントPC110はLAN120を介して通信可能に接続されている。MFP100は、ユーザとの入出力を行う操作部102、電子データを紙媒体に出力する画像形成部103、および、紙媒体を読み込み電子データに変換する画像読取部104を有する。操作部102、画像形成部103、および画像読取部104は、コントローラ部101に接続され、コントローラ部101の制御に従い複合機としての機能を実現する。クライアントPC110はMFP100に対してプリントジョブの送信といった処理を行う。クライアントPC110は例えば、デスクトップPC、ノートPC、タブレット端末、スマートフォンなどが適用可能であるが、特に限定するものではない。
図1は、本実施形態に係るMFPとクライアントPC(Personal Computer)の接続形態の例を示すブロック図である。MFP100とクライアントPC110はLAN120を介して通信可能に接続されている。MFP100は、ユーザとの入出力を行う操作部102、電子データを紙媒体に出力する画像形成部103、および、紙媒体を読み込み電子データに変換する画像読取部104を有する。操作部102、画像形成部103、および画像読取部104は、コントローラ部101に接続され、コントローラ部101の制御に従い複合機としての機能を実現する。クライアントPC110はMFP100に対してプリントジョブの送信といった処理を行う。クライアントPC110は例えば、デスクトップPC、ノートPC、タブレット端末、スマートフォンなどが適用可能であるが、特に限定するものではない。
(コントローラ部)
図2は、MFP100のコントローラ部101の詳細を示すブロック図である。CPU(Central Processing Unit)201は、コントローラ内の主な演算処理を行う。CPU201は、バスを介してDRAM(Dynamic Random Access Memory)202、ROM(Read Only Memory)、およびI/Oコントローラ203と接続される。DRAM202は、CPU201が演算する過程で演算命令を表すプログラムデータや、処理対象のデータを一時的に配置するための作業メモリとしてCPU201によって使用される。I/Oコントローラ203は、CPU201の指示に従い各種デバイスに対する入出力を行う。I/Oコントローラ203には、ネットワークI/F204、SATA(Serial Advanced Technology Attachment) I/F205、パネルI/F206、プリンタI/F207、スキャナI/F208、USB I/F209が接続される。
図2は、MFP100のコントローラ部101の詳細を示すブロック図である。CPU(Central Processing Unit)201は、コントローラ内の主な演算処理を行う。CPU201は、バスを介してDRAM(Dynamic Random Access Memory)202、ROM(Read Only Memory)、およびI/Oコントローラ203と接続される。DRAM202は、CPU201が演算する過程で演算命令を表すプログラムデータや、処理対象のデータを一時的に配置するための作業メモリとしてCPU201によって使用される。I/Oコントローラ203は、CPU201の指示に従い各種デバイスに対する入出力を行う。I/Oコントローラ203には、ネットワークI/F204、SATA(Serial Advanced Technology Attachment) I/F205、パネルI/F206、プリンタI/F207、スキャナI/F208、USB I/F209が接続される。
SATA I/F205にはFlashROM211が接続され、CPU201はFlashROM211をMFP100の機能を実現するためのプログラム、およびドキュメントファイルを永続的に記憶するために使用する。ネットワークI/F204には有線LANデバイス210が接続され、CPU201はネットワークI/F204を介して有線LANデバイス210を制御することで、LAN120上の通信を実現する。CPU201は、パネルI/F206を介して操作部102に対するユーザ向けの入出力を実現する。CPU201は、プリンタI/F207を介して画像形成部103を利用した紙媒体の出力処理を実現する。CPU201は、スキャナI/F208を介して画像読取部104を利用した原稿の読み込み処理を実現する。CPU201は、USB I/F209に接続された任意の機器の制御を行う。ROM220にはBIOS(Basic Input Output System)を実現する制御プログラムが記憶されている。
コピー機能を実施する場合は、CPU201がSATA I/F205を介してFlashROM211からプログラムデータをDRAM202に読み込む。CPU201がDRAM202に読み込まれたプログラムに従いパネルI/F206を介して操作部102に対するユーザからのコピー指示を検出する。CPU201は、コピー指示を検出するとスキャナI/F208を介して画像読取部104から原稿を電子データ(画像データ)として受け取り、その電子データをDRAM202に格納する。CPU201は、DRAM202に格納した画像データに対して出力に適した色変換処理などを実施する。CPU201は、DRAM202に格納した画像データをプリンタI/F207を介して画像形成部103に転送し、紙媒体への出力処理を指示する。
PDL印刷を実施する場合は、クライアントPC110がLAN120を介して印刷指示を行う。CPU201は、SATA I/F205を介してFlashROM211からプログラムデータをDRAM202に読み込み、DRAM202に読み込まれたプログラムに従いネットワークI/F204を介して印刷指示を検出する。CPU201は、PDL送信指示を検出するとネットワークI/F204を介して印刷データを受信し、SATA I/F205を介してFlashROM211に印刷データを保存する。CPU201は印刷データの保存が完了すると、FlashROM211に保存した印刷データをDRAM202に画像データとして展開する。CPU201はDRAM202に格納した画像データに対して出力に適した色変換処理などを実施する。CPU201は、DRAM202に格納した画像データをプリンタI/F207を介して画像形成部103に転送し、紙媒体への出力処理を指示する。
(ソフトウェア構成)
図3は、MFP100のコントローラ部101で実行されるソフトウェアの構造の概要を示すブロック図である。コントローラ部101で実行されるソフトウェアは全て、CPU201が実行する。コントローラ部101のソフトウェアは、カーネル318とコントローラソフト301から構成される。
図3は、MFP100のコントローラ部101で実行されるソフトウェアの構造の概要を示すブロック図である。コントローラ部101で実行されるソフトウェアは全て、CPU201が実行する。コントローラ部101のソフトウェアは、カーネル318とコントローラソフト301から構成される。
カーネル318は、カーネルの制御ソフトとしてプログラム検証部319を有する。プログラム検証部319は、プログラム実行要求部311からのFlashROM211上に配置されるプログラム401の実行要求をカーネル空間でフックし、実行要求されたプログラムファイルの検証を行う。ここでの検証は、プログラムに対する改ざんの有無を判定するものであり、プログラムの正当性を判定する。プログラム検証部319が実行要求されたプログラムの検証に成功した場合は、MFP100が実行要求された、検証済みのプログラムが実行される。プログラム検証部319が実行要求されたプログラムの検証に失敗した場合は、プログラム検証部319は、検証に失敗したことと、検証に失敗したプログラムに関する情報をFlashROM211のログファイル407に記録する。
コントローラソフト301の構成要素について説明する。操作制御部302は、操作部102にユーザ向けの画面イメージの表示、およびユーザ操作の検知と画面上に表示したボタン等の画面部品に関連付けられた処理を実行する。データ記憶部303は、他の制御部からの要求に応じてデータをFlashROM211に記憶、および読み出しを行う。例えば、ユーザが何らかの機器設定を変更したい場合は、操作制御部302は操作部102にユーザが入力した内容を検知し、操作制御部302からの要求にて示された設定値をデータ記憶部303がFlashROM211に保存する。ネットワーク制御部308は、データ記憶部303に記憶された設定値に従い、システム起動時や、設定変更検出時にIPアドレスなどネットワーク設定をTCP/IP制御部309に行う。
TCP/IP制御部309は、他の制御部からの指示に従い、ネットワークI/F204を介して、ネットワークパケットの送受信処理を行う。ジョブ制御部304は、他の制御部からの指示に従って、ジョブ実行の制御を行う。画像処理部305は、ジョブ制御部304からの指示に従って、画像データを用途ごとに適した形式に加工する。印刷処理部306は、ジョブ制御部304からの指示に従い、プリンタI/F207を介して、画像形成部103により紙媒体への画像の印刷を指示する。読み取り処理部307は、ジョブ制御部304からの指示に従い、スキャナI/F208を介して、画像読取部104により設置された原稿を読み込む。USB制御部310は、USB I/F209を制御し、USB接続された任意の機器の制御を行う。プログラム実行要求部311は、FlashROM211上のプログラム401を実行することをカーネル318に対して要求する。プログラム更新部316は、コントローラソフト301を構成するプログラム401を、設置環境で更新する処理を行う。
ログファイル監視部312は、FlashROM211上に配置されるログファイル407の更新をポーリングによって常時監視する。ログファイル監視部312は、ログファイル407の更新を検知した際には更新を検知したことをログファイル解析部313に通知する。ログファイル解析部313は、ログファイル監視部312からのログファイル407の更新通知を受信するまで待機する。ログファイル解析部313は、ログファイル407の更新通知を受信した時は、ログファイル407の更新されたログファイル407の内容を確認し、その内容をホワイトリスト405とアプリケーション管理テーブル406を利用して解析する。ログファイル407の解析の詳細については後述する。
ログファイル解析部313は、ログファイル407の内容の解析結果をシステム制御部314に通知する。システム制御部314は、ログファイル解析部313からの解析結果を受信するまで待機し、解析結果を受信すると、コントローラソフト301の処理によって実現される機能を制限する範囲を決定し、決定内容に応じて利用可能な機能を制限する。システム制御部314は、利用可能な機能が制限されたことと、制限された機能を再度利用可能にするために必要な動作をMFP100の操作部102の画面上に表示する。ホワイトリスト管理部315は、ユーザがプログラムの実行時検証機能の有効化/無効化する際に、ホワイトリスト405の生成/更新、アプリケーション管理テーブル406の生成/更新を行う。
アプリケーション管理部317は、ユーザの指示等に基づいて、MFP100で動作するアプリケーションの動作状態やアプリケーションの起動/停止を管理する。本実施形態では、OSGI(Open Services Gateway Initiative)フレームワークを用いて動作するアプリケーションの管理を行う。OSGIは、Java(登録商標)モジュールの動的インストール/アンインストールや、アプリケーションの更新・実行を管理する。尚、MFP100には操作部102を用いてコントローラソフト301に含まれない拡張JAVAアプリケーション404を更に追加することが可能である。アプリケーションの管理の詳細については後述する。
例えば、コピー機能を実行する場合は、アプリケーション管理部317がコピー機能を有するJAVAアプリケーション403を起動して操作制御部302にコピー画面の表示を指示する。操作制御部302がコピー機能の開始要求を検知し、ジョブ制御部304にコピーを指示する。ジョブ制御部304は読み取り処理部307に原稿読み取りを指示し、スキャン画像を取得する。ジョブ制御部304は、画像処理部305に指示し、スキャン画像を印刷に適した形式に変換する。ジョブ制御部304は、印刷処理部306に印刷を指示し、コピー結果を出力する。
(データ構成)
図4は、本実施形態に係るFlashROM211に配置されるデータの例を示す。なお、本実施形態では、アプリケーションを記述するプログラム言語として、Java(登録商標)を例に挙げて説明するが、これに限定するものではない。
図4は、本実施形態に係るFlashROM211に配置されるデータの例を示す。なお、本実施形態では、アプリケーションを記述するプログラム言語として、Java(登録商標)を例に挙げて説明するが、これに限定するものではない。
プログラム401には、実行可能プログラム402、JAVAアプリケーション403、および拡張JAVAアプリケーション404の3種類が含まれる。実行可能プログラム402には、OS(Operating System)のプログラムおよび/または機能を提供する基本ソフトウェアが含まれる。例えば、実行可能プログラム402として、ファームウェアが挙げられる。JAVAアプリケーション403には、MFP100上で動作するアプリケーション機能を実現するプログラムが含まれる。また、JAVAアプリケーション403は、FlashROM211内の保護領域408にJAVAアプリケーション403のコピーが配置されている。MFP100の起動時に、アプリケーション管理部317が保護領域408からJAVAアプリケーション403をコピーして上書きすることが可能である。通常、保護領域408に配置されたJAVAアプリケーション403に対する変更は制限されている。また、保護領域408のJAVAアプリケーション403と、プログラム401内のJAVAアプリケーション403は、改ざん等が無ければ同じものとなる。
拡張JAVAアプリケーション404にはユーザがMFP100上で動作するアプリケーション機能を追加する際にユーザがインストールするアプリケーションのプログラムが含まれる。拡張JAVAアプリケーション404は、実行可能プログラム402やJAVAアプリケーション403が提供する機能を拡張したり、新たな機能を提供したりするための拡張アプリケーションである。ホワイトリスト405は、プログラム検証部319がプログラムを検証するときに参照する一覧である。アプリケーション管理テーブル406は、ログファイル解析部313がログファイル407の内容を解析するときに参照するテーブルである。ログファイル407は、プログラム検証部319がプログラムの検証に失敗した場合に、検証に失敗したことと、検証に失敗したプログラムの情報を含むログが記載されているファイルである。
(ホワイトリスト)
図5は、本実施形態に係るホワイトリスト405の例を示す。ホワイトリスト405は、コントローラソフト301に含まれる全てのプログラム401に対して、ファイルパス501とハッシュ値502の組み合わせをリスト化したものである。データの内容としては、少なくともファイル名称、ファイルの配置場所(ディレクトリ上の位置)、ファイルから計算したハッシュ値を含むものとし、ハッシュ値等の情報がリスト化される。ユーザが操作部102からプログラムの実行時検証を有効化したときに、ホワイトリスト管理部315がホワイトリスト405を生成する。プログラム更新部316がプログラム401を更新したときと、アプリケーション管理部317が拡張JAVAアプリケーション404を更新したときに、ホワイトリスト管理部315がホワイトリスト405を更新する。ここで用いるハッシュ値を算出するためのハッシュ関数は特に限定するものではなく、任意のハッシュ関数が用いられてよい。ファイルパス501は、絶対パスが指定されてもよいし、所定の位置からの相対パスが指定されてもよい。
図5は、本実施形態に係るホワイトリスト405の例を示す。ホワイトリスト405は、コントローラソフト301に含まれる全てのプログラム401に対して、ファイルパス501とハッシュ値502の組み合わせをリスト化したものである。データの内容としては、少なくともファイル名称、ファイルの配置場所(ディレクトリ上の位置)、ファイルから計算したハッシュ値を含むものとし、ハッシュ値等の情報がリスト化される。ユーザが操作部102からプログラムの実行時検証を有効化したときに、ホワイトリスト管理部315がホワイトリスト405を生成する。プログラム更新部316がプログラム401を更新したときと、アプリケーション管理部317が拡張JAVAアプリケーション404を更新したときに、ホワイトリスト管理部315がホワイトリスト405を更新する。ここで用いるハッシュ値を算出するためのハッシュ関数は特に限定するものではなく、任意のハッシュ関数が用いられてよい。ファイルパス501は、絶対パスが指定されてもよいし、所定の位置からの相対パスが指定されてもよい。
(アプリケーション管理テーブル)
図6は、本実施形態に係るアプリケーション管理テーブル406の例を示す。アプリケーション管理テーブル406は、MFP100上で動作するアプリケーションのファイルパス601とアプリケーションのタイプ602が含まれる。アプリケーションのタイプ602には、JAVAアプリケーション403と拡張JAVAアプリケーション404のいずれかが指定される。ユーザが操作部102からプログラムの実行時検証を有効化した場合に、ホワイトリスト管理部315がアプリケーション管理テーブル406を生成する。アプリケーション管理部317が拡張JAVAアプリケーション404の更新を行ったときに、ホワイトリスト管理部315がアプリケーション管理テーブル406を更新する。ファイルパス601は、絶対パスが指定されてもよいし、所定の位置からの相対パスが指定されてもよい。
図6は、本実施形態に係るアプリケーション管理テーブル406の例を示す。アプリケーション管理テーブル406は、MFP100上で動作するアプリケーションのファイルパス601とアプリケーションのタイプ602が含まれる。アプリケーションのタイプ602には、JAVAアプリケーション403と拡張JAVAアプリケーション404のいずれかが指定される。ユーザが操作部102からプログラムの実行時検証を有効化した場合に、ホワイトリスト管理部315がアプリケーション管理テーブル406を生成する。アプリケーション管理部317が拡張JAVAアプリケーション404の更新を行ったときに、ホワイトリスト管理部315がアプリケーション管理テーブル406を更新する。ファイルパス601は、絶対パスが指定されてもよいし、所定の位置からの相対パスが指定されてもよい。
(操作画面)
図13は、操作部102に表示される、メニュー画面1301の構成例を示す。メニュー画面1301は、MFP100が備える様々な機能の実行をユーザが指示するためのものである。ボタン1302は、コピー機能を指示する際に用いられる。ボタン1303は、原稿等をスキャンして保存する機能を指示する際に用いられる。ボタン1304は、原稿等をスキャンして送信する機能を指示する際に用いられる。ボタン1305は、機器の設定変更を指示する際に用いられる。ボタン1305が押下されると、図14に示す設定画面1401が表示される。メッセージ表示領域1306は、機器の動作中に発生した様々ンユーザ向けのメッセージを表示する。
図13は、操作部102に表示される、メニュー画面1301の構成例を示す。メニュー画面1301は、MFP100が備える様々な機能の実行をユーザが指示するためのものである。ボタン1302は、コピー機能を指示する際に用いられる。ボタン1303は、原稿等をスキャンして保存する機能を指示する際に用いられる。ボタン1304は、原稿等をスキャンして送信する機能を指示する際に用いられる。ボタン1305は、機器の設定変更を指示する際に用いられる。ボタン1305が押下されると、図14に示す設定画面1401が表示される。メッセージ表示領域1306は、機器の動作中に発生した様々ンユーザ向けのメッセージを表示する。
図14は、操作部102に表示される、設定画面1401の構成例を示し、様々な設定をユーザが指示するためのものである。この設定画面1401自体に具体的な設定項目はなく、詳細な設定項目へのガイドとなる中間階層である。ボタン1402が押下されると、図15に示すセキュリティ設定画面1501が表示される。ボタン1403が押下されると、機器設定画面(不図示)が表示される。ボタン1404が押下されると、ユーザ設定画面(不図示)が表示される。ボタン1405が押下されると、ネットワーク設定画面(不図示)が表示される。メッセージ表示領域1306は、機器の動作中に発生した様々なユーザ向けのメッセージを表示する。機器設定画面、ユーザ設定画面、およびネットワーク設定画面については、本実施形態には直接関係しないため詳細な説明は省略するが、これらは、関連する設定項目を設定可能な画面である。
図15は、セキュリティ設定画面1501の構成例を示し、MFP100に対するセキュリティ設定を行う際に用いられる。プログラムの実行時検証設定1502が選択されると、機能実行時に行うプログラム検証機能が有効化される。ボタン1503が押下されると、セキュリティ設定画面1501の選択状態が機器設定としてデータ記憶部303に記憶される。
[処理フロー]
(生成処理)
図10を用いて、ユーザがプログラムの実行時検証機能を有効化するときのホワイトリスト405とアプリケーション管理テーブル406の生成処理フローを説明する。この処理は、MFP100において、ユーザが改ざん検知機能の有効化を要求するときに行われる。以下の説明で、MFP100が実施する図10の処理は、FlashROM211に格納されたプログラム401をCPU201がDRAM202に読み込んだ後、CPU201の演算処理として実施されることで実現される。
(生成処理)
図10を用いて、ユーザがプログラムの実行時検証機能を有効化するときのホワイトリスト405とアプリケーション管理テーブル406の生成処理フローを説明する。この処理は、MFP100において、ユーザが改ざん検知機能の有効化を要求するときに行われる。以下の説明で、MFP100が実施する図10の処理は、FlashROM211に格納されたプログラム401をCPU201がDRAM202に読み込んだ後、CPU201の演算処理として実施されることで実現される。
ユーザがプログラムの実行時検証機能を有効化する要求をMFP100の操作部102から行う。ここでの要求は、図15に示したセキュリティ設定画面1501にてプログラムの実行時検証設定1502が選択された場合に相当する。操作制御部302は、ユーザからのプログラムの実行時検証機能の有効化要求を受信する。これにより、本処理フローが開始される。
S1001にて、ホワイトリスト管理部315は、操作制御部302から改ざん検知機能の有効化要求を受信する。
S1002にて、ホワイトリスト管理部315は、MFP100内のFlashROM211に配置されている全てのプログラム401を検索する。そして、ホワイトリスト管理部315は、検索したプログラムのハッシュ値を計算し、プログラムのファイルパス501とハッシュ値502をホワイトリスト405に記載する。
S1003にて、ホワイトリスト管理部315は、アプリケーション管理部317にMFP100に存在するアプリケーションのファイルパス601とアプリケーションのタイプ602を要求する。
S1004にて、ホワイトリスト管理部315は、MFP100内のアプリケーションのファイルパス601とそのアプリケーションのタイプ602の通知をアプリケーション管理部317から受け付ける。
S1005にて、ホワイトリスト管理部315は、通知されたアプリケーションのファイルパス601とそのアプリケーションのタイプ602をアプリケーション管理テーブル406に記載してアプリケーション管理テーブル406を生成する。そして、本処理フローを終了する。
(プログラム更新時の更新処理)
図11を用いて、プログラム更新部316がプログラムを更新する時のホワイトリスト405とアプリケーション管理テーブル406の更新処理フローを説明する。この処理は、プログラム更新部316がMFP100内のプログラム401を更新するときに行われる。以下の説明で、MFP100が実施する図11の処理は、FlashROM211に格納されたプログラム401をCPU201がDRAM202に読み込んだ後、CPU201の演算処理として実施されることで実現される。
図11を用いて、プログラム更新部316がプログラムを更新する時のホワイトリスト405とアプリケーション管理テーブル406の更新処理フローを説明する。この処理は、プログラム更新部316がMFP100内のプログラム401を更新するときに行われる。以下の説明で、MFP100が実施する図11の処理は、FlashROM211に格納されたプログラム401をCPU201がDRAM202に読み込んだ後、CPU201の演算処理として実施されることで実現される。
S1101にて、プログラム更新部316は、プログラム401を更新する。
S1102にて、プログラム更新部316は、更新したプログラムの情報をホワイトリスト管理部315に通知する。ホワイトリスト管理部315に通知するプログラムの情報としては、少なくともファイル名称が含まれるものとする。
S1103にて、ホワイトリスト管理部315は、プログラム更新部316から通知されたプログラムのハッシュ値を計算し、ホワイトリスト405に記載されているプログラムのハッシュ値502を更新する。
S1104にて、ホワイトリスト管理部315は、プログラム更新部316から通知されたプログラムがjarファイルか否かを判定する。具体的には、プログラムの拡張子が「.jar」であるか否かを確認し、「.jar」である場合はプログラムがjarファイルであると判定される。jarファイルとはJava(登録商標)で開発されたプログラムのファイル群をひとつにまとめて格納するファイル形式になっているファイルである。jarファイルであると判定された場合は(S1104にてYES)S1105へ進み、jarファイルでないと判定された場合は(S1104にてNO)本処理フローを終了する。
S1105にて、ホワイトリスト管理部315は、アプリケーション管理テーブル406を更新する。そして、本処理フローを終了する。
(拡張JAVAアプリケーション更新時の更新処理)
図12を用いて、ユーザが拡張JAVAアプリケーション404を更新する時のホワイトリスト405とアプリケーション管理テーブル406の更新処理フローを説明する。この処理は、アプリケーション管理部317が、ユーザの指示に基づいてMFP100内のアプリケーションを更新するときに行われる。以下の説明で、MFP100が実施する図12の処理は、FlashROM211に格納されたプログラム401をCPU201がDRAM202に読み込んだ後、CPU201の演算処理として実施されることで実現される。
図12を用いて、ユーザが拡張JAVAアプリケーション404を更新する時のホワイトリスト405とアプリケーション管理テーブル406の更新処理フローを説明する。この処理は、アプリケーション管理部317が、ユーザの指示に基づいてMFP100内のアプリケーションを更新するときに行われる。以下の説明で、MFP100が実施する図12の処理は、FlashROM211に格納されたプログラム401をCPU201がDRAM202に読み込んだ後、CPU201の演算処理として実施されることで実現される。
S1201にて、アプリケーション管理部317は、ユーザの指示に基づいて、拡張JAVAアプリケーション404を更新する。
S1202にて、アプリケーション管理部317は、更新したアプリケーションの情報をホワイトリスト管理部315に通知する。ホワイトリスト管理部315に通知するプログラムの情報としては、少なくともアプリケーションのファイルパス、アプリケーションのタイプが含まれる。
S1203にて、ホワイトリスト管理部315は、アプリケーション管理部317から通知された拡張JAVAアプリケーション404のハッシュ値を計算し、ホワイトリスト405を更新する。
S1204にて、ホワイトリスト管理部315は、アプリケーション管理部317から通知されたアプリケーションのファイルパス601と、そのアプリケーションのタイプ602を用いてアプリケーション管理テーブル406を更新する。そして、本処理フローを終了する。
(検証処理)
図7を用いて、プログラム検証部319がプログラム401を検証する処理フローを説明する。この処理は、プログラム実行要求部311がプログラム401の実行要求を行うたびに行われる。以下の説明で、MFP100が実施する図7の処理は、FlashROM211に格納されたプログラムをCPU201がDRAM202に読み込んだ後、CPU201の演算処理として実施することで実現される。
図7を用いて、プログラム検証部319がプログラム401を検証する処理フローを説明する。この処理は、プログラム実行要求部311がプログラム401の実行要求を行うたびに行われる。以下の説明で、MFP100が実施する図7の処理は、FlashROM211に格納されたプログラムをCPU201がDRAM202に読み込んだ後、CPU201の演算処理として実施することで実現される。
S701にて、プログラム実行要求部311は、FlashROM211上に配置されたプログラム401の実行要求をカーネル318に対して行う。
S702にて、プログラム検証部319は、プログラム実行要求部311によるプログラムの実行要求をフックする。S703以降の処理にて、プログラム検証部319は、ホワイトリスト405を用いて、実行要求されているプログラムの検証を行う。
S703にて、プログラム検証部319は、ホワイトリスト405に記載されているプログラムのファイルパス501の中に、実行要求されたプログラムのファイルパスと一致するものがあるか否かを判定する。例えば、実行要求されたプログラムのファイルパスが「/bin/cat」であった場合、図5に示されるホワイトリスト405の例のファイルパス501の中に一致するものがある。そのため、プログラム検証部319は、「/bin/cat」の検証は成功したと判定する。実行要求されたプログラムのファイルパスと一致するものがあると判定された場合(S703にてYES)S704へ進み、一致するものがないと判定された場合(S703にてNO)S707へ進む。
S704にて、プログラム検証部319は、実行要求されたプログラムのハッシュ値を計算する。
S705にて、プログラム検証部319は、ホワイトリスト405上に記載されている、実行要求されたプログラムのハッシュ値502と、S704にて計算されたハッシュ値との比較を行う。ここでハッシュ値が一致する場合とは、プログラムに対する改ざん等が行われておらず、そのプログラムが正当なものであると判定できる。一方、ハッシュ値が一致しない場合とは、改ざん等が行われ、プログラムに何らかの変更が生じていると判定できる。ハッシュ値が一致した場合(S705にてYES)S706へ進み、一致しない場合(S705にてNO)S707へ進む。
S706にて、MFP100は、実行要求されたプログラムを実行する。そして、本処理フローを終了する。
S707にて、プログラム検証部319は、プログラム実行要求部311に対してエラーを通知し、プログラムを実行しないように指示する。
S708にて、プログラム検証部319は、ログファイル407に検証に失敗したことと、検証に失敗したプログラムの情報を書き込む。検証失敗したプログラムの情報には、少なくともファイルパス、ファイルの配置場所が含まれる。ログファイル407に記録されるログの例を挙げると、「Failed Verification! /bin/ls」である。ここでの文字列「Failed Verification!」は検証に失敗したことを示す文字列である。この文字列は一例であり、他の文字列が用いられてもよい。
(監視処理)
図8を用いて、MFP100における一連の監視処理の処理フローを説明する。以下の説明で、MFP100が実施する図8の処理は、FlashROM211に格納されたプログラムをCPU201がDRAM202に読み込んだ後、CPU201の演算処理として実施することで実現される。
図8を用いて、MFP100における一連の監視処理の処理フローを説明する。以下の説明で、MFP100が実施する図8の処理は、FlashROM211に格納されたプログラムをCPU201がDRAM202に読み込んだ後、CPU201の演算処理として実施することで実現される。
S801にて、ログファイル監視部312は、ログファイル407の監視を開始する。
S802にて、ログファイル監視部312は、ログファイル407の更新をポーリングによって定期的に監視する。ここでの定期的な期間は、特に限定するものではなく、予め規定されているものとする。
S803にて、ログファイル監視部312は、ポーリングの結果、ログファイル407が更新されたか否かを判定する。ログファイル407の更新を検知した場合(S803にてYES)、ログファイル監視部312は、ログファイル解析部313にログファイル407の解析を依頼し、S804へ進む。ログファイル407の更新を検知しなかった場合(S803にてNO)S802へ戻り、次のポーリングまで待機する。
S804にて、ログファイル解析部313は、ログファイル407の更新されたログを検出する。ログファイル解析部313は、検出されたログの中から検証に失敗したプログラムのファイルパスを取得する。ログファイル407に記録されるログの例を挙げると、「Failed Verification! /bin/ls」といったログが記載されている。ログファイル解析部313は、ログから検証に失敗したプログラムのファイルパスを抽出する場合、文字列「Failed Verification!」の後のファイルパスを抽出する。
S805にて、ログファイル解析部313は、取得したプログラムのファイルパスに基づき、プログラムの種類を、未知のプログラム、JAVAアプリケーション、拡張JAVAアプリケーション、機知の実行可能プログラムのいずれであるかを特定する。プログラムの種類を特定する方法については図9を用いて後述する。ログファイル解析部313が特定したプログラムの種類は、システム制御部314に通知される。
S806以降の処理にて、システム制御部314は、ログファイル解析部313から通知されたプログラムの種類に応じてMFP100の利用可能な機能を制限する。そして、システム制御部314は、利用を制限された機能を再度利用可能にするために必要なユーザの作業をMFP100の操作部102の画面上に表示してユーザに通知する。
S806にて、システム制御部314は、ログファイル解析部313から通知されたプログラムの種類が「未知のプログラム」か否かを判定する。未知のプログラムであった場合(S806にてYES)S807へ進み、未知のプログラムでない場合(S806にてNO)S809へ進む。
S807にて、システム制御部314は、機能を制限しないように制御を行う。
S808にて、システム制御部314は、MFP100の操作部102の画面上に未知のプログラムが検出されたことをユーザに対して通知する。これは、MFP100に必要な要素ではないプログラムが検出された状態であり、MFP100の通常動作には影響がないためである。そして、本処理フローを終了する。
S809にて、システム制御部314は、ログファイル解析部313から通知されたプログラムの種類が「JAVAアプリケーション」であるか否かを判定する。JAVAアプリケーションであった場合(S809にてYES)S810へ進み、JAVAアプリケーションでない場合(S809にてNO)S812へ進む。
S810にて、システム制御部314は、MFP100の機能を全て停止するように制御を行う。
S811にて、システム制御部314は、MFP100の操作部102の画面上に、JAVAアプリケーション403が改ざんされたことと再起動を促す画面を表示する。ここでの状態は、MFP100に必要な要素であるプログラムが改ざんされた状態である。しかし、MFP100内の保護された領域(保護領域408)にJAVAアプリケーション403のコピーが存在しており、ユーザがMFP100の再起動することでMFP100が起動途中にそのコピーを基にした復旧が可能であるため再起動を促している。この時、ユーザがMFP100を再起動させれば、MFP100は自動的にJAVAアプリケーション403の復旧を行い、MFP100が全機能を再び利用可能となる。
図17は、S811にて操作部102に表示される、JAVAアプリケーション403の改ざんを検知した場合に表示されるエラー画面1701の例である。エラー画面1701は、システム停止エラーとしてユーザにJAVAアプリケーション403が改ざんされ、システムを停止したことを通知している。また、エラー画面1701から通常の機能実行画面に遷移することはできず、ユーザはMFP100を利用することはない。再起動ボタン1702が押下されると、MFP100の再起動が実施される。その結果、MFP100において、改ざん前のJAVAアプリケーション403を用いて復旧される。
S812にて、システム制御部314は、ログファイル解析部313から通知されたプログラムの種類が「拡張JAVAアプリケーション」か否かを判定する。拡張JAVAアプリケーションであった場合(S812にてYES)S813へ進み、拡張JAVAアプリケーションでない場合(S812にてNO)S815へ進む。
S813にて、システム制御部314は、ログファイル解析部313から通知されたプログラム(拡張JAVAアプリケーション)の機能の利用を制限するように制御する。
S814にて、システム制御部314は、拡張JAVAアプリケーション404を再度インストールすることを促す画面を、MFP100の操作部102の画面上に表示する。ここでの状態は、対象の拡張JAVAアプリケーションの再インストールを行えば復旧可能である状態である。この時、ユーザが対象の拡張JAVAアプリケーション404を再インストールすることにより、MFP100が対象の拡張JAVAアプリケーション404を利用可能にする。
S815にて、システム制御部314は、MFP100の機能を全て停止するように制御を行う。
S816にて、システム制御部314は、ユーザに対してMFP100のファームウェアの入れ替えを促す画面を、操作部102の画面上に表示する。ここでの状態は、MFP100に必要な部品となっているプログラムが改ざんされている状態である。この状態のままMFP100を動作させ続けるとセキュリティ上の問題を招く恐れがあり、なおかつファームウェアの入れ替えのみでしかMFP100を復旧させることができない。なお、この時に改ざんされているプログラムの種類は、ホワイトリスト405に記載のある実行可能プログラムである。
図16は、S816にて操作部102に表示される、ホワイトリスト405に記載のある実行可能プログラムの改ざんを検知した場合に表示されるエラー画面1601である。このエラー画面1601は、ファームウェアが改ざんされ、システムを停止したことをシステム停止エラーとしてユーザに通知している。また、このエラー画面1601から通常の機能実行画面に遷移することはできず、ユーザはMFP100を利用することはない。
(特定処理)
図9を用いて、MFP100のログファイル解析部313がログファイル407の解析を行いプログラムの種類を特定する処理フローを説明する。この処理は、図8のS805の工程に対応し、ログファイル監視部312がログファイルの更新をログファイル解析部313に通知したときに行われる。以下の説明で、MFP100が実施する図9の処理は、FlashROM211に格納されたプログラムをCPU201がDRAM202に読み込んだ後、CPU201の演算処理として実施することで実現される。
図9を用いて、MFP100のログファイル解析部313がログファイル407の解析を行いプログラムの種類を特定する処理フローを説明する。この処理は、図8のS805の工程に対応し、ログファイル監視部312がログファイルの更新をログファイル解析部313に通知したときに行われる。以下の説明で、MFP100が実施する図9の処理は、FlashROM211に格納されたプログラムをCPU201がDRAM202に読み込んだ後、CPU201の演算処理として実施することで実現される。
S901にて、ログファイル解析部313は、検出されたログの中から検証に失敗したプログラムのファイルパスを取得する。ログファイル407に記録されるログの例を挙げると、文字列「Failed Verification! /bin/ls」といったログが記載されている。ログファイル解析部313は、ログから検証に失敗したプログラムのファイルパスを抽出する場合、文字列「Failed Verification!」の後に続くファイルパス「/bin/ls」を抽出する。
S902にて、ログファイル解析部313は、ログファイル407から抽出したファイルパスがホワイトリスト405に記載されているファイルパスの中に一致するものがあるか否かを確認する。ログファイル407から抽出したファイルパスがホワイトリスト405に記載されているファイルパスの中に一致するものがなかった場合(S902にてNO)S903へ進み、一致するものがあった場合(S902にてYES)S904へ進む。
S903にて、ログファイル解析部313は、プログラムの種類を「未知のプログラム」と決定する。例えば、ファイルパス「/bin/ls」は、図5のホワイトリスト405に記載されているファイルパスの中にないため、ログファイル解析部313は「/bin/ls」を未知のプログラムと決定する。そして、本処理フローを終了する。
S904にて、ログファイル解析部313は、対象のプログラムがjarファイルであるか否かを判定する。具体的には、プログラムの拡張子が「.jar」であるか否かを確認し、「.jar」である場合はjarファイルと判定される。jarファイルでないと判定された場合は(S904にてNO)S905へ進み、jarファイルであると判定された場合は(S904にてYES)S906へ進む。
S905にて、ログファイル解析部313は、プログラムの種類を「既知の実行可能プログラム」と決定する。ここでの既知とは、ホワイトリスト405に記載されていることを意味する。そして、本処理フローを終了する。
S906にて、ログファイル解析部313は、アプリケーション管理テーブル406を参照してファイルパスからアプリケーションのタイプを特定する。この時、ログファイル解析部313は、ログファイル407から抽出したプログラムのファイルパスをアプリケーション管理テーブル406に記載されているファイルパスの中で一致するものを探索する。そして、ログファイル解析部313は、一致したファイルパスと対応しているアプリケーションのタイプをログファイル407から抽出したプログラムのファイルパスのアプリケーションのタイプとして決定する。
例えば、プログラムのファイルパスが「/home/a.jar」であった場合、図6のアプリケーション管理テーブル406の例を参照してファイルパス601が一致するもののアプリケーションのタイプ602は、「JAVAアプリケーション」となる。そのため、ログファイル解析部313は、「/home/a.jar」のタイプを「JAVAアプリケーション」であると決定する。
S907にて、ログファイル解析部313は、特定されたアプリケーションのタイプがJAVAアプリケーションか否かを判定する。JAVAアプリケーションであると判定された場合(S907にてYES)S909へ進み、そうでない場合は(S907にてNO)S908へ進む。
S908にて、ログファイル解析部313は、プログラムの種類を「拡張JAVAアプリケーション」と決定する。そして、本処理フローを終了する。
S909にて、ログファイル解析部313は、プログラムの種類を「JAVAアプリケーション」と決定する。そして、本処理フローを終了する。
以上、本実施形態により、プログラムの実行時に改ざんを検証するシステムにおいて、プログラムの検証を失敗した場合にも、セキュリティを保ちつつ可用性を確保してユーザがMFPを利用可能となる。
<第2の実施形態>
以下、本発明の第2の実施形態について説明する。本実施形態では、ログファイル解析部313がログファイル407から複数の更新されたログを検出した場合に、利用可能な機能を制御する方法について説明する。なお、第1の実施形態と重複する構成等については、ここでの詳細な説明は省略する。また、同じ処理等については、同じ参照番号を付して示す。
以下、本発明の第2の実施形態について説明する。本実施形態では、ログファイル解析部313がログファイル407から複数の更新されたログを検出した場合に、利用可能な機能を制御する方法について説明する。なお、第1の実施形態と重複する構成等については、ここでの詳細な説明は省略する。また、同じ処理等については、同じ参照番号を付して示す。
(処理フロー)
図18は、本実施形態に係る監視処理を示す。図18の処理は、第1の実施形態にて述べた図8の処理フローのうち、S803とS806の間に行われる処理であり、それ以外は第1の実施形態と同じ構成および処理である。ログファイルが更新されたことを検知した場合(S803にてYES)、S1801へ進む。
図18は、本実施形態に係る監視処理を示す。図18の処理は、第1の実施形態にて述べた図8の処理フローのうち、S803とS806の間に行われる処理であり、それ以外は第1の実施形態と同じ構成および処理である。ログファイルが更新されたことを検知した場合(S803にてYES)、S1801へ進む。
S1801にて、ログファイル解析部313は、ログファイル407の中から更新された一回の検証分のログに当たる一行を抽出する。
S804にて、ログファイル解析部313は、抽出されたログの中から検証に失敗したプログラムのファイルパスを取得する。
S805にて、ログファイル解析部313は、取得したプログラムのファイルパスに基づき、プログラムの種類を、未知のプログラム、JAVAアプリケーション、拡張JAVAアプリケーション、機知の実行可能プログラムのいずれであるかを特定する。プログラムの種類を特定する方法については、第1の実施形態にて図9を用いて説明したものと同様となる。
S1802にて、ログファイル解析部313は、検証に失敗したプログラムの種類がホワイトリスト405に記載のある実行可能ファイルか否かを判定する。ホワイトリスト405に記載のある実行可能ファイルであると判定した場合(S1802にてYES)、プログラムの種類をシステム制御部314へ通知し、図8のS806へ進む。ホワイトリスト405に記載のある実行可能ファイルでないと判定した場合は(S1802にてNO)S1803へ進む。
S1803にて、ログファイル解析部313は、プログラムの種類をDRAM202に記憶する。
S1804にて、ログファイル解析部313は、ログファイル407の更新されたログを全て解析したか否かを判定する。全て解析したと判定された場合は(S1804にてYES)S1805へ進み、全て解析していないと判定された場合は(S1804にてNO)S1801へ戻る。
S1805にて、ログファイル解析部313は、S1803で記憶した全てのログに対して解析されたファイルの種類を取得する。
S1806にて、ログファイル解析部313は、前回、システム制御部314に通知したファイルの種類を取得する。なお、ログファイル解析部313からシステム制御部314に通知したプログラムの種類に関する情報は、履歴として保持されているものとする。
S1807にて、ログファイル解析部313は、S1805とS1806で取得したファイルの種類について、システム制御部314に通知する優先度に基づいて比較し、最も優先度が高いファイルの種類を決定する。ここでの優先度は、予め定義され、保持されているものとする。その後、ログファイル解析部313は、S1807にて決定したプログラムの種類をシステム制御部314へ通知し、図8のS806へ進む。
本実施形態にて用いられる優先度について説明する。本実施形態に係る優先度は、プログラムの種類に応じて定義されている。図18に示すフローの場合、ホワイトリスト405に記載のある実行可能プログラムに改ざんが見つかった場合を最も優先度が高いものとして扱っている。そのため、S1802にてプログラムが上記の種類である場合に、即座に通知を行っている。その他のプログラムの種類に対する優先度としては、例えば、JAVAアプリケーション>拡張JAVAアプリケーション>未知のプログラム、としてよい。この優先度の関係は、例えば、MFP100のセキュリティと可用性の要求に応じて決定してよい。言い換えると、例えば、ログが示すプログラムの種類のうち、最も制限の広い(厳しい)種類の対応を行うようにしてよい。
以上、本実施形態により、複数のプログラムの検証に失敗し、ログファイルに複数のログを検出した場合に、検証に失敗したプログラムの種類によって制限する機能を優先度によって決定する。これにより、セキュリティを保ちつつ、可用性を確保してユーザがMFPを利用可能となる。
<第3の実施形態>
以下、本発明の第3の実施形態について説明する。本実施形態では、ユーザがログインしている時のログファイル更新監視時間の動的変更処理について説明する。なお、第1の実施形態と重複する構成等については、ここでの詳細な説明は省略する。また、同じ処理等については、同じ参照番号を付して示す。
以下、本発明の第3の実施形態について説明する。本実施形態では、ユーザがログインしている時のログファイル更新監視時間の動的変更処理について説明する。なお、第1の実施形態と重複する構成等については、ここでの詳細な説明は省略する。また、同じ処理等については、同じ参照番号を付して示す。
(処理フロー)
図19は、本実施形態に係る監視処理を示す。第1の実施形態にて述べた図8の処理フローとの差異は、S801とS802の間に行われるS1903の処理であり、それ以外は第1の実施形態と同じ構成および処理である。
図19は、本実施形態に係る監視処理を示す。第1の実施形態にて述べた図8の処理フローとの差異は、S801とS802の間に行われるS1903の処理であり、それ以外は第1の実施形態と同じ構成および処理である。
S801にて、ログファイル監視部312は、ログファイル407の監視を開始する。
S1901にて、ログファイル監視部312は、MFP100にユーザがログインしているか否かを判定する。ユーザがログインしていると判定された場合は(S1901にてYES)S1902へ進み、ログインしていないと判定された場合は(S1901にてNO)S1903へ進む。
S1902にて、ログファイル監視部312は、次回のポーリング時間を第1の間隔に設定する。そして、S802へ進む。
S1903にて、ログファイル監視部312は、ポーリング時間を第2の間隔に設定する。そして、S802へ進む。
ポーリング時間の設定に関して例を挙げると、ポーリング時間を第1の間隔に設定する場合は1秒とし、ポーリング時間を第2の間隔に設定する場合は第1の間隔よりも長い5秒とする。なお、ここでは、ポーリング時間として、第1の間隔と第2の間隔の2段階に設定する構成としたが、これに限定するものではない。例えば、間隔の上限と下限を定義しておき、段階的に所定の単位で間隔を長くしたり短くしたりするような制御を行ってもよい。なお、ポーリング時間の初期値はいずれの間隔であってもよい。
その後、S803にてログファイルが更新されていないと判定された場合には(S803にてNO)S1901へ戻ることとなる。
以上、本実施形態により、第1の実施形態の効果に加え、ユーザがログインを行っている場合にログファイル407のポーリング期間を短く設定することで、改ざんが起こっていることを早期にユーザに通知することが可能となる。
<第4の実施形態>
以下、本発明の第4の実施形態について説明する。ログファイル407には、サイズの上限があり、大量のログが記録された場合、過去のログから順に消去される場合がある。このような構成において、プログラムが改ざんされていたとしてログが記録されていた場合でも、ログが消去されてしまう可能性がある。ログが解析前に消去されてしまうと、ユーザに対して適切な通知ができず、MFPのセキュリティや可用性の点からも問題である。
以下、本発明の第4の実施形態について説明する。ログファイル407には、サイズの上限があり、大量のログが記録された場合、過去のログから順に消去される場合がある。このような構成において、プログラムが改ざんされていたとしてログが記録されていた場合でも、ログが消去されてしまう可能性がある。ログが解析前に消去されてしまうと、ユーザに対して適切な通知ができず、MFPのセキュリティや可用性の点からも問題である。
そこで、本実施形態では、多数のプログラムの改ざんを検知し、ログファイル407に大量のログが記録された場合において、ログファイル407のポーリング期間の動的変更処理について説明する。なお、第1の実施形態と重複する構成等については、ここでの詳細な説明は省略する。また、同じ処理等については、同じ参照番号を付して示す。
(処理フロー)
図20は、本実施形態に係る監視処理を示す。図20の処理は、第1の実施形態にて述べた図8の処理フローとは並行して実施されてもよいし、図8の処理フローの一部として実行されてもよい。以下の説明では、図8の処理フローと並列に行われる場合を示す。図8の処理フローの一部として行われる場合には、例えば、図8のS801〜S803に代えて行われてよい。この場合、S2005およびS2006の処理の後、S804へ進む。
図20は、本実施形態に係る監視処理を示す。図20の処理は、第1の実施形態にて述べた図8の処理フローとは並行して実施されてもよいし、図8の処理フローの一部として実行されてもよい。以下の説明では、図8の処理フローと並列に行われる場合を示す。図8の処理フローの一部として行われる場合には、例えば、図8のS801〜S803に代えて行われてよい。この場合、S2005およびS2006の処理の後、S804へ進む。
S2001にて、ログファイル監視部312は、ログファイル407の監視を開始する。
S2002にて、ログファイル監視部312は、ログファイル407の更新をポーリングによって定期的に監視する。ここでの定期的な期間は、特に限定するものではなく、予め規定されているものとする。
S2003にて、ログファイル監視部312は、ポーリングの結果、ログファイル407が更新されたか否かを判定する。ログファイル407の更新を検知した場合(S2003にてYES)S2004へ進み、ログファイル407の更新を検知しなかった場合(S2003にてNO)S2002へ戻り、次の監視時間まで待機する。
S2004にて、ログファイル監視部312は、ログが更新された個数を確認し、更新されたログの数が、所定の閾値よりも多いか否かを判定する。ここでの所定の閾値として100件を例に挙げて説明する。更新されたログの数が100件以上である場合(S2004にてYES)S2005へ進み、100件よりも少ない場合は(S2004にてNO)S2006へ進む。
S2005にて、ログファイル監視部312は、次にポーリングする時間を短く設定する。そして、S2002へ戻り、次の監視時間まで待機する。ここでの設定は、例えば、現時点にて設定されているポーリング時間が半分(1/2)となるように設定してよい。もしくは、S2005にて判定した所定の閾値からの差分に応じて、設定するポーリング時間や、現設定に対する比率を変更してもよい。
S2006にて、ログファイル監視部312は、ポーリング時間を元に戻す。ここでの元のポーリング時間とは、初期値であってもよいし、前回のS2005の処理が行われる前の値であってもよい。そして、S2002へ戻り、次の監視時間まで待機する。
以上、本実施形態により、第1の実施形態の効果に加え、ログファイル407からログファイル解析部313が解析していないログの消去を防止可能になり、MFPの可用性が向上する。
<第5の実施形態>
以下、本発明の第5の実施形態について説明する。本実施形態では、多数のプログラムの改ざんを検知し、ログファイル407に大量のログが記録された場合において、ログファイル解析部313が解析していないログが上書きなどにより消失したことを検知した場合の制御処理について説明する。第4の実施形態と同様に、ログファイル407にはサイズの上限があり、そのサイズを超えた場合には、ログが上書きされるものとする。なお、第1の実施形態と重複する構成等については、ここでの詳細な説明は省略する。また、同じ処理等については、同じ参照番号を付して示す。
以下、本発明の第5の実施形態について説明する。本実施形態では、多数のプログラムの改ざんを検知し、ログファイル407に大量のログが記録された場合において、ログファイル解析部313が解析していないログが上書きなどにより消失したことを検知した場合の制御処理について説明する。第4の実施形態と同様に、ログファイル407にはサイズの上限があり、そのサイズを超えた場合には、ログが上書きされるものとする。なお、第1の実施形態と重複する構成等については、ここでの詳細な説明は省略する。また、同じ処理等については、同じ参照番号を付して示す。
(処理フロー)
図21は、本実施形態に係る監視処理を示す。図21の処理は、第1の実施形態にて述べた図8の処理フローとは並行して実施されてもよいし、図8の処理フローの一部として実行されてもよい。以下の説明では、図8の処理フローと並列に行われる場合を示す。
図21は、本実施形態に係る監視処理を示す。図21の処理は、第1の実施形態にて述べた図8の処理フローとは並行して実施されてもよいし、図8の処理フローの一部として実行されてもよい。以下の説明では、図8の処理フローと並列に行われる場合を示す。
S2101にて、ログファイル監視部312は、ログファイル407の監視を開始する。
S2102にて、ログファイル監視部312は、ログファイル407の更新をポーリングによって定期的に監視する。ここでの定期的な期間は、特に限定するものではなく、予め規定されているものとする。
S2103にて、ログファイル監視部312は、ポーリングの結果、ログファイル407が更新されたか否かを判定する。ログファイル407の更新を検知した場合(S2103にてYES)S2104へ進み、ログファイル407の更新を検知しなかった場合(S2103にてNO)S2102へ戻り、次の監視時間まで待機する。
S2104にて、ログファイル解析部313は、前回ポーリングした時の最後のログを取得する。ここでの最後のログに関する情報は、例えば、ポーリングを行った日時などの情報を記憶しておき、その情報に基づいて判定してよい。
S2105にて、ログファイル解析部313は、前回ポーリングした時の最後のログと一致するログがログファイル407にあるか否かを判定する。前回ポーリングした時の最後のログと一致するログがログファイル407にあった場合(S2105にてYES)S2102へ戻り、次の監視時間まで待機する。一致するログが無い場合(S2105にてNO)S2106へ進む。
S2106にて、システム制御部314は、MFP100の機能を全て停止するように制御を行う。
S2107にて、システム制御部314は、ユーザに対してMFP100のファームウェアの入れ替えを促す画面を、操作部102の画面上に表示する。S2102へ戻り、次の監視時間まで待機する。
本実施形態では、前回ログを解析した時の最後のログと一致するログがログファイル407になかった場合、ログファイル解析部313は、改ざんを検知した場合の最も優先度が高い処理を実施した例を示した。具体的には、システム制御部314が、MFP100を停止し、ユーザに対してファームウェアの入れ替えを実施するように通知する処理を行っている。なお、この処理に限定するものではなく、他の処理を行うような構成であってもよい。例えば、ユーザにログが消去され、セキュリティ上の問題が発生している旨の通知を行ってもよい。
大量にログファイル407の更新があり、ログファイル407からログファイル解析部313が解析していないログが上書きなどによって消失してしまう場合には、上書きによって消失したログにシステム全体に影響を及ぼすログがある可能性がある。これに対し本実施形態では、緊急性が高い状態であるものとして、優先度の高い制御処理を実施する。言い換えると、適用可能な制限のうち最も制限の広い(厳しい)制限を行う。これにより、MFPをセキュアに運用することが可能になる。
なお、本処理フローを図8の処理フローの一部として行われる場合には、例えば、図8のS801〜S803に代えて行われ、S2105にてYESの場合にS804へ進み、S2105にてNOの場合にS815へ進むように制御してよい。
以上、本実施形態では、第1の実施形態の効果に加え、ログファイル407から未処理のログが消失したことを確認した場合は、最も優先度の高い処理を実施することで、セキュリティを保ちつつ可用性を確保してユーザがMFPを利用可能となる。
<その他の実施形態>
本発明は上述の実施形態の1以上の機能を実現するプログラムをネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本発明は上述の実施形態の1以上の機能を実現するプログラムをネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
100…MFP、101…コントローラ部、102…操作部、103…画像形成部、104…画像読取部、110…クライアントPC、201…CPU、202…DRAM、211…FlashROM、220…ROM、301…コントローラソフト、319…カーネル
Claims (19)
- 機能を提供するための複数のプログラムを記憶部に保持し、当該複数のプログラムを実行可能な情報処理装置であって、
プログラムの実行要求を受け付けた際に、前記記憶部に保持された当該プログラムに対する改ざんの有無を検証する検証手段と、
前記検証手段による検証の結果、当該プログラムが改ざんされたものであると判定された際に、当該プログラムの情報をログとして記録する記録手段と、
前記記録手段にて記録されたログを定期的に監視する監視手段と、
前記監視手段にて前記ログの更新が行われたことを検知した場合、当該更新にて示されるプログラムの種類を解析する解析手段と、
前記解析手段にて解析されたプログラムの種類に応じて、前記情報処理装置にて利用可能な機能に対する制限およびユーザへの通知を行う制御手段と
を有することを特徴とする情報処理装置。 - 前記制御手段は、前記更新にて示されたプログラムの種類が、前記記憶部に保持されていたプログラムでないと前記解析手段にて解析された場合、前記情報処理装置にて利用可能な機能を制限せず、未知のプログラムがあることを通知することを特徴とする請求項1に記載の情報処理装置。
- 前記制御手段は、前記更新にて示されたプログラムの種類が、第1のプログラムであると前記解析手段にて解析された場合、前記情報処理装置にて利用可能なすべての機能を制限し、前記情報処理装置の再起動をユーザに促す通知を行い、
前記第1のプログラムは、前記記憶部とは異なる保護領域にコピーが保持されており、再起動により改ざん前の状態に復旧可能であることを特徴とする請求項1または2に記載の情報処理装置。 - 前記情報処理装置は、前記情報処理装置の機能を拡張するための第2のプログラムを実行可能であり、
前記制御手段は、前記更新にて示されたプログラムの種類が、前記第2のプログラムであると前記解析手段にて解析された場合、当該第2のプログラムの機能を制限し、当該第2のプログラムの再インストールをユーザに促す通知を行うことを特徴とする請求項1乃至3のいずれか一項に記載の情報処理装置。 - 前記制御手段は、前記更新にて示されたプログラムの種類が、第3のプログラムであると前記解析手段にて解析された場合、前記情報処理装置にて利用可能なすべての機能を制限し、当該第3のプログラムの再インストールをユーザに促す通知を行い、
前記第3のプログラムは、OS(Operating System)のプログラムおよび/または機能を提供する基本ソフトウェアであることを特徴とする請求項1乃至4のいずれか一項に記載の情報処理装置。 - 前記第3のプログラムは、ファームウェアであることを特徴とする請求項5に記載の情報処理装置。
- 前記プログラムの種類に応じて優先度が定義され、
前記解析手段は、前記監視手段にて複数のログが記録されたことを検知した場合、当該複数のログのうち、最も優先度が高いプログラムの種類を示すログを特定し、
前記制御手段は、前記特定されたログが示すプログラムの種類に基づいて、前記情報処理装置にて利用可能な機能の制限および通知を行うことを特徴とする請求項1乃至6のいずれか一項に記載の情報処理装置。 - 前記監視手段は、前記ログを定期的に監視する際のポーリング時間をユーザのログインの有無に応じて切り替えることを特徴とする請求項1乃至7のいずれか一項に記載の情報処理装置。
- 前記監視手段は、ユーザがログインしている場合には前記ポーリング時間を第1の間隔に設定し、ログインしていない場合には前記第1の間隔よりも長い第2の間隔に設定することを特徴とする請求項8に記載の情報処理装置。
- 前記監視手段は、前記ログを定期的に監視する際のポーリング時間を前記記録手段にて記録されたログの数に応じて切り替えることを特徴とする請求項1乃至7のいずれか一項に記載の情報処理装置。
- 前記監視手段は、前回のポーリングの後、前記記録手段にて記録されたログの数が所定の数よりも大きい場合、前記ポーリング時間を現時点のポーリング時間よりも短く設定することを特徴とする請求項10に記載の情報処理装置。
- 前記監視手段は、前記解析手段により解析されていないログが消去されたか否かを判定し、
前記制御手段は、解析されていないログが消去されたと前記監視手段にて判定された場合、前記情報処理装置にて利用可能なすべての機能を制限することを特徴とする請求項1乃至11のいずれか一項に記載の情報処理装置。 - 前記検証手段は、実行要求を受け付けたプログラムのハッシュ値を算出し、当該算出されたハッシュ値と、予め保持された前記プログラムのハッシュ値とを比較することにより、改ざんの有無を検証することを特徴とする請求項1乃至12のいずれか一項に記載の情報処理装置。
- 前記記憶部に保持される複数のプログラムそれぞれのハッシュ値を算出し、当該複数のプログラムと対応づけた一覧を管理する管理手段を更に有し、
前記検証手段は、前記一覧を用いて検証を行うことを特徴とする請求項13に記載の情報処理装置。 - 前記管理手段は更に、前記記憶部に保持される複数のプログラムそれぞれの種類を管理し、
前記解析手段は、前記管理手段にて管理された種類に基づき、前記ログにて示されるプログラムの種類を特定することを特徴とする請求項14に記載の情報処理装置。 - 前記記憶部に保持された複数のプログラムのうちのいずれかのプログラムを更新する更新手段を更に有し、
前記管理手段は、前記更新手段にてプログラムの更新が行われた際に、前記一覧を更新することを特徴とする請求項14または15に記載の情報処理装置。 - 前記情報処理装置は、複合機であることを特徴とする請求項1乃至16のいずれか一項に記載の情報処理装置。
- 機能を提供するための複数のプログラムを記憶部に保持し、当該複数のプログラムを実行可能な情報処理装置の制御方法であって、
プログラムの実行要求を受け付けた際に、前記記憶部に保持された当該プログラムに対する改ざんの有無を検証する検証工程と、
前記検証工程による検証の結果、当該プログラムが改ざんされたものであると判定された際に、当該プログラムの情報をログとして記録する記録工程と、
前記記録工程にて記録されたログを定期的に監視する監視工程と、
前記監視工程にて前記ログの更新が行われたことを検知した場合、当該更新にて示されるプログラムの種類を解析する解析工程と、
前記解析工程にて解析されたプログラムの種類に応じて、前記情報処理装置にて利用可能な機能に対する制限およびユーザへの通知を行う制御工程と
を有することを特徴とする情報処理装置の制御方法。 - 機能を提供するための複数のプログラムを記憶部に保持し、当該複数のプログラムを実行可能なコンピュータを、
プログラムの実行要求を受け付けた際に、前記記憶部に保持された当該プログラムに対する改ざんの有無を検証する検証手段、
前記検証手段による検証の結果、当該プログラムが改ざんされたものであると判定された際に、当該プログラムの情報をログとして記録する記録手段、
前記記録手段にて記録されたログを定期的に監視する監視手段、
前記監視手段にて前記ログの更新が行われたことを検知した場合、当該更新にて示されるプログラムの種類を解析する解析手段、
前記解析手段にて解析されたプログラムの種類に応じて、前記コンピュータにて利用可能な機能に対する制限およびユーザへの通知を行う制御手段
として機能させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018214138A JP2020086469A (ja) | 2018-11-14 | 2018-11-14 | 情報処理装置およびその制御方法、並びにプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018214138A JP2020086469A (ja) | 2018-11-14 | 2018-11-14 | 情報処理装置およびその制御方法、並びにプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2020086469A true JP2020086469A (ja) | 2020-06-04 |
Family
ID=70908144
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018214138A Pending JP2020086469A (ja) | 2018-11-14 | 2018-11-14 | 情報処理装置およびその制御方法、並びにプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2020086469A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11272075B2 (en) | 2019-06-27 | 2022-03-08 | Canon Kabushiki Kaisha | Information processing apparatus, information processing method, and storage medium |
JP2022051303A (ja) * | 2020-09-18 | 2022-03-31 | 株式会社東芝 | 情報処理装置、情報処理方法およびプログラム |
US11423139B2 (en) | 2019-06-27 | 2022-08-23 | Canon Kabushiki Kaisha | Information processing apparatus, information processing method, and storage medium for preventing unauthorized rewriting of a module |
-
2018
- 2018-11-14 JP JP2018214138A patent/JP2020086469A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11272075B2 (en) | 2019-06-27 | 2022-03-08 | Canon Kabushiki Kaisha | Information processing apparatus, information processing method, and storage medium |
US11423139B2 (en) | 2019-06-27 | 2022-08-23 | Canon Kabushiki Kaisha | Information processing apparatus, information processing method, and storage medium for preventing unauthorized rewriting of a module |
JP2022051303A (ja) * | 2020-09-18 | 2022-03-31 | 株式会社東芝 | 情報処理装置、情報処理方法およびプログラム |
JP7354074B2 (ja) | 2020-09-18 | 2023-10-02 | 株式会社東芝 | 情報処理装置、情報処理方法およびプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5293595B2 (ja) | コンピュータプログラム、更新システム、及びプログラム実行装置 | |
US20140082747A1 (en) | Information processing system, operating device, and program | |
US10298800B2 (en) | Information processing apparatus and control method thereof | |
JP6391439B2 (ja) | 情報処理装置、サーバ装置、情報処理システム、制御方法及びコンピュータプログラム | |
JP5268694B2 (ja) | ライセンス管理システム、画像形成装置およびライセンス管理方法 | |
JP2020086469A (ja) | 情報処理装置およびその制御方法、並びにプログラム | |
KR20180018351A (ko) | 정보 처리 장치, 정보 처리 방법, 및 저장 매체 | |
JP2019212114A (ja) | 情報処理装置、その制御方法およびプログラム | |
JP6165469B2 (ja) | 情報処理装置およびその制御方法、並びに、情報処理システム | |
US11681809B2 (en) | Information processing apparatus, control method, and storage medium | |
JP2023129643A (ja) | 情報処理装置、情報処理方法およびプログラム | |
JP6322976B2 (ja) | 情報処理装置及びユーザ認証方法 | |
AU2014276026B2 (en) | Information processing device, information processing method, and program | |
JP5150546B2 (ja) | 情報処理装置、操作履歴取得方法、コンピュータプログラム | |
JP6522906B2 (ja) | 情報処理システム、画像形成装置、設定状態管理方法及び設定状態管理プログラム | |
CN113157543A (zh) | 一种可信度量方法及装置、服务器、计算机可读存储介质 | |
US9128738B2 (en) | Information processing program and information processing method | |
JP2021140601A (ja) | 情報処理装置、その制御方法、及びプログラム | |
JP7282616B2 (ja) | 情報処理装置、情報処理方法およびプログラム | |
JP2017227991A (ja) | 管理システム、管理方法、及びプログラム | |
JP2022190970A (ja) | 情報処理装置、情報処理方法、およびプログラム | |
Halsey | Building a Robust and Secure PC Ecosystem | |
JP6617551B2 (ja) | 設定値管理装置、コンピュータ装置、方法およびプログラム | |
CN117113355A (zh) | 基本输入输出系统配置方法、系统、计算机设备和介质 | |
JP2022147763A (ja) | 情報処理装置及びプログラムの検証方法とプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20210103 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210113 |