JP2020091698A - 情報処理装置及びその制御方法 - Google Patents

情報処理装置及びその制御方法 Download PDF

Info

Publication number
JP2020091698A
JP2020091698A JP2018228922A JP2018228922A JP2020091698A JP 2020091698 A JP2020091698 A JP 2020091698A JP 2018228922 A JP2018228922 A JP 2018228922A JP 2018228922 A JP2018228922 A JP 2018228922A JP 2020091698 A JP2020091698 A JP 2020091698A
Authority
JP
Japan
Prior art keywords
boot program
verification
program
information processing
unit
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
JP2018228922A
Other languages
English (en)
Inventor
大輔 森川
Daisuke Morikawa
大輔 森川
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 JP2018228922A priority Critical patent/JP2020091698A/ja
Publication of JP2020091698A publication Critical patent/JP2020091698A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】システム起動時に装置内部で発生するノイズの影響により、不揮発性メモリからローダーにより読み出したプログラムデータにノイズが混入し、プログラムの改ざんと誤判断されることを防止する。【解決手段】情報処理装置のプログラム改ざん検知処理部は、改ざんされたと判断した場合には、不揮発性メモリから、プログラムおよび検証用公開鍵と、プログラム署名を、情報処理装置の内部RAMに読み込む動作を所定の回数繰り返す。所定回数以上繰り返しても、改ざんされたとの判断が覆らない場合には、情報処理装置の動作を停止する。【選択図】図4

Description

