JP2009009372A - 情報端末、クライアントサーバシステムおよびプログラム - Google Patents

情報端末、クライアントサーバシステムおよびプログラム Download PDF

Info

Publication number
JP2009009372A
JP2009009372A JP2007170426A JP2007170426A JP2009009372A JP 2009009372 A JP2009009372 A JP 2009009372A JP 2007170426 A JP2007170426 A JP 2007170426A JP 2007170426 A JP2007170426 A JP 2007170426A JP 2009009372 A JP2009009372 A JP 2009009372A
Authority
JP
Japan
Prior art keywords
verification
program
information terminal
probability
programs
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.)
Ceased
Application number
JP2007170426A
Other languages
English (en)
Inventor
Jun Anzai
潤 安齋
Hiroshi Okuyama
洋 奥山
Hideki Matsushima
秀樹 松島
Tomoyuki Haga
智之 芳賀
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.)
Panasonic Corp
Original Assignee
Panasonic Corp
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 Panasonic Corp filed Critical Panasonic Corp
Priority to JP2007170426A priority Critical patent/JP2009009372A/ja
Publication of JP2009009372A publication Critical patent/JP2009009372A/ja
Ceased legal-status Critical Current

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

【課題】本発明は、各種プログラム毎に改竄の有無を検証すべき優先順位を設定してOSを起動するまでの起動時間の短縮を図りつつも、各種プログラムに生じた改竄を確実に検出することができる情報端末を提供することを目的とする。
【解決手段】本発明の情報端末は、複数のプログラムを記憶する不揮発メモリ13と、検証対象テーブルとして、前記複数のプログラム毎に、当該プログラムが改竄の有無を検証され得る確率についての情報である検証確率を記憶する保護メモリ14と、前記保護メモリ14に記憶した前記検証確率を参照して、前記複数のプログラムのうちの改竄の有無を検証すべきものを特定する検証対象判定手段と、検証すべきものとして特定したプログラムの改竄の有無を検証する改竄検証手段と、検証した結果に応じて前記不揮発メモリに記憶した前記複数のプログラムを起動するプログラム起動手段と、を含むCPU11と、を備えるものである。
【選択図】図1

Description

