JP2020197773A - ホワイトリスト生成方法および生成プログラム - Google Patents

ホワイトリスト生成方法および生成プログラム Download PDF

Info

Publication number
JP2020197773A
JP2020197773A JP2019101884A JP2019101884A JP2020197773A JP 2020197773 A JP2020197773 A JP 2020197773A JP 2019101884 A JP2019101884 A JP 2019101884A JP 2019101884 A JP2019101884 A JP 2019101884A JP 2020197773 A JP2020197773 A JP 2020197773A
Authority
JP
Japan
Prior art keywords
program
unit
information processing
whitelist
verification
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
Application number
JP2019101884A
Other languages
English (en)
Inventor
中村 文彦
Fumihiko Nakamura
中村  文彦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2019101884A priority Critical patent/JP2020197773A/ja
Publication of JP2020197773A publication Critical patent/JP2020197773A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Facsimiles In General (AREA)
  • Accessory Devices And Overall Control Thereof (AREA)

Abstract

【課題】プログラム実行時のプログラム検証機能により、システムのセキュリティを確保しつつ、情報処理装置の可用性を低下させずに利用可能な情報処理装置を提供する。【解決手段】情報処理装置における起動モードと対応するプログラムを格納する領域を起動モード毎に持つ格納手段と、前記情報処理装置において複数の起動モードによって起動できる起動制御手段317と、起動制御手段317によってマウントする領域を決定する決定手段318と、外部記憶装置に配置されるプログラムの実行時にプログラムを検証する検証手段351と、検証手段351において使用する実行を許可するプログラムのリストを生成する生成手段315と、生成手段315利用時に現在の起動モード以外の領域をマウントする領域マウント手段318と、を有する。【選択図】図3

Description