本発明は、情報処理装置及びその制御方法に関するものである。
セキュリティ向上を目的としてメモリに記憶されているプログラムの正当性を検証する技術がある。特許文献1は、不揮発性メモリからロードされた揮発性メモリ内の共有ライブラリが改竄されていると判定すると、不揮発性メモリからその共有ライブラリを揮発性メモリに再ロードする技術を開示する。
特許第5740573号
情報処理装置が行うブート処理では、装置内の各部で多くの電力を消費する。そのため不揮発性メモリからブートプログラムを読み出すときにブートプログラムにノイズが混入することがある。そのため不揮発性メモリに記憶されているブートプログラムに改竄がなかったとしても、ノイズが混入したブートプログラムの正当性を検証してブートプログラムに改竄があると判定され得る。
本発明の情報処理装置によれば、プログラムを実行する制御手段と、前記制御手段が実行するブートプログラムを記憶する記憶手段と、前記制御手段が前記ブートプログラムを実行する前に、前記記憶手段から前記ブートプログラムを読み出して当該読み出したブートプログラムの正当性を検証し、当該検証において前記ブートプログラムが正当であると確認した場合に前記制御手段を前記記憶手段に記憶された前記ブートプログラムを実行できる状態にする検証手段と、を有する情報処理装置において、前記検証手段は、前記検証において前記ブートプログラムの正当性を確認できなかった場合に、前記記憶手段から前記ブートプログラムを再度読み出して正当性を検証し、当該2回目の検証において前記ブートプログラムが正当であると確認した場合に前記制御手段を前記記憶手段に記憶された前記ブートプログラムを実行できる状態にすることを特徴とする。
本発明によれば、ブートプログラムを再度読み出して正当性の検証をおこなうことができる。
実施例1の複合機のハードウェア構成図 複合機のソフトウェア構成図 複合機の起動シーケンスを示す模式図 実施例1のCPU111の起動シーケンスを示すフローチャート 実施例1のCPU101の起動シーケンスを示すフローチャート 実施例2の複合機のハードウェア構成図 実施例2のCPU111の起動シーケンスを示すフローチャート 実施例2のCPU101の起動シーケンスを示すフローチャート
以下、添付図面を参照して本発明の実施形態を詳しく説明する。
尚、本発明は、以下の実施形態のみに限定されるものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
また、実施形態に係る情報処理装置として複合機を例に説明する。しかしながら適用範囲は複合機に限定はせず、情報処理装置であればよい。
(実施例1)
図1は実施例1に係る複合機10のハードウェア構成を説明するブロック図である。
コントローラ20は、複合機10の制御を行うための後述する符号101〜137で示すハードウェアモジュールで構成される。本実施例では半導体チップとして構成されているものとして説明する。
クロック生成部30は、クロックを生成して複合機10内部の各モジュールに適した周波数のクロック信号(外部クロック)を供給する。本実施形態ではクロック生成部30は、クロック信号31をコントローラ20内のPLL(Phase Locked Loop)123に供給する。なお、周波数はクロック制御信号32によって変更可能である。
クロック制御部121は、PLL123を内部クロック制御信号33で制御する。これにより、PLL123は、クロック信号31の周波数を逓倍し、周波数が逓倍されたクロック信号をコントローラ20内部の各モジュール部に対して供給する。
クロック制御部121は、コントローラ20の起動時や動作時に、PLL123に対して逓倍の設定を変更することで、PLL123が各モジュール部に最適な周波数のクロック(内部クロック)を供給するように制御を行う。またクロック制御部121は、モジュールごとに個別にクロックをゲートして停止させることができる。
リセット生成部40は、リセット信号41を生成して複合機10内部の各モジュールへリセットを掛けたり解除したりする半導体チップである。図1ではコントローラ20へ供給するリセット信号41しか図示していないが、スキャナ(読取手段)141やプリンタ(印刷手段)142などのモジュールにも接続されているものとする。
複合機10の電源が供給されると一定時間(例えば供給電源電圧が安定するまで)リセット信号41のリセット状態を保持した後にリセット信号41を解除状態にしてコントローラ20のリセットを解除する。リセット信号41がアサートされている状態がリセット信号41のリセット状態であり、リセット信号41がデアサートされている状態がリセット信号41の解除状態である。
コントローラ20のリセットが解除されると、リセット制御部122は、コントローラ20内部の各モジュール部に対してリセット制御する。コントローラ20の起動時や動作時に、各モジュールをリセット状態にしたりリセット解除状態にしたりする制御を行う。
CPU101は、制御手段であり、複合機10のソフトウェアプログラムを実行し、装置全体の制御を行う。このCPU101は、後述するようにBIOS210を始めとした各種プログラムを実行して、プリンタ142を用いた画像の印刷およびスキャナ141を用いた画像の読み取りを制御する。また、このCPU101は、CPU111によってBIOS210の正当性が確認されるまで、リセット制御部122によってリセット状態が維持されている。また、後述するように、BIOS210の正当性が確認されると、CPU111がリセット制御部122を用いてCPU101のリセット状態を解除する。リセット状態が解除されたCPU101は、フラッシュメモリ145に記憶されているBIOS210を読み出して実行する。
RAM102は、CPU101が複合機10を制御する際に、プログラムや一時的なデータの格納などに使用される揮発性のランダムアクセスメモリである。
HDD144は、ハードディスクドライブであり、一部のアプリケーション、各種データを格納する。このHDD144は、CPU101が実行するJava(登録商標)プログラム214を格納している。なお、Javaプログラム214については後述する(以下、BIOS210などについても同様)。
フラッシュメモリ145は、不揮発性の記憶手段であり、複合機10の固定パラメータ等を格納している。またフラッシュメモリ145は、CPU101が実行するBIOS210を格納している。このBIOS210は、CPU101のブートプログラムであって、リセット状態が解除されたCPU101が初めて実行する外部プログラムである。ここでいう外部プログラムとは、CPU101の外部の記憶手段(例えばフラッシュメモリ145)に記憶されているプログラムのことである。
さらに、CPU101が実行するローダー211、カーネル212、Nativeプログラム213を格納する。なお、HDD144とフラッシュメモリ145は同一のストレージモジュールであっても良い。
CPU111は、CPU101が実行するソフトウェアプログラムの改ざんを検知する改ざん検知ソフトウェアプログラムを実行する他、CPU101と分担して複合機10の一部の制御を行う。本実施例のCPU111は、CPU101がBIOS210をフラッシュメモリ145から読み出して実行する前に、BIOS210をフラッシュメモリ145から読み出して、読み出したBIOS210の正当性を検証する検証手段として機能する。プログラムの正当性を検証する方法として、後述の署名検証を本実施例では採用する。CPU111は、検証によってBIOS210が正当であると確認した場合に、リセット制御部122を用いてCPU101のリセット状態を解除して、CPU101をフラッシュメモリ145に記憶されたBIOS210を実行できる状態にする。また、CPU111は、後述するように、検証によってBIOS210が正当でないと確認した場合に、フラッシュメモリ145からBIOS210を再度読み出して、読み出したBIOS210の正当性を再検証する。そしてCPU111は、再検証(2回目の検証)によってBIOS210が正当であると確認した場合に、リセット制御部122を用いてCPU101のリセット状態を解除する。これにより、CPU101は、フラッシュメモリ145に記憶されたBIOS210を実行できる状態になる。
ROM112は、不揮発性のリードオンリーメモリであり、前記改ざん検知ソフトウェアプログラムや後述の公開鍵などを格納している。またROM112は、CPU111が実行するブートプログラム209を格納している。
ここで、ROM112は、外部からのI/Fから書き換えられないように論理回路で構成されたマスクROM、もしくは製造時に一度だけ書き込みが可能なOTP(One Time Programmable)ROMで構成されている。
RAM113は、揮発性のランダムアクセスメモリであり、CPU111が複合機10を制御する際に、プログラムや一時的なデータの格納などに使用される。なおRAM102とRAM113は同一のモジュールで合っても良い。
電源制御部120は、コントローラ20内部の各モジュールに対する電力供給を制御するIC(Integrated Circuit)である。コントローラ20(複合機10)の起動時や動作時に、各モジュール部に対して所定の電力を供給したり停止したりすることができる。
スキャナI/F制御部131は、スキャナ141による原稿の読み取り制御する。プリンタI/F制御部132は、プリンタ142による印刷処理などを制御する。パネル制御部133は、タッチパネル式の操作パネル143を制御し、各種情報の表示、使用者からの指示の入力を受け付ける。
HDD制御部134は、HDD144に対してデータを読み書きする制御を行う。例えばRAM102に格納されている画像データをシステムバス109経由でHDD144に書きだして格納することができる。
フラッシュメモリ制御部135は、フラッシュメモリ145に対してデータを読み書きする制御を行う。フラッシュメモリ制御部135は、フラッシュメモリ145に格納されているプログラムを読み出してシステムバス109経由でRAM113へ展開する。
ネットワークI/F制御部136は、ネットワーク146上の他のデバイスやサーバーとのデータの送受信を制御する。
外部ポート制御部137は、コントローラ20の入出力ポート制御部である。例えば出力ポートを制御することによりLED147を必要に応じて点灯し、ソフトウェアやハードウェアの異常を外部に伝えることができる。ここでLED147は、BIOS210等のプログラムやCPU111等のハードウェアが正常でないことを、点灯状態、消灯状態、および点滅状態(点灯状態と消灯状態の組み合わせ)で通知する通知手段として機能する発光部である。例えば後述するようにCPU111は、最終的に、BIOS210の正当性を確認できなかった場合に、LED147の状態を所定状態に変更する。
画像処理部138は、スキャナ141から読み取った画像に画像処理(シェーディング補正)を行ったり、プリンタ142で印刷するためにプリンタ142に出力される画像に画像処理(ハーフトーン処理やスムージング処理)を行ったりするASICである。
システムバス109は、システムバス109に接続されている各モジュールを相互に接続する。このシステムバス109を介して、CPU101やCPU111からの制御信号や各装置間のデータ信号が送受信される。
図2は、実施形態1に係る複合機10が有するソフトウェアモジュールを説明するブロック図である。これらのソフトウェアはCPU101、またはCPU111が実行するものとして説明する。
通信管理部207は、ネットワーク146に接続されるネットワークI/F制御装置136を制御し、ネットワーク146を介して外部とデータの送受信を行う。
UI制御部203は、パネル制御部133を介して操作パネル143への入力を受け取り、入力に応じた処理や操作パネル143への画面出力を行う。
ブートプログラム209は、複合機10の電源を入れるとCPU111で実行されるプログラムであり、起動に関わる処理としてコントローラ20に対して起動シーケンスを実行する。このブートプログラム209は、BIOS210の改ざん検知を行うBIOS改ざん検知処理部201を有する。なお、起動シーケンスについては図3及び4を用いて後述する。
BIOS210は、CPU111によるブートプログラム209実行後に、CPU101で実行されるプログラムであり、起動に関わる処理を行うほかにローダー211の改ざん検知を行うローダー改ざん検知処理部202を有する。
ローダー211は、BIOS210の処理が終わった後にCPU101で実行されるプログラムであり、起動に関わる処理を行うほかに、カーネルの改ざん検知を行うカーネル改ざん検知処理部204を有する。
カーネル212は、ローダー211の処理が終わった後にCPU101で実行されるプログラムであり、起動に関わる処理を行うほかに、Nativeプログラム213の改ざん検知を行うプログラム改ざん検知処理部205を有する。
Nativeプログラム213は、CPU101で実行されるプログラムであり、複合機10のJavaプログラム214と連携して各機能を提供する複数のプログラムで構成される。
この複数のプログラムは、例えばスキャナIF制御部131やプリンタIF制御部132を制御するプログラムや起動プログラムなどを含む。この起動プログラムは、カーネル212によってNativeプログラム213の中から呼び出され、起動処理を行う。
またNativeプログラム213は、プログラムの中の一つとしてJavaプログラムの改ざん検知を行うJavaプログラム改ざん検知処理部206を有する。
Javaプログラム214は、CPU101で実行されるプログラムであり、複合機10のNativeプログラム213と連携して各機能を提供するプログラム(例えば、操作パネル143に画面を表示するプログラムなど)である。
次に、複写機10の起動シーケンスについて図3を用いて説明する。
図3(a)は、改ざん検知を行わずに複合機10が起動する順序を示す起動シーケンス模式図である。ブートプログラム209がBIOS210を起動し、BIOS210がローダー211を起動し、ローダー211がカーネル212を起動し、カーネル212がNativeプログラム213の中から起動プログラムを起動する。
起動プログラムの中でJavaプログラム214が起動され、以降はNativeプログラム213とJavaプログラム214が連携して複合機10の有する各機能を提供する。
図3(b)は、ブートプログラム209からBIOS210、ローダー211、カーネル212、Nativeプログラム213、Javaプログラム214が、それぞれ改ざん検知を行う処理の流れを表した起動シーケンスの模式図である。なお図中、各プログラムの保存場所、デジタル署名(以下、「署名」という)と公開鍵の保存場所をも表している。
ここで、署名とは、例えば正規のプログラム(データ列、内容)を所定のハッシュ関数によってハッシュ値(メッセージ・ダイジェスト)に変換し、公開鍵に対応する秘密鍵でハッシュ値を暗号化したものである。この暗号化されたハッシュ値を公開鍵で復号することで正規のプログラムのハッシュ値(正規のハッシュ値)を得て、改ざんの有無の検証対象であるプログラムを前述のハッシュ関数によってハッシュ値に変換(計算)し、これら2つのハッシュ値を比較する。
2つのハッシュ値が等しければ検証対象のプログラムは正規のプログラムから改ざんされていないと判定できる。すなわちプログラムが正当であると確認できる。また、もし2つのハッシュ値が異なれば検証対象のプログラムは正規のプログラムから改ざんされていると判定できる。すなわちプログラムが正当でないと確認できる。
このように署名を用いて検証対象のプログラムの改ざん有無を調べる方法を、以降では、「署名検証」と呼ぶ。また、プログラムが改ざんされていない(検証対象のプログラムが正規のものである)ことを、署名検証に成功すると呼び、プログラムが改ざんされている(検証対象のプログラムが正規のものでない)ことを、署名検証に失敗すると呼ぶ。
本実施例では、プログラムの改ざん有無を判断する方法として、このような署名および公開鍵を用いる方法を採るが、改ざんの有無を判断する他の方法でも良い。
ROM112には、ブートプログラム209の他にBIOS署名検証用の公開鍵300が含まれる。
フラッシュメモリ145には、BIOS210、ローダー211、カーネル212、Nativeプログラム213、Javaプログラム214の他に、次のものも含まれている。暗号化されたBIOS署名302、ローダー検証用公開鍵303、暗号化されたローダー署名304、カーネル検証用公開鍵305、暗号化されたカーネル署名306、Nativeプログラム検証用公開鍵307である。
また、暗号化されたNativeプログラム署名308、Javaプログラム検証用公開鍵309、暗号化されたJavaプログラム署名310もフラッシュメモリ145に含まれている。これらの公開鍵と署名は、予め複合機10を製造する段階でプログラムに対して付与されたものとする。
改ざん検知処理部201、202、204、205、206が次のプログラムが改ざんされているかどうかを検証し、改ざんされていなければ次のプログラムを起動する。このようにプログラムの改ざん検知およびプログラムの起動を順次行う起動シーケンスに従い複合機10は起動する。
続いて、本発明に係る起動シーケンスにおいて改ざん検知プログラムを実施する方法について図4、図5を用いて説明をする。
図4はCPU111が実行する起動シーケンスの処理のフローチャートであり、図5はCPU101が実行する起動シーケンスの処理のフローチャートである。
なお、本実施例では初期状態においては次の設定で動作してから図4のフローチャートの処理が実行されるものとする。
複合機10の電源が入ると電源制御部120は、コントローラ20の各部に電力を供給するように制御を行う。またクロック制御部121は、電力が供給されると、クロック制御信号32をクロック生成部30に出力することで、クロック生成部30の発振器もしくは振動子にクロック信号31を生成させるように制御する。
次にリセット生成部40は、リセット信号41を介してリセット制御部122に対するリセットを解除する。リセット制御部122に対するリセットが解除されると、まずリセット制御部122は、PLL123、電源制御部120、クロック制御部121、システムバス109のリセットを解除する。さらにリセット制御部122は、CPU111、ROM112、フラッシュメモリ制御部135、外部ポート制御部137のリセットも解除する。フラッシュメモリ145は、CPU111により外部ポート制御部137を操作することにより、リセットが解除される。
このときはまだ、CPU101はリセット状態のままである。またCPU111のリセットベクターは、ROM112のアドレスである。すなわち、CPU111のリセットが解除されるとCPU111は、リセットベクターが示すROM112のアドレスに記憶されているプログラムを実行する。
なお、CPU101のリセットベクターは、フラッシュメモリ145のアドレスであり、CPU101のリセットが解除されると、CPU101は、リセットベクターが示すフラッシュメモリ145のアドレスに記憶されているプログラムを実行する。
以下にS401〜S411はCPU111が実行する起動シーケンスを図4に沿って説明する。すなわちCPU111が実行する図2に示されるソフトウェアモジュールによって以下の処理が行われる。
S401において、CPU111のリセットが解除されると、CPU111は、リセットベクターにしたがって、始めにROM112に書かれているブートプログラムを実行する。このブートプログラムには、後述のS410の処理で用いられる内部変数Retry_numと閾値Max_numが含まれ、S401においてCPU111は、内部変数Retry_numを「0(ゼロ)」に初期化する。このRetry_numは、署名検証のリトライ回数を示し、Max_numはリトライ回数の上限回数を示す。閾値Max_numは例えば「2」である。すなわち、署名検証は本実施例では最大で3回行われる。後述するように、1回目の検証においてブートプログラムの正当性が確認できなかった場合に2回目の検証が行われ、2回目の検証においてもブートプログラムの正当性が確認できなかった場合に3回目の検証が行われる。3回の検証を行っても最終的にブートプログラムの正当性が確認できなかった場合に、LED147を点灯あるいは点滅状態にしてブートプログラムが正当でないことを通知する。
S402において、CPU111は、ブートプログラムに従って電源制御を行う。本実施例では、改ざん検知を行うために必要なコントローラ20内の一部のモジュールのみに電源を供給するように制御を行う。
なお、改ざん検知処理時に必要なモジュールは、クロック制御部121、リセット制御部122、PLL123、電源制御部120、CPU101、フラッシュメモリ145、RAM102である。また、CPU111、ROM112、RAM113、HDD制御部134、フラッシュメモリ制御部135、外部ポート制御部137である。
S403において、CPU111は、ブートプログラムに従って以下のクロック制御を行う。なお、コントローラ20内の各モジュールの動作周波数は複合機10の製品仕様に応じて異なる。
クロック制御部121は、クロック制御信号32によってクロック生成部30に対して、クロック信号31を供給するように指示する。またクロック制御部121は、内部クロック制御信号33によってPLL123に対して、コントローラ20内の必要なモジュールに対して供給される内部クロックの周波数を設定する。この設定に応じた周波数で、CPU111やシステムバス109、フラッシュメモリ制御部135は処理を行うことができる。
また、クロック制御部121は、CPU101、フラッシュメモリ145、RAM102、CPU111、ROM112、RAM113、システムバス109、HDD制御部134、フラッシュメモリ制御部135に供給されるクロックの設定を行う。
ただし、図4に示すフローにおいて、クロックの供給が必要ないブロック、例えば、スキャナIF制御部131やプリンタIF制御部132などには、クロックの供給は本ステップの段階では行なわず、必要となった段階までクロックゲートしておくこともできる。
なお、供給されるクロックの周波数は、供給先のモジュールによって異ならせてよい。例えばCPU111には150MHz、システムバス109には600MHzのクロックをそれぞれ供給してよい。
S404において、CPU111は、ブートプログラムに従ってリセット解除を行う。すなわちCPU111は、改ざん検知処理に必要なモジュールのリセットを解除する。具体的には、CPU111は、システムバス109、フラッシュメモリ制御部135のリセットを解除する。
S405において、CPU111は、ブートプログラム209に従ってBIOS210の署名検証を行う。ブートプログラム209に含まれるBIOS改ざん検知処理部201は、フラッシュメモリ145から、システムバス109を介してBIOS210、BIOS署名302を、RAM113に読み込む。次に、BIOS改ざん検知処理部201は、BIOS検証用公開鍵300を用いてBIOS署名302の検証を行う。すなわち、BIOS改ざん検知処理部201は、フラッシュメモリ145から読み込んだBIOS210のハッシュ値を計算し、かつ、読み込まれたBIOS署名302に対してBIOS検証用公開鍵301を適用して復号する。
そしてBIOS改ざん検知処理部201は、計算されたハッシュ値と、BIOS署名302を復号して得られた値とを比較し、双方の値が一致するか判定する。
双方の値が一致していれば、BIOS210の署名検証に成功したと判定される。そうでなければ、BIOS210の署名検証に失敗したと判定される。
S406において、CPU111は、BIOS210の署名検証が成功したかを判定する。署名検証の結果、署名検証に成功した(ハッシュ値と署名の値とが一致した)ならば、BIOS210が改ざんされていないとして、処理はS407に進む。
なお、本ステップS406において、署名検証に成功した場合、内部変数Retry_numを「0(ゼロ)」に初期化する。
一方で、署名検証に失敗した(ハッシュ値と署名の値とが一致しなかった)ならば、BIOS210が改ざんされているかもしれないとして、処理はS410に進む。
S407において、CPU111は、クロック制御部121を制御して、PLL123が供給するクロックの周波数の変更、クロックを供給するモジュールの変更等を行う。
例えば、CPU111に供給するクロック周波数、システムバス109に供給するクロック周波数がそれぞれ100MHz、400MHzに設定される。またCPU101にクロックが供給されるように設定される。
なお、本ステップでのクロック制御は、後述する図5においてCPU101が実行するプログラムのBIOS210やカーネル212で実行しても良い。
S408において、CPU111は、電源制御部120を制御して、コントローラ20内の全モジュールに電源を供給するように制御を行う。
S409において、CPU111は、リセット制御部122を制御してCPU101、HDD制御部134、パネル制御部133のリセットを解除し、ブートプログラムの処理を終了する。
そして、起動シーケンスは、後述するS501へ遷移する。すなわちCPU101がBIOS210を実行してBIOS210が起動することになる。
S410では、CPU111は、内部変数Retry_numと閾値Max_numを用いて、BIOS210の署名検証のリトライ回数がMax_num回(例えば2回)に達したかを判断する。ここではCPU111は、Retry_numがMax_num以上であるか否かを判定する。
Retry_num<Max_numの場合、つまり、署名検証のリトライ回数が閾値Max_num未満の場合は、ステップS411の処理が行われる。一方で、Retry_num≧Max_numの場合、つまり、署名検証のリトライ回数が閾値Max_num以上の場合は、ステップS412の処理が行われる。これは、BIOS210の正当性を最終的に確認できなかった場合に、ステップS412の処理が行われることに他ならない。
S411において、CPU111は、所定時間だけBIOS210の署名検証のリトライ開始を待機する。所定時間だけ待機すればフラッシュメモリ145からのBIOS210および署名302の読み込みにおける電源ノイズ等のノイズの影響が小さくなる。その結果、BIOS210の署名検証に失敗した原因がノイズであれば、署名検証を再実施することで成功する可能性が高まる。そのため、所定時間だけ待機してから署名検証をリトライする構成を採っている。すなわちCPU111は、フラッシュメモリ145からBIOS210を再度読み出すまでの時間(所定時間)を設定し、この設定時間が経過してから、フラッシュメモリ145からBIOS210を再度読み出して読み出したBIOS210の正当性を検証する。なお、本ステップS411において、所定時間の待機を行わずに、即座にS405へ遷移することも可能である。
所定時間の待機後の署名検証のリトライにおいてCPU111は、S405と同様に、BIOS210および署名302をフラッシュメモリ145からRAM113に再読み込みしてハッシュ値計算および署名の復号を行う。
ステップS412においてCPU111は、署名検証に失敗したことを外部へ通知するために、外部ポート制御部137を制御してLED147を点灯させ、ブートプログラムの起動処理を終了する。なおLED147を点灯するのではなく、点滅するようにしてもよい。
以上のシーケンスを実行することで、CPU101は改ざんされていないBIOS210を実行することが可能となる。
以下にS501〜S518はCPU101が実行する起動シーケンスを図5に沿って説明する。すなわちCPU101が実行する図2に示されるソフトウェアモジュールによって以下の処理が行われる。
なお、下記で説明する処理でのプログラム(ローダー211、カーネル212、Nativeプログラム213、Javaプログラム214)の改ざん検知の有無の判定方法は一例であり、プログラムの改ざんを検知する方法であれば他の方法が実行されてもよい。
S501において、CPU101は、フラッシュメモリ145からシステムバス109を介してBIOS210をRAM102に読み込んで実行し、各種初期化処理を行う。ここでの初期化は、例えばHDD制御部134の初期化を行い、HDD144へアクセスができるようにする。
本ステップにおいて、BIOS210に含まれるローダー改ざん検知処理部202は、フラッシュメモリ145から、ローダー211、ローダー検証用公開鍵303、ローダー署名304を、RAM102に読み込む。
S502において、ローダー改ざん検知処理部202は、ローダー検証用公開鍵303を用いてローダー署名304の検証を行い、署名検証に成功したか判定する。署名検証に成功した場合、ローダー改ざん検知処理部204は処理を終了し、BIOS210が、RAM102に読み込まれたローダー211を起動する。なお、本ステップS502において、署名検証に成功した場合、内部変数Retry_numを「0(ゼロ)」に初期化する。
一方で、署名検証に失敗した場合、S510にてローダー改ざん検知処理部202は、内部変数Retry_numと判断閾値Max_numを用いて、署名検証のリトライ回数が上限Max_numに達したかを判断する。
Retry_num<Max_numの場合、つまり、署名検証のリトライ回数が閾値Max_num未満の場合は、ステップS511へと遷移する。一方で、Retry_num≧Max_numの場合、つまり、署名検証のリトライ回数が閾値Max_num以上の場合は、ステップS518へと遷移する。そして、ローダー改ざん検知処理部202は、署名検証に失敗したことを外部へ通知するために、パネル制御部133の初期化を行い、操作パネル143にエラーメッセージを表示し処理を終了する。
S511においては、ローダー改ざん検知処理部202は、署名検証のリトライ開始まで所定時間待機する。本ステップにおける処理は、図4のステップS411における処理と同じであるため、説明は省略する(以下、ステップS513、ステップS515、ステップS517も同様である)。
S503において、ローダー211は、起動されると、各種初期化処理を行う。ここでの初期化は、例えばパネル制御部133の初期化を行って操作パネル143に起動画面を表示させたりする。
また、ローダー211に含まれるカーネル改ざん検知処理部204が、フラッシュメモリ145から、カーネル212、カーネル検証用公開鍵305とカーネル署名306を、RAM102に読み込む。
S504において、カーネル改ざん検知処理204は、カーネル検証用公開鍵305を用いてカーネル署名306の検証を行い、署名検証に成功したか判定する。
署名検証に成功した場合、カーネル改ざん検知処理部204は処理を終了し、ローダー211がRAM102に読み込まれたカーネル212を起動する。
なお、本ステップS504において、署名検証に成功した場合、内部変数Retry_numを「0(ゼロ)」に初期化する。
一方で、署名検証に失敗した場合、S512にてカーネル改ざん検知処理部204は、ステップS510と同様に、署名検証に何回失敗したかを判断する。
署名検証の再実施回数が判断閾値以下の場合は、ステップS513へと遷移し、署名検証の再実施開始まで所定時間待機を行う。一方で、署名検証の再実施回数が判断閾値を超えた場合は、ステップS518へと遷移し、署名検証に失敗したことを外部へ通知するために、操作パネル143にエラーメッセージを表示し処理を終了する。
S505において、カーネル212は起動されると、各種初期化処理を行う。ここでの初期化は、例えばネットワークI/F制御部136の初期化を行ってネットワーク146との通信が行えるようにする。
次にカーネル212に含まれるプログラム改ざん検知処理部205が、フラッシュメモリ145から、Nativeプログラム213およびNativeプログラム検証用公開鍵307と、Nativeプログラム署名308を、RAM102に読み込む。
S506において、プログラム改ざん検知処理部205は、検証用公開鍵307を用いて、Nativeプログラム署名308の検証を行い、署名検証に成功したか判定する。
署名検証に成功した場合、プログラム改ざん検知処理部205は処理を終了し、Nativeプログラム213を起動する。一方で、署名検証に失敗した場合、ステップS510と同様に、署名検証に何回失敗したかを判断する。
署名検証の再実施回数が判断閾値以下の場合は、ステップS515へと遷移し、署名検証の再実施開始まで所定時間の待機を行う。
なお、本ステップS506において、署名検証に成功した場合、内部変数Retry_numを「0(ゼロ)」に初期化する。
一方で、署名検証の再実施回数が判断閾値を超えた場合は、ステップS518へと遷移し、署名検証に失敗したことを外部へ通知するために、操作パネル143にエラーメッセージを表示し処理を終了する。
S507において、Nativeプログラム213のうち、改ざん検知の処理を行うJavaプログラム改ざん検知処理部206が起動されると、次の処理が行われる。すなわちJavaプログラム改ざん検知処理部206は、フラッシュメモリ145からJavaプログラム検証用公開鍵309と、HDD144からJavaプログラム214とJavaプログラム署名310を、RAM102に読み込む。
S508において、Javaプログラム改ざん検知処理部206は、検証用公開鍵309を用いて、Javaプログラム署名310の検証を行い、署名検証に成功したか判定する。
署名の検証に成功した場合、Javaプログラム改ざん検知処理部205は処理を終了し、S509にてJavaプログラム214を起動する。
なお、本ステップS508において、署名検証に成功した場合、内部変数Retry_numを「0(ゼロ)」に初期化する。
一方で、署名検証に失敗した場合、ステップS510と同様に、署名検証に何回失敗したかを判断する。
署名検証の再実施回数が判断閾値以下の場合は、ステップS517へと遷移し、署名検証の再実施開始まで所定時間の待機を行う。一方で、署名検証の再実施回数が判断閾値を超えた場合は、ステップS518へと遷移し、署名検証に失敗したことを外部へ通知するために、操作パネル143にエラーメッセージを表示し処理を終了する。
なお、S518の処理は、操作パネル143へエラーメッセージを表示するが、これに代えて、S412の処理のように、外部ポート制御部137を制御してLED147を点灯させるようにしてもよい。また操作パネル143へのエラーメッセージの表示およびLED147の点灯の両方が行われてもよい。
以上説明したように実施形態1によれば、プログラム改ざん検知処理部が、改ざんされたと判断した場合には、不揮発性メモリから、プログラムおよび検証用公開鍵と、プログラム署名を、情報処理装置の内部RAMに読み込む動作を所定の回数繰り返す。これによって、システム起動時に装置内部で発生するノイズの影響により、不揮発性メモリからローダーにより読み出したプログラムデータにノイズが混入し、プログラムの改ざんと誤判断される不具合を緩和することができる。
なお、各ステップにおいて、不揮発性メモリからプログラム等を内部RAMに読み込む動作を所定回数以上繰り返しても、改ざんされたとの判断が覆らない場合には、ノイズの影響ではなく、プログラムが改ざんされたものと判断し、複合機の起動動作を停止する。
(実施例2)
実施例2について説明する。実施例1は、起動時の各ステップにおけるプログラム改ざん検知処理部の動作に注目して揮発性メモリからプログラム等を内部RAMに読み込む動作を繰り返す構成を採った。これに対して本実施例2では、起動時フロー全体に注目して、起動フロー自体を繰り返す構成で採る方法について説明する。
なお、実施例1の説明と重複する箇所も多いため、実施例1との差分を中心に説明する。
図6は本実施例の複合機10の構成図である。実施例1との差分は、外部ポート制御部137からリセット生成部40に対して、リセット要求信号42を出力する構成を持つ点である。
このリセット要求信号42は、CPU101あるいはCPU111により、外部ポート制御部137を制御することで生成される。外部ポート制御部137からリセット生成部40に対して、リセット要求信号42がアサートされることで、リセット生成部40は、コントローラ20に対して、リセット信号41をアサートする。
このリセット信号41がアサートされることで、コントローラ20のリセットがされ、リセット制御部122はコントローラ20内部の各モジュール部に対してリセットをアサートする。つまり、コントローラ20の起動時と同様に、各モジュールをリセット状態にする。
このリセット状態にする対象モジュールには、外部ポート制御部137も含まれており、リセットがアサートされることで、外部ポートは全体的に出力状態から入力状態へと強制的に遷移する。
外部ポート全体の状態遷移により、リセット要求信号42はリセットをアサートする論理(例えば、Low)からデアサートする論理(アサートの反対論理。本例では、High)へと遷移する。
リセット要求信号42がデアサートされると、リセット生成部40が生成されるリセット信号41もデアサートされ、リセット制御部122により、コントローラ20内部の各モジュールに対するリセット解除がされる。
図7は、実施例2における本発明に係るCPU111の起動シーケンスである。
なお、下記で説明する処理において図4及び図5を用いて説明した前述の処理フローについては、説明の重複を避けるため、同一処理には同一の表記(S401〜S409、S412)を行い、差分となる部分を中心に説明を行う。
図7において、S401からS409までの処理フロー及びS412の処理フローは前述の通りである。
S701では、S406におけるBIOS署名検証の検証に失敗した場合に、CPU111は、内部変数Reboot_numと判断閾値Max_numにより、署名検証に何回失敗したかを判断する。
Reboot_num<Max_numの場合、つまり、起動シーケンスのリブート回数が判断閾値未満の場合は、ステップS702へと遷移する。一方で、Reboot_num≧Max_numの場合、つまり、起動シーケンスのリブート回数が判断閾値以上の場合は、ステップS412へと遷移する。そして、署名検証に失敗したことを外部へ通知するために、外部ポート制御部137を制御してLED147を点灯させ、ブートプログラムの起動処理を終了する。
S702においては、起動シーケンスのリブート開始まで所定時間の待機を行う。これは、S411等での所定時間の待機と同様に、署名検証が失敗した原因と考えられるノイズの影響が、時間の経過とともに収束方向に向かう可能性があるため、待ち時間を設けている。
なお、本ステップS702において、所定時間の待機を行わずに、即座にS401へ遷移することも可能である。
S702で所定時間の待機後に、起動シーケンスのリブートを開始する。つまり、CPU111の起動シーケンスをS401のブートプログラムの起動からやり直す。
なお、起動シーケンスのリブート回数を示す内部変数Reboot_numは、リセットの有無に関わらず不揮発な領域、例えば、フラッシュメモリ145に格納される。
そして、起動シーケンス開始時に読み出され、内部変数Reboot_numにセットされる。図7及び図8に記載の起動シーケンスが全て成功した場合、あるいは、判断閾値Max_numを超えて起動処理を終了する段階で0クリアされる。不揮発な領域に格納されたReboot_numも同様に扱われる。
起動処理終了時に不揮発な領域に格納されたReboot_numを0クリアするのは、次の理由からである。すなわち、装置の電源をOFF/ONされて再起動された場合に、不揮発領域に残ったReboot_numが判断閾値Max_numを超えていると、リブート処理が1度も実施されることがないためである。
S406において、CPU111は、BIOSの署名検証が成功したかを判定し、署名検証に成功した以降の処理は、図4及び上記で説明したフローと同じであるため、ここでは省略する。
図8は、実施例2における本発明に係るCPU101の起動シーケンスである。
図7のCPU111の起動シーケンスと同様に、検証失敗時にリブートを行うステップ、リブート開始までの所定時間の待機というステップが各フローにおいて追加されている。
すなわち、S502のローダー署名検証の判断で失敗した場合に、S801においてリブート回数が閾値を超えているかの判断が行われる。そして、S504のカーネル署名検証の判断で失敗した場合に、S803においてリブート回数が閾値を超えているかの判断が行われる。そして、S506のNativeプログラム署名検証の判断で失敗した場合に、S804においてリブート回数が閾値を超えているかの判断が行われる。そして、S508のJavaプログラム署名検証の判断で失敗した場合に、S805においてリブート回数が閾値を超えているかの判断が行われる。
S801、S803、S804、S805のいずれのリブート回数が閾値を超えているかの判断のフローにおいて、Reboot_num<Max_numの場合、つまり、起動シーケンスのリブート回数が判断閾値未満の場合は、ステップS802へと遷移する。
S802においては、起動シーケンスのリブート開始まで所定時間の待機を行う。これは、S411等での所定時間の待機と同様に、署名検証が失敗した原因と考えられるノイズの影響が、時間の経過とともに収束方向に向かう可能性があるため、待ち時間を設けている。
S802における所定時間の待機後には、コントローラ20全体へのリセットが実行されることになるため、図7で示したCPU111の起動シーケンスから再度行うこととなる。
なお、本ステップS802において、所定時間の待機を行わずに、即座にCPU111の起動シーケンスを開始するフローと遷移することも可能である。
一方で、Reboot_num≧Max_numの場合、つまり、リブート回数が閾値以上の場合は、ステップS518へと遷移し、署名検証に失敗したことを外部へ通知するために、操作パネル143にエラーメッセージを表示し処理を終了する。
以上説明したように実施形態2によれば、プログラム改ざん検知処理部が、改ざんされたと判断した場合には、起動シーケンスを最初から所定の回数繰り返す。このことによって、システム起動時に装置内部で発生するノイズの影響により、不揮発性メモリからローダーにより読み出したプログラムデータにノイズが混入し、プログラムの改ざんと誤判断される不具合を緩和することができる。
なお、各ステップにおいて、起動シーケンスを最初から所定回数以上繰り返しても、改ざんされたとの判断が覆らない場合には、ノイズの影響ではなく、プログラムが改ざんされたものと判断し、複合機の起動動作を停止する。
さらに、S802における所定時間の待機後には、コントローラ20全体へのリセットを実行するのではなく、図1で示すリセット制御部122に対してリセット要求信号42を出力し、CPU111の起動シーケンスを再度やり直すこともできる。
(実施例3)
プログラム改ざん検知処理部が、改ざんされたと判断した場合には、次の2つのフローを組み合わせて実施してもよい。1つめのフローは、不揮発性メモリから、プログラムおよび検証用公開鍵とプログラム署名を情報処理装置の内部RAMに読み込む動作を所定の回数繰り返すフローである。2つ目のフローは、起動シーケンスを最初から所定の回数繰り返すフローである。
例えば、図7に記載のCPU111に関する起動シーケンス部分と、図5に記載のCPU101に関する起動シーケンスを組み合わせて実施することもできる。
起動シーケンス初期段階では、起動直後の突入電流によるノイズ発生の影響を受けやすい。そのため、この組み合わせフローにおいて、スキャナ141やプリンタ142の起動は継続しておき、コントローラ20の起動シーケンスのみをやり直した方が、図4のフローと比較して、コントローラ20は安定的に起動が出来る可能性が高い。
また、1度でも不揮発メモリからのプログラム読出しで検証に成功したら、それ以降のフローで検証に失敗するのは、プログラムの改ざんの可能性が高い。このことから、起動シーケンス全体をやり直すよりは、検証が失敗した当該フローにおける検証のやり直しを繰り返した方が、起動シーケンス全体の処理時間としては、図8のフローと比較して短期間で判断できる。
なお、実施例1乃至実施例3においては、複合機の起動シーケンスのやり直しを、複合機の電源のシャットダウン及び再起動からやり直すものではないが、本発明は、電源のシャットダウン及び再起動により起動シーケンスをやり直す方法を排除するものではない。
(他の実施例)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。

