JP7393226B2 - 情報処理装置とその起動方法 - Google Patents

情報処理装置とその起動方法 Download PDF

Info

Publication number
JP7393226B2
JP7393226B2 JP2020012890A JP2020012890A JP7393226B2 JP 7393226 B2 JP7393226 B2 JP 7393226B2 JP 2020012890 A JP2020012890 A JP 2020012890A JP 2020012890 A JP2020012890 A JP 2020012890A JP 7393226 B2 JP7393226 B2 JP 7393226B2
Authority
JP
Japan
Prior art keywords
cpu
boot program
program
information processing
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.)
Active
Application number
JP2020012890A
Other languages
English (en)
Other versions
JP2021117928A5 (ja
JP2021117928A (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 JP2020012890A priority Critical patent/JP7393226B2/ja
Priority to CN202110100933.8A priority patent/CN113190879A/zh
Priority to US17/159,349 priority patent/US11914714B2/en
Publication of JP2021117928A publication Critical patent/JP2021117928A/ja
Publication of JP2021117928A5 publication Critical patent/JP2021117928A5/ja
Application granted granted Critical
Publication of JP7393226B2 publication Critical patent/JP7393226B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/00912Arrangements for controlling a still picture apparatus or components thereof not otherwise provided for
    • H04N1/00938Software related arrangements, e.g. loading applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or 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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • 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
    • 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/3236Cryptographic 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 using cryptographic hash functions
    • 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
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/0077Types of the still picture apparatus
    • H04N2201/0094Multifunctional device, i.e. a device capable of all of reading, reproducing, copying, facsimile transception, file transception

Description

本発明は、情報処理装置とその起動方法に関するものである。
ソフトウェアの脆弱性をついて、ソフトウェアを改ざんし、コンピュータを悪用する攻撃が問題となっている。
特許文献1は、第1CPU、第2CPU、第2CPUが実行するプログラムを記憶する不揮発メモリを有する情報処理装置を記載している。この情報処理装置では、第1CPUが、第2CPUが実行するプログラムを不揮発メモリから読み出して、そのプログラムの改ざんの有無を検証し、その検証の結果に応じて、そのプログラムを第2CPUに出力する。こうして第2CPUは、改ざんがなされていないプログラムを実行することにより、セキュリティを向上させることができる。
国際公開第2009/013825号
プログラムを外部メモリから読み出して改ざんの有無を検証するシステムにおいて、プログラム自体の改ざんが無いことを検証することが行われている。しかしながら、改ざんの検知設定がなされていない状態で外部メモリの内容が改ざんされてしまうと、改ざんされたプログラムを実行できてしまうという課題が生じる。そのためセキュリティの起点となる起動プログラム、及びそのプログラムが使用する暗号化用の公開鍵や暗号方式などのセキュリティ設定は、堅牢性を備えた記憶装置に格納する必要がある。なぜなら起点となる起動プログラムのセキュリティに脆弱性があると、システム全体のセキュリティが担保されないためである。従って、これらは一般的に書き換えができないROMなどの記憶装置に格納される。
一方で、公開鍵や暗号方式などのセキュリティ設定は、製品の仕向けや用途に応じて変更できる構成が望ましい。そのため、その設定はOTP-ROM(One Time Programmable ROM)と呼ばれる一度だけ書き換え可能な記憶装置に格納されることがある。その場合、OTP-ROMに公開鍵や暗号化方式などのセキュリティ設定を書きこむ必要がある。このため例えば、OTP-ROMの初期状態でブートプログラムが読み込んで動作するプログラムを、そのOTP-ROMに用意する必要があった。このようなOTP-ROMへのプログラムの書き込みには多くの時間を要し、製造コストの点でも問題となっていた。
本発明の目的は、上記従来技術の問題点の少なくとも一つを解決することにある。
本発明の目的は、装置が新規部品の場合に、プログラムの検証の設定を行うプログラムを起動させることにより、ブートプログラムを記憶する不揮発メモリに記憶するプログラムの容量を少なくする技術を提供することにある。
上記目的を達成するために本発明の一態様に係る情報処理装置は以下のような構成を備える。即ち、
情報処理装置であって、
第1CPUと、
第2CPUと、
起動時に、前記第1CPUが実行するブートプログラムを記憶する第1不揮発メモリと、
第1ブートプログラム、及びプログラムを検証する第2ブートプログラムを記憶する第2不揮発メモリと、を有し、
前記第1CPUは、プログラムの改ざんを検証するための設定として暗号化を示す検証方式が前記第1不揮発メモリに設定されているか否かを判定し、前記検証方式が設定されていない場合に、前記第1ブートプログラムを実行して前記検証方式の設定を前記第1不揮発メモリに書き込み、
前記検証方式が設定されている場合に、当該設定に従って前記第2ブートプログラムを実行し、前記第2ブートプログラムによる処理が正常に終了すると前記第2CPUが前記情報処理装置を起動することを特徴とする。
本発明によれば、ブートプログラムを記憶する不揮発メモリに記憶するプログラムの容量を少なくしながら、セキュリティを向上させることができるという効果がある。
本発明のその他の特徴及び利点は、添付図面を参照とした以下の説明により明らかになるであろう。なお、添付図面においては、同じ若しくは同様の構成には、同じ参照番号を付す。
添付図面は明細書に含まれ、その一部を構成し、本発明の実施形態を示し、その記述と共に本発明の原理を説明するために用いられる。
本発明の実施形態に係る複合機のハードウェア構成を説明するブロック図。 実施形態に係る複合機が有するソフトウェアモジュールを説明するブロック図。 実施形態に係る複合機における起動シーケンスを説明する図。 実施形態に係る複合機におけるフラッシュメモリのサブブートプログラム217及びその署名、BIOS、リセットベクタ及びその署名の構成図(A)と、それにサブブートプログラム218及びそのハッシュ値が追加された構成図(B)。 実施形態に係る複合機のCPU111が実行する起動シーケンス処理を説明するフローチャート。 図5のS512においてサブブートプログラム217を実行するときの処理を説明するフローチャート(A)と、図5のS516においてサブブートプログラム218を実行するときの処理を説明するフローチャート(B)。 実施形態に係る複合機のCPU101による起動シーケンスを説明するフローチャート。
以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものでない。実施形態には複数の特徴が記載されているが、これら複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一もしくは同様の構成に同一の参照番号を付し、重複した説明は省略する。尚、実施形態に係る情報処理装置として複合機(デジタル複合機/MFP/Multi Function Peripheral)を例に説明する。しかしながら適用範囲は複合機に限定はせず、情報処理装置であればよい。以下の実施形態では、起動シーケンスにおいて、改ざん検知設定処理と改ざん検知処理とを切り分けて実行させる方法について説明する。
図1は、本発明の実施形態に係る複合機100のハードウェア構成を説明するブロック図である。
コントローラ110は、複合機100の制御を行うためのハードウェアモジュールを有する。実施形態では、コントローラ110は半導体チップとして構成されているものとして説明する。クロック生成部103は、クロック信号を生成して複合機100の各モジュールに適した周波数のクロック信号(外部クロック)を供給する。実施形態では、クロック生成部103は、クロック信号105をコントローラ110内のPLL(Phase Locked Loop)123に供給する。尚、このクロック信号105の周波数はクロック制御信号107によって変更可能である。
クロック制御部121は、PLL123を内部クロック制御信号108で制御する。これによりPLL123は、クロック信号105の周波数を逓倍し、周波数が逓倍されたクロック信号をコントローラ110の各モジュールに供給する。クロック制御部121は、コントローラ110の起動時や動作時に、PLL123に対して逓倍の設定を変更することで、PLL123が各モジュールに最適な周波数のクロック(内部クロック)を供給するように制御を行う。またクロック制御部121は、各モジュールに、クロックをゲートして、クロック信号の供給を停止させることができる。
リセット生成部104は、リセット信号106を生成して出力することにより、複合機100の各モジュールへリセットを掛けたり解除したりする半導体チップである。図1ではコントローラ110へ供給するリセット信号106しか図示していないが、フラッシュメモリ145、LED147、スキャナ141やプリンタ142などのモジュールにも接続されているものとする。
複合機100の電源がオンされると、一定時間(例えば、供給電源電圧が安定するまで)リセット信号106のリセット状態を保持した後、リセット信号106を解除状態にしてコントローラ110のリセットを解除する。リセット信号106がアサートされている状態がリセット状態であり、リセット信号106がデアサートされている状態がリセット信号106の解除状態である。コントローラ110のリセットが解除されると、リセット制御部122は、コントローラ110内部の各モジュールのリセット制御を行う。このリセット制御は、コントローラ110の起動時や動作時に、各モジュールをリセット状態にしたり、リセット解除状態にしたりする制御を指す。
CPU101は、複合機100のソフトウェアプログラムを実行し、機器全体の制御を行う。RAM102は、CPU101が複合機100を制御する際に、プログラムや、データの一時的な格納などに使用される揮発性のランダムアクセスメモリである。HDD144はハードディスクドライブであり、一部のアプリケーションや各種データを格納する。このHDD144は、CPU101が実行するJava(登録商標)プログラム214(図2)を格納している。尚、Javaプログラム214については後述する(以下、BIOS210などについても同様)。フラッシュメモリ145は、複合機100の固定パラメータ等を格納している。またフラッシュメモリ145は、CPU101が実行するBIOS210(図2)を格納している。更にフラッシュメモリ145は、CPU101が実行するローダ211、カーネル212、Nativeプログラム213(いずれも図2)を格納する。尚、HDD144とフラッシュメモリ145は同一のストレージモジュールであっても良い。
CPU111は、CPU101が実行するソフトウェアプログラムの改ざんを検知する改ざん検知ソフトウェアプログラムを実行する他、CPU101と分担して複合機100の一部の制御を行う。ROM112は、不揮発性のリードオンリーメモリであり、CPU111により実行される改ざん検知ソフトウェアプログラムや後述の公開鍵などを格納している。またROM112は、CPU111が実行するブートプログラム209を格納している。ここでROM112は、外部からのI/Fから書き換えられないように論理回路で構成されたマスクROM、もしくは製造時に一度だけ書き込みが可能なOTP-ROM(One Time Programmable ROM)で構成されている。RAM113は、揮発性のランダムアクセスメモリであり、CPU111が複合機100を制御する際に、プログラムや一時的なデータの格納などに使用される。尚、RAM102とRAM113は同一のモジュールであっても良い。
電源制御部120は、コントローラ110の各モジュールに対する電力供給を制御するIC(Integrated Circuit)である。コントローラ110(複合機100)の起動時や動作時に、各モジュール部に対して所定の電力を供給したり停止したりすることができる。スキャナ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は、コントローラ110の入出力ポート制御部である。例えば出力ポートを制御することにより、LED147を必要に応じて点灯し、ソフトウェアやハードウェアの異常を外部に伝えることができる。画像処理部138は、スキャナ141で原稿を読み取って得られた画像データをシェーディング補正したり、プリンタ142に出力するためにハーフトーン処理やスムージング処理したりする処理部である。システムバス109は、各モジュールを相互に接続する。このシステムバス109を介して、CPU101やCPU111からの制御信号や各装置間のデータ信号が送受信される。
図2は、実施形態に係る複合機100が有するソフトウェアモジュールを説明するブロック図である。これらのソフトウェアはCPU101又はCPU111が実行するものとして説明する。
通信管理部207は、ネットワーク146に接続されるネットワークI/F制御部136を制御して、ネットワーク146を介して外部とデータの送受信を行う。UI制御部216は、パネル制御部133を介して操作部143からの入力を受け取り、その入力に応じた処理や操作部143への画面出力を行う。
ブートプログラム209はROM112に記憶されており、複合機100の電源がオンされることによりCPU111で実行されるプログラムであり、起動に関わる処理としてコントローラ110の起動シーケンスを実行する。この起動シーケンスは、図5、図6を参照して後述する。このブートプログラム209は、サブブートプログラム217,218の改ざん検知を行うサブブートプログラム改ざん検知部200を有する。尚、図2において、ブートプログラム209以外のプログラムは、全てフラッシュメモリ145に格納されている。
サブプログラム217は、BIOS210の改ざんを検知するBIOS・リセットベクタ改ざん検知部201を実行する。もしくは改ざん検知設定部202を実行し、後述のROM112に対して行う改ざん検知設定プログラムを実行する。
BIOS210は、ブートプログラム209の実行後にCPU101で実行されるプログラムであり、起動に関わる処理を行う他に、ローダ211の改ざん検知を行うローダ改ざん検知部203を有する。更に、サブブートプログラム218は、ローダの改ざん検知を行うための設定を後述のROM112に対して行う改ざん検知設定部202を有する。
ローダ211は、BIOS210の処理が終わった後にCPU101で実行されるプログラムであり、起動に関わる処理を行う他に、カーネル212の改ざん検知を行うカーネル改ざん検知部204を有する。
カーネル212は、ローダ211の処理が終わった後にCPU101で実行されるプログラムであり、起動に関わる処理を行う他に、Nativeプログラム213の改ざん検知を行うNativeプログラム改ざん検知部205を有する。
リセットベクタ215は、CPU101がリセット解除されると最初に実行する処理の情報が記載されたプログラムである。リセットベクタ215には、例外ハンドラとISR(割り込みサービスルーチン)のアドレスが記載されている。飛び先アドレスを記述しておくとハンドラが自動的にそのアドレスに移行し、CPU101が、そのアドレスのプログラムを実行できるようになっている。リセット解除時は例外ハンドラの一つであるリセットハンドラを参照して、リセットハンドラに記載された飛び先アドレスのプログラムを実行する。尚、CPUによっては命令を記述し、その命令を実行して指定のアドレスへ移行する方式もあるものとする。実施形態においては前者の方式で説明する。
Nativeプログラム213は、CPU101で実行されるプログラムであり、複合機100のJavaプログラム214と連携して各機能を提供する複数のプログラムで構成される。この複数のプログラムは、例えばスキャナIF制御部131やプリンタIF制御部132を制御するプログラムや起動プログラム、CPU111の再起動プログラムなどを含む。この起動プログラム及びCPU111の再起動プログラムは、カーネル212によってNativeプログラムの中から呼び出され、起動処理を行う。ここでCPU111の再起動プログラムは、CPU111がブートプログラムを実行しBIOS・リセットベクタ改ざん検知処理を終えた後にCPU111を別用途として使うためのものである。例えば、省電力モード時に外部ポートの割り込みを監視プログラムとして使う。ここで省電力モードとは、CPU111と外部ポート制御部、システムバス109、ネットワークI/F制御部136、操作部143以外の制御部、処理部を通常時の稼働状態から安全に電源遮断もしくはクロック停止させた状態を指すものとする。CPU111は、例えばセンサなどの信号が入ることで外部ポート制御部137から外部ポートの割り込みを検知すると省電力モードから通常モードに復帰させる処理を行う。前述した電源遮断もしくはクロック信号が停止された制御部、処理部を安全に稼働状態に移行させるものとする。CPU111が割り込み監視をすることで、CPU101に対してCPU111が小規模で待機電力が小さい場合に通常動作時の処理を行うCPU101の電源遮断、もしくはクロック信号を停止させて省電力の効果を上げることが可能となる。またNativeプログラム213は、プログラムの中の一つとしてJavaプログラムの改ざん検知を行うJavaプログラム改ざん検知部206を有する。
Javaプログラム214は、CPU101で実行されるプログラムであり、複合機100のNativeプログラム213と連携して各機能を提供するプログラム(例えば、操作部143に画面を表示するプログラム)である。
次に複機10の起動シーケンスについて図3を参照して説明する。
図3は、実施形態に係る複合機100における起動シーケンスを説明する図である。
図3(A)は、プログラムの改ざん検知を行わずに複合機100が起動する順序を示す起動シーケンス模式図である。
CPU111がブートプログラム209を実行してCPU101のリセットを解除する。これによりCPU101がBIOS210を起動すると、BIOS210がローダ211を起動し、ローダ211がカーネル212を起動する。そして更に、カーネル212がNativeプログラム213の中から起動プログラムを起動する。こうして起動プログラムの中でJavaプログラム214が起動され、これ以降は、Nativeプログラム213とJavaプログラム214が連携して複合機100の有する各機能を提供することができる。
図3(B)(C)は、実施形態に係る起動シーケンスの模式図である。また、各プログラムの保存場所、デジタル署名(以下、署名と呼ぶ)と公開鍵の保存場所、検証方式、サブブートプログラムヘッダアドレスポインタ、ハッシュ値を表した模式図でもある。
ここで署名とは、例えば正規のプログラム(データ列)を所定のハッシュ関数によってハッシュ値に変換し、公開鍵に対応する秘密鍵でハッシュ値を暗号化したものである。この暗号化されたハッシュ値を公開鍵で復号することで正規のプログラムのハッシュ値を計算し、改ざんの有無の検証対象であるプログラムを前述のハッシュ関数によってハッシュ値に変換し、これら2つのハッシュ値を比較する。これら2つのハッシュ値が等しければ検証対象のプログラムは正規のプログラムから改ざんされていないと判定できる。またもし2つのハッシュ値が異なれば検証対象のプログラムは正規のプログラムから改ざんされていると判定できる。このように署名を用いて検証対象のプログラムの改ざん有無を調べる方法を、以降では、署名検証と呼ぶ。またプログラムが改ざんされていないことを署名検証に成功すると呼び、プログラムが改ざんされていることを署名検証に失敗すると呼ぶ。また、この署名検証では、プログラムのハッシュ値を暗号化しているが、プログラムのハッシュ値を暗号化しないでハッシュ値のみを比較して改ざんの有無を判定することも可能なものとする。このようにハッシュ値を用いて検証対象のプログラムの改ざん有無を調べる方法を、以降では、ハッシュ検証と呼ぶものとする。
検証方式313の値は、CPU111がブートプログラム209を実行する際に、署名検証か、ハッシュ検証かを切り替えるために用いるもの設定値で、ROM112に記憶されている。尚、実施形態では、ROM112の検証方式の値が「0」のときはハッシュ検証を示し、「1」のときは署名検証を示すものとする。
サブブートプログラムヘッダアドレスポインタ314は、ブートプログラム209においてサブブートプログラムヘッダアドレスの場所を示すものである。実施形態では、CPU111がBIOS・リセットベクタ改ざん検知部201、或いは改ざん検知設定部202のいずれを動作させるかは、このアドレスポインタを参照したヘッダが示すサブブートプログラムによって決定される。尚、実施形態ではROM112に、このサブブートプログラムヘッダアドレスポインタ314の設定がなされていない場合は、ROM112のアドレスポインタの値が「0」である。その場合は。予め定めたフラッシュメモリ145上のアドレスを参照するものとする。一方、このサブプログラムヘッダアドレスポインタ314の設定がなされている場合は、そのアドレスを参照してプログラムを実行するものとする。参照する内容については図4を参照して後述する。
尚、実施形態では、プログラムの改ざんの有無を調べる方法として、このような署名及び公開鍵を用いる方法、及びハッシュを用いる方法を採用するが、改ざんの有無を調べる他の方法を用いても良い。
図3(B)は、ブートプログラム209からサブブートプログラム217、BIOS210及びリセットベクタ215、ローダ211、カーネル212、Nativeプログラム213、Javaプログラム214が改ざん検知を行いながら起動する起動シーケンスの模式図である。
ブートプログラム209には、サブブートプログラム署名及びBIOS署名検証用の公開鍵300が含まれている。サブブートプログラムには、その署名301が含まれている。BIOS210にはBIOS・リセットベクタ署名302とローダ検証用公開鍵303が含まれている。またローダ211には、ローダ署名304とカーネル検証用公開鍵305が含まれている。またカーネル212には、カーネル署名306とNativeプログラム検証用公開鍵307が含まれている。またNativeプログラム213には、Nativeプログラム署名308とJavaプログラム検証用公開鍵309が含まれている。更にJavaプログラム214には、Javaプログラム署名310が含まれている。これらの公開鍵と署名は、複合機100の出荷前にプログラムに対して付与されているものとする。
図3(C)は、ブートプログラム209からサブブートプログラムの改ざん検知設定処理を実行する流れを表した起動シーケンスの模式図である。ここでフラッシュメモリ145のサブブートプログラムには、そのハッシュ値315が追加されている。
図4(A)は、フラッシュメモリ145上のサブブートプログラム217及びその署名301、BIOS210、リセットベクタ215及びその署名302の構成図である。
ここでは図3(C)におけるサブプログラムヘッダアドレスポインタ314が「0x0004_0000」に設定されている場合を示している。ここでサブブートプログラム217の署名の領域は、サブブートプログラム217のヘッダからサブブートプログラム217の終端までのデータ列を含めてハッシュ値に変換し、公開鍵に対応する秘密鍵で、そのハッシュ値を暗号化した値が記憶される。そして、このハッシュ値を公開鍵で復号し、正規のプログラムとリセットベクタ215のハッシュ値を計算し、改ざんの有無の検証対象であるプログラムを前述のハッシュ関数によってハッシュ値に変換し、これら2つのハッシュ値を比較する。ハッシュ計算対象範囲「0x0004_0000」~「0x0004_0010」に、サブブートプログラム127のヘッダとしてサブブートプログラム217のアドレス及びサイズを記憶する。そしてCPU111がブートプログラム209を実行して、そのアドレス及びサイズを読み込んで必要な領域のデータ列をハッシュ値に変換する。フラッシュメモリ145では、サブブートプログラム217に続いて署名もしくはハッシュ値が配置されているが、サブブートプログラム217のヘッダに署名もしくはハッシュ値のアドレス、サイズを追加しておき、ブートプログラム209が読み込んで参照しても良いものとする。
上述したBIOS・リセットベクタ改ざん検知部201、ローダ改ざん検知部203、カーネル改ざん検知部204、Nativeプログラム改ざん検知部25及びJavaプログラム改ざん検知部206がそれぞれ後続のプログラムが改ざんされているかどうかを検証する。そして、そのプログラムが改ざんされていなければ、そのプログラムを起動する。このようにプログラムの改ざんの検証と起動を順次実行する起動シーケンスに従って合機100は起動する。
図4(B)は、図4(A)の構成に、フラッシュメモリ145上でサブブートプログラム218及びそのハッシュ値が追加された構成図である。
ここでサブブートプログラム218は、改ざん検知設定がなされていないため、署名ではなくハッシュ値検証を用いている。図3(C)で、サブブートプログラムヘッダアドレスポインタ314が設定されていない場合に、ブートプログラム209が「0x0005_0000」を読む構成を示している。ここでサブブートプログラム218のハッシュ値の領域は、サブブートプログラム218のヘッダからサブブートプログラム218の終端までのデータ列を含めてハッシュ値に変換した値が記憶される。また、改ざんの有無の検証対象であるプログラムを前述のハッシュ関数によってハッシュ値に変換し、これら2つのハッシュ値を比較する。ハッシュ計算対象範囲「0x0005_0000」~「0x0005_0010」にサブブートプログラム218のヘッダとしてサブブートプログラム218のアドレス及びサイズを記憶する。そしてCPU111がブートプログラム209を実行して、そのアドレス及びサイズを読み込んで必要な領域のデータ列をハッシュ値に変換する。フラッシュメモリ145ではサブブートプログラム218に続いてハッシュ値が配置されているが、サブブートプログラム218のヘッダにハッシュ値のアドレス、サイズを追加しておき、ブートプログラム209がそれを読み込んで参照しても良いものとする。
次に実施形態の特徴である起動シーケンスにおいて改ざん検知設定処理と改ざん検知処理が切り分けて実行させる方法を図5~図7のフローチャートを参照して説明する。
図5は、実施形態に係る複合機100のCPU111が実行する起動シーケンス処理を説明するフローチャートである。尚、実施形態では、初期状態においては、以下に説明する設定で動作してから図5のフローチャートの処理が実行されるものとする。
複合機100の電源がオンされると電源制御部120は、コントローラ110の各部に電力を供給するように制御する。クロック制御部121は、電力が供給されると、クロック制御信号107をクロック生成部103に出力することで、クロック生成部103の発振器もしくは振動子にクロック信号105を生成させるように制御する。またクロック制御部121は、内部クロック制御信号108をPLL123に出力することで、PLL123に所望のコントローラ110の内部クロックを生成させるように制御する。
次にリセット生成部104は、リセット信号106を介してリセット制御部122に対するリセットを解除する。リセット制御部122に対するリセットが解除されると、まずリセット制御部122は、システムバス109、ROM112、CPU111、フラッシュメモリ制御部135、フラッシュメモリ145のリセットを解除する。但し、このときはまだ、CPU101はリセット状態のままである。またCPU111のリセットベクタは、ROM112のアドレスである。即ち、CPU111のリセットが解除されるとCPU111は、ROM112に記憶されているブートプログラム209を実行する。CPU101のリセットベクタは、フラッシュメモリ145の所定のアドレス(実施形態では「0x0000_0000」)に記憶されており、CPU101のリセットが解除されると、CPU101は、このリセットベクタを読み込む。そしてCPU101は、そのリセットベクタに書かれたアドレスにジャンプし、フラッシュメモリ145に記憶されているBIOS210を実行する。
以下、S501~S51はCPU111が実行する起動シーケンスを示す。即ち、CPU111が実行する図2に示されるソフトウェアモジュールによって以下の処理が行われる。この起動シーケンスの特徴は、S508である。即ち、サブブートプログラムヘッダを読み込んでサブブートプログラムを切り替えて実行するようにする。
CPU111のリセットが解除されることにより、このシーケンスが開始されるとまずS501でCPU111は、ROM112に記憶されているブートプログラム209を起動して実行する。次にS502に進みCPU111は、そのブートプログラム209に従って電源制御を行う。ここでは改ざん検知もしくは改ざん検知設定を行うために必要なコントローラ110内の一部のモジュールのみに電源を供給するように制御を行う。尚、実施形態では、改ざん検知処理もしくは改ざん検知設定時に必要な次のモジュールには少なくとも電源を供給する。これらモジュールは、クロック制御部121、リセット制御部122、PLL123、電源制御部120、CPU101、フラッシュメモリ145、RAM102、CPU111、ROM112、RAM113、HDD制御部134、フラッシュメモリ制御部135、外部ポート制御部137である。
次にS503に進みCPU111は、ブートプログラム209に従って以下のクロック制御を行う。コントローラ110の起動完了後にコントローラ110内の各モジュールの動作周波数は、複合機100の製品仕様に応じて異なる。クロック制御部121は、クロック制御信号107によってクロック生成部103に対して、所望のクロック信号105を供給するように指示する。尚、クロック信号105の周波数を変更した場合は、水晶振動子や水晶発振器が安定するまで一定時間待つ必要がある。更にクロック制御部121は、内部クロック制御信号108によってPLL123に対して、コントローラ110内の必要なモジュールに対して供給される内部クロック信号の周波数を所望の周波数に設定する。こうすることでCPU111やシステムバス109、フラッシュメモリ制御部135の処理を行うことが可能となる。
尚、クロック制御部121は、内部クロック信号の周波数を変更するために、次の処理を行う。即ち、クロック制御部121は、PLL123からのクロック信号を一旦ゲートして、PLL123をバイパスした外部クロック信号に切り替える。そしてPLL123で生成される内部クロック信号が安定してから、所望の内部クロック信号を各モジュールに供給するよう制御する。ここで内部クロック信号を切り替える制御は、CPU111へのクロック信号の供給も停止してしまうのでクロック制御部121の内部にハードシーケンサを設けて行うものとする。
クロック制御部121は、CPU101、フラッシュメモリ145、RAM102、CPU111、ROM112、RAM113、システムバス109、HDD制御部134、フラッシュメモリ制御部135に供給されるクロック信号の周波数が所望の周波数になるように設定を行う。尚、ここで供給されるクロック信号の周波数は、供給先のモジュールによって異ならせてよい。
次にS504に進みCPU111は、ブートプログラム209に従ってリセット解除を行う。即ち、CPU111は、改ざん検知処理もしくは改ざん検知設定に必要なモジュールのリセットを解除する。具体的には、RAM113、システムバス109、HDD制御部134のリセットを解除する。次にS505に進みCPU111は、ブートプログラム209に従ってROM112に設定されている改ざん検知設定値を読み込む。そしてS506に進みCPU111は、改ざん検知設定値のうち検証方式を確認する。ここで検証方式が署名検証方式であればS507へ進み、ハッシュ検証方式であればS508へ遷移する。実施形態では、改ざん検知処理時は署名検証方式、改ざん検知設定処理時はハッシュ検証方式が設定されているものとする。但し、ハッシュ検証方式は、ROM112の検証方式313(図3(C))に何も書かれていない場合の値であるものとする。
署名検証方式のときはS507でCPU111は、ROM112から公開鍵を読み込み、その公開鍵をRAM113に記憶してS508に進む。S508でCPU111は、サブブートプログラムのヘッダポインタの値を読み取る。次にS509に進みCPU111は、サブブートプログラムのヘッダポインタの値がサブブートプログラム217のヘッダか、サブブートプログラム218のヘッダであるか判定する。ここでサブブートプログラム217のヘッダであると判定するとS510に進み、そうでないときはサブブートプログラム218のヘッダであると判定してS514に進む。尚、実施形態では、ROM112のサブブートプログラムのヘッダアドレスポインタに何も書かれていない初期値(例えば、全て「0」)の場合は、CPU111はサブブートプログラム218のアドレス(図4(B)の0x0005_0000)が読まれたように処理するものとする。

S509でCPU111は、サブブートプログラム217のヘッダであると判定するとS510に進む。S510でCPU111は、サブブートプログラム217のヘッダポインタからサブブートプログラム217のアドレス及びサイズ、署名のアドレスが書かれている場合は、その署名も読み取る。図4(B)の実施形態では、アドレス(0x0004_0000)に設定されている。読み取ったアドレス及びサイズからサブブートプログラム217のハッシュ値を算出する。また暗号化された署名を、S507で読んだ公開鍵を使ってハッシュ値に復号化する。そして、これら2つのハッシュ値を比較することにより、サブブートプログラム217の署名検証を行う。そしてS511に進みCPU111は、これらハッシュ値が一致した場合は、サブブートプログラム217が改ざんされていないと判定してS512に遷移する。一方、これらハッシュ値が一致しなかった場合はサブブートプログラム217が改ざんされていると判定してS513に遷移する。
S512でCPU111は、サブブートプログラム217をRAM113にロードして実行する。つまりBIOS・リセットベクタの改ざん検知処理をすることになる。このときの処理内容は、図6(A)のフローチャートを参照して後述する。一方、S513でCPU111は、サブブートプログラム217が改ざんされているため、エラー通知をするためにLED147を点滅させて、この処理を終了する。
またS514でCPU111は、サブブートプログラム218のヘッダポインタからサブブートプログラム218のアドレス及びサイズを取得する。またハッシュ値の格納アドレスが書かれている場合は、そのハッシュ値も読み取る。図4(B)に示すように実施形態では、サブブートプログラム218のヘッダはアドレス(0x0005_0000)に設定されている。そしてCPU111は、読み取ったアドレス及びサイズからサブブートプログラム218のハッシュ値を算出する。記憶されているサブブートプログラム218のハッシュ値と比較する。そしてS51で、これらハッシュ値が一致した場合は、サブブートプログラム218が改ざんされていないと判定してS51に進むが、そうでないときはS513に進んでLED147を点滅させる。S51でCPU111は、サブブートプログラム218をRAM113にロードして実行する。つまり改ざん検知設定処理を実行することになる。この時の処理内容は、図6(B)のフローチャートを参照して後述する。
尚、S506の検証方式の判定において、署名検証方式でなかった場合、つまり初期値のハッシュ検証の場合は、サブブートプログラム218のヘッダポインタを読み込んでS514へ遷移しても良い。同様に、S507で公開鍵の値が初期値の場合は、サブブートプログラム218のヘッダポインタを読み込んでS514へ遷移しても良い。
次に、図5のS512においてサブブートプログラム217を実行するときに、BIOS・リセットベクタの改ざん検知処理を実行する方法について図6(A)のフローチャートを参照して説明する。
図6(A)は、図5のS512においてサブブートプログラム217を実行するときの処理を説明するフローチャートである。
S601でCPU111は、BIOS・リセットベクタのヘッダポインタを読み込む。図4(B)に示す通り実施形態では、このヘッダポインタは、0x0000_8000に設定されている。実施形態ではBIOS・リセットベクタのヘッダポインタは、サブブートプログラム217に記載されているものとする。尚、このヘッダポインタをサブブートプログラム217のヘッダに含めて、そのヘッダから読み込んでも良いものとする。
次にS602に進みCPU111は、BIOS及びリセットベクタの署名検証を行う。ここでCPU111は、サブブートプログラム217に含まれるBIOS・リセットベクタ改ざん検知部201として機能し、フラッシュメモリ145からシステムバス109を介してBIOS210及びリセットベクタ215をRAM113に読み込む。実施形態では図4(B)に記載したように固定アドレス0x0000_0000から0x0001_FFFFの固定領域(ハッシュ計算対象範囲)を読み込むものとする。そしてBIOS・リセットベクタ改ざん検知部201は、サブブートプログラム署名及びBIOS署名検証用公開鍵300を用いてBIOS・リセットベクタ署名302の検証を行う。尚、実施形態では、BIOSとリセットベクタをひとまとまりで検証を行っているが、各々別に検証しても良いものとする。またリセットベクタ及びBIOSのアドレス及びサイズは固定でなくても良いものとする。その場合は前述した通りハッシュ計算対象範囲にリセットベクタ及びBIOSの各先頭アドレス及びサイズを格納しておき、それを読み出す。
次にS603に進みCPU111は、BIOS・リセットベクタの署名検証が成功したかを判定する。署名検証の結果、BIOS及びリセットベクタが改ざんされていない(ハッシュ値と署名の値とが一致する)と判定すると署名検証に成功したとしてS604に進む。一方、BIOSもしくはリセットベクタが改ざんされている(ハッシュ値と署名の値とが一致しない)ときは署名検証に失敗したと判定してS605のエラー処理に進む。つまりリセットベクタが改ざんされた場合でも、それを検知してS605のエラー処理に進むことが可能となる。S604でCPU111は、リセット制御部122を制御してCPU101、フラッシュメモリ145、RAM102のリセットを解除し、サブブートプログラム217の処理を終了する。そして起動シーケンスは後述のS701へ遷移する。即ちCPU101がBIOS210を実行して起動する。一方、S605に進むとCPU111はBIOS・リセットベクタ改ざん検知部201として機能し、署名検証に失敗したことを通知するために外部ポート制御部137を制御してLED147を点灯させ、ブートプログラムの処理を終了する。
次に、図5のS516においてサブブートプログラム218を実行する処理を図6(B)のフローチャートを参照して説明する。
図6(B)は、図5のS516においてサブブートプログラム218を実行するときの処理を説明するフローチャートである。
先ずS610でCPU111は、改ざん検知設定をROM112の所定のアドレスに書き込む。この設定の内容は、前述の検証方式、公開鍵、サブブートプログラムのヘッダポインタであり、これらはサブブートプログラム218の内部に値を持っているものとする。次にS611に進みCPU111は、S610で書いた内容を正しく読めるかチェックをする。ここで正常に読み取れる場合はS612に進み、そうでないときはS613へ遷移する。S612でCPU111は、システムをリブートしてサブブートプログラム218の処理を終了する。実施形態では、不図示のウォッチドックタイマを起動させて、一定時間後にリセット制御部122のリセットを掛けるものとする。このリセットを掛ける方法は、これに限らない。S613でCPU111は、S611で改ざん検知設定に失敗したことを通知するために、外部ポート制御部137を制御してLED147を点灯させてサブブートプログラム218の処理を終了する。
以上のシーケンスを実行することで、CPU111は改ざん検知処理と改ざん検知設定処理とを切り分けて実行することが可能となる。
図7は、実施形態に係る複合機100のCPU101による起動シーケンスを説明するフローチャートである。尚、以下で説明する処理においてプログラム(ローダ211、カーネル212、Nativeプログラム213、Javaプログラム214)の改ざん検知の有無の判定方法は一例であり、プログラムの改ざんを検知する方法であれば他の方法が実行されてもよい。尚、このフローチャートで示す処理は、CPU101がRAM102に展開したプログラムを実行することにより達成される。
先ずS701でCPU101は、リセットが解除されるとリセットベクタ215を読むように構成されている。実施形態では、リセットベクタ215は、フラッシュメモリ145に格納されるように設計されているためシステムバス109を介してリセットベクタ215を読みに行く。そしてリセットベクタ215に書かれているBIOSの先頭番地へジャンプし、BIOS210をフラッシュメモリ145から読み込んで実行する。BIOS210が起動されると、各種初期化処理を行い、BIOS210に含まれるローダ改ざん検知部203が、フラッシュメモリ145から、ローダ211とカーネル検証用公開鍵305、ローダ署名304を、RAM102に読み込む。ここでの初期化シーケンスは、例えばHDD制御部134の初期化を行ってHDD144へアクセスができるようにする。
次にS702に進みCPU101はローダ改ざん検知部203として機能し、ローダ検証用公開鍵30を用いてローダ署名304を検証し、署名検証に成功したか判定する。ここで署名検証に失敗したときはS710に進みローダ改ざん検知部203は、パネル制御部133の初期化を行って操作部143にエラーメッセージを表示して、この処理を終了する。一方、署名検証に成功した場合はS703に進みローダ改ざん検知部203は処理を終了し、BIOS210がRAM102に読み込まれたローダ211を起動する。
こうしてS703でCPU101はローダ211を起動して、各種初期化処理を行う。ここでの初期化は、例えばパネル制御部133の初期化を行って操作部143に起動画面を表示させたりする。またローダ211に含まれるカーネル改ざん検知部204が、フラッシュメモリ145から、カーネル212とカーネル検証用公開鍵30とカーネル署名306をRAM102に読み込む。
次にS704に進みCPU101はカーネル改ざん検知部204として機能し、カーネル検証用公開鍵305を用いてカーネル署名306を検証し、その署名検証に成功したか判定する。ここでカーネル署名の検証に失敗したときはS710に進み、カーネル改ざん検知部204は操作部143にエラーメッセージを表示して、この処理を終了する。一方、カーネル署名の検証に成功するとS705に進みカーネル改ざん検知部204は処理を終了し、ローダ211がRAM102に読み込まれたカーネル212を起動する。
こうしてS705でCPU101はカーネル212を起動すると各種初期化処理を行う。ここでの初期化は、例えばネットワークI/F制御部136の初期化を行ってネットワーク146との通信が行えるようにする。次にカーネル212に含まれるNativeプログラム改ざん検知部205が、フラッシュメモリ145から、Nativeプログラム213の検証用公開鍵30と、Nativeプログラム署名30を、RAM102に読み込む。
そしてS706に進みCPU101はNativeプログラム改ざん検知部205として機能し、検証用公開鍵30を用いて、Nativeプログラム署名30を検証し、Nativeプログラム署名の検証に成功したか判定する。Nativeプログラム署名の検証に失敗したときはS710に進みNativeプログラム改ざん検知部20は、操作部143にエラーメッセージを表示して、この処理を終了する。一方、Nativeプログラム署名の検証に成功したときはS707に進み、Nativeプログラム改ざん検知部205は処理を終了し、Nativeプログラム213を起動する。
S707でCPU101は、Nativeプログラム213のうち、改ざん検知の処理を行うJavaプログラム改ざん検知部206を起動し、HDD144から、Javaプログラム214とJavaプログラム署名310をRAM102に読み込む。また、スキャナ141、プリンタ142を起動させる起動プログラムを実行する。更に、Nativeプログラム213は、CPU111のプログラム起動部をROM112からRAM113に変更し、RAM113に再起動プログラムを書き込んでCPU111をリセットし、次のそのリセットを解除をすることで再起動させる。この再起動によってCPU111は、前述の省電力モード時に外部ポートの割り込みを監視するプログラムを実行することが可能となる。
次にS708に進みCPU101はJavaプログラム改ざん検知部206として機能し、S705でRAM102に読み込まれたJavaプログラム検証用公開鍵30を用いて、Javaプログラム署名310を検証し、Javaプログラム署名の検証に成功したか判定する。ここでJavaプログラム署名の検証に失敗したときはS710に進みJavaプログラム改ざん検知部206は操作部143にエラーメッセージを表示して、処理を終了する。一方、Javaプログラム署名の検証に成功したときはJavaプログラム改ざん検知部20は処理を終了し、S709に進んでJavaプログラム214を起動する。
尚、S710の処理は、操作部143へエラーメッセージを表示するが、これに代えて、外部ポート制御部137を制御してLED147を点滅させるようにしてもよい。また操作部143へのエラーメッセージの表示及びLED147の点滅の両方が行われてもよい。
尚、実施形態では、公開鍵がすべて異なるものであるとして説明したが、同じものがあってもよい。またブートプログラム以外のプログラムの保存場所は限定されるものではなく、別の記憶媒体であってもよい。またプログラムの保存場所が説明した箇所になくてもよく、例えば、フラッシュメモリ145やROM112上にローダ223を記憶する構成であってもよい。
以上説明したように実施形態によれば、改ざん検知設定がなされていない場合に、必ず改ざん検知設定処理を実行させることでセキュリティレベルを高めることができる。
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本発明は上記実施形態に制限されるものではなく、本発明の精神及び範囲から逸脱することなく、様々な変更及び変形が可能である。従って、本発明の範囲を公にするために、以下の請求項を添付する。
100…複合機、101,111…CPU、112…ROM、102,113…RAM、144…HDD,145…フラッシュメモリ、147…LED,209…ブートプログラム、217,218…サブブートプログラム、211…ローダ、212…カーネル、213…Nativeプログラム

Claims (13)

  1. 情報処理装置であって、
    第1CPUと、
    第2CPUと、
    起動時に、前記第1CPUが実行するブートプログラムを記憶する第1不揮発メモリと、
    第1ブートプログラム、及びプログラムを検証する第2ブートプログラムを記憶する第2不揮発メモリと、を有し、
    前記第1CPUは、プログラムの改ざんを検証するための設定として暗号化を示す検証方式が前記第1不揮発メモリに設定されているか否かを判定し、前記検証方式が設定されていない場合に、前記第1ブートプログラムを実行して前記検証方式の設定を前記第1不揮発メモリに書き込み、
    前記検証方式が設定されている場合に、当該設定に従って前記第2ブートプログラムを実行し、前記第2ブートプログラムによる処理が正常に終了すると前記第2CPUが前記情報処理装置を起動することを特徴とする情報処理装置。
  2. 前記設定は、前記検証方式の設定、前記第2ブートプログラムを検証するための公開鍵、前記第2ブートプログラムのヘッダポインタを含むことを特徴とする請求項1に記載の情報処理装置。
  3. 前記検証方式が設定されていない場合、前記第1CPUはハッシュ値による前記第1ブートプログラムの検証を行い、当該検証に成功すると前記第1ブートプログラムを実行することを特徴とする請求項1又は2に記載の情報処理装置。
  4. 前記検証方式が設定されている場合、前記第1CPUは、前記設定に含まれる前記公開鍵を使用して前記第2ブートプログラムの検証を行い、当該検証に成功すると前記第2ブートプログラムを実行することを特徴とする請求項2に記載の情報処理装置。
  5. 前記第2ブートプログラムは、前記第2CPUが実行するBIOSの署名検証を行い、当該署名検証に成功すると前記第2CPUのリセットを解除することで前記第2CPUが前記情報処理装置を起動することを特徴とする請求項1に記載の情報処理装置。
  6. プログラムの改ざんを検証するための前記設定の初期値は、ハッシュ値による検証方式であることを特徴とする請求項1に記載の情報処理装置。
  7. 前記公開鍵の設定値が初期値の場合、前記第1CPUは、プログラムの改ざんを検証するための設定として暗号化を示す検証方式が設定されていないと判定することを特徴とする請求項2に記載の情報処理装置。
  8. 前記第1CPUが、前記第1ブートプログラムを実行して前記検証方式の設定を前記第1不揮発メモリに書き込んだ後、前記情報処理装置を再起動することを特徴とする請求項1乃至7のいずれか1項に記載の情報処理装置。
  9. 前記第1不揮発メモリは、OTP-ROM(One Time Programable ROM)であることを特徴とする請求項1乃至8のいずれか1項に記載の情報処理装置。
  10. 前記第2不揮発メモリは、フラッシュメモリであることを特徴とする請求項1乃至9のいずれか1項に記載の情報処理装置。
  11. 第1CPUと、第2CPUと、前記第1CPUが実行するブートプログラムを記憶する第1不揮発メモリと、第1ブートプログラム、及びプログラムを検証する第2ブートプログラムを記憶する第2の不揮発メモリとを有する情報処理装置の起動方法であって、
    起動時に、前記第1不揮発メモリに記憶されている前記ブートプログラムを前記第1CPUにより実行し、
    前記第1CPUは、プログラムの改ざんを検証するための設定として暗号化を示す検証方式が前記第1不揮発メモリに設定されているか否かを判定し、
    前記検証方式が設定されていない場合に、前記第1CPUは前記第1ブートプログラムを実行して前記検証方式の設定を前記第1不揮発メモリに書き込み、
    前記検証方式の設定を前記第1不揮発メモリに書き込むと前記情報処理装置を再起動し、
    前記検証方式が設定されていると前記第1CPUは、当該設定に従って前記第2ブートプログラムを実行し、
    前記第2ブートプログラムによる処理が正常に終了すると、前記第2CPUが前記情報処理装置を起動することを特徴とする起動方法。
  12. 前記検証方式が設定されていない場合、前記第1CPUはハッシュ値による前記第1ブートプログラムの検証を行い、当該検証に成功すると前記第1ブートプログラムを実行することを特徴とする請求項11に記載の起動方法。
  13. 前記検証方式が設定されている場合、前記第1CPUは、前記設定に含まれる公開鍵を使用して前記第2ブートプログラムの検証を行い、当該検証に成功すると前記第2ブートプログラムを実行することを特徴とする請求項11に記載の起動方法。
JP2020012890A 2020-01-29 2020-01-29 情報処理装置とその起動方法 Active JP7393226B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2020012890A JP7393226B2 (ja) 2020-01-29 2020-01-29 情報処理装置とその起動方法
CN202110100933.8A CN113190879A (zh) 2020-01-29 2021-01-26 信息处理装置及其启动方法
US17/159,349 US11914714B2 (en) 2020-01-29 2021-01-27 Information processing apparatus and start-up method of the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020012890A JP7393226B2 (ja) 2020-01-29 2020-01-29 情報処理装置とその起動方法

Publications (3)

Publication Number Publication Date
JP2021117928A JP2021117928A (ja) 2021-08-10
JP2021117928A5 JP2021117928A5 (ja) 2023-02-07
JP7393226B2 true JP7393226B2 (ja) 2023-12-06

Family

ID=76970211

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020012890A Active JP7393226B2 (ja) 2020-01-29 2020-01-29 情報処理装置とその起動方法

Country Status (3)

Country Link
US (1) US11914714B2 (ja)
JP (1) JP7393226B2 (ja)
CN (1) CN113190879A (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023002635A1 (ja) * 2021-07-21 2023-01-26 三菱電機株式会社 情報処理装置、情報処理方法、及び、情報処理プログラム
US11775694B2 (en) * 2022-01-05 2023-10-03 International Business Machines Corporation Validating and securing non-volatile memory
CN115599407B (zh) * 2022-11-29 2023-08-15 深圳宏芯宇电子股份有限公司 固件烧录方法、固件烧录系统及存储器存储装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009009372A (ja) 2007-06-28 2009-01-15 Panasonic Corp 情報端末、クライアントサーバシステムおよびプログラム
WO2009013825A1 (ja) 2007-07-25 2009-01-29 Panasonic Corporation 情報処理装置、及び改竄検証方法
JP2014021953A (ja) 2012-07-24 2014-02-03 Ricoh Co Ltd 情報処理装置、画像処理装置、起動制御方法及び起動制御プログラム
JP2015036847A (ja) 2013-08-12 2015-02-23 株式会社東芝 半導体装置
JP2016511848A (ja) 2012-12-06 2016-04-21 サムスン エレクトロニクス カンパニー リミテッド セキュアブート(secureboot)を行うチップシステムと、それを用いる画像形成装置及びそのセキュアブート方法
US20180089435A1 (en) 2016-09-23 2018-03-29 Lntel Corporation Methods And Apparatus To Use A Security Coprocessor For Firmware Protection
JP2019133220A (ja) 2018-01-29 2019-08-08 Necプラットフォームズ株式会社 完全性検証装置、完全性検証システム、完全性検証方法、及び、完全性検証プログラム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8572399B2 (en) * 2006-10-06 2013-10-29 Broadcom Corporation Method and system for two-stage security code reprogramming
JP6942601B2 (ja) * 2017-10-18 2021-09-29 キヤノン株式会社 情報処理装置、その制御方法、及びプログラム
JP7286381B2 (ja) * 2019-04-01 2023-06-05 キヤノン株式会社 情報処理装置とその制御方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009009372A (ja) 2007-06-28 2009-01-15 Panasonic Corp 情報端末、クライアントサーバシステムおよびプログラム
WO2009013825A1 (ja) 2007-07-25 2009-01-29 Panasonic Corporation 情報処理装置、及び改竄検証方法
JP2014021953A (ja) 2012-07-24 2014-02-03 Ricoh Co Ltd 情報処理装置、画像処理装置、起動制御方法及び起動制御プログラム
JP2016511848A (ja) 2012-12-06 2016-04-21 サムスン エレクトロニクス カンパニー リミテッド セキュアブート(secureboot)を行うチップシステムと、それを用いる画像形成装置及びそのセキュアブート方法
JP2015036847A (ja) 2013-08-12 2015-02-23 株式会社東芝 半導体装置
US20180089435A1 (en) 2016-09-23 2018-03-29 Lntel Corporation Methods And Apparatus To Use A Security Coprocessor For Firmware Protection
JP2019133220A (ja) 2018-01-29 2019-08-08 Necプラットフォームズ株式会社 完全性検証装置、完全性検証システム、完全性検証方法、及び、完全性検証プログラム

Also Published As

Publication number Publication date
JP2021117928A (ja) 2021-08-10
US11914714B2 (en) 2024-02-27
CN113190879A (zh) 2021-07-30
US20210232690A1 (en) 2021-07-29

Similar Documents

Publication Publication Date Title
US11520894B2 (en) Verifying controller code
US9880908B2 (en) Recovering from compromised system boot code
KR101209252B1 (ko) 전자기기의 부팅 방법 및 부팅 인증 방법
US9785596B2 (en) Redundant system boot code in a secondary non-volatile memory
JP7393226B2 (ja) 情報処理装置とその起動方法
US9292300B2 (en) Electronic device and secure boot method
JP5711160B2 (ja) パスワードを保護する方法およびコンピュータ
TWI390410B (zh) 不須執行電力開啟自我測試之操作系統傳送及啟動
JP5689429B2 (ja) 認証装置、および、認証方法
JP6494373B2 (ja) 情報処理装置、情報処理装置の制御方法、およびコンピュータプログラム
WO2022156513A1 (zh) 一种服务器操作系统引导方法、装置、设备及介质
JP2016099837A (ja) 情報処理装置、サーバ装置、情報処理システム、制御方法及びコンピュータプログラム
KR102547034B1 (ko) 정보 처리 장치 및 그 제어 방법
JP7263101B2 (ja) 情報処理装置、データ検証方法
JP2020091698A (ja) 情報処理装置及びその制御方法
JP5961059B2 (ja) 情報処理装置およびその起動方法
JP7210238B2 (ja) 情報処理装置、情報処理装置の制御方法、及び、プログラム
JP2020154601A (ja) 情報処理装置とその制御方法、及びプログラム
US11971993B2 (en) Firmware-based secure tenancy transfer
US20220382873A1 (en) Firmware-based secure tenancy transfer
JP2020107003A (ja) 情報処理装置と当該情報処理装置の起動方法、並びにプログラム
JP2020135645A (ja) 情報処理装置、その制御方法およびプログラム

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20210103

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210113

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230127

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230127

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230907

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: 20231027

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231124

R151 Written notification of patent or utility model registration

Ref document number: 7393226

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151