JP7263101B2 - 情報処理装置、データ検証方法 - Google Patents

情報処理装置、データ検証方法 Download PDF

Info

Publication number
JP7263101B2
JP7263101B2 JP2019086270A JP2019086270A JP7263101B2 JP 7263101 B2 JP7263101 B2 JP 7263101B2 JP 2019086270 A JP2019086270 A JP 2019086270A JP 2019086270 A JP2019086270 A JP 2019086270A JP 7263101 B2 JP7263101 B2 JP 7263101B2
Authority
JP
Japan
Prior art keywords
program
start address
bios program
processor
data
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.)
Active
Application number
JP2019086270A
Other languages
English (en)
Other versions
JP2020181540A (ja
JP2020181540A5 (ja
Inventor
賀久 野村
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 JP2019086270A priority Critical patent/JP7263101B2/ja
Priority to US16/847,401 priority patent/US20200344066A1/en
Publication of JP2020181540A publication Critical patent/JP2020181540A/ja
Publication of JP2020181540A5 publication Critical patent/JP2020181540A5/ja
Application granted granted Critical
Publication of JP7263101B2 publication Critical patent/JP7263101B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)

Description

本発明は、情報処理装置、データ検証方法に関するものである。
コンピュータのシステムの脆弱性をついて、コンピュータ上で動作するソフトウェアを改ざんし、コンピュータを悪用する攻撃が問題となっている。
特許文献1は、第1のCPU、第2のCPU、第2のCPUによって実行されるプログラムを記憶する不揮発メモリを有する情報処理装置を開示する。この情報処理装置では、第1のCPUが、第2のCPUによって実行されるプログラムを不揮発メモリから読み出して、そのプログラムの改ざんの有無を検証し、その検証の結果に応じて、そのプログラムを第2のCPUに出力する。第2のCPUは、改ざんがなされていないプログラムを実行するので、セキュリティを向上させることができる。
国際公開WO09/013825
CPUはリセットが解除されることで動作を開始する。CPUは、リセットが解除されると、特定のアドレスを参照する。この特定のアドレスには、ブートプログラムが格納されているアドレスが記載されている。そして特定のアドレスを参照したCPUは、その特定のアドレスに記載されたアドレスをさらに参照し、そのアドレスに格納されているブートプログラムを実行する。
特許文献1の開示する技術では、CPUが実行するプログラムを外部メモリから読み出して改ざんの有無を検証するシステムにおいて、そのプログラムを検証する。しかしながら、上述した特定アドレスに記載されたアドレスが正しいものであるかを検証していない。その結果、特定アドレスに記載されたアドレスが正しいものでなかった場合、本来実行すべきプログラムとは別のプログラムが実行されてしまう。
本発明の情報処理装置は、BIOSプログラムの先頭アドレスを開始アドレスとして記憶し、かつ、前記先頭アドレスから前記BIOSプログラムを記憶しているメモリと、リセットが解除されると前記メモリの前記開始アドレスを参照し、前記BIOSプログラムの前記先頭アドレスを読み出し、前記読み出された先頭アドレスから前記BIOSプログラムを読み出して実行する第1のプロセッサと、前記情報処理装置に電源が供給されることに従って、前記情報処理装置の起動処理を開始するブートプログラムを実行する第2のプロセッサと、を有し、前記第2のプロセッサは、前記ブートプログラムを実行することによって、BIOSプログラムおよび前記メモリの前記開始アドレスに記憶されている前記先頭アドレスに基づくデータが、正当であるか否かを検証することを特徴とする情報処理装置。
本発明によれば、システムとしてのセキュリティを向上させることができる。
実施形態1の複合機のハードウェア構成図 複合機のソフトウェア構成図 起動時の動作を示す模式図 CPU111が実行する起動シーケンスのフローチャート CPU101が実行する起動シーケンスのフローチャート フラッシュメモリ145の構成を示す図
以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、本発明は、以下の実施形態のみに限定されるものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。尚、実施形態に係るデータ検証方法を実行する情報処理装置として複合機(デジタル複合機/MFP/Multi Function Peripheral)を例に説明する。しかしながら適用範囲は複合機に限定はせず、情報処理装置であればよい。
(実施形態1)
図1は実施形態1に係る複合機10のハードウェア構成を説明するブロック図である。
コントローラ20は、複合機10の制御を行うための後述する101~137のハードウェアモジュールで構成される。本実施形態では半導体チップとして構成されているものとして説明する。
クロック生成部30は、クロックを生成して複合機10内部の各モジュールに適した周波数のクロック信号(外部クロック)を供給する。本実施形態ではクロック生成部30は、クロック信号31をコントローラ20内のPLL(Phase Locked Loop)123に供給する。周波数はクロック制御信号32によって変更可能である。
リセット生成部40は、リセット信号を生成して複合機10内部の各モジュールへリセットを掛けたり解除したりする半導体チップである。本実施形態ではコントローラ20へ供給するリセット信号41しか図示していないがスキャナ141やプリンタ142などのモジュールにも接続されているものとする。複合機10の電源が供給されると一定時間(例えば供給電源電圧が安定するまで)リセット信号41のリセット状態を保持した後にリセット信号41を解除状態にしてコントローラ20のリセットを解除する。リセット信号41がアサートされている状態がリセット信号41のリセット状態であり、リセット信号41がデアサートされている状態がリセット信号41の解除状態である。コントローラ20のリセットが解除されると、コントローラ20内のモジュールが動作を開始する。
CPU101は、複合機10のソフトウェアプログラムを実行し、装置全体の制御を行う。
RAM102は、ランダムアクセスメモリで、CPU101が複合機10を制御する際に、プログラムや一時的なデータの格納などに使用される。
HDD144は、ハードディスクドライブで一部のアプリケーション、各種データを格納する。このHDD144は、CPU101が実行するJava(登録商標)プログラム214を格納している。
フラッシュメモリ145は、複合機10の固定パラメータ等を格納している。またフラッシュメモリ145は、CPU101が実行するBIOS210を格納している。さらにCPU101が実行するローダー211・カーネル212・Nativeプログラム213を格納する。なお、HDD144とフラッシュメモリ145は同一のストレージモジュールであっても良いものとする。
CPU111は、CPU101が実行するソフトウェアプログラムの改ざんを検知する改ざん検知ソフトウェアプログラムを実行し、複合機10の中で一部の制御を行う。
ROM112はリードオンリーメモリで、前記改ざん検知ソフトウェアプログラムや後述の公開鍵などを格納している。またROM112は、CPU111が実行するブートプログラム209を格納している。
なおROM112は、外部からのI/Fから書き換えられないように論理回路で構成されたMASK ROMもしくは製造時に一度だけ書き込みが可能なOTP(One Time Programmable) ROMで構成されているものとする。
RAM113は、ランダムアクセスメモリで、CPU111が複合機10を制御する際に、プログラムや一時的なデータの格納などに使用される。なおRAM102とRAM113は同一のモジュールであっても良いものとする。
電源制御部120は、コントローラ20内部の各モジュール部に対して電力供給を制御するIC(Integrated Circuit)である。コントローラ20(複合機10)の起動時や動作時に、各モジュール部に対して所定の電力を供給したり停止したりすることができる。
クロック制御部121は、PLL123を内部クロック制御信号33で制御する。これにより、PLL123は、クロック信号31の周波数を逓倍し、周波数が逓倍されたクロック信号をコントローラ20内部の各モジュール部に対して供給する。クロック制御部121は、コントローラ20の起動時や動作時に、PLL123に対して逓倍の設定を変更することで、PLL123が各モジュール部に最適な周波数のクロック(内部クロック)を供給するように制御を行う。またクロック制御部121は、モジュールごとに個別にクロックをゲートして停止させることができる。
リセット制御部122はコントローラ20内部の各モジュール部に対してリセット制御する。コントローラ20の起動時や動作時に、各モジュールをリセット状態にしたりリセット解除状態にしたりする制御を行う。
スキャナI/F制御部131は、スキャナ141による原稿の読み取り制御する。プリンタI/F制御部132は、プリンタ142による印刷処理などを制御する。パネル制御部133は、タッチパネル式の操作パネル143を制御し、各種情報の表示、使用者からの指示入力を制御する。
HDD制御部134は、HDD144に対してデータを読み書きする制御を行う。例えばRAM102に格納されている画像データをシステムバス109経由でHDD144に書きだして格納することができる。
フラッシュメモリ制御部135は、フラッシュメモリ145に対してデータを読み書きする制御を行う。フラッシュメモリ制御部135は、コントローラ20の起動時にフラッシュメモリ145に格納されているプログラムを読みだしてシステムバス109経由でRAM113へ展開することができる。
ネットワークI/F制御部136は、ネットワーク146上の他のデバイスやサーバーとのデータの送受信を制御する。
外部ポート制御部137は、コントローラ20の入出力ポート制御部である。例えば出力ポートを制御することによりLED147を必要に応じて点灯し、ソフトウェアやハードウェアの異常を外部に伝えることが可能である。
画像処理部138は、スキャナ141から読み取った画像データをシェーディング補正したり、プリンタ142に出力するためにハーフトーン処理やスムージング処理したりする処理部である。
システムバス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に対して起動シーケンスを実行する。起動シーケンスについては図4を用いて後述する。このブートプログラム209は、起動後にBIOSおよびリセットベクタの改ざん検知を行うBIOS・リセットベクタ改ざん検知処理部201を有する。
BIOS210は、ブートプログラム209実行後にCPU101で実行されるプログラムであり、起動に関わる処理を行うほかにローダー211の改ざん検知を行うローダー改ざん検知処理部202を有する。
ローダー211は、BIOS210の処理が終わった後にCPU101で実行されるプログラムであり、起動に関わる処理を行うほかにカーネルの改ざん検知を行うカーネル改ざん検知処理部204を有する。
カーネル212は、ローダー211の処理が終わった後にCPU101で実行されるプログラムであり、起動に関わる処理を行うほかにNativeプログラム213の改ざん検知を行うNative改ざん検知処理部205を有する。
リセットベクタ215は、リセットが解除されたCPU101が最初に参照(アクセス)するアドレスである。このアドレスには、次に実行するプログラムの先頭アドレスが記載されている。リセットが解除されたCPU101は、リセットベクタを参照し、このリセットベクタに記載されているアドレス(すなわちプログラムの先頭アドレス)を読み出し、この読み出された先頭アドレスからプログラムを読み出して実行する。なお、CPUによってはリセットベクタに命令を記述し、その命令を実行して指定のアドレスにアクセスする方式もあるものとする。本実施形態においては前者の方式で説明をおこなう。
Nativeプログラム213は、CPU101で実行されるプログラムであり、複合機10のJavaプログラム214と連携して各機能を提供する複数のプログラムで構成される。この複数のプログラムは、例えばスキャナIF制御部106やプリンタIF制御部106を制御するプログラムや起動プログラム、CPU111の再起動プログラムなどを含む。この起動プログラムおよびCPU111の再起動プログラムは、カーネル212によってNativeプログラムの中から呼び出され、起動処理を行う。CPU111の再起動プログラムは、ブートプログラムを実行しBIOS・リセットベクタ改ざん検知処理を終えたCPU111を改ざん検知処理とは異なる別用途として使うために、その別用途に対応するプログラムをCPU111に実行させる。例えば省電力モード時に外部ポートの割り込みを監視する監視プログラムが、改ざん検知処理を終えたCPU111によって実行されるよう、CPU101は、CPU111の再起動プログラムを実行する。ここで省電力モードとは、CPU111と外部ポート制御部、システムバス109、ネットワークI/F制御部136、操作パネル143以外の制御部、処理部を通常時の稼働状態から安全に電源遮断もしくはクロック停止させた状態を指すものとする。CPU111は例えばセンサーなどの信号が入ることで外部制御部137から外部ポートの割り込みを検知すると省電力モードから通常モードに復帰させる処理を行う。前述した電源遮断もしくはクロック停止した制御部、処理部を安全に稼働状態に移行させるものとする。CPU111が割り込み監視をすることでCPU101に対してCPU111が小規模で待機電力が小さい場合に通常動作時の処理を行うCPU101の電源遮断もしくはクロック停止をさせて省電力の効果を上げることが可能となる。またNativeプログラム213は、プログラムの中の一つとしてJavaプログラムの改ざん検知を行うJavaプログラム改ざん検知処理部を有する。
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およびリセットベクタ215、ローダー211、カーネル212、Nativeプログラム213、Javaプログラム214が改ざん検知を行いながら起動する処理の流れを表した起動シーケンスを示す。また、図3(b)は各プログラムの保存場所、デジタル署名(以下署名と呼ぶ)と公開鍵の保存場所を表した模式図でもある。
署名とは、例えば正規のプログラム(データ列)を所定のハッシュ関数によってハッシュ値に変換し、公開鍵に対応する秘密鍵でハッシュ値を暗号化したものである。この暗号化されたハッシュ値を公開鍵で復号化することで正規のプログラムのハッシュ値を計算し、改ざんの有無の検証対象であるプログラムを前述のハッシュ関数によってハッシュ値に変換し、これら2つのハッシュ値を比較する。2つのハッシュ値が等しければ検証対象のプログラムは正規のプログラムから改ざんされていないと判定できる。またもし2つのハッシュ値が異なれば検証対象のプログラムは正規のプログラムから改ざんされていると判定できる。このように署名を用いて検証対象のプログラムの改ざん有無を調べる方法を、以降では、署名検証と呼ぶ。また、プログラムが改ざんされていないことを、署名検証に成功すると呼び、プログラムが改ざんされていることを、署名検証に失敗すると呼ぶ。本実施形態では、プログラムの改ざん有無を調べる方法として、このような署名および公開鍵を用いる方法を採るが、改ざん有無を調べる他の方法でも良い。
図6(a)はフラッシュメモリ145のメモリ構成図である。本実施形態では、BIOS210とリセットベクタ215とが少なくとも記憶される所定の範囲のアドレス0x0000_0000(番地)~0x0001_FFFF(番地)を1つのハッシュ計算対象とし、その範囲のサイズを予め固定したものとして説明する。このアドレス範囲は、リセットベクタ215が記憶されるアドレス(0番地)からBIOS210の末尾のアドレスまでの連続アドレスが少なくとも含まれる。またこのアドレス範囲には、リセットベクタ215およびBIOS210以外のデータ列も記憶される。ハッシュ計算対象を1つにまとめ固定サイズにすることでブートプログラム209の処理が単純化されるメリットがある。一方でリセットベクタ215とBIOS210が離れた配置にすると無駄なデータ列のハッシュ計算をしなければならないし、サイズに収めるようにBIOS210を作成しなければならない制約が出るなどのデメリットがある。CPU101のリセットベクタ215がフラッシュメモリ145の0x0000_0000~0x0000_3FFF番地内に設定されているものとする。前述したようにCPU101がリセット解除されると0x0000_0000番地を参照する。システムによっては0xFFFF_0000番地に配置されているものもある。このリセットベクタ領域には例外ハンドラ(リセットハンドラ)とISR(割り込みサービスルーチン)のアドレス(プログラムの先頭アドレス)が記載されている。リセットが解除されたCPU101は、リセットベクタ領域を参照し、リセットベクタに記載されたアドレスからプログラムを実行できるようになっている。図6(a)においては飛び先アドレスが0x0001_0000番地に設定されているものである。リセットが解除されたCPU101は、リセットハンドラにしたがって飛び先ジャンプする命令を実行する。するとCPUは、0x0001_0000~0x0001_FFFF番地に格納されているBIOS210を実行する。
図6(b)は、フラッシュメモリ145上のBIOS・リセット署名302の構成図である。この署名302は、リセットベクタ領域215からBIOS210までの、連続するメモリ領域(アドレス)に記憶されたデータ列のハッシュ値を、公開鍵に対応する秘密鍵で暗号化したものである。すなわち、BIOS210と、このBIOS210の先頭アドレスが記載されているリセットベクタ215を含むデータ列のハッシュ値が、署名302として、秘密鍵で暗号化された状態でフラッシュメモリ145に記憶されている。CPU111は、秘密鍵で暗号化されたこのハッシュ値を公開鍵で復号化することで、正規のプログラム(BIOS210)とリセットベクタに記載されるべき正規のアドレス(BIOS210の先頭アドレス)のハッシュ値を取得する。そしてCPU111は、改ざんの有無の検証対象であるフラッシュメモリ145に現在格納されているプログラム(BIOS210)とリセットベクタ215に現在記載されているアドレスとを含むデータ列のハッシュ値を計算する。そしてCPU111は、これら2つのハッシュ値を比較する。以上によって、BIOS210およびリセットベクタ215に記載されているアドレスの検証がCPU111によって行われる。
なお、ハッシュ計算対象範囲内の例えば図6(c)のように格納リセットベクタ領域とBIOSの空き領域0x0000_8000~0x0000_81FFにリセットベクタおよびBIOSの各先頭アドレスおよびサイズを記憶する。そしてCPU111がブートプログラム209でその先頭アドレスおよびサイズを読み込んで必要な領域のデータ列をハッシュ値に変換するようにしても良いものとする。
ブートプログラム209にはBIOS署名検証用の公開鍵300、BIOS210にはBIOS・リセットベクタ署名302とローダー検証用公開鍵303、ローダー211にはローダー署名304とカーネル検証用公開鍵305が含まれているものとする。また、カーネル212にはカーネル署名306とNativeプログラム検証用公開鍵307、Nativeプログラム213にはNativeプログラム署名308とJavaプログラム検証用公開鍵309が含まれているものとする。さらにJavaプログラム214にはJavaプログラム署名310が含まれているものとする。これらの公開鍵と署名はあらかじめ複合機10出荷前にプログラムに対して付与されたものとする。
改ざん検知処理部201、202、204~206が次のプログラムが改ざんされているかどうかを検証し、改ざんされていなければ次のプログラムを起動する。このようにプログラムの改ざん検知および起動を順次行う起動シーケンスにしたがって複合機10は起動する。
ここで、本実施形態の特徴である前記起動シーケンスにおいて改ざん検知プログラムが安全にCPU101を起動させる方法について図4、図5を用いて説明をする。
図4はCPU111が実行する起動シーケンスの処理のフローチャートであり、図5はCPU101が実行する起動シーケンスの処理のフローチャートである。
本実施形態では初期状態においては次の設定で動作してから図4のフローチャートの処理が実行されるものとする。
複合機10の電源が入ると電源制御部120は、コントローラ20の各部に電力を供給するように制御を行う。
またクロック制御部121は、電力が供給されると、クロック制御信号32をクロック生成部30に出力することで、クロック生成部30の発振器もしくは振動子にクロック信号31を生成させるように制御する。またクロック制御部121は、内部クロック制御信号33をPLL123に出力することで、PLL123に所望のコントローラ20の内部クロックを生成させるように制御する。
次にリセット生成部40は、リセット信号41を介してリセット制御部122に対するリセットを解除する。
リセット制御部122に対するリセットが解除されると、まずリセット制御部122は、システムバス109、ROM112、CPU111、フラッシュメモリ制御部135、フラッシュメモリ145のリセットを解除する。このときはまだ、CPU101はリセット状態のままである。またCPU111のリセットベクタは、ROM112のアドレスである。すなわち、CPU111のリセットが解除されるとCPU111は、ROM112に記憶されているプログラムを実行する。CPU101のリセットベクタは、フラッシュメモリ145のアドレスであり、CPU101のリセットが解除されると、リセットベクタをよむ。CPU101は、リセットベクタに書かれたアドレスに飛びフラッシュメモリ145に記憶されているBIOSプログラムを実行する。
以下にS401~S408はCPU111が実行する起動シーケンスを図4に沿って説明する。すなわちCPU111が実行する図2に示されるソフトウェアモジュールによって以下の処理が行われる。この起動シーケンスの特徴は、S405である。すなわち、プログラムの改ざんの有無を判定する判定処理(この処理を以降、改ざん検知処理と呼ぶ)においてプログラム(BIOS210)およびこのプログラムの先頭アドレスが記載されているべきリセットベクタの署名検証を実行するようにする。
S401においてCPU111のリセットが解除されると、CPU111は、始めにROM112に書かれているブートプログラムを実行する。
S402においてCPU111は、ブートプログラムに従って電源制御を行う。ここでは改ざん検知を行うために必要なコントローラ20内の一部のモジュールのみに電源を供給するように制御を行う。なお、本実施形態では改ざん検知処理時に必要な次のモジュールには少なくとも電源を供給する。クロック制御部121、リセット制御部122、PLL123、電源制御部120、CPU101、フラッシュメモリ145、RAM102に電力が供給される。また、CPU111、ROM112、RAM113、HDD制御部134、フラッシュメモリ制御部135、外部ポート制御部137に電力が供給される。
S403においてCPU111は、ブートプログラムに従って以下のクロック制御を行う。コントローラ20の起動完了後にコントローラ20内の各モジュールの動作周波数は複合機10の製品仕様に応じて異なる。クロック制御部121は、クロック制御信号32によってクロック生成部30に対して、所望のクロック信号31を供給するように指示する。なお、外部クロックを変更した場合は水晶振動子や水晶発振器が安定するまで一定時間待つ必要がある。
さらにクロック制御部121は、内部クロック制御信号33によってPLL123に対して、コントローラ20内の必要なモジュールに対して供給される内部クロックの周波数を所望の周波数に設定する。こうすることでCPU111やシステムバス109、フラッシュメモリ制御部135の処理を行うことが可能となる。
なおクロック制御部121は、内部クロックの周波数を変更するために、次の処理を行う。すなわちクロック制御部121は、PLL123からのクロックを一旦ゲートして、PLL123をバイパスした外部クロックに切り替え、PLL123で生成される内部クロックが安定してから、所望の内部クロックを各モジュールに供給する制御を行う。ここで内部クロックを切り替える制御はCPU111へのクロック供給も停止してしまうのでクロック制御部121の内部にハードシーケンサを設けて行うものとする。
クロック制御部121は、CPU101、フラッシュメモリ145、RAM102、CPU111、ROM112、RAM113、システムバス109、HDD制御部134、フラッシュメモリ制御部135に供給されるクロック周波数を所望の周波数に設定する。供給されるクロックの周波数は、供給先のモジュールによって異ならせてよい。
S404においてCPU111は、ブートプログラムに従ってリセット解除を行う。すなわちCPU111は、改ざん検知処理に必要なモジュールのリセットを解除する。具体的にはRAM113、システムバス109、HDD制御部134のリセットが解除される。
S405においてCPU111は、ブートプログラムに従ってBIOSおよびリセットベクタの署名検証を行う。ブートプログラム209に含まれるBIOS・リセットベクタ改ざん検知処理部201は、フラッシュメモリ145からシステムバス109を介してBIOS210およびリセットベクタ215に記載されているアドレスをRAM113に読み込む。本実施形態では図6(b)に記載したように固定アドレス0x0000_0000から0x0001_FFFFの固定領域を読み込むものとする。次にBIOS・リセットベクタ改ざん検知処理部201はBIOS・リセットベクタ検証用公開鍵300を用いてBIOS・リセットベクタ署名302の検証を行う。なお、本実施形態ではBIOS210とリセットベクタ215に記載されているアドレスを一括して検証しているが各々別に検証しても良いものとする。またリセットベクタおよびBIOSのアドレスおよびサイズは固定でなくても良いものとする。その場合は前述した通りハッシュ計算対象範囲にリセットベクタおよびBIOSの各先頭アドレスおよびサイズを格納しておき読むものとする。
S406においてCPU111は、BIOS・リセットベクタの署名検証が成功したかを判定する。署名検証の結果、BIOSおよびリセットベクタが正規(正真)のものであって改ざんされていない(ハッシュ値と署名の値とが一致する)ならば、署名検証に成功したとして、処理はS407に進む。BIOSもしくはリセットベクタの内容が改ざんされている(ハッシュ値と署名の値とが一致しない)ならば、署名検証に失敗したとして、S408のエラー処理に進む。つまり本実施形態では、リセットベクタが改ざんされた場合でも、S408のエラー処理に進む。
S407においてCPU111は、リセット制御部122を制御してCPU101、フラッシュメモリ145、RAM102のリセットを解除し、ブートプログラムの処理を終了する。そして起動シーケンスは後述のS501へ遷移する。すなわちCPU101がBIOS210を実行してBIOS210が起動する。
S408においてBIOS・リセットベクタ改ざん検知処理部201(CPU111)は、S406で署名検証に失敗したことを通知するために、外部ポート制御部137を制御してLED147を点灯させ、ブートプログラムの処理を終了する。
以上のシーケンスを実行することでCPU101は改ざんされていないリセットベクタを介してBIOS210を実行することが可能となる。
以下にS501~S510はCPU101が実行する起動シーケンスを図5に沿って説明する。すなわちCPU101が実行する図2に示されるソフトウェアモジュールによって以下の処理が行われる。なお、下記で説明する処理においてプログラム(ローダー211、カーネル212、Nativeプログラム213、Javaプログラム214)の改ざん検知の有無の判定方法は一例である。プログラムの改ざんを検知する方法であれば他の方法が実行されてもよい。
S501においてCPU101は、リセットが解除されるとリセットベクタを参照(アクセス)するように構成されている。本実施形態ではリセットベクタがフラッシュメモリ145になるように設計されている。そのため、リセットが解除されたCPU101は、システムバス109を介してリセットベクタを参照し、リセットベクタに記載されているアドレス(BIOS210の先頭アドレス)を読み出す。CPU101は、この読み出したアドレス(BIOS210の先頭アドレス)へジャンプし、BIOS210をフラッシュから読み込んで実行する。BIOS210は起動されると、各種初期化処理を行い、BIOS210に含まれるローダー改ざん検知処理部202が、フラッシュメモリ145から、ローダー211とカーネル検証用公開鍵305、ローダー署名304を、RAM102に読み込む。ここでの初期化シーケンスは例えばHDD制御部134の初期化を行いHDDへアクセスができるようにする。
S502においてローダー改ざん検知処理部202は、ローダー検証用公開鍵305を用いてローダー署名304の検証を行い、署名検証に成功したか判定する。署名検証に失敗した場合、S510にてローダー改ざん検知処理部202は、パネル制御部133の初期化を行って操作パネル143にエラーメッセージを表示し処理を終了する。署名検証に成功した場合、ローダー改ざん検知処理部204は処理を終了し、BIOS210がRAM102に読み込まれたローダー211を起動する。
S503においてローダー211は起動されると、各種初期化処理を行う。ここでの初期化は例えばパネル制御部133の初期化を行って操作パネル143に起動画面を表示させたりする。また、ローダー211に含まれるカーネル改ざん検知処理部204が、フラッシュメモリ145から、カーネル212とNativeプログラム検証用公開鍵307とカーネル署名306を、RAM102に読み込む。
S504においてカーネル改ざん検知処理204は、カーネル検証用公開鍵305を用いてカーネル署名306の検証を行い、署名検証に成功したか判定する。署名検証に失敗した場合、S510にてカーネル改ざん検知処理部204は、操作パネル143にエラーメッセージを表示し処理を終了する。署名検証に成功した場合、カーネル改ざん検知処理部204は処理を終了し、ローダー211がRAM102に読み込まれたカーネル212を起動する。
S505においてカーネル212は起動されると、各種初期化処理を行う。ここでの初期化は例えばネットワークI/F制御部136の初期化を行ってネットワーク146との通信が行えるようにする。次にプログラム改ざん検知処理部205が、フラッシュメモリ145から、Nativeプログラム213およびJavaプログラム214の両プログラムの検証用公開鍵308と、Nativeプログラム署名309を、RAM102に読み込む。
S506においてプログラム改ざん検知処理部205は、検証用公開鍵308を用いて、Nativeプログラム署名309の検証を行い、署名検証に成功したか判定する。署名検証に失敗した場合、S510にてプログラム改ざん検知処理部204は、操作パネル143にエラーメッセージを表示し処理を終了する。署名検証に成功した場合、プログラム改ざん検知処理部205は処理を終了し、Nativeプログラム213を起動する。
S507においてNativeプログラム213のうち、改ざん検知の処理を行うJavaプログラム改ざん検知処理部206が起動されると、HDD144から、Javaプログラム214とJavaプログラム署名310を、RAM102に読み込む。また、スキャナ141、プリンタ142を起動させる起動プログラムを実行する。さらにNativeプログラム213は、CPU111の再起動プログラムにしたがって、CPU111のプログラム起動部をROM112からRAM113に変更する(すなわちCPU111の起動モードをROMブートからRAMブートに変更する)。そしてNativeプログラム213は、この再起動プログラムにしたがって、RAM113に上述の監視プログラムを書き込んでCPU111を一旦リセットして、CPU111のリセットを解除する。これによってCPU111は再起動する。この再起動によってCPU111は、S401とは異なり、RAMブートし、監視プログラムを実行する。
S508においてJavaプログラム改ざん検知処理部206は、S505でRAM102に読み込まれた検証用公開鍵308を用いて、Javaプログラム署名310の検証を行い、署名検証に成功したか判定する。署名検証に失敗した場合、S510にてJavaプログラム改ざん検知処理部206は操作パネル143にエラーメッセージを表示し処理を終了する。署名の検証に成功した場合、Javaプログラム改ざん検知処理部205は処理を終了し、S509にてJavaプログラム214を起動する。
なおS510の処理は、操作パネル143へエラーメッセージを表示するが、これに代えて、S410の処理のように、外部ポート制御部137を制御してLED147を点灯させるようにしてもよい。また操作パネル143へのエラーメッセージの表示およびLED147の点灯の両方が行われてもよい。
以上説明したように実施形態1によれば、ブートプログラムがBIOSだけでなくリセットベクタの改ざんを検知する処理を実行させることでセキュリティレベルを高めることができる。
また、本実施形態では公開鍵がすべて異なるものであるとして説明したが、同じものがあってもよい。またブートプログラム以外のプログラムの保存場所は限定されるものではなく、別の記憶媒体であってもよい。またプログラムの保存場所が説明した箇所になくてもよく、たとえばフラッシュメモリ145やROM112上にローダー223を記憶する構成であってもよい。
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。

Claims (18)

  1. 情報処理装置であって、
    BIOSプログラムの先頭アドレスを開始アドレスとして記憶し、かつ、前記先頭アドレスから前記BIOSプログラムを記憶しているメモリと、
    リセットが解除されると前記メモリの前記開始アドレスを参照し、前記BIOSプログラムの前記先頭アドレスを読み出し、前記読み出された先頭アドレスから前記BIOSプログラムを読み出して実行する第1のプロセッサと、
    前記情報処理装置に電源が供給されることに従って、前記情報処理装置の起動処理を開始するブートプログラムを実行する第2のプロセッサと、を有し、
    前記第2のプロセッサは、
    前記ブートプログラムを実行することによって、
    前記メモリに記憶されている前記BIOSプログラムおよび前記メモリの前記開始アドレスに記憶されている前記先頭アドレスに基づくデータが、正当であるか否かを検証することを特徴とする情報処理装置。
  2. 前記第2のプロセッサは、前記データが正真であると判定した場合に、前記第1のプロセッサのリセットを解除することを特徴とする請求項1に記載の情報処理装置。
  3. 前記データは、前記開始アドレスから前記BIOSプログラムの終了アドレスまでの連続したアドレスに記憶されたデータに基づくデータであることを特徴とする請求項1又は2に記載の情報処理装置。
  4. 前記メモリの前記開始アドレスは、前記第1のプロセッサのリセットベクタであることを特徴とする請求項1乃至3のいずれか1項に記載の情報処理装置。
  5. 前記メモリは、前記BIOSプログラムおよび前記先頭アドレスに基づくデータを記憶し、
    前記BIOSプログラムおよび前記先頭アドレスに基づくデータは、前記BIOSプログラムおよび前記先頭アドレスを少なくとも含む署名であることを特徴とする請求項1乃至4のいずれか1項に記載の情報処理装置。
  6. 前記第2のプロセッサは、
    前記署名を計算する計算手段を有し、
    前記メモリから読み出した署名と前記計算された署名とが一致しているか否かに基づいて、前記検証を行うことを特徴とする請求項5に記載の情報処理装置。
  7. 前記メモリは、前記署名を秘密鍵で暗号化された状態で記憶し、
    前記第2のプロセッサは、
    前記暗号化された状態の前記署名を前記秘密鍵と対になる公開鍵で復号化する復号化手段を有し、
    前記メモリから読み出して復号化された署名と、前記計算された署名とが一致しているか否かに基づいて、前記検証を行うことを特徴とする請求項6に記載の情報処理装置。
  8. 前記メモリは、
    前記開始アドレスから前記BIOSプログラムの終了アドレスまで連続したアドレスに記憶されたデータを記憶し、
    前記前記開始アドレスから前記BIOSプログラムの終了アドレスまで連続したアドレスに記憶されたデータに基づくデータは、前記開始アドレスから前記BIOSプログラムの終了アドレスまで連続したアドレスに記憶されたデータに基づく署名であることを特徴とする請求項1乃至7のいずれか1項に記載の情報処理装置。
  9. 前記署名とは、ハッシュ値であることを特徴とする請求項5乃至8のいずれか1項に記載の情報処理装置。
  10. 前記第1のプロセッサは、前記第2のプロセッサが前記ブートプログラムによって前記検証を行った後、前記BIOSプログラムを実行することを特徴とする請求項9に記載の情報処理装置。
  11. 前記第2のプロセッサは、前記検証を行なった後、前記第1のプロセッサをリセットおよび該リセットの解除を行い、
    前記第1のプロセッサは、前記第2のプロセッサによってリセットが解除されると、前記BIOSプログラムを実行することを特徴とする請求項10に記載の情報処理装置。
  12. BIOSプログラムの先頭アドレスを開始アドレスとして記憶し、かつ、前記先頭アドレスから前記BIOSプログラムを記憶しているメモリと、リセットが解除されると前記メモリの前記開始アドレスを参照し、前記BIOSプログラムの前記先頭アドレスを読み出し、前記読み出された先頭アドレスから前記BIOSプログラムを読み出して実行する第1のプロセッサと、装置に電源が供給されることに従って、前記装置の起動処理を開始するブートプログラムを実行する第2のプロセッサと、を有する装置のデータ検証方法であって、
    前記第2のプロセッサが前記ブートプログラムを実行する工程と、
    前記メモリに記憶されている前記BIOSプログラムおよび前記メモリの前記開始アドレスに記憶されている前記先頭アドレスに基づくデータが、正当であるか否かを検証する工程を有することを特徴とするデータ検証方法。
  13. 前記検証によって前記データが正真であると判定した場合に、前記第1のプロセッサのリセットを解除する工程を有することを特徴とする請求項12に記載のデータ検証方法。
  14. 前記検証されるデータは、前記開始アドレスから前記BIOSプログラムの終了アドレスまで連続したアドレスに記憶されたデータに基づくデータであることを特徴とする請求項12又は13に記載のデータ検証方法。
  15. 前記メモリの前記開始アドレスは、前記第1のプロセッサのリセットベクタであることを特徴とする請求項12乃至14のいずれか1項に記載のデータ検証方法。
  16. 前記メモリは、
    前記BIOSプログラムおよび前記先頭アドレスに基づくデータを記憶し、
    前記BIOSプログラムおよび前記先頭アドレスに基づくデータは、前記BIOSプログラムおよび前記先頭アドレスを少なくとも含む署名であることを特徴とする請求項12乃至15のいずれか1項に記載のデータ検証方法。
  17. 前記第2のプロセッサは、
    前記署名を計算する計算手段を有し、
    前記メモリから読み出した署名と前記計算された署名とが一致しているか否かに基づいて、前記検証を行うことを特徴とする請求項16に記載のデータ検証方法。
  18. 前記メモリは、
    前記開始アドレスから前記BIOSプログラムの終了アドレスまで連続したアドレスに記憶されたデータを記憶し、
    前記前記開始アドレスから前記BIOSプログラムの終了アドレスまで連続したアドレスに記憶されたデータに基づくデータは、前記開始アドレスから前記BIOSプログラムの終了アドレスまで連続したアドレスに記憶されたデータに基づく署名であることを特徴とする請求項12乃至17のいずれか1項に記載のデータ検証方法。
JP2019086270A 2019-04-26 2019-04-26 情報処理装置、データ検証方法 Active JP7263101B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019086270A JP7263101B2 (ja) 2019-04-26 2019-04-26 情報処理装置、データ検証方法
US16/847,401 US20200344066A1 (en) 2019-04-26 2020-04-13 Information processing apparatus and data verification method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019086270A JP7263101B2 (ja) 2019-04-26 2019-04-26 情報処理装置、データ検証方法

Publications (3)

Publication Number Publication Date
JP2020181540A JP2020181540A (ja) 2020-11-05
JP2020181540A5 JP2020181540A5 (ja) 2022-04-13
JP7263101B2 true JP7263101B2 (ja) 2023-04-24

Family

ID=72921969

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019086270A Active JP7263101B2 (ja) 2019-04-26 2019-04-26 情報処理装置、データ検証方法

Country Status (2)

Country Link
US (1) US20200344066A1 (ja)
JP (1) JP7263101B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7249968B2 (ja) * 2020-03-09 2023-03-31 株式会社東芝 情報処理装置およびストレージ

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013114620A (ja) 2011-11-30 2013-06-10 Ricoh Co Ltd 情報処理装置、情報処理装置の起動制御方法
US20130227196A1 (en) 2012-02-27 2013-08-29 Advanced Micro Devices, Inc. Circuit and method for initializing a computer system
JP2014056390A (ja) 2012-09-12 2014-03-27 Ricoh Co Ltd 情報処理装置及び正当性検証方法
JP2014518428A (ja) 2011-07-07 2014-07-28 インテル・コーポレーション Biosフラッシュ攻撃に対する保護および通知

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2575223B2 (ja) * 1990-03-06 1997-01-22 三菱電機株式会社 ワンチツプマイクロコンピユータ
US5388267A (en) * 1991-05-29 1995-02-07 Dell Usa, L.P. Method and apparatus for updating and restoring system BIOS functions while maintaining BIOS integrity
US5778070A (en) * 1996-06-28 1998-07-07 Intel Corporation Method and apparatus for protecting flash memory
JP3905204B2 (ja) * 1998-01-27 2007-04-18 富士通株式会社 半導体記憶装置
JP4274523B2 (ja) * 2003-01-24 2009-06-10 株式会社日立製作所 記憶装置システム、及び記憶装置システムの起動方法
US9658858B2 (en) * 2013-10-16 2017-05-23 Xilinx, Inc. Multi-threaded low-level startup for system boot efficiency
JP6609199B2 (ja) * 2016-03-01 2019-11-20 ルネサスエレクトロニクス株式会社 組込み機器

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014518428A (ja) 2011-07-07 2014-07-28 インテル・コーポレーション Biosフラッシュ攻撃に対する保護および通知
JP2013114620A (ja) 2011-11-30 2013-06-10 Ricoh Co Ltd 情報処理装置、情報処理装置の起動制御方法
US20130227196A1 (en) 2012-02-27 2013-08-29 Advanced Micro Devices, Inc. Circuit and method for initializing a computer system
JP2014056390A (ja) 2012-09-12 2014-03-27 Ricoh Co Ltd 情報処理装置及び正当性検証方法

Also Published As

Publication number Publication date
JP2020181540A (ja) 2020-11-05
US20200344066A1 (en) 2020-10-29

Similar Documents

Publication Publication Date Title
US10878098B2 (en) System on chip to perform a secure boot, an image forming apparatus using the same, and method thereof
EP2741228B1 (en) System on chip to perform a secure boot, an image forming apparatus using the same, and method thereof
US8438377B2 (en) Information processing apparatus, method and computer-readable storage medium that encrypts and decrypts data using a value calculated from operating-state data
KR101209252B1 (ko) 전자기기의 부팅 방법 및 부팅 인증 방법
JP2019075000A (ja) 情報処理装置、その制御方法、及びプログラム
US11914714B2 (en) Information processing apparatus and start-up method of the same
JPWO2009013825A1 (ja) 情報処理装置、及び改竄検証方法
CN111125686B (zh) 信息处理装置及其控制方法
WO2022156513A1 (zh) 一种服务器操作***引导方法、装置、设备及介质
US7624442B2 (en) Memory security device for flexible software environment
JP7263101B2 (ja) 情報処理装置、データ検証方法
US11379589B2 (en) Information processing apparatus and method of controlling the same
JP2020091698A (ja) 情報処理装置及びその制御方法
JP5961059B2 (ja) 情報処理装置およびその起動方法
JP7210238B2 (ja) 情報処理装置、情報処理装置の制御方法、及び、プログラム
JP7289641B2 (ja) 情報処理装置、およびその制御方法
JP2020052597A (ja) 情報処理装置、情報処理装置の制御方法、及び、プログラム
JP2022182837A (ja) 情報処理装置、及びその制御方法
JP2020187650A (ja) コントローラシステム及び方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220331

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220331

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221215

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221227

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230224

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230314

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230412

R151 Written notification of patent or utility model registration

Ref document number: 7263101

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151