(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-18
(45)【発行日】2024-10-28
(54)【発明の名称】情報処理装置、情報処理方法およびプログラム
(51)【国際特許分類】
G06F 21/12 20130101AFI20241021BHJP
G06F 21/64 20130101ALI20241021BHJP
【FI】
G06F21/12
G06F21/64
(21)【出願番号】P 2023122056
(22)【出願日】2023-07-26
(62)【分割の表示】P 2019120324の分割
【原出願日】2019-06-27
【審査請求日】2023-08-22
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】100126240
【氏名又は名称】阿部 琢磨
(74)【代理人】
【識別番号】100223941
【氏名又は名称】高橋 佳子
(74)【代理人】
【識別番号】100159695
【氏名又は名称】中辻 七朗
(74)【代理人】
【識別番号】100172476
【氏名又は名称】冨田 一史
(74)【代理人】
【識別番号】100126974
【氏名又は名称】大朋 靖尚
(72)【発明者】
【氏名】河津 鮎太
【審査官】上島 拓也
(56)【参考文献】
【文献】特開2006-053787(JP,A)
【文献】特開2018-136811(JP,A)
【文献】特開2009-259160(JP,A)
【文献】特開2018-124893(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/12
G06F 21/64
(57)【特許請求の範囲】
【請求項1】
稼働時の実行モジュールの実行時改ざん検知を行う情報処理装置であって、
前記実行モジュールが発行した実行要求を受け取る要求受信部と、
前記実行要求を発行した実行モジュールの改ざんを検知する改ざん検知部と、
前記改ざん検知部で改ざんを検知した場合、
前記実行要求を発行した実行モジュール
が特定モード用のモジュールか否かに応じて、前記情報処理装置のシステムを停止するか、前記実行要求を発行した実行モジュールの実行のみを禁止するかを選択して制御するエラー制御部と、を有することを特徴とする情報処理装置。
【請求項2】
前記エラー制御部は、前記実行モジュールの保存領域によって前記実行要求を発行した実行モジュールが用いられる起動モードを決定し、
決定した前記実行要求を発行した実行モジュールが用いられる起動モードと現在の起動モードが同じ場合は前記情報処理装置のシステムを停止し、
決定した前記実行要求を発行した実行モジュールが用いられる起動モードと現在の起動モードが異なる場合は前記実行要求を発行した実行モジュールの実行のみを禁止することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記エラー制御部はさらに、前記改ざん検知部で用いられるホワイトリストの改ざんが検知された場合、前記ホワイトリストの保存領域に応じて、
前記情報処理装置のシステムを停止するか、前記実行要求を発行した実行モジュールの実行のみを禁止するかを選択して制御することを特徴とする請求項1または請求項2に記載の情報処理装置。
【請求項4】
ホワイトリストによる稼働時の実行モジュールの実行時改ざん検知を行う情報処理装置であって、
前記実行モジュールが発行した実行要求を受け取る要求受信部と、
前記実行要求を受けて前記ホワイトリストの改ざんを検知する第1の改ざん検知部と、
前記第1の改ざん検知部で改ざんなしと判定されたホワイトリストを用い前記実行要求を
発行した実行モジュールの改ざんを検知する第2の改ざん検知部と、
前記第2の改ざん検知部で改ざんを検知した場合、
前記実行要求を発行した実行モジュールの種類に応じて、前記情報処理装置のシステムを停止するか、前記実行要求を発行した実行モジュールの実行のみを禁止するかを選択して制御するエラー制御部と、前記第1の改ざん検知部でホワイトリストの改ざんを検知した場合、前記情報処理装置が正常であるか否かを確認することでホワイトリストの再生成を行うホワイトリスト生成部と、を有することを特徴とする情報処理装置。
【請求項5】
前記ホワイトリスト生成部は、前記情報処理装置が正常であると確認できた場合にホワイトリストを再生成し、正常であると確認できなかった場合には前記情報処理装置のシステム停止または前記実行要求を発行した実行モジュールの実行のみを禁止することを特徴とする請求項4に記載の情報処理装置。
【請求項6】
前記情報処理装置はさらに、前記第1の改ざん検知部または前記第2の改ざん検知部で改ざんを検知したことを記録してあるログファイルを確認することで、
前記情報処理装置が正常であるか否かを確認するログ確認部を有し、
前記ホワイトリスト生成部は、前期ログ確認部を利用することで前記情報処理装置が正常であるか否かを確認することを特徴とする請求項4または請求項5に記載の情報処理装置。
【請求項7】
前記情報処理装置はさらに、前記情報処理装置の起動時に順に起動されるモジュールの改ざんを検知することで、前記情報処理装置が正常であるか否かを確認する起動時検証部を有することを特徴とする請求項4または請求項5のいずれか1項に記載の情報処理装置。
【請求項8】
前記情報処理装置はさらに、耐タンパーなセキュリティチップであるTPMを具備し、前記TPMに保存された前記情報処理装置の起動時に順に起動されるモジュールのハッシュ値を外部サーバで検証することで、前記情報処理装置が正常であるか否かを確認する機器証明部を有することを特徴とする請求項4または請求項5のいずれか1項に記載の情報処理装置。
【請求項9】
稼働時の実行モジュールの実行時改ざん検知を行う情報処理装置を具備する情報処理方法であって、
前記実行モジュールが発行した実行要求を受け取る要求受信工程と、
前記実行要求を発行した実行モジュールの改ざんを検知する改ざん検知工程と、
前記改ざん検知工程で改ざんを検知した場合、
前記実行要求を発行した実行モジュール
が特定モード用のモジュールか否かに応じて、
前記情報処理装置のシステムを停止するか、前記実行要求を発行した実行モジュールの実行のみを禁止するかを選択して制御するエラー制御工程と、を有することを特徴とする情報処理方法。
【請求項10】
ホワイトリストによる稼働時の実行モジュールの実行時改ざん検知を行う情報処理装置を具備する情報処理方法であって、
前記実行モジュールが発行した実行要求を受け取る要求受信工程と、
前記実行要求を受けて前記ホワイトリストの改ざんを検知する第1の改ざん検知工程と、
前記第1の改ざん検知工程で改ざんなしと判定されたホワイトリストを用い前記実行要求を発行した実行モジュールの改ざんを検知する第2の改ざん検知工程と、
前記第2の改ざん検知工程で改ざんを検知した場合、
前記実行要求を発行した実行モジュールの種類に応じて、
前記情報処理装置のシステムを停止するか、前記実行要求を発行した実行モジュールの実行のみを禁止するかを選択して制御するエラー制御工程と、
前記第1の改ざん検知工程でホワイトリストの改ざんを検知した場合、前記情報処理装置が正常であるか否かを確認することでホワイトリストの再生成を行うホワイトリスト生成工程とを有すること、を特徴とする情報処理方法。
【請求項11】
コンピュータを、
稼働時の実行モジュールの実行時改ざん検知を行う情報処理装置であって、
前記実行モジュールが発行した実行要求を受け取る要求受信部と、
前記実行要求を発行した実行モジュールの改ざんを検知する改ざん検知部と、
前記改ざん検知部で改ざんを検知した場合、
前記実行要求を発行した実行モジュール
が特定モード用のモジュールか否かに応じて、前記情報処理装置のシステムを停止するか、前記実行要求を発行した実行モジュールの実行のみを禁止するかを選択して制御するエラー制御部と、を有することを特徴とする情報処理装置として機能させるためのプログラム。
【請求項12】
コンピュータを、
ホワイトリストによる稼働時の実行モジュールの実行時改ざん検知を行う情報処理装置であって、
前記実行モジュールが発行した実行要求を受け取る要求受信部と、
前記実行要求を受けて前記ホワイトリストの改ざんを検知する第1の改ざん検知部と、
前記第1の改ざん検知部で改ざんなしと判定されたホワイトリストを用い前記実行要求を発行した実行モジュールの改ざんを検知する第2の改ざん検知部と、
前記第2の改ざん検知部で改ざんを検知した場合、
前記実行要求を発行した実行モジュールの種類に応じて、前記情報処理装置のシステムを停止するか、前記実行要求を発行した実行モジュールの実行のみを禁止するかを選択して制御するエラー制御部と、前記第1の改ざん検知部でホワイトリストの改ざんを検知した場合、前記情報処理装置が正常であるか否かを確認することでホワイトリストの再生成を行うホワイトリスト生成部と、を有することを特徴とする情報処理装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、改ざん検知を行う情報処理装置、情報処理方法およびプログラムに関する。
【背景技術】
【0002】
情報処理装置を制御するプログラム(以下、モジュールもしくは実行モジュールと呼称する場合がある)を第三者が不正な方法で改ざんし、情報処理装置内の情報資産を盗む攻撃や、モジュールが改ざんされた情報処理装置を踏み台にする攻撃が問題になっている。このような攻撃を防止するために、情報処理装置内のモジュールが第三者によって改ざんされていないことを検証する方法が考案されている。
【0003】
ユーザが情報処理装置によって実現される機能を利用するときに情報処理装置内のモジュールが改ざんされていないことを保証するために、当該機能を実現するモジュールの実行の直前に完全性を検証する必要がある。
【0004】
特許文献1では、モジュールの実行要求を受け、モジュールのハッシュ値を計算し、ホワイトリストと比較し、一致する場合のみモジュールの起動を行っている。ホワイトリストとは、起動が許可されたモジュールの一覧を示すリストであり、当該モジュールの改ざんを検知するために、モジュールごとに正常なモジュールのハッシュ値を正解ハッシュ値として保持している。稼働率を向上させるために、ホワイトリストに未登録のモジュールまたは拡張JAVA(登録商標)アプリケーションの改ざんを検知した場合、当該モジュールの実行を禁止するだけで、システムは停止しないので情報処理装置を継続利用できる。一方、それ以外のモジュールは、システムの正常稼働に影響するため、システムを停止し、稼働停止する。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、特許文献1では、情報処理装置の起動モードを考慮しないため、現在の起動モードの機能には影響ないモジュールの改ざんを検知した場合でも、システムを停止するため、稼働率が下がる。例えば、情報処理装置の一例である画像形成装置MFP(Multi-Functional Peripheral:複合機)は、通常起動モード(STDモード)とアップデート用起動モード(SAFEモード)とがある。それぞれの起動モード用のモジュールが存在する。特許文献1の場合、STDモードで起動している際に、SAFEモード用のモジュールの改ざんを検知した場合でも、STDモードの機能には影響がないにも関わらず、システムを停止するため、稼働率が下がる。本発明は、上記課題を鑑みてなされたものであり、ホワイトリストを用いた実行モジュール検証で改ざんを検知する際の稼働率の低下を防止することを目的とする。
【課題を解決するための手段】
【0007】
本発明は、稼働時の実行モジュールの実行時改ざん検知を行う情報処理装置であって、前記実行モジュールが発行した実行要求を受け取る要求受信部と、前記実行要求を発行した実行モジュールの改ざんを検知する改ざん検知部と、前記改ざん検知部で改ざんを検知した場合、前記実行要求を発行した実行モジュールが特定モード用のモジュールか否か応じて、前記情報処理装置のシステムを停止するか、前記実行要求を発行した実行モジュールの実行のみを禁止するかを選択して制御するエラー制御部と、を有することを特徴とする。
【発明の効果】
【0008】
本発明によれば、複数の起動モードを有する情報処理装置において、現在の起動モードの機能には影響ないモジュールの改ざんを検知した場合、システムは止めず、当該モジュールの実行のみを防止するため、セキュリティを維持しつつ、稼働率を向上できる。
【図面の簡単な説明】
【0009】
【
図1】本発明に係わるMFPとPCの接続形態を示すブロック構成図。
【
図2】実施例1のMFPのコントローラ部の内部構成図。
【
図3】実施例1のMFPのコントローラ内で実行されるソフトウェアのブロック構成図。
【
図4】実施例2のMFPのコントローラ内で実行されるソフトウェアのブロック構成図。
【
図7】実施例1のMFP側の処理を実施するフローチャート。
【
図8】実施例1の変形例のMFP側の処理を実施するフローチャート。
【
図9】実施例2のMFP側の処理を実施するフローチャート。
【
図10】実施例2のホワイトリスト再生成処理のMFP側の処理を実施するフローチャート。
【
図11】実施例2のMFPのコントローラ部の内部構成図。
【
図12】モジュール停止時のエラー表示画面構成図。
【発明を実施するための形態】
【0010】
以下、本発明にかかる実施例の情報処理を図面を参照して詳細に説明する。本実施例では、情報処理装置がモジュールを実行するときの実行時モジュール検証処理、及び検証失敗時の情報処理装置の制御処理について説明する。本書の実施例では情報処理装置の例として画像形成装置であるMFPについて記述するが、本発明は複合機以外の情報処理装置にも適用可能な技術である。
【0011】
(実施例1)
(実施例1の装置構成)
図1のブロック図により本発明に係るMFPとクライアントPCの接続形態を説明する。
【0012】
MFP100とクライアントPC110はLAN120を介して接続されている。MFP100はユーザとの入出力を行う操作部102を有する。MFP100は電子データを紙媒体に出力するプリンタ部103を有する。MFP100は紙媒体を読み込み電子データに変換するスキャナ部104を有する。操作部102とプリンタ部103とスキャナ部104はコントローラ部101に接続され、コントローラ部101の制御に従い複合機としての機能を実現する。クライアントPC110はMFP100に対してプリントジョブの送信といった処理を行う。
【0013】
図2はMFPのコントローラ部101の詳細を示すブロック図である。CPU201はコントローラ内の主な演算処理を行う。CPU201はバスを介してDRAM202と接続される。DRAM202はCPU201が演算する過程で演算命令を表すプログラムデータや、処理対象のデータを一時的に配置するための作業メモリとしてCPU201によって使用される。CPU201はバスを介してI/Oコントローラ203と接続される。I/Oコントローラ203はCPU201の指示に従い各種デバイスに対する入出力を行う。I/Oコントローラ203にはSATA(Serial Advanced Technology Attachment)I/F205が接続され、その先にFlashROM211が接続される。CPU201はFlashROM211をMFPの機能を実現するためのプログラム、およびドキュメントファイルを永続的に記憶するために使用する。I/Oコントローラ203にはネットワークI/F204が接続され、ネットワークI/F204の先には、有線LANデバイス210が接続される。
【0014】
CPU201はネットワークI/F204を介して有線LANデバイス210を制御することで、LAN120上の通信を実現する。I/Oコントローラ203にはパネルI/F206が接続され、CPU201はパネルI/F206を介して操作部102に対するユーザ向けの入出力を実現する。I/Oコントローラ203にはプリンタI/F207が接続され、CPU201はプリンタI/F207を介してプリンタ部103を利用した紙媒体の出力処理を実現する。I/Oコントローラ203にはスキャナI/F208が接続され、CPU201はスキャナI/F208を介してスキャナ部104を利用した原稿の読み込み処理を実現する。I/Oコントローラ203にはUSB I/F209が接続され、USB I/F209に接続された任意の機器の制御を行う。ROM220はCPU201とバスで接続されていて、後述するBIOS(Basic Input Output System)360を実現する制御プログラムを記憶している。
【0015】
コピー機能を実施する場合は、CPU201がSATA I/F205を介してFlashROM211からプログラムデータ(モジュールデータ)をDRAM202に読み込む。CPU201がDRAM202に読み込まれたプログラム(モジュール)に従いパネルI/F206を介して操作部102に対するユーザからのコピー指示を検出する。CPU201はコピー指示を検出するとスキャナI/F208を介してスキャナ部104から原稿を電子データとして受け取りDRAM202に格納する。CPU201はDRAM202に格納した画像データに対して出力に適した色変換処理などを実施する。CPU201はDRAM202に格納した画像データをプリンタI/F207を介してプリンタ部103に転送し、紙媒体への出力処理を実施する。
【0016】
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に転送し、紙媒体への出力処理を実施する。
【0017】
以下、本実施例における、機能構成及び実行時改ざん検知処理フローについて説明する。
【0018】
(実施例1の機能構成)
図3のブロック図により実施例1のMFPのコントローラ部101で実行されるソフトウェアが実現する機能構成例を説明する。なお、コントローラ部101で実行されるソフトウェアは全て、CPU201が実行する。
【0019】
CPU201は、ROM220に記憶されたBIOS360を実行する。CPU201は、FlashROM211に記憶された、ローダ370、initrd380、コントローラソフト300をDRAM202に読み込んだ後に実行する。BIOS360はI/Oコントローラ203やDRAM202をCPU201が制御するための基本処理を実行する。さらにBIOS360はFlashROM211からローダ370を読み込み、開始する処理を含む。ローダ370はFlashROM211から後述する起動モードに応じたカーネル390、initrd380を読み込み、開始する処理を実行する。initrd380はFlashROM211からコントローラソフト300を読み込み、開始する処理を実行する。
【0020】
操作制御部301は、操作部102にユーザ向けの画面イメージを表示、およびユーザ操作の検知と画面上に表示したボタン等の画面部品に紐づけられた処理を実行する。
【0021】
データ記憶部302は、他の制御部からの要求でデータをFlashROM211に記憶、および読み出しを行う。例えば、ユーザが何らかの機器設定を変更したい場合は、操作部102にユーザが入力した内容を操作制御部301が検知し、操作制御部301からの要求でデータ記憶部302が設定値としてFlashROM211に保存する。
【0022】
ジョブ制御部303は、他の制御部からの指示に従って、ジョブ実行の制御を行う。
【0023】
画像処理部304は、ジョブ制御部303からの指示に従って、画像データを用途ごとに適した形式に加工する。
【0024】
印刷処理部305は、ジョブ制御部303からの指示に従い、プリンタI/F207を介して、紙媒体に画像を印刷し出力する。
【0025】
読み取り処理部306は、ジョブ制御部303からの指示に従い、スキャナI/F208を介して、設置された原稿を読み込む。
【0026】
ネットワーク制御部307は、データ記憶部302に記憶された設定値に従い、システム起動時や、設定変更検出時にIPアドレスなどネットワーク設定をTCP/IP制御部308に行う。
【0027】
TCP/IP制御部308は、他の制御からの指示に従い、ネットワークI/F204を介して、ネットワークパケットの送受信処理を行う。
【0028】
USB制御部309は、USB I/F209を制御し、USB接続された任意の機器の制御を行う。
【0029】
実行要求受信部310は、MFP100の稼働時に後述するFlashROM211上に配置されるモジュールA502及びモジュールB512の実行要求を受信する。ここでMFP100の稼働時とは、BIOS360、ローダ370、initrd380、カーネル390、及びコントローラソフト300が正常に起動し、MFP100の機能を提供可能になった状態のことをいう。つまり、実行要求受信部310は、MFP100の稼働時に適宜実行されるモジュールの実行要求を受信する機能を持つ。
【0030】
第1の改ざん検知部311は、後述する
図5のFlashROM211上に配置されるSTD用ホワイトリスト503及びSAFE用ホワイトリスト513の改ざんを検知する。改ざん検知の方法としては、例えば、公知の公開鍵暗号アルゴリズムを用いたデジタル署名検証を用いることができる。このとき、第1の改ざん検知部311は、署名検証鍵である公開鍵を用い、ホワイトリストの署名値(署名データ)を検証することで、当該ホワイトリストの改ざんを検知できる。ホワイトリストの改ざんを検知した場合、第1の改ざん検知部311は、後述する通知部314を介して、改ざんを検知した旨をユーザに通知し、システムを停止する。
【0031】
第2の改ざん検知部312は、第1の改ざん検知部311で改ざんなしと判定したホワイトリストを用い、実行要求受信部310で受信した実行要求を発行したモジュールの改ざんを検知する。ホワイトリストの例としては、例えば
図6で示すように、検証対象のモジュールごとに、モジュール名と当該モジュールの改ざんがない状態のハッシュ値(正解ハッシュ値)を併記した一覧表である。ハッシュ値としては、例えば公知のSHA256, SHA512などが利用可能である。後述するエラー制御部313でどの起動モード用のモジュールかを判別するために、STD用のモジュールを記載したSTD用ホワイトリスト503と、SAFE用のモジュールを記載したSAFE用ホワイトリスト513とに分ける。これはあくまで例示であり、1つのホワイトリスト601として、STD用モジュール、SAFE用モジュールとが区別できるようにモジュール名を修飾することでも本発明の実施例は実現できる。第2の改ざん検知部312は、実行要求を発行したモジュール(以下、実行モジュールと呼称する場合がある)が前述したホワイトリストに登録済みか否かを判定する。登録済みの場合、実行モジュールのハッシュ値を計算し、ホワイトリストの正解ハッシュ値と比較することで実行モジュールの改ざんを検知する。ホワイトリストに実行モジュールが未登録の場合は、当該実行モジュールの実行のみを禁止(実行停止)し、システムは停止せずに継続稼働し、実行モジュールを停止した旨を後述する通知部314を介して、ユーザに通知する。
【0032】
エラー制御部313は、第2の改ざん検知部312で実行モジュールのハッシュ値が正解ハッシュ値と一致しないと判定された場合、当該実行モジュールが現起動モード用のモジュールか否かに応じて、エラー処理を切り替える。具体的には、実行モジュールが現起動モード用のモジュールでない場合、現起動モードの機能には影響がないと判断し、システムは停止させず、当該実行モジュールの実行要求のみを拒否する。このとき、当該モジュールの実行は禁止されることとなる。一方、実行モジュールが現起動モード用のモジュールである場合、現起動モードの機能に影響ありと判断し、システムを停止する。実行モジュールがどちらの起動モード用のモジュールかの判定方法としては、例えば、実行モジュールが保存されている領域が後述するFlashROM211の通常起動用領域(STD領域)501の場合はSTD用モジュールと判定できる。アップデート起動用領域(SAFE領域)511の場合はSAFE用モジュールと判定できる。現起動モードの判定については、例えば後述するFlashROM211の起動モードフラグ521が0であれば現在の起動モードはSTD起動、1であればSAFE起動と判定できる。これらにより、現起動モードと実行モジュールの起動モードが一致しているか否かを判断できる。なお、起動モードフラグ521の値はあくまで一例であり、例えば起動モードフラグ521が1であればSAFE起動、0であればSTD起動と判断するようにしてもよい。
【0033】
通知部314は、第1の改ざん検知部311、第2の改ざん検知部312、及びエラー制御部313で実行モジュールの停止またはシステム停止が行われた場合、その旨をユーザに通知する。通知方法としては、以下のものがある。例えば、「改ざんを検知したモジュール/ホワイトリスト名」、「検知した時間」、「実施したエラー処理(モジュール停止,システム停止)」を発生したイベントごとにログファイルとする。そして、ログファイルとして1行ずつデータ記憶部302に記録・保存する方法がある。記録・保存したログファイルは、外部の管理サーバに送信したり、操作部102に表示することで管理者はエラー状況を確認できる。また、
図12で示すように操作部102の表示領域1206を介し、改ざんを検知した旨を表示することもできる。
図12は、操作部102に表示されるメニュー画面1201であり、複合機が持つさまざまな機能の実行をユーザが指示するためのものである。ボタン1202はコピー機能をユーザが指示するために利用される。ボタン1203はスキャンして保存する機能をユーザが指示するために利用される。ボタン1204はスキャンして送信する機能をユーザが指示するために利用される。ボタン1205は機器の設定変更をユーザが指示するために利用される。表示領域1206は機器の動作中に発生したさまざまなユーザ向けのメッセージを表示する。例えば、ホワイトリストに未登録の実行モジュールを検知した場合は、表示領域1206に「未知のプログラムの実行をブロックしました」と表示することで、ユーザに通知できる。このようにシステムを停止させずに、実行モジュールのみを停止する場合は、表示領域1206を介した通知が利用できる。一方、システムを停止させる場合の通知としては、
図13に示すように操作部102の全面1301にシステムを停止した旨を表示する。システムを停止させるため、ボタン表示はなくし、全面1301に改ざん検知によりシステムを停止した旨を表示させる。上述したログファイルへの記録と、操作部102へのエラー表示はどちらか片方のみを行ってもよいし、両方とも行ってもよい。
【0034】
図5にFlashROM211に配置されるデータの例を示す。
【0035】
FlashROM211は、起動モードごとに利用領域を論理的に分け、通常起動用領域(STD起動用領域)501、アップデート起動用領域(SAFE起動用領域)511、その他共通領域とに分かれる。これはあくまで例示であり、起動モードをSTD、SAFE以外にも追加で設けてもよく、その場合、FlashROM211の領域も追加で分けることが可能である。STD起動用領域501には、後述するモジュールA502、STD用ホワイトリスト503、STD用カーネル504、STD用initrd505が含まれる。SAFE起動用領域511には、後述するモジュールB512、SAFE用ホワイトリスト513、SAFE用カーネル514、SAFE用initrd515が含まれる。共通領域に保存される起動モードフラグ521は、現在の起動モードの判定などに用いられる。例えば、ローダ370は、起動モードフラグ521を読み取り、STD起動を示すフラグならSTD用カーネル504及びSTD用initrd505をロードすることでSTD起動を開始する。同様に、起動モードフラグ521がSAFE起動を示すフラグならローダ370は、SAFE用カーネル514及びSAFE用initrd515をロードすることでSAFE起動を開始する。モジュールA502には、STD起動用のモジュールが含まれており、本モジュールを実行することで、通常起動に必要となる機能がMFP100を介して提供される。同様にモジュールB512には、SAFE起動用のモジュールが含まれており、本モジュールを実行することで、アップデート用起動に必要となる機能がMFP100を介して提供される。STD用ホワイトリスト503には、
図6で示したように、実行モジュール検証の対象となるSTD起動用のモジュールA502が正解ハッシュ値とともに記載されている。SAFE用ホワイトリスト513にも、
図6で示したように、実行モジュール検証の対象となるSAFE起動用のモジュールB512が正解ハッシュ値とともに記載されている。なお、以下の説明ではSTD起動用領域501に含まれるモジュールはモジュールA502、SAFE起動用領域511に含まれるモジュールはモジュールB512として説明するが、モジュールはこれ以外にも複数含まれていてもよい。
【0036】
(実施例1の処理フロー)
図7(A),(B),(C),(D)のフローチャートにより本実施例の実行時改ざん検知処理及びエラー時(改ざん検知時)の処理を説明する。
【0037】
実行要求受信部310は、モジュールの実行要求を受信する(S701)。第1の改ざん検知部311は、ホワイトリストに改ざんがあるか否かを検証する(S702)。ホワイトリストの改ざんを検知した場合(S702)、通知部314でログ記録、操作部102への画面表示を行うことで、ユーザ通知し、システムを停止する(S710,S711,S712)。ホワイトリストに改ざんがない場合(S702)、第2の改ざん検知部は、実行要求を発行したモジュールがホワイトリストに登録されているか否かを照合する(S704)。ホワイトリストに登録されていなければ(S705)、通知部314でログ記録、操作部102への画面表示を行うことで、ユーザ通知する。実行要求受信部310で受信した実行要求を棄却することで、当該モジュールの実行をブロック(停止)する(S720,S721,S722)。ホワイトリストに登録されていれば(S705)、第2の改ざん検知部は、当該モジュールのハッシュ値を計算し、ホワイトリストに登録された正解ハッシュ値と比較する(S706,S707)。比較した結果、ハッシュ値が一致すれば(S707)、当該モジュールの実行を許可することで当該モジュールを実行する(S708)。ハッシュ値が一致しなければ(S707)、エラー制御部313は、当該モジュールが現起動モード用のモジュールか否かを判定し(S731)、現起動モード用のモジュールであればシステム停止する(S710,S711,S712)。現起動モードとは異なる起動モード用のモジュールであれば(S731)、当該モジュールの停止のみを行う(S720,S721,S722)。
【0038】
なお、ログ記録・ユーザ通知(S711)とシステム停止(S712)の順序及び、モジュール実行拒否(S721)とログ記録・ユーザ通知(S722)の処理順序はあくまで例示であり、順序を入れ替えてもよい。
【0039】
このように、本実施例では、現在の起動モードの機能には影響ないモジュールの改ざんを検知した場合、システムは停止せず、当該実行モジュールのみを停止することで、セキュリティを維持したまま、稼働率を向上できる。
【0040】
(実施例1の変形例)
実施例1では、実行モジュールの起動モードに応じて、エラー制御部313でエラー処理を切り替えたが、ホワイトリストの起動モードに応じても切り替えることができる。具体的には、第1の改ざん検知部311でホワイトリストの改ざんを検知した場合、実施例1では即座にシステム停止(S710)を行ったが、本変形例では、現起動モード用とは異なるホワイトリストの改ざんを検知した場合は、実行モジュールのみを停止する。現起動モード用のホワイトリストか否かの判定方法は、モジュールのときと同じように決定できる。具体的には、起動モードフラグ521で現起動モードを判定し、ホワイトリスト503,513の保存領域で現在参照しているホワイトリストがどちらの起動モード用かを判定できる。例えば、起動モードフラグ521がSTD起動モードを示している場合、STD用ホワイトリスト503の改ざんを検知した場合は、システム停止し、SAFE用ホワイトリスト513の改ざんを検知した場合は、実行モジュールのみを停止する。つまり、本変形例では、エラー制御部313は、上述したホワイトリストの起動モード判定によるエラー処理切り替え機能を更に具備することとなる。
【0041】
図7(A),(C),(D)及び
図8を用い、本変形例の処理フローを説明する。実行要求受信部310は、モジュールの実行要求を受信する(S701)。第1の改ざん検知部311は、ホワイトリストに改ざんがあるか否かを検証する(S702)。ホワイトリストの改ざんを検知した場合、エラー制御部313は、当該ホワイトリストが現起動モード用のホワイトリストか否かを判定し(S801)、現起動モード用のホワイトリストであればシステム停止する(S710,S711,S712)。一方、現起動モードとは異なる起動モード用のホワイトリストと判定した場合は(S801)、実行要求を発行したモジュールの停止のみを行う(S720,S721,S722)。
【0042】
このように、本変形例では、ホワイトリストの現在の起動モードとは無関係なホワイトリストの改ざんを検知した場合、システムは停止せず、実行モジュールのみを停止することで、セキュリティを維持したまま、稼働率を向上できる。
【0043】
(実施例2)
以下、本発明にかかる実施例2の情報処理を説明する。なお、実施例2において、実施例1と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【0044】
実施例2では第1の改ざん検知部311でホワイトリストの改ざんを検知した場合、MFP100が正常な状態か否かを判定し、正常であれば、現在のモジュールからホワイトリストを生成しなおす。システム停止、モジュール停止をせず、可能であればホワイトリストを自動で生成しなおし、稼働継続するため、稼働率をさらに向上できる。
【0045】
以下、本実施例における、装置構成、機能構成及び処理フローをそれぞれ説明する。
【0046】
(実施例2の装置構成)
図11のブロック図により実施例2の装置構成例を説明する。
【0047】
実施例2では、実施例1の装置構成に加え、耐タンパーなセキュリティチップであるTPM(Trusted Platform Module)1101及びBIOS検証ユニット1102をさらに具備する。
【0048】
TPM1101は、耐タンパー性を有するセキュリティチップである。耐タンパー性とは、外部からの解析を困難にすると共に、外部から解析しようとした場合に内部に記憶されているモジュール、或いはデータを破壊することにより自己防衛する特性である。また、TPM1101は、NVRAMと複数のPCRを保持している。
NVRAMは、不揮発性メモリであり、任意のデータの書き込み・読み込みが可能である。
PCRは揮発性メモリであり、BIOS360、ローダ370、initrd380、カーネル390などのハッシュ値をMFP100の起動時に保存する。
【0049】
ここで、PCRへのハッシュ値保存処理を説明する。ハッシュ値保存処理では、所定のPCRに既に保存されているハッシュ値Hash1と、TPM1101の外部から入力されたソフトウェアまたはデータのハッシュ値Hash2を用いて次の式を計算し、計算した値Result1を当該PCRに保存する。
【0050】
Result1=H(Hash1|Hash2) (式1)
H(x)は値xに対するハッシュ関数である。ハッシュ関数としては公知のSHA1、SHA256、SHA512等のアルゴリズムが適応可能である。「x|y」は値xと値yの連結である。
【0051】
以上説明したPCRへのハッシュ値保存処理は、MFP100が起動する際などに実行される。
【0052】
また、TPM1101は、TPM1101内で管理される署名生成鍵を用い、PCRに保存したハッシュ値にデジタル署名(署名データ)をつけて外部サーバに送信するquote機能と呼ばれる機器証明機能も具備している。quote機能で生成された署名データとPCRのハッシュ値を用い、MFP100で起動したモジュールの完全性検証を外部サーバで実施できる。具体的には、外部サーバは、MFP100から受信したPCRのハッシュ値の署名データを署名検証鍵で検証することで、同じく受信したPCRのハッシュ値の改ざん有無を検証する。署名検証が成功した場合、外部サーバが保持するMFP100の各モジュールの正解ハッシュ値と、受信したPCRのハッシュ値とを比較することで、MFP100の各モジュールの改ざんをリモートに検知できる。
【0053】
BIOS検証ユニット1102はROM220およびCPU201とバスで接続されていて、ROM220に記憶されたBIOSデータの検証と、CPU201へのBIOS起動指示を行う。ここで、BIOS検証ユニット1102はハードウェアであることを明記し、BIOS検証がハードウェア検証であることを確認しておく。BIOS検証ユニット1102とCPU201を繋ぐバスは悪意のある第三者に細工をされないために、同一チップ、またはそれに準ずる構成で実現され外部から物理的に確認できない形態になっている。本実施例では、BIOS検証ユニット1102の制御機構は集積回路としてハードウェアで実現されている構成を想定するが、専用のCPU、制御ソフトを記憶したROMといった要素を同一チップ内に実装し、製造後に変更できない構成であっても良い。
【0054】
(実施例2の機能構成)
図4のブロック図により実施例2の機能構成例を説明する。
【0055】
実施例2では、実施例1の機能構成に加え、ローダ読み込み検証制御部461、カーネル、initrd読み込み検証制御部471、起動時検証部481、ホワイトリスト生成部401、機器証明部402、ログ確認部403を更に具備する。また、BIOS360、ローダ370、initrd380は、実施例1に加え、一部機能追加があるため、合わせて以下で説明する。
【0056】
BIOS360は、実施例1の機能に加え、内部的にBIOSとしての制御ソフトと制御ソフトに対応する署名データで構成されている。
【0057】
ローダ370は、実施例1の機能に加え、内部的にローダとしての制御ソフトと制御ソフトに対応する署名データで構成されている。
【0058】
initrd380は、実施例1の機能に加え、内部的にinitrdとしての制御ソフトと制御ソフトに対する署名データで構成されている。
【0059】
ローダ読み込み検証制御部461は、BIOS360の制御ソフトに含まれ、ローダを検証する処理とローダに付与された署名に対応する公開鍵を含む。
【0060】
カーネル、initrd読み込み検証制御部471は、ローダ370に含まれ、カーネル、initrdを検証する処理とカーネル、initrdに付与された署名に対する公開鍵を含む。
【0061】
起動時検証部481は、initrd380に含まれ、コントローラソフト300を構成する、全てのモジュールを起動時に検証する処理と、付与された署名に対する公開鍵を含む。ここで、全ての署名データに対する秘密鍵はソフトウェアの開発時にのみ利用され一般に流通することはない。
【0062】
なお、前述したBIOS検証ユニット1102、ローダ読み込み検証制御部461、カーネル、initrd読み込み検証制御部471、起動時検証部481による起動時の各モジュールの検証を合わせて起動時検証機能と呼称する場合がある。
【0063】
ホワイトリスト生成部401は、第1の改ざん検知部311でホワイトリストの改ざんを検知した際、MFP100が正常であると判断できる場合に限り、ホワイトリストを再生成する。MFP100が正常であるか否かの判断には、前述した起動時検証機能、または後述する機器証明部402による検証、またはログ確認部403による検証を用いることができる。正常と判断したMFP100内の各種モジュール(モジュールA502、モジュールB512)からハッシュ値を計算し、
図6で示すホワイトリストを生成し、改ざんされたホワイトリストと置き換えることで、ホワイトリストの再生成を実現する。また、TPM1101などで保持する署名生成鍵を用い、再生成したホワイトリストの署名データを生成することで、ホワイトリストの改ざん検知も可能となる。
【0064】
機器証明部402は、前述したTPM1101のquote機能を用い、BIOS360、ローダ370、initrd380、カーネル390などのモジュールが改ざんされているか否かを、TCP/IP制御部308などを介し、外部サーバに問い合わせる。これによりリモートにMFP100が正常か否かを判断できる。
【0065】
ログ確認部403は、通知部314で記録したログファイルを読み取り、モジュールが改ざんされたログが記載されているか否かを確認することで、MFP100の各種モジュールが正常か否かを判断する。具体的には、モジュールが改ざんされた旨がログファイルに記載されている場合、MFP100には改ざんモジュールが存在するため、正常ではないと判断する。一方で、改ざんされた旨が1つも記載されていない場合は、全てのモジュールが正常と判断し、MFP100自体も正常であると判断する。なお、これは例示であり、例えば、ログファイルにモジュールが改ざんされた旨が記載されてあっても、その後に当該改ざんモジュールを正常な状態に復旧した旨を示す記載がある場合は、モジュールは正常に戻ったと判断し、MFP100を正常と判断してもよい。
【0066】
(実施例2の処理フロー)
図9、及び
図10(A),(B),(C)のフローチャートにより、実施例2の処理フローを説明する。
【0067】
最初に、
図9,
図10(A)により、起動時検証機能によるホワイトリストの再生成処理フローを説明する。
【0068】
実行要求受信部310は、モジュールの実行要求を受信する(S701)。第1の改ざん検知部311は、ホワイトリストに改ざんがあるか否かを検証する(S702)。ホワイトリストの改ざんを検知した場合(S901)、再起動をする(S1001)。そして、BIOS検証ユニット1102、ローダ読み込み検証制御部461、カーネル、initrd読み込み検証制御部471、起動時検証部481による起動時検証を行う(S1002)。起動時検証で改ざんを検知しなかった場合(S1003)、MFP100は正常と判断し、ホワイトリスト生成部401は、ホワイトリストを再生成する(S903)。起動時検証で改ざんを検知した場合は(S1003)、MFP100が正常でないと判断し、システムを停止する(S710)。
【0069】
次に、
図9,
図10(B)により、TPM1101の機器証明機能(quote機能)によるホワイトリストの再生成処理フローを説明する。
【0070】
実行要求受信部310は、モジュールの実行要求を受信する(S701)。第1の改ざん検知部311は、ホワイトリストに改ざんがあるか否かを検証する(S702)。ホワイトリストの改ざんを検知した場合(S901)、TPM1101のquote機能により機器証明部402で機器証明を行う(S1011)。機器証明で改ざんを検知しなかった場合(S1012)、MFP100は正常と判断し、ホワイトリスト生成部401は、ホワイトリストを再生成する(S903)。機器証明で改ざんを検知した場合は(S1012)、MFP100が正常でないと判断し、システムを停止する(S710)。
【0071】
最後に、
図9,
図10(C)により、ログ確認部403によるホワイトリストの再生成処理フローを説明する。
【0072】
実行要求受信部310は、モジュールの実行要求を受信する(S701)。第1の改ざん検知部311は、ホワイトリストに改ざんがあるか否かを検証する(S702,S703)。ホワイトリストの改ざんを検知した場合(S901)、ログ確認部403は、ログファイルを確認することで、MFP100が正常か否かを判断する(S1021)。ログファイルを確認した結果、MFP100が正常と判断できれば、ホワイトリスト生成部401はホワイトリストを再生成する(S903)。MFP100が正常でないと判断した場合は、システムを停止する(S710)。
【0073】
このように、本実施例では、ホワイトリストが改ざんされていた場合、システムを停止せずに、MFP100の各種モジュールが正常である限りはホワイトリストの再生成を試みるため稼働率を向上できる。
【0074】
(実施例2の変形例)
また、実施例2で、ホワイトリストの改ざんを検知した際にホワイトリスト生成部401がMFP100が正常か否かを確認する手段を、利用できる手段に応じて動的に選択するようにすることもできる。
図14の設定画面1401を用い説明する。
図14は、
図12の設定ボタン1205の押下により、画面遷移した操作部102に表示される設定画面1401である。ログ記録1402が選択された場合は、前述した通知部314によるログファイルへのイベント記録機能が有効な状態である。TPM機能1403が選択された場合は、前述したTPM1101のPCRへのハッシュ値保存やquoteによる機器証明機能が有効な状態である。起動時検証1404が選択された場合は、前述した起動時検証機能が有効な状態である。例えば、
図14の設定画面1401では、TPM機能1403のみが有効となっているため、ホワイトリスト生成部401は、機器証明部402による機器証明機能を用いMFP100が正常か否かを確認する(S1011、S1012)。同様に、ログ記録1402のみが有効な場合は、ホワイトリスト生成部401は、ログ確認部403を用いMFP100が正常か否かを確認する(S1021)。起動時検証1404のみが有効な場合は、再起動する(S1001)。そして、BIOS検証ユニット1102、ローダ読み込み検証制御部461、カーネル、initrd読み込み検証制御部471、起動時検証部481による起動時検証を行うことで、MFP100が正常か否かを確認する(S1002、S1003)。
【0075】
上述の説明では、いずれか1つの設定のみが有効な場合を説明したが、複数同時に有効にした場合でも本発明に適用できる。その場合、優先度をつけ、優先度が高いものを選択するようにすればよい。例えば、ログ記録1402、TPM機能1403、起動時検証1404の全てが有効な場合、かつ優先度として、ログ記録1402を「1」、TPM機能1403を「2」、起動時検証1404を「3」と設定した場合を考える(数字が大きいほど優先度高)。このとき、ホワイトリスト生成部401は、優先度が最も高い起動時検証機能を用い、MFP100が正常か否かを確認することができる。一方、全ての設定が無効な場合は、MFP100の状態を確認できないため、実施例1のようにホワイトリストの再生成は行わずにシステム停止または当該モジュールの停止のみを行う。
【0076】
このように、本変形例により、利用できる機能に応じて、動的に最適な手段でホワイトリストの再生成を行うため、稼働率を向上できる。
【0077】
(その他の実施例)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。