本発明は、セキュアブート(プログラムの改竄の有無を検証する処理)を実施する情報端末、および当該情報端末にセキュアブートを実行させるためのプログラムに関する。
電源が投入された情報端末は、次のような一連の処理を行ってその情報端末に搭載されたOSを起動する。まず、マザーボード上にあるブートROMに記憶されたIPL(Initial Program Loader)を参照して、ハードディスク内のどの領域(パーティション)からOSを起動するかが選択されると、その選択されたパーティションの先頭セクターであるブートセクタが読み出される。そして、IPL(Initial Program Loader)が上記パーティションに格納された各種プログラムをメモリに読み出し、実行することによって、OSを起動することになる。
近年の情報端末では、IPLが各種プログラムを読み出す際、読み出した各種プログラムが改竄されているか否かを検証し、改竄されていないことが検証されればその各種プログラムを実行することによってOSを起動している。一般に、検証されるべきプログラムの数を増やすほど、改竄されたOSを起動する可能性は低く安全性が高まるものの、OSを起動するまでにかかる時間が増大してしまうため、情報端末がOSを起動する上での安全性と起動時間の間にはトレードオフが生じることが知られている。
これまでには、上記の安全性と起動時間を最適化する手法、つまり、安全性の向上または起動時間の短縮の一方を実現する手法が開示されている。例えば、特許文献1に開示されている手法は、上述したパーティションに格納された各種プログラムには優先度を割り当てておき、その優先度の高い各種プログラムが改竄されていないかを検証するものである。また、特許文献2に開示されている手法は、今回検証すべきプログラムを、前回の検証において改竄されていると検証されたプログラムに絞って行うようにするものである。
特開2006−039888号公報 特開平05−265805号公報
しかしながら、特許文献1、2いずれの手法でも、検証が行われるプログラムが優先順位の高いプログラムに固定されており、それ以外の優先順位の高くないプログラムが改竄された場合には、その検出が困難である。このため、上述したパーティションに格納された各種プログラムに優先順位を設定するだけでは、改竄された全てのプログラムを検出することができない。
本発明は、上記事情に鑑みてなされたもので、各種プログラム毎に改竄の有無を検証すべき優先順位を設定してOSを起動するまでの起動時間の短縮を図りつつも、各種プログラムに生じた改竄を確実に検出することができる情報端末、クライアントサーバシステムおよびプログラムを提供することを目的とする。
本発明の情報端末は、複数のプログラムを記憶するプログラム記憶部と、検証対象テーブルとして、前記複数のプログラム毎に、当該プログラムが改竄の有無を検証され得る確率についての情報である検証確率を記憶する検証確率記憶部と、前記検証確率記憶部に記憶した前記検証確率を参照して、前記複数のプログラムのうちの改竄の有無を検証すべきものを特定する検証対象判定手段と、検証すべきものとして特定したプログラムの改竄の有無を検証する改竄検証手段と、検証した結果に応じて前記プログラム記憶部に記憶した前記複数のプログラムを起動するプログラム起動手段と、を含むCPUと、を備えるものである。
この構成により、安全性を向上させるための優先順位が高くないプログラムであっても、改竄の有無が検証される可能性がある。
また、本発明の情報端末は前記複数のプログラムの改竄の有無を検証するよう指示する検証タイミングを検出するカウンタを備え、前記検証対象判定手段が、前記カウンタが前記検証タイミングを検出した時点で、前記検証確率記憶部に記憶した前記検証確率を参照して、前記複数のプログラムのうちの改竄の有無を検証すべきものを特定する、ものを含む。
この構成により、長期的に考えれば、全てのプログラムについて改竄の有無を確実に検証することができる。
また、本発明の情報端末は、前記カウンタが、前記検証タイミングを検出した回数をカウントし、前記検証確率記憶部が、前記複数のプログラム毎に、数値r/n(r、nは整数)で表される前記検証確率を記憶し、前記検証対象判定手段が、前記カウンタがn回カウントする間に、前記複数のプログラムのうちの数値r/nで表される前記検証確率が割り当てられたものをr回特定する、ものを含む。
この構成により、検証タイミングを検証確率から算出される回数だけカウントすれば、確実にかつ短期間でそのプログラムの改竄の有無を検出することができる。
また、本発明の情報端末は、前記検証確率記憶部が、前記複数のプログラム毎に、当該プログラム改竄の有無を検証すべき検証タイミングを識別する情報である検証種別を記憶し、前記検証対象判定手段が、前記カウンタが前記検証種別により識別される前記検証タイミングを検出した時点で、前記検証確率記憶部に記憶した前記検証確率と前記検証タイミングの種別を参照して、前記複数のプログラムのうちの改竄の有無を検証すべきものを特定する、ものを含む。
この構成により、各プログラムの機能に応じた、改竄の有無を検証するべきトリガを検出したときにだけ、改竄検証がなされるため、改竄検証にかかる時間を効率的に短縮することができる。
また、本発明の情報端末は、前記検証確率記憶部が、数値の異なる前記検証確率毎に、当該プログラム改竄の有無を検証すべき検証タイミングを識別する情報である検証種別を記憶し、前記検証対象判定手段が、前記カウンタが前記検証種別により識別される前記検証タイミングを検出した時点で、前記検証確率記憶部に記憶した前記検証確率と前記検証タイミングの種別を参照して、前記複数のプログラムのうちの改竄の有無を検証すべきものを特定する、ものを含む。
この構成により、共通の検証確率各を有するプログラムの機能に応じた、改竄の有無を検証するべきトリガを検出したときにだけ、改竄検証がなされるため、改竄検証にかかる時間を効率的に短縮することができる。
また、本発明の情報端末は、前記カウンタが、前記検証タイミングを検出した回数を前記検証種別毎にカウントし、前記検証確率記憶部が、前記複数のプログラム毎に、数値r/n(r、nは整数)で表される前記検証確率を記憶し、前記検証対象判定手段が、前記検証種別により識別されるいずれか1つの前記検証タイミングを前記カウンタがn回カウントする間に、前記複数のプログラムのうちの、数値r/nで表される前記検証確率が割り当てられ、かつ、前記検証種別により識別される前記検証タイミングが割り当てられたものを、r回特定する、ものを含む。
この構成により、各プログラムの機能に応じた、改竄の有無を検証するべきトリガを検出したときにだけ、改竄検証がなされるため、かつ、検証タイミングを検証確率から算出される回数だけカウントすれば、確実にかつ短期間でそのプログラムの改竄の有無を検出することができるため、改竄検証にかかる時間を効率的に短縮することができる。
また、本発明の情報端末は、前記検証対象判定手段が、前記検証確率記憶部に記憶されている、数値r/nの前記検証確率が割り当てられた前記複数のプログラムの個数が、n/r以下である場合、前記カウンタがn回の前記検証タイミングを検出したそれぞれの時点で、数値r/nの前記検証確率が割り当てられた前記複数のプログラムを一つずつ特定する、ものを含む。
この構成により、検証タイミングを検出した一つの時点で改竄検証が行われるプログラムの数を均等化することができるため、当該時点での改竄の検証にかかる時間もまた均等化することができる、検証タイミングを検出した一つの時点で極端に改竄の検証にかかる時間が長くなることを防ぐことができる。
また、本発明の情報端末は、前記検証対象判定手段が、前記検証確率記憶部に記憶されている、数値r/nの前記検証確率が割り当てられた前記複数のプログラムの個数が、n/rより多い場合、前記カウンタがn回の前記検証タイミングを検出したそれぞれの時点で、数値r/nの前記検証確率が割り当てられた前記複数のプログラムを少なくとも一つ特定する、ものを含む。
この構成により、検証タイミングを検出した一つの時点で改竄検証が行われるプログラムの数を均等化することができるため、当該時点での改竄の検証にかかる時間もまた均等化することができる、検証タイミングを検出した一つの時点で極端に改竄の検証にかかる時間が長くなることを防ぐことができる。
また、本発明の情報端末は、前記検証対象判定手段が、前記検証確率記憶部に記憶されている、数値r/nの前記検証確率が割り当てられた前記複数のプログラムの個数が、n/rより多いm×n(mは整数)個である場合、前記カウンタがn回の前記検証タイミングを検出したそれぞれの時点で、数値r/nの前記検証確率が割り当てられた前記複数のプログラムのうちのr×m個を重複させないように特定する、ものを含む。
この構成により、検証タイミングを検出した一つの時点で改竄検証が行われるプログラムの数を均等化することができるため、当該時点での改竄の検証にかかる時間もまた均等化することができる、検証タイミングを検出した一つの時点で極端に改竄の検証にかかる時間が長くなることを防ぐことができる。
また、本発明の情報端末は、前記検証確率記憶部が、前記複数のプログラム毎に、当該プログラムの改竄の有無を検証する検証手法を記憶し、前記改竄検証手段が、前記検証確率記憶部に記憶した前記検証手法を参照して、検証すべきものとして特定したプログラムの改竄の有無を当該プログラムに割り当てられた前記検証手法により検証する、ものを含む。
この構成により、プログラムの重要性に応じて、そのプログラムの検証方法を設定することができるため、安全性と起動時間を適宜調整することができる。
また、本発明の情報端末は、前記検証確率記憶部が、数値の異なる前記検証確率毎に、当該プログラムの改竄の有無を検証する検証手法を記憶し、前記改竄検証手段が、前記検証確率記憶部に記憶した前記検証手法を参照して、検証すべきものとして特定したプログラムの改竄の有無を当該プログラムに割り当てられた前記検証手法により検証する、ものを含む。
この構成により、特定の検証確率を割り当てられたプログラムに、一律に共通の検証手法を設定することができるため、検証手法の設定を簡便に行うことができる。
また、本発明の情報端末は、前記プログラム起動手段が、前記改竄検証手段がプログラムの改竄有りと判定した場合、前記プログラム記憶部に記憶した前記複数のプログラムのうちの、少なくとも前記改竄検証手段が改竄有りと判定したプログラムのブートを中止する、ものを含む。
また、本発明の情報端末は、前記プログラム起動手段が、前記改竄検証手段がプログラムの改竄有りと判定した場合、前記プログラム記憶部に記憶した前記複数のプログラムのうちの所定のものを起動する、ものを含む。
また、本発明の情報端末は、前記プログラム起動手段が、前記改竄検証手段がプログラムの改竄有りと判定した場合、当該プログラムに割り当てられた前記検証確率に応じて前記プログラム記憶部に記憶した前記複数のプログラムを起動する、ものを含む。
また、本発明の情報端末は、前記プログラム起動手段が、前記改竄検証手段がプログラムの改竄有りと判定した場合、前記プログラム記憶部に記憶した前記複数のプログラムのうちの、エマージェンシーモードを実行するための所定のプログラムを起動する、ものを含む。
この構成により、改竄有りと判定されたプログラムの重要性に応じて、最適なモードによりOSを起動することができる。
また、本発明の情報端末は、前記CPUを前記検証対象判定手段、前記改竄検証手段、前記プログラム起動手段として機能させるための第1のブートプログラムを記憶するROMを備えるものを含む。
この構成により、改竄される恐れのないブートプログラムによって、プログラム記憶部に記憶された各種プログラムの改竄検証を行うことができるため、各種プログラムを起動する上での安全性が向上する。
また、本発明の情報端末は、前記プログラム記憶部が、前記CPUを前記検証対象判定手段、前記改竄検証手段、前記プログラム起動手段として機能させるための前記第2のブートプログラムを記憶し、前記CPUが、前記ROMに記憶した前記第1のブートプログラムを実行して前記プログラム記憶部に記憶した前記第2のブートプログラムの改竄の有無を検証し、改竄無しと検証すれば、前記プログラム記憶部に記憶した前記第2のブートプログラムを実行する、ものを含む。
この構成により、ブートプログラムの書き換えを可能にし、かつ、その書き換え可能なブートプログラムは第1のブートプログラムによって必ず検証されるため安全性も確保することができる。
また、本発明の情報端末は、少なくとも各種プログラムおよび前記検証対象テーブルの一方、または両方を記憶するサーバと通信を行う通信部を備え、前記プログラム記憶部が、前記通信部により受信した前記各種プログラムを記憶し、前記検証確率記憶部が、前記通信部により受信した前記検証対象テーブルを記憶する、ものを含む。
また、本発明の情報端末は、前記通信部が、前記改竄検証手段による検証した結果を前記サーバに送信する、ものを含む。
本発明のクライアントサーバシステムは、本発明の情報端末と、少なくとも一つのプログラムおよび前記検証対象テーブルの一方、または両方を記憶するサーバと、を含んで構成されるものである。
また、本発明のクライアントサーバシステムは、本発明の情報端末と、少なくとも一つのプログラムおよび前記検証対象テーブルの一方、または両方を記憶するサーバと、を含んで構成されるクライアントサーバシステムであって、前記サーバが、前記情報端末から受信した前記検証した結果に応じて、前記少なくとも一つのプログラムを起動するよう指示する制御信号を前記情報端末にに送信し、前記情報端末が、前記制御信号を受信すると、前記プログラム記憶部に記憶した前記複数のプログラムのうちの、前記少なくとも一つのプログラムを起動する、ものである。
この構成により、サーバがリモートコントロールしようとしているプログラムに改竄が無いと情報端末(クライアント)が判定した場合に、サーバがリモートコントロールを実施するため、より安全なリモートコントロールを実現することができる。
本発明のプログラムは、コンピュータを、本発明の情報端末が有する前記検証対象判定手段、前記改竄検証手段、前記プログラム起動手段として機能させるためのものである。
本発明の情報端末、クライアントサーバシステムおよびプログラムによれば、各種プログラム毎に改竄の有無を検証すべき優先順位を設定してOSを起動するまでの起動時間の短縮を図りつつも、各種プログラムに生じた改竄を確実に検出することができる。
以下、本発明の実施の形態の情報端末について説明する。まず、本発明の実施の形態の情報端末におけるハードウェアの構成を、図1に示す本発明の実施の形態の情報端末におけるハードウェアの構成図を参照して説明する。本発明の実施の形態の情報端末は、CPU11、ブートROM12、不揮発メモリ13、保護メモリ14を含んで構成される。ブートROM12は、読み出し専用記憶装置であり、情報端末に電源が投入されたときに最初に実行されるべきプログラムや、プログラムの改竄の有無を検証するための各種改竄検証プログラム(検証対象判定機能、改竄検証機能、結果判定機能、プログラム起動機能。各プログラムの機能は後述する)を記憶している。不揮発メモリ13は、本発明の実施の形態の情報端末による処理を管理するプログラム(図1では、PG1、PG2、PG3。アプリケーションと称されることもある)を記憶している。保護メモリ14は、ハードウェア的に保護されたメモリ、またはデータを暗号化して記憶するメモリであり、後述する検証対象テーブルを記憶している。不揮発メモリ13の一部に暗号化してデータを書き込む構成によって、保護メモリ14を実現してもかまわない。CPU11は、ブートROM12に記憶されたプログラムを読み出し、また、保護メモリ14から読み出した検証対象テーブルを参照して不揮発メモリ13に記憶されたプログラムを読み出し、それらの読み出したプログラムを実行する。以下、本発明の実施の形態の情報端末に電源が投入されてからのCPU11による処理について説明する。
電源が投入された情報端末において、CPU11に電力の供給が開始されると、CPU11はまず、マザーボード上にあるブートROM12に記憶されたIPL(Initial Program Loader)を参照して、不揮発メモリ13および保護メモリ14から最初に読み出して起動すべきプログラムの先頭アドレスを読み出す。CPU11は、読み出した先頭アドレスを基に、不揮発メモリ13に格納された各種プログラム(PG1、PG2、PG3)を読み出し、それらのプログラムの改竄の有無を検証し、改竄されていないことが検証されればそのプログラムを実行することによってOSを起動する。
CPU11は、不揮発メモリ13に格納された各種プログラムの改竄の有無を検証するために各種プログラム(PG1、PG2、PG3)を読み出すにあたって、保護メモリ14に記憶された検証対象テーブルを参照した後、ブートROM12に記憶されたプログラムの改竄の有無を検証するための各種改竄検証プログラムを実行して、次に説明する検証対象判定処理、改竄検証処理、結果判定処理、およびプログラム起動処理を実行する。[1.検証対象判定処理]、[2.改竄検証処理]、[3.結果判定処理]、および[4.プログラム起動処理]の処理の流れを、図2に示す、本発明の実施の形態の情報端末による改竄検証の流れを説明するフローチャートを参照して説明する。
[1.検証対象判定処理]CPU11は、不揮発メモリ13に記憶されたプログラム(PG1、PG2、PG3)毎に「検証フラグ」、「重要度」、「検証確率」、「検証値」、「アドレス」などの情報が記憶された検証対象テーブルを保護メモリ14から読み出し(ステップ201)、その検証対象テーブルの情報を参照して不揮発メモリ13に記憶されたプログラム(PG1、PG2、PG3)のうちの改竄の有無を検証すべきものを特定する(ステップ202)。CPU11は、改竄の有無を検証すべきプログラムを特定するために上記「検証確率」を参照しており、「検証確率」に従った頻度で、その「検証確率」が割り当てられたプログラムを改竄の有無を検証すべきものとして特定する。例えば、検証対象テーブルには、PG1、PG2、PG3にそれぞれ割り当てられた「検証確率」は、「1」、「1/2」、「1/2」である。CPU11は、PG1については、本発明の実施の形態の情報端末に電源が投入されれば必ず(100%)改竄の有無を検証すべきプログラムとしてPG1を特定し、また、PG2、PG3については、本発明の実施の形態の情報端末に電源が投入されれば1/2の確率(50%)で改竄の有無を検証すべきプログラムとしてPG2、PG3を特定する。なお、「検証確率」が「1」以外である場合にCPU11に上記の検証対象判定処理を実行させるプログラムの一例としては、次のようなものが考えられる。すなわち、電源が投入されると乱数を発生させ、その値と「検証確率」に応じて改竄の有無を検証すべきプログラムであるか否かを判定し、改竄の有無を検証すべきと判定されたプログラムは「検証フラグ」を「未」から「済」にして検証対象テーブルを更新し、以降は、「検証フラグ」が「未」であるプログラムのみ、改竄の有無を検証すべきか否かを判定する、ものが考えられる(より詳細な検証対象判定処理は、後述する第1実施形態にて説明する。)。
[2.改竄検証処理]CPU11は、[1.検証対象判定処理]にて改竄の有無を検証すべきものとして特定されたプログラムがあれば(ステップ203、Y)、そのプログラムが格納されている先頭アドレスを示す「アドレス」を参照して不揮発メモリ13から読み出し(ステップ204)、所定のハッシュ関数(例えば、SHA型ハッシュ関数、MD型ハッシュ関数)や所定の暗号化処理(例えば、デジタル署名を利用した暗号化処理、HMACアルゴリズム)を用いて、そのプログラムの固有の値を算出する。CPU11は、算出した値と、検証対象テーブルのうちの「検証値」と、を比較し、一致すれば、不揮発メモリ13から読み出したプログラムには改竄無し、一致しなければ改竄有りと判定する(ステップ205)。なお、検証対象テーブルの「検証値」を算出するために用いられたハッシュ関数または暗号化処理と、[2.改竄検証処理]にて固有の値を算出するために用いるハッシュ関数または暗号化処理と、は同じものである必要がある。
[3.結果判定処理]CPU11は、[2.改竄検証処理]にて改竄有りと判定されたプログラムがあれば(ステップ206、Y)、そのプログラムを起動するか否かを「重要度」を基に判定する(ステップ207)。ここでは、CPU11は、[2.改竄検証処理]にて改竄有りと判定されたプログラムに「6」以下の「重要度」(「重要度」は、ここでは十段階で表現されており、「1」から「10」に値が大きくなるにつれて重要性が高くなるものとする。)が割り当てられていれば、そのプログラムを起動する。CPU11は、[2.改竄検証処理]にて不揮発メモリ13から読み出したPG1に改竄有りと判定した場合、PG1に割り当てられた「重要度」が「6」より大きい数値「10」であることから、ブートを中止する(全起動中止モード)、情報端末を起動させる上で必要不可欠な所定のプログラムのみを起動する(エマージェンシーモード)、あるいは、当該プログラムのみを実行しないまたは当該プログラムに関連するプログラムのみを実行しない(一部起動中止モード)、などの処理を行うよう判定する。このとき、改竄有りと判定されたプログラムの「重要度」の値に応じて、全起動中止モード、エマージェンシーモード、一部起動中止モードしてもよい(例えば、「重要度」が「10」であれば全起動中止モード、「重要度」が「9」であればエマージェンシーモード、「重要度」が「8」「7」であれば一部起動中止モード。)。一方、CPU11は、[2.改竄検証処理]にて不揮発メモリ13から読み出したPG2に改竄有りと判定した場合、PG2に割り当てられた「重要度」が「6」以下の数値「5」であることから、そのプログラムを含む他のプログラムを起動する(強制起動モード)。なお、ここでは、検証対象テーブルのうちの「重要度」の大小を基に、[2.改竄検証処理]にて改竄有りと判定されたプログラムを起動するか否かを判定する構成について説明したが、「重要度」と同様に、値が大きくなるにつれてその値が割り当てられたプログラムの重要性が高くなる「検証確率」の大小を基に、同プログラムを起動するか否かを判定する構成であっても構わない。
[4.プログラム起動処理]CPU11は、不揮発メモリ13に記憶されたプログラム(PG1、PG2、PG3)のうち、[1.検証対象判定処理]にて改竄の有無を検証すべきものとして特定されなかったプログラム、[2.改竄検証処理]にて改竄無しと判定されたプログラム、および「3.結果判定処理」にて起動すべきと判定されたプログラム、それぞれを、各プログラムが格納されている先頭アドレスを示す「アドレス」を参照して不揮発メモリ13から読み出し、実行する(ステップ208、209)。なお、[3.結果判定処理]にて起動すべきでない判定されたプログラムがあった場合には、CPU11は、[3.結果判定処理]で判定された、ブートを中止する、あるいは、当該プログラムのみを実行しないまたは当該プログラムに関連するプログラムを実行しない、などのモードにて処理を行う。
以上、本発明の実施の形態の情報端末は、プログラム毎に割り当てられた検証確率に基づいて当該プログラムの改竄の有無を検証するか否かを判定する構成によって、高い検証確率が割り当てられたプログラムは検証が行われる頻度は高く、一方で、低い検証確率が割り当てられた重要性の低いプログラムは長期的にみればいずれ検証が行われ、全てのプログラムに生じる改竄を必ず発見することができるため、OSを起動する上での安全性を維持することができる。また、従来の手法では、優先順位の低いプログラムがプログラムを改竄しようとする第三者による改竄対象になり得たが、本発明の実施の形態の情報端末では、どのプログラムの検証がいつの時点で行われるかを第三者が特定することは難しく、また、改竄したプログラムも必ず検証されるため、改竄しようとする第三者の意欲を削ぐという意味でも、安全性が向上することになる。
また、本発明の実施の形態の情報端末は、検証確率を適宜設定することによって、改竄の有無を検証するプログラムの数を効率的に減らしてその検証にかかる時間を短縮し、その結果、OSを起動するまでにかかる起動時間を短縮することができる。
(第1実施形態)
以下、ブートROM12に記憶された各種プログラム(検証対象判定機能、改竄検証機能、結果判定機能、プログラム起動機能)および保護メモリ14に記憶された検証対象テーブルについて、図3に示す、本発明の第1実施形態の情報端末のハードウェアの構成図を参照して、より詳細に説明する。
検証対象テーブルは、先に説明した「検証フラグ」、「重要度」、「検証確率」、「検証値」、「アドレス」などの情報に加え、さらに、「検証種別」、「検証手法」を情報として含む。「検証種別」は、情報端末にプログラムの改竄の有無を検証させるトリガの種別を表す情報である。先に説明した例では、不揮発メモリ13に記憶されたプログラム(PG1、PG2、PG3)は全て、電源が投入されたことをトリガとして改竄の有無を検証されるように設定されており、CPU11は、そのトリガを検出する度に、不揮発メモリ13に記憶されたプログラムのなかから、「検証確率」に従った頻度で改竄の有無を検証すべきものを特定した。本発明の第1実施形態の情報端末では、不揮発メモリ13に記憶されたプログラム(PG1、PG2、PG3)毎に異なるトリガ(トリガの種別としては、例えば、OSを起動した後のある特定のアプリケーションを起動したことや、情報端末の電源を落とす操作がなされたことや、バックグラウンド処理として特定のアプリケーションを起動したことや、前回の検証から所定の時間が経過したこと、などが挙げられる)を設定可能にしておき、CPU11は、あるトリガを検出したとき、そのトリガが「検証種別」として割り当てられたプログラムを「検証確率」に従った頻度で特定する。
例えば、CPU11は、本発明の実施の形態の情報端末に電源が投入されたときに、不揮発メモリ13に記憶されたプログラム(PG1、PG2、PG3)毎に割り当てられた「検証種別」(図3では、トリガ1、トリガ2。ここでは、トリガ1は、情報端末の電源を落とす操作がなされたことであり、トリガ2は、特定のアプリケーションを起動したことであるとする。)を読み出しておく。CPU11は、「検証種別」で特定されるトリガ2を検出すると[1.検証対象判定処理]に移行して、そのトリガ2が割り当てられたプログラム(図3ではPG2、PG3)の「検証確率」「1/2」を参照し、特定のアプリケーションが起動されれば1/2の確率で改竄の有無を検証すべきプログラムとしてPG2、PG3を特定する。このとき、CPU11は、内部のカウンタにトリガ1、2、3…が生じた回数をそのトリガ毎にカウントするようにすれば、カウンタがカウントした総数(そのトリガにより特定される事象が起きた総数)に対して、その総数の半数回(50%)は改竄の有無を検証すべきプログラムとしてPG2を特定すればよい。また、CPU11は、「検証種別」で特定されるトリガ1を検出すると[1.検証対象判定処理]に移行して、そのトリガ1が割り当てられたプログラム(図3ではPG1)の「検証確率」「1」を参照し、情報端末の電源を落とす操作がなされれば必ず改竄の有無を検証すべきプログラムとしてPG1を特定する。なお、カウンタは、全てのプログラムの検証が終了したときに、リセットする。
さらに、本発明の第1実施形態の情報端末では、不揮発メモリ13に記憶されたプログラム(PG1、PG2、PG3)毎に、[2.改竄検証処理]にて当該プログラムの固有の値を算出するために用いる所定のハッシュ関数や所定の暗号化処理に関する情報を検証手法として記憶させている。図1では、PG1には「検証手法」として、暗号化処理としてデジタル署名が、ハッシュ関数としてSHA−2型ハッシュ関数が、それぞれ指定されており、また、PG2、PG3には「検証手法」として、暗号化処理としてHMACが、ハッシュ関数としてSHA−1型ハッシュ関数が、それぞれ指定されている。このように、暗号化処理とハッシュ関数の組合せによって、本発明の第1実施形態の情報端末がOSを起動する上での安全性と起動時間を調整することができる。なお、検証対象テーブルの「検証値」を算出するために用いられたハッシュ関数または暗号化処理と、「検証手法」により特定されるハッシュ関数または暗号化処理と、は同じものである必要がある。
検証対象テーブルの「検証手法」によって、[2.改竄検証処理]にて用いるハッシュ関数や暗号化処理を指定することについて説明したが、次のような点で指定することも考えられる。すなわち、不揮発メモリ13に記憶されたプログラム(PG1、PG2、PG3)毎に、ハッシュ関数の引数として用いる当該プログラムのデータ範囲に関する情報を「検証対象範囲」として記憶させることも考えられる(「検証対象範囲」としては、プログラムが格納されたメモリの先頭のアドレスから最後尾のアドレスまでを範囲としたり、またはプログラムが格納されたメモリの先頭のアドレスからあるデータサイズ分を範囲としたり、またはプログラムが格納されたメモリの任意のアドレス(例えば、タイムスタンプを含むヘッダ部分に相当する領域)を指定したり、などが考えられる)。このように、「検証対象範囲」を調整することによって、本発明の第1実施形態の情報端末がOSを起動する上での安全性と起動時間を調整することができる(「検証対象範囲」を広くすれば安全性が高まり、逆に狭くすれば起動時間を短縮することができる)。さらには、CPU11がCPU特権モードで[2.改竄検証処理]を行う当該プログラムのデータ範囲に関する情報を「モード検証対象範囲」として記憶させる、ことも考えられる。このように、「モード検証対象範囲」を調整することによって、本発明の第1実施形態の情報端末がOSを起動する上での安全性と起動時間を調整することができる(「モード検証対象範囲」を広くすればCPU特権モードで改竄検証する範囲が増える結果安全性が高まり、逆に狭くすればCPU通常モードで改竄検証する範囲が増える結果起動時間を短縮することができる)。なお、検証対象テーブルの「検証値」を算出するために用いられた「検証対象範囲」または「モード検証対象範囲」と、[2.改竄検証処理]にて固有の値を算出するために用いる「検証対象範囲」または「モード検証対象範囲」と、は同じものである必要がある。
ところで、これまで、CPU11は、あるトリガを検出したとき、そのトリガが「検証種別」として割り当てられたプログラムを「検証確率」に従った頻度で特定する、と説明してきた。この手法では、あるトリガが「検証種別」として割り当てられたプログラムが検証されるべきものとして特定されるか否かの確率は、そのトリガを検出した各時点において、独立している。このため、CPU11は、例えば「検証確率」として「1/2」が割り当てられたあるプログラムのトリガを2度検出したからといって、必ずしも、2回に一度当該プログラムを検証されるべきものとして特定するとは限らない。ここからは、あるプログラムが検証されるべきものとして過去に特定されたか否かに応じて、今後そのプログラムが検証されるべきものとして特定されるであろう確率(条件付確率)を調整する手法について、図3を参照して説明する。
CPU11は、トリガ2を初めて検出した第1の時点では、そのトリガ2が「検証種別」として割り当てられたプログラムPG2、PG3を「検証確率」の「1/2」に従った頻度で、検証されるべきものとして特定する。CPU11は、第1の時点において、PG2を検証されるべきプログラムとして特定せず、PG3を検証されるべきプログラムとして特定したものとすると、検証対象テーブルの「条件付確率」を次のように更新する。
すなわち、CPU11は、検証されるべきプログラムとして特定されたなかったプログラムの「検証確率」においては、その「検証確率」の分母の値を「1」減少させた数値を「条件付確率」として記憶させ、一方、検証されるべきプログラムとして特定されたプログラムの「検証確率」においては、その「検証確率」の分子の値および分母の値を「1」減少させた数値を「条件付確率」として記憶させる。
その後、CPU11は、トリガ2を検出した2回目の時点(第2の時点)では、上記「条件付確率」に従った頻度で検証されるべきプログラムを特定し、検証されるべきプログラムとして特定されたなかったプログラムの「条件付確率」においては、その「条件付確率」の分母の値を「1」減少させた数値を「条件付確率」として記憶させ、一方、検証されるべきプログラムとして特定されたプログラムの「条件付確率」においては、その「条件付確率」の分子の値および分母の値を「1」減少させた数値を「条件付確率」として記憶させる。以降、CPU11は、トリガ2の検出、「条件付確率」に基づく検証されるべきプログラムの特定、「条件付確率」の更新、の処理を繰り返し行い、トリガ2を検出した回数をカウントするカウンタが「検証確率」の分母の値の整数倍になると、その「検証確率」が割り当てられたプログラムの「条件付確率」をリセット(図3では、「---」により表記)する。
この一連の処理を図3のPG2、PG3に適用すると、第1の時点において検証されるべきプログラムとして特定されなかったPG2は、「検証確率」の分母の値を「1」減少させた数値である「1」に「条件付確率」が更新され、一方、第1の時点において検証されるべきプログラムとして特定されたPG3は、「検証確率」の分子の値および分母の値を「1」減少させた数値である「0」に「条件付確率」が更新される。CPU11は、第2の時点では、PG2を検証されるべきプログラムとして特定し、一方、PG3を検証されるべきプログラムとして特定する。さらに、CPU11は、トリガ2を検出した2回目の時点では、カウンタがPG2、PG3の「検証確率」の分母の値である「2」と一致することから、PG2、PG3の「条件付確率」をリセットする。なお、この一連の処理は、「1/2」の「検証確率」にのみ適用されるものではなく、「1/3」、「2/3」、「3/5」などの様々な数値の検証確率に適用することもできる。
上述した「条件付確率」は、あるプログラムが検証されるべきものとして過去に特定されたか否かに応じて、今後そのプログラムが検証されるべきものとして特定されるであろう確率(条件付確率)を調整するものであった。以降では、図4(a)に示す、本発明の第1実施形態の情報端末における検証対象テーブルのように、同一の「検証種別」でかつ同じ数値の「検証確率」が割り当てられた複数のプログラムがある場合に、その複数のプログラムのうちのどのプログラムが検証されるべきものとして過去に特定されたかに応じて、今後その複数のプログラムが検証されるべきものとして特定されるであろう確率(条件付確率)を調整する手法について説明する。
図4(a)に示す、「検証種別」として「トリガ2」が割り当てられかつ「検証確率」として「1/2」が割り当てられたPG2、PG3、PG4、PG5を、CPU11は、次に説明するような処理を行ってそれらのプログラムのうちの検証されるべきものを特定する。すなわち、CPU11は、同一の「検証種別」でかつ同じ数値の「検証確率」が割り当てられた複数のプログラムがある場合、それら複数のプログラムをいくつかのグループに区分ける。1つのグループを構成するプログラムの個数は、複数のプログラムの個数を「検証確率」の分母の値によって除算した数になる。図4(a)では、「検証種別」として「トリガ2」、「検証確率」として「1/2」がそれぞれ割り当てられたプログラムが4個あり、「検証確率」の分母の値が「2」であることから、1つのグループを構成するプログラムの個数は2になる。CPU11は、保護メモリ14から検証対象テーブルを読み出したときに、同一の「検証種別」でかつ同じ数値の「検証確率」が割り当てられた複数のプログラムがあれば、1つのグループを構成するプログラムの個数を算出し、それらの複数のプログラムを少なくとも2つのグループのいずれかに割り当てる。図4(a)では、PG2とPG4をグループ1(G1)に、PG3とPG5をグループ2(G2)に割り当てている。
CPU11は、トリガ2を初めて検出した第1の時点では、そのトリガ2が「検証種別」として割り当てられたグループのうちの、「検証確率」の分子の値の数である「1」個を、検証されるべきプログラムを含むグループとしてランダムに特定する。CPU11は、第1の時点において、G1を検証されるべきプログラムを含むものとして特定せず、G2を検証されるべきプログラムを含むものとして特定したとすると、検証対象テーブルの「条件付確率」を次のように更新する。
すなわち、CPU11は、検証されるべきプログラムを含むグループとして特定されたなかったグループG1においては、G1の各プログラムの「検証確率」の分母の値を「1」減少させた数値を「条件付確率」として記憶させ、一方、検証されるべきプログラムを含むグループとして特定されたグループG2においては、G2の各プログラムの「検証確率」の分子の値および分母の値を「1」減少させた数値を「条件付確率」として記憶させる。
その後、CPU11は、トリガ2を検出した2回目の時点(第2の時点)では、上記「条件付確率」に従った頻度で検証されるべきプログラムを含むグループを特定し、検証されるべきプログラムを含むグループとして特定されたなかったプログラムの「条件付確率」においては、その「条件付確率」の分母の値を「1」減少させた数値を「条件付確率」として記憶させ、一方、検証されるべきプログラムを含むグループとして特定されたプログラムの「条件付確率」においては、その「条件付確率」の分子の値および分母の値を「1」減少させた数値を「条件付確率」として記憶させる。以降、CPU11は、トリガ2の検出、「条件付確率」に基づく検証されるべきプログラムを含むグループの特定、「条件付確率」の更新、の処理を繰り返し行い、トリガ2を検出した回数をカウントするカウンタが「検証確率」の分母の値の整数倍になると、その「検証確率」が割り当てられたプログラムの「条件付確率」をリセットする。
なお、トリガ2を検出した回数をカウントするカウンタが「検証確率」の分母の値の整数倍になると(つまり、あるグループの全てのプログラムの検証が終わると)、CPU11は、複数のプログラムを再度グループ分けを行うようにすることにより、プログラムを改竄しようとする第三者によって複数のプログラムが検証される時点を特定され難くすることもできる。また、情報端末の電源が落とされたときに、上記「条件付確率」およびプログラムを区分けしていたグループをリセットするようにしてもよい。
このように、複数のプログラムを上記グループに区分けし、グループ単位で、そのグループに含まれるプログラムを検証されるべきものとして特定することにより、「検証確率」の分母の値分の回数トリガが発生すれば、その「検証確率」が割り当てられたプログラムの改竄の有無を洩れなく検証することができ、かつ、検証されるべきプログラムとして特定されるプログラムの数がトリガが発生した各時点において最小になることによって、その各時点における改竄の有無の検証にかかる時間を最小化し、その結果、改竄の有無の検証にかかる総時間を短縮することができる。
なお、図4(a)では、「検証確率」として「1/2」がそれぞれ割り当てられたプログラムの数(4個)が「検証確率」の分母の値(「2」)で割り切ることができたが、割り切れない場合も想定される。図4(b)では、ある「検証確率」を割り当てられたプログラムの数が「検証確率」の分母の値で割り切れない場合の、CPU11によるグループ区分けの処理について説明する。図4(b)では、「検証種別」として「トリガ2」、「検証確率」として「2/3」がそれぞれ割り当てられたプログラムが5個(PG2、PG3、PG4、PG5、PG6)ある。CPU11は、プログラムの個数「5」を「検証確率」の分母の値が「3」で除算した数「1.67」よりも大きく最も近い整数「2」を、1つのグループを構成するプログラムの個数として設定する。CPU11は、5個のプログラムを、2個、2個、1個のプログラムで構成されるグループG1、G2、G3のいずれかに区分けする。図4(b)では、PG2とPG4をグループ1(G1)に、PG3とPG5をグループ2(G2)に、PG6をグループ3(G3)に、それぞれ割り当てている。なお、図4(b)において、G3はPG6とPG7から構成されるように記載しているが、PG7は、グループを構成するプログラムの数が不足しているときに仮想的に割り当てられたプログラムであり、不揮発メモリ13に実際に記憶されているプログラムではない。
CPU11は、トリガ2を初めて検出した第1の時点では、そのトリガ2が「検証種別」として割り当てられたグループのうちの、「検証確率」の分子の値の数である「2」個を、検証されるべきプログラムを含むグループとしてランダムに特定する。CPU11は、第1の時点において、G1を検証されるべきプログラムを含むものとして特定せず、G2およびG3を検証されるべきプログラムを含むものとして特定したとすると、検証対象テーブルの「条件付確率」を次のように更新する。
すなわち、CPU11は、検証されるべきプログラムを含むグループとして特定されたなかったグループG1においては、G1の各プログラムの「検証確率」の分母の値を「1」減少させた数値を「条件付確率」として記憶させ、一方、検証されるべきプログラムを含むグループとして特定されたグループG2およびG3においては、G2およびG3の各プログラムの「検証確率」の分子の値および分母の値を「1」減少させた数値を「条件付確率」として記憶させる。
その後、CPU11は、トリガ2を検出した2回目の時点(第2の時点)では、上記「条件付確率」に従った頻度で、検証されるべきプログラムを含むグループを同じく2つ特定し、検証されるべきプログラムを含むグループとして特定されたなかったプログラムの「条件付確率」においては、その「条件付確率」の分母の値を「1」減少させた数値を「条件付確率」として記憶させ、一方、検証されるべきプログラムを含むグループとして特定されたプログラムの「条件付確率」においては、その「条件付確率」の分子の値および分母の値を「1」減少させた数値を「条件付確率」として記憶させる。以降、CPU11は、トリガ2の検出、「条件付確率」に基づく検証されるべきプログラムを含む2つのグループの特定、「条件付確率」の更新、の処理を繰り返し行い、トリガ2を検出した回数をカウントするカウンタが「検証確率」の分母の値の整数倍になると、その「検証確率」が割り当てられたプログラムの「条件付確率」をリセットする。
このように、複数のプログラムを上記グループに区分けし、グループ単位で、そのグループに含まれるプログラムを検証されるべきものとして特定することにより、「検証確率」の分母の値分の回数トリガが発生すれば、その「検証確率」が割り当てられたプログラムの改竄の有無を洩れなく検証することができ、かつ、検証されるべきプログラムとして特定されるプログラムの数がトリガが発生した各時点において最小になることによって、その各時点における改竄の有無の検証にかかる時間を最小化し、その結果、改竄の有無の検証にかかる総時間を短縮することができる。
ところで、[3.結果判定処理]にて、CPU11は、[2.改竄検証処理]にて不揮発メモリ13から読み出したプログラムに改竄有りと判定した場合、そのプログラムに割り当てられた「重要度」の値または「検証確率」の値に応じて、ブートを中止する(全起動中止モード)、情報端末を起動させる上で必要不可欠な所定のプログラムのみを起動する(エマージェンシーモード)、あるいは、当該プログラムのみを実行しないまたは当該プログラムに関連するプログラムのみを実行しない(一部起動中止モード)、若しくは、そのプログラムを含む他のプログラムを起動する(強制起動モード)などのモードを一意に選択し、[4.プログラム起動処理]にてそのモードで実行することを説明した。
本発明の第1実施形態の情報端末では、図5の本発明の第1実施形態の検証対象テーブルに示すように、検証対象テーブルは、各プログラム毎に、当該プログラムに改竄有りと判定された場合に、当該プログラムを含むの起動モードに関する情報「起動モード」を保持している。CPU11は、改竄有りと判定されたプログラムの「起動モード」を[3.結果判定処理]にて参照し、[4.プログラム起動処理]にてその「起動モード」にて特定されるモードで実行する。なお、ここでは、検証対象テーブルに、プログラム毎に「起動モード」が設定される構成としたが、当該プログラムの属性に関する情報(例えば、システムプログラム、仮想マシンプログラム、アプリケーションプログラム)を検証対象テーブルに追加し、その属性毎に上記「起動モード」を割り当てる構成でもよい。
検証対象テーブルが「起動モード」を保持する構成であれば、プログラムに改竄が有った場合の情報端末による対処方法をプログラム毎に検証対象テーブルを作成した管理者が定めることができるため、管理者の意向を詳細に反映させることができる。一方、改竄有りと判定されたプログラムに割り当てられた「重要度」の値または「検証確率」の値に応じて「起動モード」を選択する構成は、同じ「重要度」の値または「検証確率」の値を有する複数のプログラムのグループ単位で改竄が有った場合の情報端末による対処方法を一律に設定できるため、情報端末利用者が意向を反映させ易い構成と言える。
以上、本発明の第1実施形態の情報端末によれば、検証対象テーブルに様々な情報を保持させることによって、OSを起動する上での安全性または起動時間を細かに調整することができる。
なお、本発明の第1実施形態の情報端末の検証対象テーブルでは、各プログラム毎に「検証種別」、「検証手法」、「起動モード」を設定する構成について説明したが、「検証確率」が同じの複数のプログラムから構成されるグループ単位で、共通の「検証種別」、「検証手法」、「起動モード」を設定する構成であっても構わない。
また、検証対象テーブルの「重要度」に関して、あるプログラムが改竄された回数に応じてそのプログラムに割り当てられた「重要度」を調整するようにしてもよい。例えば、CPU11は、あるプログラムに改竄が有ることを判定する度に、そのプログラムに割り当てられた「重要度」を「1」増加させる。これにより、OSを起動する上での安全性を向上することができる。
(第2実施形態)
次に、本発明の第2実施形態の情報端末について説明する。図6に、本発明の第2実施形態の情報端末のハードウェア構成図を示す。本発明の第2実施形態の情報端末は、ブート用不揮発メモリ15を追加されていることが本発明の第1実施形態の情報端末とは異なる。以下、ブート用不揮発メモリ15の機能、およびブート用不揮発メモリ15を用いてCPU11が行う処理について、詳細に説明する。
本発明の第1実施形態の情報端末では、CPU11は、ブートROM12上に展開された改竄検証プログラム(検証対象判定機能、改竄検証機能、結果判定機能、プログラム起動機能から構成される)を実行し、不揮発メモリ13に記憶されたプログラムを起動させることによって、OSを起動するものであった。本発明の第2実施形態の情報端末では、CPU11は、ブートROM12上に展開された改竄検証プログラムを実行し、不揮発メモリ13に記憶されたプログラムを起動する点は共通しているが、ブートROM12上に展開された改竄検証プログラムが検証の対象とするプログラムは不揮発メモリ13に記憶されたプログラムのうちの改竄検証プログラム(PG1)のみである。本発明の第2実施形態の情報端末は、CPU11が、不揮発メモリ13に記憶された改竄検証プログラム(PG1)に改竄無しと判定すれば、その改竄検証プログラムをブート用不揮発メモリ15に展開し、以後の改竄検証をブート用不揮発メモリ15に展開された改竄検証プログラムによって行うものである。なお、ブート用不揮発メモリ15に改竄検証プログラムを展開した後の処理は、第1実施形態にてCPU11が検証対象判定処理、改竄検証処理、結果判定処理、およびプログラム起動処理を実行するためにデータを読み出していた記憶装置が、ブートROM12からブート用不揮発メモリ15に置き換わるのみであるため、説明を省略する。
電源が投入された本発明の第2実施形態の情報端末において、CPU11に電力の供給が開始されると、CPU11はまず、まず、マザーボード上にあるブートROM12に記憶されたIPL(Initial Program Loader)を参照して、不揮発メモリ13および保護メモリ14から最初に読み出して起動すべきプログラムの先頭アドレスを読み出す。CPU11は、読み出した先頭アドレスを基に、不揮発メモリ13に格納された改竄検証プログラム(PG1)を読み出し、また、保護メモリ14に記憶された検証対象テーブルのPG1に割り当てられた情報を参照し、ブートROM12に展開されたプログラムの改竄の有無を検証するための各種改竄検証プログラム(検証対象判定処理、改竄検証処理、結果判定処理、およびプログラム起動処理)を実行する。なお、改竄検証プログラムPG1に割り当てられた「検証確率」は「1」に、「検証種別」は少なくとも電源が投入されたことをトリガとして、それぞれ設定される必要がある。CPU11は、ブートROM12に展開された改竄検証プログラムを実行してPG1を検証し、改竄無しと判定すれば、そのPG1をブート用不揮発メモリ15に展開する。以降、CPU11は、不揮発メモリ13に記憶された各種プログラム(PG2、PG3)を読み出し、ブート用不揮発メモリ15に展開された改竄検証プログラムを実行して改竄検証を行う。
ブートROMに記憶された改竄検証プログラムは書き換えることができないため、改竄検証プログラムを更新するためにはブートROMを取り替える必要があったが、本発明の第2実施形態の情報端末によれば、不揮発メモリに記憶された改竄検証プログラムを容易に更新することができ、新しい改竄検証プログラムで改竄検証を行うことができる。
(第3実施形態)
次に、本発明の第3実施形態の情報端末について説明する。図7に、本発明の第3実施形態の情報端末(クライアント)およびサーバのシステム構成図を示す。本発明の第3実施形態の情報端末は、通信回路16を備え、サーバ2と通信を行う。本発明の第3実施形態では、サーバが、クライアントにあるプログラムを送信して、そのプログラムをクライアント上でリモートコントロールすることを想定しており、サーバは、リモートコントロールに先立って、クライアントにそのプログラムの改竄検証を行わせ、改竄無しとクライアントから通知されれば、そのプログラムを実行する。以下、クライアント1およびサーバ2が行う処理について、詳細に説明する。なお、通信回路16としては、LANカード、USB、IrDA、Bluetoothなどの通信機能を実現する回路が考えられる。
OSを起動した情報端末(クライアント)1は、不揮発メモリ13に記憶されたプログラムのうちの通信回路16を機能させるプログラムを起動し、サーバ2との通信を確立する。その後、情報端末1は、サーバから検証対象テーブルと各種プログラム(PG11、PG12、PG13)とを受信し、検証対象テーブルを保護メモリ14に、各種プログラムを不揮発メモリ13にそれぞれ記憶する。なお、情報端末1は、検証対象テーブルを保護メモリ14に記憶する際、不揮発メモリ13に記憶した各種プログラムそれぞれの先頭アドレスを検証対象テーブルの「アドレス」に記憶する。また、検証対象テーブルや各種プログラムを不揮発メモリ13に記憶するのであれば、SDカードやUSBメモリなどの外部記憶装置から読み取った検証対象テーブルや各種プログラムを不揮発メモリ13に記憶するようにしても構わない。
その後、情報端末1は、あるトリガ(例えば、OSを起動した後のある特定のアプリケーションを起動したことや、情報端末の電源を落とす操作がなされたことや、バックグラウンド処理として特定のアプリケーションを起動したことや、前回の検証から所定の時間が経過したこと、など)を検出すると、不揮発メモリ13に記憶した各種プログラム(PG11、PG12、PG13)を読み出し、また、保護メモリに記憶した検証対象テーブルを参照して、各種プログラム(PG11、PG12、PG13)の改竄の有無を検証する。情報端末1による改竄の有無を検証する処理は第1実施形態あるいは第2実施形態で説明した通りであるため、ここでの説明を省略する。情報端末1は、各種プログラム(PG11、PG12、PG13)の改竄検証の結果を表すデータをサーバ2に送信する。なお、ここでいう改竄検証の結果とは、[2.改竄検証処理]による判定結果を指す。
サーバ2は、リモートコントロールしようとする各種プログラム(PG11、PG12、PG13)に改竄が無いことをクライアント1から通知されれば、クライアント1にそれら各種プログラムを起動する制御データを送信し、クライアント1のリモートコントロールを開始する。
以上、本発明の第3実施形態の情報端末およびサーバによれば、サーバがリモートコントロールしようとしているプログラムに改竄が無いとクライアントが判定した場合に、サーバがリモートコントロールを実施するため、より安全なリモートコントロールを実現することができる。
本発明の情報端末、クライアントサーバシステムおよびプログラムによれば、各種プログラム毎に改竄の有無を検証すべき優先順位を設定してOSを起動するまでの起動時間の短縮を図りつつも、各種プログラムに生じた改竄を確実に検出することができるという効果を奏し、セキュアブート(プログラムの改竄の有無を検証する処理)を実施する情報端末の分野において有用である。
本発明の実施の形態の情報端末におけるハードウェアの構成図 本発明の実施の形態の情報端末による改竄検証の流れを説明するフローチャート 本発明の第1実施形態の情報端末のハードウェアの構成図 (a)本発明の第1実施形態の情報端末における検証対象テーブルの一例 (b)本発明の第1実施形態の情報端末における検証対象テーブルの他例 本発明の第1実施形態の検証対象テーブル 本発明の第2実施形態の情報端末のハードウェア構成図 本発明の第3実施形態の情報端末(クライアント)およびサーバのシステム構成図
符号の説明
1 情報端末(クライアント)
11 CPU
12 ブートROM
13 不揮発メモリ
14 保護メモリ
15 ブート用不揮発メモリ
16 通信回路
2 サーバ

