(57)【要約】      （修正有）【課題】セキュリティ性を高めることができる電子デバイス、方法およびプログラムを提供する。【解決手段】電子デバイスにおいて制御部は、書き換え不能な記憶媒体の異常を検知する処理の実行を要求する複数のカーネル（３０ａ、３０ｂ）と、各カーネルからの要求を受けて、記憶媒体が保持する情報と各記憶領域に記憶された記憶媒体の異常を検知するための検知用データ（３４ａ、３４ｂ）とを用いて該記憶媒体の異常を検知する処理を実行する複数の検知部（３１a、３１b）とを含む。【選択図】図３
2020095396.tif 000002
【特許請求の範囲】
【請求項１】
書き換え不能な記憶媒体の異常を検知する電子デバイスであって、
前記記憶媒体の異常を検知する処理の実行を要求する複数の要求手段と、
前記各要求手段からの要求を受けて、前記記憶媒体が保持する情報と、各記憶領域に記憶された該記憶媒体の異常を検知するための検知用情報とを用いて該記憶媒体の異常を検知する処理を実行する複数の検知手段と
を含む、電子デバイス。
【請求項２】
前記各記憶領域を、アクセスを制限する保護領域として構築する複数の構築手段を含み、
前記各要求手段は、前記各構築手段を介して前記各検知手段に前記処理の実行を要求する、請求項１に記載の電子デバイス。
【請求項３】
前記複数の検知手段の少なくとも１つが異常を検知した場合、異常を検知したことを通知する通知手段と、
前記通知手段からの通知を受けて、異常を解消するための処理を実行する実行手段と
を含む、請求項１または２に記載の電子デバイス。
【請求項４】
前記通知手段は、前記異常を検知したことを、該通知手段と前記実行手段とが共有する共有記憶領域に書き込み、
前記実行手段は、前記共有記憶領域を参照し、書き込みがあった場合に、前記異常を解消するための処理を実行する、請求項３に記載の電子デバイス。
【請求項５】
前記実行手段は、前記異常を解消するための処理として、前記記憶媒体に代えてアクセスする仮想の記憶媒体を生成し、生成した前記仮想の記憶媒体に、前記記憶媒体が正常時に保持する正常時情報の少なくとも一部を書き込み、前記記憶媒体を仮想化する処理を実行する、請求項４に記載の電子デバイス。
【請求項６】
前記実行手段は、前記記憶媒体にアクセスするために該記憶媒体の物理アドレス領域に割り当てられた仮想アドレス領域を、前記仮想の記憶媒体の物理アドレス領域に割り当てる、請求項５に記載の電子デバイス。
【請求項７】
前記検知用情報は、前記記憶媒体に異常が発生していないときに該記憶媒体が保持する正常時情報から変換された値であり、
前記各検知手段は、前記記憶媒体が保持する情報に対応する値に変換し、変換した値と前記検知用情報とを比較し、一致しない場合に異常があることを検知する、請求項１〜６のいずれか１項に記載の電子デバイス。
【請求項８】
前記検知用情報は、前記記憶媒体に異常が発生していないときに該記憶媒体が保持する正常時情報としての複数のビットからなるビットデータを複数のブロックに区分し、区分した複数のブロックの総和を計算した値であり、
前記各検知手段は、前記記憶媒体が保持する情報としての複数のビットからなるビットデータを複数のブロックに区分し、区分した複数のブロックの総和を計算し、計算した値と前記検知用情報とを比較し、一致しない場合に異常があることを検知する、請求項１〜６のいずれか１項に記載の電子デバイス。
【請求項９】
書き換え不能な記憶媒体の異常を検知する方法であって、
第１の要求手段が、前記記憶媒体の異常を検知する処理の実行を要求するステップと、
第１の検知手段が、前記第１の要求手段からの要求を受けて、前記記憶媒体が保持する情報と第１の記憶領域に記憶された該記憶媒体の異常を検知するための検知用情報とを用いて該記憶媒体の異常を検知する処理を実行するステップと、
第２の要求手段が、前記記憶媒体の異常を検知する処理の実行を要求するステップと、
第２の検知手段が、前記第２の要求手段からの要求を受けて、前記記憶媒体が保持する情報と第２の記憶領域に記憶された該記憶媒体の異常を検知するための検知用情報とを用いて該記憶媒体の異常を検知する処理を実行するステップと
を含む、方法。
【請求項１０】
請求項９に記載の方法に含まれる各ステップをコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、書き換え不能な記憶媒体の異常を検知する電子デバイス、方法および異常を検知する処理をコンピュータに実行させるためのプログラムに関する。
【背景技術】
【０００２】
電子デバイスには、電子ヒューズを搭載しているものがある。電子ヒューズは、不揮発なビット情報を保持でき、一度０から１にビットを変更すると、二度と変更できないという特徴を有する。このため、電子ヒューズは、製品の情報や性能等、書き換えられたくない情報を保持する際に使用されている。
【０００３】
電子デバイスは、電子ヒューズが保持する情報を用いて動作する。その際、電子デバイスは、電子ヒューズに故障や改竄等の異常があるか否かを、検知用情報を用いて確認する。検知用情報は、RAM(Random Access Memory)に読み出されて使用されるが、RAMにはアクセス制限がないため、検知用情報自体が改竄されるおそれがある。
【０００４】
そこで、検知用情報の改竄ではないが、プログラムの改竄を検出する目的で、セキュアCPU(Central Processing Unit)とノンセキュアCPUとを設け、セキュアCPUが改竄検証プログラムを参照してプログラムの改竄の有無を検証し、改竄がなければ、検証したプログラムを展開してノンセキュアプログラムを実行する技術が提案されている（例えば、特許文献１参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、CPUの脆弱性からアクセス制限されているメモリへのアクセスが可能になることが問題になっており、上記従来の技術のようにセキュアCPUを利用したとしても、検知用情報の改竄を検知することは難しく、セキュリティ性が低いという問題があった。
【０００６】
本発明は、上記に鑑みてなされたものであって、セキュリティ性を高めることができる電子デバイス、方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決するために、発明の一実施形態では、書き換え不能な記憶媒体の異常を検知する電子デバイスであって、
記憶媒体の異常を検知する処理の実行を要求する複数の要求手段と、
各要求手段からの要求を受けて、記憶媒体が保持する情報と、各記憶領域に記憶された記憶媒体の異常を検知するための検知用情報とを用いて該記憶媒体の異常を検知する処理を実行する複数の検知手段と
を含む、電子デバイスが提供される。
【発明の効果】
【０００８】
本発明によれば、電子デバイスのセキュリティ性を高めることができる。
【図面の簡単な説明】
【０００９】
【図１】電子デバイスとして画像形成装置の構成例を示した図。
【図２】画像形成装置が備える制御部のハードウェア構成の一例を示した図。
【図３】画像形成装置が備える制御部のソフトウェア構成の一例を示した図。
【図４】電子ヒューズの異常検知について説明する図。
【図５】電子ヒューズの異常検知の流れを示したシーケンス図。
【図６】異常検知の第１の方法について説明する図。
【図７】異常検知の第２の方法について説明する図。
【図８】異常があった場合の動作を説明する図。
【図９】異常があった場合の対応例を説明する図。
【発明を実施するための形態】
【００１０】
図１は、電子デバイスとしての画像形成装置の構成例を示した図である。ここでは、電子デバイスを画像形成装置として説明するが、電子デバイスは、画像形成装置に限定されるものではなく、スマートフォン、タブレット端末、PC等の情報処理装置、デジタルカメラ等の撮像装置、プロジェクタ等の投影装置、電子黒板等であってもよい。画像形成装置は、プリンタやコピー機等であってもよいが、印刷機能、コピー機能、ファックス機能、スキャナ機能等の複数の機能を有するMFP(Multi-Function Peripheral)として説明する。
【００１１】
画像形成装置は、スキャナ１０と、IPU（Image Processing Unit、画像処理ユニット）１１と、プロッタ１２と、制御部１３と、通信I/F１４とを含んで構成される。
【００１２】
スキャナ１０は、光源と撮像素子とを含み、光源からの光を原稿に当て、透過または反射した光を撮像素子で受光し、電気信号に変換することで、原稿画像を読み取り、画像データを出力する。IPU１１は、スキャナ１０から出力された画像データの画像に対し、濃度ムラを取り除くシェーディング補正等の画像処理を行う。プロッタ１２は、IPU１１が画像処理した後の画像データを印刷し、印刷物を生成する。プロッタ１２は、電子写真方式であってもよいし、インクジェット方式であってもよい。
【００１３】
制御部１３は、画像形成装置全体の制御を行い、スキャナ１０、IPU１１、プロッタ１２等の各ユニット間の画像データのやりとりを行い、通信I/F１４を介してネットワークに接続し、ネットワークを介した通信を行う。
【００１４】
図２を参照して、制御部１３のハードウェア構成について説明する。制御部１３は、一般的なマルチコアのシステム構成で、複数のCPU２０と、ROM(Read Only Memory)２１と、RAM２２と、電子ヒューズ２３とを含む。これらは、バス２４に接続され、バス２４を介して互いに情報等のやりとりを行う。
【００１５】
複数のCPU２０は、組み込みで使用される傾向のあるAMP(Asymmetric Multiprocessing)で、それぞれに特定のOS（Operating System）とタスクを割り当て、それらを実行する。OSは、各種の機能を提供するアプリケーションプログラムとハードウェアとの中間に位置し、アプリケーションプログラムに対して標準的なインタフェースを提供し、ハードウェアの各リソースの管理を行う。タスクは、プログラムを処理する単位（プロセス）のことである。
【００１６】
ROM２１は、装置を起動するプログラムであるブートローダやハードウェアを制御するファームウェア等を格納する。また、ROM２１は、電子ヒューズ２３の異常を検知するためにCPU２０により実行される検知プログラムや、検知プログラムにより使用される検知用情報（検知用データ）も格納する。以下、特に断わりがない限り、電子ヒューズ２３の異常を、電子ヒューズ２３が保持する情報の改竄として説明する。
【００１７】
RAM２２は、複数のCPU２０がプログラムを実行する際、各CPU２０に対して作業領域を提供する。RAM２２には、セキュアな環境でしかアクセスできないメモリ空間（セキュアRAM）が構築される。セキュアな環境とは、例えばアクセス制限が設けられた環境等である。
【００１８】
電子ヒューズ２３は、不揮発なビット情報を保持でき、一度０から１にビットを変更すると、二度と変更できないという特徴を有する書き換え不能な記憶媒体で、画像形成装置の動作に必要な情報、例えば機能や性能に関する情報（機能・性能情報）を保持する。
【００１９】
次に、図３を参照して、制御部１３のソフトウェア構成について説明する。制御部１３で使用されるソフトウェアは、複数のCPU２０により実行されるソフトウェアであり、上記のブートローダ、ファームウェア、OS、アプリケーションプログラム等がある。
【００２０】
図３では、複数のCPU２０としてCPU0、CPU1の２つが示され、CPU0、CPU1のそれぞれが実行するソフトウェアとして、OSの中核となる動作を実行させるカーネル３０ａ、３０ｂと、モジュールである検知部３１ａ、３１ｂと、同じくモジュールであるセキュア機能部３２ａ、３２ｂとを例示している。
【００２１】
また、図３には、セキュアRAM２５と、各CPU２０が備える記憶回路であるレジスタ２６とが示され、セキュアRAM２５は、電子ヒューズ２３が保持する情報（電子ヒューズデータ）３３の改竄を検知するための検知用情報（検知用データ）３４ａ、３４ｂを保持し、レジスタ２６は、CPU２０が取得した電子ヒューズデータ３３を保持する。
【００２２】
CPU0とCPU1の各カーネル３０ａ、３０ｂは、電源スイッチが押下されることにより起動するブートローダにより起動される。カーネル３０ａ、３０ｂは、画像形成装置を動作させるが、その動作に必要な情報、すなわち電子ヒューズデータ３３を電子ヒューズ２３から取得する。その際、カーネル３０ａ、３０ｂは、電子ヒューズデータ３３に改竄があるかどうかを確認するため、改竄検知を要求し、その検知結果で改竄があると確認された場合、安全に装置を動作させるための対応を実施する。カーネル３０ａ、３０ｂは、CPU0、CPU1により実行されて要求手段として機能し、改竄検知を要求する。
【００２３】
カーネル３０ａは、実行手段としても機能し、上記の対応を実施する。カーネル３０ｂは、通知手段として機能し、改竄があることを、カーネル３０ａに通知する。
【００２４】
セキュア機能部３２ａ、３２ｂは、CPU0、CPU1により実行されて構築手段として機能し、メモリ領域の一部を、アクセスを制限する保護領域として構築する。セキュア機能部３２ａ、３２ｂにより構築された保護領域が、セキュアRAM２５である。また、セキュア機能部３２ａは、カーネル３０ａからの改竄検知要求を受け、セキュアな環境でのみ動作する検知部３１ａに対して改竄検知要求を転送する。セキュア機能部３２ｂも同様に、カーネル３０ｂからの改竄検知要求を受け、セキュアな環境でのみ動作する検知部３１ｂに対して改竄検知要求を転送する。
【００２５】
検知部３１ａ、３１ｂは、CPU0、CPU1により実行されて検知手段として機能する。検知部３１ａは、CPU0に対応した、セキュアRAM２５に保持された検知用データ３４ａと、レジスタ２６に保持された電子ヒューズデータ３３とを取得し、それらを比較し、比較結果に基づき、改竄があるかどうかを判断する。検知部３１ａは、判断した結果を検知結果として、セキュア機能部３２ａを介してカーネル３０ａに通知する。
【００２６】
検知部３１ｂも同様に、CPU1に対応した、セキュアRAM２５に保持された検知用データ３４ｂと、レジスタ２６に格納された電子ヒューズデータ３３とを取得し、それらを比較し、比較結果に基づき、改竄があるかどうかを判断する。検知部３１ｂは、判断した結果を検知結果として、セキュア機能部３２ｂを介してカーネル３０ｂに通知する。
【００２７】
ここで、図４を参照して、電子ヒューズデータ３３の改竄検知について説明する。図４（ａ）は、セキュアRAM２５を含まない場合の通常の改竄検知について説明する図である。通常の改竄検知では、CPUが１つであり、改竄検知を実行するためにCPUによりROM２１からRAM２２へ検知プログラム３５および検知用データ３４が展開される。RAM２２は、アクセス制限がないため、展開された検知用データ３４にアクセスされ、検知用データ３４が改竄される可能性がある。電子ヒューズデータ３３とともに検知用データ３４が改竄されると、改竄検知を突破され、画像形成装置が誤作動等を引き起こすおそれがある。
【００２８】
図４（ｂ）は、セキュアRAM２５を用いた改竄検知について説明する図である。この場合は、CPUがROM２１からアクセス制限のないRAM２２ではなく、アクセス制限があるセキュアRAM２５に展開されるので、アクセス権限がない限り、検知用データ３４にはアクセスすることはできない。このため、検知用データ３４の改竄は困難である。
【００２９】
ところが、CPUにはSpectreやMeltdownのようなハードウェアレベルの脆弱性があり、この脆弱性により、アクセス制限されている領域へのアクセスが可能となることが報告されている。すると、図４（ｂ）に示したセキュアRAM２５を用いた改竄検知でも、検知用データ３４が改竄される可能性がある。
【００３０】
図４（ｃ）は、セキュアRAM２５を用いた複数のCPUによる改竄検知について説明する図である。各CPUは、それぞれが改竄検知を実行する。ここでは、２つのCPU0、CPU1を用いた例を示す。CPU0は、ROM２１から自身に対応した検知プログラム３５ａおよび検知用データ３４ａをセキュアRAM２５ａに展開し、CPU1も、ROM２１から自身に対応した検知プログラム３５ｂおよび検知用データ３４ｂをセキュアRAM２５ｂに展開する。
【００３１】
仮にCPU0が展開した検知用データ３４ａが改竄されたとしても、CPU1が展開した検知用データ３４ｂは改竄されていないので、改竄検知を実行することができる。これにより、改竄検知を突破されるリスクを低減することができる。検知用データ３４ｂも改竄される可能性はあるが、これに対しては、CPUの数を増やし、より多くのCPUにより改竄検知を実行することで、そのリスクを低減することができる。このようなリスクの低減により、画像形成装置のセキュリティ性を高めることができる。
【００３２】
図４（ｃ）を参照して説明したセキュアRAM２５ａ、２５ｂを用いた複数のCPUによる改竄検知の詳細な処理について、図５を参照して説明する。ここでも、２つのCPU0およびCPU1を用い、CPU0に対してはセキュアRAM（CPU0用）２５ａ、CPU1に対してはセキュアRAM(CPU1用)２５ｂがセキュア領域として割り当てられるものとして説明する。
【００３３】
CPU0により実行されるソフトウェアは、カーネル３０ａ、検知部３１ａ、セキュア機能部３２ａであり、CPU1により実行されるソフトウェアは、カーネル３０ｂ、検知部３１ｂ、セキュア機能部３２ｂである。検知部３１ａは、対応するセキュアRAM２５として、セキュアRAM２５ａにアクセスでき、検知部３１ｂは、対応するセキュアRAM２５として、セキュアRAM２５ｂにアクセスできる。
【００３４】
図５に示す例では、先にCPU0が実行し、CPU0が終了した後に、CPU1が実行するものとして説明する。なお、これは一例であるので、CPUのそれぞれが実行を開始する改竄検知のタイミングは、いかなるタイミングであってもよい。
【００３５】
カーネル３０ａは、例えばブートローダによるOSの起動を受けて動作を開始し、セキュア機能部３２ａに対し、改竄検知を要求する（図５のS1）。セキュア機能部３２ａは、その要求を受けて、検知部３１ａに対し、改竄検知要求を転送する（図５のS2）。
【００３６】
検知部３１ａは、レジスタ２６にアクセスし、レジスタ２６に保持されたビット値としての電子ヒューズデータ３３を取得する（図５のS3）。そして、検知部３１ａは、取得した電子ヒューズデータ３３に対し、ハッシュ関数を適用してハッシュ値を生成する（図５のS4）。ハッシュ関数は、任意のデータから乱数を生成する関数で、不可逆的な一方向の関数である。したがって、同じデータからは常に同じ値が算出されるが、データの内容が少しでも異なると、算出される値が異なり、また、算出された値からは元のデータを導き出すことはできない。
【００３７】
検知部３１ａは、生成したハッシュ値を、CPU0用のセキュアRAM２５ａに格納する（図５のS5）。検知部３１ａは、セキュアRAM２５ａに格納されたハッシュ値を取得し（図５のS6）、同じくセキュアRAM２５ａに格納された検知用データ３４ａを取得する（図５のS7）。検知用データ３４ａは、画像形成装置の製造時に電子ヒューズ２３に書き込まれた電子ヒューズデータ３３に対し、ハッシュ関数を適用して生成されたハッシュ値である。ここでは、検知用データ３４ａを、画像形成装置の製造時のハッシュ値として説明したが、改竄が可能になる前の段階であればこれに限られるものではなく、画像形成装置の出荷時や設置時等であってもよい。
【００３８】
検知部３１ａは、取得したハッシュ値と、取得した検知用データ３４ａとしてのハッシュ値とを比較し、一致するか否かにより改竄があるか否かを判断する（図５のS8）。検知部３１ａは、判断した結果を検知結果としてセキュア機能部３２ａに返す（図５のS9）。セキュア機能部３２ａは、検知結果をカーネル３０ａに返す（図５のS10）。
【００３９】
カーネル３０ａは、検知結果が、改竄がある旨を示す場合、対応を実施する。具体的な対応については、後述する。
【００４０】
CPU0により改竄検知が終了した後、カーネル３０ｂが、セキュア機能部３２ｂに対し、改竄検知を要求する（図５のS11）。セキュア機能部３２ｂは、その要求を受けて、検知部３１ｂに対し、改竄検知要求を転送する（図５のS12）。
【００４１】
検知部３１ｂは、レジスタ２６にアクセスし、レジスタ２６に格納された電子ヒューズデータ３３を取得する（図５のS13）。そして、検知部３１ｂは、取得した電子ヒューズデータ３３に対し、ハッシュ関数を適用してハッシュ値を生成する（図５のS14）。
【００４２】
検知部３１ｂは、生成したハッシュ値を、CPU1用のセキュアRAM２５ｂに格納する（図５のS15）。検知部３１ｂは、セキュアRAM２５ｂに格納されたハッシュ値を取得し（図５のS16）、同じくセキュアRAM２５ｂに格納された検知用データ３４ｂを取得する（図５のS17）。検知用データ３４ｂは、画像形成装置の製造時等に電子ヒューズ２３に書き込まれた電子ヒューズデータ３３に対し、ハッシュ関数を適用して生成されたハッシュ値である。
【００４３】
検知部３１ｂは、取得したハッシュ値と、取得した検知用データ３４ｂとしてのハッシュ値とを比較し、一致するか否かにより改竄があるか否かを判断する（図５のS18）。検知部３１ｂは、判断した結果を検知結果としてセキュア機能部３２ｂに返す（図５のS19）。セキュア機能部３２ｂは、検知結果をカーネル３０ｂに返す（図５のS20）。
【００４４】
カーネル３０ｂは、検知結果が、改竄があることを示す場合、カーネル３０ａに通知する（図５のS21）。カーネル３０ａは、その通知を受けて、所定の対応を実施する。
【００４５】
図６を参照して、改竄検知の第１の方法として、図５にも例示したハッシュ関数を用いた方法を詳細に説明する。電子ヒューズ２３に書き込まれるビット値は、例えばCPU動作周波数を２ビットで示した値で、ビット値「01」は４００MHz、「10」は８００MHz、「11」は１２００MHzをそれぞれ表す。
【００４６】
CPU動作周波数が８００MHzであった場合、ビット値は「10」で、これにハッシュ関数を適用し、「1d39」という値が得られた場合、「1d39」という値が検知用データとしてセキュアRAM２５に格納される。
【００４７】
ビット値に改竄がなければ、ビット値は「10」のままであるから、ハッシュ関数を適用して生成されたハッシュ値は「1d39」となり、セキュアRAM２５に格納されたハッシュ値と一致する。
【００４８】
例えば「10」から「11」へ性能を上げるように改竄した場合、ハッシュ関数を適用して生成されるハッシュ値は「1d39」とは異なる「3f52」という特定の値になる。このように「1d39」とは異なる特定の値の場合、改竄があったと判断することができる。一方、「1d39」という値でもなく、「1d39」とは異なる特定の値でもない場合、ビット値が改竄されたものではないため、故障と判断することができる。
【００４９】
図７を参照して、改竄検知の第２の方法として、チェックサムを用いた方法を詳細に説明する。チェックサムは、データをブロックに区切り、各ブロックの総和を求め、その総和を、予め求めておいた総和と比較し、一致するかどうかで、故障や改竄の有無を検知する方法である。
【００５０】
具体的に説明すると、電子ヒューズ２３は、連続したビットデータを保持するため、連続したビットデータを一定の間隔で区切る。図７に示す例では、「1001001001010110」という０と１からなるビットデータを８ビットずつの「10010010」、「01010110」という２つのデータに分ける。
【００５１】
そして、「10010010」と「01010110」の総和を求める。この場合の総和は、「11101000」となる。この「11101000」が検知用データとしてセキュアRAM２５に格納される。
【００５２】
連続したビットデータに改竄がなければ、８ビットずつに分けた各データにも、また、その総和にも変化はなく、同じ「11101000」という値が得られ、セキュアRAM２５に格納された総和と一致する。
【００５３】
これに対し、故障・改竄により、例えば「1001001000010110」に変更されると、８ビットずつの２つのデータに分けた場合に「10010010」、「00010110」となり、総和は上記の「11101000」とは異なる「10101000」となる。このように「11101000」という値とは異なる場合、故障・改竄があったと判断することができる。なお、このチェックサムを用いる方法は、特定のビット値を用いて計算するものではないので、故障か、改竄かを判別することはできない。
【００５４】
なお、これらの方法は一例であり、電子ヒューズ２３が保持している情報を使用して該電子ヒューズ２３の故障や改竄を検知することができれば、これまでに知られたいかなる方法でも使用することが可能である。
【００５５】
次に、図８を参照し、改竄があった場合の動作について説明する。CPU1は、改竄を検知した場合に、CPU0に対して改竄検知を通知するタスクを保持する。CPU0は、その通知を受けた場合または自身が改竄を検知した場合に、所定の対応を実施するタスクを保持する。
【００５６】
図８（ａ）は、CPU0自身が改竄を検知する場合の動作について説明する図である。最初に、検知部３１ａが改竄を検知する。検知部３１ａは、セキュア機能部３２ａを介してカーネル３０ａに改竄検知を通知する。次に、カーネル３０ａが、その通知を受けて、対応を実施する。
【００５７】
図８（ｂ）は、CPU1が改竄を検知する場合の動作について説明する図である。最初に、検知部３１ｂが改竄を検知する。検知部３１ｂは、セキュア機能部３２ｂを介してカーネル３０ｂに改竄検知を通知する。次に、カーネル３０ｂは、RAM２２上のCPU0とCPU１が共有する共有記憶領域（共有メモリ）２７に、改竄を検知したことを書き込む。
【００５８】
カーネル３０ａは、例えば一定の時間間隔で共有メモリ２７を参照し、改竄を検知したことが書き込まれている場合、対応を実施する。このようにして、共有メモリ２７を介してカーネル３０ｂから、対応を実施するカーネル３０ａへ改竄検知を通知することができる。
【００５９】
図９を参照して、CPU0が実施する対応について説明する。電子ヒューズ２３は、改竄により変更されたビットを、変更前の正常時のビットに戻すことはできない。そこで、一例として、電子ヒューズ２３を仮想化し、仮想化した電子ヒューズに変更前の正常時のビット値を書き込み、仮想化した電子ヒューズに書き込んだビット値を読み取らせるようにすれば、改竄前の正常な状態に戻すことができる。
【００６０】
電子ヒューズ２３の仮想化は、RAM２２、すなわちメモリ上に一定の記憶領域を確保し、確保した記憶領域を仮想電子ヒューズ３６とし、仮想電子ヒューズ３６をシステム４０に参照させるように構成することで実現される。
【００６１】
メモリには、ROM２１、電子ヒューズ２３、レジスタ２６等がマップされる。具体的には、メモリは、カーネル等のシステム４０が参照する仮想アドレス空間と、実際のROM２１、電子ヒューズ２３、レジスタ２６等のアドレスを格納する物理アドレス空間とを有し、物理アドレス空間内にそれぞれの物理アドレス領域があり、各物理アドレス領域に対して仮想アドレス空間内の各仮想アドレス領域が割り当てられる。
【００６２】
システム４０が電子ヒューズ２３にアクセスする場合、電子ヒューズ２３の仮想アドレスを参照する。メモリは、メモリ管理ユニット(MMU)により管理され、MMUは、参照された仮想アドレスを物理アドレスへアドレス変換する。このアドレス変換により、システム４０は、変換された物理アドレスを参照し、電子ヒューズ２３にアクセスする。
【００６３】
電子ヒューズ２３の仮想化では、システム４０が参照する電子ヒューズ２３の仮想アドレス領域を、仮想電子ヒューズの物理アドレス領域に割り当てることで、システム４０に仮想電子ヒューズを参照させるように構成することができる。
【００６４】
また、電子ヒューズ２３の仮想化では、仮想電子ヒューズに、電子ヒューズ２３に故障や改竄が発生していないときの電子ヒューズデータ３３と同一のデータを書き込む。
【００６５】
例えば、画像形成装置の最初の起動時に、検知部３１が電子ヒューズ２３から取得した機能・性能情報を、仮想電子ヒューズへの書き込み用の情報としてHDD等の記憶装置に記憶しておき、その記憶装置から読み出して仮想電子ヒューズに書き込むことができる。これは一例であるので、製造時等にROM２１やHDD等に記憶させておいてもよい。
【００６６】
なお、仮想電子ヒューズに書き込む情報は、電子ヒューズ２３に書き込んだ全ての情報に限られるものではなく、画像形成装置の動作に必要な最小限の情報を含むものであれば、いかなる情報であってもよい。最小限の情報としては、外部との接続が必要な機能（ファックス機能やネットワーク機能）やその性能の情報を除く、コピー機能、印刷機能、スキャナ機能の情報およびその性能情報等である。これは一例であるので、印刷機能の情報およびその性能情報のみ等としてもよい。
【００６７】
電子ヒューズ２３の仮想化により対応を実施した後の処理について簡単に説明する。例えば、カーネル３０ａは、画像形成装置を動作させるために、電子ヒューズ２３が保持する電子ヒューズデータ３３を参照する。このとき、カーネル３０ａは、電子ヒューズ２３の仮想アドレスを参照することにより、電子ヒューズデータ３３にアクセスする。
【００６８】
仮想電子ヒューズがメモリ上に生成されると、電子ヒューズ２３の仮想アドレスには仮想電子ヒューズの物理アドレスが割り当てられ、MMUによりカーネルが参照する電子ヒューズ２３の仮想アドレスは仮想電子ヒューズの物理アドレスに変換される。このため、カーネル３０ａは、電子ヒューズ２３ではなく、仮想電子ヒューズが保持する情報を参照するようになる。これにより、カーネル３０ａは、仮想電子ヒューズが保持する情報を参照し、画像形成装置を動作させる。
【００６９】
以上のように、複数のCPUを使用して改竄検知を実行することで、１つのCPUが使用する検知用データが改竄されても、他のCPUで電子ヒューズ２３が保持する電子ヒューズデータ３３の改竄を検知することができる。これにより、改竄検知を突破されるリスクを低減し、セキュリティ性を高めることができる。
【００７０】
これまで本発明を、電子デバイス、異常検知方法およびプログラムとして上述した実施の形態をもって説明してきた。しかしながら、本発明は上述した実施の形態に限定されるものではなく、他の実施の形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができるものである。また、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
【００７１】
したがって、本発明では、上記のプログラムが記録された記録媒体や、そのプログラムを、ネットワークを介して提供するサーバ装置等も提供することができるものである。
【符号の説明】
【００７２】
１０…スキャナ
１１…IPU
１２…プロッタ
１３…制御部
１４…通信I/F
２０…CPU
２１…ROM
２２…RAM
２３…電子ヒューズ
２４…バス
２５、２５ａ、２５ｂ…セキュアRAM
２６…レジスタ
２７…共有メモリ
３０ａ、３０ｂ…カーネル
３１ａ、３１ｂ…検知部
３２ａ、３２ｂ…セキュア機能部
３３…電子ヒューズデータ
３４、３４ａ、３４ｂ…検知用データ
３５、３５ａ、３５ｂ…検知プログラム
３６…仮想電子ヒューズ
４０…システム
【先行技術文献】
【特許文献】
【００７３】
【特許文献１】ＷＯ２００９／０１３８２５号
【図１】
2020095396.tif 000003
【図２】
2020095396.tif 000004
【図３】
2020095396.tif 000005
【図４】
2020095396.tif 000006
【図５】
2020095396.tif 000007
【図６】
2020095396.tif 000008
【図７】
2020095396.tif 000009
【図８】
2020095396.tif 000010
【図９】
2020095396.tif 000011