(57)【要約】仮想マシンは、インタフェース等、実装に必要な情報が公開されているため、誰でも仮想マシンを実装することができる。そのため、仮想マシンを不正に実装することで、その上で稼動するプログラムに正規の動作ではなく、不正な動作をさせることが可能となる。プログラムが、仮想マシンの特定のメモリ情報と、プログラム自身が持つ検証用情報を検証ルールに基づいて比較することで、自身を稼動させる仮想マシンが正規に実装されたものであることを検証して、不正な仮想マシンを排除する。【特許請求の範囲】
【請求項１】
内部に含んだ仮想マシンによりコンテンツの再生に係る処理を実行する情報処理装置において用いられる検証方法であって、
前記コンテンツと共に記録媒体に記録されている検証プログラムを読み出す読出ステップと、
前記検証プログラムを前記仮想マシンが実行することにより、前記仮想マシンを含む前記情報処理装置の正当性を検証する検証ステップと
を含むことを特徴とする検証方法。
【請求項２】
前記検証ステップは、
前記検証プログラムが、前記情報処理装置の所定のメモリアドレスに保持されている値を、検証情報として取得する取得ステップと、
前記取得ステップにより取得された前記検証情報に基づいて、前記情報処理装置が正当であるか否かを、前記検証プログラムが判断する判断ステップとを含む
ことを特徴とする請求項１記載の検証方法。
【請求項３】
前記記録媒体は、さらに、前記仮想マシン上で実行され、前記コンテンツの再生に係る処理手順を含む再生関連プログラムを記録しており、
前記検証方法は、さらに、検証の結果、前記情報処理装置が不正である場合、前記コンテンツの再生に係る処理手順の実行を抑制する抑制ステップを含む
ことを特徴とする請求項２記載の検証方法。
【請求項４】
前記コンテンツは、所定の復元処理によって復元できるよう変形されており、
前記コンテンツの再生に係る処理手順は、変形されている前記コンテンツを、前記復元処理により復元する手順を含み、
前記抑制ステップは、前記復元処理の実行を抑制する
ことを特徴とする請求項３記載の検証方法。
【請求項５】
前記検証情報とは、タイミングによって変化する情報である
ことを特徴とする請求項２に記載の検証方法。
【請求項６】
前記検証情報とは、前記再生を行うコンテンツに関する情報である
ことを特徴とする請求項２に記載の検証方法。
【請求項７】
前記検証情報とは、前記仮想マシンを含む実行環境に依存する情報である
ことを特徴とする請求項２に記載の検証方法。
【請求項８】
前記記録媒体には、さらに、検証値と、検証ルールとが対応づけて記録されており、
前記判断ステップは、
前記取得ステップにより取得された前記検証情報と、前記記録媒体に記録された前記検証値とを、前記検証値に対応づけられている前記検証ルールに基づいて比較する比較ステップを含み、
前記判断ステップは、前記比較の結果、前記検証ルールを満たす場合に、前記情報処理装置が正当であると判断する
ことを特徴とする請求項２記載の検証方法。
【請求項９】
前記取得ステップは、
検証のタイミングにおいて、前記所定のメモリアドレスに保持されている値を要求する要求ステップを含み、
前記検証方法は、さらに、
前記要求ステップによる前記要求に応じて、前記所定のメモリアドレスに保持されている値を読み出し、読み出した値を前記検証情報として前記検証プログラムに返信する返信ステップを含み、
前記取得ステップの前記取得とは、前記要求に対して前記返信された前記検証情報を取得することであり、
前記比較ステップは、
前記返信により取得した前記検証情報を用いて前記比較を行う
ことを特徴とする請求項８に記載の検証方法。
【請求項１０】
前記記録媒体には、さらに、
複数の前記検証値が、検証のタイミングと対応づけて記録されており、
前記比較ステップは、
前記検証のタイミングにおいて前記取得した検証情報と、前記検証のタイミングに対応づけられている前記検証値および前記検証ルールを用いて前記比較を行い、
前記判断ステップは、
前記検証のタイミングになる度に、前記比較ステップを繰り返し実行させる繰り返しステップと、
前記繰り返しの結果、前記検証情報と前記検証値とが所定回数以上前記検証ルールを満たさない場合に、前記情報処理装置が不正であると決定する決定ステップとを含む
ことを特徴とする請求項８に記載の検証方法。
【請求項１１】
前記記録媒体には、
複数の前記検証値の各々が、前記仮想マシンを一意に識別する識別情報と対応づけられて記録されており、
前記比較ステップは、前記情報処理装置に含まれる仮想マシンの識別情報と対応する検証値を用いて前記比較を行う
ことを特徴とする請求項８に記載の検証方法。
【請求項１２】
前記記録媒体には、さらに、検証のタイミングと検証ルールとが対応づけられて記録されており、
前記情報処理装置は、さらに、
所定のタイミングにおいて前記所定のメモリアドレスに保持されている値を比較用情報として格納している格納手段を備え、
前記取得ステップは、
前記検証のタイミングにおいて前記所定のメモリアドレスに保持されている値を、前記検証情報として前記取得し、
前記判断ステップは、
前記検証のタイミングにおいて取得した前記検証情報と、前記格納手段に格納されている比較用情報とを前記検証ルールに基づいて比較する比較ステップを含み、
前記判断ステップは、前記比較の結果に基づいて、前記情報処理装置が正当であるか否かの前記判断を行う
ことを特徴とする請求項２に記載の検証方法。
【請求項１３】
前記取得ステップは、
前記検証のタイミングにおいて、前記所定のメモリアドレスに保持されている値を要求する要求ステップを含み、
前記検証方法は、さらに、
前記要求ステップによる前記要求に応じて、前記所定のメモリアドレスに保持されている値を読み出し、読み出した値を前記検証情報として前記検証プログラムに返信する返信ステップを含み、
前記取得ステップの前記取得とは、前記要求に対して前記返信された前記検証情報を取得することであり、
前記比較ステップは、
前記返信により取得した前記検証情報を用いて前記比較を行う
ことを特徴とする請求項１２記載の検証方法。
【請求項１４】
前記情報処理装置は、さらに、
乱数を生成する乱数生成部を備え、
前記検証方法は、さらに、
前記検証のタイミングになるごとに、前記乱数生成部に乱数を生成させ、生成された乱数を、前記所定のアドレスに保持させる乱数保持ステップを含み、
前記取得ステップは、
前記検証のタイミングにおいて、前記乱数保持ステップにより前記保持された前記乱数を読み出すことで前記検証情報の前記取得を行い、
前記判断ステップは、前記比較の結果、前記検証情報と、前記比較用情報とが異なる場合に、前記情報処理装置が正当であると判断する
ことを特徴とする請求項１２に記載の検証方法。
【請求項１５】
前記乱数生成部は、
前記仮想マシンを含む実行環境に依存する情報に基づいて、前記生成を行う
ことを特徴とする請求項１４に記載の検証方法。
【請求項１６】
前記情報処理装置は、さらに、
時刻を計時して前記所定のメモリアドレスに書き込む計時部を備え、
前記格納手段は、
所定のタイミングにおいて前記所定のメモリアドレスに書き込まれている前記時刻を比較用情報として格納しており、
前記取得ステップは、
前記検証のタイミングにおいて、前記所定のメモリアドレスに書き込まれている前記時刻を読み出すことで前記検証情報の前記取得を行い、
前記判断ステップは、前記比較の結果、前記検証情報に示される時刻が、前記比較用情報に示される時刻よりも増加している場合に、前記情報処理装置が正当であると判断する
ことを特徴とする請求項１２に記載の検証方法。
【請求項１７】
記録媒体に記録されているコンテンツの再生に係る処理を実行し、仮想マシンを内部に含む情報処理装置であって、
前記記録媒体には、
前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムが記録されており、
前記情報処理装置は、
前記記録媒体から前記検証プログラムを読み出す読出手段と、
前記情報処理装置の所定のメモリアドレスに、検証のタイミングにおいて保持されている値の要求を前記検証プログラムから受け付ける受付手段と、
前記要求を受け付けると、前記所定のメモリアドレスに保持されている値を読み出し、読み出した値を前記検証プログラムに返信する返信手段とを備える
ことを特徴とする情報処理装置。
【請求項１８】
記録媒体に記録されているコンテンツの再生に係る処理を実行し、仮想マシンを内部に含む情報処理装置に搭載される集積回路であって、
前記記録媒体には、
前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムが記録されており、
前記集積回路は、
前記記録媒体から前記検証プログラムを読み出す読出手段と、
前記情報処理装置の所定のメモリアドレスに、検証のタイミングにおいて保持されている値の要求を前記検証プログラムから受け付ける受付手段と、
前記要求を受け付けると、前記所定のメモリアドレスに保持されている値を読み出し、読み出した値を前記検証プログラムに返信する返信手段とを備える
ことを特徴とする集積回路。
【請求項１９】
コンテンツの再生に係る処理を実行し、仮想マシンを内部に含む情報処理装置の正当性を検証する検証プログラムを記録している記録媒体であって、
前記検証プログラムは、
前記情報処理装置の所定のメモリアドレスに保持されている値を、検証情報として取得する取得ステップと、
前記取得ステップにより取得された前記検証情報に基づいて、前記情報処理装置が正当であるか否かを判断する判断ステップとを含む
ことを特徴とする記録媒体。
【請求項２０】
記録媒体に記録されているコンテンツの再生に係る処理を実行し、仮想マシンを内部に含む情報処理装置の正当性を検証する処理を、前記情報処理装置に実行させる検証プログラムであって、
前記情報処理装置の所定のメモリアドレスに保持されている値を、検証情報として取得する取得ステップと、
前記取得ステップにより取得された前記検証情報に基づいて、前記情報処理装置が正当であるか否かを判断する判断ステップとを含む
ことを特徴とする検証プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、プログラムの実行に仮想マシンを用いる機器に関連し、特に、仮想マシンが実装されるプラットフォームの正当性を判断し、該プラットフォームが不正な場合に、排除する技術に関する。
【背景技術】
【０００２】  近年、プログラムをＯＳやＣＰＵ等のプラットフォームに依存させずに稼動させるため、仮想マシンが利用されている。一般的に、仮想マシンはソフトウェア実装されており、インタフェース等、実装に必要な情報が公開されているため、誰でも仮想マシンを実装することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】  そのため、仮想マシンを不正に実装することで、その上で稼動するプログラムに正規の動作ではなく、不正な動作をさせることが可能となる。そのプログラムが、例えば、映画等のコンテンツの著作権を保護するプログラムである場合、不正にコンテンツを再生されることにつながる。
本発明は、上記の問題点に鑑み、プログラムが、自身を稼動させる仮想マシンが正規に実装されたものであることを検証できる情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００４】  上記課題を解決するために、本発明では、内部に含んだ仮想マシンによりコンテンツの再生に係る処理を実行する情報処理装置において用いられる検証方法であって、前記コンテンツと共に記録媒体に記録されている検証プログラムを読み出す読出ステップと、前記検証プログラムを前記仮想マシンが実行することにより、前記仮想マシンを含む前記情報処理装置の正当性を検証する検証ステップとを含むことを特徴とする検証方法を提供する。【０００５】  上述の検証方法を用いることにより、検証プログラムが、自身を稼働させる仮想マシンが正規に実装されたものであるか否かを検証することができる。
また、前記検証ステップは、前記検証プログラムが、前記情報処理装置の所定のメモリアドレスに保持されている値を、検証情報として取得する取得ステップと、前記取得ステップにより取得された前記検証情報に基づいて、前記情報処理装置が正当であるか否かを、前記検証プログラムが判断する判断ステップとを含むこととしてもよい。【０００６】  上述の検証方法では、所定のメモリアドレスに保持されている値を用いて情報処理装置の検証を行う。
したがって、検証を行うための値が保持されているメモリアドレスを知らないと、仮想マシンを実装することができない。そのため、メモリアドレスを知らない不正な第三者が不正な仮想マシンを実装するのを困難にすることができる。【０００７】  また、前記記録媒体は、さらに、前記仮想マシン上で実行され、前記コンテンツの再生に係る処理手順を含む再生関連プログラムを記録しており、前記検証方法は、さらに、検証の結果、前記情報処理装置が不正である場合、前記コンテンツの再生に係る処理手順の実行を抑制する抑制ステップを含むこととしてもよい。
これにより、不正な仮想マシンではコンテンツの再生が実行されないようにすることができる。【０００８】  また、前記コンテンツは、所定の復元処理によって復元できるよう変形されており、前記コンテンツの再生に係る処理手順は、変形されている前記コンテンツを、前記復元処理により復元する手順を含み、前記抑制ステップは、前記復元処理の実行を抑制することとしてもよい。
これにより、例えばコンテンツが著作権保護等を目的として変形されている場合に、不正な仮想マシンではコンテンツの復元処理が実行されないようにすることができる。【０００９】  また、前記検証情報とは、タイミングによって変化する情報であることとしてもよい。
上述の検証方法によると、検証情報としてタイミングによって変化する情報を用いるため、不正解析者が検証情報を保持するメモリアドレスを特定できた場合であっても、正当な検証情報の値を特定することが難しくなる。
したがって、不正な第三者が、検証プログラムによる検証を通過することのできる実行環境を不正に実装することが困難になる。【００１０】  また、前記検証情報とは、前記再生を行うコンテンツに関する情報であることとしてもよい。
上述の検証方法によると、検証プログラムは、再生されるコンテンツに関する情報に基づいて、情報処理装置の正当性を検証する。
これにより、検証プログラムは、再生されるコンテンツが、当該検証プログラムと共に用いられるべきコンテンツであるか否かを検証することができる。【００１１】  したがって、上述の検証方法は、例えば、不正な第三者が、正当な検証プログラムを複製し、他のコンテンツの再生時に、複製した検証プログラムを読み込ませることによって当該他のコンテンツについての検証を通過させるような不正についても防止することができる。
また、前記検証情報とは、前記仮想マシンを含む実行環境に依存する情報であることとしてもよい。【００１２】  これにより、検証プログラムは、当該検証プログラムを実行する実行環境が、正当な検証情報を知らない不正な第三者が実装した実行環境であるか否かを検証することができる。
また、前記記録媒体には、さらに、検証値と、検証ルールとが対応づけて記録されており、前記判断ステップは、前記取得ステップにより取得された前記検証情報と、前記記録媒体に記録された前記検証値とを、前記検証値に対応づけられている前記検証ルールに基づいて比較する比較ステップを含み、前記判断ステップは、前記比較の結果、前記検証ルールを満たす場合に、前記情報処理装置が正当であると判断することとしてもよい。【００１３】  これにより、検証値と検証ルールを知らない不正な第三者が、不正な仮想マシンを実装するのを困難にすることができる。
また、前記取得ステップは、検証のタイミングにおいて、前記所定のメモリアドレスに保持されている値を要求する要求ステップを含み、前記検証方法は、さらに、前記要求ステップによる前記要求に応じて、前記所定のメモリアドレスに保持されている値を読み出し、読み出した値を前記検証情報として前記検証プログラムに返信する返信ステップを含み、前記取得ステップの前記取得とは、前記要求に対して前記返信された前記検証情報を取得することであり、前記比較ステップは、前記返信により取得した前記検証情報を用いて前記比較を行うこととしてもよい。【００１４】  また、前記記録媒体には、さらに、複数の前記検証値が、検証のタイミングと対応づけて記録されており、前記比較ステップは、前記検証のタイミングにおいて前記取得した検証情報と、前記検証のタイミングに対応づけられている前記検証値および前記検証ルールを用いて前記比較を行い、前記判断ステップは、前記検証のタイミングになる度に、前記比較ステップを繰り返し実行させる繰り返しステップと、前記繰り返しの結果、前記検証情報と前記検証値とが所定回数以上前記検証ルールを満たさない場合に、前記情報処理装置が不正であると決定する決定ステップとを含むこととしてもよい。【００１５】  上述の検証方法では、所定回数以上検証ルールを満たさない場合に、情報処理装置が不正であると決定するので、検証の精度を向上させることができる。
また、前記記録媒体には、複数の前記検証値の各々が、前記仮想マシンを一意に識別する識別情報と対応づけられて記録されており、前記比較ステップは、前記情報処理装置に含まれる仮想マシンの識別情報と対応する検証値を用いて前記比較を行うこととしてもよい。【００１６】  これにより、仮想マシンごとに異なる検証値を用いて検証を行うことができる。
また、前記記録媒体には、さらに、検証のタイミングと検証ルールとが対応づけられて記録されており、前記情報処理装置は、さらに、所定のタイミングにおいて前記所定のメモリアドレスに保持されている値を比較用情報として格納している格納手段を備え、前記取得ステップは、前記検証のタイミングにおいて前記所定のメモリアドレスに保持されている値を、前記検証情報として前記取得し、前記判断ステップは、前記検証のタイミングにおいて取得した前記検証情報と、前記格納手段に格納されている比較用情報とを前記検証ルールに基づいて比較する比較ステップを含み、前記判断ステップは、前記比較の結果に基づいて、前記情報処理装置が正当であるか否かの前記判断を行うこととしてもよい。【００１７】  また、前記取得ステップは、前記検証のタイミングにおいて、前記所定のメモリアドレスに保持されている値を要求する要求ステップを含み、前記検証方法は、さらに、前記要求ステップによる前記要求に応じて、前記所定のメモリアドレスに保持されている値を読み出し、読み出した値を前記検証情報として前記検証プログラムに返信する返信ステップを含み、前記取得ステップの前記取得とは、前記要求に対して前記返信された前記検証情報を取得することであり、前記比較ステップは、前記返信により取得した前記検証情報を用いて前記比較を行うこととしてもよい。【００１８】  また、前記情報処理装置は、さらに、乱数を生成する乱数生成部を備え、前記検証方法は、さらに、前記検証のタイミングになるごとに、前記乱数生成部に乱数を生成させ、生成された乱数を、前記所定のアドレスに保持させる乱数保持ステップを含み、前記取得ステップは、前記検証のタイミングにおいて、前記乱数保持ステップにより前記保持された前記乱数を読み出すことで前記検証情報の前記取得を行い、前記判断ステップは、前記比較の結果、前記検証情報と、前記比較用情報とが異なる場合に、前記情報処理装置が正当であると判断することとしてもよい。【００１９】  これにより、情報処理装置の正当性の検証に乱数を用いるという実装を知らない不正な第三者が、不正な仮想マシンを実装するのを困難にすることができる。
また、前記乱数生成部は、前記仮想マシンを含む実行環境に依存する情報に基づいて、前記生成を行うこととしてもよい。
これにより、実行環境が異なる場合に、乱数生成部が各実行環境で同じ乱数を生成する可能性が低くなる。【００２０】  また、前記情報処理装置は、さらに、時刻を計時して前記所定のメモリアドレスに書き込む計時部を備え、前記格納手段は、所定のタイミングにおいて前記所定のメモリアドレスに書き込まれている前記時刻を比較用情報として格納しており、前記取得ステップは、前記検証のタイミングにおいて、前記所定のメモリアドレスに書き込まれている前記時刻を読み出すことで前記検証情報の前記取得を行い、前記判断ステップは、前記比較の結果、前記検証情報に示される時刻が、前記比較用情報に示される時刻よりも増加している場合に、前記情報処理装置が正当であると判断することとしてもよい。【００２１】  これにより、情報処理装置の正当性の検証に時刻を用いるという実装を知らない不正な第三者が、不正な仮想マシンを実装するのを困難にすることができる。
また、記録媒体に記録されているコンテンツの再生に係る処理を実行し、仮想マシンを内部に含む情報処理装置であって、前記記録媒体には、前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムが記録されており、前記情報処理装置は、前記記録媒体から前記検証プログラムを読み出す読出手段と、前記情報処理装置の所定のメモリアドレスに、検証のタイミングにおいて保持されている値の要求を前記検証プログラムから受け付ける受付手段と、前記要求を受け付けると、前記所定のメモリアドレスに保持されている値を読み出し、読み出した値を前記検証プログラムに返信する返信手段とを備えることとしてもよい。【００２２】  また、記録媒体に記録されているコンテンツの再生に係る処理を実行し、仮想マシンを内部に含む情報処理装置に搭載される集積回路であって、前記記録媒体には、前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムが記録されており、前記集積回路は、前記記録媒体から前記検証プログラムを読み出す読出手段と、前記情報処理装置の所定のメモリアドレスに、検証のタイミングにおいて保持されている値の要求を前記検証プログラムから受け付ける受付手段と、前記要求を受け付けると、前記所定のメモリアドレスに保持されている値を読み出し、読み出した値を前記検証プログラムに返信する返信手段とを備えることとしてもよい。【００２３】  また、コンテンツの再生に係る処理を実行し、仮想マシンを内部に含む情報処理装置の正当性を検証する検証プログラムを記録している記録媒体であって、前記検証プログラムは、前記情報処理装置の所定のメモリアドレスに保持されている値を、検証情報として取得する取得ステップと、前記取得ステップにより取得された前記検証情報に基づいて、前記情報処理装置が正当であるか否かを判断する判断ステップとを含むこととしてもよい。【００２４】  また、記録媒体に記録されているコンテンツの再生に係る処理を実行し、仮想マシンを内部に含む情報処理装置の正当性を検証する処理を、前記情報処理装置に実行させる検証プログラムであって、前記情報処理装置の所定のメモリアドレスに保持されている値を、検証情報として取得する取得ステップと、前記取得ステップにより取得された前記検証情報に基づいて、前記情報処理装置が正当であるか否かを判断する判断ステップとを含むこととしてもよい。
【発明の効果】
【００２５】  以上、説明したように、本発明によれば、プログラムにより、自身を稼動させる仮想マシンが正規に実装されたものであることを検証できる情報処理方法を提供できるという効果を有する。
【図面の簡単な説明】
【００２６】
【図１】実施の形態１における記録媒体及び情報処理装置の構成を示す図
【図２】実施の形態１における仮想マシンコード実行処理のフローを示す図
【図３】実施の形態１における仮想マシンを含む実行環境の正当性検証処理のフローを示す図
【図４】実施の形態１における検証ルールのデータ構造例
【図５】実施の形態１における仮想マシンコードが持つ検証ルールテーブル構造例
【図６】実施の形態１における記録媒体及び情報処理装置の構成のその他の例を示す図
【図７】実施の形態１における記録媒体及び情報処理装置の構成をその他の例を示す図
【図８】実施の形態２における記憶媒体および情報処理装置のシステムモデルを示す図
【図９】実施の形態２における検証処理と復元処理の動作を示す図
【図１０】実施の形態２における仮想マシンを含む実行環境の正当性検証処理のフローを示す図
【図１１】実施の形態２における記憶媒体および情報処理装置のシステムモデルのその他の例を示す図
【図１２】実施の形態２における記憶媒体および情報処理装置の一般化したシステムモデルを示す図
【符号の説明】
【００２７】  １０１、８０１、１２０１  情報処理装置
１０２、８０２、１２０２  記録媒体
１１１  ディスク読込部
１１２  ユーザ操作受付部
１１３  仮想マシン実行部
１１４  情報保持部
１１５  仮想マシン実行コード
１１７  検証値テーブル識別情報
１１８  作業情報保持部
１２１  仮想マシンコード
１１５１  検証値取得モジュール
１１５４  仮想マシンコード実行モジュール
１１２１  仮想マシン検証モジュール
１１２２  検証情報モジュール
１１２３  コード依存処理モジュール
４００  仮想マシン毎の検証ルールテーブル
４０１  アドレス
４０２  検証タイミング
４０３  検証値
４０４  検証ルール
５００  検証情報保持モジュール１１２２が保持する検証ルールテーブル
８１３、１１１３、１２１３  クリップファイル
８１４  検証用コード
８１５  秘密情報用コード
８１６  復元情報ファイル
８２４、１２２４  モジュール管理部
８２７、１２２７  再生制御部
８２９、１２２９  検証処理部
８３０、１２３０  秘密情報計算部
８３１、１１３１、１２３１  プレゼンテーション処理部
８３２、１１３２、１２３２  復元処理部
９０１  メモリ
９０２  検証情報メモリ
９０３  仮想マシン識別情報
９０４  割り込み管理情報
９０５  秘密情報計算用割り込み管理情報
【発明を実施するための最良の形態】
【００２８】  以下、発明を実施するための最良の形態を、図面を参照しながら説明する。
（実施の形態１）
図１を使って、本発明の一実施形態に係る記録媒体、及び情報処理装置について説明する。
記録媒体１０２には、仮想マシン上で動作するプログラムである、仮想マシンコード１２１が記録されている。記録媒体１０２の一実装例としては、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）であるが、それに限るものではない。さらに、仮想マシンコード１２１は、仮想マシン検証モジュール１１２１、検証情報保持モジュール１１２２、コード依存処理モジュール１１２３から構成される。各モジュールの詳細は後述する。【００２９】  情報処理装置１０１は、仮想マシンを使って、仮想マシンコード１２１を実行する装置であり、図１に示すように、ディスク読込部１１１、ユーザ操作受付部１１２、仮想マシン実行部１１３、情報保持部１１４、作業情報保持部１１８から構成される。仮想マシンとは、ＣＰＵやＯＳ等のプラットフォームに依存せずに、プログラムを動作させるために、仮想マシンコード１２１として実装されたプログラムを、プラットフォーム用のネイティブコードに変換して実行するソフトウェアである。具体的には、例えば仮想マシンはＪａｖａ（登録商標）仮想マシンであり、仮想マシンコード１２１はＪａｖａ（登録商標）バイトコードであるが、これに限るものではない。【００３０】  情報処理装置１０１の一実装例としては、ＣＰＵ、ワークメモリ、フラッシュメモリ、ＢＤドライブ、リモートコントローラとから構成されるコンピュータシステムであり、ディスク読込部１１１はＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）ドライブであり、情報保持部１１４はフラッシュメモリであり、ユーザ操作受付部１１２はリモートコントローラであり、作業情報保持部１１８はワークメモリであり、仮想マシン実行部１１３は、ＣＰＵとワークメモリを用いて動作するソフトウェアで構成する方法が挙げられるが、他にも、ハードウェアでの実装など、ソフトウェアによる構成に限定されるものではない。その他の実装形態についても、これに限定されるものではない。【００３１】  また、情報保持部１１４には、仮想マシン実行コード１１５と、仮想マシン識別情報１１７が保持されている。仮想マシン実行コード１１５は、ソフトウェアであり、検証値取得モジュール１１５１、仮想マシンコード実行モジュール１１５４から構成される。各モジュールの詳細は後述する。
仮想マシン識別情報１１７は、仮想マシンを識別するための情報であり、例えば、「情報処理装置メーカＩＤ＋情報処理装置のモデル番号＋仮想マシンのバージョン番号」などで構成される８バイトのデータであるが、仮想マシンを一意に特定できる情報であれば、これに限るものではない。【００３２】  ここで、検証情報の作成について説明する。正規の仮想マシン実行コード１１５の提供者は、図４に示すような仮想マシン毎に固有の検証ルールテーブルと仮想マシン識別情報１１７を仮想マシン管理機関に提出する。なお、上記検証ルールテーブルは仮想マシンが搭載されている再生装置毎の検証ルールテーブル、識別情報であっても良い。仮想マシン管理機関は、仮想マシンコードの実装者に対し、正規の仮想マシンの検証ルールテーブルと仮想マシン識別情報１１７を提供する。仮想マシンコードの実装者は、これを基に検証情報を作成する。図４は仮想マシン毎（再生装置毎）に固有の検証ルールテーブルであり、例えば、検証に使用するアドレス４０１と、いつ検証するかを示す検証タイミング４０２と、その時にアドレス４０１がどのような値をとっているかを示す検証値４０３と、その値がどのような状態であれば検証が成功なのかを示す検証ルール４０４などで構成される。アドレス４０１は図４にあるように、特定のアドレスや、特定のアドレスの範囲を表す。検証ルールテーブルは図４のようなテーブル構成に限定されるものではない。【００３３】  なお、本実施の形態では、記録媒体１０２として、ＢＤを想定し、そこに記録された仮想マシンコード１２１をディスク読込部１１１にて情報処理装置１０１に取り込んでいるが、それに限るものではなく、例えば、ディスク読込部１１１をインターネット接続部に置き換え、仮想マシンコード１２１をインターネット経由で情報処理装置１０１に取り込む等、他の方法で仮想マシンコード１２１を情報処理装置１０１に取り込んでもよい。【００３４】  以上で、本発明の一実施形態に係る記録媒体、及び情報処理装置についての説明を終わる。
（仮想マシンコードの実行）
次に、図２を使って、情報処理装置１０１での仮想マシンコードの実行について説明する。【００３５】  まず、情報処理装置１０１はユーザ操作受付部１１２を通じて、記録媒体１０２上の仮想マシンコード１２１を実行するよう指示を受けることで処理が開始される。
仮想マシンコード１２１の実行が指示されると、仮想マシン実行部１１３は、情報保持部１１４から、仮想マシン実行コード１１５をロードし、仮想マシンを起動する（Ｓ２０１）。【００３６】  次に、ディスク読込部１１１を通じて記録媒体１０２から、仮想マシンコード１２１を読み出し、仮想マシン実行部１１３が仮想マシン上で仮想マシンコード１２１を起動する（Ｓ２０２）。
仮想マシン上で起動された仮想マシンコード１２１は、仮想マシン検証モジュール１１２１、及び検証情報保持モジュール１１２２を用いて、自身を実行している仮想マシンを含む実行環境の正当性の検証タイミング４０２かどうかチェックを行う（Ｓ２０３）。【００３７】  そして、検証タイミング４０２だった場合、仮想マシンを含む実行環境の正当性の検証を行う（Ｓ２０４）。この処理の詳細については、後述する。
Ｓ２０４の検証結果を判定し（Ｓ２０５）、ＮＧの場合、ＮＧの回数が規定回数になったかどうか確認する（Ｓ２０８）。ここで、ＮＧが規定回数以上である場合、仮想マシンコード１２１は自身の実行を終了するように実装されているため、その実行を終了する。【００３８】  Ｓ２０８でＮＧが規定回数に達していない場合は、Ｓ２０３からやり直す。規定回数は１回でもよいし、複数回でもよく、複数にすれば検証の精度を向上させる効果が得られる。
Ｓ２０５で検証結果がＯＫの場合、仮想マシンコード１２１中のコード依存処理モジュール１１２３で定義されたコード依存処理を実行する（Ｓ２０６）。コード依存処理モジュール１１２３には、仮想マシンコード１２１毎に異なる処理が定義されており、例えば、記録媒体１０２に別途記録された映画等のコンテンツ１２２の著作権保護処理として、コンテンツ１２２の復号処理を行うが、これに限るものではない。【００３９】  コード依存処理が終了した時点で、仮想マシンコード１２１の実行を終了する（Ｓ２０７）。
以上で、情報処理装置１０１での仮想マシンコード１２１の実行についての説明を終わる。
（仮想マシンを含む実行環境の正当性検証）
仮想マシンを含む実行環境の正当性検証処理の詳細について説明する。この処理は、仮想マシンコード１２１によって、自身を実行する仮想マシンを含む実行環境が正規のものかどうかを検証する処理である。【００４０】  仮想マシン実行コード１１５は、インタフェースや処理内容等の実装に必要な情報が公開されているため、誰でも実装することができる。このため、正規の仮想マシン実行コード１１５でなければ、仮想マシンコード１２１の実行時に不正な動作を行い、仮想マシンコード１２１の処理が正しく行われなくなる可能性がある。仮想マシンコード１２１が、例えば、記録媒体１０２に別途記録されている映画等のコンテンツ１２２の著作権を保護するプログラムである場合には、不正にコンテンツ１２２を再生され、著作権を保護できなくなるため、仮想マシンを含む実行環境の検証処理が必要になる。【００４１】  仮想マシンコード１２１を構成するモジュールについて説明する。仮想マシン検証モジュール１１２１は、自身を実行する仮想マシンを含む実行環境が正規のものかどうかを検証するモジュールであり、検証情報保持モジュール１１２２は、仮想マシンを含む実行環境の正当性を検証するための情報である。具体的には、仮想マシンから仮想マシン識別情報１１７と検証する値を取得し、その値が検証情報保持モジュール１１２２で保持する検証ルールと合致するかどうかで、仮想マシンを含む実行環境の正当性を検証する。これにより、異なる再生装置にプレーヤモデル番号、メーカ名等を含むデータをコピーしたエミュレータを作成し、例えばコンピュータ上で仮想マシン及び該エミュレータを搭載したとしても、図４の仮想マシン毎の検証ルールテーブル４００に合致するようにエミュレータを作成するのは困難であり、検証ルールを満たさないものとなるため、かかる不当なエミュレータ上における再生を阻止することができる。検証処理の詳細については、後述する。【００４２】  図５は検証情報保持モジュール１１２２が保持する検証ルールテーブル５００の一例である。検証情報保持モジュール１１２２が保持する検証ルールテーブル５００は、図４で提供された仮想マシン毎の検証ルールテーブル４００の一部または全部と、仮想マシン識別情報１１７の対応を示している。検証情報保持モジュール１１２２が保持する検証ルールテーブル５００で使用する検証ルールは、仮想マシンコード１２１作成者が検証ルールテーブル４００から自由に選択して利用することができ、仮想マシンコード１２１毎に独自の検証を行うことが可能となる。【００４３】  次に、仮想マシン実行コード１１５を構成するモジュールについて説明する。
検証値取得モジュール１１５１は、仮想マシンコード１２１中の仮想マシン検証モジュール１１２１が指定したアドレスを、作業情報保持部１１８から検索し、そのアドレスに保持されている値を取得するモジュールである。
仮想マシンコード実行モジュール１１５４は、仮想マシンコード１２１中のコード依存処理モジュール１１２３で定義される処理をプラットフォームに依存するネイティブコードに変換しながら、実行するモジュールである。【００４４】  続いて、図３を使って、仮想マシンを含む実行環境の正当性検証処理フローについて説明する。
最初に、図２のＳ２０２で仮想マシンコード１２１を起動すると、仮想マシン検証モジュール１１２１は、情報保持部１１４の仮想マシン識別情報１１７と検証情報保持モジュール１１２２が保持する検証ルールテーブル５００とを比較して、利用する検証タイミング４０２を検出しておく。例えば、仮想マシン識別情報１１７が０ｘ００１１ｆｆ０００００１１００１であったとして、以下の説明を行う。次にＳ２０３で、検出された検証タイミングになったときに、以下の検証処理を行う。【００４５】  まず、仮想マシンコード１２１は、検証タイミング４０２に対応するアドレス４０１を指定して、仮想マシンに検証情報の要求を行う（Ｓ３０１）。例えば、メニュー１を表示した場合に、アドレス０ｘ００ｆｆ０００１を指定して、検証情報の要求を行う。
仮想マシンは、作業情報保持部１１８上の指定されたアドレス０ｘ００ｆｆ０００１に保持されている値を取得し（Ｓ３０２）、その値を検証情報として仮想マシンコード１２１に返信する（Ｓ３０３）。【００４６】  仮想マシンコード１２１は、返信された検証情報を取得し（Ｓ３０４）、検証情報と検証値４０３を検証ルール４０４に基づいて検証し、その結果を図２のＳ２０５に渡す。今の例では、検証情報が０ｘｅｄと同値であれば検証結果はＯＫであり、それ以外であればＮＧである。
以上で、仮想マシンを含む実行環境の正当性検証処理の説明を終わる。【００４７】  なお、正規の仮想マシンが指定されたアドレスの情報を取得することができれば、アドレス４０２は、物理／論理アドレス、実／仮想アドレスを問わない。また仮想マシンは指定されたアドレスをそのまま使用するのではなく、アドレスマップ情報をもとに作業情報保持部１１８に適したアドレスに変換してから、検証情報を取得するようにしてもよい。アドレスマップ情報は作業情報保持部１１８の該当領域を示すようにできればよく、静的なだけではなく動的に変化しても対応を管理するように構成すればよい。【００４８】  また、本実施の形態では、検証値のデータ長として、１バイトのデータ長を用いているが、これに限るものではない。
また、作業情報保持部１１８は全ての領域を、検証値取得モジュール１１５１で参照できるようにする必要はなく、一部の領域は参照を不可能にするように実装することができ、仮想マシンを含む実装環境の不正な解析に対する耐性を向上させることが可能となる。【００４９】  （検証ルールの例）
本実施の形態では、作業情報保持部１１８上の値を取得して、それを検証情報としていたが、検証情報として用いる値や、検証ルールについて以下に説明する。ただし、これらに限ったものではなく、作業情報保持部１１８上に展開される値であればいかなる値も検証情報の候補である。【００５０】  （１）コンテンツに関する情報
例えば図５の検証情報保持モジュール１１２２が保持する検証ルールテーブル５００では、初期動画再生時にアドレス０ｘ００１１００４４〜０ｘ００１１００ｆｆのデータの中にコンテンツ１２２のインデックスファイルのタイムスタンプと同じ値が入っていれば検証ＯＫとなる。このように正規の仮想マシンを含む実行環境ではコンテンツに関連する情報をあるタイミングで作業情報保持部１１８上の特定の領域に格納するようにすることで、実際に仮想マシンコード１２１実行時に、その特定の領域に規定の情報が存在するかどうかを検証することで、正当性の評価を行うようにできる。なお、アドレスは範囲指定ではなく、１つのアドレスでもよい。アドレス、検証タイミングとも仮想マシンを含む実行環境に依存する。【００５１】  上記以外にコンテンツに関連する情報としては、インデックスファイルやナビゲーションファイル、その他記録媒体１０２に格納されているファイルのファイルサイズやタイムスタンプが利用できる。また、記録媒体１０２に格納されているプレイリストやプレイアイテムの数、コンテンツハッシュテーブルの一部または全部の値、あるボタンをクリックした際の音情報の一部または全部のデータ、インデックステーブルのハッシュ値の一部または全部、などコンテンツに関連する情報であればいかなる情報も利用可能である。【００５２】  （２）仮想マシンを含む実行環境に依存する情報
例えば図６のように情報処理装置１０１にさらに乱数生成部６０１を追加し、仮想マシンコード１２１の指示で乱数生成部６０１を動作させるように実装する。そして、図５の検証情報保持モジュール１１２２が保持する検証ルールテーブル５００のように、ディスク挿入時に仮想マシンを含む実行環境に乱数を生成させ、アドレス０ｘ００ａａ００１０に格納させ、仮想マシンコード１２１はその値を保持する。その後、再生開始時やユーザ操作時に同一アドレスに、再度乱数を生成・格納させ、仮想マシンコード１２１は新たに生成した乱数を取得して、先に保持していた乱数と比較して値が変更されていれば検証ＯＫとする。不正な仮想マシンが、乱数生成機能がない場合や、どこに乱数を書き込むのかを分かっていない場合には、検証ＯＫにはならない。なお、乱数のシードにはアドレスや仮想マシン識別情報１１７など仮想マシンを含む実行環境毎に異なる値にすれば、同じ乱数を生成する可能性が低くなる。【００５３】  また、仮想マシンは実装状態によって使用するメモリなどのリソースが異なる。ここで例えば、仮想マシンコード１２１実行中の作業情報保持部１１８の空き領域が特定の値の範囲に収まっていれば検証ＯＫとすることもできる。この場合不正な仮想マシンが動作する環境でにおいて、使用しているメモリサイズが違えば、検証ＯＫにはならない。
上記以外に仮想マシンを含む実行環境に依存する情報としては、ハッシュ計算値（例えば、仮想マシンコードの直前の戻り値を使用するなど）、コンテンツに関する情報だが情報処理装置１０１毎に表示する内容が違う情報（例えば、メニューのボタンの数、再生できる音声や映像の違いなど）、などの情報が利用できる。【００５４】  このように仮想マシンを含む実行環境に固有の機能や実装状態、その他の情報に依存するあらゆる値を検証に利用することが可能である。
（３）時間やタイミングに依存する情報
例えば図７のように情報処理装置１０１にさらに計時部７０１を追加する。計時部７０１は現在時刻を計時し、作業情報保持部１１８の特定の領域に書き込むように実装する。そして、図５の検証情報保持モジュール１１２２が保持する検証テーブルルール５００のように、仮想マシンコード１２１は、ディスク挿入時に０ｘ００ｅｅｅ００２から現在時刻を取得して、保持し、次にクリップファイル切り替わり時に同一アドレスから現在時刻を取得して、前回保持した時刻と比較し、増加していれば検証ＯＫとする。この場合、単に値が変更されているだけではなく、必ず増加しているという検証ルールが設定されているため、この実装を知っていないと、不正な実行環境を作成することはできない。【００５５】  また、あるタイトルを再生中には早送り禁止になっている場合があり、そのタイトルを再生しているタイミングでは、作業情報保持部１１８の特定の領域に早送り禁止の情報を保持する。この場合、該当のタイトル再生時に、その特定の領域にある現在の状態をチェックして、早送り禁止を示す情報であれば検証ＯＫとする。
上記以外に時間やタイミングに依存する情報としては、情報処理装置１０１に関するシステムパラメータや動作パラメータなど、また、現在再生しているチャプタ番号、現在再生しているストリームに含まれる時間情報（例えば、ＡＴＳ、ＰＴＳ、ＰＣＲなど）、などの情報が利用できる。【００５６】  このように時間やタイミングで変化する情報であれば、いかなる情報も検証に利用することが可能である。ただし、時間やタイミングで変化するデータであっても、コンテンツ情報自身（暗号状態、復号状態、デコードの前後を問わない）等のように、非常に転送レートが高い情報を対象とすると、所定タイミングのあるアドレスに基づくメモリ内の情報は正当な機器においても正確に予測する事は困難であるため、プレーヤの製造者自身が実質的に予測できる情報を用いることが望ましい。特に、時間やタイミングで変化するデータであって複数回メモリの確認を行いその変化値を確認するルール等の場合には、設定タイミングと確認タイミングをより厳密に同じタイミングで情報を確認することが必要であるが、正確なタイミングで検証ということは現実は難しいため、あまり転送レートが高い情報を用いないか、又は、検証ルール４０４において正当な機器と判断される検証ルール４０４を緩くする事が望ましい。【００５７】  検証情報保持モジュール１１２２が保持する検証ルールテーブル５００は上記で説明した情報をどのように組み合わせてもよく、仮想マシンを含む実行環境ごとに固有の検証ルールテーブル５００が作成できる。
（実施の形態２）
図８は本発明の実施の形態２における記憶媒体と情報処理装置のシステムモデルを示す図である。【００５８】  図８に示すように記憶媒体８０２には、再生順序やユーザ操作時の挙動を規定しているコマンドプログラム８１１と、クリップファイルの属性やタイムサーチマップ、プレイリスト、プレイアイテムなどを記述しているクリップファイル関連情報８１２、映像や音声などのコンテンツを含むクリップファイル８１３、仮想マシンを含む実行環境の正当性を検証するための検証用コード８１４、コンテンツの復元処理を行う際に使用する秘密情報用コード８１５、復元処理を行う際に秘密情報と組み合わせて実際の復元情報を生成するための復元情報ファイル８１６が含まれる。【００５９】  情報処理装置８０１には、コマンドプログラム８１１を処理するコマンド処理部８２２と、ユーザ入力を受け付けてユーザ操作制御部８２３に送り、また、コンテンツ中の再生タイトルの管理を行うモジュール管理部８２４と、ユーザ操作に対応する機能を再生制御部８２７から呼び出して制御するユーザ操作制御部８２３と、装置状態や処理中の変数を保持するレジスタ８２６と、クリップファイル関連情報８１２のプレイリストやプレイアイテムの処理、また、コマンド処理部８２２やユーザ操作制御部８２３からの機能の呼び出しの処理を行い、プレゼンテーション処理部８３１を制御する再生制御部８２７と、検証用コード８１４を実行して、仮想マシンを含む実行環境の正当性を検証する検証処理部８２９と、コンテンツの復元処理に使用する秘密情報を秘密情報用コード８１５から算出する秘密情報計算部８３０と、コンテンツの再生や表示を制御するプレゼンテーション処理部８３１と、復元情報ファイル８１６と秘密情報をもとに復元情報を生成し、コンテンツの復元をプレゼンテーションエンジンに通知する復元処理部８３２とを含む。コマンド処理部８２２とユーザ操作制御部８２３を含めて動作モジュール８２１と呼び、レジスタ８２６と再生制御部８２７を含めて再生制御処理部８２５と呼び、また検証処理部８２９と秘密情報計算部８３０を含めて仮想マシン８２８と呼ぶこととする。上記構成は一例であり、情報処理装置８０１の具体例としてはＢＤドライブを含む処理装置であり、ハードウェアでの実装やソフトウェアによる構成に限定されるものではない。以下、図８、図９および図１０の処理フローを用いてその動作を説明する。【００６０】  図９は情報処理装置１０１での検証処理とコンテンツの復元処理の動作を示す図である。
まず、検証処理部８２９は仮想マシン８２８が保持している仮想マシン識別情報９０３を取得し（Ｓ１００１）、検証用コード８１４のうち、仮想マシン識別情報９０３に対応する一部または全部のコードを読み込んで割り込み管理情報９０４を取得し、保持する（Ｓ１００２）。割り込み管理情報９０４は例えばタイトル毎などの再生箇所に応じて、検証用コード８１４の実行開始場所（ＰＣ：プログラムカウンター）を決定するための情報であり、実行開始場所と再生箇所の組み合わせが記述されている。なお、仮想マシン識別情報９０３は仮想マシンを識別するための情報であり、例えば、「情報処理装置メーカＩＤ＋情報処理装置のモデル番号＋仮想マシンのバージョン番号」などで構成されるデータであるが、仮想マシンを一意に特定できる情報であれば、これに限るものではない。また、仮想マシン識別情報９０３に署名を付与してその正当性をチェックするようにしてもよい。【００６１】  次に、モジュール管理部８２４は、今から再生するタイトル番号を含めて、検証処理部８２９に検証処理の開始を指示する（Ｓ１００３）。
検証処理部８２９は、指示に含まれるタイトル番号をもとに、割り込み管理情報９０４から該当のＰＣを取得し、検証用コード８１４を取得したＰＣから実行する（Ｓ１００４）。【００６２】  次に、実行された検証用コード８１４は、検証する際に参照するメモリ領域を含む検証情報メモリ９０２を参照して、仮想マシンを含む実行環境の検証を行う（Ｓ１００５）。なお、検証方法の詳細については実施の形態１で示した検証方法を利用することが可能であるため、ここでの詳細な説明は割愛する。
検証結果がＯＫであれば、そのまま処理を続行する（Ｓ１００６）。ＮＧの場合には、規定回数に達していなければそのまま処理を続行するが、ＮＧの規定回数に達していれば（Ｓ１００７）、コンテンツや秘密情報用コード８１５の一部または全部、またはその他の処理データを保持するメモリ９０１上の特定箇所のデータを書き換えることにより（Ｓ１００８）、情報処理装置１０１が正常に動作しないようにできる。具体的には、再生中に秘密情報計算部８３０が復元処理に必要な秘密情報用コード８１５もしくは秘密情報をメモリ９０１上に保持しているので、その一部または全部を書き換えることにより、復元処理を正常に動作できないようにして、正常な再生をできないようにするという効果が得られる。復元処理については後述する。また、再生中のタイトルの一部もメモリ９０１上に保持するようにできるので、ＮＧの場合にメモリ９０１上のタイトルの一部または全部を書き換えることで、不正な仮想マシンを含む実行環境では正常に再生できなくするという効果が得られる。なお、書き換える情報は上記に限らず、上記以外の情報を書き換えても同様の効果が得られる。【００６３】  なお、検証結果がＮＧの場合にメモリ９０１上の情報を書き換えるとしたが、これに限らず、モジュール管理部８２４にＮＧを通知し、モジュール管理部８２４からの指示で、再生を停止するようにしてもよい。また秘密情報計算部８３０にＮＧを通知して秘密情報の算出を停止するようにしてもよく、これに限らず、正常に再生できないようにできれば、その他の構成要素にＮＧを通知してもよい。【００６４】  またＳ１００３の検証処理開始指示は再生タイトルが切り替わる度に発生するものであり、ユーザ操作などによりタイトルが変更になった場合など不定期に発生する。ただし、早送りやまき戻しなどの特殊再生時には、１つの検証処理が終了する前に検証情報メモリ９０２の内容が変更される恐れがあるため、検証処理開始指示を行わないようにしてもよい。また、現在検証処理を実行している（Ｓ１００５〜Ｓ１００７を繰り返している）最中に、別のタイトル番号を含む検証処理開始指示があった場合には、現在の検証処理を終了して、新たなタイトル番号に対応する検証用コード８１４の実行を行う（Ｓ１００４からやり直す）。【００６５】  また、Ｓ１００４の検証用コード８１４の実行は、Ｓ１００３の検証開始指示で受け取ったタイトル番号によっては実行しないようにできる。具体的には、検証用コード８１４生成側で、割り込み管理情報９０４に、検証用コード８１４の実行が必要ではないタイトル番号を含めないようにするか、特定のＰＣを設定して、そのＰＣの時には実行を行わないように規定するという方法がある。【００６６】  また、検証情報メモリ９０２とメモリ９０１は物理的には同一のメモリ上で領域が異なるものとしてもよい。またそれぞれ、参照禁止や書換禁止領域を設定することも可能であり、誤動作防止や不正な解析に対する耐性が高まる効果が得られる。
（復元処理）
上記の復元処理とは以下のような方法がある。【００６７】  図８、図９に示すように、まず、秘密情報計算部８３０は秘密情報用コード８１５を読み込み、秘密情報計算用割り込み管理情報９０５を取得し、保持する。秘密情報計算用割り込み管理情報９０５は、例えば、プレイアイテム番号ごとに、秘密情報用コード８１５の実行開始位置（秘密情報用ＰＣ：プログラムカウンター）を決定するための情報であり、プレイアイテム番号と秘密情報用ＰＣの対応が記述されている。【００６８】  復元処理部８３２は復元情報ファイル８１６の一部または全部を読み込んで保持する。
再生制御部８２７は現在どのプレイアイテムのどの位置を再生しているかを管理しており、あるプレイアイテムを再生すると、例えば１０秒ごとにそのプレイアイテム番号と何番目の期間かを示す期間情報を秘密情報計算部８３０に通知する。なお、何番目の期間ではなく、何秒目かを通知しても良い。また、通知のタイミングは１０秒ではなく、毎秒や、プレイアイテム切り替わり毎など、定期的または不定期的に通知するようにしてもよい。また、その通知のタイミング情報は秘密情報用コード８１５に含めて、再生制御部８２７が秘密情報用コード８１５からタイミング情報を取得しても良い。【００６９】  次に秘密情報計算部８３０は、通知されたプレイアイテム番号をもとに秘密情報計算用割り込み管理情報９０５から秘密情報用ＰＣを取得し、該当する箇所から秘密情報用コード８１５を実行する。
実行された秘密情報用コード８１５は期間情報をもとに、その期間に適切な秘密情報を算出して、復元処理部８３２に通知する。【００７０】  復元処理部８３２は、復元情報ファイルから再生箇所に適した復元情報を取得し、秘密情報を使用してＸＯＲ（Ｅｘｃｌｕｓｉｖｅ  ＯＲ：排他的論理和演算）計算などで復号し、復号した復元情報をプレゼンテーション処理部８３１に通知する。
プレゼンテーション処理部８３１は、復元情報に含まれる復元位置のデータと、復元情報に含まれる復元データをＸＯＲ計算して上書きする。復元位置は、クリップファイルの先頭からのパケット数や、パケットに付与されている読み出し時間情報、再生時間情報など、復元する位置を一意に特定できる情報であれば良い。【００７１】  以上により変形されたコンテンツを復元することが可能となり、正常に再生することができる。そこで、例えば上記の検証処理でＮＧだった場合には秘密情報計算部８３０が使用しているメモリ９０１上の領域の一部または全部を書き換えることで、正しい秘密情報を取得できないようにして、正常な再生をできないようにすることが可能となる。なお、書き換えるのは秘密情報用コード８１５や秘密情報の一部または全部など秘密情報の算出に必要なデータ領域であればよい。【００７２】  なお、プレイアイテム番号を使用したが、タイトル番号、プレイリスト番号、プレイアイテム番号およびそれらの組み合わせなど現在再生している位置が一意に特定できれば、いかなる情報を使用することも可能である。
また、プレゼンテーション処理部８３１が復元位置のデータと復元データのＸＯＲ計算をして上書きするとしたが、復元処理部８３２が復元情報を通知せずに、メモリ９０１上に保持されているクリップファイルを直接参照して、ＸＯＲ計算および上書きを行うようにしてもよい。【００７３】  なお、復元情報ファイル８１６が復元情報を含むとしたが、図１１に示すように、クリップファイル１１１３のストリーム内に復元情報を多重することも可能である。具体的には、復元情報をＰＭＴや独自パケットに格納して、映像や音声などのストリームに多重する。この場合、復元処理部１１３２は再生中のストリームから復元情報を含むパケットを取得し、復元情報を得ることができる。その他の構成は図８と同様である。【００７４】  復元情報には、復元情報を含むパケットからの相対パケット数およびそのパケットの何バイト目のデータを復元するかを示す復元位置と、復元位置のデータとＸＯＲ計算するための復元データが含まれている。復元処理部１１３２は、秘密情報計算部８３０から通知された秘密情報を使用してＸＯＲ計算などで復元情報を復号し、復号した復元情報をもとに復元位置のデータと復元データをＸＯＲ計算して、その結果を復元位置に上書きすることで、変形されたコンテンツを復元することが可能となる。【００７５】  このように復元情報をファイルではなく、クリップファイルのストリームに多重して復元処理を行うことも可能であるが、秘密情報計算部８３０は同様の処理を行えばよい。
なお、復元処理部１１３２は復号後の復元情報をプレゼンテーション処理部１１３１に通知してもよく、その場合、プレゼンテーション処理部１１３１が復元情報をもとに復元位置のデータと復元データをＸＯＲ計算して、復元位置のデータに上書きすれば復元処理が可能である。【００７６】  また、復元処理や、復元情報の復号にＸＯＲを使用したが、これに限らずＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）やＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）など、どのような演算を使用しても良い。
なお、図１２は上記図８および図１１で示した検証処理と復元処理の構成を一般化した構成であり、仮想マシン１２２８および復元処理部１２３２以外の構成要素は、一般的なディスク再生のシステムモデルである。つまり、本願の検証処理と復元処理を実現する実装は、一般的なディスク再生のシステムモデルをほとんど変更する必要なく実装することが可能であるという特徴がある。【００７７】  なお、本実施の形態では、検証処理部８３２が検証用コード８１４を直接読み込み、秘密情報計算部８３０が秘密情報用コード８１５を直接読み込むような記述をしたが、これに限らず、その他の構成要素を経由して取得しても良い。また、検証用コード８１４や秘密情報用コード８１５はコマンドプログラム８１１や、クリップファイル関連情報８１２など記憶媒体８０２上の他の情報に含まれるように記述してもよい。【００７８】  また、復元情報や、割り込み情報などの各通知は図示していない一般演算用のレジスタ経由や、メモリ９０１経由などで通知することが可能であるが、この限りではない。
また、割り込み管理情報９０４は、検証用コード８１４から取得するとしたが、別ファイルとしたり、記憶媒体８０２上のその他の情報に記述しても良い。また、秘密情報計算用割り込み管理情報９０５も同様に、別ファイルとしたり、記憶媒体８０２上のその他の情報に記述しても良い。【００７９】  （その他変形例）
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
（１）上記の情報処理装置は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記ＲＡＭまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、情報処理装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。【００８０】  （２）上記の情報処理装置を構成する構成要素の一部または全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムＬＳＩは、その機能を達成する。【００８１】  また、この場合、ＬＳＩ製造者と情報処理装置製造者は異なる場合がある。このとき、ＬＳＩ製造者は、例えば乱数生成機能や計時機能など検証に使用できる機能を実装して提供することで、情報処理装置製造者は製造する装置に合った検証ルールや検証用アドレスを規定することができる。よってＬＳＩ製造者はＬＳＩごとに検証ルールを規定・管理するコストを削減でき、情報処理装置製造者は製造する装置のバージョンごとに自由に検証ルールを規定できるという効果が得られる。【００８２】  （３）上記の情報処理装置を構成する構成要素の一部または全部は、情報処理装置に脱着可能なＩＣカードまたは単体のモジュールから構成されているとしてもよい。前記ＩＣカードまたは前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどから構成されるコンピュータシステムである。前記ＩＣカードまたは前記モジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ＩＣカードまたは前記モジュールは、その機能を達成する。このＩＣカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。【００８３】  （４）本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。【００８４】  また、本発明は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワータ、データ放送等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。【００８５】  また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
（５）上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
（６）本発明は、内部に含んだ仮想マシンによりコンテンツの再生に係る処理を実行する情報処理装置において用いられる検証方法であって、前記コンテンツと共に記録媒体に記録されている検証プログラムを読み出す読出ステップと、前記検証プログラムを前記仮想マシンが実行することにより、前記仮想マシンを含む前記情報処理装置の正当性を検証する検証ステップとを含むことを特徴とする。【００８６】  ここで、「読出ステップ」は、（実施の形態１）において説明した図２のＳ２０２の処理と対応する。
また、「検証ステップ」は、（実施の形態１）において説明した図２のＳ２０４の処理と対応する。
（７）また、変形例（６）において、前記検証ステップは、前記検証プログラムが、前記情報処理装置の所定のメモリアドレスに保持されている値を、検証情報として取得する取得ステップと、前記取得ステップにより取得された前記検証情報に基づいて、前記情報処理装置が正当であるか否かを、前記検証プログラムが判断する判断ステップとを含むこととしてもよい。【００８７】  ここで、「取得ステップ」は、（実施の形態１）において説明した図３のＳ３０１、Ｓ３０４の処理と対応する。
また、「判断ステップ」は、例えば、（実施の形態１）の、（仮想マシンを含む実行環境の正当性検証）の記載の、「仮想マシンコード１２１は、返信された検証情報を取得し（Ｓ３０４）、検証情報と検証値４０３を検証ルール４０４に基づいて検証し、その結果を図２のＳ２０５に渡す。今の例では、検証情報が０ｘｅｄと同値であれば検証結果はＯＫであり、それ以外であればＮＧである。」と記載されている処理と対応する。【００８８】  （８）また、変形例（７）において、前記記録媒体は、さらに、前記仮想マシン上で実行され、前記コンテンツの再生に係る処理手順を含む再生関連プログラムを記録しており、前記検証方法は、さらに、検証の結果、前記情報処理装置が不正である場合、前記コンテンツの再生に係る処理手順の実行を抑制する抑制ステップを含むこととしてもよい。
ここで、「前記仮想マシン上で実行され、前記コンテンツの再生に係る処理手順を含む再生関連プログラム」とは、（実施の形態２）において図８を用いて説明した、コマンドプログラム８１１、クリップファイル関連情報８１２、クリップファイル８１３、検証用コード８１４、秘密情報用コード８１５、復元情報ファイル８１６と対応している。【００８９】  また、「抑制ステップ」は、（実施の形態２）において説明した図１０のＳ１００６がＮＧの場合、およびＳ１００８の処理と対応する。
（９）また、変形例（８）において、前記コンテンツは、所定の復元処理によって復元できるよう変形されており、前記コンテンツの再生に係る処理手順は、変形されている前記コンテンツを、前記復元処理により復元する手順を含み、前記抑制ステップは、前記復元処理の実行を抑制することとしてもよい。【００９０】  ここで、「所定の復元処理」および「変形されている前記コンテンツを、前記復元処理により復元する手順」とは、（実施の形態２）の（復元処理）にて説明した処理と対応する。例えば、秘密情報用コード８１５、復元処理部８３２、プレゼンテーション処理部８３１が行う処理と対応する。
また、「前記抑制ステップは、前記復元処理の実行を抑止する」とは、上述の（復元処理）における、「以上により変形されたコンテンツを復元することが可能となり、正常に再生することができる。そこで、例えば上記の検出処理でＮＧだった場合には秘密情報計算部８３０が使用しているメモリ９０１上の領域の一部または全部を書き換えることで、正しい秘密情報を取得できないようにして、正常な再生をできないようにすることが可能となる。」などと記載されている処理と対応する。【００９１】  （１０）また、変形例（７）において、前記検証情報とは、タイミングによって変化する情報であることとしてもよい。
ここで、「タイミングによって変化する情報」とは、特に、（実施の形態１）の（検証ルールの例）の（３）時間やタイミングに依存する情報、における、「このように時間やタイミングで変化する情報であれば、いかなる情報も検証に利用することが可能である。」との記載と対応する。【００９２】  （１１）また、変形例（７）において、前記検証情報とは、前記再生を行うコンテンツに関する情報であることとしてもよい。
ここで、「前記再生を行うコンテンツに関する情報」とは、特に、（実施の形態１）の（検証ルールの例）の（１）コンテンツに関する情報、にて説明した記載と対応する。
（１２）また、変形例（７）において、前記検証情報とは、前記仮想マシンを含む実行環境に依存する情報であることとしてもよい。【００９３】  ここで、「前記仮想マシンを含む実行環境に依存する情報」とは、（実施の形態１）の（検証ルールの例）の（２）仮想マシンを含む実行環境に依存する情報、にて説明した記載と対応する。
（１３）また、変形例（７）において、前記記録媒体には、さらに、検証値と、検証ルールとが対応づけて記録されており、前記判断ステップは、前記取得ステップにより取得された前記検証情報と、前記記録媒体に記録された前記検証値とを、前記検証値に対応づけられている前記検証ルールに基づいて比較する比較ステップを含み、前記判断ステップは、前記比較の結果、前記検証ルールを満たす場合に、前記情報処理装置が正当であると判断することとしてもよい。【００９４】  ここで、「検証値」とは、（実施の形態１）において図５を用いて説明した検証値４０３と対応する。
また、「検証ルール」とは、検証ルール４０４と対応する。
また、「比較ステップ」および「判断ステップ」は、（実施の形態１）において説明した、（仮想マシンを含む実行環境の正当性検証）の記載の、「仮想マシンコード１２１は、返信された検証情報を取得し（Ｓ３０４）、検証情報と検証値４０３を検証ルール４０４に基づいて検証し、その結果を図２のＳ２０５に渡す。今の例では、検証情報が０ｘｅｄと同値であれば検証結果はＯＫであり、それ以外であればＮＧである。」と記載されている処理と対応する。【００９５】  （１４）また、変形例（１３）において、前記取得ステップは、検証のタイミングにおいて、前記所定のメモリアドレスに保持されている値を要求する要求ステップを含み、前記検証方法は、さらに、前記要求ステップによる前記要求に応じて、前記所定のメモリアドレスに保持されている値を読み出し、読み出した値を前記検証情報として前記検証プログラムに返信する返信ステップを含み、前記取得ステップの前記取得とは、前記要求に対して前記返信された前記検証情報を取得することであり、前記比較ステップは、前記返信により取得した前記検証情報を用いて前記比較を行うこととしてもよい。【００９６】  ここで、「要求ステップ」は、（実施の形態１）において説明した図３のＳ３０１と対応する。
また、「返信ステップ」は、（実施の形態１）において説明した図３のＳ３０３と対応する。
（１５）また、変形例（１３）において、前記記録媒体には、さらに、複数の前記検証値が、検証のタイミングと対応づけて記録されており、前記比較ステップは、前記検証のタイミングにおいて前記取得した検証情報と、前記検証のタイミングに対応づけられている前記検証値および前記検証ルールを用いて前記比較を行い、前記判断ステップは、前記検証のタイミングになる度に、前記比較ステップを繰り返し実行させる繰り返しステップと、前記繰り返しの結果、前記検証情報と前記検証値とが所定回数以上前記検証ルールを満たさない場合に、前記情報処理装置が不正であると決定する決定ステップとを含むこととしてもよい。【００９７】  ここで、「検証のタイミング」は、（実施の形態１）において説明した図５の検証タイミング４０２と対応する。
また、「繰り返しステップ」は、特に、（実施の形態１）において説明したＳ２０３、Ｓ２０４、Ｓ２０５、Ｓ２０７がＮＯ、Ｓ２０８がＮＯの場合の処理と対応する。
また、「決定ステップ」は、Ｓ２０８がＹＥＳの場合の処理と対応する。【００９８】  （１６）また、変形例（１３）において、前記記録媒体には、複数の前記検証値の各々が、前記仮想マシンを一意に識別する識別情報と対応づけられて記録されており、前記比較ステップは、前記情報処理装置に含まれる仮想マシンの識別情報と対応する検証値を用いて前記比較を行うこととしてもよい。
ここで、「識別情報」は、（実施の形態１）において説明した図５の仮想マシン識別情報１１７と対応している。【００９９】  （１７）また、変形例（７）において、前記記録媒体には、さらに、検証のタイミングと検証ルールとが対応づけられて記録されており、前記情報処理装置は、さらに、所定のタイミングにおいて前記所定のメモリアドレスに保持されている値を比較用情報として格納している格納手段を備え、前記取得ステップは、前記検証のタイミングにおいて前記所定のメモリアドレスに保持されている値を、前記検証情報として前記取得し、前記判断ステップは、前記検証のタイミングにおいて取得した前記検証情報と、前記格納手段に格納されている比較用情報とを前記検証ルールに基づいて比較する比較ステップを含み、前記判断ステップは、前記比較の結果に基づいて、前記情報処理装置が正当であるか否かの前記判断を行うこととしてもよい。【０１００】  （１８）また、変形例（１７）において、前記取得ステップは、前記検証のタイミングにおいて、前記所定のメモリアドレスに保持されている値を要求する要求ステップを含み、前記検証方法は、さらに、前記要求ステップによる前記要求に応じて、前記所定のメモリアドレスに保持されている値を読み出し、読み出した値を前記検証情報として前記検証プログラムに返信する返信ステップを含み、前記取得ステップの前記取得とは、前記要求に対して前記返信された前記検証情報を取得することであり、前記比較ステップは、前記返信により取得した前記検証情報を用いて前記比較を行うこととしてもよい。【０１０１】  ここで、「格納手段」は、例えば、（実施の形態１）の（検証ルールの例）の（２）仮想マシンを含む実行環境に依存する情報、における、「そして、図５の検証情報保持モジュール１１２２が保持する検証ルールテーブル５００のように、ディスク挿入時に仮想マシンを含む実行環境に乱数を生成させ、アドレス０ｘ００ａａ００１０に格納させ、」との記載に対応する。【０１０２】  また、「取得ステップ」「比較ステップ」「判断ステップ」は、（実施の形態１）の（検証ルールの例）の（２）仮想マシンを含む実行環境に依存する情報、における、「その後、再生開始時やユーザ操作時に同一アドレスに、再度乱数を生成・格納させ、仮想マシンコード１２１は新たに生成した乱数を取得して、先に保持していた乱数と比較して値が変更されていれば検証ＯＫとする。」との記載に基づく。【０１０３】  また、「要求ステップ」は、（実施の形態１）において説明した図３のＳ３０１と対応する。
また、「返信ステップ」は、（実施の形態１）において説明した図３のＳ３０３と対応する。
（１９）また、変形例（１７）において、前記情報処理装置は、さらに、乱数を生成する乱数生成部を備え、前記検証方法は、さらに、前記検証のタイミングになるごとに、前記乱数生成部に乱数を生成させ、生成された乱数を、前記所定のアドレスに保持させる乱数保持ステップを含み、前記取得ステップは、前記検証のタイミングにおいて、前記乱数保持ステップにより前記保持された前記乱数を読み出すことで前記検証情報の前記取得を行い、前記判断ステップは、前記比較の結果、前記検証情報と、前記比較用情報とが異なる場合に、前記情報処理装置が正当であると判断することとしてもよい。【０１０４】  ここで、「乱数生成部」は、（実施の形態１）において説明した図６の乱数生成部６０１と対応する。
また、「乱数保持ステップ」および「判断ステップ」は、（実施の形態１）の（検証ルールの例）の（２）仮想マシンを含む実行環境に依存する情報における、「そして、図５の検証情報保持モジュール１１２２が保持する検証ルールテーブル５００のように、ディスク挿入時に仮想マシンを含む実行環境に乱数を生成させ、アドレス０ｘ００ａａ００１０に格納させ、」「その後、再生開始時やユーザ操作時に同一アドレスに、再度乱数を生成・格納させ、仮想マシンコード１２１は新たに生成した乱数を取得して、先に保持していた乱数と比較して値が変更されていれば検証ＯＫとする。」との記載と対応する。【０１０５】  （２０）また、変形例（１９）において、前記乱数生成部は、前記仮想マシンを含む実行環境に依存する情報に基づいて、前記生成を行うこととしてもよい。
ここで、「乱数生成部」は、（実施の形態１）の（検証ルールの例）の（２）仮想マシンを含む実行環境に依存する情報、における、「なお、乱数のシードにはアドレスや仮想マシン識別情報１１７など仮想マシンを含む実行環境毎に異なる値にすれば、同じ乱数を生成する可能性が低くなる。」などの記載に対応する。【０１０６】  （２１）また、変形例（１７）において、前記情報処理装置は、さらに、時刻を計時して前記所定のメモリアドレスに書き込む計時部を備え、前記格納手段は、所定のタイミングにおいて前記所定のメモリアドレスに書き込まれている前記時刻を比較用情報として格納しており、前記取得ステップは、前記検証のタイミングにおいて、前記所定のメモリアドレスに書き込まれている前記時刻を読み出すことで前記検証情報の前記取得を行い、前記判断ステップは、前記比較の結果、前記検証情報に示される時刻が、前記比較用情報に示される時刻よりも増加している場合に、前記情報処理装置が正当であると判断することとしてもよい。【０１０７】  ここで、「計時部」は、（実施の形態１）において説明した図７の計時部７０１と対応する。
また、「格納手段」「取得ステップ」「判断ステップ」は、（実施の形態１）の（検証ルールの例）の（３）時間やタイミングに依存する情報、における、「そして、図５の検証情報保持モジュール１１２２が保持する検証テーブルルール５００のように、仮想マシンコード１２１は、ディスク挿入時に０ｘ００ｅｅｅ００２から現在時刻を取得して、保持し、次にクリップファイル切り替わり時に同一アドレスから現在時刻を取得して、前回保持した時刻と比較し、増加していれば検証ＯＫとする。」などの記載に対応する。【０１０８】  （２２）また、本発明は、記録媒体に記録されているコンテンツの再生に係る処理を実行し、仮想マシンを内部に含む情報処理装置であって、前記記録媒体には、前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムが記録されており、前記情報処理装置は、前記記録媒体から前記検証プログラムを読み出す読出手段と、前記情報処理装置の所定のメモリアドレスに、検証のタイミングにおいて保持されている値の要求を前記検証プログラムから受け付ける受付手段と、前記要求を受け付けると、前記所定のメモリアドレスに保持されている値を読み出し、読み出した値を前記検証プログラムに返信する返信手段とを備える情報処理装置でもある。【０１０９】  また、本発明は、記録媒体に記録されているコンテンツの再生に係る処理を実行し、仮想マシンを内部に含む情報処理装置に搭載される集積回路であって、前記記録媒体には、前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムが記録されており、前記集積回路は、前記記録媒体から前記検証プログラムを読み出す読出手段と、前記情報処理装置の所定のメモリアドレスに、検証のタイミングにおいて保持されている値の要求を前記検証プログラムから受け付ける受付手段と、前記要求を受け付けると、前記所定のメモリアドレスに保持されている値を読み出し、読み出した値を前記検証プログラムに返信する返信手段とを備える集積回路でもある。【０１１０】  ここで、「検証プログラム」は、図１に示す仮想マシン検証モジュール１１２１と対応する。
また、「読出手段」は、図１に示すディスク読込部１１１と対応する。
また、「受付手段」および「返信手段」は、仮想マシン実行部１１３が、仮想マシン実行コード１１５に含まれる命令コードを読み出し、解読し、実行することにより実現される。【０１１１】  また、本発明は、コンテンツの再生に係る処理を実行し、仮想マシンを内部に含む情報処理装置の正当性を検証する検証プログラムを記録している記録媒体であって、前記検証プログラムは、前記情報処理装置の所定のメモリアドレスに保持されている値を、検証情報として取得する取得ステップと、前記取得ステップにより取得された前記検証情報に基づいて、前記情報処理装置が正当であるか否かを判断する判断ステップとを含む記録媒体でもある。【０１１２】  また、本発明は、記録媒体に記録されているコンテンツの再生に係る処理を実行し、仮想マシンを内部に含む情報処理装置の正当性を検証する処理を、前記情報処理装置に実行させる検証プログラムであって、前記情報処理装置の所定のメモリアドレスに保持されている値を、検証情報として取得する取得ステップと、前記取得ステップにより取得された前記検証情報に基づいて、前記情報処理装置が正当であるか否かを判断する判断ステップとを含む検証プログラムでもある。【０１１３】  ここで、「取得ステップ」は、（実施の形態１）において説明した図３のＳ３０１、Ｓ３０４の処理と対応する。
また、「判断ステップ」は、例えば、（実施の形態１）の、（仮想マシンを含む実行環境の正当性検証）の記載の、「仮想マシンコード１２１は、返信された検証情報を取得し（Ｓ３０４）、検証情報と検証値４０３を検証ルール４０４に基づいて検証し、その結果を図２のＳ２０５に渡す。今の例では、検証情報が０ｘｅｄと同値であれば検証結果はＯＫであり、それ以外であればＮＧである。」と記載されている処理と対応する。【０１１４】  （２３）また、本発明は、以下のような構成であってもよい。
（２３−１）本発明は、仮想マシンを使って仮想マシンコードを実行する情報処理方法であって、仮想マシンコードが仮想マシンを含む実行環境の正当性を検証するステップと、検証の結果、前記仮想マシンを含む実行環境が不正であると判定した場合、前記仮想マシンコードの処理を停止するステップと、を含むことを特徴とする。【０１１５】  （２３−２）上記の変形例（２３−１）の情報処理方法において、前記検証ステップはさらに、前記仮想マシンコードが、前記仮想マシンを含む実行環境が保持する情報の取得を要求するステップと、前記仮想マシンが、前記情報を前記仮想マシンコードに提供するステップと、前記仮想マシンコードが、前記情報と、前記仮想マシンコードが保持する検証情報を比較し、前記仮想マシンコードで規定したルールに基づいて正当性を検証するステップと、を含むこととしてもよい。【０１１６】  （２３−３）また、上記の変形例（２３−２）において、前記情報は、前記仮想マシンを含む実行環境で処理するコンテンツに関する情報であることとしてもよい。
（２３−４）また、上記の変形例（２３−２）において、前記情報は、前記仮想マシンを含む実行環境に依存する情報であることとしてもよい。
（２３−５）また、上記の変形例（２３−２）において、前記情報は、前記仮想マシンを含む実行環境やコンテンツの状態により動的に変化する情報であることとしてもよい。【０１１７】  （２３−６）また、本発明は、上記の変形例（２３−１）〜（２３−５）のいずれかに記載された情報処理方法に含まれるステップをコンピュータに実行させることを特徴とするプログラムでもある。
（２３−７）また、本発明は、上記の変形例（２３−１）〜（２３−５）のいずれかに記載された情報処理方法に含まれるステップをコンピュータに実行させることを特徴とするプログラムを記録したコンピュータ読み取り可能な記録媒体でもある。
【産業上の利用可能性】
【０１１８】  本発明にかかる情報処理方法は、仮想マシンを使い、プラットフォームに依存しないプログラムを実行する情報処理装置に利用可能であり、著作権保護用プログラムなど、仮想マシン上で動作するプログラムにセキュリティを要求される場合に有用である。
【図１】
2007007805.tif 000002
【図２】
2007007805.tif 000003
【図３】
2007007805.tif 000004
【図４】
2007007805.tif 000005
【図５】
2007007805.tif 000006
【図６】
2007007805.tif 000007
【図７】
2007007805.tif 000008
【図８】
2007007805.tif 000009
【図９】
2007007805.tif 000010
【図１０】
2007007805.tif 000011
【図１１】
2007007805.tif 000012
【図１２】
2007007805.tif 000013
【手続補正書】
【提出日】平成18年11月10日(2006.11.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求の範囲
【補正方法】変更
【補正の内容】
【書類名】請求の範囲
【請求項１】  内部に含んだ仮想マシンによりコンテンツの再生に係る処理を実行する情報処理装置において用いられる検証方法であって、
前記コンテンツと共に記録媒体に記録されている検証プログラムを読み出す読出ステップと、
前記検証プログラムを前記仮想マシンが実行することにより、前記仮想マシンを含む前記情報処理装置の正当性を検証する検証ステップと
を含むことを特徴とする検証方法。
【請求項２】  前記検証ステップは、
前記検証プログラムが、前記情報処理装置の所定のメモリアドレスに保持されている値を、検証情報として取得する取得ステップと、
前記取得ステップにより取得された前記検証情報に基づいて、前記情報処理装置が正当であるか否かを、前記検証プログラムが判断する判断ステップとを含む
ことを特徴とする請求項１記載の検証方法。
【請求項３】（削除）
【請求項４】（削除）
【請求項５】（削除）
【請求項６】  前記検証情報とは、前記再生を行うコンテンツに関する情報である
ことを特徴とする請求項２に記載の検証方法。
【請求項７】  前記検証情報とは、前記仮想マシンを含む実行環境に依存する情報であることを特徴とする請求項２に記載の検証方法。
【請求項８】  前記記録媒体には、さらに、検証値と、検証ルールとが対応づけて記録されており、
前記判断ステップは、
前記取得ステップにより取得された前記検証情報と、前記記録媒体に記録された前記検証値とを、前記検証値に対応づけられている前記検証ルールに基づいて比較する比較ステップを含み、
前記判断ステップは、前記比較の結果、前記検証ルールを満たす場合に、前記情報処理装置が正当であると判断する
ことを特徴とする請求項２記載の検証方法。
【請求項９】  前記取得ステップは、
検証のタイミングにおいて、前記所定のメモリアドレスに保持されている値を要求する要求ステップを含み、
前記検証方法は、さらに、
前記要求ステップによる前記要求に応じて、前記所定のメモリアドレスに保持されている値を読み出し、読み出した値を前記検証情報として前記検証プログラムに返信する返信ステップを含み、
前記取得ステップの前記取得とは、前記要求に対して前記返信された前記検証情報を取得することであり、
前記比較ステップは、
前記返信により取得した前記検証情報を用いて前記比較を行う
ことを特徴とする請求項８に記載の検証方法。
【請求項１０】  前記記録媒体には、さらに、
複数の前記検証値が、検証のタイミングと対応づけて記録されており、
前記比較ステップは、
前記検証のタイミングにおいて前記取得した検証情報と、前記検証のタイミングに対応づけられている前記検証値および前記検証ルールを用いて前記比較を行い、
前記判断ステップは、
前記検証のタイミングになる度に、前記比較ステップを繰り返し実行させる繰り返しステップと、
前記繰り返しの結果、前記検証情報と前記検証値とが所定回数以上前記検証ルールを満たさない場合に、前記情報処理装置が不正であると決定する決定ステップとを含む
ことを特徴とする請求項８に記載の検証方法。
【請求項１１】  前記記録媒体には、
複数の前記検証値の各々が、前記仮想マシンを一意に識別する識別情報と対応づけられて記録されており、
前記比較ステップは、前記情報処理装置に含まれる仮想マシンの識別情報と対応する検証値を用いて前記比較を行う
ことを特徴とする請求項８に記載の検証方法。
【請求項１２】  前記記録媒体には、さらに、検証のタイミングと検証ルールとが対応づけられて記録されており、
前記情報処理装置は、さらに、
所定のタイミングにおいて前記所定のメモリアドレスに保持されている値を比較用情報として格納している格納手段を備え、
前記取得ステップは、
前記検証のタイミングにおいて前記所定のメモリアドレスに保持されている値を、前記検証情報として前記取得し、
前記判断ステップは、
前記検証のタイミングにおいて取得した前記検証情報と、前記格納手段に格納されている比較用情報とを前記検証ルールに基づいて比較する比較ステップを含み、
前記判断ステップは、前記比較の結果に基づいて、前記情報処理装置が正当であるか否かの前記判断を行う
ことを特徴とする請求項２に記載の検証方法。
【請求項１３】  前記取得ステップは、
前記検証のタイミングにおいて、前記所定のメモリアドレスに保持されている値を要求する要求ステップを含み、
前記検証方法は、さらに、
前記要求ステップによる前記要求に応じて、前記所定のメモリアドレスに保持されている値を読み出し、読み出した値を前記検証情報として前記検証プログラムに返信する返信ステップを含み、
前記取得ステップの前記取得とは、前記要求に対して前記返信された前記検証情報を取得することであり、
前記比較ステップは、
前記返信により取得した前記検証情報を用いて前記比較を行う
ことを特徴とする請求項１２記載の検証方法。
【請求項１４】  前記情報処理装置は、さらに、
乱数を生成する乱数生成部を備え、
前記検証方法は、さらに、
前記検証のタイミングになるごとに、前記乱数生成部に乱数を生成させ、生成された乱数を、前記所定のアドレスに保持させる乱数保持ステップを含み、
前記取得ステップは、
前記検証のタイミングにおいて、前記乱数保持ステップにより前記保持された前記乱数を読み出すことで前記検証情報の前記取得を行い、
前記判断ステップは、前記比較の結果、前記検証情報と、前記比較用情報とが異なる場合に、前記情報処理装置が正当であると判断する
ことを特徴とする請求項１２に記載の検証方法。
【請求項１５】  前記乱数生成部は、
前記仮想マシンを含む実行環境に依存する情報に基づいて、前記生成を行う
ことを特徴とする請求項１４に記載の検証方法。
【請求項１６】  前記情報処理装置は、さらに、
時刻を計時して前記所定のメモリアドレスに書き込む計時部を備え、
前記格納手段は、
所定のタイミングにおいて前記所定のメモリアドレスに書き込まれている前記時刻を比較用情報として格納しており、
前記取得ステップは、
前記検証のタイミングにおいて、前記所定のメモリアドレスに書き込まれている前記時刻を読み出すことで前記検証情報の前記取得を行い、
前記判断ステップは、前記比較の結果、前記検証情報に示される時刻が、前記比較用情報に示される時刻よりも増加している場合に、前記情報処理装置が正当であると判断する
ことを特徴とする請求項１２に記載の検証方法。
【請求項１７】  記録媒体に記録されているコンテンツの再生に係る処理を実行し、仮想マシンを内部に含む情報処理装置であって、
前記記録媒体には、
前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムが記録されており、
前記情報処理装置は、
前記記録媒体から前記検証プログラムを読み出す読出手段と、
前記情報処理装置の所定のメモリアドレスに、検証のタイミングにおいて保持されている値の要求を前記検証プログラムから受け付ける受付手段と、
前記要求を受け付けると、前記所定のメモリアドレスに保持されている値を読み出し、読み出した値を前記検証プログラムに返信する返信手段とを備える
ことを特徴とする情報処理装置。
【請求項１８】  記録媒体に記録されているコンテンツの再生に係る処理を実行し、仮想マシンを内部に含む情報処理装置に搭載される集積回路であって、
前記記録媒体には、
前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムが記録されており、
前記集積回路は、
前記記録媒体から前記検証プログラムを読み出す読出手段と、
前記情報処理装置の所定のメモリアドレスに、検証のタイミングにおいて保持されている値の要求を前記検証プログラムから受け付ける受付手段と、
前記要求を受け付けると、前記所定のメモリアドレスに保持されている値を読み出し、読み出した値を前記検証プログラムに返信する返信手段とを備える
ことを特徴とする集積回路。
【請求項１９】  コンテンツの再生に係る処理を実行し、仮想マシンを内部に含む情報処理装置の正当性を検証する検証プログラムを記録している記録媒体であって、
前記検証プログラムは、
前記情報処理装置の所定のメモリアドレスに保持されている値を、検証情報として取得する取得ステップと、
前記取得ステップにより取得された前記検証情報に基づいて、前記情報処理装置が正当であるか否かを判断する判断ステップとを含む
ことを特徴とする記録媒体。
【請求項２０】  記録媒体に記録されているコンテンツの再生に係る処理を実行し、仮想マシンを内部に含む情報処理装置の正当性を検証する処理を、前記情報処理装置に実行させる検証プログラムであって、
前記情報処理装置の所定のメモリアドレスに保持されている値を、検証情報として取得する取得ステップと、
前記取得ステップにより取得された前記検証情報に基づいて、前記情報処理装置が正当であるか否かを判断する判断ステップとを含む
ことを特徴とする検証プログラム。
【手続補正書】
【提出日】平成19年4月17日(2007.4.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
内部に含んだ仮想マシンによりコンテンツの再生に係る処理を実行する情報処理装置において用いられる検証方法であって、
前記コンテンツと共に記録媒体に記録されている検証プログラムを読み出す読出ステップと、
前記検証プログラムを前記仮想マシンが実行することにより、前記仮想マシンを含む前記情報処理装置の正当性を検証する検証ステップと
を含むことを特徴とする検証方法。
【請求項２】
前記検証ステップは、
前記検証プログラムが、前記情報処理装置の所定のメモリアドレスに保持されている値を、検証情報として取得する取得ステップと、
前記取得ステップにより取得された前記検証情報に基づいて、前記情報処理装置が正当であるか否かを、前記検証プログラムが判断する判断ステップとを含む
ことを特徴とする請求項１記載の検証方法。
【請求項３】
前記検証情報とは、前記再生を行うコンテンツに関する情報である
ことを特徴とする請求項２に記載の検証方法。
【請求項４】
前記検証情報とは、前記仮想マシンを含む実行環境に依存する情報である
ことを特徴とする請求項２に記載の検証方法。
【請求項５】
前記記録媒体には、さらに、検証値と、検証ルールとが対応づけて記録されており、
前記判断ステップは、
前記取得ステップにより取得された前記検証情報と、前記記録媒体に記録された前記検証値とを、前記検証値に対応づけられている前記検証ルールに基づいて比較する比較ステップを含み、
前記判断ステップは、前記比較の結果、前記検証ルールを満たす場合に、前記情報処理装置が正当であると判断する
ことを特徴とする請求項２記載の検証方法。
【請求項６】
前記取得ステップは、
検証のタイミングにおいて、前記所定のメモリアドレスに保持されている値を要求する要求ステップを含み、
前記検証方法は、さらに、
前記要求ステップによる前記要求に応じて、前記所定のメモリアドレスに保持されている値を読み出し、読み出した値を前記検証情報として前記検証プログラムに返信する返信ステップを含み、
前記取得ステップの前記取得とは、前記要求に対して前記返信された前記検証情報を取得することであり、
前記比較ステップは、
前記返信により取得した前記検証情報を用いて前記比較を行う
ことを特徴とする請求項５に記載の検証方法。
【請求項７】
前記記録媒体には、さらに、
複数の前記検証値が、検証のタイミングと対応づけて記録されており、
前記比較ステップは、
前記検証のタイミングにおいて前記取得した検証情報と、前記検証のタイミングに対応づけられている前記検証値および前記検証ルールを用いて前記比較を行い、
前記判断ステップは、
前記検証のタイミングになる度に、前記比較ステップを繰り返し実行させる繰り返しステップと、
前記繰り返しの結果、前記検証情報と前記検証値とが所定回数以上前記検証ルールを満たさない場合に、前記情報処理装置が不正であると決定する決定ステップとを含む
ことを特徴とする請求項５に記載の検証方法。
【請求項８】
前記記録媒体には、
複数の前記検証値の各々が、前記仮想マシンを一意に識別する識別情報と対応づけられて記録されており、
前記比較ステップは、前記情報処理装置に含まれる仮想マシンの識別情報と対応する検証値を用いて前記比較を行う
ことを特徴とする請求項５に記載の検証方法。
【請求項９】
前記記録媒体には、さらに、検証のタイミングと検証ルールとが対応づけられて記録されており、
前記情報処理装置は、さらに、
所定のタイミングにおいて前記所定のメモリアドレスに保持されている値を比較用情報として格納している格納手段を備え、
前記取得ステップは、
前記検証のタイミングにおいて前記所定のメモリアドレスに保持されている値を、前記検証情報として前記取得し、
前記判断ステップは、
前記検証のタイミングにおいて取得した前記検証情報と、前記格納手段に格納されている比較用情報とを前記検証ルールに基づいて比較する比較ステップを含み、
前記判断ステップは、前記比較の結果に基づいて、前記情報処理装置が正当であるか否かの前記判断を行う
ことを特徴とする請求項２に記載の検証方法。
【請求項１０】
前記取得ステップは、
前記検証のタイミングにおいて、前記所定のメモリアドレスに保持されている値を要求する要求ステップを含み、
前記検証方法は、さらに、
前記要求ステップによる前記要求に応じて、前記所定のメモリアドレスに保持されている値を読み出し、読み出した値を前記検証情報として前記検証プログラムに返信する返信ステップを含み、
前記取得ステップの前記取得とは、前記要求に対して前記返信された前記検証情報を取得することであり、
前記比較ステップは、
前記返信により取得した前記検証情報を用いて前記比較を行う
ことを特徴とする請求項９記載の検証方法。
【請求項１１】
前記情報処理装置は、さらに、
乱数を生成する乱数生成部を備え、
前記検証方法は、さらに、
前記検証のタイミングになるごとに、前記乱数生成部に乱数を生成させ、生成された乱数を、前記所定のアドレスに保持させる乱数保持ステップを含み、
前記取得ステップは、
前記検証のタイミングにおいて、前記乱数保持ステップにより前記保持された前記乱数を読み出すことで前記検証情報の前記取得を行い、
前記判断ステップは、前記比較の結果、前記検証情報と、前記比較用情報とが異なる場合に、前記情報処理装置が正当であると判断する
ことを特徴とする請求項９に記載の検証方法。
【請求項１２】
前記乱数生成部は、
前記仮想マシンを含む実行環境に依存する情報に基づいて、前記生成を行う
ことを特徴とする請求項１１に記載の検証方法。
【請求項１３】
前記情報処理装置は、さらに、
時刻を計時して前記所定のメモリアドレスに書き込む計時部を備え、
前記格納手段は、
所定のタイミングにおいて前記所定のメモリアドレスに書き込まれている前記時刻を比較用情報として格納しており、
前記取得ステップは、
前記検証のタイミングにおいて、前記所定のメモリアドレスに書き込まれている前記時刻を読み出すことで前記検証情報の前記取得を行い、
前記判断ステップは、前記比較の結果、前記検証情報に示される時刻が、前記比較用情報に示される時刻よりも増加している場合に、前記情報処理装置が正当であると判断する
ことを特徴とする請求項９に記載の検証方法。
【請求項１４】
記録媒体に記録されているコンテンツの再生に係る処理を実行し、仮想マシンを内部に含む情報処理装置であって、
前記記録媒体には、
前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムが記録されており、
前記情報処理装置は、
前記記録媒体から前記検証プログラムを読み出す読出手段と、
前記情報処理装置の所定のメモリアドレスに、検証のタイミングにおいて保持されている値の要求を前記検証プログラムから受け付ける受付手段と、
前記要求を受け付けると、前記所定のメモリアドレスに保持されている値を読み出し、読み出した値を前記検証プログラムに返信する返信手段とを備える
ことを特徴とする情報処理装置。
【請求項１５】
記録媒体に記録されているコンテンツの再生に係る処理を実行し、仮想マシンを内部に含む情報処理装置に搭載される集積回路であって、
前記記録媒体には、
前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムが記録されており、
前記集積回路は、
前記記録媒体から前記検証プログラムを読み出す読出手段と、
前記情報処理装置の所定のメモリアドレスに、検証のタイミングにおいて保持されている値の要求を前記検証プログラムから受け付ける受付手段と、
前記要求を受け付けると、前記所定のメモリアドレスに保持されている値を読み出し、読み出した値を前記検証プログラムに返信する返信手段とを備える
ことを特徴とする集積回路。
【請求項１６】
コンテンツの再生に係る処理を実行し、仮想マシンを内部に含む情報処理装置の正当性を検証する検証プログラムを記録している記録媒体であって、
前記検証プログラムは、
前記情報処理装置の所定のメモリアドレスに保持されている値を、検証情報として取得する取得ステップと、
前記取得ステップにより取得された前記検証情報に基づいて、前記情報処理装置が正当であるか否かを判断する判断ステップとを含む
ことを特徴とする記録媒体。
【請求項１７】
記録媒体に記録されているコンテンツの再生に係る処理を実行し、仮想マシンを内部に含む情報処理装置の正当性を検証する処理を、前記情報処理装置に実行させる検証プログラムであって、
前記情報処理装置の所定のメモリアドレスに保持されている値を、検証情報として取得する取得ステップと、
前記取得ステップにより取得された前記検証情報に基づいて、前記情報処理装置が正当であるか否かを判断する判断ステップとを含む
ことを特徴とする検証プログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムの実行に仮想マシンを用いる機器に関連し、特に、仮想マシンが実装されるプラットフォームの正当性を判断し、該プラットフォームが不正な場合に、排除する技術に関する。
【背景技術】
【０００２】
近年、プログラムをＯＳやＣＰＵ等のプラットフォームに依存させずに稼動させるため、仮想マシンが利用されている。一般的に、仮想マシンはソフトウェア実装されており、インタフェース等、実装に必要な情報が公開されているため、誰でも仮想マシンを実装することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
そのため、仮想マシンを不正に実装することで、その上で稼動するプログラムに正規の動作ではなく、不正な動作をさせることが可能となる。そのプログラムが、例えば、映画等のコンテンツの著作権を保護するプログラムである場合、不正にコンテンツを再生されることにつながる。
本発明は、上記の問題点に鑑み、プログラムが、自身を稼動させる仮想マシンが正規に実装されたものであることを検証できる情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【０００４】
上記課題を解決するために、本発明では、内部に含んだ仮想マシンによりコンテンツの再生に係る処理を実行する情報処理装置において用いられる検証方法であって、前記コンテンツと共に記録媒体に記録されている検証プログラムを読み出す読出ステップと、前記検証プログラムを前記仮想マシンが実行することにより、前記仮想マシンを含む前記情報処理装置の正当性を検証する検証ステップとを含むことを特徴とする検証方法を提供する。
【０００５】
上述の検証方法を用いることにより、検証プログラムが、自身を稼働させる仮想マシンが正規に実装されたものであるか否かを検証することができる。
また、前記検証ステップは、前記検証プログラムが、前記情報処理装置の所定のメモリアドレスに保持されている値を、検証情報として取得する取得ステップと、前記取得ステップにより取得された前記検証情報に基づいて、前記情報処理装置が正当であるか否かを、前記検証プログラムが判断する判断ステップとを含むこととしてもよい。
【０００６】
上述の検証方法では、所定のメモリアドレスに保持されている値を用いて情報処理装置の検証を行う。
したがって、検証を行うための値が保持されているメモリアドレスを知らないと、仮想マシンを実装することができない。そのため、メモリアドレスを知らない不正な第三者が不正な仮想マシンを実装するのを困難にすることができる。
【０００７】
また、前記記録媒体は、さらに、前記仮想マシン上で実行され、前記コンテンツの再生に係る処理手順を含む再生関連プログラムを記録しており、前記検証方法は、さらに、検証の結果、前記情報処理装置が不正である場合、前記コンテンツの再生に係る処理手順の実行を抑制する抑制ステップを含むこととしてもよい。
これにより、不正な仮想マシンではコンテンツの再生が実行されないようにすることができる。
【０００８】
また、前記コンテンツは、所定の復元処理によって復元できるよう変形されており、前記コンテンツの再生に係る処理手順は、変形されている前記コンテンツを、前記復元処理により復元する手順を含み、前記抑制ステップは、前記復元処理の実行を抑制することとしてもよい。
これにより、例えばコンテンツが著作権保護等を目的として変形されている場合に、不正な仮想マシンではコンテンツの復元処理が実行されないようにすることができる。
【０００９】
また、前記検証情報とは、タイミングによって変化する情報であることとしてもよい。
上述の検証方法によると、検証情報としてタイミングによって変化する情報を用いるため、不正解析者が検証情報を保持するメモリアドレスを特定できた場合であっても、正当な検証情報の値を特定することが難しくなる。
したがって、不正な第三者が、検証プログラムによる検証を通過することのできる実行環境を不正に実装することが困難になる。
【００１０】
また、前記検証情報とは、前記再生を行うコンテンツに関する情報であることとしてもよい。
上述の検証方法によると、検証プログラムは、再生されるコンテンツに関する情報に基づいて、情報処理装置の正当性を検証する。
これにより、検証プログラムは、再生されるコンテンツが、当該検証プログラムと共に用いられるべきコンテンツであるか否かを検証することができる。
【００１１】
したがって、上述の検証方法は、例えば、不正な第三者が、正当な検証プログラムを複製し、他のコンテンツの再生時に、複製した検証プログラムを読み込ませることによって当該他のコンテンツについての検証を通過させるような不正についても防止することができる。
また、前記検証情報とは、前記仮想マシンを含む実行環境に依存する情報であることとしてもよい。
【００１２】
これにより、検証プログラムは、当該検証プログラムを実行する実行環境が、正当な検証情報を知らない不正な第三者が実装した実行環境であるか否かを検証することができる。
また、前記記録媒体には、さらに、検証値と、検証ルールとが対応づけて記録されており、前記判断ステップは、前記取得ステップにより取得された前記検証情報と、前記記録媒体に記録された前記検証値とを、前記検証値に対応づけられている前記検証ルールに基づいて比較する比較ステップを含み、前記判断ステップは、前記比較の結果、前記検証ルールを満たす場合に、前記情報処理装置が正当であると判断することとしてもよい。
【００１３】
これにより、検証値と検証ルールを知らない不正な第三者が、不正な仮想マシンを実装するのを困難にすることができる。
また、前記取得ステップは、検証のタイミングにおいて、前記所定のメモリアドレスに保持されている値を要求する要求ステップを含み、前記検証方法は、さらに、前記要求ステップによる前記要求に応じて、前記所定のメモリアドレスに保持されている値を読み出し、読み出した値を前記検証情報として前記検証プログラムに返信する返信ステップを含み、前記取得ステップの前記取得とは、前記要求に対して前記返信された前記検証情報を取得することであり、前記比較ステップは、前記返信により取得した前記検証情報を用いて前記比較を行うこととしてもよい。
【００１４】
また、前記記録媒体には、さらに、複数の前記検証値が、検証のタイミングと対応づけて記録されており、前記比較ステップは、前記検証のタイミングにおいて前記取得した検証情報と、前記検証のタイミングに対応づけられている前記検証値および前記検証ルールを用いて前記比較を行い、前記判断ステップは、前記検証のタイミングになる度に、前記比較ステップを繰り返し実行させる繰り返しステップと、前記繰り返しの結果、前記検証情報と前記検証値とが所定回数以上前記検証ルールを満たさない場合に、前記情報処理装置が不正であると決定する決定ステップとを含むこととしてもよい。
【００１５】
上述の検証方法では、所定回数以上検証ルールを満たさない場合に、情報処理装置が不正であると決定するので、検証の精度を向上させることができる。
また、前記記録媒体には、複数の前記検証値の各々が、前記仮想マシンを一意に識別する識別情報と対応づけられて記録されており、前記比較ステップは、前記情報処理装置に含まれる仮想マシンの識別情報と対応する検証値を用いて前記比較を行うこととしてもよい。
【００１６】
これにより、仮想マシンごとに異なる検証値を用いて検証を行うことができる。
また、前記記録媒体には、さらに、検証のタイミングと検証ルールとが対応づけられて記録されており、前記情報処理装置は、さらに、所定のタイミングにおいて前記所定のメモリアドレスに保持されている値を比較用情報として格納している格納手段を備え、前記取得ステップは、前記検証のタイミングにおいて前記所定のメモリアドレスに保持されている値を、前記検証情報として前記取得し、前記判断ステップは、前記検証のタイミングにおいて取得した前記検証情報と、前記格納手段に格納されている比較用情報とを前記検証ルールに基づいて比較する比較ステップを含み、前記判断ステップは、前記比較の結果に基づいて、前記情報処理装置が正当であるか否かの前記判断を行うこととしてもよい。
【００１７】
また、前記取得ステップは、前記検証のタイミングにおいて、前記所定のメモリアドレスに保持されている値を要求する要求ステップを含み、前記検証方法は、さらに、前記要求ステップによる前記要求に応じて、前記所定のメモリアドレスに保持されている値を読み出し、読み出した値を前記検証情報として前記検証プログラムに返信する返信ステップを含み、前記取得ステップの前記取得とは、前記要求に対して前記返信された前記検証情報を取得することであり、前記比較ステップは、前記返信により取得した前記検証情報を用いて前記比較を行うこととしてもよい。
【００１８】
また、前記情報処理装置は、さらに、乱数を生成する乱数生成部を備え、前記検証方法は、さらに、前記検証のタイミングになるごとに、前記乱数生成部に乱数を生成させ、生成された乱数を、前記所定のアドレスに保持させる乱数保持ステップを含み、前記取得ステップは、前記検証のタイミングにおいて、前記乱数保持ステップにより前記保持された前記乱数を読み出すことで前記検証情報の前記取得を行い、前記判断ステップは、前記比較の結果、前記検証情報と、前記比較用情報とが異なる場合に、前記情報処理装置が正当であると判断することとしてもよい。
【００１９】
これにより、情報処理装置の正当性の検証に乱数を用いるという実装を知らない不正な第三者が、不正な仮想マシンを実装するのを困難にすることができる。
また、前記乱数生成部は、前記仮想マシンを含む実行環境に依存する情報に基づいて、前記生成を行うこととしてもよい。
これにより、実行環境が異なる場合に、乱数生成部が各実行環境で同じ乱数を生成する可能性が低くなる。
【００２０】
また、前記情報処理装置は、さらに、時刻を計時して前記所定のメモリアドレスに書き込む計時部を備え、前記格納手段は、所定のタイミングにおいて前記所定のメモリアドレスに書き込まれている前記時刻を比較用情報として格納しており、前記取得ステップは、前記検証のタイミングにおいて、前記所定のメモリアドレスに書き込まれている前記時刻を読み出すことで前記検証情報の前記取得を行い、前記判断ステップは、前記比較の結果、前記検証情報に示される時刻が、前記比較用情報に示される時刻よりも増加している場合に、前記情報処理装置が正当であると判断することとしてもよい。
【００２１】
これにより、情報処理装置の正当性の検証に時刻を用いるという実装を知らない不正な第三者が、不正な仮想マシンを実装するのを困難にすることができる。
また、記録媒体に記録されているコンテンツの再生に係る処理を実行し、仮想マシンを内部に含む情報処理装置であって、前記記録媒体には、前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムが記録されており、前記情報処理装置は、前記記録媒体から前記検証プログラムを読み出す読出手段と、前記情報処理装置の所定のメモリアドレスに、検証のタイミングにおいて保持されている値の要求を前記検証プログラムから受け付ける受付手段と、前記要求を受け付けると、前記所定のメモリアドレスに保持されている値を読み出し、読み出した値を前記検証プログラムに返信する返信手段とを備えることとしてもよい。
【００２２】
また、記録媒体に記録されているコンテンツの再生に係る処理を実行し、仮想マシンを内部に含む情報処理装置に搭載される集積回路であって、前記記録媒体には、前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムが記録されており、前記集積回路は、前記記録媒体から前記検証プログラムを読み出す読出手段と、前記情報処理装置の所定のメモリアドレスに、検証のタイミングにおいて保持されている値の要求を前記検証プログラムから受け付ける受付手段と、前記要求を受け付けると、前記所定のメモリアドレスに保持されている値を読み出し、読み出した値を前記検証プログラムに返信する返信手段とを備えることとしてもよい。
【００２３】
また、コンテンツの再生に係る処理を実行し、仮想マシンを内部に含む情報処理装置の正当性を検証する検証プログラムを記録している記録媒体であって、前記検証プログラムは、前記情報処理装置の所定のメモリアドレスに保持されている値を、検証情報として取得する取得ステップと、前記取得ステップにより取得された前記検証情報に基づいて、前記情報処理装置が正当であるか否かを判断する判断ステップとを含むこととしてもよい。
【００２４】
また、記録媒体に記録されているコンテンツの再生に係る処理を実行し、仮想マシンを内部に含む情報処理装置の正当性を検証する処理を、前記情報処理装置に実行させる検証プログラムであって、前記情報処理装置の所定のメモリアドレスに保持されている値を、検証情報として取得する取得ステップと、前記取得ステップにより取得された前記検証情報に基づいて、前記情報処理装置が正当であるか否かを判断する判断ステップとを含むこととしてもよい。
【発明の効果】
【００２５】
以上、説明したように、本発明によれば、プログラムにより、自身を稼動させる仮想マシンが正規に実装されたものであることを検証できる情報処理方法を提供できるという効果を有する。
【発明を実施するための最良の形態】
【００２６】
以下、発明を実施するための最良の形態を、図面を参照しながら説明する。
（実施の形態１）
図１を使って、本発明の一実施形態に係る記録媒体、及び情報処理装置について説明する。
記録媒体１０２には、仮想マシン上で動作するプログラムである、仮想マシンコード１２１が記録されている。記録媒体１０２の一実装例としては、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）であるが、それに限るものではない。さらに、仮想マシンコード１２１は、仮想マシン検証モジュール１１２１、検証情報保持モジュール１１２２、コード依存処理モジュール１１２３から構成される。各モジュールの詳細は後述する。
【００２７】
情報処理装置１０１は、仮想マシンを使って、仮想マシンコード１２１を実行する装置であり、図１に示すように、ディスク読込部１１１、ユーザ操作受付部１１２、仮想マシン実行部１１３、情報保持部１１４、作業情報保持部１１８から構成される。仮想マシンとは、ＣＰＵやＯＳ等のプラットフォームに依存せずに、プログラムを動作させるために、仮想マシンコード１２１として実装されたプログラムを、プラットフォーム用のネイティブコードに変換して実行するソフトウェアである。具体的には、例えば仮想マシンはＪａｖａ（登録商標）仮想マシンであり、仮想マシンコード１２１はＪａｖａ（登録商標）バイトコードであるが、これに限るものではない。
【００２８】
情報処理装置１０１の一実装例としては、ＣＰＵ、ワークメモリ、フラッシュメモリ、ＢＤドライブ、リモートコントローラとから構成されるコンピュータシステムであり、ディスク読込部１１１はＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）ドライブであり、情報保持部１１４はフラッシュメモリであり、ユーザ操作受付部１１２はリモートコントローラであり、作業情報保持部１１８はワークメモリであり、仮想マシン実行部１１３は、ＣＰＵとワークメモリを用いて動作するソフトウェアで構成する方法が挙げられるが、他にも、ハードウェアでの実装など、ソフトウェアによる構成に限定されるものではない。その他の実装形態についても、これに限定されるものではない。
【００２９】
また、情報保持部１１４には、仮想マシン実行コード１１５と、仮想マシン識別情報１１７が保持されている。仮想マシン実行コード１１５は、ソフトウェアであり、検証値取得モジュール１１５１、仮想マシンコード実行モジュール１１５４から構成される。各モジュールの詳細は後述する。
仮想マシン識別情報１１７は、仮想マシンを識別するための情報であり、例えば、「情報処理装置メーカＩＤ＋情報処理装置のモデル番号＋仮想マシンのバージョン番号」などで構成される８バイトのデータであるが、仮想マシンを一意に特定できる情報であれば、これに限るものではない。
【００３０】
ここで、検証情報の作成について説明する。正規の仮想マシン実行コード１１５の提供者は、図４に示すような仮想マシン毎に固有の検証ルールテーブルと仮想マシン識別情報１１７を仮想マシン管理機関に提出する。なお、上記検証ルールテーブルは仮想マシンが搭載されている再生装置毎の検証ルールテーブル、識別情報であっても良い。仮想マシン管理機関は、仮想マシンコードの実装者に対し、正規の仮想マシンの検証ルールテーブルと仮想マシン識別情報１１７を提供する。仮想マシンコードの実装者は、これを基に検証情報を作成する。図４は仮想マシン毎（再生装置毎）に固有の検証ルールテーブルであり、例えば、検証に使用するアドレス４０１と、いつ検証するかを示す検証タイミング４０２と、その時にアドレス４０１がどのような値をとっているかを示す検証値４０３と、その値がどのような状態であれば検証が成功なのかを示す検証ルール４０４などで構成される。アドレス４０１は図４にあるように、特定のアドレスや、特定のアドレスの範囲を表す。検証ルールテーブルは図４のようなテーブル構成に限定されるものではない。
【００３１】
なお、本実施の形態では、記録媒体１０２として、ＢＤを想定し、そこに記録された仮想マシンコード１２１をディスク読込部１１１にて情報処理装置１０１に取り込んでいるが、それに限るものではなく、例えば、ディスク読込部１１１をインターネット接続部に置き換え、仮想マシンコード１２１をインターネット経由で情報処理装置１０１に取り込む等、他の方法で仮想マシンコード１２１を情報処理装置１０１に取り込んでもよい。
【００３２】
以上で、本発明の一実施形態に係る記録媒体、及び情報処理装置についての説明を終わる。
（仮想マシンコードの実行）
次に、図２を使って、情報処理装置１０１での仮想マシンコードの実行について説明する。
【００３３】
まず、情報処理装置１０１はユーザ操作受付部１１２を通じて、記録媒体１０２上の仮想マシンコード１２１を実行するよう指示を受けることで処理が開始される。
仮想マシンコード１２１の実行が指示されると、仮想マシン実行部１１３は、情報保持部１１４から、仮想マシン実行コード１１５をロードし、仮想マシンを起動する（Ｓ２０１）。
【００３４】
次に、ディスク読込部１１１を通じて記録媒体１０２から、仮想マシンコード１２１を読み出し、仮想マシン実行部１１３が仮想マシン上で仮想マシンコード１２１を起動する（Ｓ２０２）。
仮想マシン上で起動された仮想マシンコード１２１は、仮想マシン検証モジュール１１２１、及び検証情報保持モジュール１１２２を用いて、自身を実行している仮想マシンを含む実行環境の正当性の検証タイミング４０２かどうかチェックを行う（Ｓ２０３）。
【００３５】
そして、検証タイミング４０２だった場合、仮想マシンを含む実行環境の正当性の検証を行う（Ｓ２０４）。この処理の詳細については、後述する。
Ｓ２０４の検証結果を判定し（Ｓ２０５）、ＮＧの場合、ＮＧの回数が規定回数になったかどうか確認する（Ｓ２０８）。ここで、ＮＧが規定回数以上である場合、仮想マシンコード１２１は自身の実行を終了するように実装されているため、その実行を終了する。
【００３６】
Ｓ２０８でＮＧが規定回数に達していない場合は、Ｓ２０３からやり直す。規定回数は１回でもよいし、複数回でもよく、複数にすれば検証の精度を向上させる効果が得られる。
Ｓ２０５で検証結果がＯＫの場合、仮想マシンコード１２１中のコード依存処理モジュール１１２３で定義されたコード依存処理を実行する（Ｓ２０６）。コード依存処理モジュール１１２３には、仮想マシンコード１２１毎に異なる処理が定義されており、例えば、記録媒体１０２に別途記録された映画等のコンテンツ１２２の著作権保護処理として、コンテンツ１２２の復号処理を行うが、これに限るものではない。
【００３７】
コード依存処理が終了した時点で、仮想マシンコード１２１の実行を終了する（Ｓ２０７）。
以上で、情報処理装置１０１での仮想マシンコード１２１の実行についての説明を終わる。
（仮想マシンを含む実行環境の正当性検証）
仮想マシンを含む実行環境の正当性検証処理の詳細について説明する。この処理は、仮想マシンコード１２１によって、自身を実行する仮想マシンを含む実行環境が正規のものかどうかを検証する処理である。
【００３８】
仮想マシン実行コード１１５は、インタフェースや処理内容等の実装に必要な情報が公開されているため、誰でも実装することができる。このため、正規の仮想マシン実行コード１１５でなければ、仮想マシンコード１２１の実行時に不正な動作を行い、仮想マシンコード１２１の処理が正しく行われなくなる可能性がある。仮想マシンコード１２１が、例えば、記録媒体１０２に別途記録されている映画等のコンテンツ１２２の著作権を保護するプログラムである場合には、不正にコンテンツ１２２を再生され、著作権を保護できなくなるため、仮想マシンを含む実行環境の検証処理が必要になる。
【００３９】
仮想マシンコード１２１を構成するモジュールについて説明する。仮想マシン検証モジュール１１２１は、自身を実行する仮想マシンを含む実行環境が正規のものかどうかを検証するモジュールであり、検証情報保持モジュール１１２２は、仮想マシンを含む実行環境の正当性を検証するための情報である。具体的には、仮想マシンから仮想マシン識別情報１１７と検証する値を取得し、その値が検証情報保持モジュール１１２２で保持する検証ルールと合致するかどうかで、仮想マシンを含む実行環境の正当性を検証する。これにより、異なる再生装置にプレーヤモデル番号、メーカ名等を含むデータをコピーしたエミュレータを作成し、例えばコンピュータ上で仮想マシン及び該エミュレータを搭載したとしても、図４の仮想マシン毎の検証ルールテーブル４００に合致するようにエミュレータを作成するのは困難であり、検証ルールを満たさないものとなるため、かかる不当なエミュレータ上における再生を阻止することができる。検証処理の詳細については、後述する。
【００４０】
図５は検証情報保持モジュール１１２２が保持する検証ルールテーブル５００の一例である。検証情報保持モジュール１１２２が保持する検証ルールテーブル５００は、図４で提供された仮想マシン毎の検証ルールテーブル４００の一部または全部と、仮想マシン識別情報１１７の対応を示している。検証情報保持モジュール１１２２が保持する検証ルールテーブル５００で使用する検証ルールは、仮想マシンコード１２１作成者が検証ルールテーブル４００から自由に選択して利用することができ、仮想マシンコード１２１毎に独自の検証を行うことが可能となる。
【００４１】
次に、仮想マシン実行コード１１５を構成するモジュールについて説明する。
検証値取得モジュール１１５１は、仮想マシンコード１２１中の仮想マシン検証モジュール１１２１が指定したアドレスを、作業情報保持部１１８から検索し、そのアドレスに保持されている値を取得するモジュールである。
仮想マシンコード実行モジュール１１５４は、仮想マシンコード１２１中のコード依存処理モジュール１１２３で定義される処理をプラットフォームに依存するネイティブコードに変換しながら、実行するモジュールである。
【００４２】
続いて、図３を使って、仮想マシンを含む実行環境の正当性検証処理フローについて説明する。
最初に、図２のＳ２０２で仮想マシンコード１２１を起動すると、仮想マシン検証モジュール１１２１は、情報保持部１１４の仮想マシン識別情報１１７と検証情報保持モジュール１１２２が保持する検証ルールテーブル５００とを比較して、利用する検証タイミング４０２を検出しておく。例えば、仮想マシン識別情報１１７が０ｘ００１１ｆｆ０００００１１００１であったとして、以下の説明を行う。次にＳ２０３で、検出された検証タイミングになったときに、以下の検証処理を行う。
【００４３】
まず、仮想マシンコード１２１は、検証タイミング４０２に対応するアドレス４０１を指定して、仮想マシンに検証情報の要求を行う（Ｓ３０１）。例えば、メニュー１を表示した場合に、アドレス０ｘ００ｆｆ０００１を指定して、検証情報の要求を行う。
仮想マシンは、作業情報保持部１１８上の指定されたアドレス０ｘ００ｆｆ０００１に保持されている値を取得し（Ｓ３０２）、その値を検証情報として仮想マシンコード１２１に返信する（Ｓ３０３）。
【００４４】
仮想マシンコード１２１は、返信された検証情報を取得し（Ｓ３０４）、検証情報と検証値４０３を検証ルール４０４に基づいて検証し、その結果を図２のＳ２０５に渡す。今の例では、検証情報が０ｘｅｄと同値であれば検証結果はＯＫであり、それ以外であればＮＧである。
以上で、仮想マシンを含む実行環境の正当性検証処理の説明を終わる。
【００４５】
なお、正規の仮想マシンが指定されたアドレスの情報を取得することができれば、アドレス４０２は、物理／論理アドレス、実／仮想アドレスを問わない。また仮想マシンは指定されたアドレスをそのまま使用するのではなく、アドレスマップ情報をもとに作業情報保持部１１８に適したアドレスに変換してから、検証情報を取得するようにしてもよい。アドレスマップ情報は作業情報保持部１１８の該当領域を示すようにできればよく、静的なだけではなく動的に変化しても対応を管理するように構成すればよい。
【００４６】
また、本実施の形態では、検証値のデータ長として、１バイトのデータ長を用いているが、これに限るものではない。
また、作業情報保持部１１８は全ての領域を、検証値取得モジュール１１５１で参照できるようにする必要はなく、一部の領域は参照を不可能にするように実装することができ、仮想マシンを含む実装環境の不正な解析に対する耐性を向上させることが可能となる。
【００４７】
（検証ルールの例）
本実施の形態では、作業情報保持部１１８上の値を取得して、それを検証情報としていたが、検証情報として用いる値や、検証ルールについて以下に説明する。ただし、これらに限ったものではなく、作業情報保持部１１８上に展開される値であればいかなる値も検証情報の候補である。
【００４８】
（１）コンテンツに関する情報
例えば図５の検証情報保持モジュール１１２２が保持する検証ルールテーブル５００では、初期動画再生時にアドレス０ｘ００１１００４４〜０ｘ００１１００ｆｆのデータの中にコンテンツ１２２のインデックスファイルのタイムスタンプと同じ値が入っていれば検証ＯＫとなる。このように正規の仮想マシンを含む実行環境ではコンテンツに関連する情報をあるタイミングで作業情報保持部１１８上の特定の領域に格納するようにすることで、実際に仮想マシンコード１２１実行時に、その特定の領域に規定の情報が存在するかどうかを検証することで、正当性の評価を行うようにできる。なお、アドレスは範囲指定ではなく、１つのアドレスでもよい。アドレス、検証タイミングとも仮想マシンを含む実行環境に依存する。
【００４９】
上記以外にコンテンツに関連する情報としては、インデックスファイルやナビゲーションファイル、その他記録媒体１０２に格納されているファイルのファイルサイズやタイムスタンプが利用できる。また、記録媒体１０２に格納されているプレイリストやプレイアイテムの数、コンテンツハッシュテーブルの一部または全部の値、あるボタンをクリックした際の音情報の一部または全部のデータ、インデックステーブルのハッシュ値の一部または全部、などコンテンツに関連する情報であればいかなる情報も利用可能である。
【００５０】
（２）仮想マシンを含む実行環境に依存する情報
例えば図６のように情報処理装置１０１にさらに乱数生成部６０１を追加し、仮想マシンコード１２１の指示で乱数生成部６０１を動作させるように実装する。そして、図５の検証情報保持モジュール１１２２が保持する検証ルールテーブル５００のように、ディスク挿入時に仮想マシンを含む実行環境に乱数を生成させ、アドレス０ｘ００ａａ００１０に格納させ、仮想マシンコード１２１はその値を保持する。その後、再生開始時やユーザ操作時に同一アドレスに、再度乱数を生成・格納させ、仮想マシンコード１２１は新たに生成した乱数を取得して、先に保持していた乱数と比較して値が変更されていれば検証ＯＫとする。不正な仮想マシンが、乱数生成機能がない場合や、どこに乱数を書き込むのかを分かっていない場合には、検証ＯＫにはならない。なお、乱数のシードにはアドレスや仮想マシン識別情報１１７など仮想マシンを含む実行環境毎に異なる値にすれば、同じ乱数を生成する可能性が低くなる。
【００５１】
また、仮想マシンは実装状態によって使用するメモリなどのリソースが異なる。ここで例えば、仮想マシンコード１２１実行中の作業情報保持部１１８の空き領域が特定の値の範囲に収まっていれば検証ＯＫとすることもできる。この場合不正な仮想マシンが動作する環境でにおいて、使用しているメモリサイズが違えば、検証ＯＫにはならない。
上記以外に仮想マシンを含む実行環境に依存する情報としては、ハッシュ計算値（例えば、仮想マシンコードの直前の戻り値を使用するなど）、コンテンツに関する情報だが情報処理装置１０１毎に表示する内容が違う情報（例えば、メニューのボタンの数、再生できる音声や映像の違いなど）、などの情報が利用できる。
【００５２】
このように仮想マシンを含む実行環境に固有の機能や実装状態、その他の情報に依存するあらゆる値を検証に利用することが可能である。
（３）時間やタイミングに依存する情報
例えば図７のように情報処理装置１０１にさらに計時部７０１を追加する。計時部７０１は現在時刻を計時し、作業情報保持部１１８の特定の領域に書き込むように実装する。そして、図５の検証情報保持モジュール１１２２が保持する検証テーブルルール５００のように、仮想マシンコード１２１は、ディスク挿入時に０ｘ００ｅｅｅ００２から現在時刻を取得して、保持し、次にクリップファイル切り替わり時に同一アドレスから現在時刻を取得して、前回保持した時刻と比較し、増加していれば検証ＯＫとする。この場合、単に値が変更されているだけではなく、必ず増加しているという検証ルールが設定されているため、この実装を知っていないと、不正な実行環境を作成することはできない。
【００５３】
また、あるタイトルを再生中には早送り禁止になっている場合があり、そのタイトルを再生しているタイミングでは、作業情報保持部１１８の特定の領域に早送り禁止の情報を保持する。この場合、該当のタイトル再生時に、その特定の領域にある現在の状態をチェックして、早送り禁止を示す情報であれば検証ＯＫとする。
上記以外に時間やタイミングに依存する情報としては、情報処理装置１０１に関するシステムパラメータや動作パラメータなど、また、現在再生しているチャプタ番号、現在再生しているストリームに含まれる時間情報（例えば、ＡＴＳ、ＰＴＳ、ＰＣＲなど）、などの情報が利用できる。
【００５４】
このように時間やタイミングで変化する情報であれば、いかなる情報も検証に利用することが可能である。ただし、時間やタイミングで変化するデータであっても、コンテンツ情報自身（暗号状態、復号状態、デコードの前後を問わない）等のように、非常に転送レートが高い情報を対象とすると、所定タイミングのあるアドレスに基づくメモリ内の情報は正当な機器においても正確に予測する事は困難であるため、プレーヤの製造者自身が実質的に予測できる情報を用いることが望ましい。特に、時間やタイミングで変化するデータであって複数回メモリの確認を行いその変化値を確認するルール等の場合には、設定タイミングと確認タイミングをより厳密に同じタイミングで情報を確認することが必要であるが、正確なタイミングで検証ということは現実は難しいため、あまり転送レートが高い情報を用いないか、又は、検証ルール４０４において正当な機器と判断される検証ルール４０４を緩くする事が望ましい。
【００５５】
検証情報保持モジュール１１２２が保持する検証ルールテーブル５００は上記で説明した情報をどのように組み合わせてもよく、仮想マシンを含む実行環境ごとに固有の検証ルールテーブル５００が作成できる。
（実施の形態２）
図８は本発明の実施の形態２における記憶媒体と情報処理装置のシステムモデルを示す図である。
【００５６】
図８に示すように記憶媒体８０２には、再生順序やユーザ操作時の挙動を規定しているコマンドプログラム８１１と、クリップファイルの属性やタイムサーチマップ、プレイリスト、プレイアイテムなどを記述しているクリップファイル関連情報８１２、映像や音声などのコンテンツを含むクリップファイル８１３、仮想マシンを含む実行環境の正当性を検証するための検証用コード８１４、コンテンツの復元処理を行う際に使用する秘密情報用コード８１５、復元処理を行う際に秘密情報と組み合わせて実際の復元情報を生成するための復元情報ファイル８１６が含まれる。
【００５７】
情報処理装置８０１には、コマンドプログラム８１１を処理するコマンド処理部８２２と、ユーザ入力を受け付けてユーザ操作制御部８２３に送り、また、コンテンツ中の再生タイトルの管理を行うモジュール管理部８２４と、ユーザ操作に対応する機能を再生制御部８２７から呼び出して制御するユーザ操作制御部８２３と、装置状態や処理中の変数を保持するレジスタ８２６と、クリップファイル関連情報８１２のプレイリストやプレイアイテムの処理、また、コマンド処理部８２２やユーザ操作制御部８２３からの機能の呼び出しの処理を行い、プレゼンテーション処理部８３１を制御する再生制御部８２７と、検証用コード８１４を実行して、仮想マシンを含む実行環境の正当性を検証する検証処理部８２９と、コンテンツの復元処理に使用する秘密情報を秘密情報用コード８１５から算出する秘密情報計算部８３０と、コンテンツの再生や表示を制御するプレゼンテーション処理部８３１と、復元情報ファイル８１６と秘密情報をもとに復元情報を生成し、コンテンツの復元をプレゼンテーションエンジンに通知する復元処理部８３２とを含む。コマンド処理部８２２とユーザ操作制御部８２３を含めて動作モジュール８２１と呼び、レジスタ８２６と再生制御部８２７を含めて再生制御処理部８２５と呼び、また検証処理部８２９と秘密情報計算部８３０を含めて仮想マシン８２８と呼ぶこととする。上記構成は一例であり、情報処理装置８０１の具体例としてはＢＤドライブを含む処理装置であり、ハードウェアでの実装やソフトウェアによる構成に限定されるものではない。以下、図８、図９および図１０の処理フローを用いてその動作を説明する。
【００５８】
図９は情報処理装置１０１での検証処理とコンテンツの復元処理の動作を示す図である。
まず、検証処理部８２９は仮想マシン８２８が保持している仮想マシン識別情報９０３を取得し（Ｓ１００１）、検証用コード８１４のうち、仮想マシン識別情報９０３に対応する一部または全部のコードを読み込んで割り込み管理情報９０４を取得し、保持する（Ｓ１００２）。割り込み管理情報９０４は例えばタイトル毎などの再生箇所に応じて、検証用コード８１４の実行開始場所（ＰＣ：プログラムカウンター）を決定するための情報であり、実行開始場所と再生箇所の組み合わせが記述されている。なお、仮想マシン識別情報９０３は仮想マシンを識別するための情報であり、例えば、「情報処理装置メーカＩＤ＋情報処理装置のモデル番号＋仮想マシンのバージョン番号」などで構成されるデータであるが、仮想マシンを一意に特定できる情報であれば、これに限るものではない。また、仮想マシン識別情報９０３に署名を付与してその正当性をチェックするようにしてもよい。
【００５９】
次に、モジュール管理部８２４は、今から再生するタイトル番号を含めて、検証処理部８２９に検証処理の開始を指示する（Ｓ１００３）。
検証処理部８２９は、指示に含まれるタイトル番号をもとに、割り込み管理情報９０４から該当のＰＣを取得し、検証用コード８１４を取得したＰＣから実行する（Ｓ１００４）。
【００６０】
次に、実行された検証用コード８１４は、検証する際に参照するメモリ領域を含む検証情報メモリ９０２を参照して、仮想マシンを含む実行環境の検証を行う（Ｓ１００５）。なお、検証方法の詳細については実施の形態１で示した検証方法を利用することが可能であるため、ここでの詳細な説明は割愛する。
検証結果がＯＫであれば、そのまま処理を続行する（Ｓ１００６）。ＮＧの場合には、規定回数に達していなければそのまま処理を続行するが、ＮＧの規定回数に達していれば（Ｓ１００７）、コンテンツや秘密情報用コード８１５の一部または全部、またはその他の処理データを保持するメモリ９０１上の特定箇所のデータを書き換えることにより（Ｓ１００８）、情報処理装置１０１が正常に動作しないようにできる。具体的には、再生中に秘密情報計算部８３０が復元処理に必要な秘密情報用コード８１５もしくは秘密情報をメモリ９０１上に保持しているので、その一部または全部を書き換えることにより、復元処理を正常に動作できないようにして、正常な再生をできないようにするという効果が得られる。復元処理については後述する。また、再生中のタイトルの一部もメモリ９０１上に保持するようにできるので、ＮＧの場合にメモリ９０１上のタイトルの一部または全部を書き換えることで、不正な仮想マシンを含む実行環境では正常に再生できなくするという効果が得られる。なお、書き換える情報は上記に限らず、上記以外の情報を書き換えても同様の効果が得られる。
【００６１】
なお、検証結果がＮＧの場合にメモリ９０１上の情報を書き換えるとしたが、これに限らず、モジュール管理部８２４にＮＧを通知し、モジュール管理部８２４からの指示で、再生を停止するようにしてもよい。また秘密情報計算部８３０にＮＧを通知して秘密情報の算出を停止するようにしてもよく、これに限らず、正常に再生できないようにできれば、その他の構成要素にＮＧを通知してもよい。
【００６２】
またＳ１００３の検証処理開始指示は再生タイトルが切り替わる度に発生するものであり、ユーザ操作などによりタイトルが変更になった場合など不定期に発生する。ただし、早送りやまき戻しなどの特殊再生時には、１つの検証処理が終了する前に検証情報メモリ９０２の内容が変更される恐れがあるため、検証処理開始指示を行わないようにしてもよい。また、現在検証処理を実行している（Ｓ１００５〜Ｓ１００７を繰り返している）最中に、別のタイトル番号を含む検証処理開始指示があった場合には、現在の検証処理を終了して、新たなタイトル番号に対応する検証用コード８１４の実行を行う（Ｓ１００４からやり直す）。
【００６３】
また、Ｓ１００４の検証用コード８１４の実行は、Ｓ１００３の検証開始指示で受け取ったタイトル番号によっては実行しないようにできる。具体的には、検証用コード８１４生成側で、割り込み管理情報９０４に、検証用コード８１４の実行が必要ではないタイトル番号を含めないようにするか、特定のＰＣを設定して、そのＰＣの時には実行を行わないように規定するという方法がある。
【００６４】
また、検証情報メモリ９０２とメモリ９０１は物理的には同一のメモリ上で領域が異なるものとしてもよい。またそれぞれ、参照禁止や書換禁止領域を設定することも可能であり、誤動作防止や不正な解析に対する耐性が高まる効果が得られる。
（復元処理）
上記の復元処理とは以下のような方法がある。
【００６５】
図８、図９に示すように、まず、秘密情報計算部８３０は秘密情報用コード８１５を読み込み、秘密情報計算用割り込み管理情報９０５を取得し、保持する。秘密情報計算用割り込み管理情報９０５は、例えば、プレイアイテム番号ごとに、秘密情報用コード８１５の実行開始位置（秘密情報用ＰＣ：プログラムカウンター）を決定するための情報であり、プレイアイテム番号と秘密情報用ＰＣの対応が記述されている。
【００６６】
復元処理部８３２は復元情報ファイル８１６の一部または全部を読み込んで保持する。
再生制御部８２７は現在どのプレイアイテムのどの位置を再生しているかを管理しており、あるプレイアイテムを再生すると、例えば１０秒ごとにそのプレイアイテム番号と何番目の期間かを示す期間情報を秘密情報計算部８３０に通知する。なお、何番目の期間ではなく、何秒目かを通知しても良い。また、通知のタイミングは１０秒ではなく、毎秒や、プレイアイテム切り替わり毎など、定期的または不定期的に通知するようにしてもよい。また、その通知のタイミング情報は秘密情報用コード８１５に含めて、再生制御部８２７が秘密情報用コード８１５からタイミング情報を取得しても良い。
【００６７】
次に秘密情報計算部８３０は、通知されたプレイアイテム番号をもとに秘密情報計算用割り込み管理情報９０５から秘密情報用ＰＣを取得し、該当する箇所から秘密情報用コード８１５を実行する。
実行された秘密情報用コード８１５は期間情報をもとに、その期間に適切な秘密情報を算出して、復元処理部８３２に通知する。
【００６８】
復元処理部８３２は、復元情報ファイルから再生箇所に適した復元情報を取得し、秘密情報を使用してＸＯＲ（Ｅｘｃｌｕｓｉｖｅ  ＯＲ：排他的論理和演算）計算などで復号し、復号した復元情報をプレゼンテーション処理部８３１に通知する。
プレゼンテーション処理部８３１は、復元情報に含まれる復元位置のデータと、復元情報に含まれる復元データをＸＯＲ計算して上書きする。復元位置は、クリップファイルの先頭からのパケット数や、パケットに付与されている読み出し時間情報、再生時間情報など、復元する位置を一意に特定できる情報であれば良い。
【００６９】
以上により変形されたコンテンツを復元することが可能となり、正常に再生することができる。そこで、例えば上記の検証処理でＮＧだった場合には秘密情報計算部８３０が使用しているメモリ９０１上の領域の一部または全部を書き換えることで、正しい秘密情報を取得できないようにして、正常な再生をできないようにすることが可能となる。なお、書き換えるのは秘密情報用コード８１５や秘密情報の一部または全部など秘密情報の算出に必要なデータ領域であればよい。
【００７０】
なお、プレイアイテム番号を使用したが、タイトル番号、プレイリスト番号、プレイアイテム番号およびそれらの組み合わせなど現在再生している位置が一意に特定できれば、いかなる情報を使用することも可能である。
また、プレゼンテーション処理部８３１が復元位置のデータと復元データのＸＯＲ計算をして上書きするとしたが、復元処理部８３２が復元情報を通知せずに、メモリ９０１上に保持されているクリップファイルを直接参照して、ＸＯＲ計算および上書きを行うようにしてもよい。
【００７１】
なお、復元情報ファイル８１６が復元情報を含むとしたが、図１１に示すように、クリップファイル１１１３のストリーム内に復元情報を多重することも可能である。具体的には、復元情報をＰＭＴや独自パケットに格納して、映像や音声などのストリームに多重する。この場合、復元処理部１１３２は再生中のストリームから復元情報を含むパケットを取得し、復元情報を得ることができる。その他の構成は図８と同様である。
【００７２】
復元情報には、復元情報を含むパケットからの相対パケット数およびそのパケットの何バイト目のデータを復元するかを示す復元位置と、復元位置のデータとＸＯＲ計算するための復元データが含まれている。復元処理部１１３２は、秘密情報計算部８３０から通知された秘密情報を使用してＸＯＲ計算などで復元情報を復号し、復号した復元情報をもとに復元位置のデータと復元データをＸＯＲ計算して、その結果を復元位置に上書きすることで、変形されたコンテンツを復元することが可能となる。
【００７３】
このように復元情報をファイルではなく、クリップファイルのストリームに多重して復元処理を行うことも可能であるが、秘密情報計算部８３０は同様の処理を行えばよい。
なお、復元処理部１１３２は復号後の復元情報をプレゼンテーション処理部１１３１に通知してもよく、その場合、プレゼンテーション処理部１１３１が復元情報をもとに復元位置のデータと復元データをＸＯＲ計算して、復元位置のデータに上書きすれば復元処理が可能である。
【００７４】
また、復元処理や、復元情報の復号にＸＯＲを使用したが、これに限らずＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）やＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）など、どのような演算を使用しても良い。
なお、図１２は上記図８および図１１で示した検証処理と復元処理の構成を一般化した構成であり、仮想マシン１２２８および復元処理部１２３２以外の構成要素は、一般的なディスク再生のシステムモデルである。つまり、本願の検証処理と復元処理を実現する実装は、一般的なディスク再生のシステムモデルをほとんど変更する必要なく実装することが可能であるという特徴がある。
【００７５】
なお、本実施の形態では、検証処理部８３２が検証用コード８１４を直接読み込み、秘密情報計算部８３０が秘密情報用コード８１５を直接読み込むような記述をしたが、これに限らず、その他の構成要素を経由して取得しても良い。また、検証用コード８１４や秘密情報用コード８１５はコマンドプログラム８１１や、クリップファイル関連情報８１２など記憶媒体８０２上の他の情報に含まれるように記述してもよい。
【００７６】
また、復元情報や、割り込み情報などの各通知は図示していない一般演算用のレジスタ経由や、メモリ９０１経由などで通知することが可能であるが、この限りではない。
また、割り込み管理情報９０４は、検証用コード８１４から取得するとしたが、別ファイルとしたり、記憶媒体８０２上のその他の情報に記述しても良い。また、秘密情報計算用割り込み管理情報９０５も同様に、別ファイルとしたり、記憶媒体８０２上のその他の情報に記述しても良い。
【００７７】
（その他変形例）
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
（１）上記の情報処理装置は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記ＲＡＭまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、情報処理装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
【００７８】
（２）上記の情報処理装置を構成する構成要素の一部または全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムＬＳＩは、その機能を達成する。
【００７９】
また、この場合、ＬＳＩ製造者と情報処理装置製造者は異なる場合がある。このとき、ＬＳＩ製造者は、例えば乱数生成機能や計時機能など検証に使用できる機能を実装して提供することで、情報処理装置製造者は製造する装置に合った検証ルールや検証用アドレスを規定することができる。よってＬＳＩ製造者はＬＳＩごとに検証ルールを規定・管理するコストを削減でき、情報処理装置製造者は製造する装置のバージョンごとに自由に検証ルールを規定できるという効果が得られる。
【００８０】
（３）上記の情報処理装置を構成する構成要素の一部または全部は、情報処理装置に脱着可能なＩＣカードまたは単体のモジュールから構成されているとしてもよい。前記ＩＣカードまたは前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどから構成されるコンピュータシステムである。前記ＩＣカードまたは前記モジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ＩＣカードまたは前記モジュールは、その機能を達成する。このＩＣカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
【００８１】
（４）本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
【００８２】
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
【００８３】
また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
（５）上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
（６）本発明は、内部に含んだ仮想マシンによりコンテンツの再生に係る処理を実行する情報処理装置において用いられる検証方法であって、前記コンテンツと共に記録媒体に記録されている検証プログラムを読み出す読出ステップと、前記検証プログラムを前記仮想マシンが実行することにより、前記仮想マシンを含む前記情報処理装置の正当性を検証する検証ステップとを含むことを特徴とする。
【００８４】
ここで、「読出ステップ」は、（実施の形態１）において説明した図２のＳ２０２の処理と対応する。
また、「検証ステップ」は、（実施の形態１）において説明した図２のＳ２０４の処理と対応する。
（７）また、変形例（６）において、前記検証ステップは、前記検証プログラムが、前記情報処理装置の所定のメモリアドレスに保持されている値を、検証情報として取得する取得ステップと、前記取得ステップにより取得された前記検証情報に基づいて、前記情報処理装置が正当であるか否かを、前記検証プログラムが判断する判断ステップとを含むこととしてもよい。
【００８５】
ここで、「取得ステップ」は、（実施の形態１）において説明した図３のＳ３０１、Ｓ３０４の処理と対応する。
また、「判断ステップ」は、例えば、（実施の形態１）の、（仮想マシンを含む実行環境の正当性検証）の記載の、「仮想マシンコード１２１は、返信された検証情報を取得し（Ｓ３０４）、検証情報と検証値４０３を検証ルール４０４に基づいて検証し、その結果を図２のＳ２０５に渡す。今の例では、検証情報が０ｘｅｄと同値であれば検証結果はＯＫであり、それ以外であればＮＧである。」と記載されている処理と対応する。
【００８６】
（８）また、変形例（７）において、前記記録媒体は、さらに、前記仮想マシン上で実行され、前記コンテンツの再生に係る処理手順を含む再生関連プログラムを記録しており、前記検証方法は、さらに、検証の結果、前記情報処理装置が不正である場合、前記コンテンツの再生に係る処理手順の実行を抑制する抑制ステップを含むこととしてもよい。
ここで、「前記仮想マシン上で実行され、前記コンテンツの再生に係る処理手順を含む再生関連プログラム」とは、（実施の形態２）において図８を用いて説明した、コマンドプログラム８１１、クリップファイル関連情報８１２、クリップファイル８１３、検証用コード８１４、秘密情報用コード８１５、復元情報ファイル８１６と対応している。
【００８７】
また、「抑制ステップ」は、（実施の形態２）において説明した図１０のＳ１００６がＮＧの場合、およびＳ１００８の処理と対応する。
（９）また、変形例（８）において、前記コンテンツは、所定の復元処理によって復元できるよう変形されており、前記コンテンツの再生に係る処理手順は、変形されている前記コンテンツを、前記復元処理により復元する手順を含み、前記抑制ステップは、前記復元処理の実行を抑制することとしてもよい。
【００８８】
ここで、「所定の復元処理」および「変形されている前記コンテンツを、前記復元処理により復元する手順」とは、（実施の形態２）の（復元処理）にて説明した処理と対応する。例えば、秘密情報用コード８１５、復元処理部８３２、プレゼンテーション処理部８３１が行う処理と対応する。
また、「前記抑制ステップは、前記復元処理の実行を抑止する」とは、上述の（復元処理）における、「以上により変形されたコンテンツを復元することが可能となり、正常に再生することができる。そこで、例えば上記の検出処理でＮＧだった場合には秘密情報計算部８３０が使用しているメモリ９０１上の領域の一部または全部を書き換えることで、正しい秘密情報を取得できないようにして、正常な再生をできないようにすることが可能となる。」などと記載されている処理と対応する。
【００８９】
（１０）また、変形例（７）において、前記検証情報とは、タイミングによって変化する情報であることとしてもよい。
ここで、「タイミングによって変化する情報」とは、特に、（実施の形態１）の（検証ルールの例）の（３）時間やタイミングに依存する情報、における、「このように時間やタイミングで変化する情報であれば、いかなる情報も検証に利用することが可能である。」との記載と対応する。
【００９０】
（１１）また、変形例（７）において、前記検証情報とは、前記再生を行うコンテンツに関する情報であることとしてもよい。
ここで、「前記再生を行うコンテンツに関する情報」とは、特に、（実施の形態１）の（検証ルールの例）の（１）コンテンツに関する情報、にて説明した記載と対応する。
（１２）また、変形例（７）において、前記検証情報とは、前記仮想マシンを含む実行環境に依存する情報であることとしてもよい。
【００９１】
ここで、「前記仮想マシンを含む実行環境に依存する情報」とは、（実施の形態１）の（検証ルールの例）の（２）仮想マシンを含む実行環境に依存する情報、にて説明した記載と対応する。
（１３）また、変形例（７）において、前記記録媒体には、さらに、検証値と、検証ルールとが対応づけて記録されており、前記判断ステップは、前記取得ステップにより取得された前記検証情報と、前記記録媒体に記録された前記検証値とを、前記検証値に対応づけられている前記検証ルールに基づいて比較する比較ステップを含み、前記判断ステップは、前記比較の結果、前記検証ルールを満たす場合に、前記情報処理装置が正当であると判断することとしてもよい。
【００９２】
ここで、「検証値」とは、（実施の形態１）において図５を用いて説明した検証値４０３と対応する。
また、「検証ルール」とは、検証ルール４０４と対応する。
また、「比較ステップ」および「判断ステップ」は、（実施の形態１）において説明した、（仮想マシンを含む実行環境の正当性検証）の記載の、「仮想マシンコード１２１は、返信された検証情報を取得し（Ｓ３０４）、検証情報と検証値４０３を検証ルール４０４に基づいて検証し、その結果を図２のＳ２０５に渡す。今の例では、検証情報が０ｘｅｄと同値であれば検証結果はＯＫであり、それ以外であればＮＧである。」と記載されている処理と対応する。
【００９３】
（１４）また、変形例（１３）において、前記取得ステップは、検証のタイミングにおいて、前記所定のメモリアドレスに保持されている値を要求する要求ステップを含み、前記検証方法は、さらに、前記要求ステップによる前記要求に応じて、前記所定のメモリアドレスに保持されている値を読み出し、読み出した値を前記検証情報として前記検証プログラムに返信する返信ステップを含み、前記取得ステップの前記取得とは、前記要求に対して前記返信された前記検証情報を取得することであり、前記比較ステップは、前記返信により取得した前記検証情報を用いて前記比較を行うこととしてもよい。
【００９４】
ここで、「要求ステップ」は、（実施の形態１）において説明した図３のＳ３０１と対応する。
また、「返信ステップ」は、（実施の形態１）において説明した図３のＳ３０３と対応する。
（１５）また、変形例（１３）において、前記記録媒体には、さらに、複数の前記検証値が、検証のタイミングと対応づけて記録されており、前記比較ステップは、前記検証のタイミングにおいて前記取得した検証情報と、前記検証のタイミングに対応づけられている前記検証値および前記検証ルールを用いて前記比較を行い、前記判断ステップは、前記検証のタイミングになる度に、前記比較ステップを繰り返し実行させる繰り返しステップと、前記繰り返しの結果、前記検証情報と前記検証値とが所定回数以上前記検証ルールを満たさない場合に、前記情報処理装置が不正であると決定する決定ステップとを含むこととしてもよい。
【００９５】
ここで、「検証のタイミング」は、（実施の形態１）において説明した図５の検証タイミング４０２と対応する。
また、「繰り返しステップ」は、特に、（実施の形態１）において説明したＳ２０３、Ｓ２０４、Ｓ２０５、Ｓ２０７がＮＯ、Ｓ２０８がＮＯの場合の処理と対応する。
また、「決定ステップ」は、Ｓ２０８がＹＥＳの場合の処理と対応する。
【００９６】
（１６）また、変形例（１３）において、前記記録媒体には、複数の前記検証値の各々が、前記仮想マシンを一意に識別する識別情報と対応づけられて記録されており、前記比較ステップは、前記情報処理装置に含まれる仮想マシンの識別情報と対応する検証値を用いて前記比較を行うこととしてもよい。
ここで、「識別情報」は、（実施の形態１）において説明した図５の仮想マシン識別情報１１７と対応している。
【００９７】
（１７）また、変形例（７）において、前記記録媒体には、さらに、検証のタイミングと検証ルールとが対応づけられて記録されており、前記情報処理装置は、さらに、所定のタイミングにおいて前記所定のメモリアドレスに保持されている値を比較用情報として格納している格納手段を備え、前記取得ステップは、前記検証のタイミングにおいて前記所定のメモリアドレスに保持されている値を、前記検証情報として前記取得し、前記判断ステップは、前記検証のタイミングにおいて取得した前記検証情報と、前記格納手段に格納されている比較用情報とを前記検証ルールに基づいて比較する比較ステップを含み、前記判断ステップは、前記比較の結果に基づいて、前記情報処理装置が正当であるか否かの前記判断を行うこととしてもよい。
【００９８】
（１８）また、変形例（１７）において、前記取得ステップは、前記検証のタイミングにおいて、前記所定のメモリアドレスに保持されている値を要求する要求ステップを含み、前記検証方法は、さらに、前記要求ステップによる前記要求に応じて、前記所定のメモリアドレスに保持されている値を読み出し、読み出した値を前記検証情報として前記検証プログラムに返信する返信ステップを含み、前記取得ステップの前記取得とは、前記要求に対して前記返信された前記検証情報を取得することであり、前記比較ステップは、前記返信により取得した前記検証情報を用いて前記比較を行うこととしてもよい。
【００９９】
ここで、「格納手段」は、例えば、（実施の形態１）の（検証ルールの例）の（２）仮想マシンを含む実行環境に依存する情報、における、「そして、図５の検証情報保持モジュール１１２２が保持する検証ルールテーブル５００のように、ディスク挿入時に仮想マシンを含む実行環境に乱数を生成させ、アドレス０ｘ００ａａ００１０に格納させ、」との記載に対応する。
【０１００】
また、「取得ステップ」「比較ステップ」「判断ステップ」は、（実施の形態１）の（検証ルールの例）の（２）仮想マシンを含む実行環境に依存する情報、における、「その後、再生開始時やユーザ操作時に同一アドレスに、再度乱数を生成・格納させ、仮想マシンコード１２１は新たに生成した乱数を取得して、先に保持していた乱数と比較して値が変更されていれば検証ＯＫとする。」との記載に基づく。
【０１０１】
また、「要求ステップ」は、（実施の形態１）において説明した図３のＳ３０１と対応する。
また、「返信ステップ」は、（実施の形態１）において説明した図３のＳ３０３と対応する。
（１９）また、変形例（１７）において、前記情報処理装置は、さらに、乱数を生成する乱数生成部を備え、前記検証方法は、さらに、前記検証のタイミングになるごとに、前記乱数生成部に乱数を生成させ、生成された乱数を、前記所定のアドレスに保持させる乱数保持ステップを含み、前記取得ステップは、前記検証のタイミングにおいて、前記乱数保持ステップにより前記保持された前記乱数を読み出すことで前記検証情報の前記取得を行い、前記判断ステップは、前記比較の結果、前記検証情報と、前記比較用情報とが異なる場合に、前記情報処理装置が正当であると判断することとしてもよい。
【０１０２】
ここで、「乱数生成部」は、（実施の形態１）において説明した図６の乱数生成部６０１と対応する。
また、「乱数保持ステップ」および「判断ステップ」は、（実施の形態１）の（検証ルールの例）の（２）仮想マシンを含む実行環境に依存する情報における、「そして、図５の検証情報保持モジュール１１２２が保持する検証ルールテーブル５００のように、ディスク挿入時に仮想マシンを含む実行環境に乱数を生成させ、アドレス０ｘ００ａａ００１０に格納させ、」「その後、再生開始時やユーザ操作時に同一アドレスに、再度乱数を生成・格納させ、仮想マシンコード１２１は新たに生成した乱数を取得して、先に保持していた乱数と比較して値が変更されていれば検証ＯＫとする。」との記載と対応する。
【０１０３】
（２０）また、変形例（１９）において、前記乱数生成部は、前記仮想マシンを含む実行環境に依存する情報に基づいて、前記生成を行うこととしてもよい。
ここで、「乱数生成部」は、（実施の形態１）の（検証ルールの例）の（２）仮想マシンを含む実行環境に依存する情報、における、「なお、乱数のシードにはアドレスや仮想マシン識別情報１１７など仮想マシンを含む実行環境毎に異なる値にすれば、同じ乱数を生成する可能性が低くなる。」などの記載に対応する。
【０１０４】
（２１）また、変形例（１７）において、前記情報処理装置は、さらに、時刻を計時して前記所定のメモリアドレスに書き込む計時部を備え、前記格納手段は、所定のタイミングにおいて前記所定のメモリアドレスに書き込まれている前記時刻を比較用情報として格納しており、前記取得ステップは、前記検証のタイミングにおいて、前記所定のメモリアドレスに書き込まれている前記時刻を読み出すことで前記検証情報の前記取得を行い、前記判断ステップは、前記比較の結果、前記検証情報に示される時刻が、前記比較用情報に示される時刻よりも増加している場合に、前記情報処理装置が正当であると判断することとしてもよい。
【０１０５】
ここで、「計時部」は、（実施の形態１）において説明した図７の計時部７０１と対応する。
また、「格納手段」「取得ステップ」「判断ステップ」は、（実施の形態１）の（検証ルールの例）の（３）時間やタイミングに依存する情報、における、「そして、図５の検証情報保持モジュール１１２２が保持する検証テーブルルール５００のように、仮想マシンコード１２１は、ディスク挿入時に０ｘ００ｅｅｅ００２から現在時刻を取得して、保持し、次にクリップファイル切り替わり時に同一アドレスから現在時刻を取得して、前回保持した時刻と比較し、増加していれば検証ＯＫとする。」などの記載に対応する。
【０１０６】
（２２）また、本発明は、記録媒体に記録されているコンテンツの再生に係る処理を実行し、仮想マシンを内部に含む情報処理装置であって、前記記録媒体には、前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムが記録されており、前記情報処理装置は、前記記録媒体から前記検証プログラムを読み出す読出手段と、前記情報処理装置の所定のメモリアドレスに、検証のタイミングにおいて保持されている値の要求を前記検証プログラムから受け付ける受付手段と、前記要求を受け付けると、前記所定のメモリアドレスに保持されている値を読み出し、読み出した値を前記検証プログラムに返信する返信手段とを備える情報処理装置でもある。
【０１０７】
また、本発明は、記録媒体に記録されているコンテンツの再生に係る処理を実行し、仮想マシンを内部に含む情報処理装置に搭載される集積回路であって、前記記録媒体には、前記仮想マシン上で実行されることにより、前記情報処理装置の正当性を検証する検証プログラムが記録されており、前記集積回路は、前記記録媒体から前記検証プログラムを読み出す読出手段と、前記情報処理装置の所定のメモリアドレスに、検証のタイミングにおいて保持されている値の要求を前記検証プログラムから受け付ける受付手段と、前記要求を受け付けると、前記所定のメモリアドレスに保持されている値を読み出し、読み出した値を前記検証プログラムに返信する返信手段とを備える集積回路でもある。
【０１０８】
ここで、「検証プログラム」は、図１に示す仮想マシン検証モジュール１１２１と対応する。
また、「読出手段」は、図１に示すディスク読込部１１１と対応する。
また、「受付手段」および「返信手段」は、仮想マシン実行部１１３が、仮想マシン実行コード１１５に含まれる命令コードを読み出し、解読し、実行することにより実現される。
【０１０９】
また、本発明は、コンテンツの再生に係る処理を実行し、仮想マシンを内部に含む情報処理装置の正当性を検証する検証プログラムを記録している記録媒体であって、前記検証プログラムは、前記情報処理装置の所定のメモリアドレスに保持されている値を、検証情報として取得する取得ステップと、前記取得ステップにより取得された前記検証情報に基づいて、前記情報処理装置が正当であるか否かを判断する判断ステップとを含む記録媒体でもある。
【０１１０】
また、本発明は、記録媒体に記録されているコンテンツの再生に係る処理を実行し、仮想マシンを内部に含む情報処理装置の正当性を検証する処理を、前記情報処理装置に実行させる検証プログラムであって、前記情報処理装置の所定のメモリアドレスに保持されている値を、検証情報として取得する取得ステップと、前記取得ステップにより取得された前記検証情報に基づいて、前記情報処理装置が正当であるか否かを判断する判断ステップとを含む検証プログラムでもある。
【０１１１】
ここで、「取得ステップ」は、（実施の形態１）において説明した図３のＳ３０１、Ｓ３０４の処理と対応する。
また、「判断ステップ」は、例えば、（実施の形態１）の、（仮想マシンを含む実行環境の正当性検証）の記載の、「仮想マシンコード１２１は、返信された検証情報を取得し（Ｓ３０４）、検証情報と検証値４０３を検証ルール４０４に基づいて検証し、その結果を図２のＳ２０５に渡す。今の例では、検証情報が０ｘｅｄと同値であれば検証結果はＯＫであり、それ以外であればＮＧである。」と記載されている処理と対応する。
【０１１２】
（２３）また、本発明は、以下のような構成であってもよい。
（２３−１）本発明は、仮想マシンを使って仮想マシンコードを実行する情報処理方法であって、仮想マシンコードが仮想マシンを含む実行環境の正当性を検証するステップと、検証の結果、前記仮想マシンを含む実行環境が不正であると判定した場合、前記仮想マシンコードの処理を停止するステップと、を含むことを特徴とする。
【０１１３】
（２３−２）上記の変形例（２３−１）の情報処理方法において、前記検証ステップはさらに、前記仮想マシンコードが、前記仮想マシンを含む実行環境が保持する情報の取得を要求するステップと、前記仮想マシンが、前記情報を前記仮想マシンコードに提供するステップと、前記仮想マシンコードが、前記情報と、前記仮想マシンコードが保持する検証情報を比較し、前記仮想マシンコードで規定したルールに基づいて正当性を検証するステップと、を含むこととしてもよい。
【０１１４】
（２３−３）また、上記の変形例（２３−２）において、前記情報は、前記仮想マシンを含む実行環境で処理するコンテンツに関する情報であることとしてもよい。
（２３−４）また、上記の変形例（２３−２）において、前記情報は、前記仮想マシンを含む実行環境に依存する情報であることとしてもよい。
（２３−５）また、上記の変形例（２３−２）において、前記情報は、前記仮想マシンを含む実行環境やコンテンツの状態により動的に変化する情報であることとしてもよい。
【０１１５】
（２３−６）また、本発明は、上記の変形例（２３−１）〜（２３−５）のいずれかに記載された情報処理方法に含まれるステップをコンピュータに実行させることを特徴とするプログラムでもある。
（２３−７）また、本発明は、上記の変形例（２３−１）〜（２３−５）のいずれかに記載された情報処理方法に含まれるステップをコンピュータに実行させることを特徴とするプログラムを記録したコンピュータ読み取り可能な記録媒体でもある。
【産業上の利用可能性】
【０１１６】
本発明にかかる情報処理方法は、仮想マシンを使い、プラットフォームに依存しないプログラムを実行する情報処理装置に利用可能であり、著作権保護用プログラムなど、仮想マシン上で動作するプログラムにセキュリティを要求される場合に有用である。
【図面の簡単な説明】
【０１１７】
【図１】実施の形態１における記録媒体及び情報処理装置の構成を示す図
【図２】実施の形態１における仮想マシンコード実行処理のフローを示す図
【図３】実施の形態１における仮想マシンを含む実行環境の正当性検証処理のフローを示す図
【図４】実施の形態１における検証ルールのデータ構造例
【図５】実施の形態１における仮想マシンコードが持つ検証ルールテーブル構造例
【図６】実施の形態１における記録媒体及び情報処理装置の構成のその他の例を示す図
【図７】実施の形態１における記録媒体及び情報処理装置の構成をその他の例を示す図
【図８】実施の形態２における記憶媒体および情報処理装置のシステムモデルを示す図
【図９】実施の形態２における検証処理と復元処理の動作を示す図
【図１０】実施の形態２における仮想マシンを含む実行環境の正当性検証処理のフローを示す図
【図１１】実施の形態２における記憶媒体および情報処理装置のシステムモデルのその他の例を示す図
【図１２】実施の形態２における記憶媒体および情報処理装置の一般化したシステムモデルを示す図
【符号の説明】
【０１１８】
１０１、８０１、１２０１  情報処理装置
１０２、８０２、１２０２  記録媒体
１１１  ディスク読込部
１１２  ユーザ操作受付部
１１３  仮想マシン実行部
１１４  情報保持部
１１５  仮想マシン実行コード
１１７  検証値テーブル識別情報
１１８  作業情報保持部
１２１  仮想マシンコード
１１５１  検証値取得モジュール
１１５４  仮想マシンコード実行モジュール
１１２１  仮想マシン検証モジュール
１１２２  検証情報モジュール
１１２３  コード依存処理モジュール
４００  仮想マシン毎の検証ルールテーブル
４０１  アドレス
４０２  検証タイミング
４０３  検証値
４０４  検証ルール
５００  検証情報保持モジュール１１２２が保持する検証ルールテーブル
８１３、１１１３、１２１３  クリップファイル
８１４  検証用コード
８１５  秘密情報用コード
８１６  復元情報ファイル
８２４、１２２４  モジュール管理部
８２７、１２２７  再生制御部
８２９、１２２９  検証処理部
８３０、１２３０  秘密情報計算部
８３１、１１３１、１２３１  プレゼンテーション処理部
８３２、１１３２、１２３２  復元処理部
９０１  メモリ
９０２  検証情報メモリ
９０３  仮想マシン識別情報
９０４  割り込み管理情報
９０５  秘密情報計算用割り込み管理情報
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2007007805.tif 000014
【図２】
2007007805.tif 000015
【図３】
2007007805.tif 000016
【図４】
2007007805.tif 000017
【図５】
2007007805.tif 000018
【図６】
2007007805.tif 000019
【図７】
2007007805.tif 000020
【図８】
2007007805.tif 000021
【図９】
2007007805.tif 000022
【図１０】
2007007805.tif 000023
【図１１】
2007007805.tif 000024
【図１２】
2007007805.tif 000025
【国際調査報告】
2007007805.tif 000026
2007007805.tif 000027
2007007805.tif 000028
2007007805.tif 000029