Claims (22)

  1. 複数のプログラムを記憶するプログラム記憶部と、
    検証対象テーブルとして、前記複数のプログラム毎に、当該プログラムが改竄の有無を検証され得る確率についての情報である検証確率を記憶する検証確率記憶部と、
    前記検証確率記憶部に記憶した前記検証確率を参照して、前記複数のプログラムのうちの改竄の有無を検証すべきものを特定する検証対象判定手段と、
    検証すべきものとして特定したプログラムの改竄の有無を検証する改竄検証手段と、
    検証した結果に応じて前記プログラム記憶部に記憶した前記複数のプログラムを起動するプログラム起動手段と、
    を備える情報端末。
  2. 請求項1記載の情報端末であって、
    前記複数のプログラムの改竄の有無を検証するよう指示する検証タイミングを検出するカウンタを備え、
    前記検証対象判定手段は、前記カウンタが前記検証タイミングを検出した時点で、前記検証確率記憶部に記憶した前記検証確率を参照して、前記複数のプログラムのうちの改竄の有無を検証すべきものを特定する、
    情報端末。
  3. 請求項2記載の情報端末であって
    前記カウンタは、前記検証タイミングを検出した回数をカウントし、
    前記検証確率記憶部は、前記複数のプログラム毎に、数値r/n(r、nは整数)で表される前記検証確率を記憶し、
    前記検証対象判定手段は、前記カウンタがn回カウントする間に、前記複数のプログラムのうちの数値r/nで表される前記検証確率が割り当てられたものをr回特定する、
    情報端末。
  4. 請求項2記載の情報端末であって、
    前記検証確率記憶部は、前記複数のプログラム毎に、当該プログラム改竄の有無を検証すべき検証タイミングを識別する情報である検証種別を記憶し、
    前記検証対象判定手段は、前記カウンタが前記検証種別により識別される前記検証タイミングを検出した時点で、前記検証確率記憶部に記憶した前記検証確率と前記検証タイミングの種別を参照して、前記複数のプログラムのうちの改竄の有無を検証すべきものを特定する、
    情報端末。
  5. 請求項2記載の情報端末であって、
    前記検証確率記憶部は、数値の異なる前記検証確率毎に、当該プログラム改竄の有無を検証すべき検証タイミングを識別する情報である検証種別を記憶し、
    前記検証対象判定手段は、前記カウンタが前記検証種別により識別される前記検証タイミングを検出した時点で、前記検証確率記憶部に記憶した前記検証確率と前記検証タイミングの種別を参照して、前記複数のプログラムのうちの改竄の有無を検証すべきものを特定する、
    情報端末。
  6. 請求項4または5記載の情報端末であって、
    前記カウンタは、前記検証タイミングを検出した回数を前記検証種別毎にカウントし、
    前記検証確率記憶部は、前記複数のプログラム毎に、数値r/n(r、nは整数)で表される前記検証確率を記憶し、
    前記検証対象判定手段は、前記検証種別により識別されるいずれか1つの前記検証タイミングを前記カウンタがn回カウントする間に、前記複数のプログラムのうちの、数値r/nで表される前記検証確率が割り当てられ、かつ、前記検証種別により識別される前記検証タイミングが割り当てられたものを、r回特定する、
    情報端末。
  7. 請求項3または6記載の情報端末であって、
    前記検証対象判定手段は、前記検証確率記憶部に記憶されている、数値r/nの前記検証確率が割り当てられた前記複数のプログラムの個数が、n/r以下である場合、前記カウンタがn回の前記検証タイミングを検出したそれぞれの時点で、数値r/nの前記検証確率が割り当てられた前記複数のプログラムを一つずつ特定する、
    情報端末。
  8. 請求項3または6記載の情報端末であって、
    前記検証対象判定手段は、前記検証確率記憶部に記憶されている、数値r/nの前記検証確率が割り当てられた前記複数のプログラムの個数が、n/rより多い場合、前記カウンタがn回の前記検証タイミングを検出したそれぞれの時点で、数値r/nの前記検証確率が割り当てられた前記複数のプログラムを少なくとも一つ特定する、
    情報端末。
  9. 請求項8記載の情報端末であって、
    前記検証対象判定手段は、前記検証確率記憶部に記憶されている、数値r/nの前記検証確率が割り当てられた前記複数のプログラムの個数が、n/rより多いm×n(mは整数)個である場合、前記カウンタがn回の前記検証タイミングを検出したそれぞれの時点で、数値r/nの前記検証確率が割り当てられた前記複数のプログラムのうちのr×m個を重複させないように特定する、
    情報端末。
  10. 請求項1から9のいずれか一項に記載の情報端末であって、
    前記検証確率記憶部は、前記複数のプログラム毎に、当該プログラムの改竄の有無を検証する検証手法を記憶し、
    前記改竄検証手段は、前記検証確率記憶部に記憶した前記検証手法を参照して、検証すべきものとして特定したプログラムの改竄の有無を当該プログラムに割り当てられた前記検証手法により検証する、
    情報端末。
  11. 請求項1から9のいずれか一項に記載の情報端末であって、
    前記検証確率記憶部は、数値の異なる前記検証確率毎に、当該プログラムの改竄の有無を検証する検証手法を記憶し、
    前記改竄検証手段は、前記検証確率記憶部に記憶した前記検証手法を参照して、検証すべきものとして特定したプログラムの改竄の有無を当該プログラムに割り当てられた前記検証手法により検証する、
    情報端末。
  12. 請求項1から11のいずれか一項に記載の情報端末であって、
    前記プログラム起動手段は、前記改竄検証手段がプログラムの改竄有りと判定した場合、前記プログラム記憶部に記憶した前記複数のプログラムのうちの、少なくとも前記改竄検証手段が改竄有りと判定したプログラムの起動を中止する、
    情報端末。
  13. 請求項1から11のいずれか一項に記載の情報端末であって、
    前記プログラム起動手段は、前記改竄検証手段がプログラムの改竄有りと判定した場合、前記プログラム記憶部に記憶した前記複数のプログラムのうちの所定のものを起動する、
    情報端末。
  14. 請求項1から11のいずれか一項に記載の情報端末であって、
    前記プログラム起動手段は、前記改竄検証手段がプログラムの改竄有りと判定した場合、当該プログラムに割り当てられた前記検証確率に応じて前記プログラム記憶部に記憶した前記複数のプログラムを起動する、
    情報端末。
  15. 請求項13または14記載の情報端末であって、
    前記プログラム起動手段は、前記改竄検証手段がプログラムの改竄有りと判定した場合、前記プログラム記憶部に記憶した前記複数のプログラムのうちの、エマージェンシーモードを実行するための所定のプログラムを起動する、
    情報端末。
  16. 請求項1から15のいずれか一項に記載の情報端末であって、
    前記CPUを前記検証対象判定手段、前記改竄検証手段、前記プログラム起動手段として機能させるための第1のブートプログラムを記憶するROMを備える情報端末。
  17. 請求項16記載の情報端末であって、
    前記プログラム記憶部は、前記CPUを前記検証対象判定手段、前記改竄検証手段、前記プログラム起動手段として機能させるための前記第2のブートプログラムを記憶し、
    前記CPUは、前記ROMに記憶した前記第1のブートプログラムを実行して前記プログラム記憶部に記憶した前記第2のブートプログラムの改竄の有無を検証し、改竄無しと検証すれば、前記プログラム記憶部に記憶した前記第2のブートプログラムを実行する、
    情報端末。
  18. 請求項1から17のいずれか一項に記載の情報端末であって、
    少なくとも各種プログラムおよび前記検証対象テーブルの一方、または両方を記憶するサーバと通信を行う通信部を備え、
    前記プログラム記憶部は、前記通信部により受信した前記各種プログラムを記憶し、
    前記検証確率記憶部は、前記通信部により受信した前記検証対象テーブルを記憶する、
    情報端末。
  19. 請求項18記載の情報端末であって、
    前記通信部は、前記改竄検証手段による検証した結果を前記サーバに送信する、
    情報端末。
  20. 請求項18記載の情報端末と、少なくとも一つのプログラムおよび前記検証対象テーブルの一方、または両方を記憶するサーバと、を含んで構成されるクライアントサーバシステム。
  21. 請求項19記載の情報端末と、少なくとも一つのプログラムおよび前記検証対象テーブルの一方、または両方を記憶するサーバと、を含んで構成されるクライアントサーバシステムであって、
    前記サーバは、前記情報端末から受信した前記検証した結果に応じて、前記少なくとも一つのプログラムを起動するよう指示する制御信号を前記情報端末にに送信し、
    前記情報端末は、前記制御信号を受信すると、前記プログラム記憶部に記憶した前記複数のプログラムのうちの、前記少なくとも一つのプログラムを起動する、
    クライアントサーバシステム。
  22. コンピュータを、請求項1から15のいずれか一項に記載の情報端末が有する前記検証対象判定手段、前記改竄検証手段、前記プログラム起動手段として機能させるためのプログラム。
