JP2022157063A - 情報処理装置、情報処理方法およびプログラム - Google Patents
情報処理装置、情報処理方法およびプログラム Download PDFInfo
- Publication number
- JP2022157063A JP2022157063A JP2021061081A JP2021061081A JP2022157063A JP 2022157063 A JP2022157063 A JP 2022157063A JP 2021061081 A JP2021061081 A JP 2021061081A JP 2021061081 A JP2021061081 A JP 2021061081A JP 2022157063 A JP2022157063 A JP 2022157063A
- Authority
- JP
- Japan
- Prior art keywords
- verification
- software
- recovery
- partial software
- information processing
- 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
- 230000010365 information processing Effects 0.000 title claims abstract description 20
- 238000003672 processing method Methods 0.000 title claims description 3
- 238000012795 verification Methods 0.000 claims abstract description 162
- 238000011084 recovery Methods 0.000 claims abstract description 71
- 238000012545 processing Methods 0.000 claims description 64
- 238000000034 method Methods 0.000 claims description 38
- 230000004913 activation Effects 0.000 claims description 11
- 230000003213 activating effect Effects 0.000 claims 2
- 238000001514 detection method Methods 0.000 abstract description 8
- 230000008569 process Effects 0.000 description 25
- 230000006870 function Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 12
- 238000013500 data storage Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000007639 printing Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004575 stone Substances 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Landscapes
- Stored Programmes (AREA)
Abstract
【課題】 ソフトウェアの検証による改ざん検知と復旧を行う情報処理装置であって、復旧で用いるソフトウェアのコピーを更新できない場合でも、復旧後の情報処理装置をセキュアに利用可能とすることを目的とする。【解決手段】 本発明は、段階的に起動される複数の部分ソフトウェアそれぞれを検証する検証手段と、前記複数の部分ソフトウェアの内で前記検証手段による検証に失敗した部分ソフトウェアを、あらかじめ保持している前記複数の部分ソフトウェアのコピーを用いて上書きし、復旧する復旧手段と、前記復旧手段によって復旧した部分ソフトウェアを更新する更新手段と、を有することを特徴する。【選択図】 図9
Description
本発明は、ソフトウェアの検証による改ざん検知と復旧を行う情報処理装置、情報処理方法およびプログラムに関する。
機器を制御するソフトウェアを第三者が改ざんし、不正利用する攻撃が問題になっている。不正利用されてしまうと、情報資産を盗まれたり、他のシステムを攻撃する踏み台に利用されたりすることで、機器の所有者に甚大な被害を引き起こす危険性がある。そういった攻撃に対し、ソフトウェアが改ざんされていないことを機器利用時に検証する手段が考案されている。
特許文献1には、機器の起動時に「ソフトウェアを検証した後に実行する」という起動時検証と、任意のタイミングで実行するソフトウェアに対して「実行に先立って検証する」という実行時検証の二つの機能を有する機器が開示されている。そして、当該機器では、起動時検証によって実行時検証を行うソフトウェアを検証し、機器の起動から実行時検証まで、検証結果を連鎖させることを実現して、信頼性の高い機器制御ソフトウェアの利用を実現している。
また、特許文献2に開示されている技術では、まず、第一のメモリに起動用ソフトウェアを保持し、第二のメモリに起動用ソフトウェアのコピーを保持する。そして、起動時に第一のメモリの起動用ソフトウェアの改ざんを検証して改ざんを検出した場合に、第二のメモリの起動用ソフトウェアのコピーで第一のメモリの起動用ソフトウェアを上書きすることで、起動用ソフトウェアの改ざん検知と自動復旧を実現している。
しかしながら、特許文献1には、改ざんを検出した時の処理の言及がない。よって、改ざんを検出した場合、機器の起動を止めることになる。
一方、特許文献2には、改ざんの検知と自動復旧の言及がある。しかし、自動復旧処理で用いる起動用ソフトウェアのコピーを更新できない構成となっている。つまり、更新できない起動用ソフトウェアのコピーから起動用ソフトウェアを復旧した場合、古いバージョンの起動用ソフトウェアで復旧し、これで起動処理することを意味する。よって、古いバージョンの起動用ソフトウェアにバグや脆弱性が含まれていた場合、バグや脆弱性を含んだ起動用ソフトウェアを実行することになってしまう。
本発明は、ソフトウェアの検証による改ざん検知と復旧を行う情報処理装置であって、復旧で用いるソフトウェアのコピーを更新できない場合でも、復旧後の情報処理装置をセキュアに利用可能とすることを目的とする。
本発明は、段階的に起動される複数の部分ソフトウェアそれぞれを検証する検証手段と、前記複数の部分ソフトウェアの内で前記検証手段による検証に失敗した部分ソフトウェアを、あらかじめ保持している前記複数の部分ソフトウェアのコピーを用いて上書きし、復旧する復旧手段と、前記復旧手段によって復旧した部分ソフトウェアを更新する更新手段と、
を有することを特徴する。
を有することを特徴する。
本発明によれば、ソフトウェアの検証による改ざん検知と復旧を行う情報処理装置であって、復旧で用いるソフトウェアのコピーを更新できない場合でも、復旧後の情報処理装置をセキュアに利用可能とすることが出来る。
(実施形態1)
以下、本発明の実施形態を図面に基づいて解説する。本実施形態では、システム起動時のソフトウェア検証処理について説明する。ここではMFP(Multi-Function Peripheral:複合機)を例に実施例を説明するが、本発明は複合機以外の任意の情報処理装置に適用可能な技術である。
以下、本発明の実施形態を図面に基づいて解説する。本実施形態では、システム起動時のソフトウェア検証処理について説明する。ここではMFP(Multi-Function Peripheral:複合機)を例に実施例を説明するが、本発明は複合機以外の任意の情報処理装置に適用可能な技術である。
図1は本発明に係るMFPとクライアントPCの接続形態を示すブロック図である。MFP100とクライアントPC110はLAN120を介して接続されている。MFP100はユーザとの入出力を行う操作部102を有する。MFP100は電子データを紙媒体に出力するプリンタ部103を有する。MFP100は紙媒体を読み込み電子データに変換するスキャナ部140を有する。操作部102とプリンタ部103とスキャナ部140はコントローラ部101に接続され、コントローラ部101の制御に従い複合機としての機能を実現する。クライアントPC110は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が接続され、その先にHDD211が接続される。ここではHDD211と示したが、HDDに限定するものではなく、Flashメモリ(登録商標)等の不揮発なストレージでもよい。CPU201はHDD211をMFPの機能を実現するためのプログラム、各種設定データおよびドキュメントファイルを永続的に記憶するために使用する。I/Oコントローラ203にはネットワークI/F204が接続され。ネットワークI/F204の先には、有線LANデバイス210が接続される。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/Fに接続された任意の機器の制御を行う。FLASHROM220はCPU201およびBIOS検証ユニット221とバスで接続されていて、BIOS(Basic Input Output System)を実現する制御プログラムを記憶している。ROM222はBIOS検証ユニット221とバスで接続されていて、BIOS(Basic Input Output System)を実現する制御プログラムのコピーを記憶している。BIOS検証ユニット221はROM222、FLASHROM220およびCPU201とバスで接続されている。そして、FLASHROM220に記憶されたBIOSの検証、ROM222に記憶されたBIOSのコピーによるFLASHROM220に記憶されたBIOSの復旧、およびCPUへのBIOS起動指示を行う。ここで、BIOS検証ユニット221はハードウェアであることを明記し、BIOS検証がハードウェア検証であることを確認しておく。BIOS検証ユニット221とCPU201を繋ぐバスは悪意のある第三者に細工をされないために、同一チップ、またはそれに準ずる構成で実現され外部から物理的に確認できない形態になっている。実施例1では、BIOS検証ユニット221の制御機構は集積回路としてハードウェアで実現されている構成を想定するが、専用のCPU、制御ソフトを記憶したROMといった要素を同一チップ内に実装し、製造後に変更できない構成であっても良い。
コピー機能を実施する場合は、CPU201がSATA I/F205を介してHDD211からプログラムデータをDRAM202に読み込む。CPU201がDRAM202に読み込まれたプログラムに従いパネルI/F206を介して操作部102に対するユーザからのコピー指示を検出する。CPU201はコピー指示を検出するとスキャナI/F208を介してスキャナ部104から原稿を電子データとして受け取りDRAM202に格納する。CPU201はDRAM202に格納した画像データに対して出力に適した色変換処理などを実施する。CPU201はDRAM202に格納した画像データをプリンタI/F207を介してプリンタ部103に転送し、紙媒体への出力処理を実施する。
PDL(Page Description Language)印刷を実施する場合は、クライアントPC110がLAN120を介して印刷指示を行う。CPU201はSATA I/F205を介してHDD211からプログラムデータをDRAM202に読み込み、DRAM202に読み込まれたプログラムに従いネットワークI/F204を介して印刷指示を検出する。CPU201はPDL送信指示を検出するとネットワークI/F204を介して印刷データを受信し、SATA I/F205を介してHDD211に印刷データを保存する。CPU201は印刷データの保存が完了すると、HDD211に保存した印刷データをDRAM202に画像データとして展開する。CPU201はDRAM202に格納した画像データに対して出力に適した色変換処理などを実施する。CPU201はDRAM202に格納した画像データをプリンタI/F207を介してプリンタ部103に転送し、紙媒体への出力処理を実施する。
図3はMFPのコントローラ部101で実行されるソフトウェアの構造をあらわすブロック図である。コントローラ部101で実行されるソフトウェアは全て、CPU201が実行する。CPU201は、FLASHROM220に記憶されたBIOS360を実行する。CPU201は、HDD211に記憶された、ローダ370、Initrd380、コントローラソフト300をDRAM202に読み込んだ後に実行する。BIOS360はI/Oコントローラ203やDRAM202をCPU201が制御するための基本処理を実行する。これらは、一群の部分ソフトウェアであり、段階的に起動することにより、MFP の起動を行うことが出来る。BIOS360は内部的にBIOSとしての制御ソフトと制御ソフトに対応する署名データで構成されている。ローダ読み込み検証復旧部361はBIOS360の制御ソフトに含まれ、ローダに付与された署名に対応する公開鍵を含む。更に、公開鍵を用いてローダを検証する処理、および検証に失敗した場合に別途記憶しているローダのコピーを用いてローダを復旧する処理を有する。さらにBIOS360はHDD211からローダ370を読み込み、開始する処理を含む。ローダ370はHDD211からカーネル390、Initrd380を読み込み、開始する処理を実行する。ローダ370は内部的にローダとしての制御ソフトと制御ソフトに対応する署名データで構成されている。カーネル・Initrd読み込み検証復旧部371はローダ370に含まれ、カーネル、Initrdに付与された署名に対する公開鍵を含む。更に、公開鍵を用いてカーネル、Initrdを検証する処理、および検証に失敗した場合に別途記憶しているカーネル、Initrdのコピーを用いてカーネル、Initrdをそれぞれ復旧する処理を有する。Initrd380はHDD211からコントローラソフト300を読み込み、開始する処理を実行する。Initrd380は内部的にInitrdとしての制御ソフトと制御ソフトに対する署名データで構成されている。起動時検証復旧部381はInitrd380に含まれ、付与された署名に対する公開鍵を含む。更に、コントローラソフト300を構成する全てのプログラムファイル等を起動時に検証する処理と、検証に失敗した場合に別途記憶しているプログラムファイルのコピーを用いてプログラムファイルを復旧する処理を有する。ここで、全ての署名データに対する秘密鍵はソフトウェアの開発時のみ利用され一般に流通することはない。
操作制御部301は操作部102にユーザ向けの画面イメージを表示、およびユーザ操作の検知と画面上に表示したボタン等の画面部品に紐づけられた処理を実行する。データ記憶部302は他の制御部からの要求でデータをHDD211に記憶、および読み出しを行う。例えば、ユーザが何らかの機器設定を変更したい場合は、操作部102にユーザが入力した内容を操作制御部301が検知し、操作制御部301からの要求でデータ記憶部302が設定値としてHDD211に保存する。ネットワーク制御部307はデータ記憶部302に記憶された設定値に従い、システム起動時や、設定変更検出時にIPアドレスなどネットワーク設定をTCP/IP制御部308に行う。TCP/IP制御部308は他の制御からの指示に従い、ネットワークI/F204を介して、ネットワークパケットの送受信処理を行う。ジョブ制御部303は他の制御部からの指示に従って、ジョブ実行の制御を行う。画像処理部304はジョブ制御部303からの指示に従って、画像データを用途ごとに適した形式に加工する。印刷処理部305はジョブ制御部303からの指示に従い、プリンタI/F207を介して、紙媒体に画像を印刷し出力する。読み取り制御部306はジョブ制御部303からの指示時に従い、スキャナI/F208を介して、設置された原稿を読み込む。認証部309は管理者権限が必要な操作に対して、操作者が管理者であるか否かを判断する処理を行う。ソフトウェア更新部310は、BIOS360、ローダ370、Initrd380、カーネル390およびコントローラソフト300を構成するプログラムファイルを更新する処理を行う。USB制御部311はUSB I/F209を制御し、USB接続された任意の機器の制御を行う。起動制御部312はコントローラソフト300を構成するプログラムファイル起動の制御を行う。後述する起動設定データに基づき、順次各プログラムファイルを起動する。実行時検証部322は、コントローラソフト300を構成する、全てのプログラムファイルを実行時に検証する処理を含む。なお、実行時検証部322が検証する方法として、正解値リストをあらかじめ保持し、プログラムファイルの実行時に正解値リストと突き合わせて検証するホワイトリスト方式がある。しかし、本発明は実行時検証部322の特定の検証方式に依存する発明でないため、実行時検証部322の検証方式については特に限定しない。
例えば、コピー機能を実行する場合は操作制御部301がコピー機能の開始要求を検知し、ジョブ制御部303にコピーを指示する。ジョブ制御部303は読み取り制御部306に原稿読み取りを指示し、スキャン画像を取得する。ジョブ制御部303は画像処理部305に指示し、スキャン画像を印刷に適した形式に変換する。ジョブ制御部303は印刷制御部305に印刷を指示し、コピー結果を出力する。
図4にHDD211に配置されるデータの例を示す。図3ではコントローラ部101で実行されるソフトウェアの機能構成を示したが、BIOS360を除くこれらのプログラムファイル(ローダ370/initrd380/カーネル390/コントローラソフト300)はHDD211に格納される。さらに、BIOS360を除くこれらのプログラムファイルのコピー(ローダのコピー470/initrdのコピー480/カーネルのコピー490/コントローラソフトのコピー400)もHDD211に格納される。さらに、図示していないが、各種設定データ、印刷データやスキャンデータなどの各種ドキュメントデータもHDD211に格納される。
図5は、Initrd380に含まれて起動時検証復旧部381が、検証処理に利用する起動時検証用正解値リストのサンプルである。起動時検証用正解値リストはコントローラソフト300に含まれる全てのプログラムファイルに対して、ファイル名501とハッシュ値502の組み合わせをリスト化したものである。データの内容としては、少なくともファイル名称、ファイルの配置場所(ディレクトリ上の位置)、ファイルから計算したハッシュ値を含むものとする。さらに、起動時検証用正解値リストは、コントローラソフト300に含まれる全プログラムファイルだけでなく、コントローラソフト300の起動に関わる全起動設定ファイルのハッシュ値を含んでもよい。
図6は操作部102に表示される、メニュー画面601であり複合機が持つさまざまな機能の実行をユーザが指示するためのものである。ボタン602はコピー機能をユーザが指示するために利用される。ボタン603はスキャンして保存する機能をユーザが指示するために利用される。ボタン604はスキャンして送信する機能をユーザが指示するために利用される。ボタン605は機器の設定変更をユーザが指示するために利用される。ボタン605を押すことで、設定画面701を表示することができる。表示領域606は機器の動作中に発生したさまざまなユーザ向けのメッセージを表示する。
図7は操作部102に表示される、設定画面701でありさまざまな設定をユーザが指示するためのものである。この画面自体に具体的な設定項目はなく、詳細な設定項目へのガイドとなる中間階層である。ボタン702を押すことでセキュリティ設定画面901を表示することができる。ボタン703を押すことで、不図示の機器設定画面を表示することができる。ボタン704を押すことで、不図示のユーザ設定画面を表示することができる。ボタン705を押すことで、ソフトウェアの更新を開始することができる。表示領域706は機器の動作中に発生したさまざまなユーザ向けのメッセージを表示する。
図8は操作部102に表示される、管理者認証画面801であり管理者認証コードをユーザが入力するためのものである。この画面は、管理者権限が必要な機能の実施に先立って表示され、管理者権限を有する操作者であることを確認する。例えば、セキュリティ設定画面901の表示前や、ボタン705押下してからソフトウェアの更新を開始する前に表示される。802はユーザが管理者認証コードを入力する領域であり、ボタン803は802に入力した認証コードの確認開始するために使われる。認証コードの確認は、認証部309によって行われ、認証に成功した場合は管理者権限が必要な処理を実行し、失敗した場合は管理者権限が必要な処理の実行を中止する。
図9はセキュリティ設定画面901であり、MFP100に対するセキュリティ設定を行う。起動時検証902が選択された場合はシステム起動時に行う起動時検証機能が有効化される。実行時検証903が選択された場合は機能実行時に行う実行時検証機能が有効化される。ボタン904を押下すると、セキュリティ選択画面901の選択状態が、機器設定としてデータ記憶部302に記憶される。起動時検証機能と実行時検証機能のソフトウェア検証処理は検証のための計算時間が必要なため、検証しない場合に比べて機器の動作速度が劣化する。つまり、安全性と処理性能がトレードオフの関係にある。管理者は運用、設置ポリシー、ユーザの満足度を鑑みて設定する必要がある。MFP100はマルチユーザデバイスであるが、この画面は管理者権限を持つ操作者しか操作することができない。設定の影響を受けるのは全ユーザであるが、設定を行うのは管理者のみである。
図10は操作部102に表示される、エラー画面1001である。この画面はシステム停止エラーとしてユーザにファームウェアが改ざんされ、システムを停止したことを通知している。また、この画面から通常の機能実行画面に遷移することはできず、ユーザはMFP100を利用することはない。
図11を用いて、MFP100の起動処理フロー、および起動時のプログラムファイル等を検証する処理フローを説明する。図11の検証処理および復旧処理は起動時検証902が選択されている場合のみ実行される。この処理は、起動するたびに一度行われる。ここで図11(A)に従いMFP100が実施する処理は、BIOS検証ユニット221が実施するものである。以下の説明で、図(A)の検証処理をハードウェア検証と呼ぶ。図11(B)に従いMFP100が実施する処理は、HDD211に格納されたプログラムをCPU201がDRAM202に読み込んだのち、CPU201の演算処理として実施するものである。以下の説明で、図11(B)の検証処理をソフトウェア検証と呼ぶ。夫々の検証処理は同じMFP100による検証処理であっても、検証主体が異なること、ハードウェア検証はCPU201の実行するソフトウェアの検証処理ではないことに留意されたい。
電源が供給され、起動処理が開始されるとBIOS検証ユニット221が起動され、S1101としてBIOSの検証処理を開始する。
S1102でMFP100はBIOS360の検証処理を実施し、成功したかどうか確認する。成功した場合はS1103を実行し、失敗した場合はS1105を実行する。検証処理としてはBIOS検証ユニット221がFLASHROM220から読み込んだBIOS360の署名に対して、BIOS検証ユニット221に配置された公開鍵を用いて署名検証を行う。本発明の起動時検証は、起動順序を考慮した署名検証であり、署名検証主体は次に起動する主体の署名検証を行うことでセキュリティ性を担保する。
S1103でMFP100はCPU201に指示することでBIOS360を起動する。
S1104でMFP100はBIOS360の検証処理および復旧処理を終了する。
S1105でMFP100はBIOS360の復旧処理を実施する。復旧処理は、BIOS検証ユニット221がROM222から読み込んだBIOSのコピーに対してBIOS検証ユニット221に配置された公開鍵を用いて署名検証を行う。そして、署名の検証に成功した場合に、ROM222からFLASHROM220へBIOSを上書きコピーする。必要に応じて、BIOS検証ユニット221に配置された公開鍵を用いて、FLASHROM220へ上書きしたBIOSを読み込んで署名検証を行う。BIOSのコピー元の読み込み時の署名検証、およびBIOSの上書きコピー後の署名検証と二重に検証することによって、BIOSのセキュリティを担保する。MFP100は上記に示したBIOS360の復旧処理を実施し、成功したかどうか確認する。成功した場合はFLASHROM220中のBIOS復旧フラグをセットしてS1103を実行する。失敗した場合はS1106を実行する。
S1106でMFP100はBIOSの起動を行わず、起動シーケンスをこのステップで中止することでシステムを停止する。ここで、BIOS検証ユニット221はユーザ通知に関するデバイスを持たないため、通知は行わないが、LED(Light Emitting Diode)を接続して、発光させることで通知をおこなっても良い。
ハードウェア検証は、ハードウェアで実装された検証方法であり、この検証処理を改ざんするためには集積回路の改ざんが必要であり、極めて堅牢な検証方法である。
BIOS360が起動されると、S1111としてHDD211に配置されたソフトウェアの検証処理を開始する。
S1112でMFP100はローダ読み込み検証復旧部361を利用して、ローダ370の検証処理を実施し、成功したかどうか確認する。成功した場合はS1113を実行し、失敗した場合はS1131を実行する。検証処理としては、ローダ読み込み検証復旧部361が持つ公開鍵を用いて、HDD211から読み込んだ次の起動対象であるローダ370に対して、署名検証を行う。
S1113でMFP100はローダを起動する。
S1114でMFPはカーネル・Initrd読み込み検証復旧部371を利用して、カーネル390の検証処理を実施し、成功したかどうか確認する。成功した場合はS1115を実行し、失敗した場合はS1132を実行する。検証処理としては、カーネル・Initrd読み込み検証復旧部371が持つカーネル390の署名に対する公開鍵を用いて、HDD211から読み込んだ次の起動対象であるカーネル390に対して、署名検証を行う。
S1115でMFP100はカーネルを起動する。
S1116でMFPはカーネル・Initrd読み込み検証復旧部371を利用して、Initrd380の検証処理を実施し、成功したかどうか確認する。成功した場合はS1117を実行し、失敗した場合はS1133を実行する。検証処理としては、カーネル・Initrd読み込み検証復旧部371が持つInitrd380の署名に対する公開鍵を用いて、HDD211から読み込んだ次の起動対象であるInitrd380に対して、署名検証を行う。
S1117でMFP100はInitrd380を起動する。
S1118でMFP100は起動時検証復旧部381を利用して、コントローラソフト300等のHDD211に記録されたコントローラソフト300の検証を実施し、成功したかどうか確認する。成功した場合はS1119を実行し、失敗した場合はS1134を実行する。検証処理はHDD211から読み込んだ起動時検証用正解値リスト421に記載されたコントローラソフト300に含まれる全プログラムファイルを対象とした処理である。まず、起動時検証復旧部381が持つ起動時検証用正解値リスト421の署名に対する公開鍵を用いて、起動時検証用正解値リスト421の署名検証を行う。次に、起動時検証用正解値リスト421に記載されたハッシュ値と、HDD211を読み込んで再計算したファイルのハッシュ値とを、ファイル毎に比較することによって検証する。ハッシュ値が一致する場合を検証成功と判断し、ハッシュ値が一致しない場合を検証失敗と判断する。
S1119でMFP100はS1105、S1131、S1132、S1133、またはS1134のいずれかのステップで復旧処理を実行したか否かを示す復旧フラグを確認する。復旧フラグについては後述する。復旧フラグが復旧処理の実行を示す場合はS1120を実行し、復旧処理の未実行を示す場合はS1121を実行する。
S1120でMFP100は、ソフトウェア更新部310を用いて、復旧対象となったソフトウェアを更新する。S1105で復旧したことを示す復旧フラグの場合はBIOS360を更新し、S1131で復旧したことを示す復旧フラグの場合はローダ370を更新する。更に、S1132で復旧したことを示す復旧フラグの場合はカーネル390を更新し、S1133で復旧したことを示す復旧フラグの場合はInitrd380を更新し、S1134で復旧したことを示す復旧フラグの場合はプログラムファイルを更新する。更新後、S1121を実行する。なお、S1120の更新後、自動的にS1101から再起動してもよい。S1101から再起動することで、更新済みの最新バージョンのソフトウェアでの実行を強制することができる。
S1121でMFP100はコントローラソフト300の起動を開始する。コントローラソフト300は複数のプログラムファイルに分割されているため、システムの起動のために必要なプログラムファイルが順次起動される。
S1131でMFP100はローダ読み込み検証復旧部361を利用して、ローダ370の復旧処理を実施する。復旧処理は、ローダ読み込み検証復旧部361がHDD211から読み込んだローダのコピー470に対してローダ読み込み検証復旧部361に配置された公開鍵を用いて署名検証を行う。署名の検証に成功した場合には、HDD211上のローダのコピー470からローダ370へ上書きコピーする。必要に応じて、ローダ読み込み検証復旧部361は配置された公開鍵を用いて、上書きしたローダ370を読み込んで署名検証を行う。ローダのコピー470の読み込み時の署名検証、および上書きコピー後のローダ370の署名検証と二重に検証することによって、ローダ370のセキュリティを担保する。ローダ読み込み検証復旧部361は上記に示したローダ370の復旧処理を実施し、成功したかどうか確認する。成功した場合はHDD211中のローダの復旧フラグをセットしてS1113を実行する。失敗した場合はS1135を実行する。
S1132でMFP100はカーネル・Initrd読み込み検証復旧部371を利用して、カーネル390の復旧処理を実施する。復旧処理は、カーネル・Initrd読み込み検証復旧部371がHDD211から読み込んだカーネルのコピー490に対してカーネル・Initrd読み込み検証復旧部371に配置された公開鍵を用いて署名検証を行う。署名の検証に成功した場合には、HDD211上のカーネルのコピー490からカーネル390へ上書きコピーする。必要に応じて、カーネル・Initrd読み込み検証復旧部371は配置された公開鍵を用いて、上書きしたカーネル390を読み込んで署名検証を行う。カーネルのコピー490の読み込み時の署名検証、および上書きコピー後のカーネル390の署名検証と二重に検証することによって、カーネル390のセキュリティを担保する。カーネル・Initrd読み込み検証復旧部371は上記に示したカーネル390の復旧処理を実施し、成功したかどうか確認する。成功した場合はHDD211中のカーネルの復旧フラグをセットしてS1115を実行する。失敗した場合はS1135を実行する。
S1133でMFP100はカーネル・Initrd読み込み検証復旧部371を利用して、Initrd380の復旧処理を実施する。復旧処理は、カーネル・Initrd読み込み検証復旧部371がHDD211から読み込んだInitrdのコピー480に対してカーネル・Initrd読み込み検証復旧部371に配置された公開鍵を用いて署名検証を行う。署名の検証に成功した場合には、HDD211上のInitrdのコピー480からInitrd380へ上書きコピーする。必要に応じて、カーネル・Initrd読み込み検証復旧部371は配置された公開鍵を用いて、上書きしたInitrd380を読み込んで署名検証を行う。Initrdのコピー480の読み込み時の署名検証、および上書きコピー後のInitrd380の署名検証と二重に検証することによって、Initrd380のセキュリティを担保する。カーネル・Initrd読み込み検証復旧部371は上記に示したInitrd380の復旧処理を実施し、成功したかどうか確認する。成功した場合はHDD211中のInitrdの復旧フラグをセットしてS1117を実行する。失敗した場合はS1135を実行する。
S1134でMFP100は起動時検証復旧部381利用して、コントローラソフト300の復旧処理を実施する。復旧処理は、起動時検証復旧部381がHDD211から読み込んだコントローラソフトのコピー400に対して、S1118同様の検証を行う。検証に成功した場合には、HDD211上のコントローラソフトのコピー400からコントローラソフト300へ上書きコピーする。必要に応じて、起動時検証復旧部381はS1118同様の検証処理で、上書きしたコントローラソフト300を読み込んで検証を行う。コントローラソフトのコピー400の読み込み時の検証、および上書きコピー後のコントローラソフト300の署名検証と二重に検証することによって、コントローラソフト300のセキュリティを担保する。起動時検証復旧部381は上記に示したコントローラソフト300の復旧処理を実施し、成功したかどうか確認する。成功した場合はHDD211中のコントローラソフトの復旧フラグをセットしてS1119を実行する。失敗した場合はS1135を実行する。
S1135でMFP100は改ざんを検知したことを、操作部102にエラー画面901を表示することでユーザに通知する。
S1136でMFP100は起動シーケンスをこのステップで中止することでシステムを停止する。
S1122でMFP100はHDD211に配置されたソフトウェアの検証処理、および復旧処理を終了する。
一般的にソフトウェア検証はソフトウェアによって実装された検証方法であるため、記憶部のソフトウェアを書き換えることで改ざんすることができる。しかし、上記フローの様に、検証を行うソフトウェアをあらかじめ別の構成部によって検証しておくことで、改ざんされていないことを保証できる。もし改ざんされている場合でも、あらかじめ保持しているコピーから復旧して実行を継続することも保証できる。さらに、コピーから復旧して起動した場合に、コピーから復旧したソフトウェアを更新することで、コピーが古いソフトウェアの場合でも、MFPの利用者を介することなく、最新バージョンのソフトウェアに更新することができる。そして、連鎖するソフトウェア検証の起点に、ハードウェア検証を用いることにより、システム全体が改ざんされていないことを保証できる。さらに、実行時検証部の起動に、ソフトウェア検証を適用させることで、システム起動後の改ざんに対しても、ハードウェア検証を起点とする強固な信頼性を確保できる。
なお、S1120では、MFP100はソフトウェア更新部310を用いて、復旧対象となったソフトウェアを更新すると述べた。しかし、復旧対象となるソフトウェアは、BIOS360、ローダ370、カーネル390、initrd380、またはコントローラソフト300と、異なる種別のソフトウェアであって、それぞれが独自のソフトウェア更新方法を用いる場合も想定できる。この場合、単一のソフトウェア更新部310によって更新できないソフトウェアがあることも考えられる。これに対抗するため、ソフトウェア更新部310は、更新を促すメッセージを表示して、MFP100の利用者による更新を促してもよい。図12にBIOS360を想定した場合に表示するメッセージを例示する。別の方法として、ソフトウェア更新部310は、復旧対象となったソフトウェアの更新を試みて、更新できない場合は、更新を促すメッセージを表示して、MFP100の利用者による更新を促してもよい。
さらに、S1120では、MFP100はソフトウェア更新部310を用いて、復旧対象となったソフトウェアを更新すると述べた。ソフトウェアの更新処理が、MFP100の起動モードと関連づいている場合もある。つまり、ソフトウェアの更新を行いたい場合は、MFP100を更新処理モードで起動する必要がある場合である。これに対抗するために、ソフトウェア更新部310は、更新するために、更新処理モードでの再起動を促すメッセージを表示したり、更新処理モードで再起動したりしてもよい。
また、S1119でMFP100はS1105、S1131、S1132、S1133、またはS1134のいずれかのステップで復旧処理を実行したか否かを示す復旧フラグを確認する。しかし、図4に示すように、ローダのコピー470、initrdのコピー480、カーネルのコピー490、およびコントローラソフトのコピー400はHDD211に格納されている。HDD211に格納していても、ファイルシステム外の領域に格納して実質的に更新不可能とする構成も可能であるが、通常、これらHDD211に格納されているソフトウェアは更新可能であって、最新バージョンを維持することができる場合がある。よって、これらのソフトウェアから復旧した場合、更新する必要はないことも想定できる。そこで、復旧処理を実行したか否かを示す復旧フラグを確認すると同時に、復旧対象のソフトウェアがHDD211のような書き換え可能なストレージに含まれているか、ROM222のように書き換え不可能なストレージに含まれているかも確認する。その結果、復旧処理を実行した、かつ書き換え不可能なストレージのソフトウェアである場合に、S1120を実行し、その他の場合はS1121を実行することもできる。これにより、S1120のソフトウェアの更新処理を、より限定した条件でだけ実行することができる。
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
Claims (7)
- 段階的に起動される複数の部分ソフトウェアそれぞれを検証する検証手段と、
前記複数の部分ソフトウェアの内で前記検証手段による検証に失敗した部分ソフトウェアを、あらかじめ保持している前記複数の部分ソフトウェアのコピーを用いて上書きし、復旧する復旧手段と、
前記復旧手段によって復旧した部分ソフトウェアを更新する更新手段と、
を有することを特徴する情報処理装置。 - 前記複数の部分ソフトウェアのコピーを、書き換え不可能な領域に保持する保持手段を更に有することを特徴とする請求項1に記載の情報処理装置。
- 前記復旧手段によって復旧がなされた場合、前記更新手段の起動を促すメッセージを表示する表示手段を更に有することを特徴とする請求項1または請求項2に記載の情報処理装置。
- 前記復旧手段によって復旧がなされた場合、前記更新手段を起動させる更新処理モードで前記情報処理装置を起動させる起動手段を更に有することを特徴とする請求項1または請求項2に記載の情報処理装置。
- 前記検証手段は、システム起動時にハードウェアで実装された方法によって前記複数の部分ソフトウェアそれぞれを検証し、かつ検証が成功した前記部分ソフトウェアによって他の前記部分ソフトウェア、および前記部分ソフトウェアの起動に関わる設定ファイルを検証する
ことを特徴とする請求項1乃至請求項4のいずれか1項に記載の情報処理装置。 - 検証手段が、段階的に起動される複数の部分ソフトウェアそれぞれを検証する検証工程と、
復旧手段が、前記複数の部分ソフトウェアの内で前記検証工程による検証に失敗した部分ソフトウェアを、あらかじめ保持している前記複数の部分ソフトウェアのコピーを用いて上書きし、復旧する復旧工程と、
更新手段が、前記復旧工程によって復旧した部分ソフトウェアを更新する更新工程と、
を有することを特徴する情報処理方法。 - コンピュータを、
段階的に起動される複数の部分ソフトウェアそれぞれを検証する検証手段と、
前記複数の部分ソフトウェアの内で前記検証手段による検証に失敗した部分ソフトウェアを、あらかじめ保持している前記複数の部分ソフトウェアのコピーを用いて上書きし、復旧する復旧手段と、
前記復旧手段によって復旧した部分ソフトウェアを更新する更新手段と、
を有することを特徴する情報処理装置として機能させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021061081A JP2022157063A (ja) | 2021-03-31 | 2021-03-31 | 情報処理装置、情報処理方法およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021061081A JP2022157063A (ja) | 2021-03-31 | 2021-03-31 | 情報処理装置、情報処理方法およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022157063A true JP2022157063A (ja) | 2022-10-14 |
Family
ID=83558946
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021061081A Pending JP2022157063A (ja) | 2021-03-31 | 2021-03-31 | 情報処理装置、情報処理方法およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2022157063A (ja) |
-
2021
- 2021-03-31 JP JP2021061081A patent/JP2022157063A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4704233B2 (ja) | 情報処理装置及びその制御方法 | |
JP4954031B2 (ja) | 画像処理装置及び再インストール方法 | |
JP2019212114A (ja) | 情報処理装置、その制御方法およびプログラム | |
CN112114842A (zh) | 信息处理装置及其控制方法和储存介质 | |
JP7179482B2 (ja) | 情報処理装置、制御方法、およびそのプログラム | |
JP2023129643A (ja) | 情報処理装置、情報処理方法およびプログラム | |
JP2022135443A (ja) | 情報処理装置、情報処理方法及びプログラム | |
US11526597B2 (en) | Information processing apparatus, method of controlling the same, and storage medium | |
JP2005148934A (ja) | 情報処理装置、プログラム起動方法、プログラム起動プログラム及び記録媒体 | |
JP7374780B2 (ja) | 情報処理装置および情報処理装置の制御方法 | |
JP2020082441A (ja) | 画像形成装置、その制御方法、及びプログラム | |
JP2022157063A (ja) | 情報処理装置、情報処理方法およびプログラム | |
JP7182966B2 (ja) | 情報処理装置、情報処理装置の起動方法、及びプログラム | |
US11330129B2 (en) | Image forming system, image forming apparatus, and storing medium storing application control program | |
JP2022071954A (ja) | 情報処理装置、情報処理方法およびプログラム | |
JP7282616B2 (ja) | 情報処理装置、情報処理方法およびプログラム | |
JP7500400B2 (ja) | 情報処理装置、情報処理装置の制御方法及びプログラム | |
JP7378980B2 (ja) | 情報処理装置、情報処理方法およびプログラム | |
JP2020053002A (ja) | 情報処理装置とその制御方法、及びプログラム | |
JP2020052597A (ja) | 情報処理装置、情報処理装置の制御方法、及び、プログラム | |
JP7129296B2 (ja) | 画像処理装置、画像処理装置の制御方法 | |
JP2023064046A (ja) | 情報処理装置、及びその起動方法 | |
JP2023172570A (ja) | 情報処理装置及び情報処理装置の制御方法 | |
JP2023124089A (ja) | 情報処理装置 | |
JP2021128469A (ja) | 情報処理装置と、情報処理装置における起動方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20231213 |