(57)【要約】仮想マシンは、インタフェース等、実装に必要な情報が公開されているため、誰でも仮想マシンを実装することができる。そのため、仮想マシンを不正に実装することで、その上で稼動するプログラムに正規の動作ではなく、不正な動作をさせることが可能となるという問題がある。  本発明は、プログラムが、仮想マシンが持つ秘密情報と、プログラム自身が持つ検証用情報を比較することで、自身を稼動させる仮想マシンが正規に実装されたものであることを検証することで、不正な仮想マシンを排除する。【特許請求の範囲】
【請求項１】
内部に含んだ仮想マシンによりコンテンツの再生に係る処理を実行する情報処理装置において用いられる検証方法であって、
前記コンテンツと共に記録媒体に記録されている検証プログラムを読み込む読込ステップと、
前記検証プログラムを前記仮想マシンが実行することにより、前記仮想マシンを含む前記情報処理装置の正当性を検証する検証ステップと
を含むことを特徴とする検証方法。
【請求項２】
前記検証ステップにおいて、タイミングによって変動する証明用情報を用いて、前記検証を行う
ことを特徴とする請求項１に記載の検証方法。
【請求項３】
前記検証ステップは、
前記情報処理装置が保持する秘密情報に基づいた前記証明用情報を要求する要求ステップと、
前記証明用情報と、前記記録媒体に記録された検証情報とを比較する比較ステップと、
比較結果に基づき、正当であるか否かを判断する判断ステップとを含み、
前記検証方法は、さらに、
前記要求に応じて、前記仮想マシンにより、前記証明用情報を生成し、生成した前記証明用情報を前記検証プログラムに提供する提供ステップを含む
ことを特徴とする請求項２に記載の検証方法。
【請求項４】
前記判断ステップは、
タイミングによって前記証明用情報が変動する毎に、前記比較ステップを繰り返させる繰返しステップと、
前記繰返しの結果、所定回数連続して、前記検証情報と前記証明用情報が一致しなければ、前記情報処理装置は不正であると決定する決定ステップとを含む
ことを特徴とする請求項３に記載の検証方法。
【請求項５】
前記提供ステップは、
前記秘密情報の読み出し順序に応じて一意的に決定する値により、前記証明用情報が生成される過程において用いられる演算情報を、変更する更新ステップと、
生成した前記証明用情報を、前記検証用プログラムへ出力する出力ステップとを含む
ことを特徴とする請求項３に記載の検証方法。
【請求項６】
前記記録媒体には、複数の検証候補情報が記録されており、
前記情報処理装置は、１以上の秘密情報を保持しており、
前記検証ステップは、
１の検証候補情報を検証情報として選択する選択ステップと、
選択された前記検証情報と対応する秘密情報に基づいて生成された前記証明用情報を要求する要求ステップと、
前記検証情報と前記証明用情報とを比較する比較ステップと、
比較結果を基に、前記情報処理装置の正当性を判断する判断ステップとを含み、
前記検証方法は、さらに、
前記要求を受けると、前記仮想マシンにより、前記検証情報と対応する前記秘密情報を用いて前記証明用情報を生成し、生成した前記証明用情報を前記検証用プログラムへ提供する提供ステップとを含む
ことを特徴とする請求項２に記載の検証方法。
【請求項７】
前記判断ステップは、前記比較ステップにより前記検証情報と証明用情報とが一致する場合に、前記選択ステップ、前記要求ステップ及び前記比較ステップを繰り返させる繰返しステップと、
前記繰返しにより、所定回数連続して前記検証情報と証明用情報とが一致する場合に、前記情報処理装置が正当であると決定し、それ以外の場合に、前記情報処理装置が不正であると決定する決定ステップを含む
ことを特徴とする請求項６に記載の検証方法。
【請求項８】
前記検証ステップの繰り返しにおいて、
前記選択ステップでは、繰返しの回数に応じて異なる検証候補情報を、前記検証情報として選択し、
前記提供ステップでは、繰返しの回数に応じて変動する前記証明用情報を生成する
ことを特徴とする請求項７に記載の検証方法。
【請求項９】
前記複数の検証候補情報のうち少なくとも一つは、前記仮想マシンを一意に識別する識別子と対応しており、
前記選択ステップでは、前記識別子と対応する検証候補情報を前記検証情報として選択する
ことを特徴とする請求項８に記載の検証方法。
【請求項１０】
前記選択ステップでは、ランダムに前記検証情報を選択し、
前記比較ステップでは、前記検証情報に対応して、ランダムに変動する前記証明用情報を用いて、前記比較を行う
ことを特徴とする請求項６に記載の検証方法。
【請求項１１】
前記複数の検証候補情報のうち、少なくとも１つは、前記仮想マシンを一意に識別する識別子と対応しており、
前記選択ステップでは、前記識別子と対応する検証候補情報の中から、前記検証情報を選択する
ことを特徴とする請求項１０に記載の検証方法。
【請求項１２】
前記記録媒体は、さらに、前記仮想マシン上で実行され、前記コンテンツの再生に係る処理手順を含む再生関連プログラムを記録しており、
前記検証方法は、さらに、検証の結果、前記情報処理装置が不正である場合、前記コンテンツの再生に係る処理手順の実行を抑制する抑制ステップ
を含むことを特徴とする請求項１に記載の検証方法。
【請求項１３】
前記コンテンツは、デジタル著作物を暗号化して生成されており、
前記コンテンツの再生に係る処理手順は、前記コンテンツを復号する手順を含む
ことを特徴とする請求項１２に記載の検証方法。
【請求項１４】
仮想マシンを含み、記録媒体に記録されているコンテンツの再生に係る処理を実行する情報処理装置であって、
前記記録媒体には、
前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムが記録されており、
前記情報処理装置は、
自身に固有の秘密情報を１以上記憶している記憶手段と、
前記検証プログラムを読み込む読込手段と、
前記検証プログラムから、タイミングに応じて変動し、前記検証に用いられる検証情報と対応する秘密情報に基づいて生成された証明用情報に対する要求を受付ける受付手段と、
前記要求を受け付けると、前記検証情報と対応する秘密情報を用いて、前記証明用情報を生成し、生成した前記証明用情報を、前記検証用プログラムへ提供する提供手段と
を備えることを特徴とする情報処理装置。
【請求項１５】
仮想マシンを含み、記録媒体に記録されているコンテンツの再生に係る処理を実行する情報処理装置に搭載される集積回路であって、
前記記録媒体には、
前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムが記録されており、
前記集積回路は、
自身に固有の秘密情報を１以上記憶している記憶手段と、
前記検証プログラムを読み込む読込手段と、
前記検証プログラムから、タイミングに応じて変動し、前記検証に用いられる検証情報と対応する秘密情報に基づいて生成された証明用情報に対する要求を受付ける受付手段と、
前記要求を受け付けると、前記検証情報と対応する秘密情報を用いて、前記証明用情報を生成し、生成した前記証明用情報を、前記検証用プログラムへ提供する提供手段と
を備えることを特徴とする集積回路。
【請求項１６】
仮想マシンを含み、コンテンツの再生に係る処理を実行する情報処理装置の正当性を検証する検証プログラムを記録している記録媒体であって、
前記検証プログラムと共に、前記検証に用いられる１以上の検証候補情報を記録しており、
前記検証プログラムは、
前記検証候補情報から、１の検証候補情報を検証情報として選択する選択ステップと、
タイミングに応じて変動し、前記検証情報と対応する秘密情報に基づいて生成された証明用情報を、前記仮想マシンに要求する要求ステップと、
前記証明用情報を取得し、取得した前記証明用情報と、前記検証情報とを比較する比較ステップと、
比較結果に応じて、前記情報処理装置が正当であるか否かを判断する判断ステップとを含む
ことを特徴とする記録媒体。
【請求項１７】
仮想マシンを含み、コンテンツの再生に係る処理を実行する情報処理装置と、前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムを記録している記録媒体から構成される検証システムであって、
前記記録媒体は、
前記検証プログラムと、前記検証に用いられる１以上の検証候補情報とを記録しており、
前記検証プログラムは、
前記複数の検証候補情報から、１の検証候補情報を検証情報として選択する選択ステップと、
タイミングに応じて変動し、前記検証情報と対応する秘密情報に基づいて生成された証明用情報を、前記記録装置に要求する要求ステップと、
前記情報処理装置から、前記証明用情報を取得し、取得した前記証明用情報と、前記検証情報とを比較する比較ステップと、
比較結果に応じて、前記情報処理装置が正当であるか否かを判断する判断ステップとを含み、
前記情報処理装置は、
前記情報処理装置に固有の秘密情報を１以上記憶している記憶手段と、
前記検証プログラムを読み込む読込手段と、
前記検証プログラムから、前記要求を受け付ける受付手段と、
前記要求を受け付けると、前記検証情報と対応する秘密情報を用いて、前記証明用情報を生成し、生成した前記証明用情報を、前記検証用プログラムへ提供する提供手段とを備える
ことを特徴とする検証システム。
【請求項１８】
仮想マシンを含み、コンテンツの再生に係る処理を実行する情報処理装置の正当性を検証する検証プログラムであって、
前記複数の検証候補情報から、１の検証候補情報を検証情報として選択する選択ステップと、
タイミングに応じて変動し、前記検証情報と対応する秘密情報に基づいて生成された証明用情報を、前記記録装置に要求する要求ステップと、
前記情報処理装置から、前記証明用情報を取得し、取得した前記証明用情報と、前記検証情報とを比較する比較ステップと、
比較結果に応じて、前記情報処理装置が正当であるか否かを判断する判断ステップとを含む
ことを特徴とする検証プログラム。
【請求項１９】
仮想マシンを含み、記録媒体に記録されているコンテンツの再生に係る処理を実行する情報処理装置において用いられる証明プログラムであって、
前記記録媒体には、
前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムが記録されており、
前記情報処理装置は、
前記情報処理装置に固有の秘密情報を１以上記憶している記憶手段を備え、
前記証明プログラムは、
前記検証プログラムから、タイミングに応じて変動し、前記検証に用いられる検証情報と対応する秘密情報に基づいて生成された証明用情報に対する要求を受付ける受付ステップと、
前記要求を受け付けると、前記検証情報と対応する秘密情報を用いて、前記証明用情報を生成し、生成した前記証明用情報を、前記検証用プログラムへ提供する提供ステップと
を備えることを特徴とする証明プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、プログラムの実行に仮想マシンを用いる機器に関連し、特に、仮想マシンが実装されるプラットフォームの正当性を判断し、該プラットフォームが不正な場合に、排除する技術に関する。
【背景技術】
【０００２】  近年、プログラムをＯＳやＣＰＵ等のプラットフォームに依存させずに稼動させるため、仮想マシンが利用されている。一般的に、仮想マシンはソフトウェア実装されており、インタフェース等、実装に必要な情報が公開されているため、誰でも仮想マシンを実装することができる。
【特許文献１】特開２００５−２４４６９５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】  そのため、仮想マシンを不正に実装することで、その上で稼動するプログラムに正規の動作ではなく、不正な動作をさせることが可能となる。そのプログラムが、例えば、映画等のコンテンツの著作権を保護するプログラムである場合、不正にコンテンツを再生されることにつながる。
本発明は、上記の問題点に鑑み、プログラムが、自身を稼動させる仮想マシンが正規に実装されたものであることを検証できる検証方法、情報処理装置、記録媒体、検証システム、証明プログラム及び検証プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００４】  上記の課題を解決するために、本発明は、内部に含んだ仮想マシンによりコンテンツの再生に係る処理を実行する情報処理装置において用いられる検証方法であって、前記コンテンツと共に記録媒体に記録されている検証プログラムを読み込む読込ステップと、前記検証プログラムを前記仮想マシンが実行することにより、前記仮想マシンを含む前記情報処理装置の正当性を検証する検証ステップとを含むことを特徴とする。
【発明の効果】
【０００５】  上記の構成によると、前記仮想マシン上で動作する前記検証プログラムが、自身を実行する前記仮想マシンを含む前記情報処理装置の正当性を検証することができる。
また、前記検証方法は、前記検証ステップにおいて、タイミングによって変動する証明用情報を用いて、前記検証を行うことを特徴とするとしてもよい。
この構成によると、前記検証ステップで用いられる証明用情報は、タイミングによって変動するので、不正な第三者が、前記証明用情報を取得するには、当該検証方法を実装したプログラム等を詳細に解析し、その動作を追いかけなければならず、その取得は非常に困難である。従って、証明書や識別番号といった静的なデータにより、正当性を証明する場合に比べ、正当な仮想マシンを偽装しにくいという優れた効果を生じる。【０００６】  また、前記検証方法に含まれる前記検証ステップは、前記情報処理装置が保持する秘密情報に基づいた前記証明用情報を要求する要求ステップと、前記証明用情報と、前記記録媒体に記録された検証情報とを比較する比較ステップと、比較結果に基づき、正当であるか否かを判断する判断ステップとを含み、前記検証方法は、さらに、前記要求に応じて、前記仮想マシンにより、前記証明用情報を生成し、生成した前記証明用情報を前記検証プログラムに提供する提供ステップを含むことを特徴とするとしてもよい。【０００７】  この構成によると、前記仮想マシンにより生成された前記証明用情報を用いて、正当性の検証を行う。正当な仮想マシンでなければ、正しい証明用情報を生成できないので、確実に、前記情報処理装置の備える仮想マシンの正当性を判断することができる。
また、前記検証方法において、前記判断ステップは、タイミングによって前記証明用情報が変動する毎に、前記比較ステップを繰り返させる繰返しステップと、前記繰返しの結果、所定回数連続して、前記検証情報と前記証明用情報が一致しなければ、前記情報処理装置は不正であると決定する決定ステップとを含むことを特徴とする構成であってもよい。【０００８】  この構成では、所定回数連続して、前記検証情報と前記証明用情報とが一致した場合に限り、前記仮想マシンを含む情報処理装置が正当であるとする。そのため、何らかの方法で、不正な第三者に、１個の前記検証情報を知られたとしても、前記検証で、正当であると判断されることはない。
また、前記検証方法において、前記提供ステップは、前記秘密情報の読み出し順序に応じて一意的に決定する値により、前記証明用情報が生成される過程において用いられる演算情報を、変更する更新ステップと、生成した前記証明用情報を、前記検証用プログラムへ出力する出力ステップとを含むとしてもよい。【０００９】  この構成によると、前記更新ステップにおいて、前記演算情報を更新する。つまり、前記証明用情報の生成に用いられるデータも、前記証明用情報の生成の度に異なるので、正しい証明用情報を予測されにくいという優れた効果を奏する。
また、本発明において、前記記録媒体には、複数の検証候補情報が記録されており、前記情報処理装置は、１以上の秘密情報を保持しており、前記検証ステップは、１の検証候補情報を検証情報として選択する選択ステップと、選択された前記検証情報と対応する秘密情報に基づいて生成された前記証明用情報を要求する要求ステップと、前記検証情報と前記証明用情報とを比較する比較ステップと、比較結果を基に、前記情報処理装置の正当性を判断する判断ステップとを含み、前記検証方法は、さらに、前記要求を受けると、前記仮想マシンにより、前記検証情報と対応する前記秘密情報を用いて前記証明用情報を生成し、生成した前記証明用情報を前記検証用プログラムへ提供する提供ステップとを含むことを特徴とする構成であってもよい。【００１０】  さらに、本発明は、前記判断ステップは、前記比較ステップにより前記検証情報と証明用情報とが一致する場合に、前記選択ステップ、前記要求ステップ及び前記比較ステップを繰り返させる繰返しステップと、前記繰返しにより、所定回数連続して前記検証情報と証明用情報とが一致する場合に、前記情報処理装置が正当であると決定し、それ以外の場合に、前記情報処理装置が不正であると決定する決定ステップを含むことを特徴とする検証方法でもある。【００１１】  この構成では、繰り返しにおいて、所定回数連続して検証情報と証明用情報とが一致した場合に限り、前記情報処理装置が正当であると、決定するので、より確実に不正な情報処理装置を検出し、不正な情報処理装置によるコンテンツの利用を抑制することができる。
また、本発明は、前記検証ステップの繰り返しにおいて、前記選択ステップでは、繰返しの回数に応じて異なる検証候補情報を、前記検証情報として選択し、前記提供ステップでは、繰返しの回数に応じて変動する前記証明用情報を生成することを特徴とする検証方法でもある。【００１２】  この構成によると、前記選択手段は、繰返しの度に異なる証明用情報を選択するので、不正な第三者に、前記比較に用いられる検証情報を予測されにくいという優れた効果を奏する。
また、前記検証方法は、前記選択ステップでは、ランダムに前記検証情報を選択し、前記比較ステップでは、前記検証情報に対応して、ランダムに変動する前記証明用情報を用いて、前記比較を行うことを特徴とする構成であってもよい。【００１３】  この構成によると、前記選択手段は、証明用情報をランダムに選択するので、不正な第三者に、前記比較に用いられる検証情報を予測されにくいという優れた効果を奏する。
また、本発明の検証方法において、前記複数の検証候補情報のうち少なくとも一つは、前記仮想マシンを一意に識別する識別子と対応しており、前記選択ステップでは、前記識別子と対応する検証候補情報を前記検証情報として選択するとしてもよい。【００１４】  このような、構成にすることで、前記記録媒体に記録されている前記検証プログラムは、それぞれ異なる秘密情報を有する複数の情報処理装置の正当性を検証することができる。
前記記録媒体は、さらに、前記仮想マシン上で実行され、前記コンテンツの再生に係る処理手順を含む再生関連プログラムを記録しており、前記検証方法は、さらに、検証の結果、前記情報処理装置が不正である場合、前記コンテンツの再生に係る処理手順の実行を抑制する抑制ステップを含むことを特徴とする構成であってもよい。【００１５】  この構成によると、前記仮想マシンを含む前記情報処理装置が不正であると判定されると、前記抑制ステップにおいて、前記コンテンツの再生に係る処理手順の実行を抑制する。従って、本発明の前記検証方法は、不正に実装された仮想マシンを含む情報処理装置によるコンテンツの再生を抑制することができるという優れた効果を奏する。
【図面の簡単な説明】
【００１６】
【図１】記録媒体１０２及び情報処理装置１０１の構成を示す図
【図２】仮想マシンコード実行処理のフロー図
【図３】仮想マシンを含む実行環境の正当性検証処理のフロー図
【図４】検証値テーブル１１６のデータ構造例
【図５】仮想マシンコード１２１が持つ検証情報のデータ構造例
【図６】仮想マシンコード１２１が持つ検証情報のデータ構造別例
【符号の説明】
【００１７】  １０１  情報処理装置
１０２  記録媒体
１１１  ディスク読込部
１１２  ユーザ操作受付部
１１３  仮想マシン実行部
１１４  情報保持部
１１５  仮想マシン実行コード
１１６  検証値テーブル
１１７  検証値テーブル識別情報
１２１  仮想マシンコード
１１５１  検証値取得モジュール
１１５２  検証値変換モジュール
１１５３  ステート保持モジュール
１１５４  仮想マシンコード実行モジュール
１１２１  仮想マシン検証モジュール
１１２２  検証情報モジュール
１１２３  コード依存処理モジュール
４０１  アドレス
４０２  値
５０１  検証順序
５０２  検証値
【発明を実施するための最良の形態】
【００１８】  以下、発明を実施するための最良の形態を、図面を参照しながら説明する。
図１を使って、本発明の一実施形態に係る記録媒体、及び情報処理装置について説明する。
記録媒体１０２には、仮想マシン上で動作するプログラムである、仮想マシンコード１２１が記録されている。記録媒体１０２の一実装例としては、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）であるが、それに限るものではない。さらに、仮想マシンコード１２１は、仮想マシン検証モジュール１１２１、検証情報保持モジュール１１２２、コード依存処理モジュール１１２３から構成される。各モジュールの詳細は後述する。【００１９】  情報処理装置１０１は、仮想マシンを使って、仮想マシンコード１２１を実行する装置であり、図１に示すように、ディスク読込部１１１、ユーザ操作受付部１１２、仮想マシン実行部１１３、情報保持部１１４から構成される。仮想マシンとは、ＣＰＵやＯＳ等のプラットフォームに依存せずに、プログラムを動作させるために、仮想マシンコード１２１として実装されたプログラムを、プラットフォーム用のネイティブコードに変換して実行するソフトウェアである。具体的には、例えば仮想マシンＪａｖａ（登録商標）仮想マシンであり、仮想マシンコード１２１はＪａｖａバイトコードであるが、これに限るものではない。【００２０】  情報処理装置１０１の一実装例としては、ＣＰＵ、ワークメモリ、フラッシュメモリ、ＢＤドライブ、リモートコントローラとから構成されるコンピュータシステムであり、ディスク読込部１１１はＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）ドライブであり、情報保持部１１４はフラッシュメモリであり、ユーザ操作受付部１１２はリモートコントローラであり、仮想マシン実行部１１３は、ＣＰＵとワークメモリを用いて動作するソフトウェアで構成する方法が挙げられるが、他にも、ハードウェアでの実装など、ソフトウェアによる構成に限定されるものではない。その他の実装形態についても、これに限定されるものではない。【００２１】  また、情報保持部１１４には、仮想マシン実行コード１１５と、検証値テーブル１１６と、検証値テーブル識別情報１１７が保持されている。仮想マシン実行コード１１５は、ソフトウェアであり、検証値取得モジュール１１５１、検証値変換モジュール１１５２、ステート保持モジュール１１５３、仮想マシンコード実行モジュール１１５４から構成される。各モジュールの詳細は後述する。【００２２】  検証値テーブル１１６は、情報処理装置の実行環境に関する値を保持しているメモリテーブルであり、仮想マシンコード１２１が仮想マシンを含む実行環境の正当性を検証するために利用する値を記録したものである。例えば、下記のようにファームウェアのバイナリデータ等であって情報処理装置１０１固有のものであるため、情報処理装置毎に異なる値をとるデータである。図４に、具体的なデータ構成を示す。検証値テーブル１１６は、アドレス４０１と値４０２で構成されている。例えば、アドレス０ｘ００ｆｆ００００に対応する値は、０ｘ００であることを意味している。また、検証値テーブル１１６は固定的なものではなく、検証値を要求された時点で必ず固定的な値を返すことができれば、検証値テーブル１１６の全部もしくは一部が、処理を実行する中で動的に変更されても構わない。【００２３】  検証値テーブル識別情報１１７は、検証値テーブル１１６を識別するための情報であ���、例えば、「情報処理装置メーカＩＤ＋情報処理装置のモデル番号＋検証値テーブルのバージョン番号」で構成される８バイトのデータであるが、検証値テーブル１１６を一意に特定できる情報であれば、これに限るものではない。
ここで、検証情報の作成について説明する。正規の仮想マシン実行コード１１５の提供者は、仮想マシンの検証値テーブル１１６と検証値テーブル識別情報１１７を仮想マシン管理機関に提出する。仮想マシン管理機関は、仮想マシンコードの実装者に対し、正規の仮想マシンの検証値テーブル１１６と検証値テーブル識別情報１１７を提供する。仮想マシンコードの実装者は、これを基に検証情報を作成する。【００２４】  なお、本実施の形態では、記録媒体１０２として、ＢＤを想定し、そこに記録された仮想マシンコード１２１をディスク読込部１１１にて情報処理装置１０１に取り込んでいるが、それに限るものではなく、例えば、ディスク読込部１１１をインターネット接続部に置き換え、仮想マシンコード１２１をインターネット経由で情報処理装置１０１に取り込む等、他の方法で仮想マシンコード１２１を情報処理装置１０１に取り込んでもよい。【００２５】  以上で、本発明の一実施形態に係る記録媒体、及び情報処理装置についての説明を終わる。
（仮想マシンコードの実行）
次に、図２を使って、情報処理装置１０１での仮想マシンコードの実行について説明する。【００２６】  まず、情報処理装置１０１はユーザ操作受付部１１２を通じて、記録媒体１０２上の仮想マシンコード１２１を実行するよう指示を受けることで処理が開始される。
仮想マシンコード１２１の実行が指示されると、仮想マシン実行部１１３は、情報保持部１１４から、仮想マシン実行コード１１５と検証値テーブル１１６をロードし、仮想マシンを起動する（Ｓ２０１）。【００２７】  次に、ディスク読込部１１１を通じて記録媒体１０２から、仮想マシンコード１２１を読み出し、仮想マシン実行部１１３が仮想マシン上で仮想マシンコード１２１を起動する（Ｓ２０２）。
仮想マシン上で起動された仮想マシンコード１２１は、仮想マシン検証モジュール１１２１、及び検証情報保持モジュール１１２２を用いて、自身を実行している仮想マシンを含む実行環境の正当性の検証を行う（Ｓ２０３）。この処理の詳細については、後述する。【００２８】  Ｓ２０３の検証結果がＮＧの場合、仮想マシンコード１２１は自身の実行を終了するように実装されているため、その実行を終了する（Ｓ２０４）。
Ｓ２０３の検証結果がＯＫの場合、仮想マシンコード１２１中のコード依存処理モジュール１１２３で定義されたコード依存処理を実行する（Ｓ２０５）。コード依存処理モジュール１１２３には、仮想マシンコード１２１毎に異なる処理が定義されており、例えば、記録媒体１０２に別途記録された映画等のコンテンツデータの著作権保護処理として、コンテンツの復号処理を行うが、これに限るものではない。【００２９】  コード依存処理が終了した時点で、仮想マシンコード１２１の実行を終了する。
以上で、情報処理装置１０１での仮想マシンコード１２１の実行についての説明を終わる。
（仮想マシンを含む実行環境の正当性検証）
仮想マシンを含む実行環境の正当性検証処理の詳細について説明する。この処理は、仮想マシンコード１２１によって、自身を実行する仮想マシンが正規のものがどうかを検証する処理である。【００３０】  仮想マシン実行コード１１５は、インタフェースや処理内容等の実装に必要な情報が公開されているため、誰でも実装することができる。このため、正規の仮想マシン実行コード１１５でなければ、仮想マシンコード１２１の実行時に不正な動作を行い、仮想マシンコード１２１の処理が正しく行われなくなる可能性がある。仮想マシンコード１２１が、例えば、記録媒体１０２に別途記録されている映画等のコンテンツの著作権を保護するプログラムである場合には、不正にコンテンツを再生され、著作権を保護できなくなるため、仮想マシンを含む実行環境の検証処理が必要になる。【００３１】  仮想マシンコード１２１を構成するモジュールについて説明する。仮想マシン検証モジュール１１２１は、自身を実行する仮想マシンが正規のものかどうかを検証するモジュールであり、検証情報保持モジュール１１２２は、仮想マシンを含む実行環境の正当性を検証するための情報である。具体的には、仮想マシンから検証値テーブル識別情報１１７と検証値を取得し、その値が検証情報保持モジュール１１２２で保持する検証情報と一致するかどうかで、仮想マシンを含む実行環境の正当性を検証する。これにより、異なる再生装置にプレーヤモデル番号、メーカ名等を含むデータをコピーしたエミュレータを作成し、例えばコンピュータ上で仮想マシン及び該エミュレータを搭載したとしても、検証値テーブル１１６に保持された機器固有の値が異なるものとなるため、かかる不当なエミュレータ上における再生を阻止することができる。検証処理の詳細については、後述する。【００３２】  次に、仮想マシン実行コード１１５を構成するモジュールについて説明する。検証値取得モジュール１１５１は、仮想マシンコード１２１中の仮想マシン検証モジュール１１２１が指定したアドレスに該当する値を、検証値テーブル１１６中から検索し、その値を取得するモジュールである。検証値変換モジュール１１５２は、検証値テーブル１１６から取得した値を演算により変換するモジュールである。仮想マシンはステートを持っており、検証値テーブル１１６から読み込んだ値を、ステートに応じて一意的に変換する特徴を持つ。また、ステートは、変換処理が終了した後、これまでの読み出された検証値の読み出し順序によって一意的に決定される値に、更新される。このステートを保持するのが、ステート保持モジュール１１５３である。【００３３】  仮想マシンコード実行モジュール１１５４は、仮想マシンコード１２１中のコード依存処理モジュール１１２３で定義される処理をプラットフォームに依存するネイティブコードに変換しながら、実行するモジュールである。
検証値テーブル１１６は、アドレス４０１と、値４０２から構成されるデータであり、値４０２に対し、一意のアドレス４０１が対応しているテーブルである。なお、検証値テーブル１１６の値４０２を一意に特定することができれば、アドレス４０１は、物理／論理アドレス、実／仮想アドレスを問わない。また、フォントファイルやファームウェアのバイナリデータ等、情報処理装置１０１が他の用途のために保持しているバイナリデータの一部を検証値テーブル１１６として流用しても構わない。【００３４】  続いて、図３を使って、仮想マシンを含む実行環境の正当性検証処理フローについて説明する。
最初に、仮想マシンコード１２１は、例えば、０ｘ１２などの初期値を仮想マシンに与える（Ｓ３０１）。初期値は予め決定しておいた値であれば、他の値を用いても構わない。【００３５】  仮想マシンは、与えられた初期値をステート保持モジュール１１５３に保持する（Ｓ３０２）。続いて、仮想マシンは、検証値テーブル識別情報１１７を仮想マシンコード１２１に送信する（Ｓ３０３）。次に、仮想マシンコード１２１は、仮想マシン検証モジュール１１２１を使って、Ｓ３０３で受信した検証値テーブル識別情報１１７に該当する検証情報を検証情報保持モジュール１１２２から取得する（Ｓ３０４）。続いて、仮想マシン検証モジュール１１２１を使って、検証回数を確認する。検証回数が、仮想マシン検証モジュール１１２１内で設定された規定回数に達した場合、処理を終了し、規定回数に満たない場合、検証処理を継続する（Ｓ３０５）。【００３６】  次に、仮想マシン検証モジュール１１２１は、検証情報保持モジュール１１２２が保持する検証情報に定義された順序に従って、仮想マシンに対して検証値を要求する（Ｓ３０６）。検証情報保持モジュール１１２２が保持する検証情報のデータ構造を図５に示す。検証情報は、検証値テーブル識別情報１１７、検証順序５０１、アドレス４０１、検証値５０２から構成され、各情報処理装置１０１が保持する検証値テーブル１１６に対応する検証情報を持つ。例えば、図５では、検証値テーブル識別情報１１７が０ｘ００１１ｆｆ０００００１１００１の検証情報と、同じく検証値テーブル識別情報１１７が０ｘ００２２ｅｅ０００００５０００３の検証情報と、他の検証情報が記述されていることを示している。仮想マシン検証モジュール１１２１は、Ｓ３０３で受信する検証値テーブル識別情報１１７と合致するレコードを参照し、検証順序５０１の順に、アドレス４０１を使って検証値を仮想マシンに要求する。仮想マシンが返すアドレスの対応する値と、検証値５０２が一致するかを確認することで、仮想マシンを含む実行環境の正当性を検証する。【００３７】  Ｓ３０６では、仮想マシン検証モジュール１１２１は、検証情報に従い、現在までの検証回数に応じたアドレス４０１を指定して検証値を仮想マシンに要求するが、具体的に図５の検証値テーブル識別情報１１７が０ｘ００１１ｆｆ０００００１１００１の検証情報を用いた場合では、現在までの検証回数が０回の時は、アドレス０ｘ００ｆｆ０００１を指定して、また、現在までの検証回数が２回の時は、アドレス０ｘ００ｆｆ０００２を指定して検証値を要求する。【００３８】  検証値の要求を受けた仮想マシンは、検証値取得モジュール１１５１を使って、検証値テーブル１１６から指定されたアドレスに対応する値を取得する（Ｓ３０７）。例えば、仮想マシン検証モジュール１１２１からアドレス０ｘ００ｆｆ０００１に対応する値を要求された場合、図４の検証値テーブル１１６から、該当するアドレス４０１に対応する値０ｘｆｆを取得する。【００３９】  続いて、仮想マシン中の検証値変換モジュール１１５２はステート保持モジュール１１５３からステートを取得する（Ｓ３０８）。例えば、初期状態の場合には、Ｓ３０１、Ｓ３０２で保持したステート０ｘ１��を取得する。
次に、検証値変換モジュール１１５２が検証値テーブル１１６から取得した値に演算を施し、変換する（Ｓ３０９）。例えば、検証値変換モジュール１１５２は、ステート保持モジュール１１５３から取得したステートと、検証値テーブル１１６から読み込んだ値のＸＯＲを行い、変換する。具体的には、取得したステートが０ｘ１２、検証値テーブル１１６から読み込んだ値が０ｘｆｆの場合、０ｘｅｄに変換する。【００４０】  次に、検証値変換モジュール１１５２は、Ｓ３０９で利用した値を使って、ステート保持モジュール１１５３のステートを更新する（Ｓ３１０）。例えば、指定されたアドレスの最下位１バイトの値と、ステート保持モジュール１１５３が保持する値をＸＯＲした値で更新する。
次に、仮想マシンは、Ｓ３０９で算出した検証値を仮想マシンコード１２１に返す（Ｓ３１１）。仮想マシンコード中の仮想マシン検証モジュール１１２１が、その値と、検証情報中の値が一致するかを確認し、一致する場合は検証結果をＯＫ、一致しない場合は検証結果をＮＧと判断する（Ｓ３２１）。【００４１】  検証結果がＯＫの場合、Ｓ３０５に戻り、規定回数分の検証を実施する。検証結果がＮＧの場合、処理を終了する（Ｓ３２２）。
以上で、仮想マシンを含む実行環境の正当性検証処理の説明を終わる。
なお、本実施の形態のＳ３０１で、仮想マシンに設定する初期値は、仮想マシンコード１２１が保持しているとしたが、これに限るものではなく、仮想マシン実行コード１１５が保持しても構わない。この場合、Ｓ３０１では、仮想マシンコード１２１が仮想マシンに対して、初期値を設定するのではなく、初期化要求のみを行う。この初期化要求は、ステート保持モジュール１１５３が仮想マシン検証モジュール１１２１実行時に初期値を読み込む構成としても良いし、仮想マシン検証モジュール１１２１が明示的に実行を指示するコードを含む構成としても良い。他にも、検証値テーブル１１６内の特定の値を初期値として用いても構わない。【００４２】  また、本実施の形態のＳ３０９では、検証値の変換演算として、ステート保持モジュール１１５３から取得したステートと、指定されたアドレスに対応する値のＸＯＲを用いているが、これに限るものではなく、ステート保持モジュール１１５３から取得したステートと、検証値テーブル１１６から読み込んだ値を使って、一意な値を算出できれば、ＳＨＡ等の一方向性関数、ＡＥＳ等の暗号関数等の他の演算を用いても構わない。【００４３】  また、本実施の形態では、仮想マシンが要求された検証値をＳ３０９で変換した上で仮想マシンコード１２１に返しているが、検証値テーブル１１６の値を変換せずにそのまま返しても構わない。この場合、図１における、検証値変換モジュール１１５２、ステート保持モジュール１１５３、及び図３におけるＳ３０１、Ｓ３０２、Ｓ３０８、Ｓ３０９、Ｓ３１０のステップは不要となる。【００４４】  また、本実施の形態のＳ３１０では、ステート更新において、更新する値の算出方法として、指定されたアドレスの最下位１バイトの値と、ステート保持モジュール１１５３が保持する値をＸＯＲしているが、これに限るものではなく、検証値を呼び出す順序に応じて異なる値を算出でき、且つ再現性のある算出方法であれば、他の方法を用いても構わない。このようにして算出するステートを検証値の変換に用いていることで、仮想マシンコード１２１から見た場合、同じアドレスを指定して検証値を要求しても、その要求順序が異なれば、異なる値が返ってくるため、例えば検証値テーブル１１６が暴露された場合でも、Ｓ３０９の変換演算が暴露されなければ、仮想マシンコード１２１による検証をパスすることができず、セキュリティレベルを向上させる効果がある。【００４５】  なお、本実施の形態では、Ｓ３０５において、検証値の確認を規定された複数回数行うことを前提としているが、どの装置に対しても検証値の確認する回数を１回と規定しておき、Ｓ３０５、Ｓ３２２の処理を省略しても構わない。また、この場合、図６に示す検証情報を用いて、１つの検証値テーブル１１６に該当する検証情報に複数の検証値を用意しておき、検証時にランダムに１つを選択して仮想マシンに検証値を要求しても構わない。このように、検証値を１回しか確認しない場合に検証値をランダムに要求することで、検証値テーブル１１６の特定アドレスの値が暴露された際に「不正仮想マシンが暴露された固定値を返す」という不正攻撃に対応することができる。【００４６】  また、本実施の形態では、検証値変換��ジュール１１５２は、仮想マシン実行コード１１５に含まれる構成であるが、これに限るものではなく、仮想マシン実行コード１１５とは、個別に記憶されているとしても良い。
また、本実施の形態では、検証値のデータ長として、１バイトのデータ長を用いているが、これに限るものではない。【００４７】  （その他変形例）
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
（１）上記の情報処理装置は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記ＲＡＭまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、情報処理装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。【００４８】  （２）上記の情報処理装置を構成する構成要素の一部または全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムＬＳＩは、その機能を達成する。【００４９】  （３）上記の情報処理装置を構成する構成要素の一部または全部は、情報処理装置に脱着可能なＩＣカードまたは単体のモジュールから構成されているとしてもよい。前記ＩＣカードまたは前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどから構成されるコンピュータシステムである。前記ＩＣカードまたは前記モジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ＩＣカードまたは前記モジュールは、その機能を達成する。このＩＣカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。【００５０】  （４）本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。【００５１】  また、本発明は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。【００５２】  また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
（５）本発明は、内部に含んだ仮想マシンによりコンテンツの再生に係る処理を実行する情報処理装置において用いられる検証方法であって、前記コンテンツと共に記録媒体に記録されている検証プログラムを読み込む読込ステップと、前記検証プログラムを前記仮想マシンが実行することにより、前記仮想マシンを含む前記情報処理装置の正当性を検証する検証ステップとを含むことを特徴とする。【００５３】  ここで、「読込ステップ」は、実施の形態において説明したＳ２０２の処理に含まれる。また、「検証ステップ」は、実施の形態において説明した、Ｓ２０３の処理（図２参照）と、それぞれ対応している。
（６）また、上記の変形例（５）の検証方法であって、前記検証ステップにおいて、タイミングによって変動する証明用情報を用いて、前記検証を行うとしてもよい。【００５４】  ここで、「証明用情報」とは、実施の形態では、図３のＳ３０９の処理によって生成された値である。
（７）また、変形例（６）において、前記検証ステップは、前記情報処理装置が保持する秘密情報に基づいた前記証明用情報を要求する要求ステップと、前記証明用情報と、前記記録媒体に記録された検証情報とを比較する比較ステップと、比較結果に基づき、正当であるか否かを判断する判断ステップとを含み、前記検証方法は、さらに、前記要求に応じて、前記仮想マシンにより、前記証明用情報を生成し、生成した前記証明用情報を前記検証プログラムに提供する提供ステップを含むとしてもよい。【００５５】  この「要求ステップ」、「比較ステップ」及び「判断ステップ」は、上記の実施の形態で説明した、Ｓ３０６、Ｓ３２１及びＳ３２２の処理（図３参照）と、それぞれ対応している。「提供ステップ」は、Ｓ３０７〜Ｓ３１１の処理と対応している。「秘密情報」は、検証値テーブル１１６に含まれる値が該当し、「検証情報」は、図５に示す検証値が該当する。【００５６】  （８）また、変形例（７）において、前記判断ステップは、タイミングによって前記証明用情報が変動する毎に、前記比較ステップを繰り返させる繰返しステップと、前記繰返しの結果、所定回数連続して、前記検証情報と前記証明用情報が一致しなければ、前記情報処理装置は不正であると決定する決定ステップとを含むとしてもよい。
ここで、「繰返しステップ」は、上記の実施の形態において説明したＳ３２２のＯＫ（図３参照）の場合の処理と対応する。「決定ステップ」は、Ｓ３０５の処理及びＳ３２２のＮＧの場合の処理が該当する。【００５７】  （９）また、上記の変形例（７）の検証方法において、前記提供ステップは、前記秘密情報の読み出し順序に応じて一意的に決定する値により、前記証明用情報が生成される過程において用いられる演算情報を、変更する更新ステップと、生成した前記証明用情報を、前記検証用プログラムへ出力する出力ステップとを含むとしてもよい。
ここで、「更新ステップ」及び「出力ステップ」は、上記の実施の形態において説明したＳ３１０及びＳ３１１の処理と、それぞれ、対応している。また、「演算情報」は、実施の形態において説明したステートと対応する。【００５８】  （１０）また、上記の変形例（６）において、前記記録媒体には、複数の検証候補情報が記録されており、前記情報処理装置は、１以上の秘密情報を保持しており、前記検証ステップは、１の検証候補情報を検証情報として選択する選択ステップと、選択された前記検証情報と対応する秘密情報に基づいて生成された前記証明用情報を要求する要求ステップと、前記検証情報と前記証明用情報とを比較する比較ステップと、比較結果を基に、前記情報処理装置の正当性を判断する判断ステップとを含み、前記検証方法は、さらに、前記要求を受けると、前記仮想マシンにより、前記検証情報と対応する前記秘密情報を用いて前記証明用情報を生成し、生成した前記証明用情報を前記検証用プログラムへ提供する提供ステップとを含むとしてもよい。【００５９】  ここで、「選択ステップ」、「要求ステップ」及び「比較ステップ」は、上記の実施の形態の、Ｓ３０４、Ｓ３０６及び３２１（図３）参照の処理とそれぞれ対応している。「判断ステップ」は、Ｓ３２２及びＳ３０５の処理を含む。「提供ステップ」は、実施の形態のＳ３０７〜Ｓ３１１の処理が該当する。また、「検証候補情報」は、図５及び図６に示す検証値５０２が該当する。「検証情報」は、検証値５０２の中で、Ｓ３０６の処理により、検証順序５０１に従って選択された１の検証値と対応する。【００６０】  （１１）また、上記の変形例（１０）において、前記判断ステップは、前記比較ステップにより前記検証情報と証明用情報とが一致する場合に、前記選択ステップ、前記要求ステップ及び前記比較ステップを繰り返させる繰返しステップと、前記繰返しにより、所定回数連続して前記検証情報と証明用情報とが一致する場合に、前記情報処理装置が正当であると決定し、それ以外の場合に、前記情報処理装置が不正であると決定する決定ステップを含むとしてもよい。【００６１】  ここで、「繰返しステップ」は、実施の形態１では、Ｓ３２２のＯＫの場合の処理と対応する。「決定ステップ」は、Ｓ３２２のＮＧの場合の処理及びＳ３０５の処理と対応する。
（１２）また、上記の変形例（１１）において、前記検証ステップの繰り返しにおいて、前記選択ステップでは、繰返しの回数に応じて異なる検証候補情報を、前記検証情報として選択し、前記提供ステップでは、繰返しの回数に応じて変動する前記証明用情報を生成するとしてもよいし、同じく変形例（１１）において、前記複数の検証候補情報のうち少なくとも一つは、前記仮想マシンを一意に識別する識別子と対応しており、前記選択ステップでは、前記識別子と対応する検証候補情報を前記検証情報として選択するとしてもよい。【００６２】  （１３）また、上記の変形例（１０）において、前記選択ステップでは、ランダムに前記検証情報を選択し、前記比較ステップでは、前記検証情報に対応して、ランダムに変動する前記証明用情報を用いて、前記比較を行うとしてもよいし、同じく変形例（１０）において、前記複数の検証候補情報のうち、少なくとも１つは、前記仮想マシンを一意に識別する識別子と対応しており、前記選択ステップでは、前記識別子と対応する検証候補情報の中から、前記検証情報を選択するとしてもよい。【００６３】  ここで、「識別子」は、上記の実施の形態において説明した検証値テーブル識別情報１１７と対応する。
（１４）また、上記の変形例（５）において、前記記録媒体は、さらに、前記仮想マシン上で実行され、前記コンテンツの再生に係る処理手順を含む再生関連プログラムを記録しており、前記検証方法は、さらに、検証の結果、前記情報処理装置が不正である場合、前記コンテンツの再生に係る処理手順の実行を抑制する抑制ステップを含むとしてもよいし、同じく変形例（５）において、前記コンテンツは、デジタル著作物を暗号化して生成されており、前記コンテンツの再生に係る処理手順は、前記コンテンツを復号する手順を含むとしてもよい。【００６４】  ここで、「抑制ステップ」は、実施の形態において説明した、Ｓ２０４のＮＧの処理（図２参照）と対応している。
（１５）また、本発明は、仮想マシンを含み、記録媒体に記録されているコンテンツの再生に係る処理を実行する情報処理装置であって、前記記録媒体には、前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムが記録されており、前記情報処理装置は、自身に固有の秘密情報を１以上記憶している記憶手段と、前記検証プログラムを読み込む読込手段と、前記検証プログラムから、タイミングに応じて変動し、前記検証に用いられる検証情報と対応する秘密情報に基づいて生成された証明用情報に対する要求を受付ける受付手段と、前記要求を受け付けると、前記検証情報と対応する秘密情報を用いて、前記証明用情報を生成し、生成した前記証明用情報を、前記検証用プログラムへ提供する提供手段とを備えることを特徴とする情報処理装置でもある。【００６５】  また、本発明は、仮想マシンを含み、記録媒体に記録されているコンテンツの再生に係る処理を実行する情報処理装置に搭載される集積回路であって、前記記録媒体には、前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムが記録されており、前記集積回路は、自身に固有の秘密情報を１以上記憶している記憶手段と、前記検証プログラムを読み込む読込手段と、前記検証プログラムから、タイミングに応じて変動し、前記検証に用いられる検証情報と対応する秘密情報に基づいて生成された証明用情報に対する要求を受付ける受付手段と、前記要求を受け付けると、前記検証情報と対応する秘密情報を用いて、前記証明用情報を生成し、生成した前記証明用情報を、前記検証用プログラムへ提供する提供手段とを備えることを特徴とする集積回路でもある。【００６６】  また、本発明は、仮想マシンを含み、コンテンツの再生に係る処理を実行する情報処理装置の正当性を検証する検証プログラムを記録している記録媒体であって、前記検証プログラムと共に、前記検証に用いられる１以上の検証候補情報を記録しており、前記検証プログラムは、前記検証候補情報から、１の検証候補情報を検証情報として選択する選択ステップと、タイミングに応じて変動し、前記検証情報と対応する秘密情報に基づいて生成された証明用情報を、前記仮想マシンに要求する要求ステップと、前記証明用情報を取得し、取得した前記証明用情報と、前記検証情報とを比較する比較ステップと、比較結果に応じて、前記情報処理装置が正当であるか否かを判断する判断ステップとを含むことを特徴とする記録媒体であってもよい。【００６７】  また、本発明は、仮想マシンを含み、コンテンツの再生に係る処理を実行する情報処理装置と、前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムを記録している記録媒体から構成される検証システムであって、前記記録媒体は、前記検証プログラムと、前記検証に用いられる１以上の検証候補情報とを記録しており、前記検証プログラムは、前記複数の検証候補情報から、１の検証候補情報を検証情報として選択する選択ステップと、タイミングに応じて変動し、前記検証情報と対応する秘密情報に基づいて生成された証明用情報を、前記記録装置に要求する要求ステップと、前記情報処理装置から、前記証明用情報を取得し、取得した前記証明用情報と、前記検証情報とを比較する比較ステップと、比較結果に応じて、前記情報処理装置が正当であるか否かを判断する判断ステップとを含み、前記情報処理装置は、前記情報処理装置に固有の秘密情報を１以上記憶している記憶手段と、前記検証プログラムを読み込む読込手段と、前記検証プログラムから、前記要求を受け付ける受付手段と、前記要求を受け付けると、前記検証情報と対応する秘密情報を用いて、前記証明用情報を生成し、生成した前記証明用情報を、前記検証用プログラムへ提供する提供手段とを備えることを特徴とする検証システムでもある。【００６８】  ここで、上記の「検証プログラム」は、図１に示す仮想マシン検証モジュール１１２１と対応しており、「検証候補情報」は、図５及び６に示す検証値５０２と対応する。
本変形例の「検証プログラム」に含まれる、「選択ステップ」、「要求ステップ」及び「比較ステップ」は、上記の実施の形態の、Ｓ３０４、Ｓ３０６及び３２１（図３）参照の処理とそれぞれ対応している。「判断ステップ」は、Ｓ３２２及びＳ３０５の処理を含む。【００６９】  「情報処理装置」を構成する「記憶手段」は、情報保持部１１４と対応している。「読み込み手段」は、ディスク読込部１１１と対応する。「受付手段」及び「提供手段」は、仮想マシン実行部１１３が、仮想マシン実行コード１１５に含まれる命令コードを読み出し、解読し、実行することにより実現される。また、「秘密情報」は、図４を用いて説明した値４０２がこれに該当し、「証明用情報」は、Ｓ３０９の処理により生成される値である。【００７０】  （１６）また、本発明は、仮想マシンを含み、コンテンツの再生に係る処理を実行する情報処理装置の正当性を検証する検証プログラムであって、前記複数の検証候補情報から、１の検証候補情報を検証情報として選択する選択ステップと、タイミングに応じて変動し、前記検証情報と対応する秘密情報に基づいて生成された証明用情報を、前記記録装置に要求する要求ステップと、前記情報処理装置から、前記証明用情報を取得し、取得した前記証明用情報と、前記検証情報とを比較する比較ステップと、比較結果に応じて、前記情報処理装置が正当であるか否かを判断する判断ステップとを含むことを特徴とする検証プログラムでもある。【００７１】  ここで、上記の「検証プログラム」は、図１に示す仮想マシン検証モジュール１１２１と対応しており、「検証候補情報」は、図５及び６に示す検証値５０２と対応する。「検証プログラム」に含まれる、「選択ステップ」、「要求ステップ」及び「比較ステップ」は、上記の実施の形態の、Ｓ３０４、Ｓ３０６及び３２１（図３）参照の処理とそれぞれ対応している。「判断ステップ」は、Ｓ３２２及びＳ３０５の処理を含む。また、「秘密情報」は、図４を用いて説明した値４０２がこれに該当し、「証明用情報」は、Ｓ３０９の処理により生成される値である。【００７２】  （１７）また、本発明は、仮想マシンを含み、記録媒体に記録されているコンテンツの再生に係る処理を実行する情報処理装置において用いられる証明プログラムであって、前記記録媒体には、前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムが記録されており、前記情報処理装置は、前記情報処理装置に固有の秘密情報を１以上記憶している記憶手段を備え、前記証明プログラムは、前記検証プログラムから、タイミングに応じて変動し、前記検証に用いられる検証情報と対応する秘密情報に基づいて生成された証明用情報に対する要求を受付ける受付ステップと、前記要求を受け付けると、前記検証情報と対応する秘密情報を用いて、前記証明用情報を生成し、生成した前記証明用情報を、前記検証用プログラムへ提供する提供ステップとを備えることを特徴とする証明プログラムでもある。【００７３】  ここで、上記の「検証プログラム」及び「証明プログラム」は、実施の形態において説明した仮想マシン検証モジュール１１２１及び仮想マシン実行コード１１５とそれぞれ対応する。
「証明プログラム」に含まれる「受付ステップ」は、実施の形態において説明したＳ３０７の処理に含まれる、「提供ステップ」は、Ｓ３０７〜Ｓ３１１の処理と対応している。【００７４】  （１８）また、本発明は以下のような構成であってもよい。
（１８−１）本発明は、仮想マシンを使って仮想マシンコードを実行する情報処理方法であって、仮想マシンコードが仮想マシンを含む実行環境の正当性を検証するステップと、検証の結果、前記仮想マシンを含む実行環境が不正であると判定した場合、前記仮想マシンコードの処理を停止するステップと、含むことを特徴とする。【００７５】  （１８−２）上記の変形例（１８−１）の情報処理方法において、前記検証ステップはさらに、前記仮想マシンが保持する秘密情報に基づいた特定の値を要求するステップと、前記仮想マシンが、前記特定の値を前記仮想マシンコードに提供するステップと、前記特定の値と、前記仮想マシンコードが保持する検証情報を比較し、一致することで正当性を検証するステップとを含むとしてもよい。【００７６】  （１８−３）また、上記の変形例（１８−２）の情報処理方法は、さらに、前記検証ステップを複数回、繰り返して行うステップを含んでいてもよい。
（１８−４）上記の変形例（１８−２）の情報処理方法において、前記仮想マシンが前記特定の値を前記仮想マシンコードに提供するステップが、前記仮想マシンが、前記特定の値に対し、その読み出し順序に応じて、一意的に決定する値に変換するステップを含むとしてもよい。【００７７】  （１８−５）また、本発明は、上記の変形例（１８−１）〜（１８−４）の何れかの情報処理方法に含まれるステップをコンピュータに実行させることを特徴とするプログラムでもある。
（１８−６）また、本発明は、上記の変形例（１８−１）〜（１８−４）のいずれかに記載された情報処理方法に含まれるステップをコンピュータに実行させることを特徴とするプログラムを記録したコンピュータ読み取り可能な記録媒体でもある。【００７８】  （１９）上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【産業上の利用可能性】
【００７９】  本発明にかかる、仮想マシンを使い、プラットフォームに依存しないプログラムを実行する情報処理装置は、著作権保護用プログラムなど、仮想マシン上で動作するプログラムにセキュリティを要求される場合に有用である。
【図１】
2007000993.tif 000002
【図２】
2007000993.tif 000003
【図３】
2007000993.tif 000004
【図４】
2007000993.tif 000005
【図５】
2007000993.tif 000006
【図６】
2007000993.tif 000007
【手続補正書】
【提出日】平成19年3月9日(2007.3.9)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
内部に含んだ仮想マシンによりコンテンツの再生に係る処理を実行する情報処理装置において用いられる検証方法であって、
前記コンテンツと共に記録媒体に記録されている検証プログラムを読み込む読込ステップと、
前記検証プログラムを前記仮想マシンが実行することにより、前記仮想マシンを含む前記情報処理装置の正当性を検証する検証ステップとを含み、
前記検証ステップにおいて、タイミングによって変動する証明用情報を用いて、前記検証を行う
ことを特徴とする検証方法。
【請求項２】
前記検証ステップは、
前記情報処理装置が保持する秘密情報に基づいた前記証明用情報を要求する要求ステップと、
前記証明用情報と、前記記録媒体に記録された検証情報とを比較する比較ステップと、
比較結果に基づき、正当であるか否かを判断する判断ステップとを含み、
前記検証方法は、さらに、
前記要求に応じて、前記仮想マシンにより、前記証明用情報を生成し、生成した前記証明用情報を前記検証プログラムに提供する提供ステップを含む
ことを特徴とする請求項１に記載の検証方法。
【請求項３】
前記判断ステップは、
タイミングによって前記証明用情報が変動する毎に、前記比較ステップを繰り返させる繰返しステップと、
前記繰返しの結果、所定回数連続して、前記検証情報と前記証明用情報が一致しなければ、前記情報処理装置は不正であると決定する決定ステップとを含む
ことを特徴とする請求項２に記載の検証方法。
【請求項４】
前記提供ステップは、
前記秘密情報の読み出し順序に応じて一意的に決定する値により、前記証明用情報が生成される過程において用いられる演算情報を、変更する更新ステップと、
生成した前記証明用情報を、前記検証用プログラムへ出力する出力ステップとを含む
ことを特徴とする請求項２に記載の検証方法。
【請求項５】
前記記録媒体には、複数の検証候補情報が記録されており、
前記情報処理装置は、１以上の秘密情報を保持しており、
前記検証ステップは、
１の検証候補情報を検証情報として選択する選択ステップと、
選択された前記検証情報と対応する秘密情報に基づいて生成された前記証明用情報を要求する要求ステップと、
前記検証情報と前記証明用情報とを比較する比較ステップと、
比較結果を基に、前記情報処理装置の正当性を判断する判断ステップとを含み、
前記検証方法は、さらに、
前記要求を受けると、前記仮想マシンにより、前記検証情報と対応する前記秘密情報を用いて前記証明用情報を生成し、生成した前記証明用情報を前記検証用プログラムへ提供する提供ステップとを含む
ことを特徴とする請求項１に記載の検証方法。
【請求項６】
前記判断ステップは、前記比較ステップにより前記検証情報と証明用情報とが一致する場合に、前記選択ステップ、前記要求ステップ及び前記比較ステップを繰り返させる繰返しステップと、
前記繰返しにより、所定回数連続して前記検証情報と証明用情報とが一致する場合に、前記情報処理装置が正当であると決定し、それ以外の場合に、前記情報処理装置が不正であると決定する決定ステップを含む
ことを特徴とする請求項５に記載の検証方法。
【請求項７】
前記検証ステップの繰り返しにおいて、
前記選択ステップでは、繰返しの回数に応じて異なる検証候補情報を、前記検証情報として選択し、
前記提供ステップでは、繰返しの回数に応じて変動する前記証明用情報を生成する
ことを特徴とする請求項６に記載の検証方法。
【請求項８】
前記複数の検証候補情報のうち少なくとも一つは、前記仮想マシンを一意に識別する識別子と対応しており、
前記選択ステップでは、前記識別子と対応する検証候補情報を前記検証情報として選択する
ことを特徴とする請求項７に記載の検証方法。
【請求項９】
前記選択ステップでは、ランダムに前記検証情報を選択し、
前記比較ステップでは、前記検証情報に対応して、ランダムに変動する前記証明用情報を用いて、前記比較を行う
ことを特徴とする請求項５に記載の検証方法。
【請求項１０】
前記複数の検証候補情報のうち、少なくとも１つは、前記仮想マシンを一意に識別する識別子と対応しており、
前記選択ステップでは、前記識別子と対応する検証候補情報の中から、前記検証情報を選択する
ことを特徴とする請求項９に記載の検証方法。
【請求項１１】
仮想マシンを含み、記録媒体に記録されているコンテンツの再生に係る処理を実行する情報処理装置であって、
前記記録媒体には、
前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムが記録されており、
前記情報処理装置は、
自身に固有の秘密情報を１以上記憶している記憶手段と、
前記検証プログラムを読み込む読込手段と、
前記検証プログラムから、タイミングに応じて変動し、前記検証に用いられる検証情報と対応する秘密情報に基づいて生成された証明用情報に対する要求を受付ける受付手段と、
前記要求を受け付けると、前記検証情報と対応する秘密情報を用いて、前記証明用情報を生成し、生成した前記証明用情報を、前記検証用プログラムへ提供する提供手段と
を備えることを特徴とする情報処理装置。
【請求項１２】
仮想マシンを含み、記録媒体に記録されているコンテンツの再生に係る処理を実行する情報処理装置に搭載される集積回路であって、
前記記録媒体には、
前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムが記録されており、
前記集積回路は、
自身に固有の秘密情報を１以上記憶している記憶手段と、
前記検証プログラムを読み込む読込手段と、
前記検証プログラムから、タイミングに応じて変動し、前記検証に用いられる検証情報と対応する秘密情報に基づいて生成された証明用情報に対する要求を受付ける受付手段と、
前記要求を受け付けると、前記検証情報と対応する秘密情報を用いて、前記証明用情報を生成し、生成した前記証明用情報を、前記検証用プログラムへ提供する提供手段と
を備えることを特徴とする集積回路。
【請求項１３】
仮想マシンを含み、コンテンツの再生に係る処理を実行する情報処理装置の正当性を検証する検証プログラムを記録している記録媒体であって、
前記検証プログラムと共に、前記検証に用いられる１以上の検証候補情報を記録しており、
前記検証プログラムは、
前記検証候補情報から、１の検証候補情報を検証情報として選択する選択ステップと、
タイミングに応じて変動し、前記検証情報と対応する秘密情報に基づいて生成された証明用情報を、前記仮想マシンに要求する要求ステップと、
前記証明用情報を取得し、取得した前記証明用情報と、前記検証情報とを比較する比較ステップと、
比較結果に応じて、前記情報処理装置が正当であるか否かを判断する判断ステップとを含む
ことを特徴とする記録媒体。
【請求項１４】
仮想マシンを含み、コンテンツの再生に係る処理を実行する情報処理装置と、前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムを記録している記録媒体から構成される検証システムであって、
前記記録媒体は、
前記検証プログラムと、前記検証に用いられる１以上の検証候補情報とを記録しており、
前記検証プログラムは、
前記複数の検証候補情報から、１の検証候補情報を検証情報として選択する選択ステップと、
タイミングに応じて変動し、前記検証情報と対応する秘密情報に基づいて生成された証明用情報を、前記記録装置に要求する要求ステップと、
前記情報処理装置から、前記証明用情報を取得し、取得した前記証明用情報と、前記検証情報とを比較する比較ステップと、
比較結果に応じて、前記情報処理装置が正当であるか否かを判断する判断ステップとを含み、
前記情報処理装置は、
前記情報処理装置に固有の秘密情報を１以上記憶している記憶手段と、
前記検証プログラムを読み込む読込手段と、
前記検証プログラムから、前記要求を受け付ける受付手段と、
前記要求を受け付けると、前記検証情報と対応する秘密情報を用いて、前記証明用情報を生成し、生成した前記証明用情報を、前記検証用プログラムへ提供する提供手段とを備える
ことを特徴とする検証システム。
【請求項１５】
仮想マシンを含み、コンテンツの再生に係る処理を実行する情報処理装置の正当性を検証する検証プログラムであって、
前記複数の検証候補情報から、１の検証候補情報を検証情報として選択する選択ステップと、
タイミングに応じて変動し、前記検証情報と対応する秘密情報に基づいて生成された証明用情報を、前記記録装置に要求する要求ステップと、
前記情報処理装置から、前記証明用情報を取得し、取得した前記証明用情報と、前記検証情報とを比較する比較ステップと、
比較結果に応じて、前記情報処理装置が正当であるか否かを判断する判断ステップとを含む
ことを特徴とする検証プログラム。
【請求項１６】
仮想マシンを含み、記録媒体に記録されているコンテンツの再生に係る処理を実行する情報処理装置において用いられる証明プログラムであって、
前記記録媒体には、
前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムが記録されており、
前記情報処理装置は、
前記情報処理装置に固有の秘密情報を１以上記憶している記憶手段を備え、
前記証明プログラムは、
前記検証プログラムから、タイミングに応じて変動し、前記検証に用いられる検証情報と対応する秘密情報に基づいて生成された証明用情報に対する要求を受付ける受付ステップと、
前記要求を受け付けると、前記検証情報と対応する秘密情報を用いて、前記証明用情報を生成し、生成した前記証明用情報を、前記検証用プログラムへ提供する提供ステップと
を備えることを特徴とする証明プログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムの実行に仮想マシンを用いる機器に関連し、特に、仮想マシンが実装されるプラットフォームの正当性を判断し、該プラットフォームが不正な場合に、排除する技術に関する。
【背景技術】
【０００２】
近年、プログラムをＯＳやＣＰＵ等のプラットフォームに依存させずに稼動させるため、仮想マシンが利用されている。一般的に、仮想マシンはソフトウェア実装されており、インタフェース等、実装に必要な情報が公開されているため、誰でも仮想マシンを実装することができる。
【特許文献１】特開２００５−２４４６９５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
そのため、仮想マシンを不正に実装することで、その上で稼動するプログラムに正規の動作ではなく、不正な動作をさせることが可能となる。そのプログラムが、例えば、映画等のコンテンツの著作権を保護するプログラムである場合、不正にコンテンツを再生されることにつながる。
本発明は、上記の問題点に鑑み、プログラムが、自身を稼動させる仮想マシンが正規に実装されたものであることを検証できる検証方法、情報処理装置、記録媒体、検証システム、証明プログラム及び検証プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００４】
上記の課題を解決するために、本発明は、内部に含んだ仮想マシンによりコンテンツの再生に係る処理を実行する情報処理装置において用いられる検証方法であって、前記コンテンツと共に記録媒体に記録されている検証プログラムを読み込む読込ステップと、前記検証プログラムを前記仮想マシンが実行することにより、前記仮想マシンを含む前記情報処理装置の正当性を検証する検証ステップとを含み、前記検証ステップにおいて、タイミングによって変動する証明用情報を用いて、前記検証を行うことを特徴とする。
【発明の効果】
【０００５】
上記の構成によると、前記仮想マシン上で動作する前記検証プログラムが、自身を実行する前記仮想マシンを含む前記情報処理装置の正当性を検証することができる。
また、この構成によると、前記検証ステップで用いられる証明用情報は、タイミングによって変動するので、不正な第三者が、前記証明用情報を取得するには、当該検証方法を実装したプログラム等を詳細に解析し、その動作を追いかけなければならず、その取得は非常に困難である。従って、証明書や識別番号といった静的なデータにより、正当性を証明する場合に比べ、正当な仮想マシンを偽装しにくいという優れた効果を生じる。
【０００６】
また、前記検証方法に含まれる前記検証ステップは、前記情報処理装置が保持する秘密情報に基づいた前記証明用情報を要求する要求ステップと、前記証明用情報と、前記記録媒体に記録された検証情報とを比較する比較ステップと、比較結果に基づき、正当であるか否かを判断する判断ステップとを含み、前記検証方法は、さらに、前記要求に応じて、前記仮想マシンにより、前記証明用情報を生成し、生成した前記証明用情報を前記検証プログラムに提供する提供ステップを含むことを特徴とするとしてもよい。
【０００７】
この構成によると、前記仮想マシンにより生成された前記証明用情報を用いて、正当性の検証を行う。正当な仮想マシンでなければ、正しい証明用情報を生成できないので、確実に、前記情報処理装置の備える仮想マシンの正当性を判断することができる。
また、前記検証方法において、前記判断ステップは、タイミングによって前記証明用情報が変動する毎に、前記比較ステップを繰り返させる繰返しステップと、前記繰返しの結果、所定回数連続して、前記検証情報と前記証明用情報が一致しなければ、前記情報処理装置は不正であると決定する決定ステップとを含むことを特徴とする構成であってもよい。
【０００８】
この構成では、所定回数連続して、前記検証情報と前記証明用情報とが一致した場合に限り、前記仮想マシンを含む情報処理装置が正当であるとする。そのため、何らかの方法で、不正な第三者に、１個の前記検証情報を知られたとしても、前記検証で、正当であると判断されることはない。
また、前記検証方法において、前記提供ステップは、前記秘密情報の読み出し順序に応じて一意的に決定する値により、前記証明用情報が生成される過程において用いられる演算情報を、変更する更新ステップと、生成した前記証明用情報を、前記検証用プログラムへ出力する出力ステップとを含むとしてもよい。
【０００９】
この構成によると、前記更新ステップにおいて、前記演算情報を更新する。つまり、前記証明用情報の生成に用いられるデータも、前記証明用情報の生成の度に異なるので、正しい証明用情報を予測されにくいという優れた効果を奏する。
また、本発明において、前記記録媒体には、複数の検証候補情報が記録されており、前記情報処理装置は、１以上の秘密情報を保持しており、前記検証ステップは、１の検証候補情報を検証情報として選択する選択ステップと、選択された前記検証情報と対応する秘密情報に基づいて生成された前記証明用情報を要求する要求ステップと、前記検証情報と前記証明用情報とを比較する比較ステップと、比較結果を基に、前記情報処理装置の正当性を判断する判断ステップとを含み、前記検証方法は、さらに、前記要求を受けると、前記仮想マシンにより、前記検証情報と対応する前記秘密情報を用いて前記証明用情報を生成し、生成した前記証明用情報を前記検証用プログラムへ提供する提供ステップとを含むことを特徴とする構成であってもよい。
【００１０】
さらに、本発明は、前記判断ステップは、前記比較ステップにより前記検証情報と証明用情報とが一致する場合に、前記選択ステップ、前記要求ステップ及び前記比較ステップを繰り返させる繰返しステップと、前記繰返しにより、所定回数連続して前記検証情報と証明用情報とが一致する場合に、前記情報処理装置が正当であると決定し、それ以外の場合に、前記情報処理装置が不正であると決定する決定ステップを含むことを特徴とする検証方法でもある。
【００１１】
この構成では、繰り返しにおいて、所定回数連続して検証情報と証明用情報とが一致した場合に限り、前記情報処理装置が正当であると、決定するので、より確実に不正な情報処理装置を検出し、不正な情報処理装置によるコンテンツの利用を抑制することができる。
また、本発明は、前記検証ステップの繰り返しにおいて、前記選択ステップでは、繰返しの回数に応じて異なる検証候補情報を、前記検証情報として選択し、前記提供ステップでは、繰返しの回数に応じて変動する前記証明用情報を生成することを特徴とする検証方法でもある。
【００１２】
この構成によると、前記選択手段は、繰返しの度に異なる証明用情報を選択するので、不正な第三者に、前記比較に用いられる検証情報を予測されにくいという優れた効果を奏する。
また、前記検証方法は、前記選択ステップでは、ランダムに前記検証情報を選択し、前記比較ステップでは、前記検証情報に対応して、ランダムに変動する前記証明用情報を用いて、前記比較を行うことを特徴とする構成であってもよい。
【００１３】
この構成によると、前記選択手段は、証明用情報をランダムに選択するので、不正な第三者に、前記比較に用いられる検証情報を予測されにくいという優れた効果を奏する。
また、本発明の検証方法において、前記複数の検証候補情報のうち少なくとも一つは、前記仮想マシンを一意に識別する識別子と対応しており、前記選択ステップでは、前記識別子と対応する検証候補情報を前記検証情報として選択するとしてもよい。
【００１４】
このような、構成にすることで、前記記録媒体に記録されている前記検証プログラムは、それぞれ異なる秘密情報を有する複数の情報処理装置の正当性を検証することができる。
前記記録媒体は、さらに、前記仮想マシン上で実行され、前記コンテンツの再生に係る処理手順を含む再生関連プログラムを記録しており、前記検証方法は、さらに、検証の結果、前記情報処理装置が不正である場合、前記コンテンツの再生に係る処理手順の実行を抑制する抑制ステップを含むことを特徴とする構成であってもよい。
【００１５】
この構成によると、前記仮想マシンを含む前記情報処理装置が不正であると判定されると、前記抑制ステップにおいて、前記コンテンツの再生に係る処理手順の実行を抑制する。従って、本発明の前記検証方法は、不正に実装された仮想マシンを含む情報処理装置によるコンテンツの再生を抑制することができるという優れた効果を奏する。
【発明を実施するための最良の形態】
【００１６】
以下、発明を実施するための最良の形態を、図面を参照しながら説明する。
図１を使って、本発明の一実施形態に係る記録媒体、及び情報処理装置について説明する。
記録媒体１０２には、仮想マシン上で動作するプログラムである、仮想マシンコード１２１が記録されている。記録媒体１０２の一実装例としては、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）であるが、それに限るものではない。さらに、仮想マシンコード１２１は、仮想マシン検証モジュール１１２１、検証情報保持モジュール１１２２、コード依存処理モジュール１１２３から構成される。各モジュールの詳細は後述する。
【００１７】
情報処理装置１０１は、仮想マシンを使って、仮想マシンコード１２１を実行する装置であり、図１に示すように、ディスク読込部１１１、ユーザ操作受付部１１２、仮想マシン実行部１１３、情報保持部１１４から構成される。仮想マシンとは、ＣＰＵやＯＳ等のプラットフォームに依存せずに、プログラムを動作させるために、仮想マシンコード１２１として実装されたプログラムを、プラットフォーム用のネイティブコードに変換して実行するソフトウェアである。具体的には、例えば仮想マシンはＪａｖａ（登録商標）仮想マシンであり、仮想マシンコード１２１はＪａｖａ(登録商標)バイトコードであるが、これに限るものではない。
【００１８】
情報処理装置１０１の一実装例としては、ＣＰＵ、ワークメモリ、フラッシュメモリ、ＢＤドライブ、リモートコントローラとから構成されるコンピュータシステムであり、ディスク読込部１１１はＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）ドライブであり、情報保持部１１４はフラッシュメモリであり、ユーザ操作受付部１１２はリモートコントローラであり、仮想マシン実行部１１３は、ＣＰＵとワークメモリを用いて動作するソフトウェアで構成する方法が挙げられるが、他にも、ハードウェアでの実装など、ソフトウェアによる構成に限定されるものではない。その他の実装形態についても、これに限定されるものではない。
【００１９】
また、情報保持部１１４には、仮想マシン実行コード１１５と、検証値テーブル１１６と、検証値テーブル識別情報１１７が保持されている。仮想マシン実行コード１１５は、ソフトウェアであり、検証値取得モジュール１１５１、検証値変換モジュール１１５２、ステート保持モジュール１１５３、仮想マシンコード実行モジュール１１５４から構成される。各モジュールの詳細は後述する。
【００２０】
検証値テーブル１１６は、情報処理装置の実行環境に関する値を保持しているメモリテーブルであり、仮想マシンコード１２１が仮想マシンを含む実行環境の正当性を検証するために利用する値を記録したものである。例えば、下記のようにファームウェアのバイナリデータ等であって情報処理装置１０１固有のものであるため、情報処理装置毎に異なる値をとるデータである。図４に、具体的なデータ構成を示す。検証値テーブル１１６は、アドレス４０１と値４０２で構成されている。例えば、アドレス０ｘ００ｆｆ００００に対応する値は、０ｘ００であることを意味している。また、検証値テーブル１１６は固定的なものではなく、検証値を要求された時点で必ず固定的な値を返すことができれば、検証値テーブル１１６の全部もしくは一部が、処理を実行する中で動的に変更されても構わない。
【００２１】
検証値テーブル識別情報１１７は、検証値テーブル１１６を識別するための情報であり、例えば、「情報処理装置メーカＩＤ＋情報処理装置のモデル番号＋検証値テーブルのバージョン番号」で構成される８バイトのデータであるが、検証値テーブル１１６を一意に特定できる情報であれば、これに限るものではない。
ここで、検証情報の作成について説明する。正規の仮想マシン実行コード１１５の提供者は、仮想マシンの検証値テーブル１１６と検証値テーブル識別情報１１７を仮想マシン管理機関に提出する。仮想マシン管理機関は、仮想マシンコードの実装者に対し、正規の仮想マシンの検証値テーブル１１６と検証値テーブル識別情報１１７を提供する。仮想マシンコードの実装者は、これを基に検証情報を作成する。
【００２２】
なお、本実施の形態では、記録媒体１０２として、ＢＤを想定し、そこに記録された仮想マシンコード１２１をディスク読込部１１１にて情報処理装置１０１に取り込んでいるが、それに限るものではなく、例えば、ディスク読込部１１１をインターネット接続部に置き換え、仮想マシンコード１２１をインターネット経由で情報処理装置１０１に取り込む等、他の方法で仮想マシンコード１２１を情報処理装置１０１に取り込んでもよい。
【００２３】
以上で、本発明の一実施形態に係る記録媒体、及び情報処理装置についての説明を終わる。
（仮想マシンコードの実行）
次に、図２を使って、情報処理装置１０１での仮想マシンコードの実行について説明する。
【００２４】
まず、情報処理装置１０１はユーザ操作受付部１１２を通じて、記録媒体１０２上の仮想マシンコード１２１を実行するよう指示を受けることで処理が開始される。
仮想マシンコード１２１の実行が指示されると、仮想マシン実行部１１３は、情報保持部１１４から、仮想マシン実行コード１１５と検証値テーブル１１６をロードし、仮想マシンを起動する（Ｓ２０１）。
【００２５】
次に、ディスク読込部１１１を通じて記録媒体１０２から、仮想マシンコード１２１を読み出し、仮想マシン実行部１１３が仮想マシン上で仮想マシンコード１２１を起動する（Ｓ２０２）。
仮想マシン上で起動された仮想マシンコード１２１は、仮想マシン検証モジュール１１２１、及び検証情報保持モジュール１１２２を用いて、自身を実行している仮想マシンを含む実行環境の正当性の検証を行う（Ｓ２０３）。この処理の詳細については、後述する。
【００２６】
Ｓ２０３の検証結果がＮＧの場合、仮想マシンコード１２１は自身の実行を終了するように実装されているため、その実行を終了する（Ｓ２０４）。
Ｓ２０３の検証結果がＯＫの場合、仮想マシンコード１２１中のコード依存処理モジュール１１２３で定義されたコード依存処理を実行する（Ｓ２０５）。コード依存処理モジュール１１２３には、仮想マシンコード１２１毎に異なる処理が定義されており、例えば、記録媒体１０２に別途記録された映画等のコンテンツデータの著作権保護処理として、コンテンツの復号処理を行うが、これに限るものではない。
【００２７】
コード依存処理が終了した時点で、仮想マシンコード１２１の実行を終了する。
以上で、情報処理装置１０１での仮想マシンコード１２１の実行についての説明を終わる。
（仮想マシンを含む実行環境の正当性検証）
仮想マシンを含む実行環境の正当性検証処理の詳細について説明する。この処理は、仮想マシンコード１２１によって、自身を実行する仮想マシンが正規のものがどうかを検証する処理である。
【００２８】
仮想マシン実行コード１１５は、インタフェースや処理内容等の実装に必要な情報が公開されているため、誰でも実装することができる。このため、正規の仮想マシン実行コード１１５でなければ、仮想マシンコード１２１の実行時に不正な動作を行い、仮想マシンコード１２１の処理が正しく行われなくなる可能性がある。仮想マシンコード１２１が、例えば、記録媒体１０２に別途記録されている映画等のコンテンツの著作権を保護するプログラムである場合には、不正にコンテンツを再生され、著作権を保護できなくなるため、仮想マシンを含む実行環境の検証処理が必要になる。
【００２９】
仮想マシンコード１２１を構成するモジュールについて説明する。仮想マシン検証モジュール１１２１は、自身を実行する仮想マシンが正規のものかどうかを検証するモジュールであり、検証情報保持モジュール１１２２は、仮想マシンを含む実行環境の正当性を検証するための情報である。具体的には、仮想マシンから検証値テーブル識別情報１１７と検証値を取得し、その値が検証情報保持モジュール１１２２で保持する検証情報と一致するかどうかで、仮想マシンを含む実行環境の正当性を検証する。これにより、異なる再生装置にプレーヤモデル番号、メーカ名等を含むデータをコピーしたエミュレータを作成し、例えばコンピュータ上で仮想マシン及び該エミュレータを搭載したとしても、検証値テーブル１１６に保持された機器固有の値が異なるものとなるため、かかる不当なエミュレータ上における再生を阻止することができる。検証処理の詳細については、後述する。
【００３０】
次に、仮想マシン実行コード１１５を構成するモジュールについて説明する。検証値取得モジュール１１５１は、仮想マシンコード１２１中の仮想マシン検証モジュール１１２１が指定したアドレスに該当する値を、検証値テーブル１１６中から検索し、その値を取得するモジュールである。検証値変換モジュール１１５２は、検証値テーブル１１６から取得した値を演算により変換するモジュールである。仮想マシンはステートを持っており、検証値テーブル１１６から読み込んだ値を、ステートに応じて一意的に変換する特徴を持つ。また、ステートは、変換処理が終了した後、これまでの読み出された検証値の読み出し順序によって一意的に決定される値に、更新される。このステートを保持するのが、ステート保持モジュール１１５３である。
【００３１】
仮想マシンコード実行モジュール１１５４は、仮想マシンコード１２１中のコード依存処理モジュール１１２３で定義される処理をプラットフォームに依存するネイティブコードに変換しながら、実行するモジュールである。
検証値テーブル１１６は、アドレス４０１と、値４０２から構成されるデータであり、値４０２に対し、一意のアドレス４０１が対応しているテーブルである。なお、検証値テーブル１１６の値４０２を一意に特定することができれば、アドレス４０１は、物理／論理アドレス、実／仮想アドレスを問わない。また、フォントファイルやファームウェアのバイナリデータ等、情報処理装置１０１が他の用途のために保持しているバイナリデータの一部を検証値テーブル１１６として流用しても構わない。
【００３２】
続いて、図３を使って、仮想マシンを含む実行環境の正当性検証処理フローについて説明する。
最初に、仮想マシンコード１２１は、例えば、０ｘ１２などの初期値を仮想マシンに与える（Ｓ３０１）。初期値は予め決定しておいた値であれば、他の値を用いても構わない。
【００３３】
仮想マシンは、与えられた初期値をステート保持モジュール１１５３に保持する（Ｓ３０２）。続いて、仮想マシンは、検証値テーブル識別情報１１７を仮想マシンコード１２１に送信する（Ｓ３０３）。次に、仮想マシンコード１２１は、仮想マシン検証モジュール１１２１を使って、Ｓ３０３で受信した検証値テーブル識別情報１１７に該当する検証情報を検証情報保持モジュール１１２２から取得する（Ｓ３０４）。続いて、仮想マシン検証モジュール１１２１を使って、検証回数を確認する。検証回数が、仮想マシン検証モジュール１１２１内で設定された規定回数に達した場合、処理を終了し、規定回数に満たない場合、検証処理を継続する（Ｓ３０５）。
【００３４】
次に、仮想マシン検証モジュール１１２１は、検証情報保持モジュール１１２２が保持する検証情報に定義された順序に従って、仮想マシンに対して検証値を要求する（Ｓ３０６）。検証情報保持モジュール１１２２が保持する検証情報のデータ構造を図５に示す。検証情報は、検証値テーブル識別情報１１７、検証順序５０１、アドレス４０１、検証値５０２から構成され、各情報処理装置１０１が保持する検証値テーブル１１６に対応する検証情報を持つ。例えば、図５では、検証値テーブル識別情報１１７が０ｘ００１１ｆｆ０００００１１００１の検証情報と、同じく検証値テーブル識別情報１１７が０ｘ００２２ｅｅ０００００５０００３の検証情報と、他の検証情報が記述されていることを示している。仮想マシン検証モジュール１１２１は、Ｓ３０３で受信する検証値テーブル識別情報１１７と合致するレコードを参照し、検証順序５０１の順に、アドレス４０１を使って検証値を仮想マシンに要求する。仮想マシンが返すアドレスの対応する値と、検証値５０２が一致するかを確認することで、仮想マシンを含む実行環境の正当性を検証する。
【００３５】
Ｓ３０６では、仮想マシン検証モジュール１１２１は、検証情報に従い、現在までの検証回数に応じたアドレス４０１を指定して検証値を仮想マシンに要求するが、具体的に図５の検証値テーブル識別情報１１７が０ｘ００１１ｆｆ０００００１１００１の検証情報を用いた場合では、現在までの検証回数が０回の時は、アドレス０ｘ００ｆｆ０００１を指定して、また、現在までの検証回数が２回の時は、アドレス０ｘ００ｆｆ０００２を指定して検証値を要求する。
【００３６】
検証値の要求を受けた仮想マシンは、検証値取得モジュール１１５１を使って、検証値テーブル１１６から指定されたアドレスに対応する値を取得する（Ｓ３０７）。例えば、仮想マシン検証モジュール１１２１からアドレス０ｘ００ｆｆ０００１に対応する値を要求された場合、図４の検証値テーブル１１６から、該当するアドレス４０１に対応する値０ｘｆｆを取得する。
【００３７】
続いて、仮想マシン中の検証値変換モジュール１１５２はステート保持モジュール１１５３からステートを取得する（Ｓ３０８）。例えば、初期状態の場合には、Ｓ３０１、Ｓ３０２で保持したステート０ｘ１２を取得する。
次に、検証値変換モジュール１１５２が検証値テーブル１１６から取得した値に演算を施し、変換する（Ｓ３０９）。例えば、検証値変換モジュール１１５２は、ステート保持モジュール１１５３から取得したステートと、検証値テーブル１１６から読み込んだ値のＸＯＲを行い、変換する。具体的には、取得したステートが０ｘ１２、検証値テーブル１１６から読み込んだ値が０ｘｆｆの場合、０ｘｅｄに変換する。
【００３８】
次に、検証値変換モジュール１１５２は、Ｓ３０９で利用した値を使って、ステート保持モジュール１１５３のステートを更新する（Ｓ３１０）。例えば、指定されたアドレスの最下位１バイトの値と、ステート保持モジュール１１５３が保持する値をＸＯＲした値で更新する。
次に、仮想マシンは、Ｓ３０９で算出した検証値を仮想マシンコード１２１に返す（Ｓ３１１）。仮想マシンコード中の仮想マシン検証モジュール１１２１が、その値と、検証情報中の値が一致するかを確認し、一致する場合は検証結果をＯＫ、一致しない場合は検証結果をＮＧと判断する（Ｓ３２１）。
【００３９】
検証結果がＯＫの場合、Ｓ３０５に戻り、規定回数分の検証を実施する。検証結果がＮＧの場合、処理を終了する（Ｓ３２２）。
以上で、仮想マシンを含む実行環境の正当性検証処理の説明を終わる。
なお、本実施の形態のＳ３０１で、仮想マシンに設定する初期値は、仮想マシンコード１２１が保持しているとしたが、これに限るものではなく、仮想マシン実行コード１１５が保持しても構わない。この場合、Ｓ３０１では、仮想マシンコード１２１が仮想マシンに対して、初期値を設定するのではなく、初期化要求のみを行う。この初期化要求は、ステート保持モジュール１１５３が仮想マシン検証モジュール１１２１実行時に初期値を読み込む構成としても良いし、仮想マシン検証モジュール１１２１が明示的に実行を指示するコードを含む構成としても良い。他にも、検証値テーブル１１６内の特定の値を初期値として用いても構わない。
【００４０】
また、本実施の形態のＳ３０９では、検証値の変換演算として、ステート保持モジュール１１５３から取得したステートと、指定されたアドレスに対応する値のＸＯＲを用いているが、これに限るものではなく、ステート保持モジュール１１５３から取得したステートと、検証値テーブル１１６から読み込んだ値を使って、一意な値を算出できれば、ＳＨＡ等の一方向性関数、ＡＥＳ等の暗号関数等の他の演算を用いても構わない。
【００４１】
また、本実施の形態では、仮想マシンが要求された検証値をＳ３０９で変換した上で仮想マシンコード１２１に返しているが、検証値テーブル１１６の値を変換せずにそのまま返しても構わない。この場合、図１における、検証値変換モジュール１１５２、ステート保持モジュール１１５３、及び図３におけるＳ３０１、Ｓ３０２、Ｓ３０８、Ｓ３０９、Ｓ３１０のステップは不要となる。
【００４２】
また、本実施の形態のＳ３１０では、ステート更新において、更新する値の算出方法として、指定されたアドレスの最下位１バイトの値と、ステート保持モジュール１１５３が保持する値をＸＯＲしているが、これに限るものではなく、検証値を呼び出す順序に応じて異なる値を算出でき、且つ再現性のある算出方法であれば、他の方法を用いても構わない。このようにして算出するステートを検証値の変換に用いていることで、仮想マシンコード１２１から見た場合、同じアドレスを指定して検証値を要求しても、その要求順序が異なれば、異なる値が返ってくるため、例えば検証値テーブル１１６が暴露された場合でも、Ｓ３０９の変換演算が暴露されなければ、仮想マシンコード１２１による検証をパスすることができず、セキュリティレベルを向上させる効果がある。
【００４３】
なお、本実施の形態では、Ｓ３０５において、検証値の確認を規定された複数回数行うことを前提としているが、どの装置に対しても検証値の確認する回数を１回と規定しておき、Ｓ３０５、Ｓ３２２の処理を省略しても構わない。また、この場合、図６に示す検証情報を用いて、１つの検証値テーブル１１６に該当する検証情報に複数の検証値を用意しておき、検証時にランダムに１つを選択して仮想マシンに検証値を要求しても構わない。このように、検証値を1回しか確認しない場合に検証値をランダムに要求することで、検証値テーブル１１６の特定アドレスの値が暴露された際に「不正仮想マシンが暴露された固定値を返す」という不正攻撃に対応することができる。
【００４４】
また、本実施の形態では、検証値変換モジュール１１５２は、仮想マシン実行コード１１５に含まれる構成であるが、これに限るものではなく、仮想マシン実行コード１１５とは、個別に記憶されているとしても良い。
また、本実施の形態では、検証値のデータ長として、１バイトのデータ長を用いているが、これに限るものではない。
【００４５】
（その他変形例）
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
（１）上記の情報処理装置は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記ＲＡＭまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、情報処理装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
【００４６】
（２）上記の情報処理装置を構成する構成要素の一部または全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムＬＳＩは、その機能を達成する。
【００４７】
（３）上記の情報処理装置を構成する構成要素の一部または全部は、情報処理装置に脱着可能なＩＣカードまたは単体のモジュールから構成されているとしてもよい。前記ＩＣカードまたは前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどから構成されるコンピュータシステムである。前記ＩＣカードまたは前記モジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ＩＣカードまたは前記モジュールは、その機能を達成する。このＩＣカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
【００４８】
（４）本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
【００４９】
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
【００５０】
また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
（５）本発明は、内部に含んだ仮想マシンによりコンテンツの再生に係る処理を実行する情報処理装置において用いられる検証方法であって、前記コンテンツと共に記録媒体に記録されている検証プログラムを読み込む読込ステップと、前記検証プログラムを前記仮想マシンが実行することにより、前記仮想マシンを含む前記情報処理装置の正当性を検証する検証ステップとを含むことを特徴とする。
【００５１】
ここで、「読込ステップ」は、実施の形態において説明したＳ２０２の処理に含まれる。また、「検証ステップ」は、実施の形態において説明した、Ｓ２０３の処理（図２参照）と、それぞれ対応している。
（６）また、上記の変形例（５）の検証方法であって、前記検証ステップにおいて、タイミングによって変動する証明用情報を用いて、前記検証を行うとしてもよい。
【００５２】
ここで、「証明用情報」とは、実施の形態では、図３のＳ３０９の処理によって生成された値である。
（７）また、変形例（６）において、前記検証ステップは、前記情報処理装置が保持する秘密情報に基づいた前記証明用情報を要求する要求ステップと、前記証明用情報と、前記記録媒体に記録された検証情報とを比較する比較ステップと、比較結果に基づき、正当であるか否かを判断する判断ステップとを含み、前記検証方法は、さらに、前記要求に応じて、前記仮想マシンにより、前記証明用情報を生成し、生成した前記証明用情報を前記検証プログラムに提供する提供ステップを含むとしてもよい。
【００５３】
この「要求ステップ」、「比較ステップ」及び「判断ステップ」は、上記の実施の形態で説明した、Ｓ３０６、Ｓ３２１及びＳ３２２の処理（図３参照）と、それぞれ対応している。「提供ステップ」は、Ｓ３０７〜Ｓ３１１の処理と対応している。「秘密情報」は、検証値テーブル１１６に含まれる値が該当し、「検証情報」は、図５に示す検証値が該当する。
【００５４】
（８）また、変形例（７）において、前記判断ステップは、タイミングによって前記証明用情報が変動する毎に、前記比較ステップを繰り返させる繰返しステップと、前記繰返しの結果、所定回数連続して、前記検証情報と前記証明用情報が一致しなければ、前記情報処理装置は不正であると決定する決定ステップとを含むとしてもよい。
ここで、「繰返しステップ」は、上記の実施の形態において説明したＳ３２２のＯＫ（図３参照）の場合の処理と対応する。「決定ステップ」は、Ｓ３０５の処理及びＳ３２２のＮＧの場合の処理が該当する。
【００５５】
（９）また、上記の変形例（７）の検証方法において、前記提供ステップは、前記秘密情報の読み出し順序に応じて一意的に決定する値により、前記証明用情報が生成される過程において用いられる演算情報を、変更する更新ステップと、生成した前記証明用情報を、前記検証用プログラムへ出力する出力ステップとを含むとしてもよい。
ここで、「更新ステップ」及び「出力ステップ」は、上記の実施の形態において説明したＳ３１０及びＳ３１１の処理と、それぞれ、対応している。また、「演算情報」は、実施の形態において説明したステートと対応する。
【００５６】
（１０）また、上記の変形例（６）において、  前記記録媒体には、複数の検証候補情報が記録されており、前記情報処理装置は、１以上の秘密情報を保持しており、前記検証ステップは、１の検証候補情報を検証情報として選択する選択ステップと、選択された前記検証情報と対応する秘密情報に基づいて生成された前記証明用情報を要求する要求ステップと、前記検証情報と前記証明用情報とを比較する比較ステップと、比較結果を基に、前記情報処理装置の正当性を判断する判断ステップとを含み、前記検証方法は、さらに、前記要求を受けると、前記仮想マシンにより、前記検証情報と対応する前記秘密情報を用いて前記証明用情報を生成し、生成した前記証明用情報を前記検証用プログラムへ提供する提供ステップとを含むとしてもよい。
【００５７】
ここで、「選択ステップ」、「要求ステップ」及び「比較ステップ」は、上記の実施の形態の、Ｓ３０４、Ｓ３０６及び３２１（図３）参照の処理とそれぞれ対応している。「判断ステップ」は、Ｓ３２２及びＳ３０５の処理を含む。「提供ステップ」は、実施の形態のＳ３０７〜Ｓ３１１の処理が該当する。また、「検証候補情報」は、図５及び図６に示す検証値５０２が該当する。「検証情報」は、検証値５０２の中で、Ｓ３０６の処理により、検証順序５０１に従って選択された１の検証値と対応する。
【００５８】
（１１）また、上記の変形例（１０）において、前記判断ステップは、前記比較ステップにより前記検証情報と証明用情報とが一致する場合に、前記選択ステップ、前記要求ステップ及び前記比較ステップを繰り返させる繰返しステップと、前記繰返しにより、所定回数連続して前記検証情報と証明用情報とが一致する場合に、前記情報処理装置が正当であると決定し、それ以外の場合に、前記情報処理装置が不正であると決定する決定ステップを含むとしてもよい。
【００５９】
ここで、「繰返しステップ」は、実施の形態１では、Ｓ３２２のＯＫの場合の処理と対応する。「決定ステップ」は、Ｓ３２２のＮＧの場合の処理及びＳ３０５の処理と対応する。
（１２）また、上記の変形例（１１）において、  前記検証ステップの繰り返しにおいて、前記選択ステップでは、繰返しの回数に応じて異なる検証候補情報を、前記検証情報として選択し、前記提供ステップでは、繰返しの回数に応じて変動する前記証明用情報を生成するとしてもよいし、同じく変形例（１１）において、前記複数の検証候補情報のうち少なくとも一つは、前記仮想マシンを一意に識別する識別子と対応しており、前記選択ステップでは、前記識別子と対応する検証候補情報を前記検証情報として選択するとしてもよい。
【００６０】
（１３）また、上記の変形例（１０）において、前記選択ステップでは、ランダムに前記検証情報を選択し、前記比較ステップでは、前記検証情報に対応して、ランダムに変動する前記証明用情報を用いて、前記比較を行うとしてもよいし、同じく変形例（１０）において、前記複数の検証候補情報のうち、少なくとも１つは、前記仮想マシンを一意に識別する識別子と対応しており、前記選択ステップでは、前記識別子と対応する検証候補情報の中から、前記検証情報を選択するとしてもよい。
【００６１】
ここで、「識別子」は、上記の実施の形態において説明した検証値テーブル識別情報１１７と対応する。
（１４）また、上記の変形例（５）において、前記記録媒体は、さらに、前記仮想マシン上で実行され、前記コンテンツの再生に係る処理手順を含む再生関連プログラムを記録しており、前記検証方法は、さらに、検証の結果、前記情報処理装置が不正である場合、前記コンテンツの再生に係る処理手順の実行を抑制する抑制ステップを含むとしてもよいし、同じく変形例（５）において、前記コンテンツは、デジタル著作物を暗号化して生成されており、前記コンテンツの再生に係る処理手順は、前記コンテンツを復号する手順を含むとしてもよい。
【００６２】
ここで、「抑制ステップ」は、実施の形態において説明した、Ｓ２０４のＮＧの処理（図２参照）と対応している。
（１５）また、本発明は、仮想マシンを含み、記録媒体に記録されているコンテンツの再生に係る処理を実行する情報処理装置であって、前記記録媒体には、前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムが記録されており、前記情報処理装置は、自身に固有の秘密情報を１以上記憶している記憶手段と、前記検証プログラムを読み込む読込手段と、前記検証プログラムから、タイミングに応じて変動し、前記検証に用いられる検証情報と対応する秘密情報に基づいて生成された証明用情報に対する要求を受付ける受付手段と、前記要求を受け付けると、前記検証情報と対応する秘密情報を用いて、前記証明用情報を生成し、生成した前記証明用情報を、前記検証用プログラムへ提供する提供手段とを備えることを特徴とする情報処理装置でもある。
【００６３】
また、本発明は、仮想マシンを含み、記録媒体に記録されているコンテンツの再生に係る処理を実行する情報処理装置に搭載される集積回路であって、前記記録媒体には、前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムが記録されており、前記集積回路は、自身に固有の秘密情報を１以上記憶している記憶手段と、前記検証プログラムを読み込む読込手段と、前記検証プログラムから、タイミングに応じて変動し、前記検証に用いられる検証情報と対応する秘密情報に基づいて生成された証明用情報に対する要求を受付ける受付手段と、前記要求を受け付けると、前記検証情報と対応する秘密情報を用いて、前記証明用情報を生成し、生成した前記証明用情報を、前記検証用プログラムへ提供する提供手段とを備えることを特徴とする集積回路でもある。
【００６４】
また、本発明は、仮想マシンを含み、コンテンツの再生に係る処理を実行する情報処理装置の正当性を検証する検証プログラムを記録している記録媒体であって、前記検証プログラムと共に、前記検証に用いられる１以上の検証候補情報を記録しており、前記検証プログラムは、前記検証候補情報から、１の検証候補情報を検証情報として選択する選択ステップと、タイミングに応じて変動し、前記検証情報と対応する秘密情報に基づいて生成された証明用情報を、前記仮想マシンに要求する要求ステップと、前記証明用情報を取得し、取得した前記証明用情報と、前記検証情報とを比較する比較ステップと、比較結果に応じて、前記情報処理装置が正当であるか否かを判断する判断ステップとを含むことを特徴とする記録媒体であってもよい。
【００６５】
また、本発明は、仮想マシンを含み、コンテンツの再生に係る処理を実行する情報処理装置と、前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムを記録している記録媒体から構成される検証システムであって、前記記録媒体は、前記検証プログラムと、前記検証に用いられる１以上の検証候補情報とを記録しており、前記検証プログラムは、前記複数の検証候補情報から、１の検証候補情報を検証情報として選択する選択ステップと、タイミングに応じて変動し、前記検証情報と対応する秘密情報に基づいて生成された証明用情報を、前記記録装置に要求する要求ステップと、前記情報処理装置から、前記証明用情報を取得し、取得した前記証明用情報と、前記検証情報とを比較する比較ステップと、比較結果に応じて、前記情報処理装置が正当であるか否かを判断する判断ステップとを含み、前記情報処理装置は、前記情報処理装置に固有の秘密情報を１以上記憶している記憶手段と、前記検証プログラムを読み込む読込手段と、前記検証プログラムから、前記要求を受け付ける受付手段と、前記要求を受け付けると、前記検証情報と対応する秘密情報を用いて、前記証明用情報を生成し、生成した前記証明用情報を、前記検証用プログラムへ提供する提供手段とを備えることを特徴とする検証システムでもある。
【００６６】
ここで、上記の「検証プログラム」は、図１に示す仮想マシン検証モジュール１１２１と対応しており、「検証候補情報」は、図５及び６に示す検証値５０２と対応する。
本変形例の「検証プログラム」に含まれる、「選択ステップ」、「要求ステップ」及び「比較ステップ」は、上記の実施の形態の、Ｓ３０４、Ｓ３０６及び３２１（図３）参照の処理とそれぞれ対応している。「判断ステップ」は、Ｓ３２２及びＳ３０５の処理を含む。
【００６７】
「情報処理装置」を構成する「記憶手段」は、情報保持部１１４と対応している。「読み込み手段」は、ディスク読込部１１１と対応する。「受付手段」及び「提供手段」は、仮想マシン実行部１１３が、仮想マシン実行コード１１５に含まれる命令コードを読み出し、解読し、実行することにより実現される。また、「秘密情報」は、図４を用いて説明した値４０２がこれに該当し、「証明用情報」は、Ｓ３０９の処理により生成される値である。
【００６８】
（１６）また、本発明は、仮想マシンを含み、コンテンツの再生に係る処理を実行する情報処理装置の正当性を検証する検証プログラムであって、前記複数の検証候補情報から、１の検証候補情報を検証情報として選択する選択ステップと、タイミングに応じて変動し、前記検証情報と対応する秘密情報に基づいて生成された証明用情報を、前記記録装置に要求する要求ステップと、前記情報処理装置から、前記証明用情報を取得し、取得した前記証明用情報と、前記検証情報とを比較する比較ステップと、比較結果に応じて、前記情報処理装置が正当であるか否かを判断する判断ステップとを含むことを特徴とする検証プログラムでもある。
【００６９】
ここで、上記の「検証プログラム」は、図１に示す仮想マシン検証モジュール１１２１と対応しており、「検証候補情報」は、図５及び６に示す検証値５０２と対応する。「検証プログラム」に含まれる、「選択ステップ」、「要求ステップ」及び「比較ステップ」は、上記の実施の形態の、Ｓ３０４、Ｓ３０６及び３２１（図３）参照の処理とそれぞれ対応している。「判断ステップ」は、Ｓ３２２及びＳ３０５の処理を含む。また、「秘密情報」は、図４を用いて説明した値４０２がこれに該当し、「証明用情報」は、Ｓ３０９の処理により生成される値である。
【００７０】
（１７）また、本発明は、仮想マシンを含み、記録媒体に記録されているコンテンツの再生に係る処理を実行する情報処理装置において用いられる証明プログラムであって、前記記録媒体には、前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムが記録されており、前記情報処理装置は、前記情報処理装置に固有の秘密情報を１以上記憶している記憶手段を備え、前記証明プログラムは、前記検証プログラムから、タイミングに応じて変動し、前記検証に用いられる検証情報と対応する秘密情報に基づいて生成された証明用情報に対する要求を受付ける受付ステップと、前記要求を受け付けると、前記検証情報と対応する秘密情報を用いて、前記証明用情報を生成し、生成した前記証明用情報を、前記検証用プログラムへ提供する提供ステップとを備えることを特徴とする証明プログラムでもある。
【００７１】
ここで、上記の「検証プログラム」及び「証明プログラム」は、実施の形態において説明した仮想マシン検証モジュール１１２１及び仮想マシン実行コード１１５とそれぞれ対応する。
「証明プログラム」に含まれる「受付ステップ」は、実施の形態において説明したＳ３０７の処理に含まれる、「提供ステップ」は、Ｓ３０７〜Ｓ３１１の処理と対応している。
【００７２】
（１８）また、本発明は以下のような構成であってもよい。
（１８−１）  本発明は、仮想マシンを使って仮想マシンコードを実行する情報処理方法であって、仮想マシンコードが仮想マシンを含む実行環境の正当性を検証するステップと、検証の結果、前記仮想マシンを含む実行環境が不正であると判定した場合、前記仮想マシンコードの処理を停止するステップと、含むことを特徴とする。
【００７３】
（１８−２）  上記の変形例（１８−１）の情報処理方法において、前記検証ステップはさらに、前記仮想マシンが保持する秘密情報に基づいた特定の値を要求するステップと、前記仮想マシンが、前記特定の値を前記仮想マシンコードに提供するステップと、前記特定の値と、前記仮想マシンコードが保持する検証情報を比較し、一致することで正当性を検証するステップとを含むとしてもよい。
【００７４】
（１８−３）  また、上記の変形例（１８−２）の情報処理方法は、さらに、前記検証ステップを複数回、繰り返して行うステップを含んでいてもよい。
（１８−４）  上記の変形例（１８−２）の情報処理方法において、前記仮想マシンが前記特定の値を前記仮想マシンコードに提供するステップが、前記仮想マシンが、前記特定の値に対し、その読み出し順序に応じて、一意的に決定する値に変換するステップを含むとしてもよい。
【００７５】
（１８−５）  また、本発明は、上記の変形例（１８−１）〜（１８−４）の何れかの情報処理方法に含まれるステップをコンピュータに実行させることを特徴とするプログラムでもある。
（１８−６）  また、本発明は、上記の変形例（１８−１）〜（１８−４）のいずれかに記載された情報処理方法に含まれるステップをコンピュータに実行させることを特徴とするプログラムを記録したコンピュータ読み取り可能な記録媒体でもある。
【００７６】
（１９）上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【産業上の利用可能性】
【００７７】
本発明にかかる、仮想マシンを使い、プラットフォームに依存しないプログラムを実行する情報処理装置は、著作権保護用プログラムなど、仮想マシン上で動作するプログラムにセキュリティを要求される場合に有用である。
【図面の簡単な説明】
【００７８】
【図１】記録媒体１０２及び情報処理装置１０１の構成を示す図
【図２】仮想マシンコード実行処理のフロー図
【図３】仮想マシンを含む実行環境の正当性検証処理のフロー図
【図４】検証値テーブル１１６のデータ構造例
【図５】仮想マシンコード１２１が持つ検証情報のデータ構造例
【図６】仮想マシンコード１２１が持つ検証情報のデータ構造別例
【符号の説明】
【００７９】
１０１  情報処理装置
１０２  記録媒体
１１１  ディスク読込部
１１２  ユーザ操作受付部
１１３  仮想マシン実行部
１１４  情報保持部
１１５  仮想マシン実行コード
１１６  検証値テーブル
１１７  検証値テーブル識別情報
１２１  仮想マシンコード
１１５１  検証値取得モジュール
１１５２  検証値変換モジュール
１１５３  ステート保持モジュール
１１５４  仮想マシンコード実行モジュール
１１２１  仮想マシン検証モジュール
１１２２  検証情報モジュール
１１２３  コード依存処理モジュール
４０１  アドレス
４０２  値
５０１  検証順序
５０２  検証値
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2007000993.tif 000008
【図２】
2007000993.tif 000009
【図３】
2007000993.tif 000010
【図４】
2007000993.tif 000011
【図５】
2007000993.tif 000012
【図６】
2007000993.tif 000013
【手続補正書】
【提出日】平成19年3月10日(2007.3.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
内部に含んだ仮想マシンによりコンテンツの再生に係る処理を実行する情報処理装置において用いられる検証方法であって、
前記コンテンツと共に記録媒体に記録されている検証プログラムを読み込む読込ステップと、
前記検証プログラムを前記仮想マシンが実行することにより、前記仮想マシンを含む前記情報処理装置の正当性を検証する検証ステップとを含み、
前記検証ステップにおいて、タイミングによって変動する証明用情報を用いて、前記検証を行う
ことを特徴とする検証方法。
【請求項２】
前記検証ステップは、
前記情報処理装置が保持する秘密情報に基づいた前記証明用情報を要求する要求ステップと、
前記証明用情報と、前記記録媒体に記録された検証情報とを比較する比較ステップと、
比較結果に基づき、正当であるか否かを判断する判断ステップとを含み、
前記検証方法は、さらに、
前記要求に応じて、前記仮想マシンにより、前記証明用情報を生成し、生成した前記証明用情報を前記検証プログラムに提供する提供ステップを含む
ことを特徴とする請求項１に記載の検証方法。
【請求項３】
前記判断ステップは、
タイミングによって前記証明用情報が変動する毎に、前記比較ステップを繰り返させる繰返しステップと、
前記繰返しの結果、所定回数連続して、前記検証情報と前記証明用情報が一致しなければ、前記情報処理装置は不正であると決定する決定ステップとを含む
ことを特徴とする請求項２に記載の検証方法。
【請求項４】
前記提供ステップは、
前記秘密情報の読み出し順序に応じて一意的に決定する値により、前記証明用情報が生成される過程において用いられる演算情報を、変更する更新ステップと、
生成した前記証明用情報を、前記検証用プログラムへ出力する出力ステップとを含む
ことを特徴とする請求項２に記載の検証方法。
【請求項５】
前記記録媒体には、複数の検証候補情報が記録されており、
前記情報処理装置は、１以上の秘密情報を保持しており、
前記検証ステップは、
１の検証候補情報を検証情報として選択する選択ステップと、
選択された前記検証情報と対応する秘密情報に基づいて生成された前記証明用情報を要求する要求ステップと、
前記検証情報と前記証明用情報とを比較する比較ステップと、
比較結果を基に、前記情報処理装置の正当性を判断する判断ステップとを含み、
前記検証方法は、さらに、
前記要求を受けると、前記仮想マシンにより、前記検証情報と対応する前記秘密情報を用いて前記証明用情報を生成し、生成した前記証明用情報を前記検証用プログラムへ提供する提供ステップとを含む
ことを特徴とする請求項１に記載の検証方法。
【請求項６】
前記判断ステップは、前記比較ステップにより前記検証情報と証明用情報とが一致する場合に、前記選択ステップ、前記要求ステップ及び前記比較ステップを繰り返させる繰返しステップと、
前記繰返しにより、所定回数連続して前記検証情報と証明用情報とが一致する場合に、前記情報処理装置が正当であると決定し、それ以外の場合に、前記情報処理装置が不正であると決定する決定ステップを含む
ことを特徴とする請求項５に記載の検証方法。
【請求項７】
前記検証ステップの繰り返しにおいて、
前記選択ステップでは、繰返しの回数に応じて異なる検証候補情報を、前記検証情報として選択し、
前記提供ステップでは、繰返しの回数に応じて変動する前記証明用情報を生成する
ことを特徴とする請求項６に記載の検証方法。
【請求項８】
前記複数の検証候補情報のうち少なくとも一つは、前記仮想マシンを一意に識別する識別子と対応しており、
前記選択ステップでは、前記識別子と対応する検証候補情報を前記検証情報として選択する
ことを特徴とする請求項７に記載の検証方法。
【請求項９】
前記選択ステップでは、ランダムに前記検証情報を選択し、
前記比較ステップでは、前記検証情報に対応して、ランダムに変動する前記証明用情報を用いて、前記比較を行う
ことを特徴とする請求項５に記載の検証方法。
【請求項１０】
前記複数の検証候補情報のうち、少なくとも１つは、前記仮想マシンを一意に識別する識別子と対応しており、
前記選択ステップでは、前記識別子と対応する検証候補情報の中から、前記検証情報を選択する
ことを特徴とする請求項９に記載の検証方法。
【請求項１１】
仮想マシンを含み、記録媒体に記録されているコンテンツの再生に係る処理を実行する情報処理装置であって、
前記記録媒体には、
前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムが記録されており、
前記情報処理装置は、
自身に固有の秘密情報を１以上記憶している記憶手段と、
前記検証プログラムを読み込む読込手段と、
前記検証プログラムから、タイミングに応じて変動し、前記検証に用いられる検証情報と対応する秘密情報に基づいて生成された証明用情報に対する要求を受付ける受付手段と、
前記要求を受け付けると、前記検証情報と対応する秘密情報を用いて、前記証明用情報を生成し、生成した前記証明用情報を、前記検証用プログラムへ提供する提供手段と
を備えることを特徴とする情報処理装置。
【請求項１２】
仮想マシンを含み、記録媒体に記録されているコンテンツの再生に係る処理を実行する情報処理装置に搭載される集積回路であって、
前記記録媒体には、
前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムが記録されており、
前記集積回路は、
自身に固有の秘密情報を１以上記憶している記憶手段と、
前記検証プログラムを読み込む読込手段と、
前記検証プログラムから、タイミングに応じて変動し、前記検証に用いられる検証情報と対応する秘密情報に基づいて生成された証明用情報に対する要求を受付ける受付手段と、
前記要求を受け付けると、前記検証情報と対応する秘密情報を用いて、前記証明用情報を生成し、生成した前記証明用情報を、前記検証用プログラムへ提供する提供手段と
を備えることを特徴とする集積回路。
【請求項１３】
仮想マシンを含み、コンテンツの再生に係る処理を実行する情報処理装置の正当性を検証する検証プログラムを記録している記録媒体であって、
前記検証プログラムと共に、前記検証に用いられる１以上の検証候補情報を記録しており、
前記検証プログラムは、
前記１以上の検証候補情報から、１の検証候補情報を検証情報として選択する選択ステップと、
タイミングに応じて変動し、前記検証情報と対応する秘密情報に基づいて生成された証明用情報を、前記仮想マシンに要求する要求ステップと、
前記証明用情報を取得し、取得した前記証明用情報と、前記検証情報とを比較する比較ステップと、
比較結果に応じて、前記情報処理装置が正当であるか否かを判断する判断ステップとを含む
ことを特徴とする記録媒体。
【請求項１４】
仮想マシンを含み、コンテンツの再生に係る処理を実行する情報処理装置と、前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムを記録している記録媒体から構成される検証システムであって、
前記記録媒体は、
前記検証プログラムと、前記検証に用いられる１以上の検証候補情報とを記録しており、
前記検証プログラムは、
前記１以上の検証候補情報から、１の検証候補情報を検証情報として選択する選択ステップと、
タイミングに応じて変動し、前記検証情報と対応する秘密情報に基づいて生成された証明用情報を、前記仮想マシンに要求する要求ステップと、
前記情報処理装置から、前記証明用情報を取得し、取得した前記証明用情報と、前記検証情報とを比較する比較ステップと、
比較結果に応じて、前記情報処理装置が正当であるか否かを判断する判断ステップとを含み、
前記情報処理装置は、
前記情報処理装置に固有の秘密情報を１以上記憶している記憶手段と、
前記検証プログラムを読み込む読込手段と、
前記検証プログラムから、前記要求を受け付ける受付手段と、
前記要求を受け付けると、前記検証情報と対応する秘密情報を用いて、前記証明用情報を生成し、生成した前記証明用情報を、前記検証用プログラムへ提供する提供手段とを備える
ことを特徴とする検証システム。
【請求項１５】
仮想マシンを含み、コンテンツの再生に係る処理を実行する情報処理装置の正当性を検証する検証プログラムであって、
１以上の検証候補情報から、１の検証候補情報を検証情報として選択する選択ステップと、
タイミングに応じて変動し、前記検証情報と対応する秘密情報に基づいて生成された証明用情報を、前記仮想マシンに要求する要求ステップと、
前記情報処理装置から、前記証明用情報を取得し、取得した前記証明用情報と、前記検証情報とを比較する比較ステップと、
比較結果に応じて、前記情報処理装置が正当であるか否かを判断する判断ステップとを含む
ことを特徴とする検証プログラム。
【請求項１６】
仮想マシンを含み、記録媒体に記録されているコンテンツの再生に係る処理を実行する情報処理装置において用いられる証明プログラムであって、
前記記録媒体には、
前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムが記録されており、
前記情報処理装置は、
前記情報処理装置に固有の秘密情報を１以上記憶している記憶手段を備え、
前記証明プログラムは、
前記検証プログラムから、タイミングに応じて変動し、前記検証に用いられる検証情報と対応する秘密情報に基づいて生成された証明用情報に対する要求を受付ける受付ステップと、
前記要求を受け付けると、前記検証情報と対応する秘密情報を用いて、前記証明用情報を生成し、生成した前記証明用情報を、前記検証用プログラムへ提供する提供ステップと
を備えることを特徴とする証明プログラム。
【手続補正書】
【提出日】平成19年3月11日(2007.3.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンテンツの再生に係る処理を実行する仮想マシンを有する情報処理装置において用いられる検証方法であって、
前記情報処理装置は、当該情報処理装置が処理を実行する中で動的に変更される値を保持する検証値テーブルを保持しており、
前記検証方法は、
前記コンテンツと共に記録媒体に記録されている検証プログラムを読み込む読込ステップと、
仮想マシンを含む実行環境の正当性の検証に用いる検証情報を保持する検証情報保持モジュールを取得するモジュール取得ステップと、
前記仮想マシンにより実行された前記検証プログラムからの要求に応じて、前記仮想マシンが、前記検証値テーブルが保持する前記動的に変更される値を取得する取得ステップと、
前記検証プログラムにより、前記動的に変更される値が、前記検証情報保持モジュールの保持する検証情報と所定の関係を満たすか否かを確認し、前記所定の関係が満たされない場合に、前記仮想マシンを含む実行環境を不正であると判断する検証ステップとを含む
ことを特徴とする検証方法。
【請求項２】
前記所定の関係は、前記動的に変更される値そのものが前記検証情報に含まれる検証値と一致することであり、
前記検証方法は、さらに、前記仮想マシンが、前記取得ステップで取得した値を前記検証プログラムへ提供する提供ステップを含み、
前記検証ステップは、前記検証情報に含まれる検証値と、前記提供ステップで提供された値とが不一致の場合に、前記仮想マシンを含む実行環境を不正であると判断する
ことを特徴とする請求項１に記載の検証方法。
【請求項３】
前記所定の関係は、前記動的に変更される値を前記仮想マシンによって変換して得られる値が前記検証情報に含まれる検証値と一致することであり、
前記検証方法は、さらに、前記仮想マシンが、前記取得ステップで取得した値を変換した上で、前記検証プログラムへ提供する提供ステップを含み、
前記検証ステップは、前記検証情報に含まれる検証値と、前記提供ステップで提供された値とが不一致の場合に、前記仮想マシンを含む実行環境を不正であると判断する
ことを特徴とする請求項１に記載の検証方法。
【請求項４】
前記情報処理装置は複数あり、それぞれの前記情報処理装置は前記検証値テーブルを保持し、
前記検証情報保持モジュールは、各情報処理装置の検証値テーブルにそれぞれ対応する複数の検証情報を含み、
前記検証ステップにおいて、前記検証プログラムは、前記動的に変更される値が、前記検証情報保持モジュールの保持する検証情報のうち、前記検証プログラムが実行されている情報処理装置の保持する検証値テーブルに対応する検証情報との間で、前記所定の関係を満たすか否かを確認し、前記所定の関係が満たされない場合に、前記仮想マシンを含む実行環境を不正であると判断する
ことを特徴とする請求項１に記載の検証方法。
【請求項５】
記録媒体に記録されているコンテンツの再生に係る処理を実行する仮想マシンを有する情報処理装置であって、
前記記録媒体には、
前記仮想マシン上で実行されることにより、前記仮想マシンを含む実行環境の正当性を検証する検証プログラムが記録されており、
前記情報処理装置は、
前記仮想マシンを保持し、当該仮想マシンにより、前記検証プログラムを実行する仮想マシン実行手段と、
前記情報処理装置が処理を実行する中で動的に変更される値を保持する検証値テーブルを保持する保持手段と、
前記検証プログラムを読み込む読込手段と、
仮想マシンを含む実行環境の正当性の検証に用いる検証情報を保持する検証情報保持モジュールを取得するモジュール取得手段とを備え、
前記仮想マシン実行手段は、前記仮想マシンにより実行された前記検証プログラムからの要求に応じて、前記検証値テーブルが保持する前記動的に変更される値を前記仮想マシンによって取得し、
前記検証プログラムにより、前記動的に変更される値が、前記検証情報保持モジュールの保持する検証情報と所定の関係を満たすか否かを確認し、前記所定の関係が満たされない場合に、前記仮想マシンを含む実行環境を不正であると判断する
ことを特徴とする情報処理装置。
【請求項６】
記録媒体に記録されているコンテンツの再生に係る処理を実行する仮想マシンを有する情報処理装置に搭載される集積回路であって、
前記記録媒体には、
前記仮想マシン上で実行されることにより、前記仮想マシンを含む実行環境の正当性を検証する検証プログラムが記録されており、
前記集積回路は、
前記仮想マシンを保持し、当該仮想マシンにより、前記検証プログラムを実行する仮想マシン実行手段と、
前記情報処理装置が処理を実行する中で動的に変更される値を保持する検証値テーブルを保持する保持手段と、
前記検証プログラムを読み込む読込手段と、
仮想マシンを含む実行環境の正当性の検証に用いる検証情報を保持する検証情報保持モジュールを取得するモジュール取得手段とを備え、
前記仮想マシン実行手段は、
前記仮想マシンにより実行された前記検証プログラムからの要求に応じて、前記検証値テーブルが保持する前記動的に変更される値を前記仮想マシンによって取得し、
前記検証プログラムによって、前記動的に変更される値が、前記検証情報保持モジュールの保持する検証情報と所定の関係を満たすか否かを確認し、前記所定の関係が満たされない場合に、前記仮想マシンを含む実行環境を不正であると判断する
ことを特徴とする集積回路。
【請求項７】
コンテンツの再生に係る処理を実行する仮想マシンを有する情報処理装置と、前記仮想マシン上で実行されることにより、前記仮想マシンを含む実行環境の正当性を検証する検証プログラムを記録している記録媒体から構成される検証システムであって、
前記記録媒体は、
前記検証プログラムと前記コンテンツとを記録しており、
前記情報処理装置は、
前記仮想マシンを保持し、当該仮想マシンにより、前記検証プログラムを実行する仮想マシン実行手段と、
前記情報処理装置が処理を実行する中で動的に変更される値を保持する検証値テーブルを保持する保持手段と、
前記検証プログラムを読み込む読込手段と、
仮想マシンを含む実行環境の正当性の検証に用いる検証情報を保持する検証情報保持モジュールを取得するモジュール取得手段とを備え、
前記仮想マシン実行手段は、前記仮想マシンにより実行された前記検証プログラムからの要求に応じて、前記検証値テーブルが保持する前記動的に変更される値を前記仮想マシンによって取得し、
前記検証プログラムにより、前記動的に変更される値が、前記検証情報保持モジュールの保持する検証情報と所定の関係を満たすか否かを確認し、前記所定の関係が満たされない場合に、前記仮想マシンを含む実行環境を不正であると判断する
ことを特徴とする検証システム。
【請求項８】
コンテンツの再生に係る処理を実行する仮想マシンを有する情報処理装置の正当性を検証する検証プログラムであって、
前記情報処理装置は、
前記情報処理装置が処理を実行する中で動的に変更される値を保持する検証値テーブルを保持する保持手段と、
前記検証プログラムを読み込む読込手段と、
仮想マシンを含む実行環境の正当性の検証に用いる検証情報を保持する検証情報保持モジュールを取得するモジュール取得手段とを備え、
前記検証プログラムは、
前記仮想マシンにより実行されることにより、前記仮想マシンに、前記検証値テーブルが保持する前記動的に変更される値を取得させるステップと、
前記動的に変更される値が、前記検証情報保持モジュールの保持する検証情報と所定の関係を満たすか否かを確認し、前記所定の関係が満たされない場合に、前記仮想マシンを含む実行環境を不正であると判断する検証ステップと
を含むことを特徴とする検証プログラム。
【請求項９】
記録媒体に記録されているコンテンツの再生に係る処理を実行する仮想マシンを有する情報処理装置において用いられる証明プログラムであって、
前記記録媒体には、
前記仮想マシン上で実行されることにより、前記仮想マシンを含む実行環境の正当性を検証する検証プログラムが記録されており、
前記情報処理装置は、
前記情報処理装置が処理を実行する中で動的に変更される値を保持している保持手段を備え、
前記証明プログラムは、
前記仮想マシンにより、前記検証プログラムを実行する仮想マシン実行ステップと、
前記検証プログラムを読み込む読込ステップと、
仮想マシンを含む実行環境の正当性の検証に用いる検証情報を保持する検証情報保持モジュールを取得するモジュール取得ステップとを含み、
前記仮想マシン実行ステップは、前記仮想マシンにより実行された前記検証プログラムからの要求に応じて、前記検証値テーブルが保持する前記動的に変更される値を前記仮想マシンによって取得し、
前記検証プログラムにより、前記動的に変更される値が、前記検証情報保持モジュールの保持する検証情報と所定の関係を満たすか否かを確認し、前記所定の関係が満たされない場合に、前記仮想マシンを含む実行環境を不正であると判断する
ことを特徴とする証明プログラム。
【手続補正書】
【提出日】平成19年3月12日(2007.3.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンテンツの再生に係る処理を実行する仮想マシンを有する情報処理装置において用いられる検証方法であって、
前記情報処理装置は、当該情報処理装置が処理を実行する中で動的に変更され、かつ、所定のアドレスにおいて所定のタイミングで固定的な値となる値を保持する検証値テーブルを保持しており、
前記検証方法は、
前記コンテンツと共に記録媒体に記録されている検証プログラムを読み込む読込ステップと、
前記仮想マシンによって、前記検証プログラムを実行する実行ステップと、
前記仮想マシンにより実行された前記検証プログラムが、前記所定のタイミングにおける前記所定のアドレスの値を取得するよう、前記仮想マシンに対する要求を行う要求ステップと、
前記要求を受けた仮想マシンが、前記所定のタイミングにおける前記所定のアドレスの値を前記検証値テーブルから取得する取得ステップと、
前記仮想マシンが、前記取得ステップにて取得した値そのもの、もしくは、前記取得した値を変換して得られる値を前記検証プログラムに提供する提供ステップと、
前記検証プログラムにより、前記提供ステップで提供された値が、前記仮想マシンを含む実行環境が正規のものであれば提供されるはずの値である正規の値となっているか否かを確認し、前記正規の値となっていない場合に、前記仮想マシンを含む実行環境を不正であると判断する検証ステップとを含む
ことを特徴とする検証方法。
【請求項２】
前記情報処理装置は複数あり、それぞれの前記情報処理装置は前記検証値テーブルを保持しており、
前記検証プログラムは、前記複数の検証値テーブルそれぞれに対応する、複数の正規の値を保持しており、
前記検証ステップにおいて、前記検証プログラムは、前記提供ステップで提供された値が、前記複数の正規の値のうち、前記検証プログラムが実行されている情報処理装置の保持する検証値テーブルに対応する正規の値となっているか否かを確認し、前記正規の値となっていない場合に、前記仮想マシンを含む実行環境を不正であると判断する
ことを特徴とする請求項１に記載の検証方法。
【請求項３】
記録媒体に記録されているコンテンツの再生に係る処理を実行する仮想マシンを有する情報処理装置であって、
前記記録媒体には、
前記仮想マシン上で実行されることにより、前記仮想マシンを含む実行環境の正当性を検証する検証プログラムが記録されており、
前記情報処理装置は、
前記情報処理装置が処理を実行する中で動的に変更され、かつ、所定のアドレスにおいて所定のタイミングで固定的な値となる値を保持する検証値テーブルを保持する保持手段と、
前記検証プログラムを読み込む読込手段と、
前記仮想マシンにより、前記検証プログラムを実行する仮想マシン実行手段と、
前記仮想マシンにより実行されている前記検証プログラムから、前記仮想マシンに対する、前記所定のタイミングにおける前記所定のアドレスの値の取得の要求を受け付ける受付手段と、
前記要求に応じて、前記仮想マシンによって、前記所定のタイミングにおける前記所定のアドレスの値を前記検証値テーブルから取得する取得手段と、
前記仮想マシンにより、前記取得した値そのもの、もしくは、前記取得した値を変換して得られる値を前記検証プログラムに提供する提供手段と、
前記検証プログラムにより、前記提供手段から提供された値が、前記仮想マシンを含む実行環境が正規のものであれば提供されるはずの値である正規の値となっているか否かを確認し、前記正規の値となっていない場合に、前記仮想マシンを含む実行環境を不正であると判断する判断手段とを備える
ことを特徴とする情報処理装置。
【請求項４】
記録媒体に記録されているコンテンツの再生に係る処理を実行する仮想マシンを有する情報処理装置に搭載される集積回路であって、
前記記録媒体には、
前記仮想マシン上で実行されることにより、前記仮想マシンを含む実行環境の正当性を検証する検証プログラムが記録されており、
前記集積回路は、
前記情報処理装置が処理を実行する中で動的に変更され、かつ、所定のアドレスにおいて所定のタイミングで固定的な値となる値を保持する検証値テーブルを保持する保持手段と、
前記検証プログラムを読み込む読込手段と、
前記仮想マシンにより、前記検証プログラムを実行する仮想マシン実行手段と、
前記仮想マシンにより実行されている前記検証プログラムから、前記仮想マシンに対する、前記所定のタイミングにおける前記所定のアドレスの値の取得の要求を受け付ける受付手段と、
前記要求に応じて、前記仮想マシンによって、前記所定のタイミングにおける前記所定のアドレスの値を前記検証値テーブルから取得する取得手段と、
前記仮想マシンにより、前記取得した値そのもの、もしくは、前記取得した値を変換して得られる値を前記検証プログラムに提供する提供手段と、
前記検証プログラムにより、前記提供手段から提供された値が、前記仮想マシンを含む実行環境が正規のものであれば提供されるはずの値である正規の値となっているか否かを確認し、前記正規の値となっていない場合に、前記仮想マシンを含む実行環境を不正であると判断する判断手段とを備える
ことを特徴とする集積回路。
【請求項５】
コンテンツの再生に係る処理を実行する仮想マシンを有する情報処理装置と、前記仮想マシン上で実行されることにより、前記仮想マシンを含む実行環境の正当性を検証する検証プログラムを記録している記録媒体から構成される検証システムであって、
前記記録媒体は、
前記検証プログラムと前記コンテンツとを記録しており、
前記情報処理装置は、
前記情報処理装置が処理を実行する中で動的に変更され、かつ、所定のアドレスにおいて所定のタイミングで固定的な値となる値を保持する検証値テーブルを保持する保持手段と、
前記検証プログラムを読み込む読込手段と、
前記仮想マシンにより、前記検証プログラムを実行する仮想マシン実行手段と、
前記仮想マシンにより実行されている前記検証プログラムから、前記仮想マシンに対する、前記所定のタイミングにおける前記所定のアドレスの値の取得の要求を受け付ける受付手段と、
前記要求に応じて、前記仮想マシンによって、前記所定のタイミングにおける前記所定のアドレスの値を前記検証値テーブルから取得する取得手段と、
前記仮想マシンにより、前記取得した値そのもの、もしくは、前記取得した値を変換して得られる値を前記検証プログラムに提供する提供手段と、
前記検証プログラムにより、前記提供手段から提供された値が、前記仮想マシンを含む実行環境が正規のものであれば提供されるはずの値である正規の値となっているか否かを確認し、前記正規の値となっていない場合に、前記仮想マシンを含む実行環境を不正であると判断する判断手段とを備える
ことを特徴とする検証システム。
【請求項６】
コンテンツの再生に係る処理を実行する仮想マシンを有する情報処理装置の正当性を検証する検証プログラムであって、
前記情報処理装置は、
前記情報処理装置が処理を実行する中で動的に変更され、かつ、所定のアドレスにおいて所定のタイミングで固定的な値となる値を保持する検証値テーブルを保持する保持手段と、
前記検証プログラムを読み込む読込手段とを備え、
前記検証プログラムは、
前記仮想マシンにより実行されることにより、前記仮想マシンに対して、前記所定のタイミングにおける前記所定のアドレスの値を取得するよう要求する要求ステップと、
前記要求を受けて前記所定のタイミングにおける前記所定のアドレスの値を前記検証値テーブルから取得した仮想マシンから、前記取得した値そのもの、もしくは、前記取得した値を変換して得られる値の提供を受ける提供受付ステップと、
前記提供受付ステップで提供を受けた値が、前記仮想マシンを含む実行環境が正規のものであれば提供されるはずの値である正規の値となっているか否かを確認し、前記正規の値となっていない場合に、前記仮想マシンを含む実行環境を不正であると判断する検証ステップと
を含むことを特徴とする検証プログラム。
【請求項７】
記録媒体に記録されているコンテンツの再生に係る処理を実行する仮想マシンを有する情報処理装置において用いられる証明プログラムであって、
前記記録媒体には、
前記仮想マシン上で実行されることにより、前記仮想マシンを含む実行環境の正当性を検証する検証プログラムが記録されており、
前記情報処理装置は、
前記情報処理装置が処理を実行する中で動的に変更され、かつ、所定のアドレスにおいて所定のタイミングで固定的な値となる値を保持している保持手段を備え、
前記証明プログラムは、
前記検証プログラムを読み込む読込ステップと、
前記仮想マシンにより、前記検証プログラムを実行する仮想マシン実行ステップと、
前記仮想マシンにより実行されている前記検証プログラムから、前記仮想マシンに対する、前記所定のタイミングにおける前記所定のアドレスの値の取得の要求を受け付ける受付ステップと、
前記要求に応じて、前記仮想マシンによって、前記所定のタイミングにおける前記所定のアドレスの値を前記検証値テーブルから取得する取得ステップと、
前記仮想マシンによって、前記取得した値そのもの、もしくは、前記取得した値を変換して得られる値を前記検証プログラムに提供する提供ステップと、
前記仮想マシン上で実行されている検証プログラムにより、前記前記提供ステップで提供された値が、前記仮想マシンを含む実行環境が正規のものであれば提供されるはずの値である正規の値となっているか否かを確認し、前記正規の値となっていない場合に、前記仮想マシンを含む実行環境を不正であると判断する判断ステップを含む
ことを特徴とする証明プログラム。
【請求項８】
コンテンツの再生に係る処理を実行する仮想マシンを有する情報処理装置において用いられる検証方法であって、
前記情報処理装置は、当該情報処理装置が処理を実行する中で動的に変更される値を保持する検証値テーブルを保持しており、
前記検証方法は、
前記コンテンツと共に記録媒体に記録されている検証プログラムを読み込む読込ステップと、
前記仮想マシンにより実行された前記検証プログラムからの要求に応じて、前記仮想マシンが、前記検証値テーブルが保持する前記動的に変更される値を取得する取得ステップと、
前記仮想マシンが、前記取得ステップで取得した値を変換した上で、前記検証プログラムへ提供する提供ステップと、
前記仮想マシンを含む実行環境が正規のものであれば前記提供ステップで提供されるはずの値である検証値を含んだ検証情報を保持する検証情報保持モジュールを、前記記録媒体から取得するモジュール取得ステップと、
前記検証プログラムが、前記検証情報に含まれる検証値と、前記提供ステップで提供された値とが一致するか否かを確認し、一致しない場合に、前記仮想マシンを含む実行環境を不正であると判断する検証ステップとを含む
ことを特徴とする検証方法。
【請求項９】
コンテンツの再生に係る処理を実行する仮想マシンを有する情報処理装置であって、
当該情報処理装置が処理を実行する中で動的に変更される値を保持する検証値テーブルと、
前記コンテンツと共に記録媒体に記録されている検証プログラムを読み込む読込手段と、
前記仮想マシンにより実行された前記検証プログラムからの要求に応じて、前記仮想マシンが、前記検証値テーブルが保持する前記動的に変更される値を取得する取得手段と、
前記仮想マシンが、前記取得手段で取得した値を変換した上で、前記検証プログラムへ提供する提供手段と、
前記仮想マシンを含む実行環境が正規のものであれば前記提供手段によって提供されるはずの値である検証値を含んだ検証情報を保持する検証情報保持モジュールを、前記記録媒体から取得するモジュール取得手段と、
前記検証プログラムが、前記検証情報に含まれる検証値と、前記提供手段から提供された値とが一致するか否かを確認し、一致しない場合に、前記仮想マシンを含む実行環境を不正であると判断する検証手段と
を備えることを特徴とする情報処理装置。
【請求項１０】
コンテンツの再生に係る処理を実行する仮想マシンを有する情報処理装置に搭載される集積回路であって、
当該情報処理装置が処理を実行する中で動的に変更される値を保持する検証値テーブルと、
前記コンテンツと共に記録媒体に記録されている検証プログラムを読み込む読込手段と、
前記仮想マシンにより実行された前記検証プログラムからの要求に応じて、前記仮想マシンが、前記検証値テーブルが保持する前記動的に変更される値を取得する取得手段と、
前記仮想マシンが、前記取得手段で取得した値を変換した上で、前記検証プログラムへ提供する提供手段と、
前記仮想マシンを含む実行環境が正規のものであれば前記提供手段によって提供されるはずの値である検証値を含んだ検証情報を保持する検証情報保持モジュールを、前記記録媒体から取得するモジュール取得手段と、
前記検証プログラムが、前記検証情報に含まれる検証値と、前記提供手段から提供された値とが一致するか否かを確認し、一致しない場合に、前記仮想マシンを含む実行環境を不正であると判断する検証手段と
を備えることを特徴とする集積回路。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００２０
【補正方法】変更
【補正の内容】
【００２０】
検証値テーブル１１６は、情報処理装置の実行環境に関する値を保持しているメモリテーブルであり、仮想マシンコード１２１が仮想マシンを含む実行環境の正当性を検証するために利用する値を記録したものである。例えば、ファームウェアのバイナリデータ等であって情報処理装置１０１の種類に固有のものであるため、情報処理装置の種類毎に異なる値をとるデータである。図４に、具体的なデータ構成を示す。検証値テーブル１１６は、アドレス４０１と値４０２で構成されている。例えば、アドレス０ｘ００ｆｆ００００に対応する値は、０ｘ００であることを意味している。また、検証値テーブル１１６は固定的なものではなく、検証値を要求された時点で必ず固定的な値を返すことができれば、検証値テーブル１１６の全部もしくは一部が、処理を実行する中で動的に変更されても構わない。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００２９
【補正方法】変更
【補正の内容】
【００２９】
仮想マシンコード１２１を構成するモジュールについて説明する。仮想マシン検証モジュール１１２１は、自身を実行する仮想マシンが正規のものかどうかを検証するモジュールであり、検証情報保持モジュール１１２２は、仮想マシンを含む実行環境の正当性を検証するための情報である。具体的には、仮想マシンから検証値テーブル識別情報１１７と検証値を取得し、その値が検証情報保持モジュール１１２２で保持する検証情報と一致するかどうかで、仮想マシンを含む実行環境の正当性を検証する。これにより、異なる再生装置にプレーヤモデル番号、メーカ名等を含むデータをコピーしたエミュレータを作成し、例えばコンピュータ上で仮想マシン及び該エミュレータを搭載したとしても、検証値テーブル１１６に保持された機器の種類に固有の値が異なるものとなるため、かかる不当なエミュレータ上における再生を阻止することができる。検証処理の詳細については、後述する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００６２
【補正方法】変更
【補正の内容】
【００６２】
ここで、「抑制ステップ」は、実施の形態において説明した、Ｓ２０４のＮＧの処理（図２参照）と対応している。
（１５）また、本発明は、仮想マシンを含み、記録媒体に記録されているコンテンツの再生に係る処理を実行する情報処理装置であって、前記記録媒体には、前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムが記録されており、前記情報処理装置は、自身の種類に固有の秘密情報を１以上記憶している記憶手段と、前記検証プログラムを読み込む読込手段と、前記検証プログラムから、タイミングに応じて変動し、前記検証に用いられる検証情報と対応する秘密情報に基づいて生成された証明用情報に対する要求を受付ける受付手段と、前記要求を受け付けると、前記検証情報と対応する秘密情報を用いて、前記証明用情報を生成し、生成した前記証明用情報を、前記検証用プログラムへ提供する提供手段とを備えることを特徴とする。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００６３
【補正方法】変更
【補正の内容】
【００６３】
また、本発明は、仮想マシンを含み、記録媒体に記録されているコンテンツの再生に係る処理を実行する情報処理装置に搭載される集積回路であって、前記記録媒体には、前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムが記録されており、前記集積回路は、自身の種類に固有の秘密情報を１以上記憶している記憶手段と、前記検証プログラムを読み込む読込手段と、前記検証プログラムから、タイミングに応じて変動し、前記検証に用いられる検証情報と対応する秘密情報に基づいて生成された証明用情報に対する要求を受付ける受付手段と、前記要求を受け付けると、前記検証情報と対応する秘密情報を用いて、前記証明用情報を生成し、生成した前記証明用情報を、前記検証用プログラムへ提供する提供手段とを備えることを特徴とする集積回路でもある。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００６５
【補正方法】変更
【補正の内容】
【００６５】
また、本発明は、仮想マシンを含み、コンテンツの再生に係る処理を実行する情報処理装置と、前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムを記録している記録媒体から構成される検証システムであって、前記記録媒体は、前記検証プログラムと、前記検証に用いられる１以上の検証候補情報とを記録しており、前記検証プログラムは、前記複数の検証候補情報から、１の検証候補情報を検証情報として選択する選択ステップと、タイミングに応じて変動し、前記検証情報と対応する秘密情報に基づいて生成された証明用情報を、前記記録装置に要求する要求ステップと、前記情報処理装置から、前記証明用情報を取得し、取得した前記証明用情報と、前記検証情報とを比較する比較ステップと、比較結果に応じて、前記情報処理装置が正当であるか否かを判断する判断ステップとを含み、前記情報処理装置は、前記情報処理装置の種類に固有の秘密情報を１以上記憶している記憶手段と、前記検証プログラムを読み込む読込手段と、前記検証プログラムから、前記要求を受け付ける受付手段と、前記要求を受け付けると、前記検証情報と対応する秘密情報を用いて、前記証明用情報を生成し、生成した前記証明用情報を、前記検証用プログラムへ提供する提供手段とを備えることを特徴とする検証システムでもある。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００７０
【補正方法】変更
【補正の内容】
【００７０】
（１７）また、本発明は、仮想マシンを含み、記録媒体に記録されているコンテンツの再生に係る処理を実行する情報処理装置において用いられる証明プログラムであって、前記記録媒体には、前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムが記録されており、前記情報処理装置は、前記情報処理装置の種類に固有の秘密情報を１以上記憶している記憶手段を備え、前記証明プログラムは、前記検証プログラムから、タイミングに応じて変動し、前記検証に用いられる検証情報と対応する秘密情報に基づいて生成された証明用情報に対する要求を受付ける受付ステップと、前記要求を受け付けると、前記検証情報と対応する秘密情報を用いて、前記証明用情報を生成し、生成した前記証明用情報を、前記検証用プログラムへ提供する提供ステップとを備えることを特徴とする証明プログラムでもある。
【国際調査報告】
2007000993.tif 000014
2007000993.tif 000015
2007000993.tif 000016
2007000993.tif 000017