本発明は、プログラムの改ざん検知機能において利用されるホワイトリストの生成方法および生成プログラムに関する。
情報処理装置を制御するプログラムを第三者が改ざんし、情報処理装置内の情報資産を盗む攻撃や、プログラムが改ざんされた情報処理装置を踏み台に利用する攻撃が問題になっている。このような攻撃を防止するために、情報処理装置内にプログラムが第三者によって改ざんされていないことを検証する方法が考案されている。
ユーザが情報処理装置によって実現される機能を利用するときに情報処理装置内のプログラムが改ざんされていないことを保証するためには、その機能を実現するプログラムの実行の直前に検証する必要がある。これは、プログラムの検証と実行の間に時間差があると、その間に改ざんされる場合に対応できないためである。
プログラムの実行直前にプログラムを検証する方法の例として、特許文献1には、プログラムの実行要求をフックするフッキングプログラムとホワイトリストを用いる方法が提案されている。ホワイトリストとは、起動が許可されたプログラムの一覧を示すリストである。この方法では、プログラム起動前に、プログラムのハッシュ値を計算してホワイトリストと比較し、一致する場合のみプログラムを起動する。プログラムの検証に失敗した場合、プログラムの実行要求に対してエラーを返す。この時、プログラムの実行要求に対する一般的なエラーによりプロセスにエラーを返す。ホワイトリストがない場合、プログラムの検証時に全プログラムがホワイトリストに記載されていないとみなされるため、全プログラムの検証に失敗し実行させないので、プログラムの検証を有効化する前にホワイトリストの作成が必須である。
この方法では、マルチプロセスでプログラムを実行する情報処理装置において、プログラムを実行する各プロセスがプログラムを実行する度にプログラムの検証を行う必要がなく、フッキングプログラムに検証を任せることができる。
特開2009−259160号公報
情報処理装置では、外部記憶装置に通常起動するモード以外の起動モードを持つことがある。これは、通常起動モードで何らかの問題が発生したときに、通常起動モードとは別の起動モードで起動することで通常起動モードのファームウェアの復旧や通常起動モードの診断を行うために利用される。そのため、別の起動モードのファームウェアは通常起動モードのファームウェアが保存される外部記憶装置内の領域とは別の領域に保存される。
起動モードを複数持つ情報処理装置にホワイトリストによる検証機能の適用時には、ホワイトリストによる検証機能を搭載しない起動モードがセキュリティホールとなる可能性があるため、全起動モードに対してホワイトリストによる検証機能を搭載する必要がある。また、ホワイトリストによる検証機能をいずれかの起動モードで有効にした場合にも同様の理由から全ての起動モードでホワイトリストによる検証機能を有効にする。ホワイトリストはユーザがホワイトリストによる検証機能の有効化した時に情報処理装置が生成する。
通常起動モードでの起動時にホワイトリストによる検証機能を利用するために通常起動モードのみのホワイトリストを作成すると、通常起動モード以外で起動した場合にホワイトリストがないため、そのモードで起動できなくなり可用性が低下する。
そのため、ホワイトリストによる検証機能を有効化した後に別の起動モードで初回起動するときにホワイトリストを作成する必要がある。しかし、別のモードでの初回起動までにその起動モードのファームウェアが改ざんされると、その起動モードのホワイトリストを改ざんされた状態で作成してしまう可能性がある。
以上から、複数の起動モードを持つ情報処理装置において、ホワイトリストによる検証機能を有効化した起動モードとは別の起動モードで初回起動時にその起動モードのホワイトリストを作成すると、可用性を確保できるもののセキュリティが低下する問題がある。
本発明の目的は、実行要求をフックすることでプログラムの起動前にプログラムの検証を実施する情報処理装置において、複数の起動モードを持つ場合に可用性を保ちつつセキュリティを確保することにある。
上記の目的を達成するために、本発明に係る情報処理装置は、
情報処理装置における起動モードと対応するプログラムを格納する領域を起動モード毎に持つ格納手段(401,411)と、
前記情報処理装置において複数の起動モードによって起動できる起動制御手段(317)と、
前記起動制御手段によってマウントする領域を決定する決定手段(318)と、
前記外部記憶装置に配置されるプログラムの実行時にプログラムを検証する検証手段(S1006)と、
前記検証手段において使用する実行を許可するプログラムのリストを生成する生成手段(S4004)と、
前記生成手段利用時に現在の起動モード以外の領域をマウントする領域マウント手段(S4003)と、
を有することを特徴とする。
本発明に係る情報処理装置によれば、ユーザがプログラムの実行直前に検証されるプログラム実行検証手段を備えた情報処理装置を用いるときに、情報処理装置の可用性を下げずセキュリティを保ちつつユーザが利用可能にする。
本発明に係わるMFPとPCの接続形態を示すブロック構成図である。 MFPのコントローラ部の内部構成図である。 MFPのコントローラ内で実行されるソフトウェアのブロック構成図である。 FlashROMに配置されるデータの例である。 本発明のMFP側の処理を実施するフロー図である。 本発明のMFP側の処理を実施するフロー図である。 設定に係る画面構成図である。
以下、本発明を実施するための形態について、図面を参照しながら説明する。
本実施例では、情報処理装置がプログラムを実行するときの実行時検証処理、及び検証失敗時の情報処理装置の制御処理について説明する。本書の実施例では情報処理装置の例としてMFP(Multi−Functional Peripheral:複合機)について記述するが、本発明は複合機以外の情報処理装置にも適用可能な技術である。
図1は本発明に係るMFPとクライアントPCの接続形態を示すブロック図である。
MFP100とクライアントPC110はLAN120を介して接続されている。MFP100はユーザとの入出力を行う操作部102を有する。MFP100は電子データを紙媒体に出力するプリンタ部103を有する。MFP100は紙媒体を読み込み電子データに変換するスキャナ部104を有する。操作部102とプリンタ部103とスキャナ部104はコントローラ部101に接続され、コントローラ部101の制御に従い複合機としての機能を実現する。クライアントPC120はMFP100に対してプリントジョブの送信といった処理を行う。
図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が接続される。
CPU201はネットワークI/F204を介して有線LANデバイス210を制御することで、LAN150上の通信を実現する。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/Fに接続された任意の機器の制御を行う。ROM220はCPU201とバスで接続されていて、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印刷を実施する場合は、クライアントPC120がLAN150を介して印刷指示を行う。CPU201はSATA I/F205を介してFlash211からプログラムデータをDRAM202に読み込み、DRAM202に読み込まれたプログラムに従いネットワークI/F204を介して印刷指示を検出する。CPU201はPDL送信指示を検出するとネットワークI/F204を介して印刷データを受信し、SATA I/F205を介してFlashROM211に印刷データを保存する。CPU201は印刷データの保存が完了すると、FlashROM211に保存した印刷データをDRAM202に画像データとして展開する。CPU201はDRAM202に格納した画像データに対して出力に適した色変換処理などを実施する。CPU201はDRAM202に格納した画像データをプリンタI/F207を介してプリンタ部103に転送し、紙媒体への出力処理を実施する。
図3はMFPのコントローラ部101で実行されるソフトウェアの構造をあらわすブロック図である。
コントローラ部101で実行されるソフトウェアは全て、CPU201が実行する。
コントローラ部101のソフトウェアはカーネル350とコントローラソフト301から構成される。
カーネル350はカーネルの制御ソフトとしてプログラム検証部351を有する。プログラム検証部351はプログラム実行要求部311からのFlashROM211上に配置されるプログラム401の実行要求をカーネル空間でフックし、実行要求されたプログラムファイルの検証を行う。プログラム検証部351が実行要求されたプログラムの検証に成功した場合は、MFP100が実行要求されたプログラムを実行する。プログラム検証部351が実行要求されたプログラムの検証に失敗した場合は、MFP100が実行要求されたプログラムを実行させない。
コントローラソフト301の構成要素について説明する。操作制御部302は操作部102にユーザ向けの画面イメージを表示、およびユーザ操作の検知と画面上に表示したボタン等の画面部品に紐づけられた処理を実行する。データ記憶部303は他の制御部からの要求でデータをFlashROM211に記憶、および読み出しを行う。例えば、ユーザが何らかの機器設定を変更したい場合は、操作部102にユーザが入力した内容を操作制御部302が検知し、操作制御部302からの要求でデータ記憶部303が設定値としてFlashROM211に保存する。ネットワーク制御部308はデータ記憶部303に記憶された設定値に従い、システム起動時や、設定変更検出時にIPアドレスなどネットワーク設定をTCP/IP制御部309に行う。
TCP/IP制御部308は他の制御からの指示に従い、ネットワークI/F204を介して、ネットワークパケットの送受信処理を行う。ジョブ制御部304は他の制御部からの指示に従って、ジョブ実行の制御を行う。画像処理部305はジョブ制御部304からの指示に従って、画像データを用途ごとに適した形式に加工する。印刷処理部306はジョブ制御部304からの指示に従い、プリンタI/F207を介して、紙媒体に画像を印刷し出力する。読み取り処理部307はジョブ制御部304からの指示時に従い、スキャナI/F208を介して、設置された原稿を読み込む。USB制御部310はUSB I/F209を制御し、USB接続された任意の機器の制御を行う。プログラム実行要求部311はFlashROM211上のプログラム401を実行することをカーネル350に対して要求する。プログラム更新部316はコントローラソフト301を構成するプログラム401を、設置環境で更新する処理を行う。
ホワイトリスト管理部315は、ユーザがプログラムの実行時検証機能の有効化/無効化するときに、ホワイトリスト405の生成/更新を行う。起動モード判別部317は、システム起動時にFlashROM211に記録された起動モードフラグ421を読み取り、通常起動モードか、セーフモードかを判別し起動する。マウント部318に起動モード判別部によって判断されたモードにあわせた起動モード領域をマウントする。例えば、コピー機能を実行する場合は、コピー機能を持つアプリケーションを起動して操作制御部302にコピー画面の表示を指示する。操作制御部302がコピー機能の開始要求を検知し、ジョブ制御部304にコピーを指示する。ジョブ制御部304は読み取り処理部307に原稿読み取りを指示し、スキャン画像を取得する。ジョブ制御部304は画像処理部305に指示し、スキャン画像を印刷に適した形式に変換する。ジョブ制御部304は印刷処理部306に印刷を指示し、コピー結果を出力する。
図4に、FlashROM211に配置されるデータの例を示す。
通常起動モード領域401には実行可能プログラム402、ホワイトリスト405が配置される。実行可能プログラム402にはOSのプログラムおよび機能を提供するプログラムおよびMFP上で動作するアプリケーション機能を実現するプログラムが含まれる。ホワイトリスト405はプログラム検証部351が通常起動モード領域のプログラムを検証するときに参照するリストである。
セーフモード領域411には実行可能プログラム412、ホワイトリスト415が配置される。実行可能プログラム412にはOSのプログラムおよび機能を提供するプログラムが含まれる。ホワイトリスト405はプログラム検証部351がセーフモード領域のプログラムを検証するときに参照するリストである。
表Aにホワイトリスト405の例を示す。ホワイトリスト405はコントローラソフト301に含まれる通常起動モードの全ての実行可能プログラム402に対して、ファイルパス502とハッシュ506の組み合わせをリスト化したものである。データの内容としては、少なくともファイル名称、ファイルの配置場所(ディレクトリ上の位置)、ファイルから計算したハッシュ値を含むものとし、ハッシュ値等の情報がリスト化される。ユーザが操作部102からプログラムの実行時検証を有効化したときに、ホワイトリスト管理部315がホワイトリスト405を生成する。プログラム更新部316がプログラム407を更新したときに、ホワイトリスト管理部315がホワイトリスト405を更新する。
図7はセキュリティ設定画面1501であり、MFP100に対するセキュリティ設定を行う。プログラムの実行時検証1502を選択すると、機能実行時に行うプログラム検証機能が有効化される。ボタン1503を押下すると、セキュリティ設定画面1501の選択状態が、機器設定としてデータ記憶部303に記憶される。
図5を用いて、ユーザがプログラムの実行時検証機能を有効化するときのホワイトリスト405の生成処理フローを説明する。この処理はユーザが改ざん検知機能の有効化を要求するときに行われる。ここで、MFPが実施する処理はホワイトリスト管理部315が実施するものである。以下の説明で、MFPが実施する処理はMFPが通常起動モードでの起動時にFlashROM211に格納されたプログラムをCPU201がDRAM202に読み込んだ後、CPU201の演算処理として実施するものである。
ユーザがプログラムの実行時検証機能を有効化する要求をMFPの操作部102から行う。操作制御部302がユーザからのプログラムの実行時検証機能の有効化要求を受信する。
S4001でホワイトリスト管理部315が操作制御部302から改ざん検知機能の有効化要求を受信することで生成処理フローが開始される。S4002でホワイトリスト管理部315がホワイトリストの有効化要求を受信する。S4003でホワイトリスト管理部315がMFP内のFlashROM211に配置されている通常起動モード領域401に格納される全ての実行可能プログラム402を検索し、検索した実行可能プログラムのハッシュ値を計算する。実行可能プログラムのファイルパス501と計算したプログラムのハッシュ値502を通常起動モード領域のホワイトリスト405に記載する。
S4004でホワイトリスト管理部315がマウント部318にFlashROM211のセーフモード領域411をマウントするように命令しマウント部318がセーフモード領域411をマウントする。S4005でホワイトリスト管理部315がMFP内のFlashROM211に配置されているセーフモード領域411に格納される全ての実行可能プログラム412を検索し、検索した実行可能プログラムのハッシュ値を計算する。実行可能プログラムのファイルパス501と計算したハッシュ値502をセーフモード領域のホワイトリスト415に記載する。
図6を用いて、プログラム検証部351がプログラム401を検証する処理フローを説明する。この処理はプログラム実行要求部311が通常起動モード領域401のプログラム402または通常起動モード領域411のプログラム412の実行要求を行うたびに行われる。以下の説明で、図6のMFPが実施する処理はFlashROM211に格納されたプログラムをCPU201がDRAM202に読み込んだ後、CPU201の演算処理として実施するものである。
S1002でプログラム実行要求部がFlashROM211上に配置されたプログラム401の実行要求をカーネル350に対して行う。S1003でプログラム検証部351がプログラムの実行要求をフックして、ホワイトリスト405を用いて実行要求されているプログラムの検証を行う。S1004の検証は、プログラム検証部351がホワイトリスト405に記載されているプログラムのファイルパス501の中に実行要求されたプログラムのファイルパスと一致するものがあるかを検証する。例えば、実行要求されたプログラムのファイルパスが「/bin/cat」であった場合、表Aのホワイトリスト405の例のファイルパス501の中に一致するものがあるので、プログラム検証部351は「/bin/cat」の検証は成功したと判断する。
S1004でプログラム検証部351がホワイトリスト405に実行要求されたプログラムがあると検出した場合、S1005でプログラム検証部351が実行要求されたプログラムのハッシュ値を計算する。S1006でプログラム検証部351がS1005で計算したハッシュ値をホワイトリスト405上にあるハッシュ値502と比較する。S1005で再計算されたハッシュ値とホワイトリストに記載されているハッシュ値502が一致した場合は、MFP100が実行要求されたプログラムを実行する。S1004でプログラム検証部351がホワイトリスト405に実行要求されたプログラムがなかった場合、S1008でプログラム検証部351がプログラム実行要求部311にエラーを通知しプログラムを実行しない。S1006でプログラム検証部351がS1005で再計算したハッシュ値とホワイトリスト405のハッシュ値502が一致しないと検出した場合もS1008でプログラム検証部351がプログラム実行要求部311にエラーを通知しプログラムを実行しない。
以上、実施例1によりプログラムの実行時に改ざんを検証するシステムにおいて、実行を許可するプログラムのリストを全ての起動モードで一度に作成することで、セキュリティを保ちつつ可用性を確保してユーザがMFPを利用可能である。
[他の実施例]
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施例の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
100 MFP、315 ホワイトリスト管理部、317 起動モード判別部