Claims (15)

  1. プログラムを実行する制御手段と、
    前記制御手段が実行するブートプログラムを記憶する記憶手段と、
    前記制御手段が前記ブートプログラムを実行する前に、前記記憶手段から前記ブートプログラムを読み出して当該読み出したブートプログラムの正当性を検証し、当該検証において前記ブートプログラムが正当であると確認した場合に前記制御手段を前記記憶手段に記憶された前記ブートプログラムを実行できる状態にする検証手段と、
    を有する情報処理装置において、
    前記検証手段は、前記検証において前記ブートプログラムの正当性を確認できなかった場合に、前記記憶手段から前記ブートプログラムを再度読み出して正当性を検証し、当該2回目の検証において前記ブートプログラムが正当であると確認した場合に前記制御手段を前記記憶手段に記憶された前記ブートプログラムを実行できる状態にすることを特徴とする情報処理装置。
  2. 前記検証において前記ブートプログラムの正当性を確認できなかった場合とは、前記検証手段が前記ブートプログラムの正当性を検証して当該ブートプログラムが正当でないと確認した場合のことであることを特徴とする請求項1に記載の情報処理装置。
  3. 前記制御手段は、前記検証手段によって前記記憶手段に記憶された前記ブートプログラムを実行できる状態にされると、前記記憶手段から前記ブートプログラムを読み出して実行することを特徴とする請求項1または2に記載の情報処理装置。
  4. 前記制御手段をリセット状態にするリセット手段をさらに有し、
    前記制御手段は、1回目または2回目の前記検証において前記ブートプログラムが正当であると確認するまで前記リセット手段によってリセット状態のままにされており、
    前記検証手段は、1回目または2回目の前記検証において前記ブートプログラムが正当であると確認したら前記制御手段のリセット状態を解除して、前記制御手段を前記記憶手段に記憶された前記ブートプログラムを実行できる状態にすることを特徴とする請求項1乃至3の何れか1項に記載の情報処理装置。
  5. 前記記憶手段は、不揮発性であることを特徴とする請求項1乃至4の何れか1項に記載の情報処理装置。
  6. 前記検証手段は、1回目または2回目の前記検証において前記ブートプログラムの正当性を確認できなかった場合に、前記記憶手段から前記ブートプログラムを再度読み出して正当性を検証し、当該3回目の検証において前記ブートプログラムが正当であると確認した場合に前記制御手段を前記記憶手段に記憶された前記ブートプログラムを実行できる状態にすることを特徴とする請求項1乃至5の何れか1項に情報処理装置。
  7. 前記検証手段は、前記記憶手段からの前記ブートプログラムを再度読み出すまでの時間を設定することを特徴とする請求項1乃至6の何れか1項に記載の情報処理装置。
  8. 前記検証手段は、前記設定された時間が経過してから、前記記憶手段から前記ブートプログラムを再度読み出して、該読み出したブートプログラムの正当性を検証することを特徴とする請求項7に記載の情報処理装置。
  9. 前記検証手段は、前記ブートプログラムの正当性を検証するためのプログラムを実行することで、前記記憶手段から読み出した前記ブートプログラムの正当性を検証することを特徴とする請求項1乃至8の何れか1項に記載の情報処理装置。
  10. 前記ブートプログラムの正当性の検証は、前記ブートプログラムの内容に基づいて行われることを特徴とする請求項1乃至9の何れか1項に記載の情報処理装置。
  11. 前記ブートプログラムの正当性の検証は、前記ブートプログラムの内容からハッシュ値を計算して当該計算されたハッシュ値が、当該ブートプログラムに対応する正規のハッシュ値であるかを確認して行われることを特徴とする請求項10に記載の情報処理装置。
  12. 通知手段と、
    前記検証手段は、最終的に前記ブートプログラムの正当性を確認できなかった場合に前記通知手段の状態を所定の状態に変更することを特徴とする請求項1乃至11の何れか1項に記載の情報処理装置。
  13. 前記通知手段は、点灯状態および消灯状態を持つ発光手段であることを特徴とする請求項12に記載の情報処理装置。
  14. 原稿の画像を読み取る読取手段と、
    画像を印刷する印刷手段と、
    を有し、
    前記ブートプログラムを実行する前記制御手段は、前記印刷手段を用いた画像の印刷および前記読み取り手段を用いた画像の読み取りを制御することを特徴とする請求項1乃至13の何れか1項に記載の情報処理装置。
  15. プログラムを実行する制御手段と、
    前記制御手段が実行するブートプログラムを記憶する記憶手段と、
    を有する情報処理装置の制御方法であって、
    前記制御手段が前記ブートプログラムを実行する前に、前記記憶手段から前記ブートプログラムを読み出して当該読み出したブートプログラムの正当性を検証する工程と、
    前記検証において前記ブートプログラムが正当であると確認した場合に前記制御手段を前記記憶手段に記憶された前記ブートプログラムを実行できる状態にする工程と、
    前記検証において前記ブートプログラムの正当性を確認できなかった場合に、前記記憶手段から前記ブートプログラムを再度読み出して正当性を再検証する工程と、
    前記再検証において前記ブートプログラムが正当であると確認した場合に前記制御手段を前記記憶手段に記憶された前記ブートプログラムを実行できる状態にする工程と、
    を有することを特徴とする情報処理装置の制御方法。
