(57)【要約】【課題】秘密情報に対するアクセスを、これまでよりも効率的に制御する。【解決手段】本発明のシステムは、このシステムに含まれる複数のコンポーネントの各々のハッシュ値が採るべき期待値を記録している。また、秘密情報に対応付けて、秘密情報に対するアクセスを許可する条件となる証明情報の期待値を記録している。また、複数のコンポーネントの完全性を証明する証明情報を格納するためのレジスタを有する。このシステムは、まず、各々の期待値を更にハッシュ関数に入力することによって算出される値を証明情報として、複数のコンポーネントが起動する前にレジスタに格納する。そして、新たに起動したコンポーネントのハッシュ値を算出し、算出した当該ハッシュ値が期待値と異なることを条件に、レジスタの証明情報を更新する。そして、証明情報の期待値と、レジスタの証明情報とが一致することを条件に秘密情報に対するアクセスを許可する。【選択図】図５
2007072909.tif 000002
【特許請求の範囲】
【請求項１】
秘密情報へのアクセスを制御するシステムであって、
当該システムに含まれる予め定められた複数のコンポーネントの各々について、当該コンポーネントが正当である場合に当該コンポーネントのハッシュ値が採るべき期待値を記録している期待値記録部と、
前記複数のコンポーネントの完全性を証明する証明情報を格納するためのレジスタと、
各々の前記期待値を更にハッシュ関数に入力することによって算出される値を前記証明情報として、前記複数のコンポーネントが起動する前に予め前記レジスタに格納する証明情報管理部と、
何れかの前記コンポーネントが起動したことに応じ当該コンポーネントのハッシュ値を算出し、算出した当該ハッシュ値が、当該コンポーネントに対応付けて前記期待値記録部に記録された期待値と異なることを条件に、前記レジスタに格納されている証明情報を更新する証明情報更新部と、
前記秘密情報に対応付けて、前記秘密情報に対するアクセスを許可する条件となる前記証明情報の期待値を記録している秘密情報記録部と、
前記秘密情報に対するアクセス要求に応じ、前記秘密情報に対応付けて記録されている期待値と、前記レジスタに格納されている証明情報とを比較する比較部と、
証明情報および証明情報の期待値が一致することを条件に前記秘密情報に対するアクセスを許可し、証明情報および証明情報の期待値が異なることを条件に前記秘密情報に対するアクセスを禁止するアクセス制御部と
を備えるシステム。
【請求項２】
前記複数のコンポーネントの何れかが更新されたことを検出する検出部を更に備え、
前記証明情報管理部は、コンポーネントの更新に応じ、前記複数のコンポーネントの各々のハッシュ値を算出し、算出した各々の当該ハッシュ値に基づいて証明情報を生成して前記レジスタに格納し、
コンポーネントの更新に応じて生成された前記証明情報によって、前記秘密情報に対応付けて前記秘密情報記録部に記録された証明情報の期待値を更新する秘密情報更新部
を更に備える請求項１に記載のシステム。
【請求項３】
前記証明情報更新部は、コンポーネントが起動したことに応じて算出した前記ハッシュ値が、当該コンポーネントに対応付けて前記期待値記録部に記録された期待値と異なることを条件に、前記レジスタに格納されている前記証明情報を当該ハッシュ値に基づいて更新する
請求項１に記載のシステム。
【請求項４】
前記証明情報管理部は、当該システムが起動したことに応じ、前記複数のコンポーネントの各々が起動したか否かに関わらず、前記複数のコンポーネントの各々のハッシュ値を算出して前記期待値記録部に記録し、記録された各々の前記ハッシュ値に基づいて証明情報を生成して前記レジスタに格納する
請求項１に記載のシステム。
【請求項５】
互いに異なる証明情報を格納する複数の前記レジスタを備え、
前記期待値記録部は、オペレーティングシステムの動作に必要なコンポーネントのハッシュ値の期待値、および、前記オペレーティングシステム上で動作するミドルウェアを構成するコンポーネントのハッシュ値の期待値を記録しており、
前記証明情報管理部は、前記オペレーティングシステムの機能として実現され、
前記オペレーティングシステムが起動したことに応じ、前記オペレーティングシステムの動作に必要なコンポーネントのハッシュ値を算出して前記期待値記録部に記録し、記録した各々の前記ハッシュ値に基づいて証明情報を生成して第１の前記レジスタに格納し、
更に、前記ミドルウェアを構成するコンポーネントのハッシュ値を算出して前記期待値記録部に記録し、記録した各々の前記ハッシュ値に基づいて証明情報を生成して第２の前記レジスタに格納し、
前記証明情報更新部は、
オペレーティングシステムの動作に必要な何れかの前記コンポーネントが起動したことに応じ、当該コンポーネントのハッシュ値を算出し、算出した当該ハッシュ値が、当該コンポーネントに対応付けて前記期待値記録部に記録された期待値と異なることを条件に、前記第１のレジスタに格納されている証明情報を更新し、
ミドルウェアの動作に必要な何れかの前記コンポーネントが起動したことに応じ、当該コンポーネントのハッシュ値を算出し、算出した当該ハッシュ値が、当該コンポーネントに対応付けて前記期待値記録部に記録された期待値と異なることを条件に、前記第２のレジスタに格納されている証明情報を更新する
請求項４に記載のシステム。
【請求項６】
前記期待値記録部は、アプリケーション・プログラムのハッシュ値の期待値と、当該アプリケーション・プログラムの動作中に当該アプリケーション・プログラムによって読み込まれ得るランタイムライブラリのハッシュ値の期待値とを記録しており、
前記証明情報管理部は、アプリケーション・プログラムのハッシュ値、および、ランタイムライブラリのハッシュ値を更にハッシュ関数に入力することによって算出される値を、当該ランタイムライブラリが読み込まれたか否かに関わらず前記レジスタに格納する
請求項１に記載のシステム。
【請求項７】
前記秘密情報は、暗号化されたデジタルコンテンツを復号化するための秘密鍵であり、
前記アプリケーション・プログラムは、前記デジタルコンテンツを再生するアプリケーション・プログラムであり、
前記比較部は、前記アプリケーション・プログラムから、前記デジタルコンテンツを再生するために秘密鍵を要求されたことに応じ、前記秘密情報に対応付けて記録されている期待値と、前記レジスタに格納されている証明情報とを比較し、
前記アクセス制御部は、証明情報および証明情報の期待値が一致することを条件に、前記秘密鍵に対するアクセスを許可することによって前記デジタルコンテンツを再生させ、証明情報および証明情報の期待値が異なることを条件に前記秘密情報に対するアクセスを禁止することによって前記デジタルコンテンツの再生を禁止する
請求項６に記載のシステム。
【請求項８】
秘密情報へのアクセスを制御するシステムによる、前記秘密情報へのアクセスの制御方法であって、
前記システムは、
当該システムに含まれる予め定められた複数のコンポーネントの各々について、当該コンポーネントが正当である場合に当該コンポーネントのハッシュ値が採るべき期待値を記録している期待値記録部と、
前記複数のコンポーネントの完全性を証明する証明情報を格納するためのレジスタと、
各々の前記期待値を更にハッシュ関数に入力することによって算出される値を前記証明情報として、前記複数のコンポーネントが起動する前に予め前記レジスタに格納する証明情報管理部と、
前記秘密情報に対応付けて、前記秘密情報に対するアクセスを許可する条件となる前記証明情報の値を記録している秘密情報記録部と
を有し、
何れかの前記コンポーネントが起動したことに応じ当該コンポーネントのハッシュ値を算出し、算出した当該ハッシュ値が、当該コンポーネントに対応付けて前記期待値記録部に記録された期待値と異なることを条件に、前記レジスタに格納されている証明情報を更新する段階と、
前記秘密情報に対応付けて、前記秘密情報に対するアクセスを許可する条件となる前記証明情報の期待値を記録している段階と、
前記秘密情報に対するアクセス要求に応じ、前記秘密情報に対応付けて記録されている期待値と、前記レジスタに格納されている証明情報とを比較する段階と、
証明情報および証明情報の期待値が一致することを条件に前記秘密情報に対するアクセスを許可し、証明情報および証明情報の期待値が異なることを条件に前記秘密情報に対するアクセスを禁止する段階と
を備える制御方法。
【請求項９】
秘密情報へのアクセスを制御するシステムとして、情報処理装置を機能させるプログラムであって、
前記情報処理装置を、
当該システムに含まれる予め定められた複数のコンポーネントの各々について、当該コンポーネントが正当である場合に当該コンポーネントのハッシュ値が採るべき期待値を記録している期待値記録部と、
前記複数のコンポーネントの完全性を証明する証明情報を格納するためのレジスタと、
各々の前記期待値を更にハッシュ関数に入力することによって算出される値を前記証明情報として、前記複数のコンポーネントが起動する前に予め前記レジスタに格納する証明情報管理部と、
何れかの前記コンポーネントが起動したことに応じ当該コンポーネントのハッシュ値を算出し、算出した当該ハッシュ値が、当該コンポーネントに対応付けて前記期待値記録部に記録された期待値と異なることを条件に、前記レジスタに格納されている証明情報を更新する証明情報更新部と、
前記秘密情報に対応付けて、前記秘密情報に対するアクセスを許可する条件となる前記証明情報の期待値を記録している秘密情報記録部と、
前記秘密情報に対するアクセス要求に応じ、前記秘密情報に対応付けて記録されている期待値と、前記レジスタに格納されている証明情報とを比較する比較部と、
証明情報および証明情報の期待値が一致することを条件に前記秘密情報に対するアクセスを許可し、証明情報および証明情報の期待値が異なることを条件に前記秘密情報に対するアクセスを禁止するアクセス制御部と
して機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、秘密情報へのアクセスを制御するシステムに関する。特に、本発明は、当該システムの改ざんによる秘密情報の漏洩を防ぐシステムに関する。
【背景技術】
【０００２】
近年、情報通信には、データの暗号化や電子署名の技術が欠かせなくなってきている。暗号化や電子署名には、暗号鍵などの秘密情報が必要である。この秘密情報は、第三者に漏洩しないように管理されなければならない。このため、秘密情報は、その管理者のみがアクセスできる記憶装置中の記憶領域などに格納される場合が多い。しかしながら、秘密情報を利用する通信ソフトウェアが、悪意ある利用者によって改ざんされた場合には、その管理者の意に反して秘密情報が漏洩してしまう恐れがある。
【０００３】
この問題に対して、従来、ソフトウェア・コンポーネントの完全性を判断する技術が用いられている。例えば、この技術は、コンピュータウィルスの検査ソフトウェアに用いられている。しかしながら、この技術においては、この技術を実現するソフトウェア自体が完全であるかを判断することは困難である。即ち例えば、コンピュータウィルスの検査ソフトウェア自体がコンピュータウィルスに侵されている場合には、その検査ソフトウェアの完全性を判断することは困難である。
【０００４】
また、ソフトウェアの完全性をハードウェアによって判断する技術が提案されている（非特許文献１を参照。）。この技術においては、TPM(Trusted Platform Module)と呼ばれるLSIチップを情報処理装置に搭載させる。そして、TPMによる処理として、この情報処理装置で動作するソフトウェアの完全性を判断させる。秘密情報はTPM内に記録され、完全性が認証できたことを条件にその読出が許可される。これにより、ソフトウェアの完全性を適切に判断することができる。
【０００５】
TPMは、ソフトウェアの完全性を証明するための証明情報を格納するためのレジスタ(PCR:Platform Configuration Register)を有する。TPMにおいて、PCRに対するアクセスは物理的に制限される。即ち、悪意ある利用者が情報処理装置を分解しようとも、PCRの値を読み出すことはできない。また、TPMは、PCRに対して特定の操作のみを許可する。例えば、この操作はExtendと呼ばれ、具体的には以下の式で表される。
PCR(n) = Hash(PCR(n-1) + Digest)
【０００６】
ここで、PCR(n-1)は、Extend操作前のPCRの値である。また、Digestは、あるソフトウェア・コンポーネントのハッシュ値である。また、Hash()は、ハッシュ値を算出する関数である。PCR(n)は、Extend操作後のPCRの値である。具体的な処理手順として、TPMは、まず、PCRにゼロを代入する。そして、TPMは、ソフトウェア・コンポーネントが起動されると、そのソフトウェア・コンポーネントのハッシュ値を算出して変数Digestとし、そのハッシュ値によって上記のExtend操作を行う。TPMは、ソフトウェア・コンポーネントが起動される毎にこの処理を繰り返す。
【０００７】
この結果、PCRには、起動された複数のソフトウェア・コンポーネントの組み合わせと、その起動順序に応じて定まる値が格納される。この値は、一方向関数であるハッシュ関数によって算出されるものであるから、偽造が困難であり、また、偶然にこの値と同一の値が生成される確率もきわめて低い。
非特許文献２については後述する。
【非特許文献１】TCG Trusted Computing Group web page, https://www.trustedcomputinggroup.org/home
【非特許文献２】R. Sailer, X. Zhang, T. Jaeger, and L. van Doorn. Design and Implementation of a TCG-based Integrity Measurement Architecture. In Thirteenth USENIX Security Symposium, pages 223-238, August 2004.
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、多数のソフトウェア・コンポーネントが複雑に構成されるシステムにおいては、そのシステムを起動させる毎にソフトウェア・コンポーネントの起動順序が変化する場合がある。この場合、そのシステムに搭載されたTPMは、そのシステムが起動される毎に異なる値を生成し、PCRに格納する。従って、このシステムにおいては、ソフトウェア・コンポーネントが完全であるときのPCRの値を予め静的に算出できない。このため、一部のソフトウェア・コンポーネントが起動していない状態では、秘密情報に対するアクセスを適切に制御することができなかった。
【０００９】
また、TPMは、Extend操作に用いるDigestをSML(Stored Measurement Log）と呼ばれるログに記録する。即ち、TPMは、ソフトウェア・コンポーネントが起動する毎に、そのハッシュ値に基づいてPCRの値を更新すると共に、そのハッシュ値をSMLに追記する。このSML中のハッシュ値を参照すれば、起動した各々のソフトウェア・コンポーネントの完全性を判断できると考えられる。しかしながら、現状の秘密情報の読出はPCRによって制御されており、SMLによって秘密情報を管理しようとすればTPMに大幅な改造が必要である。また、例えそのような改造が可能であったとしても、SMLのデータサイズはPCRに比べて大きく、TPMの製造コストや消費電力が大幅に増加してしまう。
【００１０】
なお、従来、一旦起動したソフトウェア・コンポーネントが再度起動した場合にはSMLを更新しないことによって、SMLのデータサイズを減少させる技術が提案されている（非特許文献２を参照。）。しかしながら、この技術をもってもなお、SMLのデータサイズはPCRに比べて大きく、秘密情報の読出を制御する応用は難しい。
【００１１】
そこで本発明は、上記の課題を解決することのできるシステム、方法、および、プログラムを提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
【課題を解決するための手段】
【００１２】
上記課題を解決するために、本発明においては、秘密情報へのアクセスを制御するシステムであって、当該システムに含まれる予め定められた複数のコンポーネントの各々について、当該コンポーネントが正当である場合に当該コンポーネントのハッシュ値が採るべき期待値を記録している期待値記録部と、複数のコンポーネントの完全性を証明する証明情報を格納するためのレジスタと、各々の期待値を更にハッシュ関数に入力することによって算出される値を証明情報として、複数のコンポーネントが起動する前に予めレジスタに格納する証明情報管理部と、何れかのコンポーネントが起動したことに応じ当該コンポーネントのハッシュ値を算出し、算出した当該ハッシュ値が、当該コンポーネントに対応付けて期待値記録部に記録された期待値と異なることを条件に、レジスタに格納されている証明情報を更新する証明情報更新部と、秘密情報に対応付けて、秘密情報に対するアクセスを許可する条件となる証明情報の期待値を記録している秘密情報記録部と、秘密情報に対するアクセス要求に応じ、秘密情報に対応付けて記録されている期待値と、レジスタに格納されている証明情報とを比較する比較部と、証明情報および証明情報の期待値が一致することを条件に秘密情報に対するアクセスを許可し、証明情報および証明情報の期待値が異なることを条件に秘密情報に対するアクセスを禁止するアクセス制御部とを備えるシステム、当該システムによってアクセスを制御する方法、および、プログラムを提供する。
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
【発明の効果】
【００１３】
本発明によれば、情報処理装置に記録された秘密情報に対するアクセスを、これまでよりも効率的に制御することができる。
【発明を実施するための最良の形態】
【００１４】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１５】
図１は、通信ネットワーク１０の全体構成を示す。通信ネットワーク１０は、電気通信回線によって相互に接続されたサーバシステム１５、および、情報処理システム２０を有する。情報処理システム２０は、内蔵の記憶装置内に秘密情報を記録している。秘密情報とは、情報処理システム２０の管理者以外の者に知られないように管理された情報をいう。秘密情報は、例えば、通信用の暗号の秘密鍵であってもよいし、情報処理システム２０が正当な装置である旨を示す認証情報であってもよい。情報処理システム２０は、この秘密鍵または認証情報を用いてサーバシステム１５と通信する。サーバシステム１５は、情報処理システム２０から受けた認証情報を用いて情報処理システム２０を認証し、または、情報処理システム２０から受けた暗号鍵を用いて情報処理システム２０との間の通信を暗号化する。
【００１６】
ここで、情報処理システム２０で動作するソフトウェアが不正に改ざんされた場合には、情報処理システム２０を管理する利用者の意に反してサーバシステム１５が不正にアクセスされる恐れがある。この不正なアクセスによって、サーバシステム１５内の情報の漏洩や改ざんなどの問題が引き起こされるおそれがある。本実施例における情報処理システム２０は、情報処理システム２０で動作するソフトウェアが正当であるか否かを、サーバシステム１５などの外部の装置を用いることなく適切に判断することを目的とする。
【００１７】
図２は、情報処理システム２０の機能構成を示す。情報処理システム２０は、ホストコントローラ１０８２により相互に接続されるＣＰＵ１０００、ＲＡＭ１０２０、及びグラフィックコントローラ１０７５を有するＣＰＵ周辺部を備える。また、情報処理システム２０は、入出力コントローラ１０８４によりホストコントローラ１０８２に接続される通信インターフェイス１０３０、ハードディスクドライブ１０４０、及びＣＤ−ＲＯＭドライブ１０６０を有する入出力部を備える。また、情報処理システム２０は、入出力コントローラ１０８４に接続されるＢＩＯＳ１０１０、フレキシブルディスクドライブ１０５０、及び入出力チップ１０７０を有するレガシー入出力部を備える。
【００１８】
ホストコントローラ１０８２は、ＲＡＭ１０２０と、高い転送レートでＲＡＭ１０２０をアクセスするＣＰＵ１０００及びグラフィックコントローラ１０７５とを接続する。ＣＰＵ１０００は、ＢＩＯＳ１０１０及びＲＡＭ１０２０に格納されたプログラムに基づいて動作し、各部の制御を行う。例えば、ＲＡＭ１０２０は、期待値記録部５１０として機能する。期待値記録部５１０は、情報処理システム２０に含まれる予め定められた複数のソフトウェア・コンポーネント（以降、ソフトウェア・コンポーネントを単にコンポーネントと呼ぶ）の各々について、そのコンポーネントが正当である場合にそのコンポーネントのハッシュ値が採るべき期待値を記録している。
【００１９】
ここで、コンポーネントのハッシュ値とは、コンポーネントのプログラムコードを、所定のハッシュ関数に入力した結果得られる値をいう。また、コンポーネントが正当であるとは、情報処理システム２０の管理者によってコンポーネントが正当であると判断された時点から、そのコンポーネントのプログラムコードが変更されていないことをいう。
【００２０】
グラフィックコントローラ１０７５は、ＣＰＵ１０００等がＲＡＭ１０２０内に設けたフレームバッファ上に生成する画像データを取得し、表示装置１０８０上に表示させる。入出力コントローラ１０８４は、ホストコントローラ１０８２と、比較的高速な入出力装置である通信インターフェイス１０３０、ハードディスクドライブ１０４０、及びＣＤ−ＲＯＭドライブ１０６０を接続する。通信インターフェイス１０３０は、ネットワークを介して外部の装置、例えば、サーバシステム１５と通信する。ハードディスクドライブ１０４０は、情報処理システム２０が使用するプログラム及びデータを格納する。ＣＤ−ＲＯＭドライブ１０６０は、ＣＤ−ＲＯＭ１０９５からプログラム又はデータを読み取り、ＲＡＭ１０２０又はハードディスクドライブ１０４０に提供する。
【００２１】
また、入出力コントローラ１０８４には、ＢＩＯＳ１０１０と、セキュリティチップ１０１５と、フレキシブルディスクドライブ１０５０や入出力チップ１０７０等の比較的低速な入出力装置とが接続される。ＢＩＯＳ１０１０は、情報処理システム２０の起動時にＣＰＵ１０００が実行するブートプログラムや、情報処理システム２０のハードウェアに依存するプログラム等を格納する。セキュリティチップ１０１５は、秘密情報を記録しており、情報処理システム２０の完全性が証明されたことを条件にその秘密情報に対するアクセスを許可する。フレキシブルディスクドライブ１０５０は、フレキシブルディスク１０９０からプログラム又はデータを読み取り、入出力チップ１０７０を介してＲＡＭ１０２０またはハードディスクドライブ１０４０に提供する。入出力チップ１０７０は、フレキシブルディスク１０９０や、例えばパラレルポート、シリアルポート、キーボードポート、マウスポート等を介して各種の入出力装置を接続する。
【００２２】
情報処理システム２０に提供されるプログラムは、フレキシブルディスク１０９０、ＣＤ−ＲＯＭ１０９５、又はＩＣカード等の記録媒体に格納されて利用者によって提供される。プログラムは、入出力チップ１０７０及び/又は入出力コントローラ１０８４を介して、記録媒体から読み出され情報処理システム２０にインストールされて実行される。プログラムが情報処理システム２０等に働きかけて行わせる動作については、図５において後述する。
【００２３】
以上に示したプログラムは、外部の記憶媒体に格納されてもよい。記憶媒体としては、フレキシブルディスク１０９０、ＣＤ−ＲＯＭ１０９５の他に、ＤＶＤやＰＤ等の光学記録媒体、ＭＤ等の光磁気記録媒体、テープ媒体、ＩＣカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークやインターネットに接続されたサーバシステムに設けたハードディスク又はＲＡＭ等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムを情報処理システム２０に提供してもよい。
【００２４】
図３は、セキュリティチップ１０１５の機能構成を示す。セキュリティチップ１０１５は、レジスタ３００−１〜Ｎと、秘密情報記録部３１０と、比較部３２０と、アクセス制御部３３０とを有する。レジスタ３００−１〜Ｎの各々は、情報処理システム２０に含まれる予め定められた複数のコンポーネントの完全性を証明する証明情報を格納するために設けられている。レジスタ３００−１〜Ｎの各々は、格納している証明情報によって完全性を証明する対象のコンポーネントが異なることの他、略同一の機能を有するので、以降相違点を除き、レジスタ３００−１〜Ｎを総称したレジスタ３００について説明する。
【００２５】
ここで、複数のコンポーネントの完全性とは、それら複数のコンポーネントの各々が正当であることをいう。何れのコンポーネントも正当であれば、複数のコンポーネントの完全性は満たされている。一方、何れか少なくとも１つのコンポーネントが正当でなければ、複数のコンポーネントの完全性は満たされていない。
【００２６】
秘密情報記録部３１０は、秘密情報に対応付けて、その秘密情報に対するアクセスを許可する条件となる証明情報の期待値を記録している。この期待値は、後述の秘密情報更新部５５０によって更新されてもよい。比較部３２０は、秘密情報に対するアクセス要求を、後述の実行部５００によって実行されているソフトウェアなどから受信する。そして、比較部３２０は、そのアクセス要求に応じ、秘密情報に対応付けて秘密情報記録部３１０に記録されている期待値と、レジスタ３００に格納されている証明情報とを比較する。アクセス制御部３３０は、証明情報および証明情報の期待値が一致することを条件にその秘密情報に対するアクセスを許可し、証明情報および証明情報の期待値が異なることを条件にその秘密情報に対するアクセスを禁止する。具体的には、アクセス制御部３３０は、アクセスを許可する場合にはその秘密情報を秘密情報記録部３１０から読み出して実行部５００に送信し、アクセスを禁止する場合にはその旨を秘密情報更新部５５０に通知する。
【００２７】
図４は、秘密情報記録部３１０のデータ構造の一例を示す。秘密情報記録部３１０は、複数の秘密情報の各々に対応付けて、その秘密情報に対するアクセスを許可する条件となる証明情報の期待値を記録している。秘密情報とは、例えば、暗号化されたデジタルコンテンツを復号化するための秘密鍵である。秘密情報記録部３１０は、互いに異なる複数の秘密鍵（秘密鍵Ａ〜Ｃ）を記録してもよい。また、秘密情報記録部３１０は、証明情報の期待値を、その期待値と比較されるべきレジスタ３００の識別情報に対応付けて記録してもよい。例えば、秘密情報記録部３１０は、秘密鍵Ａに対応付けて、期待値「ＰＣＲ１＝０ｘＦ３２５ＡＢ１２」を記録している。このＰＣＲ１は、レジスタ３００−２を示す識別情報である。即ち、これは、秘密鍵Ａに対してアクセスを許可するためには、レジスタ３００−２が証明情報として「０ｘＦ３２５ＡＢ１２」を格納していなければならない旨を示している。以降の説明において、レジスタ３００−１の識別情報をＰＣＲ０とし、レジスタ３００−２の識別情報をＰＣＲ１とし、レジスタ３００−３の識別情報をＰＣＲ２とする。
【００２８】
図５は、ＣＰＵ１０００の機能構成を示す。ＣＰＵ１０００は、プログラムの働きかけにより、実行部５００と、証明情報管理部５２０と、証明情報更新部５３０と、更新検出部５４０と、秘密情報更新部５５０として機能する。なお、証明情報管理部５２０、証明情報更新部５３０、更新検出部５４０、および、秘密情報更新部５５０の各機能は、オペレーティングシステム中のモジュールによって実現されてもよいし、ＢＩＯＳプログラムによって実現されてもよいし、オペレーティングシステム上で動作するアプリケーション・プログラムによって実現されてもよい。
【００２９】
実行部５００は、ＢＩＯＳ、オペレーティングシステム、および、アプリケーション・プログラムなどを動作させる。証明情報管理部５２０は、予め定められた複数のコンポーネントの各々のハッシュ値の期待値を期待値記録部５１０から取得する。そして、証明情報管理部５２０は、これらの期待値を更にハッシュ関数に入力することによって算出される値を証明情報として、それらの複数のコンポーネントが起動する前に予めレジスタ３００に記録する。
【００３０】
証明情報更新部５３０は、それらの複数のコンポーネントのうち何れかのコンポーネントが起動したことに応じ、そのコンポーネントのハッシュ値を算出する。そして、証明情報更新部５３０は、算出したそのハッシュ値が、そのコンポーネントに対応付けて期待値記録部５１０に記録された期待値と異なることを条件に、レジスタ３００に格納されている証明情報を更新する。更新検出部５４０は、それら複数のコンポーネントの何れかが更新されたことを検出する。例えば、更新検出部５４０は、実行部５００の動作を監視してソフトウェアのアンインストールおよびインストールを検出することにより、コンポーネントのバージョンアップを検出してもよい。また、更新検出部５４０は、情報処理システム２０の利用者から、コンポーネントを更新した旨の入力を受けてもよい。
【００３１】
コンポーネントの更新に応じ、証明情報管理部５２０は、それら複数のコンポーネントの各々のハッシュ値を算出し、算出した各々のハッシュ値に基づいて証明情報を生成してレジスタ３００に格納する。秘密情報更新部５５０は、コンポーネントの更新に応じて生成された証明情報によって、秘密情報に対応付けて秘密情報記録部３１０に記録された証明情報の期待値を更新する。
【００３２】
図６は、期待値記録部５１０のデータ構造の一例を示す。期待値記録部５１０は、情報処理システム２０に含まれる予め定められた複数のコンポーネントの各々について、そのコンポーネントが正当である場合にそのコンポーネントのハッシュ値が採るべき期待値を記録している。当該予め定められた複数のコンポーネントは、情報処理システム２０を正常動作させるために必要なコンポーネントの集合であることが望ましい。例えば、期待値記録部５１０は、情報処理システム２０に含まれるコンポーネントである「ＢＩＯＳ」に対応付けて、その「ＢＩＯＳ」のプログラムコードから生成されたハッシュ値を記録している。なお、「ＢＩＯＳ」および「ブートローダ」は、オペレーティングシステムの動作に必要なコンポーネントである。また、本図において期待値記録部５１０は、説明の都合上、コンポーネントの名称を記録しているが、これに代えて、期待値記録部５１０は、コンポーネントの識別情報を記録していてもよい。
【００３３】
また、期待値記録部５１０は、情報処理システム２０に含まれるコンポーネントである「仮想マシン」に対応付けて、その「仮想マシン」のプログラムコードから生成されたハッシュ値「０ｘ３６１ＦＣＤＡ３」を記録している。ここで、「仮想マシン」とは、例えば、Ｊａｖａ（登録商標）言語の仮想マシンであり、Ｊａｖａ（登録商標）プログラムをＣＰＵ１０００で動作させるインタープリターやコンパイラとして機能する。なお、「仮想マシン」および「クラスローダ」は、オペレーティングシステム上で動作するミドルウェアを構成するコンポーネントである。
【００３４】
また、期待値記録部５１０は、情報処理システム２０に含まれるコンポーネントである「ネイティブ・アプリケーション」に対応付けて、その「ネイティブ・アプリケーション」のハッシュ値「０ｘ３１２Ｆ５４３１」を記録している。また、期待値記録部５１０は、そのネイティブ・アプリケーションの動作中にそのネイティブ・アプリケーションによって読み込まれ得る「ランタイム・ライブラリ」のハッシュ値の期待値を更に記録している。
【００３５】
また、好ましくは、期待値記録部５１０は、各々のコンポーネントに対応付けて、そのコンポーネントが正当である旨を証明する証明情報を格納するレジスタの識別情報を更に記録している。例えば、ＰＣＲ１は、「仮想マシン」のハッシュ値および「クラスローダ」のハッシュ値を、更に別のハッシュ関数に入力した結果として得られる値を格納する。一方で、ＰＣＲ２は、「ネイティブ・アプリケーション」のハッシュ値および「ランタイム・ライブラリ」のハッシュ値を、更に別のハッシュ関数に入力した結果として得られる値を格納する。
【００３６】
図７は、情報処理システム２０が証明情報およびその期待値を管理する処理の処理フローを示す。情報処理システム２０が起動されると（Ｓ７００）、証明情報管理部５２０は、予め定められた複数のコンポーネントが起動したか否かに関わらず、それら複数のコンポーネントの各々のハッシュ値を算出して、ハッシュ値の期待値として期待値記録部５１０に記録する（Ｓ７１２）。そして、証明情報管理部５２０は、記録されたそれらのハッシュ値の各々に基づいて証明情報を生成してレジスタ３００に格納する（Ｓ７１５）。
【００３７】
一例として、証明情報は、以下の式に示すExtend操作によって生成される。
Extend操作：PCR(n) = Hash(PCR(n-1) + Digest)
ここで、PCR(n-1)は、Extend操作前のPCRの値である。また、Digestは、あるコンポーネントのハッシュ値である。また、Hash()は、証明情報を生成するためのハッシュ関数である。証明情報管理部５２０は、まず、レジスタ３００の値を０にリセットする。この値をPCR(0)とする。そして、証明情報管理部５２０は、予め定められた複数のコンポーネントのうち予め定められた順序によって選択される最初のコンポーネントのハッシュ値によりExtend操作を行う。これによって、PCR(1)は、この最初のコンポーネントのハッシュ値に基づく非ゼロの値となる。以降、当該予め定められた順序によって順次Extend操作が行われる。当該予め定められたコンポーネントの全てについてExtend操作が行われた後の値が証明情報となる。
なお、複数のレジスタを用いる場合については、各々のレジスタについて上記の処理を行うことにより、各々のレジスタに証明情報を格納させる。この処理の詳細は図８で述べる。
【００３８】
続いて、証明情報更新部５３０は、これら予め定められた複数のコンポーネントのうち何れかのコンポーネントが起動されたか否かを判断する（Ｓ７２０）。何れかのコンポーネントが起動されたことに応じ（Ｓ７２０：ＹＥＳ）、証明情報更新部５３０は、そのコンポーネントのハッシュ値を算出する（Ｓ７３０）。そして、証明情報更新部５３０は、算出したそのハッシュ値を、そのコンポーネントに対応付けて期待値記録部５１０に記録された期待値と比較する（Ｓ７４０）。
【００３９】
ハッシュ値とその期待値とが異なることを条件に（Ｓ７５０：ＹＥＳ）、証明情報更新部５３０は、レジスタ３００に格納されている証明情報を、そのハッシュ値に基づいて更新する（Ｓ７６０）。具体的には、証明情報更新部５３０は、レジスタ３００に対し、そのハッシュ値によってExtend操作を行う。即ち、そのハッシュ値をDigestとし、Extend操作前のレジスタ３００の値をPCR(n-1)とし、Hash(PCR(n-1) + Digest)の計算を行い、計算結果をレジスタ３００に格納する。
【００４０】
図８は、図７のＳ７１０における処理の詳細を示す。本図においては、単一のレジスタのみならず複数のレジスタを用いる場合について、それらのレジスタに証明情報を格納させる処理を説明する。情報処理システム２０が起動すると、まず、実行部５００は、ＢＩＯＳプログラムを動作させる。続いて、実行部５００は、ブートローダ、および、オペレーティングシステムをこの順に動作させる。
【００４１】
証明情報管理部５２０は、オペレーティングシステムが有する１つの機能として実現される。オペレーティングシステムが起動したことに応じ、証明情報管理部５２０は、オペレーティングシステムの動作に必要なコンポーネント（例えば、ＢＩＯＳ、ブートローダ、および、オペレーティングシステム自体）のハッシュ値を算出する。そして、証明情報管理部５２０は、算出したそれらのハッシュ値をハッシュ値の期待値として期待値記録部５１０に記録する。そして、証明情報管理部５２０は、記録した各々のハッシュ値に基づいて証明情報を生成して、第１のレジスタであるレジスタ３００−１（ＰＣＲ０）に格納する。
【００４２】
更に、証明情報管理部５２０は、ミドルウェアを構成するコンポーネント（例えば、仮想マシン、クラスローダ、および、アプリケーション・プログラムＡ）のハッシュ値を算出して期待値記録部５１０に記録する。そして、証明情報管理部５２０は、記録した各々のハッシュ値に基づいて証明情報を生成して、第２のレジスタであるレジスタ３００−２（ＰＣＲ１）に格納する。この処理は、ミドルウェアを構成するコンポーネントが起動する前に行われる。これにより、ミドルウェアが起動する前に、その完全性に基づいて秘密情報に対するアクセスを制御することができる。
【００４３】
また、オペレーティングシステムの動作に必要な何れかのコンポーネントが起動したことに応じ、証明情報更新部５３０は、そのコンポーネントのハッシュ値を算出する。そして、証明情報更新部５３０は、算出したそのハッシュ値が、そのコンポーネントに対応付けて情報処理システム２０の起動時に記録された期待値と異なることを条件に、レジスタ３００−１に格納されている証明情報を更新する。これにより、情報処理システム２０の起動後にコンポーネントが改ざんされた場合であっても、秘密情報に対するアクセスを適切に禁止することができる。
【００４４】
同様に、ミドルウェアの動作に必要な何れかのコンポーネントが起動したことに応じ、証明情報更新部５３０は、そのコンポーネントのハッシュ値を算出する。そして、証明情報更新部５３０は、算出したそのハッシュ値が、そのコンポーネントに対応付けてオペレーティングシステムの起動時に記録された期待値と異なることを条件に、レジスタ３００−２（ＰＣＲ２）に格納されている証明情報を更新する。これにより、オペレーティングシステムの起動後にミドルウェアが改ざんされた場合であっても、秘密情報に対するアクセスを適切に禁止することができる。
【００４５】
また、証明情報更新部５３０は、ネイティブ・アプリケーションが起動されたことに応じ、ネイティブ・アプリケーションのハッシュ値、および、その動作中に読み込まれ得るランタイム・ライブラリのハッシュ値を算出する。そして、証明情報更新部５３０は、それらのハッシュ値を更にハッシュ関数に入力することによって算出される値を、そのランタイム・ライブラリが読み込まれたか否かに関わらずレジスタ３００−２に格納する。これによって、ネイティブ・アプリケーション・プログラムが動作を開始する前に、予め、そのアプリケーション・プログラムが正当に動作するか否かを判断することができる。
【００４６】
なお、本図のネイティブ・アプリケーションとは、例えば、デジタルコンテンツを再生するアプリケーション・プログラムである。このアプリケーション・プログラムは、秘密情報記録部３１０に記録された秘密鍵を取得して、暗号化されたデジタルコンテンツをその秘密鍵によって復号化して再生する。このアプリケーション・プログラムが改ざんされてしまうと、電気通信回線を介して秘密鍵が第三者に漏洩したり、復号化されたデジタルコンテンツが漏洩したりする恐れがある。本実施例によれば、このような漏洩を防止するべく、このアプリケーション・プログラムが改ざんされたことを適切に検出して、秘密鍵に対するアクセスを効果的に禁止できる。
【００４７】
以上、本図の処理によれば、情報処理システム２０は、ミドルウェアを構成するコンポーネントが起動されたか否かに関わらず、ミドルウェアを構成するコンポーネントの完全性を適切に判断することができる。同様に、ランタイム・ライブラリがアプリケーション・プログラムに読み込まれたか否かに関わらず、ランタイム・ライブラリの完全性を適切に判断することができる。また、オペレーティングシステムの動作に必要なコンポーネントについては、オペレーティングシステムの起動後にそのハッシュ値を算出することで、証明情報の管理機能をオペレーティングシステムに一元化して、情報処理システム２０全体の設計を簡潔にすることができる。
【００４８】
これに代えて、オペレーティングシステムの動作に必要なコンポーネント（ブートローダ、ＢＩＯＳなど）については、オペレーティングシステムの起動前にそのハッシュ値を算出してもよい。例えば、証明情報管理部５２０は、ＢＩＯＳプログラムなどの機能として実現され、ＢＩＯＳの起動に応じ、オペレーティングシステムなどが起動する前に、そのハッシュ値の期待値および証明情報の期待値を生成してもよい。このような構成によれば、オペレーティングシステムが起動する前にその完全性を判断することも可能となる。
【００４９】
図９は、情報処理システム２０がハッシュ値の期待値、および、証明情報の期待値を更新する処理の処理フローを示す。更新検出部５４０は、予め定められた複数のコンポーネントの何れかが更新されたことを検出する（Ｓ９００）。ここで、コンポーネントの更新とは、認証された管理者等の指示によって行われることが望ましい。
【００５０】
コンポーネントの更新に応じ（Ｓ９１０：ＹＥＳ）、証明情報管理部５２０は、それら複数のコンポーネントの各々のハッシュ値を算出し、算出した各々のハッシュ値に基づいて証明情報を生成してレジスタ３００に格納する（Ｓ９１５）。また算出されたハッシュ値は、期待値記録部５１０に記録される（Ｓ９２０）。秘密情報更新部５５０は、コンポーネントの更新に応じて生成された証明情報によって、秘密情報に対応付けて秘密情報記録部３１０に記録された証明情報の期待値を更新する（Ｓ９３０）。
【００５１】
図１０は、情報処理システム２０が秘密情報に対するアクセスを制限する処理の処理フローを示す。比較部３２０は、アプリケーション・プログラムなどから、デジタルコンテンツを再生するために秘密鍵に対するアクセスを要求されたか否かを判断する（Ｓ１０００）。秘密情報に対するアクセス要求に応じ（Ｓ１０００：ＹＥＳ）、比較部３２０は、秘密情報に対応付けて秘密情報記録部３１０に記録されている期待値と、レジスタ３００に格納されている証明情報とを比較する（Ｓ１０１０）。
【００５２】
アクセス制御部３３０は、証明情報および証明情報の期待値が一致することを条件に（Ｓ１０１０：ＹＥＳ）、その秘密情報に対するアクセスを許可する（Ｓ１０３０）。即ち例えば、アクセス制御部３３０は、秘密鍵に対するアクセスを許可することによってデジタルコンテンツを再生させる。一方で、アクセス制御部３３０は、証明情報および証明情報の期待値が異なることを条件に（Ｓ１０２０：ＮＯ）、その秘密情報に対するアクセスを禁止する（Ｓ１０４０）。即ち例えば、アクセス制御部３３０は、秘密情報に対するアクセスを禁止することによってデジタルコンテンツの再生を禁止する。
【００５３】
以上、本実施例に示す情報処理システム２０は、ソフトウェア・コンポーネントが起動されたか否かに関わらず、そのソフトウェア・コンポーネントを含めたシステム全体の完全性を判断することができる。これにより、ソフトウェア・コンポーネントの起動前であっても秘密情報に対するアクセスを適切に制御することができる。また、複数のソフトウェア・コンポーネントが順不同で起動される場合であっても、秘密情報に対するアクセスを制御するセキュリティチップを効果的に利用して、秘密情報に対するアクセスを適切に制御することができる。
【００５４】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【図面の簡単な説明】
【００５５】
【図１】図１は、通信ネットワーク１０の全体構成を示す。
【図２】図２は、情報処理システム２０の機能構成を示す。
【図３】図３は、セキュリティチップ１０１５の機能構成を示す。
【図４】図４は、秘密情報記録部３１０のデータ構造の一例を示す。
【図５】図５は、ＣＰＵ１０００の機能構成を示す。
【図６】図６は、期待値記録部５１０のデータ構造の一例を示す。
【図７】図７は、情報処理システム２０が証明情報およびその期待値を管理する処理の処理フローを示す。
【図８】図８は、図７のＳ７１０における処理の詳細を示す。
【図９】図９は、情報処理システム２０がハッシュ値の期待値、および、証明情報の期待値を更新する処理の処理フローを示す。
【図１０】図１０は、情報処理システム２０が秘密情報に対するアクセスを制限する処理の処理フローを示す。
【符号の説明】
【００５６】
１０  通信ネットワーク
１５  サーバシステム
２０  情報処理システム
３００  レジスタ
３１０  秘密情報記録部
３２０  比較部
３３０  アクセス制御部
５００  実行部
５１０  期待値記録部
５２０  証明情報管理部
５３０  証明情報更新部
５４０  更新検出部
５５０  秘密情報更新部
１０００  ＣＰＵ
１０１５  セキュリティチップ
【図１】
2007072909.tif 000003
【図２】
2007072909.tif 000004
【図３】
2007072909.tif 000005
【図４】
2007072909.tif 000006
【図５】
2007072909.tif 000007
【図６】
2007072909.tif 000008
【図７】
2007072909.tif 000009
【図８】
2007072909.tif 000010
【図９】
2007072909.tif 000011
【図１０】
2007072909.tif 000012