JP2007170426A 2007-06-28 2007-06-28 情報端末、クライアントサーバシステムおよびプログラム Ceased JP2009009372A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007170426A JP2009009372A (ja) 2007-06-28 2007-06-28 情報端末、クライアントサーバシステムおよびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007170426A JP2009009372A (ja) 2007-06-28 2007-06-28 情報端末、クライアントサーバシステムおよびプログラム

Publications (1)

Publication Number Publication Date
JP2009009372A true JP2009009372A (ja) 2009-01-15

Family

ID=40324387

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007170426A Ceased JP2009009372A (ja) 2007-06-28 2007-06-28 情報端末、クライアントサーバシステムおよびプログラム

Country Status (1)

Country Link
JP (1) JP2009009372A (ja)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015022521A (ja) * 2013-07-19 2015-02-02 スパンション エルエルシー セキュアブート方法、組み込み機器、セキュアブート装置およびセキュアブートプログラム
WO2016185577A1 (ja) * 2015-05-20 2016-11-24 富士通株式会社 プログラム検証方法、検証プログラム、及び情報処理装置
WO2017022149A1 (ja) * 2015-07-31 2017-02-09 パナソニックIpマネジメント株式会社 処理装置、車載端末装置、処理装置の起動方法、及び処理装置の起動プログラム
WO2019151013A1 (ja) 2018-02-02 2019-08-08 日本電気株式会社 情報処理装置、情報処理方法及び記録媒体
JP2020042632A (ja) * 2018-09-12 2020-03-19 キヤノン株式会社 情報処理装置、情報処理装置の起動方法、及びプログラム
JP2020057040A (ja) * 2018-09-28 2020-04-09 キヤノン株式会社 情報処理装置とその制御方法、及びプログラム
JP2020072431A (ja) * 2018-11-02 2020-05-07 三菱電機株式会社 制御装置
JP2020187504A (ja) * 2019-05-14 2020-11-19 三菱電機株式会社 制御装置
JP2021026585A (ja) * 2019-08-07 2021-02-22 富士電機株式会社 電子機器
JPWO2021059478A1 (ja) * 2019-09-27 2021-04-01
WO2022102110A1 (ja) * 2020-11-13 2022-05-19 日本電信電話株式会社 改ざん検知装置、改ざん検知方法および改ざん検知プログラム
JP7393226B2 (ja) 2020-01-29 2023-12-06 キヤノン株式会社 情報処理装置とその起動方法
US11888990B2 (en) 2020-03-09 2024-01-30 Kabushiki Kaisha Toshiba Information processing device controlling analysis of a program being executed based on a result of verification of an analysis program

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10333902A (ja) * 1997-05-27 1998-12-18 N Ii C Joho Syst:Kk 改ざん検知機能付きコンピュータシステム
JP2004302963A (ja) * 2003-03-31 2004-10-28 Ntt Docomo Inc 端末装置、端末装置の制御方法、プログラム及び通信方法
WO2005096121A1 (ja) * 2004-04-02 2005-10-13 Matsushita Electric Industrial Co., Ltd. 実行装置
JP2007066021A (ja) * 2005-08-31 2007-03-15 Nec Electronics Corp 外部データ改ざん検出装置、および外部データ改ざん検出方法
JP2007066191A (ja) * 2005-09-01 2007-03-15 Toshiba Corp 再生装置および再生方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10333902A (ja) * 1997-05-27 1998-12-18 N Ii C Joho Syst:Kk 改ざん検知機能付きコンピュータシステム
JP2004302963A (ja) * 2003-03-31 2004-10-28 Ntt Docomo Inc 端末装置、端末装置の制御方法、プログラム及び通信方法
WO2005096121A1 (ja) * 2004-04-02 2005-10-13 Matsushita Electric Industrial Co., Ltd. 実行装置
JP2007066021A (ja) * 2005-08-31 2007-03-15 Nec Electronics Corp 外部データ改ざん検出装置、および外部データ改ざん検出方法
JP2007066191A (ja) * 2005-09-01 2007-03-15 Toshiba Corp 再生装置および再生方法

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015022521A (ja) * 2013-07-19 2015-02-02 スパンション エルエルシー セキュアブート方法、組み込み機器、セキュアブート装置およびセキュアブートプログラム
US10872141B2 (en) 2015-05-20 2020-12-22 Fujitsu Limited Method and apparatus for program verification
WO2016185577A1 (ja) * 2015-05-20 2016-11-24 富士通株式会社 プログラム検証方法、検証プログラム、及び情報処理装置
JPWO2016185577A1 (ja) * 2015-05-20 2018-02-22 富士通株式会社 プログラム検証方法、検証プログラム、及び情報処理装置
WO2017022149A1 (ja) * 2015-07-31 2017-02-09 パナソニックIpマネジメント株式会社 処理装置、車載端末装置、処理装置の起動方法、及び処理装置の起動プログラム
JP2017033248A (ja) * 2015-07-31 2017-02-09 パナソニックIpマネジメント株式会社 処理装置、車載端末装置、処理装置の起動方法、及び処理装置の起動プログラム
WO2019151013A1 (ja) 2018-02-02 2019-08-08 日本電気株式会社 情報処理装置、情報処理方法及び記録媒体
US11449617B2 (en) 2018-02-02 2022-09-20 Nec Corporation Information processing device, information processing method, and storage medium
JP2020042632A (ja) * 2018-09-12 2020-03-19 キヤノン株式会社 情報処理装置、情報処理装置の起動方法、及びプログラム
JP7182966B2 (ja) 2018-09-12 2022-12-05 キヤノン株式会社 情報処理装置、情報処理装置の起動方法、及びプログラム
JP7152920B2 (ja) 2018-09-28 2022-10-13 キヤノン株式会社 情報処理装置とその制御方法、及びプログラム
JP2020057040A (ja) * 2018-09-28 2020-04-09 キヤノン株式会社 情報処理装置とその制御方法、及びプログラム
JP2020072431A (ja) * 2018-11-02 2020-05-07 三菱電機株式会社 制御装置
JP2020187504A (ja) * 2019-05-14 2020-11-19 三菱電機株式会社 制御装置
JP2021026585A (ja) * 2019-08-07 2021-02-22 富士電機株式会社 電子機器
JP7268529B2 (ja) 2019-08-07 2023-05-08 富士電機株式会社 電子機器
JPWO2021059478A1 (ja) * 2019-09-27 2021-04-01
WO2021059478A1 (ja) * 2019-09-27 2021-04-01 日本電気株式会社 情報処理装置、情報処理方法、及び、プログラムが記録された非一時的なコンピュータ可読媒体
JP7283552B2 (ja) 2019-09-27 2023-05-30 日本電気株式会社 情報処理装置、情報処理方法、及び、プログラム
JP7393226B2 (ja) 2020-01-29 2023-12-06 キヤノン株式会社 情報処理装置とその起動方法
US11888990B2 (en) 2020-03-09 2024-01-30 Kabushiki Kaisha Toshiba Information processing device controlling analysis of a program being executed based on a result of verification of an analysis program
WO2022102110A1 (ja) * 2020-11-13 2022-05-19 日本電信電話株式会社 改ざん検知装置、改ざん検知方法および改ざん検知プログラム