JP2018228922A 2018-12-06 2018-12-06 情報処理装置及びその制御方法 Pending JP2020091698A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018228922A JP2020091698A (ja) 2018-12-06 2018-12-06 情報処理装置及びその制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018228922A JP2020091698A (ja) 2018-12-06 2018-12-06 情報処理装置及びその制御方法

Publications (1)

Publication Number Publication Date
JP2020091698A true JP2020091698A (ja) 2020-06-11

Family

ID=71012925

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018228922A Pending JP2020091698A (ja) 2018-12-06 2018-12-06 情報処理装置及びその制御方法

Country Status (1)

Country Link
JP (1) JP2020091698A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112948856A (zh) * 2021-03-03 2021-06-11 电信科学技术第五研究所有限公司 一种防篡改可信的网络协同管控系统及实现方法
KR102591450B1 (ko) * 2023-05-31 2023-10-19 한화시스템(주) 윈도우 운영체제 중요 정보 탈취 방지를 위한 레지스트리 파서 및 암/복호화 모듈 및 그 운용방법

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112948856A (zh) * 2021-03-03 2021-06-11 电信科学技术第五研究所有限公司 一种防篡改可信的网络协同管控系统及实现方法
CN112948856B (zh) * 2021-03-03 2022-11-15 电信科学技术第五研究所有限公司 一种防篡改可信的网络协同管控系统及实现方法
KR102591450B1 (ko) * 2023-05-31 2023-10-19 한화시스템(주) 윈도우 운영체제 중요 정보 탈취 방지를 위한 레지스트리 파서 및 암/복호화 모듈 및 그 운용방법

