JP5287980B2 - 情報処理装置,情報処理装置の起動制御方法及び起動プログラム - Google Patents

情報処理装置,情報処理装置の起動制御方法及び起動プログラム Download PDF

Info

Publication number
JP5287980B2
JP5287980B2 JP2011506891A JP2011506891A JP5287980B2 JP 5287980 B2 JP5287980 B2 JP 5287980B2 JP 2011506891 A JP2011506891 A JP 2011506891A JP 2011506891 A JP2011506891 A JP 2011506891A JP 5287980 B2 JP5287980 B2 JP 5287980B2
Authority
JP
Japan
Prior art keywords
unit
configuration register
configuration
information processing
processing apparatus
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2011506891A
Other languages
English (en)
Other versions
JPWO2010113266A1 (ja
Inventor
洋村 島谷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2010113266A1 publication Critical patent/JPWO2010113266A1/ja
Application granted granted Critical
Publication of JP5287980B2 publication Critical patent/JP5287980B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping

Description

本件は、セキュリティ機能モジュール(TPM;Trusted Platform Module)を搭載したシステムボードを複数そなえた情報処理装置における起動制御に関する。
近年、TPM等のセキュリティチップ(セキュリティ機能モジュール)を内蔵し、セキュリティレベルを向上させた情報処理端末(情報処理装置)が知られている。
TPMは、業界標準団体であるTCG(Trusted Computing Group)によって定義された仕様に準拠するセキュリティ制御部としてのセキュリティチップである。TPMは、例えば、情報処理装置のマザーボード(システムボード;System Board)に実装され、セキュア通信で利用される暗号鍵(コア暗号鍵)等を格納する不揮発性メモリや、暗号処理専用のマイクロプロセッサをそなえて構成されている。
そして、情報処理装置においては、その起動時にTPMを用いて、ハードウェアやソフトウェアが改ざんされていないかのチェックを行ない、何らかの不正を発見した場合に起動を阻止することにより、ハードウェアレベルでのセキュリティ管理を実現する。
図10は従来のPC(Personal Computer)の構成を模式的に示す図、図11は情報処理装置におけるTPMの接続状態を模式的に示す図、図12は従来のPCにおけるPCR(Platform Configuration Registers)値の格納手法を説明するための図である。
情報処理装置であるPC1001を図10に開示する。PCは、OS(Operating System)1002,OSローダ(OS LOADER)1003,ファームウェア(Firmware)1004,演算処理装置としてのCPU(Central Processing Unit)1005,I/Oカード1006およびTPM1007をそなえる。
TPM1007はPCR1008とハッシュエンジン1011(図12参照)とをそなえる。ハッシュエンジン1011は、ハッシュ・アルゴリズムと呼ばれる数学的な手法を用いて、PC1001の構成情報(バイナリ・コード)をハッシュ値と呼ばれるユニークな値に変換するものであり、例えば、マイクロプロセッサにより実現される。
構成情報としては、例えば、ファームウェア1004のコードや設定,拡張カード1006のファームウェアのコードや設定,OSローダ1003のコードや設定等が用いられる。
これらの構成情報が、システムボードSB#00(図12参照)に搭載されたTPM1007のハッシュエンジン1011によってハッシュ化され、PCR1008にPCR値として格納される。
PCR1008は、プラットフォームの情報を格納するレジスタであって、上述したハッシュエンジン1011によって作成されたハッシュ値(PCR値)等を保持する。このPCR1008は、メモリ等の記憶回路によって実現される。
図12に示す例においては、PCR1008にPCR0〜PCR5の5つの格納領域が示されており、ファームウェア1004のコードをハッシュ化した値がPCR[0]に格納される。同様に、ファームウェア1004の設定をハッシュ化した値が、PCR[1]に、拡張カード1006のファームウェアのコードをハッシュ化した値がPCR[2]に、拡張カード1006のファームウェアの設定をハッシュ化した値がPCR[3]に、それぞれ格納される。又、OSローダ1003のコードをハッシュ化した値がPCR[4]に、OSローダ1003の設定をハッシュ化した値がPCR[5]に、それぞれ格納される。
ファームウェア1004は、PC1001の起動時において、プラットフォームの構成情報を収集し、この構成情報をTPM1007内のハッシュエンジンによりPCR値(ハッシュ値,構成測定値)に変換させて、PCR1008に格納させる。
また、PCR値がPCR1008に格納される際には、PCR1008に既に格納されているPCR値と追加する構成情報の値とをハッシュ化したものが格納される。PCR値は、過去の書き込み値とハッシュ化されることにより、特定の値に改ざんすることが困難である。
TPM1007は、図11に示すように、PC1001においてサウスブリッジ(South Bridge)1009に接続されており、OS1002等が、このサウスブリッジ1009を介して、TPM1007のPCR1008に格納されたPCR値を読み出すことができる。
PC1001においては、このPCR1008から読み出したPCR値を用いて、プラットフォームの構成変更の有無を検出する。なお、以下、PCR値を用いて構成変更を検出する機能のことを構成ロック機能という。
構成ロック機能においては、先ず、PC1001の起動時に、ファームウェア1004が、システムボードの構成情報をTPM1007に格納する。この際、構成情報は、TPM1007のハッシュエンジン1011でハッシュ化され、PCR1008にPCR値として格納される。
また、構成ロック機能には、ロック状態とアンロック状態がある。アンロック状態でPC1001が起動した場合、OS1002は、TPM1007のPCR1008に格納されているPCR値を読み出して、HDD(Hard Disk Drive)1010に保存する(図11の矢印A参照)。なお、アンロック状態とは、PC1001の起動時に構成変更の有無をチェックしない状態をいう。
一方、ロック状態でPC1001が起動した場合、OS1002は、HDD1010に格納されたPCR値を読み出し、HDD1010に格納されているPCR値と、TPM1007のPCR1008に格納されているPCR値とを比較する(図11の矢印B参照)。なお、ロック状態とは、PC1001の起動時に構成変更の有無をチェックする状態をいう。
OS1002は、ロック状態において、TPM1007のPCR1008に格納されているPCR値とHDD1010に格納されたPCR値とが一致した場合には、PC1001の構成に変更がないと判断して、PC1001を正常に起動させる。一方、これらのPCR値が不一致の場合には、OS1002は、PC1001の構成が変更されたと判断して、例えば、OS1002のそれ以降の処理(起動処理)を抑止したり、オペレータに対して警告を出力する。
従来のPC1001における起動時の処理を、図13に示すフローチャート(ステップA10〜A100)に従って説明する。
PC1001に電源が投入されると(Power On)、ファームウェア1004は、TPM1007に構成情報を格納する。この際、構成情報は、TPM1007のハッシュエンジン1011でハッシュ化され、PCR値としてPCR1008に格納される(ステップA10)。
そして、アンロック状態において、OS1002が、TPM1007のPCR1008からPCR値を読み出して、HDD1010に保存する(ステップA20)。
OS1002は、PC1001をアンロック状態からロック状態に変更し(ステップA30)、PC1001が再起動(Reboot)される(ステップA40)。
この再起動プロセスにおいて、ファームウェア1004は、構成情報をTPM1007に格納する。この際、構成情報は、TPM1007のハッシュエンジン1011でハッシュ化され、PCR値としてPCR1008に格納される(ステップA50)。
OS1002は、ロック状態において、TPM1007のPCR1008からPCR値を読み出し(ステップA60)、このTPM1007から読み出したPCR値と、HDD1010に格納されているPCR値との比較を行なう(ステップA70)。
すなわち、OS1002は、HDD1010に格納されているPCR値と、TPM1007から読み出したPCR値とが一致するか否かの比較を行なう(ステップA80)。この比較の結果、PCR値が一致しない場合には(ステップA80のNOルート参照)、OS1002は、PC1001の構成が変更されたと判断して、PC1001の起動を抑止したり、オペレータに対して警告を行なう(ステップA100)。
一方、PCR値が一致した場合には(ステップA80のYESルート参照)、OS1002は以降の起動処理を継続して実行することによりPC1001を正常に起動させる(ステップA90)。
特開2006−323814号公報 特開2005−301550号公報
さて、上述の如きTPMを搭載したシステムボードを、システムボードを複数そなえるサーバシステムに適用する場合について考える。
例えば、基幹システムで運用されるサーバシステムでは高い可用性や柔軟なリソース(ハードウェア資源)の運用が要求される。このような高い可用性や柔軟なリソース運用を実現するための手法として、サーバシステムにおいて、1台のサーバシステムを複数のパーティション(ドメイン)に分け、各パーティション上でOSやファームウェアを動作させる機能が知られている。このような機能は、マルチパーティション機能と呼ばれる。
そして、ミッションクリティカルな分野におけるサーバシステムの運用では、複数のシステムボードのうちいずれかにおいてエラー(異常)が生じた場合においても、業務を停滞させることなく処理を継続して実行したいという要求がある。
このような要求を満たすため、サーバシステムにおいて、あるシステムボードでエラーが生じた場合には、次のようにシステムボードを交換する手法が知られている。すなわち、このエラーが生じたシステムボードが所属するパーティションの次の再起動時に、エラーが生じたシステムボードを、同じ構成を有する予備のシステムボードと交換する手法である。
この予備のシステムボードにおいては、稼働中のシステムボードと同じ版のファームウェアや同じ構成のハードウェア(CPUやメモリ等)を搭載することにより、システムボードの交換を行なった場合にもパーティション内の構成が変わることはない。
しかしながら、TPMはシステムボード毎に固有にそなえられるものであって、各ハッシュエンジンはTPM毎に固有なハッシュを用いてハッシュ値を作成する。従って、ファームウェアから同じ構成情報を渡された場合であっても、TPM毎で異なるPCR値が生成される。
すなわち、システムボードを交換することにより、システムボードに搭載されているTPMが変わるので、同じ構成を有するシステムボードであり、且つ、同じ構成情報が入力されてもPCR1008に格納されるPCR値が異なるものとなる。
従って、従来のサーバにおいては、TPMの構成ロック機能を有効にした状態では、何らかのエラーが生じたシステムボードを予備のシステムボードに交換した場合に、この予備のシステムボードでOSを起動させることができない。これにより、サーバシステムの運用に支障が生じるおそれがある。一方、サーバシステムを停滞なく運用するために構成ロック機能を無効にする場合には、TPMを有効に活用することができず、プラットフォームの改ざん等を検出することができず信頼性を向上させることができないという課題がある。
本件は、このような課題に鑑み創案されたもので、複数のシステムボードをそなえた情報処理装置において、一部のシステムボードを同じ構成を有する予備のシステムボードと交換する場合においても、起動処理を完了させることができ、且つ、TPMの機能を有効に使用することができるようにすることを目的とする。
このため、この情報処理装置は、それぞれが、ハッシュ演算を行うハッシュ演算部と、ハードウェア資源を備える複数の処理部と、前各処理部が備えるハードウェア資源の構成情報をそれぞれ収集する構成情報収集部と、前記構成情報収集部が収集する各処理部のハードウェア資源の構成情報に対して対応する処理部のハッシュ演算部がハッシュ演算して生成した構成レジスタ値を、対応する処理部の起動制御部が備える構成レジスタ部に格納させる構成レジスタ制御部と、前記情報処理装置の構成変更を検出しないで前記情報処理装置を起動する場合に、前記構成レジスタ制御部が構成レジスタ部から読み出す構成レジスタ値を対応する処理部の起動制御部に対応付けて格納する記憶部と、前記情報処理装置の構成変更を検出して前記情報処理装置を起動する場合に、構成レジスタ部に格納される構成レジスタ値それぞれ取得する構成レジスタ値取得部と、前記構成レジスタ値取得部が取得する構成レジスタ値を、起動制御部に対応させて前記記憶部に格納されている構成レジスタ値と比較する比較部と、前記比較部が、前記構成レジスタ値取得部が取得する構成レジスタ値と前記記憶部に格納されている構成レジスタ値の組のいずれかが一致することを検出した場合に、前記情報処理装置の起動処理を継続する継続処理制御部を有する。
また、この情報処理装置の起動方法は、それぞれ、ハッシュ演算を行うハッシュ演算部と起動制御を行う起動制御部とハードウェア資源を備える複数の処部を有する情報処理装置の起動方法において、前記情報処理装置の起動時に前記情報処理装置の構成変更を検出するか否かを決定するステップと、前記情報処理装置の構成変更を検出する場合に、前記情報処理装置が有する構成情報収集部が、各処理部のハードウェア資源の構成情報をそれぞれ収集するステップと、前記情報処理装置が有する構成レジスタ制御部が、前記構成情報収集部が収集するハードウェア資源の構成情報に対して対応する処理部のハッシュ演算部がハッシュ演算を行い生成した構成レジスタ値を、対応する処理部の起動制御部が備える構成レジスタ部に格納するステップと、前記情報処理装置が有する構成レジスタ値取得部が、構成レジスタ部に格納される構成レジスタ値をそれぞれ取得するステップと、前記情報処理装置が有する比較部が、前記構成レジスタ値取得部が取得する構成レジスタ値を、前記記憶部に起動制御部に対応させて格納される構成レジスタ値と比較するステップと、前記比較部が、前記構成レジスタ値取得部が取得する構成レジスタ値と前記記憶部に格納される構成レジスタ値の組のいずれかが一致することを検出した場合に、前記情報処理装置が有する継続処理制御部が、前記情報処理装置の起動処理を継続するステップを有する。
さらに、この情報処理装置の起動プログラムは、演算を行う演算処理装置と、それぞれ、ハッシュ演算を行うハッシュ演算部と起動制御を行う起動制御部と、ハードウェア資源を備える複数の処理部を有する情報処理装置の起動プログラムにおいて、前記演算処理装置に、前記情報処理装置の起動時に前記情報処理装置の構成変更を検出するか否かを決定するステップと、前記情報処理装置の構成変更を検出する場合に、前記情報処理装置が有する構成情報収集部が、各処理部のハードウェア資源の構成情報をそれぞれ収集するステップと、前記情報処理装置が有する構成レジスタ制御部が、前記構成情報収集部が収集するハードウェア資源の構成情報に対して対応する処理部のハッシュ演算部がハッシュ演算を行い生成した構成レジスタ値を、対応する処理部の起動制御部が備える構成レジスタ部に格納するステップと、前記情報処理装置が有する構成レジスタ値取得部が、構成レジスタ部に格納される構成レジスタ値をそれぞれ取得するステップと、前記情報処理装置が有する比較部が、前記構成レジスタ値取得部が取得する構成レジスタ値を、前記記憶部に起動制御部に対応させて格納される構成レジスタ値と比較するステップと、前記比較部が、前記構成レジスタ値取得部が取得する構成レジスタ値と前記記憶部に格納される構成レジスタ値の組のいずれかが一致することを検出した場合に、前記情報処理装置が有する継続処理制御部が、前記情報処理装置の起動処理を継続するステップを実行させる。
開示の情報処理装置,情報処理装置の起動制御方法及び起動プログラムによれば、処理部を、同様の構成を有する他の処理部と交換した場合においても、情報処理装置の起動処理を完了させることができるとともに、起動制御部を用いたセキュアブートを実現することができる。
実施形態の一例としてのサーバにおける機能構成を模式的に示す図である。 実施形態の一例としてのサーバのパーティションにおけるプログラム構成を模式的に示す図である。 実施形態の一例としてのサーバのパーティションの構成を模式的に示す図である。 PCRに格納される構成情報の例を示す図である。 PCRに格納する構成情報を模式的に示す図である。 実施形態の一例としてのサーバにおけるPCRへの構成情報の格納手法を説明するためのフローチャートである。 実施形態の一例としてのサーバにおける構成情報格納部によるPCRへのPCR値の格納処理を説明するための図である。 実施形態の一例としてのサーバにおけるパーティションの起動時の処理を説明するためのフローチャートである。 (a)〜(c)は実施形態の一例としてのサーバのパーティションにおいてシステムボードの交換が生じた場合の処理を説明するための図である。 従来のPCの構成を模式的に示す図である。 情報処理装置におけるTPMの接続状態を模式的に示す図である。 従来のPCにおけるPCR値の格納手法を説明するための図である。 従来のPCにおける起動時の処理を説明するためのフローチャートである。
符号の説明
10 ファームウェア
11 構成情報格納モジュール
20,20#1〜20#n PCR(構成レジスタ部)
21 CPU(演算処理装置)
22,22#0〜22#n ハッシュエンジン(ハッシュ演算部)
30 OS
31 PCR値読出モジュール
32 PCR値管理モジュール
33 PCR値比較モジュール
34 PCR値設定モジュール
35 PCR値更新モジュール
36 継続処理制御モジュール
41 OSローダ
42,42−1〜42−4 I/O
51 構成情報格納部
52 構成情報収集部
53 PCR格納制御部(構成レジスタ制御部)
54 PCR値取得部(構成レジスタ値取得部)
55 PCR値比較部(比較部)
56 PCR値更新部(更新部)
57 PCR値設定部
58 PCR値データベース
59 継続処理制御部
60 HDD(記憶部)
111 収集モジュール
112 加工モジュール
113 格納モジュール
P,P0〜Ps パーティション
SB,SB#0〜SB#n システムボード(処理部)
SB#R 予備のシステムボード
以下、図面を参照して本情報処理装置、起動制御方法および起動プログラムに係る実施の形態を説明する。
図1は実施形態の一例としてのサーバにおける機能構成を模式的に示す図、図2は実施形態の一例としてのサーバのパーティションにおけるプログラム構成を模式的に示す図、図3はそのパーティションの構成を模式的に示す図である。
本実施形態の一例としてのサーバ100は、図3に示すように、起動制御部としてのセキュリティ機能モジュール(TPM)を搭載した処理部としてのシステムボードSB#0〜SB#nを複数(n個;nは整数)そなえた情報処理装置(コンピュータ)である。
サーバ100は、例えば、基幹システムで運用され、演算処理装置としてのCPU21やメモリ(図示省略),I/O(Input/Output)42等をそなえて構成され、パーティション構造を有するシステムを実現するパーティショニング機能をそなえている。
そして、本サーバ100においては、このパーティショニング機能により、CPU21やメモリ,I/O42を任意に組み合わせることにより、図3に示すように、複数のパーティションP0〜Ps(sは整数)を構成することができる。
なお、以下、パーティションを示す符号としては、複数のパーティションのうち1つを特定する必要があるときには符号P0〜Psを用いるが、任意のパーティションを指すときには符号Pを用いる。
パーティションPには、図3に示すように、OS30,OSローダ(OS LOADER)41,ファームウェア(Firmware)10,システムボードSB#0〜#nおよびI/O42−1〜42−4をそなえて構成されている。
ここで、パーティションPは、OS30が稼動する単位であり、1つのパーティションPには少なくとも1つのシステムボードSBがそなえられる。又、ファームウェア10もパーティションP毎にそなえられている。
I/O42−1〜42−4は拡張カードであって、図3に示す例においては、4つのI/O42−1〜42−4がそなえられている。
なお、以下、I/Oを示す符号としては、複数のI/Oのうち1つを特定する必要があるときには符号42−1,42−2,42−3,42−4を用いるが、任意のI/Oを指すときには符号42を用いる。
また、図3に示す例においては、パーティションPがn個のSB#0〜#nおよび4つのI/O42−1〜42−4をそなえて構成されているが、これに限定されるものではなく、例えば、I/O42を3以下もしくは5以上そなえてもよい。又、図3に示す例においては、各SBに4つのCPU21がそなえられているが、これに限定されるものではなく、CPU21を3つ以下もしくは5つ以上そなえてもよく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
TPMは、業界標準団体であるTCGによって定義された仕様に準拠するセキュリティチップであり、構成レジスタ部としてのPCR20やハッシュ演算部としてのハッシュエンジン22(図7参照)をそなえている。なお、TPMはTCGの仕様に準拠して構成されるものであり、その詳細な構成や機能についての説明は省略する。
図2,図3においては、システムボードSB#1にTPM#1が、システムボードSB#2にTPM#2が、システムボードSB#nにTPM#nがそれぞれそなえられている例を示している。
以下、TPMを示す符号としては、複数のTPMのうち1つを特定する必要があるときには符号#0,#1,#nを付して表すが、任意のTPMを指すときには単にTPMと表す。
また、図3においては、システムボードSB#0にTPM#0および複数のCPU21が、システムボードSB#1にTPM#1および複数のCPU21が、システムボードSB#nにTPM#nおよび複数のCPU21がそれぞれそなえられている例を示している。
そして、図2中においては、システムボードSB上において、TPM以外の部品の図示を省略している。同様に、図3中においては、TPMおよびCPU21以外の部品の図示を省略している。
また、以下、図中、#0,#1,#nの文字を有する各符号は、同じ文字を有する各符号どうしの間に、それぞれ対応関係があることを示しており、例えば、上述の構成においては、システムボードSB#0にはTPM#0が搭載されるようになっており、同様に、システムボードSB#nにはTPM#nが搭載されることを示している。
さらに、本実施形態において、TPMは、図11に示したと同様に、サウスブリッジに接続される。
ハッシュエンジン22は、ハッシュ・アルゴリズムと呼ばれる数学的な手法を用いて、パーティションPの構成情報(バイナリ・コード,測定対象)をハッシュ値と呼ばれるユニークな値(ダイジェスト値)に変換するものであり、例えば、図示しないマイクロプロセッサにより実現される。又、このハッシュエンジン22によって作成されたハッシュ値(構成情報)は、PCR20にPCR値として書込まれる。
なお、PCR20への構成情報の書き込みは、例えば、ファームウェア10等が、TPMに対して所定のコマンド(例えば、TPM_Extend)を発行することにより行なわれるが、その詳細については後述する。
また、TPMにおけるハッシュエンジン22による構成情報のハッシュ化の具体的手法や、ハッシュ化した構成情報のPCR20への格納手法は、TCGの仕様に従って行なわれるものであり、その詳細な説明は省略する。
PCR20は、プラットフォームの情報を格納するレジスタであり、上述したハッシュエンジン22によって作成されたPCR値等を保持する。このPCR20は、メモリ等の記憶回路によって実現される。
図4はPCRに格納される構成情報の例を示す図である。この図4に示す例においては、PCR20における、PCR[0]〜PCR[5]の6つの格納領域を示している。この図4に示す例においては、PCR[0]には、ファームウェア10のコードを測定対象として作成されたPCR値が格納される。具体的には、ファームウェア10のバージョン等を示す情報が用いられる。
PCR[1]には、ファームウェア10の設定に関する情報を測定対象として作成されたPCR値が格納されるようになっており、具体的には、プロセッサ・マイクロコード・アップグレード情報(Processor microcode upgrades)や、NVRAM(Non Volatile Random Access Memory:不揮発性RAM)に格納されているファームウェアの内部データの少なくとも一部等が用いられる。
PCR[2]には、拡張カードのファームウェアのコードを測定対象として作成されたPCR値が格納されるようになっており、具体的には、SCSI(Small Computer System Interface)カードの制御ファームウェアのコード等が用いられる。
PCR[3]には、拡張カードのファームウェアの設定を測定対象として作成されたPCR値が格納されるようになっており、具体的には、SCSIのマルチイニシエータセッティング等が用いられる。
PCR[4]には、OSローダ41のコードを測定対象として作成されたPCR値が格納されるようになっており、具体的には、MBR(Master Boot Record)やGRub(GRand Unified Bootloader)等が用いられる。
PCR[5]には、OSローダ41の設定を測定対象として作成されたPCR値が格納されるようになっており、具体的には、ブートデバイス情報(Boot Device)やブートパス設定情報(Boot Path Setting)等が用いられる。
なお、本実施形態においては、PCR20のPCR[0]〜PCR[5]の6つの格納領域について例示しているが、これに限定されるものでなく、TCGの仕様に反しない範囲で、種々変形して実施することができる。
また、各TPMにおいて、PCR値は、PCR20にすでに格納されている値とこれから格納しようとしている値がTPMの中で連結され、その連結された値がTPMによってハッシュ化されたものとなる。例えばPCR[0]に構成情報を格納しようとした場合、PCR[0]にすでに格納されている値とこれから格納しようとしている値がTPMによって連結・ハッシュ化されPCR[0]に格納される。
システムボードSB#0〜#nは、CPU21やメモリ等の情報処理装置を構成するための主要な電子部品が実装された回路基板であり、回路基板上にCPU21やTPM、図示しないメモリやインタフェース等をそなえて構成されている。
なお、以下、システムボードを示す符号としては、複数のシステムボードのうち1つを特定する必要があるときには符号SB#0,SB#1,SB#nを付して表すが、任意のシステムボードを指すときには符号SBを用いる。
また、パーティションPにおいては、同一パーティションP上にそなえられた複数のシステムボードSBのうち、プライマリとして機能するよう予め設定されたシステムボードSB(プライマリのシステムボードSB)に搭載されたCPU21が、その起動時においてファームウェア10やOS30を実行する。これにより、CPU21は、後述する、構成情報格納部51(構成情報収集部52,構成レジスタ制御部としてのPCR格納制御部53),構成レジスタ値取得部としてのPCR値取得部54,PCR値比較部55,PCR値更新部56,PCR値設定部57,PCR値データベース58および継続処理制御部59として機能する。
なお、構成情報格納部51(構成情報収集部52,PCR格納制御部53),PCR値取得部54,PCR値比較部55,PCR値更新部56,PCR値設定部57,PCR値データベース58および継続処理制御部59において、ファームウェア10が実行されるプライマリのシステムボードSBと、OS30が実行されるプライマリのシステムボードSBは異なるシステムボードSBであってもよい。
また、このプライマリのシステムボードSB上において複数のCPU21がそなえられている場合には、これらの複数のCPU21の中でプライマリとして機能するよう予め設定されたCPU21(プライマリのCPU)が、構成情報格納部51(構成情報収集部52,PCR格納制御部53),PCR値取得部54,PCR値比較部55,PCR値更新部56,PCR値設定部57,PCR値データベース58および継続処理制御部59として機能する。
なお、プライマリのシステムボードSBには、例えば、複数のシステムボードSBのうち最若番の識別番号が設定されたシステムボードSBが用いられる。同様に、プライマリのCPU21には、例えば、プライマリのシステムボードSBにそなえられた複数のCPU21のうち最若番の識別番号が設定されたCPU21が用いられる。以下、便宜上、単にCPU21という場合には、プライマリのCPU21のことをいう。
そして、本サーバ100においては、パーティションPにおいて、ロック状態とアンロック状態との2つの状態で選択的に起動することができる。ここで、ロック状態においては、TPMを用いることにより、パーティションPの起動時に構成変更の有無をチェック(検出)する(構成ロック機能)。一方、アンロック状態においては、パーティションPの起動時に構成変更の有無のチェックを行わない。又、ロック状態とアンロック状態との切替は、例えば、OS30によって行なわれる。
なお、本サーバ100において、システムボードSB#0〜SB#nは、互いにほぼ同様の構成をそなえており、同じ版のファームウェア10や、同じハードウェア構成(例えば、CPU21やメモリ)となるように構成されている。又、パーティションPにおいては、システムボードSB#0〜SB#nのいずれかにおいて何らかのエラー(異常)が生じた場合に備えて、そのエラーが生じたシステムボードSBと交換可能な予備のシステムボードSB#Rをそなえている(図9参照)。
そして、パーティションPにおいては、システムボードSB#0〜SB#nのいずれかにおいて何らかのエラーが検出された場合に、このパーティションPの次のリブート時に、そのエラーが生じたシステムボードSBを予備のシステムボードSB#Rと交換するスワップ機能をそなえている。
このスワップ機能においては、パーティションPの稼働中に、パーティションP内のいずれかのシステムボードSBにエラーが発生すると、そのパーティションPの次回リブート時に、エラーが生じたシステムボードSBが切り離され、代わりに予備のシステムボードSB#Rが組み込まれた状態でパーティションPが起動する。
そして、この予備のシステムボードSB#Rは、システムボードSB#0〜SB#nと同じ版のファームウェア10や、同じハードウェア構成をそなえており、システムボードSB#0〜SB#nをこの予備のシステムボードSB#Rと交換した場合に、パーティションP内の構成が変わらないことが保障されている。すなわち、スワップ機能により、異常が生じたシステムボードSBと、予備のシステムボードSB#Rとを交換した場合においても、パーティションPのプラットフォームの構成が変わることはない。
ファームウェア10は、例えばハードウェアの基本的な制御等を行なうためのプログラムであり、CPU21に実行されるものである。このファームウェア10は、NVRAM(図示省略)等に格納されている。
また、ファームウェア10は、図2に示すように、構成情報格納モジュール11をそなえている。この構成情報格納モジュール11は、CPU21に実行されることにより構成情報格納部(図1参照)としての機能を実現させるためのプログラムである。この構成情報格納モジュール11は、収集モジュール111,加工モジュール112および格納モジュール113をそなえて構成されている。
構成情報格納部51は、同一パーティション内に複数のTPM(システムボードSB)が存在する場合に、これらの複数のTPMのうち2以上のTPMに対して、それぞれプラットフォーム全体の構成情報を格納する。なお、本実施形態においては、構成情報格納部51は、同一パーティション内の全てのTPMに対して、それぞれプラットフォーム全体の構成情報を格納する。すなわち、構成情報格納部51は、同一パーティション内の全てのTPMに対して、それぞれ同一の構成情報を格納する。
構成情報収集部52は、パーティションP内からシステムボードSBの構成情報を収集するものである。この構成情報収集部52は、CPU21が、構成情報格納モジュール11の収集モジュール111を実行することにより機能する。
この構成情報収集部52は、同一パーティションP上のファームウェア10からファームウェア10のコードやファームウェア10の設定を収集する。ここで、ファームウェア10のコードとは、ファームウェア10のバージョン等の情報であり、ファームウェア10の設定とは、例えば、プロセッサ・マイクロコード・アップグレード情報や、NVRAMに格納されているファームウェア10の内部データである。
また、構成情報収集部52は、同一パーティションP上のI/O42から拡張カードのファームウェアのコードや拡張カードのファームウェアの設定を構成情報として収集する。なお、拡張カードのファームウェアコードとは、例えば、I/Oカード上のドライバである。
さらに、構成情報収集部52は、同一パーティションP上のOSローダ41から、OSローダ41のコードやOSローダ41の設定を構成情報として収集させる。なお、OSローダのコードとは、例えば、MBR(Master Boot Record)やGRub等であり、OSローダの設定とは、例えば、ブートデバイス情報やブートパス設定情報である。
PCR格納制御部53は、構成情報収集部52によって収集された構成情報をTPMへ受け渡し可能な状態に加工するものであり、例えば、構成情報を所定のデータ長に揃える。なお、この構成情報のデータ長はTCGにおいて規定されたデータ長であり、本実施形態においては20バイトである。又、構成情報を所定のデータ長に加工する手法には、既知の種々の手法を用いることができ、その具体的な手法の説明は省略する。
また、PCR格納制御部53は、20バイトのデータ長に加工した構成情報を、同一パーティションP内の複数のTPMのPCR20にそれぞれ格納する。又、このPCR格納制御部53は、TPMに対して、それぞれTPM毎に固有なハッシュエンジン22により構成情報をハッシュ化させるようになっており、更に、このハッシュ化した値(PCR値)を各TPMのPCR20にそれぞれ格納させる。
具体的には、PCR格納制御部53は、20バイトのデータ長に加工した構成情報を各TPMに渡すとともに、これらのTPMに対してTPM_Extendコマンドを発行する。又、TPMにおいては、このTPM_Extendコマンドの処理過程において、ハッシュエンジン22による構成情報のハッシュ化が行なわれる。
そして、CPU21がファームウェア10の加工モジュール112や格納モジュール113を実行することにより、上述したPCR格納制御部53として機能する。換言すれば、CPU21が格納モジュール113を実行することにより、構成情報収集部52によって収集された構成情報を、2以上のシステムボードの各TPMにより、それぞれ独自のハッシュエンジンを用いてハッシュ化してPCR値を作成させるPCR値作成制御部として機能する。
図5はPCRに格納する構成情報を模式的に示す図である。この図5に示す例においては、例えば、PCR[0]に対して、構成情報1〜NのN個の構成情報がTPM_Extendコマンドにより順次書込まれることを示す。同様に、PCR[1]に対して構成情報1〜MのM個の構成情報が、又、PCR[5]に対して構成情報1〜LのL個の構成情報が、それぞれTPM_Extendコマンドにより順次書込まれることを示している。又、本実施形態においては、各構成情報は20バイト単位でRCR20に書込まれる。
ここで、本実施形態の一例としてのサーバにおけるPCR20への構成情報の格納手法を、図6に示すフローチャート(ステップB10,B20)に従って説明する。
PCR格納制御部53は、TPMがそなえているTPM_Extendコマンドを用いて、図5に示すような構成情報を1つ選択して、20バイト単位でPCRに書込む(ステップB10)。
この際、PCR格納制御部53は、TPM_Extendコマンドの実行時に構成情報の書き込み先のPCR20の指定を行なう。又、構成情報のハッシュ化は、TPM_Extendコマンドの実行処理の中で行なわれるようになっており、このハッシュ化して作成されたPCR値がPCR20に書込まれる。
PCR格納制御部53は、ステップB10においてPCR20に書き込みを行なった構成情報が最後のデータ(Last Data)であるか否かを確認する(ステップB20)。ここで、最後でのデータではない、すなわち、まだ書き込みを行なう構成情報がある場合には(ステップB20のNOルート参照)、ステップB10に戻る。又、PCR20に書き込みを行なった構成情報が最後のデータであった場合には(ステップB20のYESルート参照)、処理を終了する。
そして、PCR格納制御部53は、全てのTPMに対して、構成情報のPCR20への格納処理を行なう。
図7は実施形態の一例としてのサーバにおける構成情報格納部51によるPCR20へのPCR値の格納処理を説明するための図である。
この図7に示すように、構成情報格納部51(構成情報収集部52)は、ファームウェア10からコードと設定に関する情報とを取得する。そして、構成情報格納部51(PCR格納制御部53)は、これらの構成情報とともにTPM_ExtendコマンドをシステムボードSB#0〜SB#nの各TPM#0〜#nに対してそれぞれ発行する。これにより、各TPM#0〜#nにおいて、それぞれハッシュエンジン22#0〜22#nがこれらの構成情報をハッシュ化し、それぞれPCR#0〜#nのPCR[0],PCR[1]にPCR値として格納する。
同様に、構成情報格納部51(構成情報収集部52)は、拡張カード(I/O42)からコードと設定に関する情報とを取得する。そして、構成情報格納部51(PCR格納制御部53)は、これらの構成情報とともにTPM_ExtendコマンドをシステムボードSB#0〜SB#nの各TPM#0〜#nに対してそれぞれ発行する。これにより、各TPM#0〜#nにおいて、それぞれハッシュエンジン22#0〜22#nがこれらの構成情報をハッシュ化し、それぞれPCR#0〜#nのPCR[2],PCR[3]にPCR値として格納する。
さらに、構成情報格納部51(構成情報収集部52)は、OSローダ41からコードと設定に関する情報とを取得する。そして、構成情報格納部51(PCR格納制御部53)は、これらの構成情報とともにTPM_ExtendコマンドをシステムボードSB#0〜SB#nの各TPM#0〜#nに対してそれぞれ発行する。これにより、各TPM#0〜#nにおいて、それぞれハッシュエンジン22#0〜22#nがこれらの構成情報をハッシュ化し、それぞれPCR#0〜#nのPCR[4],PCR[5]にPCR値として格納する。
OSローダ41は、OS30の起動するためのプログラムであり、CPU21に実行されるものである。このOSローダ41は、例えば、HDD(Hard Disk Drive)60の先頭セクタ等に格納される。
OS30は、サーバ100における種々の機能を実現するための基本ソフトウェアであり、CPU21に実行されるものである。このOS30は、例えば、HDD60等の記憶装置に格納される。
また、OS30は、図2に示すようにPCR値読出モジュール31,PCR値管理モジュール32,PCR値比較モジュール33,PCR値設定モジュール34,PCR値更新モジュール35および継続処理モジュール36をそなえている。そして、CPU21が、これらのPCR値読出モジュール31,PCR値管理モジュール32,PCR値比較モジュール33,PCR値設定モジュール34,およびPCR値更新モジュール35をそれぞれ実行することにより、PCR値取得部54,PCR値管理データベース58,PCR値比較部(比較部)55,PCR値設定部57,PCR値更新部(更新部)56および継続処理部59として機能する。
PCR値取得部54は、構成情報が格納された2以上のTPMの各PCR20から、それぞれPCR値を取得する。
このPCR値取得部54は、アンロック状態およびロック状態のいずれの状態においても、パーティションPの起動時(再起動時を含む)に、2以上のTPMの各PCR20から、それぞれPCR値を読み出す。
PCR値データベース58は、PCR値取得部54によって取得された各PCR値を管理するものである。このPCR値データベース58は、各PCR値を記憶装置(本実施形態においてはHDD60)における所定の位置に格納したり、記憶装置に格納されたPCR値を読み出したりする機能をそなえる。さらに、このPCR値データベース58は、例えば、後述するPCR値比較部55等からの要求に応じて、HDD60からPCR値を読み出す。
このPCR値データベース58は、PCR値取得部54によって取得された各PCR値を、各取得元のTPMやシステムボードSBに対応付けて管理する。
HDD60は、種々の情報やプログラムを格納する記憶装置である。又、HDD60は、PCR値#0〜#nを格納する。
このHDD60には、アンロック状態でパーティションP(サーバ100)を起動する場合に、PCR格納制御部53により各PCRに格納された各PCR値が、各TPMに対応付けて格納される。すなわち、HDD60には、TPM#0のPCR(第1の構成レジスタ部)から読み出すPCR値(第1の構成レジスタ値)がTPM#0(第1の起動制御部)に対応付けて格納される。以下、同様に、HDD60には、TPM#nのPCR(第2の構成レジスタ部)から読み出すPCR値(第2の構成レジスタ値)がTPM#n(第2の起動制御部)に対応付けて格納される。なお、HDD60への各PCR値の格納や読み出しは、PCR値データベース58によって管理される。
PCR値設定部57は、PCR値取得部54によって取得された各PCR値をHDD60に記憶させ、PCR値データベース58に設定・登録する。
PCR値比較部(比較部)55は、PCR値取得部54によってPCR20から取得されたPCR値と、HDD60に格納されているPCR値とを比較するものである。このPCR値比較部55は、PCR値取得部54によってPCR20から取得されたPCR値について、その取得元のTPMに基づいてPCR値データベース58を参照する。そして、PCR値比較部55は、HDD60に格納された複数のPCR値のうち、そのTPMに対応するPCR値を取得する。
そして、PCR値比較部55は、これらの同一のTPMにかかる、PCR値取得部54によってPCR20から取得されたPCR値とHDD60から取得したPCR値とを比較し、一致するか否かの判断を行なう。
すなわち、PCR値比較部55は、PCR値取得部54によって各TPMのPCR20からそれぞれ取得されたPCR値を、HDD60に格納された複数のPCR値のうち、そのTPMに対応するPCR値とそれぞれ比較するのである。
このPCR値比較部55は、ロック状態でパーティションP(サーバ100)を起動する場合に、TPM#0について、PCR値取得部54が取得するPCR値(第1の構成レジスタ値)を、HDD60にTPM#0(第1の起動制御部)に対応させて格納されるPCR値#0(第1の構成レジスタ値)と比較する。以下、同様に、PCR値比較部55は、TPM#nについて、PCR値取得部54が取得するPCR値(第2の構成レジスタ値)を、HDD60にTPM#n(第2の起動制御部)に対応させて格納されるPCR値#n(第2の構成レジスタ値)と比較する。
また、このPCR値比較部55による比較結果は、継続処理制御部59に通知される。
継続処理制御部59は、PCR値比較部55による比較の結果、いずれのTPMについても、PCR値取得部54によって取得されたPCR値とHDD60に格納されたPCR値とが一致しない場合は次の動作を行なう。すなわち、継続処理制御部59は、パーティションPにおける構成(ハードウェアもしくはソフトウェア)に変更があったと判断して、エラープロセスを実行させる。
なお、このエラープロセスは、例えば、OS30による起動処理を抑止したり、警告を出力するものであって、OS30のモジュール等のプログラムを実行することにより行なわれる。又、このエラープロセスは既知の種々の手法により実現することができるものであり、その詳細な説明は省略する。
また、継続処理制御部59は、複数のTPMのうち少なくともいずれか1つのTPMに関して、PCR値取得部54によって取得されたPCR値とHDD60に格納されたPCR値とが一致した場合に、エラープロセスの実行を抑止し、OS30に対してパーティションPの起動処理を継続して実行させる。
継続処理制御部59は、PCR値取得部54がTPM#0のPCRから取得するPCR値(第1の構成レジスタ値)とHDD60にTPM#0に対応させて格納されるPCR値(第1の構成レジスタ値)に係るPCR値との組の一致をPCR値比較部55が検出した場合に、パーティションP(サーバ100)の起動処理を継続する。又は、継続処理制御部59は、PCR値取得部54がTPM#nのPCRから取得するPCR値(第2の構成レジスタ値)とHDD60にTPM#nに対応させて格納されるPCR値(第2の構成レジスタ値)に係るPCR値との組の一致をPCR値比較部55が検出した場合に、パーティションPの起動処理を継続する。
すなわち、継続処理制御部59は、複数のTPMにおいて、PCR値取得部54によってPCR20から取得されたPCR値と、HDD60に格納されているPCR値とで、少なくとも1組が一致した場合に、パーティションPにおけるプラットフォームの構成が変更されていないと判断する。
これにより、一部のシステムボードSBが予備のシステムボードSBに交換された場合においても、交換されたシステムボードSB以外のシステムボードSBにおいてPCR値が少なくとも1組一致する場合にはエラープロセスが実行されない。すなわち、交換されたシステムボードSB以外のシステムボードSBにおいて、TPMのPCR20に格納されたPCR値と、当該TPMに対応させてHDD60に格納されているPCR値とが少なくとも1組一致する場合にはエラープロセスは実行されない。これにより、そのパーティションPの起動処理が継続して実行される。
PCR値更新部56は、HDD60におけるそのTPMに対応付けられたPCR値を更新するものである。PCR値更新部56は、PCR値比較部55による比較の結果、複数のTPMのうち少なくともいずれか1つに関してPCR値が一致し、更に、PCR値が一致しないものもある場合に、PCR値が不一致なTPMについて、HDD60におけるPCR値を更新する。
ここで、複数のTPMのうち少なくともいずれか1つに関してPCR値が一致するとは、複数のTPMのうち少なくともいずれか1つに関してPCR値取得部54によって取得されたPCR値とHDD60に格納されたPCR値とが一致することである。又、PCR値が一致しないものもあるとは、PCR値取得部54によって取得されたPCR値と記憶部に格納されたPCR値とが一致しないものがあることをいう。更に、PCR値の更新は、PCR値が不一致なTPMについて、PCR値取得部54によって取得したPCR値により、HDD60におけるそのTPMに対応付けられたPCR値を更新することにより行なう。
また、PCR値更新部56は、このHDD60における不一致が生じたPCR値を更新するとともに、その更新内容をPCR値データベース58にも反映させる。
これにより、パーティションPにおける一部のシステムボードSBが、予備のシステムボードSBに交換された場合に、この交換された予備のシステムボードSBのTPMのPCR20に格納されているPCR値が、そのTPMに対応させてHDD60に登録される。
従って、そのパーティションPが次回に起動される際には、そのTPMに関して、PCR値取得部54によって取得されたPCR値とHDD60に格納されたPCR値とが一致することになる。
そして、CPU21が、上述したファームウェア10を実行することにより、上述した構成情報格納部51(構成情報収集部52,PCR格納制御部53)として機能する。又、CPU21が、OS30を実行することにより、上述したPCR値取得部54,PCR値設定部57,PCR値比較部55,PCR値更新部56,PCR値データベース58および継続処理制御部59として機能する。
なお、上述した符号51〜59によって示された各部としての機能を実現するためのプログラムは、コンピュータ読取可能な記録媒体に記録された形態で提供される。
すなわち、このプログラムには、構成情報格納モジュール11,PCR値読出モジュール31,PCR値管理モジュール32,PCR値比較モジュール33,PCR値設定モジュール34,PCR値更新モジュール35および継続処理モジュール36が含まれる。又、構成情報格納モジュール11には、収集モジュール111,加工モジュール112,格納モジュール113を含む。
また、この記録媒体としては、例えば、フレキシブルディスク,CD,DVD,ブルーレイディスク,磁気ディスク,光ディスク,光磁気ディスク等を用いることができる。なお、CDには、CD−ROM,CD−R,CD−RW等を含む。又、DVDには、DVD−ROM,DVD−RAM,DVD−R,DVD+R,DVD−RW,DVD+RW,HD DVD等を含む。
そして、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。又、そのプログラムを、例えば磁気ディスク,光ディスク,光磁気ディスク等の記憶装置(記録媒体)に記録しておき、その記憶装置から通信経路を介してコンピュータに提供するようにしてもよい。
上述した符号51〜59によって示された各部としての機能を実現する際には、内部記憶装置(RAMやROM)に格納されたプログラムがコンピュータのマイクロプロセッサ(本実施形態ではCPU21)によって実行される。このとき、記録媒体に記録されたプログラムをコンピュータが読み取って実行するようにしてもよい。
なお、本実施形態において、コンピュータとは、ハードウェアとオペレーティングシステムとを含む概念であり、オペレーティングシステムの制御の下で動作するハードウェアを意味している。又、オペレーティングシステムが不要でアプリケーションプログラム単独でハードウェアを動作させるような場合には、そのハードウェア自体がコンピュータに相当する。ハードウェアは、少なくとも、CPU等のマイクロプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取るための手段とをそなえており、本実施形態においては、サーバ100やパーティションPがコンピュータとしての機能を有しているのである。
また、上述した構成情報格納モジュール11,PCR値読出モジュール31,PCR値管理モジュール32,PCR値比較モジュール33,PCR値設定モジュール34,PCR値更新モジュール35および継続処理モジュール36は、ドライバとして提供されてもよい。
上述の如く構成された、実施形態の一例としてのサーバ100におけるパーティションPの起動時の処理を、図8に示すフローチャート(ステップC10〜C140)に従って説明する。
サーバ100に電源が投入されると(Power On)、ファームウェア10は、パーティションPのプラットフォーム全体の構成情報(図5参照)を収集する(ステップC10)。
そして、ファームウェア10は、パーティションP内の複数(本実施形態においては全て)のTPMに対して、収集した構成情報とともにTPM_Extendコマンドを発行する。これにより、ファームウェア10は、各TPMが持っている機能(ハッシュエンジン22等)を用いて、それぞれ収集した構成情報をハッシュ化させて各PCR20に格納させる(ステップC20)。なお、これらのPCRへの構成情報の格納手法については、図6のフローチャートを用いて前述している。
その後、アンロック状態において、OS30が、各TPMのPCR20からPCR値をそれぞれ読み出して、それぞれHDD60に保存する(ステップC30)。
OS30は、パーティションPをアンロック状態からロック状態に変更し(ステップC40)、パーティションPを再起動(Reboot)させる(ステップC50)。以後、パーティションPは、ロック状態において運用される。
パーティションPの再起動時において、ファームウェア10は、パーティションPのプラットフォーム全体の構成情報を収集する(ステップC60)。又、ファームウェア10は、パーティションP内の複数(本実施形態においては全て)のTPMに対して、構成情報とともにTPM_Extendコマンドを発行する。これにより、ファームウェア10は、各TPMが持っている機能を用いて、それぞれ収集した構成情報をハッシュ化させて各PCR20に格納させる(ステップC70)。
OS30は、ロック状態において、TPMのPCR20からPCR値を読み出し(ステップC80)、HDD60に格納されている各PCR値と、TPMのPCR20から読み出した各PCR値とをそれぞれ比較する(ステップC90)。
そして、OS30は、HDD60に格納されているPCR値と、TPMから読み出したPCR値とが少なくとも1組一致するかを確認し(ステップC100)。その結果、いずれのPCR値の組においても一致しない場合には(ステップC100のNOルート参照)、OS30は、パーティションP内のプラットフォームが変更されたと判断する。そして、OS30は、パーティションPの起動を抑止したり、オペレータに対して警告を行なう等のエラープロセスを実行する(ステップC110)。
一方、HDD60に格納されているPCR値と、TPMから読み出したPCR値とが少なくとも1組一致した場合には(ステップC100のYESルート参照)、OS30は、次に、不一致の組が1つ以上あるか否かを確認する。すなわち、OS30は、これらのHDD60に格納されているPCR値とTPMから読み出したPCR値とで不一致の組が1つ以上あるか否かを確認する(ステップC120)。
ここで、HDD60に格納されているPCR値とTPMから読み出したPCR値との組が全て一致する場合には(ステップC120のNOルート参照)、継続処理制御部59が、OS30による以降の起動処理を継続して実行させて、パーティションPを正常に起動させる(ステップC140)。
また、HDD60に格納されているPCR値とTPMから読み出したPCR値とで不一致の組が一つでもある場合には(ステップC120のYESルート参照)、PCR値更新部56がPCR値を更新させる。すなわち、PCR値更新部56は、このPCR値が不一致であるTPMについて、PCR値取得部54によって取得したPCR値により、HDD60におけるそのTPMに対応付けられたPCR値を更新させる(ステップC130)。その後、ステップC140に移行する。
次に、本サーバ100のパーティションPにおいて、いずれかのシステムボードSBにエラーが生じた場合の処理を説明する。なお、TPMによる構成ロック機能は有効であるものとする。
図9(a)〜(c)は実施形態の一例としてのサーバ100のパーティションPにおいてシステムボードSBの交換が生じた場合の処理を説明するための図である。
パーティションPのロック状態での起動時において、システムボードSBのTPMのPCR20と、HDD60(PCR値データベース58)に格納されている対応するTPMのPCR値とが、少なくとも1組一致している場合には、図9(a)に示すように、OS30(継続処理制御部59)は正常に起動処理を完了させる。
ここで、図9(b)に示すように、パーティションP内のいずれかのシステムボードSB(図9(b)に示す例においてはシステムボードSB#0)でエラーが発生したものとする。
このような場合においては、図9(c)に示すように、スワップ機能により、パーティションPのリブート後に、エラーが発生したシステムボードSB#0が切り離され、予備のシステムボードSB#RがパーティションPに組み込まれる。
なお、このスワップ機能により、予備のシステムボードSB#Rについては、そのPCR20#Rに格納されているPCR値は、PCR値データベース58によって管理されているTPM#0に対応するPCR値と一致しない。
しかしながら、本サーバ100においては、リブート時にシステムボードSB#0を予備のシステムボードSB#Rと交換した場合であっても、他のシステムボードSB#1〜#nについてPCR値が一致する。すなわち、他のシステムボードSB#1〜#nにおいて、そのTPM#1〜#nのPCRに格納されている値と、PCR値データベース58によって管理されているTPM#1〜#nに対応するPCR値がそれぞれ一致する。これにより、OS30(継続処理制御部59)は正常に起動プロセスを完了させる。
また、予備のシステムボードSB#Rについては、TPM#1〜#nのPCRに格納されている値と、PCR値データベース58によって管理されているTPM#1〜#nに対応するPCR値がそれぞれ一致する。これにより、PCR値更新部56は、TPM#RのPCR20#Rに格納されているPCR値により、PCR値データベース58によって管理されているTPM#0に対応するPCR値を更新する。
ここで、パーティションPのいずれかのシステムボードSBにおいて、ファームウェア10やI/O42等のプラットフォームに対して何らかの改ざんが行なわれた場合について検討する。プラットフォームに改ざんが行なわれた場合には、そのパーティションPの起動時に、構成情報収集部52によって、これらのプラットフォームから収集される構成情報が変わることになる。
そして、この変更された構成情報が、PCR格納制御部53により各TPMに送られ、各TPMにおいてハッシュエンジン22によりハッシュ化される。従って、各TPMのPCR20に格納されるPCR値もそれぞれ変わることになる。
これらのPCR20に格納されたPCR値は、PCR値取得部54によって取得され、PCR値比較部55により、それぞれ、HDD60に格納されているPCR値と比較され、いずれのTPMに関してもPCR値の不一致が検出される。
そして、全てのTPMに関してPCR値が不一致であるので、継続処理制御部59は、エラープロセスの実行を抑止することがなく、エラープロセスが実行され、起動処理の中止や警告の出力等が行なわれる。すなわち、パーティションPにおける改ざんが検出され、この改ざん検出に伴って行なわれるべき処理が確実に実行され、TPMの機能を用いたセキュアブートが実現される。これにより、信頼性の高いシステム運用を行なうことができる。
また、この場合、PCR値変更部56においては、PCR値比較部55によるPCR値の比較の結果、複数のTPMのいずれにおいても、PCR値取得部54によって取得されたPCR値とHDD60に格納されたPCR値とが一致しないので、HDD60のPCR値の更新は行なわない。これにより、改ざんされたプラットフォームの構成情報に基づくPCR値がHDD60に格納されることがなく、システムの信頼性を維持することができる。
このように、本サーバ100によれば、エラーが生じたシステムボードSBを、同様の構成を有する予備のシステムボードSB#Rと交換する場合に、PCR値の少なくとも一組が一致した場合にプラットフォームが改ざんされていないと判断する。
すなわち、交換を行なわない他のシステムボードSBのTPMにかかるPCR値と、PCR値データベース58によって管理されている、これらのシステムボードSBに対応するPCR値との少なくとも一組が一致した場合に、OS30の起動プロセスを完了させる。
これにより、エラーが生じたシステムボードSBを予備のシステムボードSB#Rに交換する場合に、パーティションPにおける業務の停止時間を最低限にすることができる。これにより、ミッションクリティカルな業務への影響を最低限に留めることができる。又、TPMの機能を有効に使用することができ、信頼性を向上させることもできる。
また、交換した予備のシステムボードSB#Rについては、パーティションPの構成に変更がないことが確認できたことを条件に、PCR値更新部56が、PCR値データベース58によって管理されているTPM#0に対応するPCR値を更新する。すなわち、PCR値更新部56は、TPM#RのPCR20#Rに格納されているPCR値により、PCR値データベース58によって管理されているTPM#0に対応するPCR値を更新する。
これにより、次回のパーティションPの起動時において、単にスワップ機能によりシステムボードSB#0がシステムボードSB=Rに交換されたことだけを理由に、パーティションPの起動が抑止されることがない。又、TPMを用いたセキュアブートを実施することができる。
さらに、パーティションPのいずれかのシステムボードSBにおいて、ファームウェア10やI/O42等のプラットフォームの改ざんが行なわれた場合には、その改ざんを確実に検出してエラープロセスを実行することができ、TPMの機能を用いた信頼性の高いシステム運用を行なうことができる。
また、改ざんされたプラットフォームの構成情報に基づくPCR値がHDD60に格納されることがなく、システムの信頼性を維持することができる。
なお、上述した実施形態に関わらず、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。
例えば、上述した実施形態においては、1つの予備のシステムボードSB#Rをそなえ、エラーが生じたシステムボードSB#0をこのシステムボードSB#Rと交換する例を示しているが、これに限定されるものではない。例えば、2以上の予備のシステムボードSBをそなえ、エラーが生じた2以上のシステムボードSBを、これらの2以上の予備のシステムボードSBと交換してもよい。
上述した開示により本実施形態を当業者によって実施・製造することが可能である。

Claims (7)

  1. 情報処理装置において、
    それぞれが、ハッシュ演算を行うハッシュ演算部と起動制御を行う起動制御部と、ハードウェア資源を備える複数の処理部と
    前記各処理部が備えるハードウェア資源の構成情報をそれぞれ収集する構成情報収集部と、
    前記構成情報収集部が収集する各処理部のハードウェア資源の構成情報に対して対応する処理部のハッシュ演算部がハッシュ演算して生成した構成レジスタ値を、対応する処理部の起動制御部が備える構成レジスタ部に格納させる構成レジスタ制御部と、
    前記情報処理装置の構成変更を検出しないで前記情報処理装置を起動する場合に、前記構成レジスタ制御部が構成レジスタ部から読み出す構成レジスタ値を対応する処理部の起動制御部に対応付けて格納する記憶部と、
    前記情報処理装置の構成変更を検出して前記情報処理装置を起動する場合に、構成レジスタ部に格納される構成レジスタ値それぞれ取得する構成レジスタ値取得部と、
    記構成レジスタ値取得部が取得する構成レジスタ値を、起動制御部に対応させて前記記憶部に格納されている構成レジスタ値と比較する比較部と、
    前記比較部が、前記構成レジスタ値取得部が取得する構成レジスタ値と前記記憶部に格納されている構成レジスタ値の組のいずれかが一致することを検出した場合に、前記情報処理装置の起動処理を継続する継続処理制御部を有することを特徴とする情報処理装置。
  2. 前記情報処理装置において、
    前記比較部が、前記構成レジスタの組のいずれかの一致し、他の組のいずれかが不一致であることを検出した場合に、不一致が検出された組に対応する処理部の起動制御部に対応させて格納された構成レジスタ値を、前記構成レジスタ値取得部が取得した当該組に対応する構成レジスタ値で更新する更新部を有することを特徴とする請求項1記載の情報処理装置。
  3. それぞれ、ハッシュ演算を行うハッシュ演算部と起動制御を行う起動制御部とハードウェア資源を備える複数の処部を有する情報処理装置の起動方法において、
    前記情報処理装置の起動時に前記情報処理装置の構成変更を検出するか否かを決定するステップと、
    前記情報処理装置の構成変更を検出する場合に、前記情報処理装置が有する構成情報収集部が、各処理部のハードウェア資源の構成情報をそれぞれ収集するステップと、
    前記情報処理装置が有する構成レジスタ制御部が、前記構成情報収集部が収集するハードウェア資源の構成情報に対して対応する処理部のハッシュ演算部がハッシュ演算を行い生成した構成レジスタ値を、対応する処理部の起動制御部が備える構成レジスタ部に格納するステップと、
    記情報処理装置が有する構成レジスタ値取得部が、構成レジスタ部に格納される構成レジスタ値をそれぞれ取得するステップと、
    記情報処理装置が有する比較部が、前記構成レジスタ値取得部が取得する構成レジスタ値を、前記記憶部に起動制御部に対応させて格納される構成レジスタ値と比較するステップと、
    前記比較部が、前記構成レジスタ値取得部が取得する構成レジスタ値と前記記憶部に格納される構成レジスタ値の組のいずれかが一致することを検出した場合に、前記情報処理装置が有する継続処理制御部が、前記情報処理装置の起動処理を継続するステップを有することを特徴とする情報処理装置の起動方法。
  4. 前記情報処理装置の構成変更を検出しないで前記情報処理装置を起動する場合には、前記情報処理装置が有する記憶部に、前記構成レジスタ制御部が各構成レジスタ部から読み出す構成レジスタ値を各処理部の起動制御部に対応付けて格納するステップを有することを特徴とする請求項3記載の起動方法。
  5. 前記情報処理装置の起動方法はさらに、
    前記比較部が、前記構成レジスタの組のいずれかの一致し、他の組のいずれかが不一致であることを検出した場合に、前記情報処理装置が有する更新部が、不一致が検出された組に対応する処理部の起動制御部に対応させて格納された構成レジスタ値を、前記構成レジスタ値取得部が取得した対応する構成レジスタ値で更新するステップを有することを特徴とする請求項3又は4記載の情報処理装置の起動方法。
  6. 演算を行う演算処理装置と、それぞれ、ハッシュ演算を行うハッシュ演算部と起動制御を行う起動制御部と、ハードウェア資源を備える複数の処理部を有する情報処理装置の起動プログラムにおいて、
    前記演算処理装置に、
    前記情報処理装置の起動時に前記情報処理装置の構成変更を検出するか否かを決定するステップと、
    前記情報処理装置の構成変更を検出する場合に、前記情報処理装置が有する構成情報収集部が、各処理部のハードウェア資源の構成情報をそれぞれ収集するステップと、
    前記情報処理装置が有する構成レジスタ制御部が、前記構成情報収集部が収集するハードウェア資源の構成情報に対して対応する処理部のハッシュ演算部がハッシュ演算を行い生成した構成レジスタ値を、対応する処理部の起動制御部が備える構成レジスタ部に格納するステップと、
    記情報処理装置が有する構成レジスタ値取得部が、構成レジスタ部に格納される構成レジスタ値をそれぞれ取得するステップと、
    記情報処理装置が有する比較部が、前記構成レジスタ値取得部が取得する構成レジスタ値を、前記記憶部に起動制御部に対応させて格納される構成レジスタ値と比較するステップと、
    前記比較部が、前記構成レジスタ値取得部が取得する構成レジスタ値と前記記憶部に格納される構成レジスタ値の組のいずれかが一致することを検出した場合に、前記情報処理装置が有する継続処理制御部が、前記情報処理装置の起動処理を継続するステップを実行させることを特徴とする情報処理装置の起動プログラム。
  7. 前記情報処理装置の起動プログラムはさらに、
    前記演算処理装置に、
    前記比較部が、前記構成レジスタの組のいずれかの一致し、他の組のいずれかが不一致であることを検出した場合に、前記情報処理装置が有する更新部が、不一致が検出された組に対応する処理部の起動制御部に対応させて格納された構成レジスタ値を、前記構成レジスタ値取得部が取得した対応する構成レジスタ値で更新するステップを実行させることを特徴とする請求項記載の情報処理装置の起動プログラム。
JP2011506891A 2009-03-31 2009-03-31 情報処理装置,情報処理装置の起動制御方法及び起動プログラム Active JP5287980B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2009/056675 WO2010113266A1 (ja) 2009-03-31 2009-03-31 情報処理装置,情報処理装置の起動制御方法及び起動プログラム

Publications (2)

Publication Number Publication Date
JPWO2010113266A1 JPWO2010113266A1 (ja) 2012-10-04
JP5287980B2 true JP5287980B2 (ja) 2013-09-11

Family

ID=42827599

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011506891A Active JP5287980B2 (ja) 2009-03-31 2009-03-31 情報処理装置,情報処理装置の起動制御方法及び起動プログラム

Country Status (3)

Country Link
US (1) US9037839B2 (ja)
JP (1) JP5287980B2 (ja)
WO (1) WO2010113266A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012038211A1 (en) 2010-09-22 2012-03-29 International Business Machines Corporation Attesting use of an interactive component during a boot process
US8869264B2 (en) 2010-10-01 2014-10-21 International Business Machines Corporation Attesting a component of a system during a boot process
US9489232B2 (en) * 2010-11-18 2016-11-08 International Business Machines Corporation Techniques for attesting data processing systems
JP6079394B2 (ja) * 2013-04-11 2017-02-15 富士通株式会社 証明書生成方法、証明書生成装置、情報処理装置、通信機器、及びプログラム
JP2016025616A (ja) 2014-07-24 2016-02-08 レノボ・シンガポール・プライベート・リミテッド ディスク・ドライブが記憶するデータを保護する方法および携帯式コンピュータ
US9851985B2 (en) * 2014-10-01 2017-12-26 Dell Products L.P. Platform configuration management using a basic input/output system (BIOS)
JP6631303B2 (ja) * 2016-02-16 2020-01-15 富士通株式会社 認証方法、認証プログラム及び情報処理装置
US10528739B2 (en) 2016-04-20 2020-01-07 Sophos Limited Boot security
US10719604B2 (en) * 2018-01-30 2020-07-21 Hewlett Packard Enterprise Development Lp Baseboard management controller to perform security action based on digital signature comparison in response to trigger
US10616055B2 (en) * 2018-03-06 2020-04-07 Accenture Global Solutions Limited Hash based device configuration management

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003108257A (ja) * 2001-07-06 2003-04-11 Texas Instruments Inc デジタルデバイスのセキュリティを守るための、安全なブートローダー
JP2005301564A (ja) * 2004-04-09 2005-10-27 Fujitsu Ltd セキュリティ機能を備えた情報処理装置
JP2008123513A (ja) * 2006-11-09 2008-05-29 Internatl Business Mach Corp <Ibm> 仮想化されたレジスタを有するトラステッド・デバイス
US20080235804A1 (en) * 2005-10-03 2008-09-25 International Business Machines Corporation Dynamic Creation and Hierarchical Organization of Trusted Platform Modules
JP2008226158A (ja) * 2007-03-15 2008-09-25 Ricoh Co Ltd 情報処理装置、ソフトウェア更新方法及び画像処理装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2405711B (en) * 2003-09-05 2006-08-09 Sun Microsystems Inc Method and apparatus for performing configuration over a network
JP4144880B2 (ja) 2004-04-09 2008-09-03 インターナショナル・ビジネス・マシーンズ・コーポレーション プラットフォーム構成測定装置、プログラム及び方法、プラットフォーム構成認証装置、プログラム及び方法、プラットフォーム構成証明装置、プログラム及び方法、並びに、プラットフォーム構成開示装置、プログラム及び方法
US7725703B2 (en) 2005-01-07 2010-05-25 Microsoft Corporation Systems and methods for securely booting a computer with a trusted processing module
GB2482652B (en) * 2010-05-21 2016-08-24 Hewlett Packard Development Co Lp Extending integrity measurements in a trusted device using a policy register

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003108257A (ja) * 2001-07-06 2003-04-11 Texas Instruments Inc デジタルデバイスのセキュリティを守るための、安全なブートローダー
JP2005301564A (ja) * 2004-04-09 2005-10-27 Fujitsu Ltd セキュリティ機能を備えた情報処理装置
US20080235804A1 (en) * 2005-10-03 2008-09-25 International Business Machines Corporation Dynamic Creation and Hierarchical Organization of Trusted Platform Modules
JP2008123513A (ja) * 2006-11-09 2008-05-29 Internatl Business Mach Corp <Ibm> 仮想化されたレジスタを有するトラステッド・デバイス
JP2008226158A (ja) * 2007-03-15 2008-09-25 Ricoh Co Ltd 情報処理装置、ソフトウェア更新方法及び画像処理装置

Also Published As

Publication number Publication date
US20120011352A1 (en) 2012-01-12
WO2010113266A1 (ja) 2010-10-07
JPWO2010113266A1 (ja) 2012-10-04
US9037839B2 (en) 2015-05-19

Similar Documents

Publication Publication Date Title
JP5287980B2 (ja) 情報処理装置,情報処理装置の起動制御方法及び起動プログラム
JP5932837B2 (ja) コードを更新および認証するための方法およびシステム、プログラムの完全性を試験する方法およびシステム
TWI471726B (zh) 快取資料與元資料之管理
TWI494762B (zh) 用於管理快取資料及元資料的方法、電腦儲存媒體與電腦
JP5767751B2 (ja) Biosを検証する方法、コンピューティングプラットフォーム、およびプログラム
US7734945B1 (en) Automated recovery of unbootable systems
US7765393B1 (en) Method and system of embedding a boot loader as system firmware
EP1973038B1 (en) A method for anti-virus based on a safety chip
TWI522838B (zh) 組配系統之技術
JP5889933B2 (ja) コンピュータの動作不良を防止する方法、コンピュータ・プログラムおよびコンピュータ
US20070011445A1 (en) System and method for loading programs from HDD independent of operating system
US20090217024A1 (en) Recovering from Hard Disk Errors that Corrupt One or More Critical System Boot Files
US11163886B2 (en) Information handling system firmware bit error detection and correction
JP6078984B2 (ja) 処理装置,処理方法,処理プログラム及び管理装置
US20090210456A1 (en) Methods, Systems and Media for TPM Recovery Key Backup and Restoration
JP2008084291A (ja) 記憶装置、制御方法及び制御装置
US8751817B2 (en) Data processing apparatus and validity verification method
US7818622B2 (en) Method for recovering data processing system failures
JP5466645B2 (ja) 記憶装置、情報処理装置およびプログラム
US20120191965A1 (en) Boot systems and methods, and related devices
US11726879B2 (en) Multiple block error correction in an information handling system
JP2010257340A (ja) 情報処理装置、情報処理方法及びプログラム
CN111198832A (zh) 一种处理方法和电子设备
TW202318196A (zh) 韌體映像檢查系統、韌體映像檢查方法及電腦系統
JP7084160B2 (ja) 起動制御装置、起動制御システム、起動制御方法、及び、起動制御プログラム

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130507

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130520

R150 Certificate of patent or registration of utility model

Ref document number: 5287980

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150