Similar Documents

Publication Publication Date Title
JP2009009372A (ja) 情報端末、クライアントサーバシステムおよびプログラム
JP6373888B2 (ja) 情報処理装置及び制御方法
JP5582909B2 (ja) プラットフォーム完全性検証システム
US9129103B2 (en) Authenticate a hypervisor with encoded information
EP3076324B1 (en) Information processing apparatus and method of controlling the apparatus
US10803176B2 (en) Bios security
CN108989468B (zh) 一种信任网络构建方法及装置
JP6391439B2 (ja) 情報処理装置、サーバ装置、情報処理システム、制御方法及びコンピュータプログラム
JP2015022521A (ja) セキュアブート方法、組み込み機器、セキュアブート装置およびセキュアブートプログラム
CN104899524B (zh) 中央处理器和验证主机板数据的方法
JP7411902B1 (ja) 情報処理装置、情報処理装置の制御方法及びプログラム
US20200233676A1 (en) Bios management device, bios management system, bios management method, and bios management program-stored recording medium
JP2003288128A (ja) 外部接続デバイスにおけるアプリケーションの適正使用方法及び外部接続デバイス
JP6622360B2 (ja) 情報処理装置
TWI654559B (zh) 應用多核心處理器執行安全確認的開機方法與其系統
JP6591832B2 (ja) ソフトウェア改ざん検知システム、及びネットワークセキュリティシステム
TW201319862A (zh) 嵌入式元件與控制方法
JP7341376B2 (ja) 情報処理装置、情報処理方法、及び、情報処理プログラム
JP2004280581A (ja) ソフトウェアの不正使用防止方法
CN111353150A (zh) 一种可信启动方法、装置、电子设备及可读存储介质
WO2024057571A1 (ja) 情報処理装置、情報処理装置の制御方法及びプログラム
TWI797932B (zh) 韌體驗證系統及韌體驗證方法
WO2023223445A1 (ja) 攻撃検知装置、攻撃検知方法、及び攻撃検知プログラム
CN111046449B (zh) 数据显示控制方法、装置及电子设备
TWI740214B (zh) 伺服器啟動方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100226

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111228

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120207

A045 Written measure of dismissal of application [lapsed due to lack of payment]

Free format text: JAPANESE INTERMEDIATE CODE: A045

Effective date: 20120626