Similar Documents

Publication Publication Date Title
US10225426B2 (en) Image forming apparatus having firmware update function, method of controlling the same, program for executing the method, and storage medium
JP6494373B2 (ja) 情報処理装置、情報処理装置の制御方法、およびコンピュータプログラム
US11914714B2 (en) Information processing apparatus and start-up method of the same
US11006013B2 (en) Image processing apparatus, having second processor to verify boot program has been altered, method of controlling the same, and storage medium
JP2020160747A (ja) 情報処理装置、その制御方法、及びプログラム
CN111125686B (zh) 信息处理装置及其控制方法
JP2020091698A (ja) 情報処理装置及びその制御方法
JP2020095470A (ja) 情報処理装置及びその制御方法
US20200344066A1 (en) Information processing apparatus and data verification method
JP5961059B2 (ja) 情報処理装置およびその起動方法
US11748482B2 (en) Information processing apparatus, and information processing method
JP7210238B2 (ja) 情報処理装置、情報処理装置の制御方法、及び、プログラム
JP2021140601A (ja) 情報処理装置、その制御方法、及びプログラム
US20200110616A1 (en) Information processing apparatus, method of controlling same, storage medium, and image forming apparatus
JP2020154601A (ja) 情報処理装置とその制御方法、及びプログラム
KR20200030448A (ko) 정보 처리장치, 정보 처리장치의 제어방법, 및 기억매체
US20230351029A1 (en) Information processing apparatus, control method for the same, and storage medium
JP7289641B2 (ja) 情報処理装置、およびその制御方法
JP2022182837A (ja) 情報処理装置、及びその制御方法
JP2020181501A (ja) 情報処理装置とその制御方法、及びプログラム