(57)【要約】【課題】システムの起動時に使用されるファイルの完全性を確認し、安定した状態でシステムが起動することができる。【解決手段】確認システムは、システムの起動時に使用されるファイルについて事前に生成されたファイルのデータそのものを特徴づける第１のデータと、ファイルの識別子とを対応付けた正解データ１２２と、ファイルの識別子を特定して該特定したファイルに対する第１のデータを生成し、該生成した第１のデータと正解データ１２２の第１のデータとをファイルごとに照合していずれかのファイルについて生成した第１のデータと正解データ１２２の第１のデータとが一致しない場合には実行部１２１にシステムの起動を中断させる完全性確認部１２３と、を有するブートイメージ１２を有する。【選択図】図１
2019003275.tif 000002
【特許請求の範囲】
【請求項１】
システム起動時に使用されるファイルの完全性を確認する確認システムであって、
前記ファイルの識別子を受け付け、該受け付けた識別子を有するファイルのデータを特徴づける第１のデータを生成し、該生成した第１のデータを前記識別子の送信元に返却する生成部と、
前記生成部に対して前記ファイルの識別子を送信し、前記生成部から返却された第１のデータの生成結果を前記ファイルの識別子に対応付けた正解データを作成する正解作成部と、
前記正解データと、段階的に前記ファイルを起動して前記システムの起動を実行する実行部と、前記システムの起動時に使用されるファイルの識別子を特定して該特定したファイルに対する第１のデータを生成し、該生成したデータと前記正解データのデータとをファイルごとに照合していずれかの前記ファイルについて前記生成した第１のデータと前記正解データの第１のデータとが一致しない場合には前記実行部に前記システムの起動を中断させる完全性確認部と、を有するブートイメージと、
を有することを特徴とする確認システム。
【請求項２】
前記ブートイメージは、一度しか書き込みができない媒体に書き込まれている、または、書き込みが禁止される設定であることを特徴とする請求項１に記載の確認システム。
【請求項３】
前記ファイルは、前記システムの起動中に実行される実行ファイルまたは前記実行ファイルの実行順序を設定した設定ファイルであり、非ＲＯＭ領域、または、書き換え可能なストレージ領域に格納されることを特徴とする請求項１または２に記載の確認システム。
【請求項４】
前記第１のデータは、前記ファイルのデータのハッシュ値であることを特徴とする請求項１〜３のいずれか一つに記載の確認システム。
【請求項５】
ブートイメージを有する制御装置であって、
前記ブートイメージは、
システムの起動時に使用されるファイルについて事前に生成された前記ファイルのデータを特徴づける第１のデータと、前記ファイルの識別子とを対応付けた正解データと、
段階的に前記ファイルを起動して前記システムの起動を実行する実行部と、
前記システムの起動時に、前記システムの起動時に使用されるファイルの識別子を特定して該特定したファイルに対する第１のデータを生成し、該生成した第１のデータと前記正解データの第１のデータとをファイルごとに照合していずれかの前記ファイルについて前記生成した第１のデータと前記正解データの第１のデータとが一致しない場合には前記実行部に前記システムの起動を中断させる完全性確認部と、
を有することを特徴とする制御装置。
【請求項６】
システム起動時に使用されるファイルの完全性を確認する確認システムが実行する確認方法であって、
前記確認システムは、システムの起動時に使用されるファイルについて事前に計算された各ファイルのデータを特徴づける第１のデータと、前記ファイルの識別子とを対応付けた正解データを有するブートイメージを有し、
前記ファイルの識別子を送信先に送信する送信工程と、
前記ファイルの識別子を受け付け、該受け付けた識別子を有するファイルのデータそのものを特徴づける第１のデータを生成する第１の生成工程と、
前記第１のデータの生成結果を前記ファイルの識別子に対応付けた正解データを生成する第２の生成工程と、
段階的に前記ファイル群のファイルを起動して前記システムの起動を実行する実行工程と、
前記システムの起動時に使用されるファイルの識別子を特定して該特定したファイルに対する第１のデータを生成する第３の生成工程と、
前記第３の生成工程において生成された第１のデータと前記正解データの第１のデータとをファイルごとに照合する照合工程と、
前記照合工程において、いずれかの前記ファイルについて前記第３の生成工程において生成された第１のデータと前記正解データの第１のデータとが一致しない場合には、前記実行工程において実行される前記システムの起動を中断させる完全性確認工程と、
を含んだことを特徴とする確認方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、確認システム、制御装置及び確認方法に関する。
【背景技術】
【０００２】
システムの起動中に実行されたプログラムの完全性を確認する従来技術として、Trusted  BootやLinux（登録商標）-IMAがある（例えば、非特許文献１参照）。これらの技術では、システム起動中に実行されたプログラムの実行ファイルの完全性を計測し、計測結果を逐次更新する。
【０００３】
また、システムの起動中に、完全性が確認されたプログラムのみ実行を許可する従来技術として、UEFI  SecureBoot（及びAppLocker）がある（例えば、非特許文献２，３参照）。この技術では、実行ファイルに対して事前に電子署名を付与し、該実行ファイルの実行前に署名検証を行い、検証が失敗した際には、当該プログラムの実行を中断する。このような検証を連鎖させていくことにより、システムの起動中、プログラムの検証が失敗するまで、完全性が確認されたプログラムが実行されていく。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】IPA,  “情報セキュリティ技術動向調査タスクグループ報告書（2009  年上期）”,  pp.11-13,  2009  年  9  月,［online］，［平成２９年５月３１日検索］，インターネット＜ＵＲＬ：https://www.ipa.go.jp/security/fy21/reports/tech1-tg/indexa.html＞
【非特許文献２】UEFI  “Unified  Extensible  Firmware  Interface  Specification  Version  2.6”,  pp.1803-1808,  January,  2016，［online］，［平成２９年５月３１日検索］，インターネット＜ＵＲＬ：http://www.uefi.org/sites/default/files/resources/UEFI%20Spec%202_6.pdf＞
【非特許文献３】MSDNライブラリ,  “AppLocker  規則条件の種類について”,［online］，［平成２９年５月３１日検索］，インターネット＜ＵＲＬ：https://msdn.microsoft.com/ja-jp/library/ee460959(v=ws.11).aspx＞
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術では、プログラム群の実行順序が改ざんされ、予期しない順序で各実行ファイルが起動されてしまう状態を完全に回避することが難しい。このように、プログラム群の実行順序が改ざんされ、予期しない順序で各実行ファイルが起動されてしまうと、システムの安定動作が保証されない可能性がある。すなわち、従来技術を用いても、システムが不安定な状態で起動してしまうおそれがある。
【０００６】
例えば、Trusted  BootやLinux-IMAでは、計測結果を、事前に計測した正解値と比較することによって、起動中に実行されたファイルや、その実行順序に改ざんがあった場合、改ざんの事実を事後的に確認することができる。しかしながら、Trusted  BootやLinux-IMAでは、改ざんされたファイルであっても実行自体は阻止されないといった問題点がある。
【０００７】
一方、UEFI  SecureBootやAppLockerは、実行ファイルの改ざん時にプログラムの起動を中断することが可能である。しかしながら、UEFI  SecureBootは、未署名の実行ファイルは、署名検証ができないため、UEFI  SecureBootでは、改ざん検知の対象外である。また、UEFI  SecureBootは、署名済の実行ファイルであっても、署名検証が成功するような実行ファイルに差し替えるような攻撃は検知できない。例えば、UEFI  SecureBootは、古いバージョンのプログラムへの差し替え等による攻撃は検知できない。AppLockerでは、実行ファイルのハッシュ値を事前に登録し、当該実行ファイルから計算したハッシュ値が一致しない場合に、当該実行ファイルの起動を取りやめることも可能である。しかし、その実行ファイルが、事前に登録したハッシュ値ごと差し替えられてしまうと、同様の問題が発生する。このため、UEFI  SecureBootやAppLockerでは、このように実行ファイルが改ざんされた場合、この実行ファイルの完全性が確保されていないにもかかわらず、起動されてしまうという問題点がある。
【０００８】
そして、「Trusted  Boot（及びLinux-IMA）」と「UEFI  SecureBoot（及びAppLocker）」とを組み合わせて利用することも考えられる。しかしながら、上記の問題点により、これらを組み合わせたとしても、システム起動時に実行される一連のプログラム群の中で、未署名のファイルの改ざんや、署名済のファイルに対し署名ごと差し替えるような攻撃があった場合、これらの事象を検知してファイルの実行を中断することができない。したがって、「Trusted  Boot（及びLinux-IMA）」と「UEFI  SecureBoot（及びAppLocker）」とを組み合わせても、システム起動時に実行される一連のプログラム群に関し、その実行順序と実行ファイルの完全性とを確保することができない。例えば、実行順序を定義する設定ファイルを改ざんすることにより、本来起動対象とすべき実行ファイルを、起動対象外にすることも可能である。
【０００９】
本発明は、上記に鑑みてなされたものであって、システムの起動時に使用されるファイルの完全性を確認し、安定した状態でシステムが起動することができる確認システム、制御装置及び確認方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決し、目的を達成するために、本発明に係る確認システムは、システム起動時に使用されるファイルの完全性を確認する確認システムであって、ファイルの識別子を受け付け、該受け付けた識別子を有するファイルのデータそのものを特徴づける第１のデータを生成し、該生成したデータを識別子の送信元に返却する生成部と、生成部に対してファイルの識別子を送信し、生成部から返却された第１のデータの生成結果をファイルの識別子に対応付けた正解データを作成する正解作成部と、正解データと、段階的にファイルを起動してシステムの起動を実行する実行部と、システムの起動時に使用されるファイルの識別子を特定して該特定したファイルに対する第１のデータを生成し、該生成したデータと正解データのデータとをファイルごとに照合していずれかのファイルについて生成した第１のデータと正解データの第１のデータとが一致しない場合には実行部にシステムの起動を中断させる完全性確認部と、を有するブートイメージと、を有することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、システムの起動時に使用されるファイルの完全性を確認し、安定した状態でシステムが起動することができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施の形態に係る確認システムの概略構成を示す模式図である。
【図２】図２は、図１に示す正解データのデータ構成の一例を示す図である。
【図３】図３は、図１に示す確認システムによる正解データ作成処理の処理手順を示すシーケンス図である。
【図４】図４は、図１に示す確認システムにシステムの起動時におけるファイルの完全性確認処理の処理手順を示すシーケンス図である。
【図５】図５は、プログラムが実行されることにより、完全性確認システムと正解作成システムが実現されるコンピュータの一例を示す図である。
【発明を実施するための形態】
【００１３】
以下、図面を参照して、本発明の一実施の形態を詳細に説明する。なお、この実施の形態により本発明が限定されるものではない。また、図面の記載において、同一部分には同一の符号を付して示している。
【００１４】
［実施の形態］
まず、実施の形態に係る確認システムについて、概略構成、完全性確認処理の流れ及び具体例を説明する。本実施の形態は、システムの起動中に実行されるブートシーケンスに関し、非ＲＯＭ領域または書き換え可能なストレージ領域等に格納されたファイルの利用を伴うサーバ機器、及びクライアント機器に対してファイルの完全性を確認するシステムである。確認対象のファイルは、プログラムの実行ファイル群、及びこれらの実行順序を既定する設定ファイル等である。実施の形態によれば、ブートシーケンスの初期段階で、以降のブートシーケンスで実行されるプログラム、及びそれらの実行順序の完全性を確保することによって、安定した状態でのシステム起動を実現する。
【００１５】
図１は、実施の形態に係る確認システムの概略構成を示す模式図である。図１に示すように、実施の形態に係る確認システムは、完全性確認システム１０（制御装置）と、正解作成システム２０とを有する。完全性確認システム１０及び正解作成システム２０は、ワークステーションやパソコン等の汎用コンピュータで実現され、ＣＰＵ（Central  Processing  Unit）等の演算処理装置がメモリに記憶された処理プログラムを実行することによって、以下の各処理を実行する。
【００１６】
［完全性確認システムの構成］
まず、完全性確認システム１０の構成について説明する。完全性確認システム１０は、設定ファイルＡ及び実行ファイルＢ，Ｃと、正解計算部１１（生成部）と、ブートイメージ１２と、を有する。
【００１７】
設定ファイルＡ及び実行ファイルＢ，Ｃは、完全性確認システム１０のシステム起動時に使用されるファイルである。設定ファイルＡ及び実行ファイルＢ，Ｃは、完全性確認システム１０の非ＲＯＭ領域または書き換え可能なストレージ領域等に格納される。設定ファイルＡは、実行ファイルＢ，Ｃの実行順序を既定する設定ファイルである。実行ファイルＢ，Ｃは、プログラムの実行ファイルである。設定ファイルＡ及び実行ファイルＢ，Ｃは、完全性確認システム１０に格納されたファイル群の一例であり、システム起動時に使用されるファイルは、図１に示す種別及びファイル数に限定されない。
【００１８】
正解計算部１１は、完全性確認システム１０の起動時に使用されるファイルの識別子を受け付け、該受け付けた識別子のファイルのデータを特徴づける第１のデータを生成し、該生成したデータを識別子の送信元に返却する。
【００１９】
具体的には、正解計算部１１は、第１のデータとして、ファイルのデータのハッシュ値を計算する。また、正解計算部１１は、正解作成部２１（後述）よりファイルの識別子を受け付ける。正解計算部１１が受け付ける識別子は、一つでも複数でもよい。正解計算部１１は、複数の場合は、ハッシュ値の計算結果も複数返却する。なお、ファイルの識別子は、全機能部で共通のものを用いる。例えば、ファイルの識別子は、ファイルパスやファイルポインタなどである。また、正解計算部１１が有するハッシュ計算の具体的なアルゴリズムについては限定しないが、正解作成部２１（後述）及び完全性確認部１２３（後述）に対応するアルゴリズムを用いる。
【００２０】
ブートイメージ１２は、完全性確認システム１０の起動時に使用されるファイルの第１のデータを、ブートイメージ１２内に格納することによって、ブートイメージ１２の提供元によるファイルの完全性確保を実現する。
【００２１】
このブートイメージ１２は、一度しか書き込みが出来ない媒体に書き込まれる。または、ブートイメージ１２に対し、書き込みが出来ないようアクセス権設定を施される。具体的には、例えば、ＣＤ−ＲＯＭ等の媒体にブートイメージ１２を書き込む、ブートイメージ１２を格納したメディアに対してライトプロテクトを施す、ＯＳのパーミッション設定を変更する等の手段などがある。完全性確認システム１０の起動時には、このように書き換えができないブートイメージ１２を用いて、システムを起動する。ブートイメージ１２は、実行部１２１、正解データ１２２及び完全性確認部１２３を有する。
【００２２】
実行部１２１は、システムの起動時に使用されるファイルを段階的に起動して完全性確認システム１０のシステムの起動を実行する。まず、実行部１２１は、完全性の確保対象とするファイルに関して、該ファイルの識別子とともに、完全性確認部１２３（後述）に対し完全性の確認依頼を要求する。続いて、実行部１２１は、完全性確認部１２３から受け取る通知に応じて、以下の処理を行う。
【００２３】
例えば、実行部１２１は、完全性確認部１２３から完全性確認完了通知を受け取った場合には、設定ファイルＡを読み込み、設定ファイルＡによって定義された順序にしたがって、段階的に実行ファイルＢ，Ｃを起動していく。一方、実行部１２１は、完全性確認部１２３からシステム強制終了命令を受け取った場合には、設定ファイルＡは読み込まず、完全性確認システム１０のシステムを強制終了する。なお、実行部１２１は、完全性確認システム１０のブートイメージ１２に格納されており、ブートイメージ１２から展開されたプログラムとしてシステムの起動中に実行される。
【００２４】
正解データ１２２は、完全性確認システム１０のシステムの起動時に使用されるファイルについて事前に生成されたファイルのデータを特徴づける第１のデータと、ファイルの識別子とを対応付けたデータ構成を有する。正解データ１２２は、正解作成システム２０（後述）の正解作成部２１（後述）によって作成され、ブートイメージ１２に格納されたものである。なお、正解データ１２２は、正解作成システム２０（後述）の正解データ２２（後述）と同一の情報である。
【００２５】
図２は、図１に示す正解データ１２２のデータ構成の一例を示す図である。図２に示すように、正解データ１２２は、ファイルの識別子であるファイルパスと、各ファイルのデータのハッシュ値の事前計算値とのペアで構成される。また、ハッシュ値の事前計算値は、対応する識別子のファイルに対して、完全性確認部１２３（後述）が事前に計算したハッシュ値である。
【００２６】
例えば、図２に示す正解データ１２２では、識別子「Ａ」のファイルには、ハッシュ値の事前計算値「ＨＡ」が対応付けられている。識別子「Ｂ」のファイルには、ハッシュ値の事前計算値「ＨＢ」が対応付けられている。識別子「Ｃ」のファイルには、ハッシュ値の事前計算値「ＨＣ」が対応付けられている。このような正解データ１２２は、次に説明する完全性確認部１２３の各処理において使用される。
【００２７】
完全性確認部１２３は、システムの起動時に、システムの起動時に使用されるファイルの識別子を特定する。完全性確認部１２３は、特定したファイルに対する第１のデータを生成する。続いて、完全性確認部１２３は、生成した第１のデータと正解データ１２２の第１のデータとをファイルごとに照合する。そして、完全性確認部１２３は、いずれかのファイルについて、生成した第１のデータと正解データ１２２の第１のデータとが一致しない場合に実行部１２１にシステムの起動を中断させる。
【００２８】
具体的には、完全性確認部１２３は、実行部１２１によるシステム起動時に使用するファイルの完全性の確認依頼を受けることによって実行部１２１よりファイルの識別子を受け付ける。完全性確認部１２３は、受け付けた識別子のファイルを特定し、該ファイルのデータのハッシュ値を計算する。完全性確認部１２３は、正解データ１２２内に格納されているハッシュ値と照合し、照合結果と一致するか否かを判定する。
【００２９】
続いて、完全性確認部１２３は、受け付けた識別子のファイルが特定できなかった場合、または、計算したファイルのハッシュ値が正解データ１２２のハッシュ値と一致しなかった場合、実行部１２１に対して、システムの強制終了命令を返却する。これに対し、完全性確認部１２３は、いずれにも該当せず、完全性が確認できた場合、実行部１２１に対して、完全性確認完了通知を返却する。
【００３０】
なお、完全性確認部１２３が受け付ける識別子は一つ以上とし、二つ以上複数の場合には、複数のファイルに対して前述の処理を行う。また、完全性確認部１２３は、完全性確認システム１０のブートイメージ１２に格納されており、ブートイメージ１２から展開されたプログラムとしてシステムの起動中に、実行部１２１から呼び出される。
【００３１】
［正解作成システムの構成］
次、図１を参照して、正解作成システム２０の構成について説明する。正解作成システム２０は、正解作成部２１と正解データ２２とを有する。
【００３２】
正解作成部２１は、完全性確認システム１０の正解計算部１１に対してファイルの識別子を送信する。そして、正解作成部２１は、正解計算部１１から返却された第１のデータの生成結果をファイルの識別子に対応付けた正解データ２２を作成する。
【００３３】
具体的には、正解作成部２１は、正解計算部１１に対してファイルの識別子を送信し、完全性確認システム１０から応答として返却されたハッシュ値の計算結果を、識別子と対応付けて正解データ２２に格納する。格納された「ファイルの識別子−ハッシュ値」のペアは、完全性確認システム１０内において、識別子が示すファイルから計算されるべきハッシュ値の正解値として取り扱われる。
【００３４】
なお、正解作成部２１は、図１では、一例として、正解作成システム２０内の機能部として配置するが、必ずしも完全性確認システム１０と独立したシステムでなくてもよく、完全性確認システム１０内の機能部としてもよい。
【００３５】
正解データ２２は、正解データ１２２と同一の情報であり、正解作成部２１で作成された後に、完全性確認システム１０のブートイメージ１２に格納される。なお、正解データ２２のブートイメージへの１２への格納は、例えば、ＣＤ−ＲＯＭやＵＳＢメモリ等の物理メディアや、ネットワークなどの通信手段を利用して手動で格納してもよい。
【００３６】
［正解データ作成処理］
確認システムが実行する各処理のうち、まず、ブートイメージ１２に格納する正解データ１２２を事前に作成する処理について説明する。ここでは、第１のデータとして、ファイルのデータのハッシュ値を適用した場合を例に説明する。図３は、図１に示す確認システムによる正解データ作成処理の処理手順を示すシーケンス図である。
【００３７】
図３に示すように、正解作成システム２０の正解作成部２１は、完全性確認システム１０の正解計算部１１に対して、ファイルの識別子を送信する（ステップＳ１）。具体的には、正解作成部２１は、ファイルの識別子として、「Ａ」，「Ｂ」，「Ｃ」を送信する。正解計算部１１は、ファイルの識別子を受け付け、この受け付けた識別子を有するファイルのデータのハッシュ値の事前計算を行う（ステップＳ２）（第１の生成工程）。正解計算部１１は、例えば、識別子「Ａ」，「Ｂ」，「Ｃ」の各ファイルについて、それぞれ、ハッシュ値「ＨＡ」，「ＨＢ」，「ＨＣ」を計算する。そして、正解計算部１１は、各ハッシュ値の事前計算値「ＨＡ」，「ＨＢ」，「ＨＣ」を正解作成部２１に返却する（ステップＳ３）。
【００３８】
正解作成部２１は、正解計算部１１から返却されたハッシュ値の事前計算結果をファイルの識別子に対応付けた正解データ２２を作成する（ステップＳ４）（第２の生成工程）。具体的には、ファイルの識別子「Ａ」，「Ｂ」，「Ｃ」について、それぞれハッシュ値の事前計算値「ＨＡ」，「ＨＢ」，「ＨＣ」が対応付けられた正解データ２２を生成する（図２参照）。そして、正解作成部２１は、作成した正解データ２２を、ブートイメージ１２に格納する（ステップＳ５）。
【００３９】
［確認処理］
次に、確認システムが実行する各処理のうち、システムの起動時におけるファイルの完全性確認の処理について説明する。図４は、図１に示す確認システムにシステムの起動時におけるファイルの完全性確認処理の処理手順を示すシーケンス図である。
【００４０】
図４に示すように、実行部１２１は、完全性確認部１２３に、システム起動時に使用する実行ファイルＢ，Ｃの完全性の確認依頼を要求する（ステップＳ１１）。完全性確認部１２３は、実行ファイルの完全性の確認依頼を受けると、正解データ１２２の識別子を参照し（ステップＳ１２）、実行ファイルＢ，Ｃ及び設定ファイルＡの識別子が全て正解データ１２２に登録されているか否かを判定する（ステップＳ１３）。
【００４１】
完全性確認部１２３は、実行ファイルＢ，Ｃ及び設定ファイルＡの識別子が一つでも登録されていないと判定した場合（ステップＳ１３：Ｎｏ）、実行部１２１に、システムの強制終了命令を返却する（ステップＳ１４）。実行部１２１は、完全性確認部１２３からのシステム強制終了命令を受けて、設定ファイルＡは読み込まず、完全性確認システム１０のシステムを強制終了する（ステップＳ１５）。
【００４２】
一方、完全性確認部１２３は、実行ファイルＢ，Ｃ及び設定ファイルＡの識別子が全て登録されていると判定した場合（ステップＳ１３：Ｙｅｓ）、設定ファイルＡ及び実行ファイルＢ，Ｃのデータの各ハッシュ値の計算を行い、それぞれのファイルのハッシュ値「Ｈ’Ａ」，「Ｈ’Ｂ」，「Ｈ’Ｃ」，取得する（ステップＳ１６〜ステップＳ１８）（第３の生成工程）。そして、完全性確認部１２３は、正解データ１２２のハッシュ値事前計算値を参照し（ステップＳ１９）、設定ファイルＡ及び実行ファイルＢ，Ｃのハッシュ値の事前計算値「ＨＡ」，「ＨＢ」，「ＨＣ」を取得する。
【００４３】
続いて、完全性確認部１２３は、全てのＸ（Ｘ＝Ａ，Ｂ，Ｃ）において、「Ｈ’Ｘ」＝「ＨＸ」であるか否かを判定する（ステップＳ２０）。すなわち、完全性確認部１２３は、ファイルごとに、設定ファイルＡ及び実行ファイルＢ，Ｃについて計算したハッシュ値と、正解データ１２２におけるハッシュ値の事前計算値とを照合する。
【００４４】
まず、完全性確認部１２３は、全てのＸ（Ｘ＝Ａ，Ｂ，Ｃ）において、「Ｈ’Ｘ」＝「ＨＸ」でないと判定した場合（ステップＳ２０：Ｎｏ）について説明する。すなわち、いずれかのファイルについて計算したハッシュ値と正解データ１２２のハッシュ値の事前計算値とが一致しない場合である。この場合、完全性確認部１２３は、実行部１２１に、システムの強制終了命令を返却する（ステップＳ１４）。実行部１２１は、完全性確認部１２３からのシステム強制終了命令を受けて、設定ファイルＡは読み込まず、完全性確認システム１０のシステムを強制終了する（ステップＳ１５）。
【００４５】
これに対し、完全性確認部１２３は、全てのＸ（Ｘ＝Ａ，Ｂ，Ｃ）において、「Ｈ’Ｘ」＝「ＨＸ」であると判定した場合（ステップＳ２０：Ｙｅｓ）について説明する。すなわち、全てのファイルについて、計算したハッシュ値と、正解データ１２２のハッシュ値の事前計算値とが一致した場合である。この場合、完全性確認部１２３は、実行部１２１に、完全性確認完了通知を返却する（ステップＳ２１）。実行部１２１は、この完全性確認完了通知を受けて、設定ファイルＡを読み込み（ステップＳ２２）、設定ファイルＡによって定義された順序に従って、段階的に実行ファイルＢ，Ｃを起動していく（ステップＳ２３，Ｓ２４）。
【００４６】
［実施の形態の効果］
このように、実施の形態に係る確認システムは、完全性確認システム１０のブートイメージ１２が、システムの起動時に使用されるファイルの識別子を特定して該特定したファイルに対する第１のデータを生成する。そして、ブートイメージ１２は、生成したデータと正解データ１２２のデータとをファイルごとに照合し、いずれかのファイルについて、生成した第１のデータと正解データの第１のデータとが一致しない場合には実行部１２１にシステムの起動を中断させている。
【００４７】
具体的には、本実施の形態では、システムの起動中、ブートイメージ１２の展開後ただちにブートイメージ１２内に格納した識別子からファイル群を特定し、ファイルごとのハッシュ値を再計算する。そして、ブートイメージ１２は、計算したファイルのハッシュ値と事前に計算したファイルのハッシュ値を照合する。
【００４８】
ここで、ファイルの完全性が喪失している場合には、再計算したハッシュ値が、事前に計算したハッシュ値（正解値）と異なる値となる。また、署名が付与されたファイルの場合には、ファイルと署名の両方が入れ替えられた場合であっても再計算したハッシュ値が異なる値となる。このため、本実施の形態では、ハッシュ値の事前計算値と、再計算値との一致性を判断することによって、署名の有無によらずファイルの改ざんを検知することができる。したがって、ブートイメージ１２は、一つでも照合結果が一致しない場合には、システム起動中に実行される実行ファイル及び実行順序のいずれかの完全性が喪失したと判定する。この場合、ブートイメージ１２は、ただちにシステムの起動を中断する。
【００４９】
一方、ブートイメージ１２は、照合結果が全て一致した場合には、システム起動中に実行される実行ファイル及び実行順序の完全性が確保されていると判定する。このように、実行ファイル及び実行順序の完全性が確保されている場合にのみ、ブートイメージ１２は、ただちに実行順序の設定ファイルを読み込み、各実行ファイルを、当該設定ファイルで定められた実行順序に従って実行する。
【００５０】
このように、本実施の形態では、ブートシーケンスの初期段階で、以降のブートシーケンスで実行されるプログラム、及びそれらの実行順序の完全性が確認できるため、システムが不安定な状態で起動してしまうリスクを軽減することができる。そして、本実施の形態では、ブートイメージ１２外に存在するファイル群とブートイメージ１２とを対応付けることにより、独立して管理されていたファイル群とブートイメージ１２とが、一体で管理できるようになる。このため、本実施の形態によれば、ブートイメージ１２とファイル群のバージョンの整合性（例えば、バージョン違い等）とに異常が発生した場合であっても、その異常を検知することができる。
【００５１】
また、本実施の形態では、完全性の確保対象とするファイル群に対し、各ファイルのハファイルのデータそのものを特徴づける第１のデータを事前に生成し、これらの第１のデータを、完全性の確保対象とするファイル群に対する正解値とする。すなわち、本実施の形態では、完全性の確保対象とする各ファイルのデータについて計算したハッシュ値は、各ファイルの識別子とペアで予めブートイメージ１２内に格納しておく。
【００５２】
これによって、ブートイメージ１２の提供元は、ハッシュ値の計算対象となったファイル群が、非ＲＯＭ領域や書き換え可能なストレージ領域等のようにブートイメージ１２外にあった場合でも、これらの各ファイルをブートイメージ１２に対応付けて管理することができ、ファイル群の完全性を確保することができる。
【００５３】
そして、本実施の形態では、ブートイメージ１２を、一度しか書き込みが出来ない媒体に書き込む。或いは、ブートイメージ１２のファイルに対し、書き換えを禁止するようなアクセス権設定を施す。したがって、本実施の形態では、システムの起動時には、このように書き換えができないブートイメージを用いて、システムを起動することができる。
【００５４】
上記のように、本実施の形態によれば、システムの起動中に実行される一連のプログラム群の実行順序と実行ファイルの完全性を確保することができる。そして、本実施の形態では、完全性の確保対象とするファイル群は、ブートイメージ１２の作成者が決定可能である。このため、ブートイメージ１２の作成者は、任意のプログラム群に対してその実行順序と実行ファイルの完全性とを確保し、予め規定したブートシーケンスから改ざんされたブートシーケンスの実行を阻止することができる。
【００５５】
従って、本実施の形態によれば、システム起動時に実行される一連のプログラム群に関し、その実行順序と実行ファイルの完全性を確保することが可能になるため、安定した状態でシステムが起動することができる。
【００５６】
［実施の形態のシステム構成について］
図１に示した完全性確認システム１０と、正解作成システム２０と各構成要素は機能概念的なものであり、必ずしも物理的に図示のように構成されていることを要しない。すなわち、完全性確認システム１０と、正解作成システム２０との機能の分散及び統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散または統合して構成することができる。
【００５７】
また、完全性確認システム１０と、正解作成システム２０とにおいておこなわれる各処理は、全部または任意の一部が、ＣＰＵ、ＧＰＵ（Graphics  Processing  Unit）、及び、ＣＰＵ、ＧＰＵにより解析実行されるプログラムにて実現されてもよい。また、完全性確認システム１０と、正解作成システム２０においておこなわれる各処理は、ワイヤードロジックによるハードウェアとして実現されてもよい。
【００５８】
また、実施の形態において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的に行うこともできる。もしくは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上述及び図示の処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて適宜変更することができる。
【００５９】
［プログラム］
図５は、プログラムが実行されることにより、完全性確認システム１０と正解作成システム２０とが実現されるコンピュータの一例を示す図である。コンピュータ１０００は、例えば、メモリ１０１０、ＣＰＵ１０２０を有する。また、コンピュータ１０００は、ハードディスクドライブインタフェース１０３０、ディスクドライブインタフェース１０４０、シリアルポートインタフェース１０５０、ビデオアダプタ１０６０、ネットワークインタフェース１０７０を有する。これらの各部は、バス１０８０によって接続される。
【００６０】
メモリ１０１０は、ＲＯＭ（Read  Only  Memory）１０１１及びＲＡＭ１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１１００に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１１００に挿入される。シリアルポートインタフェース１０５０は、例えばマウス１１１０、キーボード１１２０に接続される。ビデオアダプタ１０６０は、例えばディスプレイ１１３０に接続される。
【００６１】
ハードディスクドライブ１０９０は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、完全性確認システム１０と、正解作成システム２０の各処理を規定するプログラムは、コンピュータ１０００により実行可能なコードが記述されたプログラムモジュール１０９３として実装される。プログラムモジュール１０９３は、例えばハードディスクドライブ１０９０に記憶される。例えば、完全性確認システム１０と、正解作成システム２０とにおける機能構成と同様の処理を実行するためのプログラムモジュール１０９３が、ハードディスクドライブ１０９０に記憶される。なお、ハードディスクドライブ１０９０は、ＳＳＤにより代替されてもよい。
【００６２】
また、上述した実施の形態の処理で用いられる設定データは、プログラムデータ１０９４として、例えばメモリ１０１０やハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０が、メモリ１０１０やハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出して実行する。
【００６３】
なお、プログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ１１００等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、プログラムモジュール１０９３及びプログラムデータ１０９４は、ネットワーク（ＬＡＮ、ＷＡＮ等）を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール１０９３及びプログラムデータ１０９４は、他のコンピュータから、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【００６４】
以上、本発明者によってなされた発明を適用した実施の形態について説明したが、本実施の形態による本発明の開示の一部をなす記述及び図面により本発明は限定されることはない。すなわち、本実施の形態に基づいて当業者等によりなされる他の実施の形態、実施例及び運用技術等は全て本発明の範疇に含まれる。
【符号の説明】
【００６５】
１０  完全性確認システム
１１  正解計算部
１２  ブートイメージ
２０  正解作成システム
２１  正解作成部
２２，１２２  正解データ
１２１  実行部
１２３  完全性確認部
【図１】
2019003275.tif 000003
【図２】
2019003275.tif 000004
【図３】
2019003275.tif 000005
【図４】
2019003275.tif 000006
【図５】
2019003275.tif 000007