Claims (1)

  1. 情報処理装置における起動モードと対応するプログラムを格納する領域を起動モード毎に持つ格納手段と、
    前記情報処理装置において複数の起動モードによって起動できる起動制御手段と、
    前記起動制御手段によってマウントする領域を決定する決定手段と、
    前記外部記憶装置に配置されるプログラムの実行時にプログラムを検証する検証手段と、
    前記検証手段において使用する実行を許可するプログラムのリストを生成する生成手段と、
    前記生成手段利用時に現在の起動モード以外の領域をマウントする領域マウント手段と、
    を有することを特徴とする情報処理装置。
JP2019101884A 2019-05-31 2019-05-31 ホワイトリスト生成方法および生成プログラム Pending JP2020197773A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2019101884A JP2020197773A (ja) 2019-05-31 2019-05-31 ホワイトリスト生成方法および生成プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019101884A JP2020197773A (ja) 2019-05-31 2019-05-31 ホワイトリスト生成方法および生成プログラム

Publications (1)

Publication Number Publication Date
JP2020197773A true JP2020197773A (ja) 2020-12-10

Family

ID=73648012

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019101884A Pending JP2020197773A (ja) 2019-05-31 2019-05-31 ホワイトリスト生成方法および生成プログラム

Country Status (1)

