(57)【要約】  構成レジスタ値取得部（５４）が取得する第１の構成レジスタ値と記憶部（６０）に第１の起動制御部に対応させて格納される第１の構成レジスタ値に係る第１の構成レジスタ値の組の一致、又は、構成レジスタ値取得部（５４）が取得する第２の構成レジスタ値と記憶部（６０）に第２の起動制御部に対応させて格納される第２の構成レジスタ値に係る第２の構成レジスタ値の組の一致を検出した場合に、情報処理装置の起動処理を継続するように構成することにより、一部の処理部を同じ構成を有する予備の処理部と交換する場合においても、起動処理を完了させることができ、且つ、起動制御部の機能を有効に使用することができるようにする
2010113266.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置において、
ハッシュ演算を行う第１のハッシュ演算部と起動制御を行う第１の起動制御部と第１のハードウェア資源を備える第１の処理部と、
ハッシュ演算を行う第２のハッシュ演算部と起動制御を行う第２の起動制御部と第２のハードウェア資源を備える第２の処理部と、
前記第１及び第２のハードウェア資源の構成情報をそれぞれ収集する構成情報収集部と、
前記構成情報収集部が収集する前記第１のハードウェア資源の構成情報を、前記第１のハッシュ演算部がハッシュ演算を行い生成する第１の構成レジスタ値を、前記第１の起動制御部が備える第１の構成レジスタ部に格納させるとともに、前記構成情報収集部が収集する前記第２のハードウェア資源の構成情報を、前記第２のハッシュ演算部がハッシュ演算を行い生成する第２の構成レジスタ値を、前記第２の起動制御部が備える第２の構成レジスタ部に格納させる構成レジスタ制御部と、
前記情報処理装置の構成変更を検出しないで前記情報処理装置を起動する場合に、前記情報処理装置の構成変更を検出しない場合に、前記構成レジスタ制御部が前記第１の構成レジスタ部から読み出す第１の構成レジスタ値を前記第１の起動制御部に対応付けて格納するとともに、前記構成レジスタ制御部が前記第２の構成レジスタ部から読み出す第２の構成レジスタ値を、前記第２の起動制御部に対応させて格納する記憶部と、
前記情報処理装置の構成変更を検出して前記情報処理装置を起動する場合に、前記第1の構成レジスタ部に格納される第１の構成レジスタ値と、第１の構成レジスタ部に格納される第２の構成レジスタ値を、それぞれ取得する構成レジスタ値取得部と、
前記情報処理装置の構成変更を検出して前記情報処理装置を起動する場合に、前記構成レジスタ値取得部が取得する第１の構成レジスタ値を、前記記憶部に前記第１の起動制御部に対応させて格納される第１の構成レジスタ値と比較するとともに、前記構成レジスタ値取得部が取得する第２の構成レジスタ値を、前記記憶部に前記第２の起動制御部に対応させて格納される第２の構成レジスタ値と比較する比較部と、
前記比較部が、前記構成レジスタ値取得部が取得する第１の構成レジスタ値と前記記憶部に前記第１の起動制御部に対応させて格納される第１の構成レジスタ値に係る第１の構成レジスタ値の組の一致、又は、前記構成レジスタ値取得部が取得する第２の構成レジスタ値と前記記憶部に前記第２の起動制御部に対応させて格納される第２の構成レジスタ値に係る第２の構成レジスタ値の組の一致を検出した場合に、前記情報処理装置の起動処理を継続する継続処理制御部を有することを特徴とする情報処理装置。
【請求項２】
前記情報処理装置において、
前記比較部が、前記第１の構成レジスタの組、又は、前記第２の構成レジスタの組のいずれか一の組の一致と他の組の不一致を検出した場合に、不一致が検出された組の起動制御部に対応させて格納された構成レジスタ値を、前記構成レジスタ値取得部が取得した対応する構成レジスタ値で更新する更新部を有することを特徴とする請求項１記載の情報処理装置。
【請求項３】
ハッシュ演算を行う第１のハッシュ演算部と起動制御を行う第１の起動制御部と第１のハードウェア資源を備える第１の処理部と、ハッシュ演算を行う第２のハッシュ演算部と起動制御を行う第２の起動制御部と第２のハードウェア資源を備える第２の処理部を有する情報処理装置の起動方法において、
前記情報処理装置の起動時に前記情報処理装置の構成変更を検出するか否かを決定するステップと、
前記情報処理装置が有する構成情報収集部が、前記第１及び第２のハードウェア資源の構成情報をそれぞれ収集するステップと、
前記情報処理装置が有する構成レジスタ制御部が、前記構成情報収集部が収集する前記第１のハードウェア資源の構成情報を、前記第１のハッシュ演算部がハッシュ演算を行い生成する第１の構成レジスタ値を、前記第１の起動制御部が備える第１の構成レジスタ部に格納させるとともに、前記構成情報収集部が収集する前記第２のハードウェア資源の構成情報を、前記第２のハッシュ演算部がハッシュ演算を行い生成する第２の構成レジスタ値を、前記第２の起動制御部が備える第２の構成レジスタ部に格納させるステップと、
前記情報処理装置の構成変更を検出しないで前記情報処理装置を起動する場合に、前記情報処理装置の構成変更を検出しない場合に、前記情報処理装置が有する記憶部に、前記構成レジスタ制御部が前記第１の構成レジスタ部から読み出す第１の構成レジスタ値を前記第１の起動制御部に対応付けて格納するとともに、前記構成レジスタ制御部が前記第２の構成レジスタ部から読み出す第２の構成レジスタ値を、前記第２の起動制御部に対応させて格納するステップと、
前記情報処理装置の構成変更を検出して前記情報処理装置を起動する場合に、前記情報処理装置が有する構成レジスタ値取得部が、前記第1の構成レジスタ部に格納される第１の構成レジスタ値と、第１の構成レジスタ部に格納される第２の構成レジスタ値を、それぞれ取得するステップと、
前記情報処理装置の構成変更を検出して前記情報処理装置を起動する場合に、前記情報処理装置が有する比較部が、前記構成レジスタ値取得部が取得する第１の構成レジスタ値を、前記記憶部に前記第１の起動制御部に対応させて格納される第１の構成レジスタ値と比較するとともに、前記構成レジスタ値取得部が取得する第２の構成レジスタ値を、前記記憶部に前記第２の起動制御部に対応させて格納される第２の構成レジスタ値と比較するステップと、
前記比較部が、前記構成レジスタ値取得部が取得する第１の構成レジスタ値と前記記憶部に前記第１の起動制御部に対応させて格納される第１の構成レジスタ値に係る第１の構成レジスタ値の組の一致、又は、前記構成レジスタ値取得部が取得する第２の構成レジスタ値と前記記憶部に前記第２の起動制御部に対応させて格納される第２の構成レジスタ値に係る第２の構成レジスタ値の組の一致を検出した場合に、前記情報処理装置が有する継続処理制御部が、前記情報処理装置の起動処理を継続するステップを有することを特徴とする情報処理装置の起動方法。
【請求項４】
前記情報処理装置の起動方法はさらに、
前記比較部が、前記第１の構成レジスタの組、又は、前記第２の構成レジスタの組のいずれか一の組の一致と他の組の不一致を検出した場合に、前記情報処理装置が有する更新部が、不一致が検出された組の起動制御部に対応させて格納された構成レジスタ値を、前記構成レジスタ値取得部が取得した対応する構成レジスタ値で更新するステップを有することを特徴とする請求項３記載の情報処理装置の起動方法。
【請求項５】
演算を行う演算処理装置と、ハッシュ演算を行う第１のハッシュ演算部と起動制御を行う第１の起動制御部と第１のハードウェア資源を備える第１の処理部と、ハッシュ演算を行う第２のハッシュ演算部と起動制御を行う第２の起動制御部と第２のハードウェア資源を備える第２の処理部を有する情報処理装置の起動プログラムにおいて、
前記演算処理装置に、
前記情報処理装置の起動時に前記情報処理装置の構成変更を検出するか否かを決定するステップと、
前記情報処理装置が有する構成情報収集部が、前記第１及び第２のハードウェア資源の構成情報をそれぞれ収集するステップと、
前記情報処理装置が有する構成レジスタ制御部が、前記構成情報収集部が収集する前記第１のハードウェア資源の構成情報を、前記第１のハッシュ演算部がハッシュ演算を行い生成する第１の構成レジスタ値を、前記第１の起動制御部が備える第１の構成レジスタ部に格納させるとともに、前記構成情報収集部が収集する前記第２のハードウェア資源の構成情報を、前記第２のハッシュ演算部がハッシュ演算を行い生成する第２の構成レジスタ値を、前記第２の起動制御部が備える第２の構成レジスタ部に格納させるステップと、
前記情報処理装置の構成変更を検出しないで前記情報処理装置を起動する場合に、前記情報処理装置の構成変更を検出しない場合に、前記情報処理装置が有する記憶部に、前記構成レジスタ制御部が前記第１の構成レジスタ部から読み出す第１の構成レジスタ値を前記第１の起動制御部に対応付けて格納するとともに、前記構成レジスタ制御部が前記第２の構成レジスタ部から読み出す第２の構成レジスタ値を、前記第２の起動制御部に対応させて格納するステップと、
前記情報処理装置の構成変更を検出して前記情報処理装置を起動する場合に、前記情報処理装置が有する構成レジスタ値取得部が、前記第1の構成レジスタ部に格納される第１の構成レジスタ値と、第１の構成レジスタ部に格納される第２の構成レジスタ値を、それぞれ取得するステップと、
前記情報処理装置の構成変更を検出して前記情報処理装置を起動する場合に、前記情報処理装置が有する比較部が、前記構成レジスタ値取得部が取得する第１の構成レジスタ値を、前記記憶部に前記第１の起動制御部に対応させて格納される第１の構成レジスタ値と比較するとともに、前記構成レジスタ値取得部が取得する第２の構成レジスタ値を、前記記憶部に前記第２の起動制御部に対応させて格納される第２の構成レジスタ値と比較するステップと、
前記比較部が、前記構成レジスタ値取得部が取得する第１の構成レジスタ値と前記記憶部に前記第１の起動制御部に対応させて格納される第１の構成レジスタ値に係る第１の構成レジスタ値の組の一致、又は、前記構成レジスタ値取得部が取得する第２の構成レジスタ値と前記記憶部に前記第２の起動制御部に対応させて格納される第２の構成レジスタ値に係る第２の構成レジスタ値の組の一致を検出した場合に、前記情報処理装置が有する継続処理制御部が、前記情報処理装置の起動処理を継続するステップを実行させることを特徴とする情報処理装置の起動プログラム。
【請求項６】
前記情報処理装置の起動プログラムはさらに、
前記演算処理装置に、
前記比較部が、前記第１の構成レジスタの組、又は、前記第２の構成レジスタの組のいずれか一の組の一致と他の組の不一致を検出した場合に、前記情報処理装置が有する更新部が、不一致が検出された組の起動制御部に対応させて格納された構成レジスタ値を、前記構成レジスタ値取得部が取得した対応する構成レジスタ値で更新するステップを実行させることを特徴とする請求項５記載の情報処理装置の起動プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、セキュリティ機能モジュール（ＴＰＭ;Trusted Platform Module）を搭載したシステムボードを複数そなえた情報処理装置における起動制御に関する。
【背景技術】
【０００２】
近年、ＴＰＭ等のセキュリティチップ（セキュリティ機能モジュール）を内蔵し、セキュリティレベルを向上させた情報処理端末（情報処理装置）が知られている。
ＴＰＭは、業界標準団体であるＴＣＧ（Trusted Computing Group）によって定義された仕様に準拠するセキュリティ制御部としてのセキュリティチップである。ＴＰＭは、例えば、情報処理装置のマザーボード（システムボード；System Board）に実装され、セキュア通信で利用される暗号鍵（コア暗号鍵）等を格納する不揮発性メモリや、暗号処理専用のマイクロプロセッサをそなえて構成されている。【０００３】
そして、情報処理装置においては、その起動時にＴＰＭを用いて、ハードウェアやソフトウェアが改ざんされていないかのチェックを行ない、何らかの不正を発見した場合に起動を阻止することにより、ハードウェアレベルでのセキュリティ管理を実現する。
図１０は従来のＰＣ（Personal Computer）の構成を模式的に示す図、図１１は情報処理装置におけるＴＰＭの接続状態を模式的に示す図、図１２は従来のＰＣにおけるＰＣＲ（Platform Configuration Registers）値の格納手法を説明するための図である。【０００４】
情報処理装置であるＰＣ１００１を図１０に開示する。ＰＣは、ＯＳ（Operating System）１００２，ＯＳローダ（OS LOADER）１００３，ファームウェア（Firmware）１００４，演算処理装置としてのＣＰＵ（Central Processing Unit）１００５，Ｉ／Ｏカード１００６およびＴＰＭ１００７をそなえる。
ＴＰＭ１００７はＰＣＲ１００８とハッシュエンジン１０１１（図１２参照）とをそなえる。ハッシュエンジン１０１１は、ハッシュ・アルゴリズムと呼ばれる数学的な手法を用いて、ＰＣ１００１の構成情報（バイナリ・コード）をハッシュ値と呼ばれるユニークな値に変換するものであり、例えば、マイクロプロセッサにより実現される。【０００５】
構成情報としては、例えば、ファームウェア１００４のコードや設定，拡張カード１００６のファームウェアのコードや設定，ＯＳローダ１００３のコードや設定等が用いられる。
これらの構成情報が、システムボードＳＢ＃００（図１２参照）に搭載されたＴＰＭ１００７のハッシュエンジン１０１１によってハッシュ化され、ＰＣＲ１００８にＰＣＲ値として格納される。【０００６】
ＰＣＲ１００８は、プラットフォームの情報を格納するレジスタであって、上述したハッシュエンジン１０１１によって作成されたハッシュ値（ＰＣＲ値）等を保持する。このＰＣＲ１００８は、メモリ等の記憶回路によって実現される。
図１２に示す例においては、ＰＣＲ１００８にＰＣＲ０〜ＰＣＲ５の５つの格納領域が示されており、ファームウェア１００４のコードをハッシュ化した値がＰＣＲ［０］に格納される。同様に、ファームウェア１００４の設定をハッシュ化した値が、ＰＣＲ［１］に、拡張カード１００６のファームウェアのコードをハッシュ化した値がＰＣＲ［２］に、拡張カード１００６のファームウェアの設定をハッシュ化した値がＰＣＲ［３］に、それぞれ格納される。又、ＯＳローダ１００３のコードをハッシュ化した値がＰＣＲ［４］に、ＯＳローダ１００３の設定をハッシュ化した値がＰＣＲ［５］に、それぞれ格納される。【０００７】
ファームウェア１００４は、ＰＣ１００１の起動時において、プラットフォームの構成情報を収集し、この構成情報をＴＰＭ１００７内のハッシュエンジンによりＰＣＲ値（ハッシュ値，構成測定値）に変換させて、ＰＣＲ１００８に格納させる。
また、ＰＣＲ値がＰＣＲ１００８に格納される際には、ＰＣＲ１００８に既に格納されているＰＣＲ値と追加する構成情報の値とをハッシュ化したものが格納される。ＰＣＲ値は、過去の書き込み値とハッシュ化されることにより、特定の値に改ざんすることが困難である。【０００８】
ＴＰＭ１００７は、図１１に示すように、ＰＣ１００１においてサウスブリッジ（South Bridge）１００９に接続されており、ＯＳ１００２等が、このサウスブリッジ１００９を介して、ＴＰＭ１００７のＰＣＲ１００８に格納されたＰＣＲ値を読み出すことができる。
ＰＣ１００１においては、このＰＣＲ１００８から読み出したＰＣＲ値を用いて、プラットフォームの構成変更の有無を検出する。なお、以下、ＰＣＲ値を用いて構成変更を検出する機能のことを構成ロック機能という。【０００９】
構成ロック機能においては、先ず、ＰＣ１００１の起動時に、ファームウェア１００４が、システムボードの構成情報をＴＰＭ１００７に格納する。この際、構成情報は、ＴＰＭ１００７のハッシュエンジン１０１１でハッシュ化され、ＰＣＲ１００８にＰＣＲ値として格納される。
また、構成ロック機能には、ロック状態とアンロック状態がある。アンロック状態でＰＣ１００１が起動した場合、ＯＳ１００２は、ＴＰＭ１００７のＰＣＲ１００８に格納されているＰＣＲ値を読み出して、ＨＤＤ（Hard Disk Drive）１０１０に保存する（図１１の矢印Ａ参照）。なお、アンロック状態とは、ＰＣ１００１の起動時に構成変更の有無をチェックしない状態をいう。【００１０】
一方、ロック状態でＰＣ１００１が起動した場合、ＯＳ１００２は、ＨＤＤ１０１０に格納されたＰＣＲ値を読み出し、ＨＤＤ１０１０に格納されているＰＣＲ値と、ＴＰＭ１００７のＰＣＲ１００８に格納されているＰＣＲ値とを比較する（図１１の矢印Ｂ参照）。なお、ロック状態とは、ＰＣ１００１の起動時に構成変更の有無をチェックする状態をいう。【００１１】
ＯＳ１００２は、ロック状態において、ＴＰＭ１００７のＰＣＲ１００８に格納されているＰＣＲ値とＨＤＤ１０１０に格納されたＰＣＲ値とが一致した場合には、ＰＣ１００１の構成に変更がないと判断して、ＰＣ１００１を正常に起動させる。一方、これらのＰＣＲ値が不一致の場合には、ＯＳ１００２は、ＰＣ１００１の構成が変更されたと判断して、例えば、ＯＳ１００２のそれ以降の処理（起動処理）を抑止したり、オペレータに対して警告を出力する。【００１２】
従来のＰＣ１００１における起動時の処理を、図１３に示すフローチャート（ステップＡ１０〜Ａ１００）に従って説明する。
ＰＣ１００１に電源が投入されると（Power On）、ファームウェア１００４は、ＴＰＭ１００７に構成情報を格納する。この際、構成情報は、ＴＰＭ１００７のハッシュエンジン１０１１でハッシュ化され、ＰＣＲ値としてＰＣＲ１００８に格納される（ステップＡ１０）。【００１３】
そして、アンロック状態において、ＯＳ１００２が、ＴＰＭ１００７のＰＣＲ１００８からＰＣＲ値を読み出して、ＨＤＤ１０１０に保存する（ステップＡ２０）。
ＯＳ１００２は、ＰＣ１００１をアンロック状態からロック状態に変更し（ステップＡ３０）、ＰＣ１００１が再起動（Reboot）される（ステップＡ４０）。
この再起動プロセスにおいて、ファームウェア１００４は、構成情報をＴＰＭ１００７に格納する。この際、構成情報は、ＴＰＭ１００７のハッシュエンジン１０１１でハッシュ化され、ＰＣＲ値としてＰＣＲ１００８に格納される（ステップＡ５０）。【００１４】
ＯＳ１００２は、ロック状態において、ＴＰＭ１００７のＰＣＲ１００８からＰＣＲ値を読み出し（ステップＡ６０）、このＴＰＭ１００７から読み出したＰＣＲ値と、ＨＤＤ１０１０に格納されているＰＣＲ値との比較を行なう（ステップＡ７０）。
すなわち、ＯＳ１００２は、ＨＤＤ１０１０に格納されているＰＣＲ値と、ＴＰＭ１００７から読み出したＰＣＲ値とが一致するか否かの比較を行なう（ステップＡ８０）。この比較の結果、ＰＣＲ値が一致しない場合には（ステップＡ８０のＮＯルート参照）、ＯＳ１００２は、ＰＣ１００１の構成が変更されたと判断して、ＰＣ１００１の起動を抑止したり、オペレータに対して警告を行なう（ステップＡ１００）。【００１５】
一方、ＰＣＲ値が一致した場合には（ステップＡ８０のＹＥＳルート参照）、ＯＳ１００２は以降の起動処理を継続して実行することによりＰＣ１００１を正常に起動させる（ステップＡ９０）。
【特許文献１】特開２００６−３２３８１４号公報
【特許文献２】特開２００５−３０１５５０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１６】
さて、上述の如きＴＰＭを搭載したシステムボードを、システムボードを複数そなえるサーバシステムに適用する場合について考える。
例えば、基幹システムで運用されるサーバシステムでは高い可用性や柔軟なリソース（ハードウェア資源）の運用が要求される。このような高い可用性や柔軟なリソース運用を実現するための手法として、サーバシステムにおいて、1台のサーバシステムを複数のパーティション（ドメイン）に分け、各パーティション上でＯＳやファームウェアを動作させる機能が知られている。このような機能は、マルチパーティション機能と呼ばれる。【００１７】
そして、ミッションクリティカルな分野におけるサーバシステムの運用では、複数のシステムボードのうちいずれかにおいてエラー（異常）が生じた場合においても、業務を停滞させることなく処理を継続して実行したいという要求がある。
このような要求を満たすため、サーバシステムにおいて、あるシステムボードでエラーが生じた場合には、次のようにシステムボードを交換する手法が知られている。すなわち、このエラーが生じたシステムボードが所属するパーティションの次の再起動時に、エラーが生じたシステムボードを、同じ構成を有する予備のシステムボードと交換する手法である。【００１８】
この予備のシステムボードにおいては、稼働中のシステムボードと同じ版のファームウェアや同じ構成のハードウェア（ＣＰＵやメモリ等）を搭載することにより、システムボードの交換を行なった場合にもパーティション内の構成が変わることはない。
しかしながら、ＴＰＭはシステムボード毎に固有にそなえられるものであって、各ハッシュエンジンはＴＰＭ毎に固有なハッシュを用いてハッシュ値を作成する。従って、ファームウェアから同じ構成情報を渡された場合であっても、ＴＰＭ毎で異なるＰＣＲ値が生成される。【００１９】
すなわち、システムボードを交換することにより、システムボードに搭載されているＴＰＭが変わるので、同じ構成を有するシステムボードであり、且つ、同じ構成情報が入力されてもＰＣＲ１００８に格納されるＰＣＲ値が異なるものとなる。
従って、従来のサーバにおいては、ＴＰＭの構成ロック機能を有効にした状態では、何らかのエラーが生じたシステムボードを予備のシステムボードに交換した場合に、この予備のシステムボードでＯＳを起動させることができない。これにより、サーバシステムの運用に支障が生じるおそれがある。一方、サーバシステムを停滞なく運用するために構成ロック機能を無効にする場合には、ＴＰＭを有効に活用することができず、プラットフォームの改ざん等を検出することができず信頼性を向上させることができないという課題がある。【００２０】
本件は、このような課題に鑑み創案されたもので、複数のシステムボードをそなえた情報処理装置において、一部のシステムボードを同じ構成を有する予備のシステムボードと交換する場合においても、起動処理を完了させることができ、且つ、ＴＰＭの機能を有効に使用することができるようにすることを目的とする。
【課題を解決するための手段】
【００２１】
このため、この情報処理装置は、ハッシュ演算を行う第１のハッシュ演算部と起動制御を行う第１の起動制御部と第１のハードウェア資源を備える第１の処理部と、ハッシュ演算を行う第２のハッシュ演算部と起動制御を行う第２の起動制御部と第２のハードウェア資源を備える第２の処理部と、前記第１及び第２のハードウェア資源の構成情報をそれぞれ収集する構成情報収集部と、前記構成情報収集部が収集する前記第１のハードウェア資源の構成情報を、前記第１のハッシュ演算部がハッシュ演算を行い生成する第１の構成レジスタ値を、前記第１の起動制御部が備える第１の構成レジスタ部に格納させるとともに、前記構成情報収集部が収集する前記第２のハードウェア資源の構成情報を、前記第２のハッシュ演算部がハッシュ演算を行い生成する第２の構成レジスタ値を、前記第２の起動制御部が備える第２の構成レジスタ部に格納させる構成レジスタ制御部と、前記情報処理装置の構成変更を検出しないで前記情報処理装置を起動する場合に、前記情報処理装置の構成変更を検出しない場合に、前記構成レジスタ制御部が前記第１の構成レジスタ部から読み出す第１の構成レジスタ値を前記第１の起動制御部に対応付けて格納するとともに、前記構成レジスタ制御部が前記第２の構成レジスタ部から読み出す第２の構成レジスタ値を、前記第２の起動制御部に対応させて格納する記憶部と、前記情報処理装置の構成変更を検出して前記情報処理装置を起動する場合に、前記第1の構成レジスタ部に格納される第１の構成レジスタ値と、第１の構成レジスタ部に格納される第２の構成レジスタ値を、それぞれ取得する構成レジスタ値取得部と、前記情報処理装置の構成変更を検出して前記情報処理装置を起動する場合に、前記構成レジスタ値取得部が取得する第１の構成レジスタ値を、前記記憶部に前記第１の起動制御部に対応させて格納される第１の構成レジスタ値と比較するとともに、前記構成レジスタ値取得部が取得する第２の構成レジスタ値を、前記記憶部に前記第２の起動制御部に対応させて格納される第２の構成レジスタ値と比較する比較部と、前記比較部が、前記構成レジスタ値取得部が取得する第１の構成レジスタ値と前記記憶部に前記第１の起動制御部に対応させて格納される第１の構成レジスタ値に係る第１の構成レジスタ値の組の一致、又は、前記構成レジスタ値取得部が取得する第２の構成レジスタ値と前記記憶部に前記第２の起動制御部に対応させて格納される第２の構成レジスタ値に係る第２の構成レジスタ値の組の一致を検出した場合に、前記情報処理装置の起動処理を継続する継続処理制御部を有する。【００２２】
また、この情報処理装置の起動方法は、ハッシュ演算を行う第１のハッシュ演算部と起動制御を行う第１の起動制御部と第１のハードウェア資源を備える第１の処理部と、ハッシュ演算を行う第２のハッシュ演算部と起動制御を行う第２の起動制御部と第２のハードウェア資源を備える第２の処理部を有する情報処理装置の起動方法において、前記情報処理装置の起動時に前記情報処理装置の構成変更を検出するか否かを決定するステップと、前記情報処理装置が有する構成情報収集部が、前記第１及び第２のハードウェア資源の構成情報をそれぞれ収集するステップと、前記情報処理装置が有する構成レジスタ制御部が、前記構成情報収集部が収集する前記第１のハードウェア資源の構成情報を、前記第１のハッシュ演算部がハッシュ演算を行い生成する第１の構成レジスタ値を、前記第１の起動制御部が備える第１の構成レジスタ部に格納させるとともに、前記構成情報収集部が収集する前記第２のハードウェア資源の構成情報を、前記第２のハッシュ演算部がハッシュ演算を行い生成する第２の構成レジスタ値を、前記第２の起動制御部が備える第２の構成レジスタ部に格納させるステップと、前記情報処理装置の構成変更を検出しないで前記情報処理装置を起動する場合に、前記情報処理装置の構成変更を検出しない場合に、前記情報処理装置が有する記憶部に、前記構成レジスタ制御部が前記第１の構成レジスタ部から読み出す第１の構成レジスタ値を前記第１の起動制御部に対応付けて格納するとともに、前記構成レジスタ制御部が前記第２の構成レジスタ部から読み出す第２の構成レジスタ値を、前記第２の起動制御部に対応させて格納するステップと、前記情報処理装置の構成変更を検出して前記情報処理装置を起動する場合に、前記情報処理装置が有する構成レジスタ値取得部が、前記第1の構成レジスタ部に格納される第１の構成レジスタ値と、第１の構成レジスタ部に格納される第２の構成レジスタ値を、それぞれ取得するステップと、前記情報処理装置の構成変更を検出して前記情報処理装置を起動する場合に、前記情報処理装置が有する比較部が、前記構成レジスタ値取得部が取得する第１の構成レジスタ値を、前記記憶部に前記第１の起動制御部に対応させて格納される第１の構成レジスタ値と比較するとともに、前記構成レジスタ値取得部が取得する第２の構成レジスタ値を、前記記憶部に前記第２の起動制御部に対応させて格納される第２の構成レジスタ値と比較するステップと、前記比較部が、前記構成レジスタ値取得部が取得する第１の構成レジスタ値と前記記憶部に前記第１の起動制御部に対応させて格納される第１の構成レジスタ値に係る第１の構成レジスタ値の組の一致、又は、前記構成レジスタ値取得部が取得する第２の構成レジスタ値と前記記憶部に前記第２の起動制御部に対応させて格納される第２の構成レジスタ値に係る第２の構成レジスタ値の組の一致を検出した場合に、前記情報処理装置が有する継続処理制御部が、前記情報処理装置の起動処理を継続するステップを有する。【００２３】
さらに、この情報処理装置の起動プログラムは、演算を行う演算処理装置と、ハッシュ演算を行う第１のハッシュ演算部と起動制御を行う第１の起動制御部と第１のハードウェア資源を備える第１の処理部と、ハッシュ演算を行う第２のハッシュ演算部と起動制御を行う第２の起動制御部と第２のハードウェア資源を備える第２の処理部を有する情報処理装置の起動プログラムにおいて、前記演算処理装置に、前記情報処理装置の起動時に前記情報処理装置の構成変更を検出するか否かを決定するステップと、前記情報処理装置が有する構成情報収集部が、前記第１及び第２のハードウェア資源の構成情報をそれぞれ収集するステップと、前記情報処理装置が有する構成レジスタ制御部が、前記構成情報収集部が収集する前記第１のハードウェア資源の構成情報を、前記第１のハッシュ演算部がハッシュ演算を行い生成する第１の構成レジスタ値を、前記第１の起動制御部が備える第１の構成レジスタ部に格納させるとともに、前記構成情報収集部が収集する前記第２のハードウェア資源の構成情報を、前記第２のハッシュ演算部がハッシュ演算を行い生成する第２の構成レジスタ値を、前記第２の起動制御部が備える第２の構成レジスタ部に格納させるステップと、前記情報処理装置の構成変更を検出しないで前記情報処理装置を起動する場合に、前記情報処理装置の構成変更を検出しない場合に、前記情報処理装置が有する記憶部に、前記構成レジスタ制御部が前記第１の構成レジスタ部から読み出す第１の構成レジスタ値を前記第１の起動制御部に対応付けて格納するとともに、前記構成レジスタ制御部が前記第２の構成レジスタ部から読み出す第２の構成レジスタ値を、前記第２の起動制御部に対応させて格納するステップと、前記情報処理装置の構成変更を検出して前記情報処理装置を起動する場合に、前記情報処理装置が有する構成レジスタ値取得部が、前記第1の構成レジスタ部に格納される第１の構成レジスタ値と、第１の構成レジスタ部に格納される第２の構成レジスタ値を、それぞれ取得するステップと、前記情報処理装置の構成変更を検出して前記情報処理装置を起動する場合に、前記情報処理装置が有する比較部が、前記構成レジスタ値取得部が取得する第１の構成レジスタ値を、前記記憶部に前記第１の起動制御部に対応させて格納される第１の構成レジスタ値と比較するとともに、前記構成レジスタ値取得部が取得する第２の構成レジスタ値を、前記記憶部に前記第２の起動制御部に対応させて格納される第２の構成レジスタ値と比較するステップと、前記比較部が、前記構成レジスタ値取得部が取得する第１の構成レジスタ値と前記記憶部に前記第１の起動制御部に対応させて格納される第１の構成レジスタ値に係る第１の構成レジスタ値の組の一致、又は、前記構成レジスタ値取得部が取得する第２の構成レジスタ値と前記記憶部に前記第２の起動制御部に対応させて格納される第２の構成レジスタ値に係る第２の構成レジスタ値の組の一致を検出した場合に、前記情報処理装置が有する継続処理制御部が、前記情報処理装置の起動処理を継続するステップを実行させる。
【発明の効果】
【００２４】
開示の情報処理装置，情報処理装置の起動制御方法及び起動プログラムによれば、処理部を、同様の構成を有する他の処理部と交換した場合においても、情報処理装置の起動処理を完了させることができるとともに、起動制御部を用いたセキュアブートを実現することができる。
【図面の簡単な説明】
【００２５】
【図１】実施形態の一例としてのサーバにおける機能構成を模式的に示す図である。
【図２】実施形態の一例としてのサーバのパーティションにおけるプログラム構成を模式的に示す図である。
【図３】実施形態の一例としてのサーバのパーティションの構成を模式的に示す図である。
【図４】ＰＣＲに格納される構成情報の例を示す図である。
【図５】ＰＣＲに格納する構成情報を模式的に示す図である。
【図６】実施形態の一例としてのサーバにおけるＰＣＲへの構成情報の格納手法を説明するためのフローチャートである。
【図７】実施形態の一例としてのサーバにおける構成情報格納部によるＰＣＲへのＰＣＲ値の格納処理を説明するための図である。
【図８】実施形態の一例としてのサーバにおけるパーティションの起動時の処理を説明するためのフローチャートである。
【図９】（ａ）〜（ｃ）は実施形態の一例としてのサーバのパーティションにおいてシステムボードの交換が生じた場合の処理を説明するための図である。
【図１０】従来のＰＣの構成を模式的に示す図である。
【図１１】情報処理装置におけるＴＰＭの接続状態を模式的に示す図である。
【図１２】従来のＰＣにおけるＰＣＲ値の格納手法を説明するための図である。
【図１３】従来のＰＣにおける起動時の処理を説明するためのフローチャートである。
【符号の説明】
【００２６】
１０    ファームウェア
１１    構成情報格納モジュール
２０，２０＃１〜２０＃ｎ    ＰＣＲ（構成レジスタ部）
２１    ＣＰＵ（演算処理装置）
２２，２２＃０〜２２＃ｎ    ハッシュエンジン（ハッシュ演算部）
３０    ＯＳ
３１    ＰＣＲ値読出モジュール
３２    ＰＣＲ値管理モジュール
３３    ＰＣＲ値比較モジュール
３４    ＰＣＲ値設定モジュール
３５    ＰＣＲ値更新モジュール
３６    継続処理制御モジュール
４１    ＯＳローダ
４２，４２−１〜４２−４    Ｉ／Ｏ
５１    構成情報格納部
５２    構成情報収集部
５３    ＰＣＲ格納制御部（構成レジスタ制御部）
５４    ＰＣＲ値取得部（構成レジスタ値取得部）
５５    ＰＣＲ値比較部（比較部）
５６    ＰＣＲ値更新部（更新部）
５７    ＰＣＲ値設定部
５８    ＰＣＲ値データベース
５９    継続処理制御部
６０    ＨＤＤ（記憶部）
１１１    収集モジュール
１１２    加工モジュール
１１３    格納モジュール
Ｐ，Ｐ０〜Ｐｓ    パーティション  
ＳＢ，ＳＢ＃０〜ＳＢ＃ｎ    システムボード（処理部）
ＳＢ＃Ｒ    予備のシステムボード
【発明を実施するための最良の形態】
【００２７】
以下、図面を参照して本情報処理装置、起動制御方法および起動プログラムに係る実施の形態を説明する。
図１は実施形態の一例としてのサーバにおける機能構成を模式的に示す図、図２は実施形態の一例としてのサーバのパーティションにおけるプログラム構成を模式的に示す図、図３はそのパーティションの構成を模式的に示す図である。【００２８】
本実施形態の一例としてのサーバ１００は、図３に示すように、起動制御部としてのセキュリティ機能モジュール（ＴＰＭ）を搭載した処理部としてのシステムボードＳＢ＃０〜ＳＢ＃ｎを複数（ｎ個；ｎは整数）そなえた情報処理装置（コンピュータ）である。
サーバ１００は、例えば、基幹システムで運用され、演算処理装置としてのＣＰＵ２１やメモリ（図示省略），Ｉ／Ｏ（Input/Output）４２等をそなえて構成され、パーティション構造を有するシステムを実現するパーティショニング機能をそなえている。【００２９】
そして、本サーバ１００においては、このパーティショニング機能により、ＣＰＵ２１やメモリ，Ｉ／Ｏ４２を任意に組み合わせることにより、図３に示すように、複数のパーティションＰ０〜Ｐｓ（ｓは整数）を構成することができる。
なお、以下、パーティションを示す符号としては、複数のパーティションのうち１つを特定する必要があるときには符号Ｐ０〜Ｐｓを用いるが、任意のパーティションを指すときには符号Ｐを用いる。【００３０】
パーティションＰには、図３に示すように、ＯＳ３０，ＯＳローダ（OS LOADER）４１，ファームウェア（Firmware）１０，システムボードＳＢ＃０〜＃ｎおよびＩ／Ｏ４２−１〜４２−４をそなえて構成されている。
ここで、パーティションＰは、ＯＳ３０が稼動する単位であり、１つのパーティションＰには少なくとも１つのシステムボードＳＢがそなえられる。又、ファームウェア１０もパーティションＰ毎にそなえられている。【００３１】
Ｉ／Ｏ４２−１〜４２−４は拡張カードであって、図３に示す例においては、４つのＩ／Ｏ４２−１〜４２−４がそなえられている。
なお、以下、Ｉ／Ｏを示す符号としては、複数のＩ／Ｏのうち１つを特定する必要があるときには符号４２−１，４２−２，４２−３，４２−４を用いるが、任意のＩ／Ｏを指すときには符号４２を用いる。【００３２】
また、図３に示す例においては、パーティションＰがｎ個のＳＢ＃０〜＃ｎおよび４つのＩ／Ｏ４２−１〜４２−４をそなえて構成されているが、これに限定されるものではなく、例えば、Ｉ／Ｏ４２を３以下もしくは５以上そなえてもよい。又、図３に示す例においては、各ＳＢに４つのＣＰＵ２１がそなえられているが、これに限定されるものではなく、ＣＰＵ２１を３つ以下もしくは５つ以上そなえてもよく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。【００３３】
ＴＰＭは、業界標準団体であるＴＣＧによって定義された仕様に準拠するセキュリティチップであり、構成レジスタ部としてのＰＣＲ２０やハッシュ演算部としてのハッシュエンジン２２（図７参照）をそなえている。なお、ＴＰＭはＴＣＧの仕様に準拠して構成されるものであり、その詳細な構成や機能についての説明は省略する。
図２，図３においては、システムボードＳＢ＃１にＴＰＭ＃１が、システムボードＳＢ＃２にＴＰＭ＃２が、システムボードＳＢ＃ｎにＴＰＭ＃ｎがそれぞれそなえられている例を示している。【００３４】
以下、ＴＰＭを示す符号としては、複数のＴＰＭのうち１つを特定する必要があるときには符号＃０，＃１，＃ｎを付して表すが、任意のＴＰＭを指すときには単にＴＰＭと表す。
また、図３においては、システムボードＳＢ＃０にＴＰＭ＃０および複数のＣＰＵ２１が、システムボードＳＢ＃１にＴＰＭ＃１および複数のＣＰＵ２１が、システムボードＳＢ＃ｎにＴＰＭ＃ｎおよび複数のＣＰＵ２１がそれぞれそなえられている例を示している。【００３５】
そして、図２中においては、システムボードＳＢ上において、ＴＰＭ以外の部品の図示を省略している。同様に、図３中においては、ＴＰＭおよびＣＰＵ２１以外の部品の図示を省略している。
また、以下、図中、＃０，＃１，＃ｎの文字を有する各符号は、同じ文字を有する各符号どうしの間に、それぞれ対応関係があることを示しており、例えば、上述の構成においては、システムボードＳＢ＃０にはＴＰＭ＃０が搭載されるようになっており、同様に、システムボードＳＢ＃ｎにはＴＰＭ＃ｎが搭載されることを示している。【００３６】
さらに、本実施形態において、ＴＰＭは、図１１に示したと同様に、サウスブリッジに接続される。
ハッシュエンジン２２は、ハッシュ・アルゴリズムと呼ばれる数学的な手法を用いて、パーティションＰの構成情報（バイナリ・コード，測定対象）をハッシュ値と呼ばれるユニークな値（ダイジェスト値）に変換するものであり、例えば、図示しないマイクロプロセッサにより実現される。又、このハッシュエンジン２２によって作成されたハッシュ値（構成情報）は、ＰＣＲ２０にＰＣＲ値として書込まれる。【００３７】
なお、ＰＣＲ２０への構成情報の書き込みは、例えば、ファームウェア１０等が、ＴＰＭに対して所定のコマンド（例えば、TPM_Extend）を発行することにより行なわれるが、その詳細については後述する。
また、ＴＰＭにおけるハッシュエンジン２２による構成情報のハッシュ化の具体的手法や、ハッシュ化した構成情報のＰＣＲ２０への格納手法は、ＴＣＧの仕様に従って行なわれるものであり、その詳細な説明は省略する。【００３８】
ＰＣＲ２０は、プラットフォームの情報を格納するレジスタであり、上述したハッシュエンジン２２によって作成されたＰＣＲ値等を保持する。このＰＣＲ２０は、メモリ等の記憶回路によって実現される。
図４はＰＣＲに格納される構成情報の例を示す図である。この図４に示す例においては、ＰＣＲ２０における、ＰＣＲ［０］〜ＰＣＲ［５］の６つの格納領域を示している。この図４に示す例においては、ＰＣＲ［０］には、ファームウェア１０のコードを測定対象として作成されたＰＣＲ値が格納される。具体的には、ファームウェア１０のバージョン等を示す情報が用いられる。【００３９】
ＰＣＲ［１］には、ファームウェア１０の設定に関する情報を測定対象として作成されたＰＣＲ値が格納されるようになっており、具体的には、プロセッサ・マイクロコード・アップグレード情報（Processor microcode upgrades）や、ＮＶＲＡＭ（Non Volatile Random Access Memory：不揮発性ＲＡＭ）に格納されているファームウェアの内部データの少なくとも一部等が用いられる。【００４０】
ＰＣＲ［２］には、拡張カードのファームウェアのコードを測定対象として作成されたＰＣＲ値が格納されるようになっており、具体的には、ＳＣＳＩ（Small Computer System Interface）カードの制御ファームウェアのコード等が用いられる。
ＰＣＲ［３］には、拡張カードのファームウェアの設定を測定対象として作成されたＰＣＲ値が格納されるようになっており、具体的には、ＳＣＳＩのマルチイニシエータセッティング等が用いられる。【００４１】
ＰＣＲ［４］には、ＯＳローダ４１のコードを測定対象として作成されたＰＣＲ値が格納されるようになっており、具体的には、ＭＢＲ（Master Boot Record）やGＲｕｂ（GＲand Unified Bootloader）等が用いられる。
ＰＣＲ［５］には、ＯＳローダ４１の設定を測定対象として作成されたＰＣＲ値が格納されるようになっており、具体的には、ブートデバイス情報（Boot Device）やブートパス設定情報（Boot Path Setting）等が用いられる。【００４２】
なお、本実施形態においては、ＰＣＲ２０のＰＣＲ［０］〜ＰＣＲ［５］の６つの格納領域について例示しているが、これに限定されるものでなく、ＴＣＧの仕様に反しない範囲で、種々変形して実施することができる。
また、各ＴＰＭにおいて、ＰＣＲ値は、ＰＣＲ２０にすでに格納されている値とこれから格納しようとしている値がＴＰＭの中で連結され、その連結された値がＴＰＭによってハッシュ化されたものとなる。例えばＰＣＲ［０］に構成情報を格納しようとした場合、ＰＣＲ［０］にすでに格納されている値とこれから格納しようとしている値がＴＰＭによって連結・ハッシュ化されＰＣＲ［０］に格納される。【００４３】
システムボードＳＢ＃０〜＃ｎは、ＣＰＵ２１やメモリ等の情報処理装置を構成するための主要な電子部品が実装された回路基板であり、回路基板上にＣＰＵ２１やＴＰＭ、図示しないメモリやインタフェース等をそなえて構成されている。
なお、以下、システムボードを示す符号としては、複数のシステムボードのうち１つを特定する必要があるときには符号ＳＢ＃０，ＳＢ＃１，ＳＢ＃ｎを付して表すが、任意のシステムボードを指すときには符号ＳＢを用いる。【００４４】
また、パーティションＰにおいては、同一パーティションＰ上にそなえられた複数のシステムボードＳＢのうち、プライマリとして機能するよう予め設定されたシステムボードＳＢ（プライマリのシステムボードＳＢ）に搭載されたＣＰＵ２１が、その起動時においてファームウェア１０やＯＳ３０を実行する。これにより、ＣＰＵ２１は、後述する、構成情報格納部５１（構成情報収集部５２，構成レジスタ制御部としてのＰＣＲ格納制御部５３），構成レジスタ値取得部としてのＰＣＲ値取得部５４，ＰＣＲ値比較部５５，ＰＣＲ値更新部５６，ＰＣＲ値設定部５７，ＰＣＲ値データベース５８および継続処理制御部５９として機能する。【００４５】
なお、構成情報格納部５１（構成情報収集部５２，ＰＣＲ格納制御部５３），ＰＣＲ値取得部５４，ＰＣＲ値比較部５５，ＰＣＲ値更新部５６，ＰＣＲ値設定部５７，ＰＣＲ値データベース５８および継続処理制御部５９において、ファームウェア１０が実行されるプライマリのシステムボードＳＢと、ＯＳ３０が実行されるプライマリのシステムボードＳＢは異なるシステムボードＳＢであってもよい。
また、このプライマリのシステムボードＳＢ上において複数のＣＰＵ２１がそなえられている場合には、これらの複数のＣＰＵ２１の中でプライマリとして機能するよう予め設定されたＣＰＵ２１（プライマリのＣＰＵ）が、構成情報格納部５１（構成情報収集部５２，ＰＣＲ格納制御部５３），ＰＣＲ値取得部５４，ＰＣＲ値比較部５５，ＰＣＲ値更新部５６，ＰＣＲ値設定部５７，ＰＣＲ値データベース５８および継続処理制御部５９として機能する。【００４６】
なお、プライマリのシステムボードＳＢには、例えば、複数のシステムボードＳＢのうち最若番の識別番号が設定されたシステムボードＳＢが用いられる。同様に、プライマリのＣＰＵ２１には、例えば、プライマリのシステムボードＳＢにそなえられた複数のＣＰＵ２１のうち最若番の識別番号が設定されたＣＰＵ２１が用いられる。以下、便宜上、単にＣＰＵ２１という場合には、プライマリのＣＰＵ２１のことをいう。【００４７】
そして、本サーバ１００においては、パーティションＰにおいて、ロック状態とアンロック状態との２つの状態で選択的に起動することができる。ここで、ロック状態においては、ＴＰＭを用いることにより、パーティションＰの起動時に構成変更の有無をチェック（検出）する（構成ロック機能）。一方、アンロック状態においては、パーティションＰの起動時に構成変更の有無のチェックを行わない。又、ロック状態とアンロック状態との切替は、例えば、ＯＳ３０によって行なわれる。【００４８】
なお、本サーバ１００において、システムボードＳＢ＃０〜ＳＢ＃ｎは、互いにほぼ同様の構成をそなえており、同じ版のファームウェア１０や、同じハードウェア構成（例えば、ＣＰＵ２１やメモリ）となるように構成されている。又、パーティションＰにおいては、システムボードＳＢ＃０〜ＳＢ＃ｎのいずれかにおいて何らかのエラー（異常）が生じた場合に備えて、そのエラーが生じたシステムボードＳＢと交換可能な予備のシステムボードＳＢ＃Ｒをそなえている（図９参照）。【００４９】
そして、パーティションＰにおいては、システムボードＳＢ＃０〜ＳＢ＃ｎのいずれかにおいて何らかのエラーが検出された場合に、このパーティションＰの次のリブート時に、そのエラーが生じたシステムボードＳＢを予備のシステムボードＳＢ＃Ｒと交換するスワップ機能をそなえている。
このスワップ機能においては、パーティションＰの稼働中に、パーティションＰ内のいずれかのシステムボードＳＢにエラーが発生すると、そのパーティションＰの次回リブート時に、エラーが生じたシステムボードＳＢが切り離され、代わりに予備のシステムボードＳＢ＃Ｒが組み込まれた状態でパーティションＰが起動する。【００５０】
そして、この予備のシステムボードＳＢ＃Ｒは、システムボードＳＢ＃０〜ＳＢ＃ｎと同じ版のファームウェア１０や、同じハードウェア構成をそなえており、システムボードＳＢ＃０〜ＳＢ＃ｎをこの予備のシステムボードＳＢ＃Ｒと交換した場合に、パーティションＰ内の構成が変わらないことが保障されている。すなわち、スワップ機能により、異常が生じたシステムボードＳＢと、予備のシステムボードＳＢ＃Ｒとを交換した場合においても、パーティションＰのプラットフォームの構成が変わることはない。【００５１】
ファームウェア１０は、例えばハードウェアの基本的な制御等を行なうためのプログラムであり、ＣＰＵ２１に実行されるものである。このファームウェア１０は、ＮＶＲＡＭ（図示省略）等に格納されている。
また、ファームウェア１０は、図２に示すように、構成情報格納モジュール１１をそなえている。この構成情報格納モジュール１１は、ＣＰＵ２１に実行されることにより構成情報格納部（図１参照）としての機能を実現させるためのプログラムである。この構成情報格納モジュール１１は、収集モジュール１１１，加工モジュール１１２および格納モジュール１１３をそなえて構成されている。【００５２】
構成情報格納部５１は、同一パーティション内に複数のＴＰＭ（システムボードＳＢ）が存在する場合に、これらの複数のＴＰＭのうち２以上のＴＰＭに対して、それぞれプラットフォーム全体の構成情報を格納する。なお、本実施形態においては、構成情報格納部５１は、同一パーティション内の全てのＴＰＭに対して、それぞれプラットフォーム全体の構成情報を格納する。すなわち、構成情報格納部５１は、同一パーティション内の全てのＴＰＭに対して、それぞれ同一の構成情報を格納する。【００５３】
構成情報収集部５２は、パーティションＰ内からシステムボードＳＢの構成情報を収集するものである。この構成情報収集部５２は、ＣＰＵ２１が、構成情報格納モジュール１１の収集モジュール１１１を実行することにより機能する。
この構成情報収集部５２は、同一パーティションＰ上のファームウェア１０からファームウェア１０のコードやファームウェア１０の設定を収集する。ここで、ファームウェア１０のコードとは、ファームウェア１０のバージョン等の情報であり、ファームウェア１０の設定とは、例えば、プロセッサ・マイクロコード・アップグレード情報や、ＮＶＲＡＭに格納されているファームウェア１０の内部データである。【００５４】
また、構成情報収集部５２は、同一パーティションＰ上のＩ／Ｏ４２から拡張カードのファームウェアのコードや拡張カードのファームウェアの設定を構成情報として収集する。なお、拡張カードのファームウェアコードとは、例えば、Ｉ／Ｏカード上のドライバである。
さらに、構成情報収集部５２は、同一パーティションＰ上のＯＳローダ４１から、ＯＳローダ４１のコードやＯＳローダ４１の設定を構成情報として収集させる。なお、ＯＳローダのコードとは、例えば、ＭＢＲ（Master Boot Record）やGRub等であり、ＯＳローダの設定とは、例えば、ブートデバイス情報やブートパス設定情報である。【００５５】
ＰＣＲ格納制御部５３は、構成情報収集部５２によって収集された構成情報をＴＰＭへ受け渡し可能な状態に加工するものであり、例えば、構成情報を所定のデータ長に揃える。なお、この構成情報のデータ長はＴＣＧにおいて規定されたデータ長であり、本実施形態においては２０バイトである。又、構成情報を所定のデータ長に加工する手法には、既知の種々の手法を用いることができ、その具体的な手法の説明は省略する。【００５６】
また、ＰＣＲ格納制御部５３は、２０バイトのデータ長に加工した構成情報を、同一パーティションＰ内の複数のＴＰＭのＰＣＲ２０にそれぞれ格納する。又、このＰＣＲ格納制御部５３は、ＴＰMに対して、それぞれＴＰＭ毎に固有なハッシュエンジン２２により構成情報をハッシュ化させるようになっており、更に、このハッシュ化した値（ＰＣＲ値）を各ＴＰＭのＰＣＲ２０にそれぞれ格納させる。【００５７】
具体的には、ＰＣＲ格納制御部５３は、２０バイトのデータ長に加工した構成情報を各ＴＰＭに渡すとともに、これらのＴＰＭに対してTPM_Extendコマンドを発行する。又、ＴＰＭにおいては、このTPM_Extendコマンドの処理過程において、ハッシュエンジン２２による構成情報のハッシュ化が行なわれる。
そして、ＣＰＵ２１がファームウェア１０の加工モジュール１１２や格納モジュール１１３を実行することにより、上述したＰＣＲ格納制御部５３として機能する。換言すれば、ＣＰＵ２１が格納モジュール１１３を実行することにより、構成情報収集部５２によって収集された構成情報を、２以上のシステムボードの各ＴＰＭにより、それぞれ独自のハッシュエンジンを用いてハッシュ化してＰＣＲ値を作成させるＰＣＲ値作成制御部として機能する。【００５８】
図５はＰＣＲに格納する構成情報を模式的に示す図である。この図５に示す例においては、例えば、ＰＣＲ［０］に対して、構成情報１〜ＮのＮ個の構成情報がTPM_Extendコマンドにより順次書込まれることを示す。同様に、ＰＣＲ［１］に対して構成情報１〜ＭのＭ個の構成情報が、又、ＰＣＲ［５］に対して構成情報１〜ＬのＬ個の構成情報が、それぞれTPM_Extendコマンドにより順次書込まれることを示している。又、本実施形態においては、各構成情報は２０バイト単位でＲＣＲ２０に書込まれる。【００５９】
ここで、本実施形態の一例としてのサーバにおけるＰＣＲ２０への構成情報の格納手法を、図６に示すフローチャート（ステップＢ１０，Ｂ２０）に従って説明する。
ＰＣＲ格納制御部５３は、ＴＰＭがそなえているTPM_Extendコマンドを用いて、図５に示すような構成情報を１つ選択して、２０バイト単位でＰＣＲに書込む（ステップＢ１０）。【００６０】
この際、ＰＣＲ格納制御部５３は、TPM_Extendコマンドの実行時に構成情報の書き込み先のＰＣＲ２０の指定を行なう。又、構成情報のハッシュ化は、TPM_Extendコマンドの実行処理の中で行なわれるようになっており、このハッシュ化して作成されたＰＣＲ値がＰＣＲ２０に書込まれる。
ＰＣＲ格納制御部５３は、ステップＢ１０においてＰＣＲ２０に書き込みを行なった構成情報が最後のデータ（Last Data）であるか否かを確認する（ステップＢ２０）。ここで、最後でのデータではない、すなわち、まだ書き込みを行なう構成情報がある場合には（ステップＢ２０のＮＯルート参照）、ステップＢ１０に戻る。又、ＰＣＲ２０に書き込みを行なった構成情報が最後のデータであった場合には（ステップＢ２０のＹＥＳルート参照）、処理を終了する。【００６１】
そして、ＰＣＲ格納制御部５３は、全てのＴＰＭに対して、構成情報のＰＣＲ２０への格納処理を行なう。
図７は実施形態の一例としてのサーバにおける構成情報格納部５１によるＰＣＲ２０へのＰＣＲ値の格納処理を説明するための図である。
この図７に示すように、構成情報格納部５１（構成情報収集部５２）は、ファームウェア１０からコードと設定に関する情報とを取得する。そして、構成情報格納部５１（ＰＣＲ格納制御部５３）は、これらの構成情報とともにTPM_ExtendコマンドをシステムボードＳＢ＃０〜ＳＢ＃ｎの各ＴＰＭ＃０〜＃ｎに対してそれぞれ発行する。これにより、各ＴＰＭ＃０〜＃ｎにおいて、それぞれハッシュエンジン２２＃０〜２２＃ｎがこれらの構成情報をハッシュ化し、それぞれＰＣＲ＃０〜＃ｎのＰＣＲ［０］，ＰＣＲ［１］にＰＣＲ値として格納する。【００６２】
同様に、構成情報格納部５１（構成情報収集部５２）は、拡張カード（Ｉ／Ｏ４２）からコードと設定に関する情報とを取得する。そして、構成情報格納部５１（ＰＣＲ格納制御部５３）は、これらの構成情報とともにTPM_ExtendコマンドをシステムボードＳＢ＃０〜ＳＢ＃ｎの各ＴＰＭ＃０〜＃ｎに対してそれぞれ発行する。これにより、各ＴＰＭ＃０〜＃ｎにおいて、それぞれハッシュエンジン２２＃０〜２２＃ｎがこれらの構成情報をハッシュ化し、それぞれＰＣＲ＃０〜＃ｎのＰＣＲ［２］，ＰＣＲ［３］にＰＣＲ値として格納する。【００６３】
さらに、構成情報格納部５１（構成情報収集部５２）は、ＯＳローダ４１からコードと設定に関する情報とを取得する。そして、構成情報格納部５１（ＰＣＲ格納制御部５３）は、これらの構成情報とともにTPM_ExtendコマンドをシステムボードＳＢ＃０〜ＳＢ＃ｎの各ＴＰＭ＃０〜＃ｎに対してそれぞれ発行する。これにより、各ＴＰＭ＃０〜＃ｎにおいて、それぞれハッシュエンジン２２＃０〜２２＃ｎがこれらの構成情報をハッシュ化し、それぞれＰＣＲ＃０〜＃ｎのＰＣＲ［４］，ＰＣＲ［５］にＰＣＲ値として格納する。【００６４】
ＯＳローダ４１は、ＯＳ３０の起動するためのプログラムであり、ＣＰＵ２１に実行されるものである。このＯＳローダ４１は、例えば、ＨＤＤ（Hard Disk Drive）６０の先頭セクタ等に格納される。
ＯＳ３０は、サーバ１００における種々の機能を実現するための基本ソフトウェアであり、ＣＰＵ２１に実行されるものである。このＯＳ３０は、例えば、ＨＤＤ６０等の記憶装置に格納される。【００６５】
また、ＯＳ３０は、図２に示すようにＰＣＲ値読出モジュール３１，ＰＣＲ値管理モジュール３２，ＰＣＲ値比較モジュール３３，ＰＣＲ値設定モジュール３４，ＰＣＲ値更新モジュール３５および継続処理モジュール３６をそなえている。そして、ＣＰＵ２１が、これらのＰＣＲ値読出モジュール３１，ＰＣＲ値管理モジュール３２，ＰＣＲ値比較モジュール３３，ＰＣＲ値設定モジュール３４，およびＰＣＲ値更新モジュール３５をそれぞれ実行することにより、ＰＣＲ値取得部５４，ＰＣＲ値管理データベース５８，ＰＣＲ値比較部（比較部）５５，ＰＣＲ値設定部５７，ＰＣＲ値更新部（更新部）５６および継続処理部５９として機能する。【００６６】
ＰＣＲ値取得部５４は、構成情報が格納された２以上のＴＰＭの各ＰＣＲ２０から、それぞれＰＣＲ値を取得する。
このＰＣＲ値取得部５４は、アンロック状態およびロック状態のいずれの状態においても、パーティションＰの起動時（再起動時を含む）に、２以上のＴＰＭの各ＰＣＲ２０から、それぞれＰＣＲ値を読み出す。【００６７】
ＰＣＲ値データベース５８は、ＰＣＲ値取得部５４によって取得された各ＰＣＲ値を管理するものである。このＰＣＲ値データベース５８は、各ＰＣＲ値を記憶装置（本実施形態においてはＨＤＤ６０）における所定の位置に格納したり、記憶装置に格納されたＰＣＲ値を読み出したりする機能をそなえる。さらに、このＰＣＲ値データベース５８は、例えば、後述するＰＣＲ値比較部５５等からの要求に応じて、ＨＤＤ６０からＰＣＲ値を読み出す。【００６８】
このＰＣＲ値データベース５８は、ＰＣＲ値取得部５４によって取得された各ＰＣＲ値を、各取得元のＴＰＭやシステムボードＳＢに対応付けて管理する。
ＨＤＤ６０は、種々の情報やプログラムを格納する記憶装置である。又、ＨＤＤ６０は、ＰＣＲ値＃０〜＃ｎを格納する。
このＨＤＤ６０には、アンロック状態でパーティションＰ（サーバ１００）を起動する場合に、ＰＣＲ格納制御部５３により各ＰＣＲに格納された各ＰＣＲ値が、各ＴＰＭに対応付けて格納される。すなわち、ＨＤＤ６０には、ＴＰＭ＃０のＰＣＲ（第１の構成レジスタ部）から読み出すＰＣＲ値（第１の構成レジスタ値）がＴＰＭ＃０（第１の起動制御部）に対応付けて格納される。以下、同様に、ＨＤＤ６０には、ＴＰＭ＃ｎのＰＣＲ（第２の構成レジスタ部）から読み出すＰＣＲ値（第２の構成レジスタ値）がＴＰＭ＃ｎ（第２の起動制御部）に対応付けて格納される。なお、ＨＤＤ６０への各ＰＣＲ値の格納や読み出しは、ＰＣＲ値データベース５８によって管理される。【００６９】
ＰＣＲ値設定部５７は、ＰＣＲ値取得部５４によって取得された各ＰＣＲ値をＨＤＤ６０に記憶させ、ＰＣＲ値データベース５８に設定・登録する。
ＰＣＲ値比較部（比較部）５５は、ＰＣＲ値取得部５４によってＰＣＲ２０から取得されたＰＣＲ値と、ＨＤＤ６０に格納されているＰＣＲ値とを比較するものである。このＰＣＲ値比較部５５は、ＰＣＲ値取得部５４によってＰＣＲ２０から取得されたＰＣＲ値について、その取得元のＴＰＭに基づいてＰＣＲ値データベース５８を参照する。そして、ＰＣＲ値比較部５５は、ＨＤＤ６０に格納された複数のＰＣＲ値のうち、そのＴＰＭに対応するＰＣＲ値を取得する。【００７０】
そして、ＰＣＲ値比較部５５は、これらの同一のＴＰＭにかかる、ＰＣＲ値取得部５４によってＰＣＲ２０から取得されたＰＣＲ値とＨＤＤ６０から取得したＰＣＲ値とを比較し、一致するか否かの判断を行なう。
すなわち、ＰＣＲ値比較部５５は、ＰＣＲ値取得部５４によって各ＴＰＭのＰＣＲ２０からそれぞれ取得されたＰＣＲ値を、ＨＤＤ６０に格納された複数のＰＣＲ値のうち、そのＴＰＭに対応するＰＣＲ値とそれぞれ比較するのである。【００７１】
このＰＣＲ値比較部５５は、ロック状態でパーティションＰ（サーバ１００）を起動する場合に、ＴＰＭ＃０について、ＰＣＲ値取得部５４が取得するＰＣＲ値（第１の構成レジスタ値）を、ＨＤＤ６０にＴＰＭ＃０（第１の起動制御部）に対応させて格納されるＰＣＲ値＃０（第１の構成レジスタ値）と比較する。以下、同様に、ＰＣＲ値比較部５５は、ＴＰＭ＃ｎについて、ＰＣＲ値取得部５４が取得するＰＣＲ値（第２の構成レジスタ値）を、ＨＤＤ６０にＴＰＭ＃ｎ（第２の起動制御部）に対応させて格納されるＰＣＲ値＃ｎ（第２の構成レジスタ値）と比較する。【００７２】
また、このＰＣＲ値比較部５５による比較結果は、継続処理制御部５９に通知される。
継続処理制御部５９は、ＰＣＲ値比較部５５による比較の結果、いずれのＴＰＭについても、ＰＣＲ値取得部５４によって取得されたＰＣＲ値とＨＤＤ６０に格納されたＰＣＲ値とが一致しない場合は次の動作を行なう。すなわち、継続処理制御部５９は、パーティションＰにおける構成（ハードウェアもしくはソフトウェア）に変更があったと判断して、エラープロセスを実行させる。【００７３】
なお、このエラープロセスは、例えば、ＯＳ３０による起動処理を抑止したり、警告を出力するものであって、ＯＳ３０のモジュール等のプログラムを実行することにより行なわれる。又、このエラープロセスは既知の種々の手法により実現することができるものであり、その詳細な説明は省略する。
また、継続処理制御部５９は、複数のＴＰＭのうち少なくともいずれか１つのＴＰＭに関して、ＰＣＲ値取得部５４によって取得されたＰＣＲ値とＨＤＤ６０に格納されたＰＣＲ値とが一致した場合に、エラープロセスの実行を抑止し、ＯＳ３０に対してパーティションＰの起動処理を継続して実行させる。【００７４】
継続処理制御部５９は、ＰＣＲ値取得部５４がＴＰＭ＃０のＰＣＲから取得するＰＣＲ値（第１の構成レジスタ値）とＨＤＤ６０にＴＰＭ＃０に対応させて格納されるＰＣＲ値（第１の構成レジスタ値）に係るＰＣＲ値との組の一致をＰＣＲ値比較部５５が検出した場合に、パーティションＰ（サーバ１００）の起動処理を継続する。又は、継続処理制御部５９は、ＰＣＲ値取得部５４がＴＰＭ＃ｎのＰＣＲから取得するＰＣＲ値（第２の構成レジスタ値）とＨＤＤ６０にＴＰＭ＃ｎに対応させて格納されるＰＣＲ値（第２の構成レジスタ値）に係るＰＣＲ値との組の一致をＰＣＲ値比較部５５が検出した場合に、パーティションＰの起動処理を継続する。【００７５】
すなわち、継続処理制御部５９は、複数のＴＰＭにおいて、ＰＣＲ値取得部５４によってＰＣＲ２０から取得されたＰＣＲ値と、ＨＤＤ６０に格納されているＰＣＲ値とで、少なくとも１組が一致した場合に、パーティションＰにおけるプラットフォームの構成が変更されていないと判断する。
これにより、一部のシステムボードＳＢが予備のシステムボードＳＢに交換された場合においても、交換されたシステムボードＳＢ以外のシステムボードＳＢにおいてＰＣＲ値が少なくとも１組一致する場合にはエラープロセスが実行されない。すなわち、交換されたシステムボードＳＢ以外のシステムボードＳＢにおいて、ＴＰＭのＰＣＲ２０に格納されたＰＣＲ値と、当該ＴＰＭに対応させてＨＤＤ６０に格納されているＰＣＲ値とが少なくとも１組一致する場合にはエラープロセスは実行されない。これにより、そのパーティションＰの起動処理が継続して実行される。【００７６】
ＰＣＲ値更新部５６は、ＨＤＤ６０におけるそのＴＰＭに対応付けられたＰＣＲ値を更新するものである。ＰＣＲ値更新部５６は、ＰＣＲ値比較部５５による比較の結果、複数のＴＰＭのうち少なくともいずれか１つに関してＰＣＲ値が一致し、更に、ＰＣＲ値が一致しないものもある場合に、ＰＣＲ値が不一致なＴＰＭについて、ＨＤＤ６０におけるＰＣＲ値を更新する。【００７７】
ここで、複数のＴＰＭのうち少なくともいずれか１つに関してＰＣＲ値が一致するとは、複数のＴＰＭのうち少なくともいずれか１つに関してＰＣＲ値取得部５４によって取得されたＰＣＲ値とＨＤＤ６０に格納されたＰＣＲ値とが一致することである。又、ＰＣＲ値が一致しないものもあるとは、ＰＣＲ値取得部５４によって取得されたＰＣＲ値と記憶部に格納されたＰＣＲ値とが一致しないものがあることをいう。更に、ＰＣＲ値の更新は、ＰＣＲ値が不一致なＴＰＭについて、ＰＣＲ値取得部５４によって取得したＰＣＲ値により、ＨＤＤ６０におけるそのＴＰＭに対応付けられたＰＣＲ値を更新することにより行なう。【００７８】
また、ＰＣＲ値更新部５６は、このＨＤＤ６０における不一致が生じたＰＣＲ値を更新するとともに、その更新内容をＰＣＲ値データベース５８にも反映させる。
これにより、パーティションＰにおける一部のシステムボードＳＢが、予備のシステムボードＳＢに交換された場合に、この交換された予備のシステムボードＳＢのＴＰＭのＰＣＲ２０に格納されているＰＣＲ値が、そのＴＰＭに対応させてＨＤＤ６０に登録される。【００７９】
従って、そのパーティションＰが次回に起動される際には、そのＴＰＭに関して、ＰＣＲ値取得部５４によって取得されたＰＣＲ値とＨＤＤ６０に格納されたＰＣＲ値とが一致することになる。
そして、ＣＰＵ２１が、上述したファームウェア１０を実行することにより、上述した構成情報格納部５１（構成情報収集部５２，ＰＣＲ格納制御部５３）として機能する。又、ＣＰＵ２１が、ＯＳ３０を実行することにより、上述したＰＣＲ値取得部５４，ＰＣＲ値設定部５７，ＰＣＲ値比較部５５，ＰＣＲ値更新部５６，ＰＣＲ値データベース５８および継続処理制御部５９として機能する。【００８０】
なお、上述した符号５１〜５９によって示された各部としての機能を実現するためのプログラムは、コンピュータ読取可能な記録媒体に記録された形態で提供される。
すなわち、このプログラムには、構成情報格納モジュール１１，ＰＣＲ値読出モジュール３１，ＰＣＲ値管理モジュール３２，ＰＣＲ値比較モジュール３３，ＰＣＲ値設定モジュール３４，ＰＣＲ値更新モジュール３５および継続処理モジュール３６が含まれる。又、構成情報格納モジュール１１には、収集モジュール１１１，加工モジュール１１２，格納モジュール１１３を含む。【００８１】
また、この記録媒体としては、例えば、フレキシブルディスク，ＣＤ，ＤＶＤ，ブルーレイディスク，磁気ディスク，光ディスク，光磁気ディスク等を用いることができる。なお、ＣＤには、ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷ等を含む。又、ＤＶＤには、ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ＋Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋ＲＷ，ＨＤ  ＤＶＤ等を含む。【００８２】
そして、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。又、そのプログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信経路を介してコンピュータに提供するようにしてもよい。
上述した符号５１〜５９によって示された各部としての機能を実現する際には、内部記憶装置（ＲＡＭやＲＯＭ）に格納されたプログラムがコンピュータのマイクロプロセッサ（本実施形態ではＣＰＵ２１）によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータが読み取って実行するようにしてもよい。【００８３】
なお、本実施形態において、コンピュータとは、ハードウェアとオペレーティングシステムとを含む概念であり、オペレーティングシステムの制御の下で動作するハードウェアを意味している。又、オペレーティングシステムが不要でアプリケーションプログラム単独でハードウェアを動作させるような場合には、そのハードウェア自体がコンピュータに相当する。ハードウェアは、少なくとも、ＣＰＵ等のマイクロプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取るための手段とをそなえており、本実施形態においては、サーバ１００やパーティションＰがコンピュータとしての機能を有しているのである。【００８４】
また、上述した構成情報格納モジュール１１，ＰＣＲ値読出モジュール３１，ＰＣＲ値管理モジュール３２，ＰＣＲ値比較モジュール３３，ＰＣＲ値設定モジュール３４，ＰＣＲ値更新モジュール３５および継続処理モジュール３６は、ドライバとして提供されてもよい。
上述の如く構成された、実施形態の一例としてのサーバ１００におけるパーティションＰの起動時の処理を、図８に示すフローチャート（ステップＣ１０〜Ｃ１４０）に従って説明する。【００８５】
サーバ１００に電源が投入されると（Power On）、ファームウェア１０は、パーティションＰのプラットフォーム全体の構成情報（図５参照）を収集する（ステップＣ１０）。
そして、ファームウェア１０は、パーティションＰ内の複数（本実施形態においては全て）のＴＰＭに対して、収集した構成情報とともにTPM_Extendコマンドを発行する。これにより、ファームウェア１０は、各ＴＰＭが持っている機能（ハッシュエンジン２２等）を用いて、それぞれ収集した構成情報をハッシュ化させて各ＰＣＲ２０に格納させる（ステップＣ２０）。なお、これらのＰＣＲへの構成情報の格納手法については、図６のフローチャートを用いて前述している。【００８６】
その後、アンロック状態において、ＯＳ３０が、各ＴＰＭのＰＣＲ２０からＰＣＲ値をそれぞれ読み出して、それぞれＨＤＤ６０に保存する（ステップＣ３０）。
ＯＳ３０は、パーティションＰをアンロック状態からロック状態に変更し（ステップＣ４０）、パーティションＰを再起動（Reboot）させる（ステップＣ５０）。以後、パーティションＰは、ロック状態において運用される。【００８７】
パーティションＰの再起動時において、ファームウェア１０は、パーティションＰのプラットフォーム全体の構成情報を収集する（ステップＣ６０）。又、ファームウェア１０は、パーティションＰ内の複数（本実施形態においては全て）のＴＰＭに対して、構成情報とともにTPM_Extendコマンドを発行する。これにより、ファームウェア１０は、各ＴＰＭが持っている機能を用いて、それぞれ収集した構成情報をハッシュ化させて各ＰＣＲ２０に格納させる（ステップＣ７０）。【００８８】
ＯＳ３０は、ロック状態において、ＴＰＭのＰＣＲ２０からＰＣＲ値を読み出し（ステップＣ８０）、ＨＤＤ６０に格納されている各ＰＣＲ値と、ＴＰＭのＰＣＲ２０から読み出した各ＰＣＲ値とをそれぞれ比較する（ステップＣ９０）。
そして、ＯＳ３０は、ＨＤＤ６０に格納されているＰＣＲ値と、ＴＰＭから読み出したＰＣＲ値とが少なくとも１組一致するかを確認し（ステップＣ１００）。その結果、いずれのＰＣＲ値の組においても一致しない場合には（ステップＣ１００のＮＯルート参照）、ＯＳ３０は、パーティションＰ内のプラットフォームが変更されたと判断する。そして、ＯＳ３０は、パーティションＰの起動を抑止したり、オペレータに対して警告を行なう等のエラープロセスを実行する（ステップＣ１１０）。【００８９】
一方、ＨＤＤ６０に格納されているＰＣＲ値と、ＴＰＭから読み出したＰＣＲ値とが少なくとも１組一致した場合には（ステップＣ１００のＹＥＳルート参照）、ＯＳ３０は、次に、不一致の組が１つ以上あるか否かを確認する。すなわち、ＯＳ３０は、これらのＨＤＤ６０に格納されているＰＣＲ値とＴＰＭから読み出したＰＣＲ値とで不一致の組が１つ以上あるか否かを確認する（ステップＣ１２０）。【００９０】
ここで、ＨＤＤ６０に格納されているＰＣＲ値とＴＰＭから読み出したＰＣＲ値との組が全て一致する場合には（ステップＣ１２０のＮＯルート参照）、継続処理制御部５９が、ＯＳ３０による以降の起動処理を継続して実行させて、パーティションＰを正常に起動させる（ステップＣ１４０）。
また、ＨＤＤ６０に格納されているＰＣＲ値とＴＰＭから読み出したＰＣＲ値とで不一致の組が一つでもある場合には（ステップＣ１２０のＹＥＳルート参照）、ＰＣＲ値更新部５６がＰＣＲ値を更新させる。すなわち、ＰＣＲ値更新部５６は、このＰＣＲ値が不一致であるＴＰＭについて、ＰＣＲ値取得部５４によって取得したＰＣＲ値により、ＨＤＤ６０におけるそのＴＰＭに対応付けられたＰＣＲ値を更新させる（ステップＣ１３０）。その後、ステップＣ１４０に移行する。【００９１】
次に、本サーバ１００のパーティションＰにおいて、いずれかのシステムボードＳＢにエラーが生じた場合の処理を説明する。なお、ＴＰＭによる構成ロック機能は有効であるものとする。
図９（ａ）〜（ｃ）は実施形態の一例としてのサーバ１００のパーティションＰにおいてシステムボードＳＢの交換が生じた場合の処理を説明するための図である。【００９２】
パーティションＰのロック状態での起動時において、システムボードＳＢのＴＰＭのＰＣＲ２０と、ＨＤＤ６０（ＰＣＲ値データベース５８）に格納されている対応するＴＰＭのＰＣＲ値とが、少なくとも１組一致している場合には、図９（ａ）に示すように、ＯＳ３０（継続処理制御部５９）は正常に起動処理を完了させる。
ここで、図９（ｂ）に示すように、パーティションＰ内のいずれかのシステムボードＳＢ（図９（ｂ）に示す例においてはシステムボードＳＢ＃０）でエラーが発生したものとする。【００９３】
このような場合においては、図９（ｃ）に示すように、スワップ機能により、パーティションＰのリブート後に、エラーが発生したシステムボードＳＢ＃０が切り離され、予備のシステムボードＳＢ＃ＲがパーティションＰに組み込まれる。
なお、このスワップ機能により、予備のシステムボードＳＢ＃Ｒについては、そのＰＣＲ２０＃Ｒに格納されているＰＣＲ値は、ＰＣＲ値データベース５８によって管理されているＴＰＭ＃０に対応するＰＣＲ値と一致しない。【００９４】
しかしながら、本サーバ１００においては、リブート時にシステムボードＳＢ＃０を予備のシステムボードＳＢ＃Ｒと交換した場合であっても、他のシステムボードＳＢ＃１〜＃ｎについてＰＣＲ値が一致する。すなわち、他のシステムボードＳＢ＃１〜＃ｎにおいて、そのＴＰＭ＃１〜＃ｎのＰＣＲに格納されている値と、ＰＣＲ値データベース５８によって管理されているＴＰＭ＃１〜＃ｎに対応するＰＣＲ値がそれぞれ一致する。これにより、ＯＳ３０（継続処理制御部５９）は正常に起動プロセスを完了させる。【００９５】
また、予備のシステムボードＳＢ＃Ｒについては、ＴＰＭ＃１〜＃ｎのＰＣＲに格納されている値と、ＰＣＲ値データベース５８によって管理されているＴＰＭ＃１〜＃ｎに対応するＰＣＲ値がそれぞれ一致する。これにより、ＰＣＲ値更新部５６は、ＴＰＭ＃ＲのＰＣＲ２０＃Ｒに格納されているＰＣＲ値により、ＰＣＲ値データベース５８によって管理されているＴＰＭ＃０に対応するＰＣＲ値を更新する。【００９６】
ここで、パーティションＰのいずれかのシステムボードＳＢにおいて、ファームウェア１０やＩ／Ｏ４２等のプラットフォームに対して何らかの改ざんが行なわれた場合について検討する。プラットフォームに改ざんが行なわれた場合には、そのパーティションＰの起動時に、構成情報収集部５２によって、これらのプラットフォームから収集される構成情報が変わることになる。【００９７】
そして、この変更された構成情報が、ＰＣＲ格納制御部５３により各ＴＰＭに送られ、各ＴＰＭにおいてハッシュエンジン２２によりハッシュ化される。従って、各ＴＰＭのＰＣＲ２０に格納されるＰＣＲ値もそれぞれ変わることになる。
これらのＰＣＲ２０に格納されたＰＣＲ値は、ＰＣＲ値取得部５４によって取得され、ＰＣＲ値比較部５５により、それぞれ、ＨＤＤ６０に格納されているＰＣＲ値と比較され、いずれのＴＰＭに関してもＰＣＲ値の不一致が検出される。【００９８】
そして、全てのＴＰＭに関してＰＣＲ値が不一致であるので、継続処理制御部５９は、エラープロセスの実行を抑止することがなく、エラープロセスが実行され、起動処理の中止や警告の出力等が行なわれる。すなわち、パーティションＰにおける改ざんが検出され、この改ざん検出に伴って行なわれるべき処理が確実に実行され、ＴＰＭの機能を用いたセキュアブートが実現される。これにより、信頼性の高いシステム運用を行なうことができる。【００９９】
また、この場合、ＰＣＲ値変更部５６においては、ＰＣＲ値比較部５５によるＰＣＲ値の比較の結果、複数のＴＰＭのいずれにおいても、ＰＣＲ値取得部５４によって取得されたＰＣＲ値とＨＤＤ６０に格納されたＰＣＲ値とが一致しないので、ＨＤＤ６０のＰＣＲ値の更新は行なわない。これにより、改ざんされたプラットフォームの構成情報に基づくＰＣＲ値がＨＤＤ６０に格納されることがなく、システムの信頼性を維持することができる。【０１００】
このように、本サーバ１００によれば、エラーが生じたシステムボードＳＢを、同様の構成を有する予備のシステムボードＳＢ＃Ｒと交換する場合に、ＰＣＲ値の少なくとも一組が一致した場合にプラットフォームが改ざんされていないと判断する。
すなわち、交換を行なわない他のシステムボードＳＢのＴＰＭにかかるＰＣＲ値と、ＰＣＲ値データベース５８によって管理されている、これらのシステムボードＳＢに対応するＰＣＲ値との少なくとも一組が一致した場合に、ＯＳ３０の起動プロセスを完了させる。【０１０１】
これにより、エラーが生じたシステムボードＳＢを予備のシステムボードＳＢ＃Ｒに交換する場合に、パーティションＰにおける業務の停止時間を最低限にすることができる。これにより、ミッションクリティカルな業務への影響を最低限に留めることができる。又、ＴＰＭの機能を有効に使用することができ、信頼性を向上させることもできる。
また、交換した予備のシステムボードＳＢ＃Ｒについては、パーティションＰの構成に変更がないことが確認できたことを条件に、ＰＣＲ値更新部５６が、ＰＣＲ値データベース５８によって管理されているＴＰＭ＃０に対応するＰＣＲ値を更新する。すなわち、ＰＣＲ値更新部５６は、ＴＰＭ＃ＲのＰＣＲ２０＃Ｒに格納されているＰＣＲ値により、ＰＣＲ値データベース５８によって管理されているＴＰＭ＃０に対応するＰＣＲ値を更新する。【０１０２】
これにより、次回のパーティションＰの起動時において、単にスワップ機能によりシステムボードＳＢ＃０がシステムボードＳＢ＝Ｒに交換されたことだけを理由に、パーティションＰの起動が抑止されることがない。又、ＴＰＭを用いたセキュアブートを実施することができる。
さらに、パーティションＰのいずれかのシステムボードＳＢにおいて、ファームウェア１０やＩ／Ｏ４２等のプラットフォームの改ざんが行なわれた場合には、その改ざんを確実に検出してエラープロセスを実行することができ、ＴＰＭの機能を用いた信頼性の高いシステム運用を行なうことができる。【０１０３】
また、改ざんされたプラットフォームの構成情報に基づくＰＣＲ値がＨＤＤ６０に格納されることがなく、システムの信頼性を維持することができる。
なお、上述した実施形態に関わらず、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。
例えば、上述した実施形態においては、１つの予備のシステムボードＳＢ＃Ｒをそなえ、エラーが生じたシステムボードＳＢ＃０をこのシステムボードＳＢ＃Ｒと交換する例を示しているが、これに限定されるものではない。例えば、２以上の予備のシステムボードＳＢをそなえ、エラーが生じた２以上のシステムボードＳＢを、これらの２以上の予備のシステムボードＳＢと交換してもよい。【０１０４】
上述した開示により本実施形態を当業者によって実施・製造することが可能である。
【図１】
2010113266.tif 000003
【図２】
2010113266.tif 000004
【図３】
2010113266.tif 000005
【図４】
2010113266.tif 000006
【図５】
2010113266.tif 000007
【図６】
2010113266.tif 000008
【図７】
2010113266.tif 000009
【図８】
2010113266.tif 000010
【図９】
2010113266.tif 000011
【図１０】
2010113266.tif 000012
【図１１】
2010113266.tif 000013
【図１２】
2010113266.tif 000014
【図１３】
2010113266.tif 000015
【手続補正書】
【提出日】平成23年9月16日(2011.9.16)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
情報処理装置において、
それぞれが、ハッシュ演算を行うハッシュ演算部と、起動制御を行う起動制御部と、ハードウェア資源とを備える複数の処理部と、
前記各処理部が備えるハードウェア資源の構成情報をそれぞれ収集する構成情報収集部と、
前記構成情報収集部が収集する各処理部のハードウェア資源の構成情報に対して対応する処理部のハッシュ演算部がハッシュ演算して生成した構成レジスタ値を、対応する処理部の起動制御部が備える構成レジスタ部に格納させる構成レジスタ制御部と、
前記情報処理装置の構成変更を検出しないで前記情報処理装置を起動する場合に、前記構成レジスタ制御部が各構成レジスタ部から読み出す構成レジスタ値を対応する処理部の起動制御部に対応付けて格納する記憶部と、
前記情報処理装置の構成変更を検出して前記情報処理装置を起動する場合に、各構成レジスタ部に格納される構成レジスタ値をそれぞれ取得する構成レジスタ値取得部と、
前記構成レジスタ値取得部が取得する構成レジスタ値を、各起動制御部に対応させて前記記憶部に格納されている構成レジスタ値と比較する比較部と、
前記比較部が、前記構成レジスタ値取得部が取得する構成レジスタ値と前記記憶部に格納されている構成レジスタ値との組のいずれかが一致することを検出した場合に、前記情報処理装置の起動処理を継続する継続処理制御部を有することを特徴とする情報処理装置。
【請求項２】
前記情報処理装置において、
前記比較部が、前記構成レジスタの組のいずれかの組が一致し、他の組のいずれかが不一致であることを検出した場合に、不一致が検出された組に対応する処理部の起動制御部に対応させて格納された構成レジスタ値を、前記構成レジスタ値取得部が取得した当該組に対応する構成レジスタ値で更新する更新部を有することを特徴とする請求項１記載の情報処理装置。
【請求項３】
それぞれ、ハッシュ演算を行うハッシュ演算部と、起動制御を行う起動制御部と、ハードウェア資源とを備える複数の処理部を有する情報処理装置の起動方法において、
前記情報処理装置の起動時に前記情報処理装置の構成変更を検出するか否かを決定するステップと、
前記情報処理装置の構成変更を検出する場合に、前記情報処理装置が有する構成情報収集部が、各処理部のハードウェア資源の構成情報をそれぞれ収集するステップと、
前記情報処理装置が有する構成レジスタ制御部が、前記構成情報収集部が収集するハードウェア資源の構成情報に対して対応する処理部のハッシュ演算部がハッシュ演算を行い生成した構成レジスタ値を、対応する処理部の起動制御部が備える構成レジスタ部に格納するステップと、
前記情報処理装置が有する構成レジスタ値取得部が、各構成レジスタ部に格納される構成レジスタ値をそれぞれ取得するステップと、
前記情報処理装置が有する比較部が、前記構成レジスタ値取得部が取得する各構成レジスタ値を、前記記憶部に各起動制御部に対応させて格納される構成レジスタ値と比較するステップと、
前記比較部が、前記構成レジスタ値取得部が取得する構成レジスタ値と前記記憶部に格納される構成レジスタ値との組のいずれかが一致することを検出した場合に、前記情報処理装置が有する継続処理制御部が、前記情報処理装置の起動処理を継続するステップを有することを特徴とする情報処理装置の起動方法。
【請求項４】
前記情報処理装置の構成変更を検出しないで前記情報処理装置を起動する場合には、前記情報処理装置が有する記憶部に、前記構成レジスタ制御部が各構成レジスタ部から読み出す構成レジスタ値を各処理部の起動制御部に対応付けて格納するステップを有することを特徴とする請求項３記載の起動方法。
【請求項５】
前記情報処理装置の起動方法はさらに、
前記比較部が、前記構成レジスタの組のいずれかの組が一致し、他の組のいずれかが不一致であることを検出した場合に、前記情報処理装置が有する更新部が、不一致が検出された組に対応する処理部の起動制御部に対応させて格納された構成レジスタ値を、前記構成レジスタ値取得部が取得した対応する構成レジスタ値で更新するステップを有することを特徴とする請求項３又は４記載の情報処理装置の起動方法。
【請求項６】
演算を行う演算処理装置と、それぞれ、ハッシュ演算を行うハッシュ演算部と、起動制御を行う起動制御部と、ハードウェア資源とを備える複数の処理部とを有する情報処理装置の起動プログラムにおいて、
前記演算処理装置に、
前記情報処理装置の起動時に前記情報処理装置の構成変更を検出するか否かを決定するステップと、
前記情報処理装置の構成変更を検出する場合に、前記情報処理装置が有する構成情報収集部が、各処理部のハードウェア資源の構成情報をそれぞれ収集するステップと、
前記情報処理装置が有する構成レジスタ制御部が、前記構成情報収集部が収集するハードウェア資源の構成情報に対して対応する処理部のハッシュ演算部がハッシュ演算を行い生成した構成レジスタ値を、対応する処理部の起動制御部が備える構成レジスタ部に格納するステップと、
前記情報処理装置が有する構成レジスタ値取得部が、各構成レジスタ部に格納される構成レジスタ値をそれぞれ取得するステップと、
前記情報処理装置が有する比較部が、前記構成レジスタ値取得部が取得する各構成レジスタ値を、前記記憶部に各起動制御部に対応させて格納される構成レジスタ値と比較するステップと、
前記比較部が、前記構成レジスタ値取得部が取得する構成レジスタ値と前記記憶部に格納される構成レジスタ値との組のいずれかが一致することを検出した場合に、前記情報処理装置が有する継続処理制御部が、前記情報処理装置の起動処理を継続するステップを実行させることを特徴とする情報処理装置の起動プログラム。
【請求項７】
前記情報処理装置の起動プログラムはさらに、
前記演算処理装置に、
前記比較部が、前記構成レジスタの組のいずれかの組が一致し、他の組のいずれかが不一致であることを検出した場合に、前記情報処理装置が有する更新部が、不一致が検出された組に対応する処理部の起動制御部に対応させて格納された構成レジスタ値を、前記構成レジスタ値取得部が取得した対応する構成レジスタ値で更新するステップを実行させることを特徴とする請求項６記載の情報処理装置の起動プログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００２１
【補正方法】変更
【補正の内容】
【００２１】
このため、この情報処理装置は、それぞれが、ハッシュ演算を行うハッシュ演算部と、ハードウェア資源とを備える複数の処理部と、前記各処理部が備えるハードウェア資源の構成情報をそれぞれ収集する構成情報収集部と、前記構成情報収集部が収集する各処理部のハードウェア資源の構成情報に対して対応する処理部のハッシュ演算部がハッシュ演算して生成した構成レジスタ値を、対応する処理部の起動制御部が備える構成レジスタ部に格納させる構成レジスタ制御部と、前記情報処理装置の構成変更を検出しないで前記情報処理装置を起動する場合に、前記構成レジスタ制御部が各構成レジスタ部から読み出す構成レジスタ値を対応する処理部の起動制御部に対応付けて格納する記憶部と、前記情報処理装置の構成変更を検出して前記情報処理装置を起動する場合に、各構成レジスタ部に格納される構成レジスタ値をそれぞれ取得する構成レジスタ値取得部と、前記構成レジスタ値取得部が取得する構成レジスタ値を、各起動制御部に対応させて前記記憶部に格納されている構成レジスタ値と比較する比較部と、前記比較部が、前記構成レジスタ値取得部が取得する構成レジスタ値と前記記憶部に格納されている構成レジスタ値との組のいずれかが一致することを検出した場合に、前記情報処理装置の起動処理を継続する継続処理制御部を有する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００２２
【補正方法】変更
【補正の内容】
【００２２】
また、この情報処理装置の起動方法は、それぞれ、ハッシュ演算を行うハッシュ演算部と、起動制御を行う起動制御部と、ハードウェア資源とを備える複数の処理部を有する情報処理装置の起動方法において、前記情報処理装置の起動時に前記情報処理装置の構成変更を検出するか否かを決定するステップと、前記情報処理装置の構成変更を検出する場合に、前記情報処理装置が有する構成情報収集部が、各処理部のハードウェア資源の構成情報をそれぞれ収集するステップと、前記情報処理装置が有する構成レジスタ制御部が、前記構成情報収集部が収集するハードウェア資源の構成情報に対して対応する処理部のハッシュ演算部がハッシュ演算を行い生成した構成レジスタ値を、対応する処理部の起動制御部が備える構成レジスタ部に格納するステップと、前記情報処理装置が有する構成レジスタ値取得部が、各構成レジスタ部に格納される構成レジスタ値をそれぞれ取得するステップと、前記情報処理装置が有する比較部が、前記構成レジスタ値取得部が取得する各構成レジスタ値を、前記記憶部に各起動制御部に対応させて格納される構成レジスタ値と比較するステップと、前記比較部が、前記構成レジスタ値取得部が取得する構成レジスタ値と前記記憶部に格納される構成レジスタ値との組のいずれかが一致することを検出した場合に、前記情報処理装置が有する継続処理制御部が、前記情報処理装置の起動処理を継続するステップを有する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００２３
【補正方法】変更
【補正の内容】
【００２３】
さらに、この情報処理装置の起動プログラムは、演算を行う演算処理装置と、それぞれ、ハッシュ演算を行うハッシュ演算部と、起動制御を行う起動制御部と、ハードウェア資源とを備える複数の処理部とを有する情報処理装置の起動プログラムにおいて、前記演算処理装置に、前記情報処理装置の起動時に前記情報処理装置の構成変更を検出するか否かを決定するステップと、前記情報処理装置の構成変更を検出する場合に、前記情報処理装置が有する構成情報収集部が、各処理部のハードウェア資源の構成情報をそれぞれ収集するステップと、前記情報処理装置が有する構成レジスタ制御部が、前記構成情報収集部が収集するハードウェア資源の構成情報に対して対応する処理部のハッシュ演算部がハッシュ演算を行い生成した構成レジスタ値を、対応する処理部の起動制御部が備える構成レジスタ部に格納するステップと、前記情報処理装置が有する構成レジスタ値取得部が、各構成レジスタ部に格納される構成レジスタ値をそれぞれ取得するステップと、前記情報処理装置が有する比較部が、前記構成レジスタ値取得部が取得する各構成レジスタ値を、前記記憶部に各起動制御部に対応させて格納される構成レジスタ値と比較するステップと、前記比較部が、前記構成レジスタ値取得部が取得する構成レジスタ値と前記記憶部に格納される構成レジスタ値との組のいずれかが一致することを検出した場合に、前記情報処理装置が有する継続処理制御部が、前記情報処理装置の起動処理を継続するステップを実行させる。
【手続補正５】
【補正対象書類名】図面
【補正対象項目名】図２
【補正方法】変更
【補正の内容】
【図２】
2010113266.tif 000016
【国際調査報告】
2010113266.tif 000017
2010113266.tif 000018
2010113266.tif 000019
2010113266.tif 000020