Country Link
JP (1) JP2020197773A (ja)

Similar Documents

Publication Publication Date Title
JP4848190B2 (ja) アプリケーション実行装置、アプリケーション実行方法及びアプリケーション実行プログラム
US9348982B2 (en) Information processing system, an operating device, and a computer-readable storage medium
US10209980B2 (en) Image forming apparatus and control method for image forming apparatus
JP2006279935A (ja) 情報処理装置、その制御方法及びコンピュータ読取可能記録媒体
JP2009110268A (ja) サーバ装置、管理システム、管理方法、記憶媒体、プログラム
US10534905B2 (en) Image processing apparatus, method of controlling the same, and storage medium
US10126992B2 (en) Image processing apparatus, control method thereof, and storage medium
JP2023129643A (ja) 情報処理装置、情報処理方法およびプログラム
CN112114842A (zh) 信息处理装置及其控制方法和储存介质
US8495364B2 (en) Image processing apparatus and method using electronic signature information
JP4419977B2 (ja) プログラム作成装置、及びプログラム
US20150154014A1 (en) Image forming apparatus, control method therefor, and control program therefor
US20210152709A1 (en) Image processing apparatus, control method thereof, and storage medium
US10855852B2 (en) Image processing apparatus, control method thereof, and storage medium
JP2005148934A (ja) 情報処理装置、プログラム起動方法、プログラム起動プログラム及び記録媒体
US20200074075A1 (en) Information processing apparatus, method of controlling the same, and storage medium
JP2020197773A (ja) ホワイトリスト生成方法および生成プログラム
US11330129B2 (en) Image forming system, image forming apparatus, and storing medium storing application control program
JP2019110424A (ja) 暗号処理実行装置及びその制御方法、並びにプログラム
WO2020262412A1 (ja) 情報処理装置、情報処理方法およびプログラム
JP2006285961A (ja) 情報処理装置及び情報処理方法
JP2023137584A (ja) インストールプログラム
JP2023096096A (ja) 情報処理装置、情報処理方法およびプログラム
JP2022157063A (ja) 情報処理装置、情報処理方法およびプログラム
JP2022182837A (ja) 情報処理装置、及びその制御方法

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20191125