(57)【要約】【課題】照合処理を効率良く行うとともに、認証のために要するメモリ容量を低減する。【解決手段】認証装置がアクセス可能な記憶手段には、コンテンツデータと、当該コンテンツデータを構成する複数の部分データのそれぞれについての１次ダイジェスト値を含む第１ダイジェストテーブルと、当該第１ダイジェストテーブルの複数の部分データのそれぞれについての２次ダイジェスト値を含む第２ダイジェストテーブルと、当該第２ダイジェストテーブルから生成される電子署名とが記憶されている。第１読み出しステップにおいては、第２ダイジェストテーブルと電子署名とを記憶手段から認証装置のメモリに読み出す。第１認証ステップにおいては、メモリに読み出された電子署名と、メモリに読み出された第２ダイジェストテーブルとを用いてコンテンツデータの正当性を認証する。【選択図】図１
2008022074.tif 000002
【特許請求の範囲】
【請求項１】
コンテンツデータを認証する認証装置において用いられる方法であって、
前記認証装置がアクセス可能な記憶手段には、前記コンテンツデータと、当該コンテンツデータを構成する部分コンテンツデータに対応するダイジェスト値である１次ダイジェスト値を含む第１ダイジェストテーブルと、当該第１ダイジェストテーブルを構成する部分第１ダイジェストテーブルに対応するダイジェスト値である２次ダイジェスト値を含む第２ダイジェストテーブルと、当該第２ダイジェストテーブルに含まれる２次ダイジェスト値から生成される電子署名とが記憶されており、
前記第２ダイジェストテーブルと前記電子署名とを前記記憶手段から前記認証装置のメモリに読み出す第１読み出しステップと、
前記メモリに読み出された電子署名と、前記メモリに読み出された第２ダイジェストテーブルに含まれる２次ダイジェスト値とを用いて前記コンテンツデータの正当性を認証する第１認証ステップとを含む、認証方法。
【請求項２】
前記２次ダイジェスト値は、複数の１次ダイジェスト値のグループ毎に算出され、
前記部分コンテンツデータのうちから読み出すべき部分コンテンツデータを指定する指定ステップと、
前記指定された部分コンテンツデータに対応する１次ダイジェスト値を含むグループから、当該グループに対応する２次ダイジェスト値を算出する第１算出ステップと、
前記第１算出ステップにおいて算出された２次ダイジェスト値と、前記指定された部分コンテンツデータに対応する１次ダイジェスト値を含むグループに対応する２次ダイジェスト値とを照合することによって前記コンテンツデータの正当性を認証する第２認証ステップと、
前記第２認証ステップにおける認証が成功した場合、前記指定された部分コンテンツデータから当該部分コンテンツデータの１次ダイジェスト値を算出する第２算出ステップと、
前記第２算出ステップにおいて算出された１次ダイジェスト値と、前記指定された部分コンテンツデータに対応する１次ダイジェスト値とを照合することによって前記コンテンツデータの正当性を認証する第３認証ステップとをさらに含む、請求項１に記載の認証方法。
【請求項３】
前記第１認証ステップは、前記認証装置と前記記憶手段とがアクセス可能となった後、前記第２認証ステップが実行される前に実行される、請求項２に記載の認証方法。
【請求項４】
前記部分コンテンツデータから１次ダイジェスト値を算出するためのハッシュ関数と、前記部分第１ダイジェストテーブルから２次ダイジェスト値を算出するためのハッシュ関数とは同一であることを特徴とする、請求項２に記載の認証方法。
【請求項５】
前記電子署名は、第２ダイジェストテーブルに含まれる複数の２次ダイジェスト値に対応するダイジェスト値に基づいて生成され、当該ダイジェスト値を算出するためのハッシュ関数は、前記部分コンテンツデータから１次ダイジェスト値を算出するためのハッシュ関数よりもセキュリティレベルが高いことを特徴とする、請求項４に記載の認証方法。
【請求項６】
前記部分第１ダイジェストテーブルから２次ダイジェスト値を算出するためのハッシュ関数は、前記部分コンテンツデータから１次ダイジェスト値を算出するためのハッシュ関数よりも、ダイジェスト値を算出するための処理量が少ないことを特徴とする、請求項２に記載の認証方法。
【請求項７】
前記第１認証ステップにおいて用いられるハッシュ関数は、前記部分第１ダイジェストテーブルから２次ダイジェスト値を算出するためのハッシュ関数、および、前記部分コンテンツデータから１次ダイジェスト値を算出するためのハッシュ関数よりもセキュリティレベルが高いことを特徴とする、請求項１に記載の認証方法。
【請求項８】
コンテンツデータを認証する認証装置であって、
前記認証装置がアクセス可能な記憶手段には、前記コンテンツデータと、当該コンテンツデータを構成する部分コンテンツデータに対応するダイジェスト値である１次ダイジェスト値を含む第１ダイジェストテーブルと、当該第１ダイジェストテーブルを構成する部分第１ダイジェストテーブルに対応するダイジェスト値である２次ダイジェスト値を含む第２ダイジェストテーブルと、当該第２ダイジェストテーブルに含まれる２次ダイジェスト値から生成される電子署名とが記憶されており、
前記第２ダイジェストテーブルと前記電子署名とを前記記憶手段から前記認証装置のメモリに読み出す読み出し手段と、
前記メモリに読み出された電子署名と、前記メモリに読み出された第２ダイジェストテーブルに含まれる２次ダイジェスト値とを用いて前記コンテンツデータの正当性を認証する認証手段とを備える、認証装置。
【請求項９】
コンテンツデータを認証する認証装置のコンピュータにおいて実行される認証処理プログラムであって、
前記認証装置がアクセス可能な記憶手段には、前記コンテンツデータと、当該コンテンツデータを構成する部分コンテンツデータに対応する１次ダイジェスト値を含む第１ダイジェストテーブルと、当該第１ダイジェストテーブルを構成する部分第１ダイジェストテーブルに対応するダイジェスト値である２次ダイジェスト値を含む第２ダイジェストテーブルと、当該第２ダイジェストテーブルに含まれる２次ダイジェスト値から生成される電子署名とが記憶されており、
前記第２ダイジェストテーブルと前記電子署名とを前記記憶手段から前記認証装置のメモリに読み出す読み出しステップと、
前記メモリに読み出された電子署名と、前記メモリに読み出された第２ダイジェストテーブルに含まれる２次ダイジェスト値とを用いて前記コンテンツデータの正当性を認証する認証ステップとを前記コンピュータに実行させる認証処理プログラム。
【請求項１０】
記憶手段に記憶すべきデータを生成するデータ処理方法であって、
コンテンツデータを構成する部分コンテンツデータに対応するダイジェスト値である１次ダイジェスト値を算出する第１算出ステップと、
前記第１算出ステップにおいて算出された第１ダイジェスト値を含む第１ダイジェストテーブルを構成する部分第１ダイジェストテーブルに対応するダイジェスト値である第２ダイジェスト値を算出する第２算出ステップと、
前記第２算出ステップにおいて算出された第２ダイジェスト値を含む第２ダイジェストテーブルから電子署名を生成する電子署名生成ステップと、
前記コンテンツデータと、前記第１ダイジェストテーブルと、前記第２ダイジェストテーブルと、前記電子署名とを前記記憶手段に記憶すべきデータとして設定する設定ステップとを含む、データ処理方法。
【請求項１１】
コンテンツデータと、
前記コンテンツデータを構成する部分コンテンツに対応するダイジェスト値である第１ダイジェスト値を含む第１ダイジェストテーブルと、
前記第１ダイジェストテーブルを構成する部分第１ダイジェストテーブルに対応するダイジェスト値である第２ダイジェスト値を含む第２ダイジェストテーブルと、
前記第２ダイジェストテーブルから生成される電子署名とを含む、データ構造。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ認証方法に関し、より特定的には、正当な提供元から提供されたデータであることを認証するためのデータ認証方法に関する。
【背景技術】
【０００２】
特許文献１には、情報記憶媒体に記憶されているプログラムデータの正当性を認証する技術が記載されている。この技術において、情報記憶媒体は、コンテンツデータと、コンテンツハッシュテーブルとを記憶している。コンテンツハッシュテーブルは、コンテンツデータを細分化したデータ（細分化されたコンテンツデータ）のそれぞれに対応するハッシュ値（ダイジェスト値）を含むデータである。コンテンツデータを読み込む情報処理装置は、細分化されたコンテンツデータおよびダイジェスト値を読み込み、細分化されたコンテンツデータから算出したハッシュ値と、読み込んだハッシュ値とを照合する。これによって、情報処理装置は、ハッシュ値の算出処理および照合処理を、細分化されたコンテンツデータ毎に実行することができる。したがって、情報処理装置は、コンテンツデータの一部を読み出す際、実際に読み出す部分についてのみ照合処理を行えばよいので、コンテンツデータの正当性に関する認証を効率的に行うことができる。
【０００３】
なお、上記情報記憶媒体には、コンテンツハッシュテーブルから算出されるコンテンツハッシュ値に電子署名を施して暗号化したコンテンツ証明書が記憶される。このコンテンツ証明書を用いて照合処理を行うことによって、上記コンテンツデータおよびそれに対応するハッシュ値が改ざんされた場合でも、コンテンツデータの正当性を正確に認証することができる。具体的には、コンテンツ証明書を複合化して得られるコンテンツハッシュ値と、情報記憶媒体から読み込まれるコンテンツハッシュテーブルから得られるコンテンツハッシュ値とを照合することによって、コンテンツデータの正当性を認証することが可能である。
【特許文献１】特開２００６−７４４２１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記特許文献１では、情報処理装置がコンテンツ証明書を用いて情報記憶媒体内のデータの正当性を認証する場合、情報処理装置は、コンテンツハッシュテーブルからコンテンツハッシュ値を算出する処理を行う。そのため、情報処理装置は、コンテンツハッシュテーブル全体をメモリに読み出す必要がある。つまり、コンテンツハッシュテーブルのデータサイズが大きくなれば、情報処理装置において用意すべきメモリ容量も大きくなってしまう。したがって、情報処理装置が携帯機器等である場合のように十分な容量のメモリを搭載することが難しい場合には、認証のために要するメモリ容量が不足する可能性がある。なお、コンテンツハッシュテーブルのデータサイズを小さくするために、コンテンツデータを細分化するデータ単位を大きくすることによってハッシュ値の数を減らす方法が考えられる。しかし、この方法では、コンテンツデータの一部を読み出す際に行う照合処理の効率が悪くなってしまう。
【０００５】
それ故、本発明の目的は、照合処理を効率良く行うとともに、認証のために要するメモリ容量を低減することができるデータ認証方法を提供することである。
【課題を解決するための手段】
【０００６】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、本欄における括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【０００７】
第１の発明は、コンテンツデータ（１）を認証する認証装置（ゲーム装置１０）において用いられる認証方法である。認証装置がアクセス可能な記憶手段（メモリカード１７）には、コンテンツデータと、第１ダイジェストテーブル（２）と、第２ダイジェストテーブル（３）と、電子署名（４）とが記憶されている。第１ダイジェストテーブルは、コンテンツデータを構成する部分コンテンツデータに対応するダイジェスト値である１次ダイジェスト値を含む。第２ダイジェストテーブルは、第１ダイジェストテーブルを構成する部分に対応するダイジェスト値である２次ダイジェスト値を含む。電子署名は、当該第２ダイジェストテーブルに含まれる２次ダイジェスト値から生成される。上記認証方法には、第１読み出しステップ（Ｓ１１）と、第１認証ステップ（Ｓ１２〜Ｓ１４）とが含まれる。第１読み出しステップにおいては、第２ダイジェストテーブルと電子署名とを記憶手段から認証装置のメモリ（ＲＡＭ２４）に読み出す。第１認証ステップにおいては、メモリに読み出された電子署名と、メモリに読み出された第２ダイジェストテーブルに含まれる２次ダイジェスト値とを用いてコンテンツデータの正当性を認証する。
【０００８】
なお、第１の発明において、コンテンツデータは、複数の部分コンテンツデータによって構成されるものである。１次ダイジェスト値は、各部分コンテンツデータ毎に算出される。第１ダイジェストテーブルは、全ての部分コンテンツデータに対応する１次ダイジェスト値を含んでいてもよい。また、電子署名を生成する際には、例えば、第２ダイジェストテーブルに含まれるデータ（例えば、第２ダイジェストテーブルに含まれる全データ）に対して所定の演算（ハッシュ関数を適用する演算等）が行われる。例えば、電子署名が、第２ダイジェストテーブルのデータに対して所定のハッシュ関数を適用することによって得られるダイジェスト値を所定の秘密鍵で暗号化したデータであってもよい。このとき、第１認証ステップでは、第２ダイジェストテーブルに含まれるデータに対して上記所定の演算を行うことによって生成されるデータと、上記秘密鍵に対応する公開鍵で電子署名を複合化したデータとが一致するか否かを判定してもよい。
【０００９】
第２の発明においては、２次ダイジェスト値は、複数の１次ダイジェスト値からなるグループ毎に算出されてもよい。このとき、認証方法には、指定ステップ（Ｓ２１）と、第１算出ステップ（Ｓ２４）と、第２認証ステップ（Ｓ２５）と、第２算出ステップ（Ｓ２７）と、第３認証ステップ（Ｓ２８）とがさらに含まれる。指定ステップにおいては、部分コンテンツデータのうちから読み出すべき部分コンテンツデータを指定する。第１算出ステップにおいては、指定された部分コンテンツデータに対応する１次ダイジェスト値を含むグループから、当該グループに対応する２次ダイジェスト値を算出する。第２認証ステップにおいては、第１算出ステップにおいて算出された２次ダイジェスト値と、指定された部分コンテンツデータに対応する１次ダイジェスト値を含むグループに対応する２次ダイジェスト値とを照合することによってコンテンツデータの正当性を認証する。第２算出ステップにおいては、第２認証ステップにおける認証が成功した場合、指定された部分データから当該部分データのダイジェスト値を算出する。第３認証ステップにおいては、第２算出ステップにおいて算出されたダイジェスト値と、指定された部分データに対応する１次ダイジェスト値とを照合することによってコンテンツデータの正当性を認証する。
【００１０】
なお、第２の発明において、指定ステップでは、認証装置は、コンテンツデータに含まれるデータのうち、（ランダムアクセス等の手法によって）読み出すべきデータが決定したことに応じて、当該読み出すべきデータが含まれる部分コンテンツデータを指定するようにしてもよい。
【００１１】
第３の発明においては、第１認証ステップは、認証装置と記憶手段とがアクセス可能となった後、第２認証ステップが実行される前に実行されてもよい。
【００１２】
第４の発明においては、部分コンテンツデータから１次ダイジェスト値を算出するためのハッシュ関数と、部分第１ダイジェストテーブルから２次ダイジェスト値を算出するためのハッシュ関数とは同一であってもよい。
【００１３】
第５の発明においては、電子署名は、第２ダイジェストテーブルに含まれる複数の２次ダイジェスト値に対応するダイジェスト値に基づいて生成されてもよい。このとき、当該ダイジェスト値を算出するためのハッシュ関数は、部分コンテンツデータから１次ダイジェスト値を算出するためのハッシュ関数よりもセキュリティレベルが高い。
【００１４】
なお、第５の発明において、ハッシュ関数のセキュリティレベルが高い場合には、以下の場合が含まれる。
（ａ）ハッシュ関数でハッシュ値を算出する過程における処理ビット数が相対的に多い。
（ｂ）ハッシュ関数で算出した結果であるハッシュ値のビット数が相対的に多い。
（ｃ）（暗号化付きでない関数と対比して）暗号化付きの関数である。
【００１５】
第６の発明においては、第１ダイジェストテーブルの部分データから２次ダイジェスト値を算出するためのハッシュ関数は、コンテンツデータの部分データから１次ダイジェスト値を算出するためのハッシュ関数よりも、ダイジェスト値を算出するための処理量が少なくてもよい。
【００１６】
なお、第６の発明において、ダイジェスト値を算出するための処理量が少ない場合には、以下の場合が含まれる。
（ａ）ハッシュ関数でハッシュ値を算出する過程における処理ビット数が相対的に少ない。
（ｂ）ハッシュ関数で算出した結果であるハッシュ値のビット数が相対的に少ない。
（ｃ）（暗号化付きの関数と対比して）暗号化付きでない関数である。
【００１７】
第７の発明においては、第１認証ステップにおいて用いられるハッシュ関数は、部分第１ダイジェストテーブルから２次ダイジェスト値を算出するためのハッシュ関数、および、部分コンテンツデータから１次ダイジェスト値を算出するためのハッシュ関数よりもセキュリティレベルが高くてもよい。
【００１８】
第８の発明は、コンテンツデータを認証する認証装置（ゲーム装置１０）である。認証装置がアクセス可能な記憶手段（メモリカード１７）には、コンテンツデータと、当該コンテンツデータを構成する部分コンテンツデータに対応するダイジェスト値である１次ダイジェスト値を含む第１ダイジェストテーブルと、当該第１ダイジェストテーブルを構成する部分第１ダイジェストテーブルに対応するダイジェスト値である２次ダイジェスト値を含む第２ダイジェストテーブルと、当該第２ダイジェストテーブルに含まれる２次ダイジェスト値から生成される電子署名とが記憶されている。認証装置は、読み出し手段（ステップＳ１１を実行するＣＰＵコア２１等。以下、この欄において同様の場合にはステップ番号のみを記載する。）と、認証手段（Ｓ１２〜Ｓ１４）とを備える。読み出し手段は、第２ダイジェストテーブルと電子署名とを記憶手段から認証装置のメモリ（ＲＡＭ２４）に読み出す。認証手段は、メモリに読み出された電子署名と、メモリに読み出された第２ダイジェストテーブルに含まれる２次ダイジェスト値とを用いてコンテンツデータの正当性を認証する。
【００１９】
第９の発明は、コンテンツデータを認証する認証装置（ゲーム装置１０）のコンピュータ（ＣＰＵコア２１等）において実行される認証処理プログラムである。認証装置がアクセス可能な記憶手段（メモリカード１７）には、コンテンツデータと、当該コンテンツデータを構成する部分コンテンツデータに対応するダイジェスト値である１次ダイジェスト値を含む第１ダイジェストテーブルと、当該第１ダイジェストテーブルを構成する部分第１ダイジェストテーブルに対応するダイジェスト値である２次ダイジェスト値を含む第２ダイジェストテーブルと、当該第２ダイジェストテーブルに含まれる２次ダイジェスト値から生成される電子署名とが記憶されている。認証処理プログラムは、読み出しステップ（Ｓ１１）と、認証ステップ（Ｓ１２〜Ｓ１４）とをコンピュータに実行させる。読み出しステップにおいては、コンピュータは、第２ダイジェストテーブルと電子署名とを記憶手段から認証装置のメモリに読み出す。認証ステップにおいては、コンピュータは、メモリに読み出された電子署名と、メモリに読み出された第２ダイジェストテーブルに含まれる２次ダイジェスト値とを用いてコンテンツデータの正当性を認証する。
【００２０】
第１０の発明は、記憶手段に記憶すべきデータを生成するデータ処理方法である。データ処理方法には、第１算出ステップ（Ｓ１）と、第２算出ステップ（Ｓ２）と、電子署名生成ステップ（Ｓ３）と、設定ステップ（Ｓ４）とが含まれる。第１算出ステップにおいては、コンテンツデータを構成する部分コンテンツデータに対応するダイジェスト値である１次ダイジェスト値を算出する。第２算出ステップにおいては、第１算出ステップにおいて算出された第１ダイジェスト値を含む第１ダイジェストテーブルを構成する部分第１ダイジェストテーブルに対応するダイジェスト値である第２ダイジェスト値を算出する。電子署名生成ステップにおいては、第２算出ステップにおいて算出された第２ダイジェスト値を含む第２ダイジェストテーブルから電子署名を生成する。設定ステップにおいては、コンテンツデータと、第１ダイジェストテーブルと、第２ダイジェストテーブルと、電子署名とを記憶手段に記憶すべきデータとして設定する。
【００２１】
第１１の発明は、データ構造に関する。データ構造には、コンテンツデータと、コンテンツデータを構成する部分コンテンツに対応するダイジェスト値である第１ダイジェスト値を含む第１ダイジェストテーブルと、第１ダイジェストテーブルを構成する部分第１ダイジェストテーブルに対応するダイジェスト値である第２ダイジェスト値を含む第２ダイジェストテーブルと、第２ダイジェストテーブルから生成される電子署名とが含まれる。
【発明の効果】
【００２２】
第１、第８から第１１の発明によれば、電子署名を用いた認証は、コンテンツデータのダイジェスト値を含む第１ダイジェストテーブルではなく、第１ダイジェストテーブルのダイジェスト値を含む第２ダイジェストテーブルを用いて行われる。つまり、電子署名を用いた認証処理において読み出すべきデータは、第１ダイジェストテーブルよりもデータサイズの小さい第２ダイジェストテーブルである。したがって、認証のために要するメモリ容量を従来に比べて低減することができる。また、第１０および第１１の発明によれば、上記発明において用いられるデータ構造を提供することができる。
【００２３】
第２の発明によれば、認証装置は、第２ダイジェストテーブルだけでなく、第１ダイジェストテーブルおよびコンテンツデータが改ざんされていないか否かを確認する。したがって、コンテンツの正当性をより正確に認証することができる。
【００２４】
第３の発明によれば、第１認証ステップにおいて第２ダイジェストテーブルの正当性が認証された後で、第２および第３認証ステップが実行される。第２および第３認証ステップは、第２ダイジェストテーブルが正当であることを前提とした認証処理であるので、第１認証ステップの後で第２および第３認証ステップを実行することによって、第２および第３認証ステップにおける認証を正確に行うことができる。
【００２５】
第４の発明によれば、１次ダイジェスト値を算出するためのハッシュ関数と、２次ダイジェスト値を算出するためのハッシュ関数とを同一とすることによって、後述する第６の発明に比べて、ハッシュ関数が破られた結果コンテンツデータが自由に改ざんされる可能性を低くすることができる。
【００２６】
第５および第７の発明によれば、電子署名に用いるハッシュ関数のセキュリティレベルを高くすることによって、ハッシュ関数が破られた結果コンテンツデータが自由に改ざんされる可能性を低くすることができる。
【００２７】
第６の発明によれば、上記第４の発明に比べて、第２認証ステップの処理量を軽減することができる。
【発明を実施するための最良の形態】
【００２８】
（１）本発明の概要
まず、図１を用いて本実施形態における認証方法の概要を説明する。図１は、本実施形態における認証方法の対象となるコンテンツデータを含むデータ構造を示す図である。図１に示すデータ構造には、コンテンツ１、第１ダイジェストテーブル２、第２ダイジェストテーブル３、および電子署名４が含まれる。図１に示す各データ１〜４は、記憶媒体に記憶された形態でコンテンツ１の利用者に提供されたり、サーバ側の記憶手段からインターネット等のネットワークを介して再生装置へ提供されたりする。
【００２９】
コンテンツ１は、例えばゲームプログラムや、映像および／または音声データや、テキストデータ等、利用者に提供されるべきデータである。後述する例では、コンテンツ１は、ゲームプログラムおよび当該ゲームプログラムによるゲーム処理において用いられるデータである。本実施形態では、コンテンツ１は所定のデータサイズ毎に分割され、分割された部分データ（ブロック）を単位としてデータの読み出し等が行われる。
【００３０】
第１ダイジェストテーブル２は、コンテンツ１を構成する複数の部分データのそれぞれについてのダイジェスト値（ハッシュ値）を含むデータである。本実施形態では、第１ダイジェストテーブル２に含まれるダイジェスト値を、第２ダイジェストテーブル３に含まれるダイジェスト値と区別する目的で、「１次ダイジェスト値」と呼ぶことがある。１次ダイジェスト値は、コンテンツ１のブロック毎に算出される。つまり、１次ダイジェスト値は、コンテンツ１の１ブロック分の部分データに対してハッシュ関数を適用することによって得られる。また、第１ダイジェストテーブル２に含まれる複数の１次ダイジェスト値は、複数のグループに区分される。図１においては、実線で囲まれる４つの１次ダイジェスト値が１つのグループを構成する。１つのグループに含まれる１次ダイジェスト値の個数は、複数であればいくつであってもよい。
【００３１】
第２ダイジェストテーブル３は、第１ダイジェストテーブル２を構成する複数の部分データのそれぞれについてのダイジェスト値を含むデータである。本実施形態では、第２ダイジェストテーブル３に含まれるダイジェスト値を、第１ダイジェストテーブル２に含まれるダイジェスト値と区別する目的で、「２次ダイジェスト値」と呼ぶことがある。２次ダイジェスト値は、第１ダイジェストテーブル２のグループ毎に算出される。つまり、２次ダイジェスト値は、１グループ分の１次ダイジェスト値のデータに対してハッシュ関数を適用することによって得られる。図１では、１次ダイジェスト値Ａ〜Ｄのデータからなるグループに対してハッシュ関数を適用することによって２次ダイジェスト値ａが得られ、１次ダイジェスト値Ｅ〜Ｈのデータからなるグループに対してハッシュ関数を適用することによって２次ダイジェスト値ｂが得られる。
【００３２】
電子署名４は、第２ダイジェストテーブル３から生成される電子署名のデータである。具体的には、電子署名４は、第２ダイジェストテーブル３に含まれる２次ダイジェスト値に対して所定のハッシュ関数を適用することによって得られるダイジェスト値を、公開鍵暗号化方式による暗号化によって暗号化したデータである。
【００３３】
次に、図１に示すデータ構造を採用した場合におけるコンテンツ認証方法の概要を説明する。なお、コンテンツ１の認証とは、コンテンツ１が正当な提供元から提供されたデータであること、すなわち、正当な提供元以外の者によってコンテンツ１が改ざんされていないことの認証である。コンテンツ１の認証処理は、第１認証処理〜第３認証処理という３段階の処理を含む。第１認証処理は、第２ダイジェストテーブル３と電子署名４とを用いて、第２ダイジェストテーブル３の正当性を認証する処理である。すなわち、第１認証処理においては、第２ダイジェストテーブルから算出されるダイジェスト値と、電子署名４を復号することによって得られるダイジェスト値とを照合することによる認証が行われる。第２認証処理は、第１ダイジェストテーブル２に含まれる１つのグループについて正当性を認証する処理である。すなわち、第２認証処理においては、第１ダイジェストテーブル２から算出されるダイジェスト値と、第２ダイジェストテーブル３に含まれる２次ダイジェスト値とを照合することによる認証が行われる。第３認証処理は、コンテンツ１に含まれる１つのブロックについて正当性を認証する処理である。第３認証処理においては、コンテンツ１の１つのブロックから算出されるダイジェスト値と、第１ダイジェストテーブル２に含まれる１次ダイジェスト値とを照合することによる認証が行われる。
【００３４】
上記の第１〜第３認証処理においては、第１ダイジェストテーブル２のデータ全体を一度にメモリに読み込む必要がない。上記第２認証処理では、第１ダイジェストテーブル２に含まれる１つのグループについてのみ認証を行うからである。したがって、本実施形態では、従来のように第１ダイジェストテーブル２のデータ全体を一度にメモリに読み込む場合に比べて、認証処理用に必要となるメモリ領域を低減することができる。
【００３５】
例えば、コンテンツ１のデータサイズを２５６ＭＢ（バイト）とし、ダイジェスト単位（ハッシュ関数を適用するデータサイズ）を２ＫＢとし、ダイジェスト値のデータサイズを１６Ｂとした場合を考える。この場合、次の式（１）より、第１ダイジェストテーブルのデータサイズは２ＭＢとなる。
（２５６［ＭＢ］／２［ＫＢ］）×１６［Ｂ］＝２［ＭＢ］  …（１）
また、第１ダイジェストテーブルのグループから２次ダイジェスト値を算出する場合においてもダイジェスト単位を２ＫＢとし、ダイジェスト値のデータサイズを１６Ｂとすると、次の式（２）より、第２ダイジェストテーブル３のデータサイズは１６ＫＢとなる。
２［ＭＢ］／２［ＫＢ］＊１６［Ｂ］＝１６［ＫＢ］  …（２）
なお、ダイジェスト単位またはダイジェスト値のデータサイズは、コンテンツ１から１次ダイジェスト値を算出する場合、および、第１ダイジェストテーブル２から２次ダイジェストを算出する場合のそれぞれにおいて、任意に決定することができる。したがって、ダイジェスト単位またはダイジェスト値のデータサイズを適宜変更することによって、第２ダイジェストテーブルのデータサイズを適宜変更することが可能である。ここで、上記第１〜第３認証処理の詳細は後述するが、本実施形態では、認証装置は、第２ダイジェストテーブル３についてはその全体をメモリに読み出す必要がある一方、第１ダイジェストテーブル２については１つのグループのみをメモリに読み出せばよい。つまり、第２ダイジェストテーブル３のデータサイズ、すなわち１６ＫＢのメモリ領域を認証処理用に用意しておけばよい。これに対して、従来の方法では、第１ダイジェストテーブル２の全体を読み出す必要があるので、２ＭＢのメモリ領域を認証処理用に用意しておかなければならない。以上のように、本実施形態によれば、従来に比べて認証処理用に必要となるメモリ領域を大幅に低減することができる。また、第２ダイジェストテーブルのデータサイズを調整することによって、ランダムアクセス性とメモリの容量とを勘案して、認証処理に必要となるメモリ領域の大きさを調整することができる。
【００３６】
以下、本実施形態における処理の詳細について説明する。なお、以下では、コンテンツ利用者に提供されるべきコンテンツがゲームプログラムであり、図１に示すデータ１〜４がメモリカードに記憶されてコンテンツ利用者に提供され、メモリカード内のゲームプログラムが携帯型のゲーム装置によって読み出されて実行される場合を例として説明する。
【００３７】
（２）コンテンツ提供側におけるデータ生成処理
まず、図１に示すデータ構造を生成する処理の詳細について図２および図３を用いて説明する。図２は、図１に示す各データをメモリカードに書き込むための書込装置の構成を示すブロック図である。図２において、書込装置６は、記憶部７、制御部８、および書込部９を備えている。書込装置６は、コンテンツ１の提供者側に設けられる。
【００３８】
図２に示す記憶部７は、コンテンツ１、ダイジェスト値を算出するためのハッシュ関数、および、電子署名を生成するために用いられる暗号化鍵を記憶している。制御部８は、記憶部７に記憶されているデータを用いて、第１および第２ダイジェストテーブル２および３と電子署名４とを生成する。書込部９は、記憶媒体の一例であるメモリカード１７にアクセス可能であり、制御部８の指示に従ってデータをメモリカード１７に書き込む。
【００３９】
図３は、図１に示す各データをメモリカードに書き込むための処理の流れを示すフローチャートである。図３に示す処理は、書込装置６の制御部８によって実行される。なお、典型的には、制御部８が所定のデータ生成プログラムを実行することによって図３に示す処理が実行される。
【００４０】
図３に示すステップＳ１において、制御部８は、記憶部７に記憶されているコンテンツ１から第１ダイジェストテーブル２を生成する。すなわち、第１ダイジェストテーブル２に含まれる複数の１次ダイジェスト値を算出する。上述のように、１次ダイジェスト値は、コンテンツ１に含まれるブロック毎に算出される。つまり、制御部８は、コンテンツ１の各ブロックのそれぞれに対してハッシュ関数を適用することによって、各ブロックに対応する複数の１次ダイジェスト値を算出する。なお、１次ダイジェスト値を算出するために用いられるハッシュ関数を第１ハッシュ関数と呼ぶ。第１ハッシュ関数は記憶部７に記憶されている。ステップＳ１において算出された複数の１次ダイジェスト値は、第１ダイジェストテーブル２として記憶部７に記憶される。
【００４１】
ステップＳ２において、制御部８は、ステップＳ１で算出された第１ダイジェストテーブル２から第２ダイジェストテーブル３を生成する。すなわち、第２ダイジェストテーブル３に含まれる複数の２次ダイジェスト値を算出する。上述のように、２次ダイジェスト値は、第１ダイジェストテーブル２に含まれるグループ毎に算出される。つまり、制御部８は、第１ダイジェストテーブル２の各グループのそれぞれに対してハッシュ関数を適用することによって、各グループに対応する複数の２次ダイジェスト値を算出する。なお、２次ダイジェスト値を算出するために用いられるハッシュ関数を第２ハッシュ関数と呼ぶ。第２ハッシュ関数は記憶部７に記憶されている。本実施形態では、第１ハッシュ関数および第２ハッシュ関数は同じものである。より具体的には、本実施形態では、第１ハッシュ関数および第２ハッシュ関数としてＭＤ−５（Ｍｅｓｓａｇｅ  Ｄｉｇｅｓｔ  ５）を用いる。ステップＳ２において算出された複数の２次ダイジェスト値は、第２ダイジェストテーブル３として記憶部７に記憶される。
【００４２】
ステップＳ３において、制御部８は、第２ダイジェストテーブル３から電子署名４を生成する。具体的には、制御部８はまず、第２ダイジェストテーブル３に所定の電子署名生成用ハッシュ関数を適用することによって第２ダイジェストテーブル３のダイジェスト値を算出する。本実施形態において、電子署名生成用ハッシュ関数は、上記第１および第２ハッシュ関数とは異なるものを使用する。具体的には、電子署名生成用ハッシュ関数としてＳＨＡ−１（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ  １）を用いる。さらに、制御部８は、算出されたダイジェスト値を秘密鍵で暗号化することによって電子署名４を生成する。秘密鍵は、コンテンツ１（ゲームプログラム）を利用するゲーム装置側で用いられる公開鍵と対になる暗号化鍵であり、記憶部７に記憶されている。以上のように生成された電子署名４は記憶部７に記憶される。
【００４３】
ステップＳ４において、コンテンツ１とともに、ステップＳ１〜Ｓ３で生成された第１ダイジェストテーブル２、第２ダイジェストテーブル３、および電子署名４がメモリカード１７に書き込まれる。すなわち、制御部８は、これらの各データ１〜４をメモリカード１７に書き込む指示を書込部９に与える。書込部９は、この指示に従って各データ１〜４をメモリカード１７に書き込む。なお、メモリカード１７はＲＯＭ１７ａおよびＲＡＭ１７ｂを搭載しており（図５参照）、各データ１〜４はＲＯＭ１７ａに書き込まれる。上記ステップＳ４の後、制御部８は図３に示す処理を終了する。
【００４４】
本実施形態では、上記ステップＳ１〜Ｓ４によってデータ１〜４が書き込まれたメモリカード１７が、コンテンツ提供者からコンテンツ利用者へ提供される。コンテンツ利用者は、取得したメモリカード１７を図４に示すゲーム装置１０に装着することによって、メモリカード１７内のコンテンツ（ゲームプログラム）１を利用する。
【００４５】
（３）コンテンツ利用側における認証処理
次に、コンテンツ利用側において行われるコンテンツ１の認証処理の詳細について図４〜図８を用いて説明する。図４は、本実施形態に係る認証装置の一例であるゲーム装置の外観図である。図１において、ゲーム装置１０は、表示手段である第１ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ：液晶表示装置）１１および第２ＬＣＤ１２、ハウジング１３、操作スイッチ部１４、ならびに、タッチパネル１５を含む。また、ゲーム装置１０には、上記メモリカード１７が着脱自在に装着される。
【００４６】
ハウジング１３は上側ハウジング１３ａと下側ハウジング１３ｂとによって構成されており、第１ＬＣＤ１１は上側ハウジング１３ａに収納され、第２ＬＣＤ１２は下側ハウジング１３ｂに収納される。第１ＬＣＤ１１および第２ＬＣＤ１２の解像度はいずれも２５６ｄｏｔ×１９２ｄｏｔである。なお、本実施形態では表示装置としてＬＣＤを用いているが、例えばＥＬ（Ｅｌｅｃｔｒｏ  Ｌｕｍｉｎｅｓｃｅｎｃｅ：電界発光）を利用した表示装置など、他の任意の表示装置を利用することができる。また任意の解像度のものを利用することができる。
【００４７】
上側ハウジング１３ａには、１対のスピーカ３０ａおよび３０ｂからの音を外部に放出するための音抜き孔１８ａ、１８ｂが形成されている。
【００４８】
下側ハウジング１３ｂには、メモリカード１７を装着するための挿入口が設けられる。また、下側ハウジング１３ｂには、入力装置として、操作スイッチ部１４、すなわち、十字スイッチ１４ａ、スタートスイッチ１４ｂ、セレクトスイッチ１４ｃ、Ａボタン１４ｄ、Ｂボタン１４ｅ、Ｘボタン１４ｆ、Ｙボタン１４ｇ、Ｌボタン１４Ｌ、およびＲボタン１４Ｒが設けられている。また、さらなる入力装置として、第２ＬＣＤ１２の画面上にタッチパネル１５が装着されている。下側ハウジング１３ｂには、第２ＬＣＤ１２の周囲に音孔３３ａが設けられる。マイク３３はこの音孔付近のハウジング１３ｂ内部側に設けられ、音孔３３ａから入ってくるハウジング外部の音を入力して電気信号（音声信号）に変換する。下側ハウジング１３ｂには、電源スイッチ１９や、メモリカード１７やスティック１６を収納するための挿入口が設けられている。
【００４９】
タッチパネル１５としては、例えば抵抗膜方式や光学式（赤外線方式）や静電容量結合式など、任意の方式のものを利用することができる。タッチパネル１５は、その表面をスティック１６で触れると、その接触位置に対応する座標データを出力する機能を有している。なお、以下ではプレイヤがタッチパネル１５をスティック１６で操作するものとして説明を行うが、スティック１６の代わりにペン（スタイラスペン）や指でタッチパネル１５を操作することももちろん可能である。本実施形態では、タッチパネル１５として、第２ＬＣＤ１２の解像度と同じく２５６ｄｏｔ×１９２ｄｏｔの解像度（検出精度）のものを利用する。ただし、必ずしもタッチパネル１５の解像度と第２ＬＣＤ１２の解像度が一致している必要はない。
【００５０】
次に、図５を参照してゲーム装置１０の内部構成を説明する。図５において、ハウジング１３に収納される電子回路基板２０には、ＣＰＵコア２１が実装される。ＣＰＵコア２１には、バス２２を介して、コネクタ２３が接続されるとともに、入出力インターフェース回路（図面ではＩ／Ｆ回路と記す）２５、第１ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２６、第２ＧＰＵ２７、ＲＡＭ２４、およびＬＣＤコントローラ３１が接続される。コネクタ２３には、メモリカード１７が着脱自在に接続される。メモリカード１７は、図１に示すデータ１〜４を記憶するＲＯＭ１７ａと、バックアップデータを書き換え可能に記憶するＲＡＭ１７ｂを搭載する。メモリカード１７のＲＯＭ１７ａに記憶されたゲームプログラム（コンテンツ１）は、ゲーム装置１０の記憶手段であるＲＡＭ２４にロードされ、ＲＡＭ２４にロードされたゲームプログラムがＣＰＵコア２１によって実行される。ＲＡＭ２４には、ゲームプログラムの他にも、ＣＰＵコア２１がゲームプログラムを実行して得られる一時的なデータや、ゲーム画像を生成するためのデータが記憶される。
【００５１】
Ｉ／Ｆ回路２５には、操作スイッチ部１４、タッチパネル１５、右スピーカ３０ａ、左スピーカ３０ｂ、および、マイク３３が接続される。右スピーカ３０ａと左スピーカ３０ｂは、音抜き孔１８ａ、１８ｂの内側にそれぞれ配置される。ゲームの効果音等を出力する際、ＣＰＵコア２１は、ＲＡＭ２４等に記憶された音声データ（音源）をＩ／Ｆ回路２５から図示しないＡ／Ｄ変換回路やアンプ等を介して各スピーカ３０ａおよび３０ｂへ出力する。これによって、各スピーカ３０ａおよび３０ｂは音声データにより表される音声を出力する。また、マイク３３に入力された音声を示す音声データは、Ｉ／Ｆ回路２５を介してＲＡＭ２４に記憶される。
【００５２】
第１ＧＰＵ２６には、第１ＶＲＡＭ（Ｖｉｄｅｏ  ＲＡＭ）２８が接続され、第２ＧＰＵ２７には、第２ＶＲＡＭ２９が接続される。第１ＧＰＵ２６は、ＣＰＵコア２１からの指示に応じて、ＲＡＭ２４に記憶されているゲーム画像を生成するためのデータに基づいて第１のゲーム画像を生成し、第１ＶＲＡＭ２８に描画する。第２ＧＰＵ２７は、同様にＣＰＵコア２１からの指示に応じて第２のゲーム画像を生成し、第２ＶＲＡＭ２９に描画する。第１ＶＲＡＭ２８および第２ＶＲＡＭ２９はＬＣＤコントローラ３１に接続されている。
【００５３】
ＬＣＤコントローラ３１はレジスタ３２を含む。レジスタ３２はＣＰＵコア２１からの指示に応じて０または１の値を記憶する。ＬＣＤコントローラ３１は、レジスタ３２の値が０の場合は、第１ＶＲＡＭ２８に描画された第１のゲーム画像を第１ＬＣＤ１１に出力し、第２ＶＲＡＭ２９に描画された第２のゲーム画像を第２ＬＣＤ１２に出力する。また、レジスタ３２の値が１の場合は、第１ＶＲＡＭ２８に描画された第１のゲーム画像を第２ＬＣＤ１２に出力し、第２ＶＲＡＭ２９に描画された第２のゲーム画像を第１ＬＣＤ１１に出力する。
【００５４】
なお、上記のようなゲーム装置１０の構成は単なる一例に過ぎず、本発明に係る認証装置は、コンテンツ１を再生および／または実行する任意のコンピュータシステムによって実現することができる。
【００５５】
以下、ゲーム装置１０において行われる認証処理の詳細について説明する。図６は、ゲーム装置１０のＲＡＭ２４に記憶される主なデータを示す図である。図６において、ＲＡＭ２４には、認証プログラム記憶領域４１、コンテンツ記憶領域４２、第１ハッシュ関数記憶領域４３、第２ハッシュ関数記憶領域４４、および電子署名用データ記憶領域４５が設けられる。
【００５６】
認証プログラム記憶領域４１には、コンテンツ１に対する認証処理を実行するための認証プログラムが記憶される。認証プログラムは、メモリカード１７から取得されるプログラムではなく、予め記憶されている。
【００５７】
コンテンツ記憶領域４２には、メモリカード１７に記憶されているコンテンツ１の一部のデータが記憶される。ゲーム装置１０は、コンテンツ１のうちで必要となる部分データをコンテンツ記憶領域４２に適宜読み出し、読み出した部分データを利用してゲーム処理を実行する。
【００５８】
第１ハッシュ関数記憶領域４３には、上記第１ハッシュ関数が記憶される。また、第２ハッシュ関数記憶領域４４には、上記第２ハッシュ関数が記憶される。第１および第２ハッシュ関数のデータは、認証プログラムと同様、予め記憶されている。なお、第１ハッシュ関数と第２ハッシュ関数とを同じハッシュ関数とする場合には、第１および第２ハッシュ関数記憶領域４３および４４のいずれかのみを設けておけばよい。
【００５９】
電子署名用データ記憶領域４５には、電子署名４を用いた認証に必要なデータ、すなわち、上記電子署名生成用ハッシュ関数および公開鍵のデータが記憶される。この公開鍵は、上記書込装置６において記憶される暗号鍵と対になる鍵である。なお、電子署名４を用いた認証に必要なデータは、認証プログラムと同様、予め記憶されている。
【００６０】
なお、ＲＡＭ２４には、上記記憶領域４１〜４５に記憶されるデータの他、後述する認証処理において用いられる各種データが記憶される。
【００６１】
次に、認証処理の詳細を説明する。本実施形態においては、認証処理は、メモリカード１７がゲーム装置１０に装着された際に実行される認証処理（第１認証処理）と、ゲーム装置１０がメモリカード１７からコンテンツ１のデータを読み出す際に実行される処理（第２および第３認証処理）とに分けられる。具体的には、第１認証処理は、メモリカード１７がゲーム装置１０に装着されたことに応じて実行され、第２および第３認証処理は、ゲーム装置１０がメモリカード１７からコンテンツ１のデータを読み出す際に実行される。
【００６２】
図７は、ゲーム装置１０において実行される第１認証処理の流れを示すフローチャートである。図７に示す第１認証処理は、ゲーム装置１０にメモリカードが装着されたことに応じて実行される。第１認証処理は、メモリカードに記憶されているコンテンツが正当な提供者によるものである否かとは無関係に実行される。なお、第１認証処理においてコンテンツ１の読み込みが許可されるまでは、ゲーム装置１０はコンテンツ１の読み込みを行わない。
【００６３】
図７に示すステップＳ１１において、ＣＰＵコア２１は、ゲーム装置１０に装着されたメモリカード１７から第２ダイジェストテーブル３および電子署名４をＲＡＭ２４に読み込む。ステップＳ１１の後に実行されるステップＳ１２〜Ｓ１６において、第１認証処理、すなわち、第２ダイジェストテーブル３および電子署名４を用いたコンテンツ１の認証処理が行われる。
【００６４】
続くステップＳ１２において、ＣＰＵコア２１は、読み込まれた電子署名４を復号することによってダイジェスト値を生成する。電子署名４の復号処理は、電子署名用データ記憶領域４５に記憶されている公開鍵のデータを用いて行われる。さらにステップＳ１３において、読み込まれた第２ダイジェストテーブル３からダイジェスト値を算出する。ダイジェスト値は、第２ダイジェストテーブル３に電子署名生成用ハッシュ関数を適用することによって算出される。電子署名生成用ハッシュ関数は、電子署名用データ記憶領域４５に記憶されている。なお、他の実施形態では、ステップＳ１２の処理およびステップＳ１３の処理は、いずれが先に実行されてもよいし、並列的に実行されてもよい。
【００６５】
ステップＳ１４において、ＣＰＵコア２１は、ステップＳ１２で生成されたダイジェスト値と、ステップＳ１３で算出されたダイジェスト値とが一致するか否かを判定する。これら２つのダイジェスト値が一致する場合、第１認証処理における認証が成功したと判断され、ステップＳ１５の処理が実行される。一方、これら２つのダイジェスト値が一致しない場合、第１認証処理における認証が失敗したと判断され、ステップＳ１６の処理が実行される。
【００６６】
ステップＳ１５においては、コンテンツ１の読み込み（ゲーム処理の実行）が許可され、ＣＰＵコア２１は図７に示す第１認証処理を終了する。これによって、ステップＳ１５以降において、コンテンツ１を用いたゲーム処理が実行される。ステップＳ１５によって、第１認証処理による認証においてはコンテンツ１の正当性が認証されたこととなる。なお、本実施形態においては、第１認証処理による認証においてコンテンツ１の正当性が認証されても、第１認証処理の後に実行される第２認証処理および第３認証処理においてコンテンツ１の正当性が認証されないこともある。
【００６７】
一方、ステップＳ１６においては、コンテンツ１の読み込み（ゲーム処理の実行）が禁止される。このとき、コンテンツ１に含まれるゲームプログラムを実行することは不可能であるので、ＣＰＵコア２１は、図７に示す処理を終了する。なお、ステップＳ１６において、ＣＰＵコア２１は、メモリカード１７内のコンテンツ１が不正なものであることを示すメッセージ（例えば「このメモリカードは使用できません」等）を第１ＬＣＤ１１または第２ＬＣＤ１２の画面に表示させるようにしてもよい。
【００６８】
なお、図７に示す第１認証処理が終了した後、ＣＰＵコア２１は、ＲＡＭ２４に記憶されている第２ダイジェストテーブルから算出されたダイジェスト値、および、電子署名４のデータをＲＡＭ２４から削除しても構わない。また、本実施形態においては、後述する第２認証処理において用いるので第２ダイジェストテーブルはＲＡＭ２４に保持しておく。
【００６９】
上記第１認証処理においてコンテンツ１の正当性が認証された場合、ＣＰＵコア２１は、コンテンツ１に含まれるゲームプログラムを読み出して実行する処理、および、コンテンツ１に含まれるゲームデータ（画像データや音データ等）を読み出す処理等を行うことによって、ゲーム処理を進める。ここで、コンテンツ１のデータはブロック単位でゲーム装置１０に読み込まれる。また、コンテンツ１の１ブロック分の部分データが読み込まれる時に、第２認証処理および第３認証処理が実行される。以下、第２認証処理および第３認証処理の詳細を説明する。
【００７０】
図８は、ゲーム装置１０において実行される第２および第３認証処理の流れを示すフローチャートである。図８に示す第２および第３認証処理は、ゲーム装置１０が１ブロック分のコンテンツ１を読み出したことに応じて実行される。なお、第２および第３認証処理において読み出されたコンテンツ１の利用が許可されるまでは、ゲーム装置１０はコンテンツ１を利用しない、すなわち、コンテンツ１に基づくゲーム処理を実行しない。
【００７１】
図８に示すステップＳ２１において、ＣＰＵコア２１は、コンテンツ１の部分データ（部分コンテンツデータ）のうちで読み出すべき部分コンテンツデータのブロックを指定する。なお、読み出すべきコンテンツ部分データは、それまでに実行されたゲーム処理によって決められる。また、コンテンツ１に含まれる各ブロックのうちで最初に読み出すべき部分コンテンツデータが含まれるブロックは予め定められており、ゲーム装置１０がコンテンツを最初に読み出す際には、ＣＰＵコア２１は、当該予め定められたブロックを指定する。
【００７２】
ステップＳ２１の後のステップＳ２２〜Ｓ２５において第２認証処理が実行される。第２認証処理では、第１ダイジェストテーブル２に含まれる各グループのうちで、ステップＳ２１で指定されたブロックに対応するグループに含まれる１次ダイジェスト値について正当性の認証が行われる。
【００７３】
ステップＳ２２において、ＣＰＵコア２１は、ステップＳ２１で指定されたブロックに対応するグループを指定する。つまり、当該ブロックに含まれる部分コンテンツデータに対応する１次ダイジェスト値を含むグループを指定する。例えば、図１に示すブロックＡが指定された場合、ブロックＡに対応するグループとして、１次ダイジェスト値Ａ〜Ｄからなるグループが指定される。
【００７４】
続くステップＳ２３において、ＣＰＵコア２１は、指定されたグループの１次ダイジェスト値をメモリカード１７から読み出す。読み出されたデータは、ＲＡＭ２４に記憶される。なお、ステップＳ２３では、前回のステップＳ２３においてＲＡＭ２４に記憶されたグループのデータに上書きする形で、新たなグループのデータがＲＡＭ２４に記憶される。つまり、ＲＡＭ２４内には最新の１グループのデータのみが記憶されるので、ＲＡＭ２４には第１ダイジェストテーブル用の記憶領域として１グループ分の記憶領域を用意しておけばよい。
【００７５】
さらに、ステップＳ２４において、指定されたグループの１次ダイジェスト値から、当該グループに対応する第２ダイジェスト値が算出される。このダイジェスト値は、指定されたグループに含まれる複数の第１ダイジェスト値に第２ハッシュ関数を適用することによって算出される。第２ハッシュ関数は、第２ハッシュ関数記憶領域４４に記憶されている。
【００７６】
ステップＳ２５において、ＣＰＵコア２１は、ステップＳ２４で算出された２次ダイジェスト値が、指定されたグループに対応する２次ダイジェスト値と一致するか否かを判定する。なお、当該２次ダイジェスト値は、図７に示すステップＳ１１ですでにＲＡＭ２４に読み込まれている第２ダイジェストテーブル３から得られる。例えば、図１に示す１次ダイジェスト値Ａ〜Ｄからなるグループが指定された場合、当該グループに対応する２次ダイジェスト値は、図１に示す２次ダイジェスト値ａとなる。ステップＳ２５の判定において、これら２つのダイジェスト値が一致する場合、第２認証処理における認証が成功したと判断され、ステップＳ２６の処理が実行される。一方、これら２つのダイジェスト値が一致しない場合、第２認証処理における認証が失敗したと判断され、ステップＳ３０の処理が実行される。
【００７７】
上記第２認証処理における認証が成功した場合、ステップＳ２６〜Ｓ２９において第３認証処理が実行される。第３認証処理では、コンテンツ１に含まれる各ブロックのうちのステップＳ２１で指定されたブロックについて正当性の認証が行われる。
【００７８】
ステップＳ２６において、ＣＰＵコア２１は、指定されたブロック（ブロックに含まれる部分コンテンツデータ）をメモリカード１７から読み出す。読み出されたデータは、ＲＡＭ２４のコンテンツ記憶領域４２に記憶される。なお、コンテンツ記憶領域４２には少なくとも１ブロック分のコンテンツ１を記憶することができればよいが、複数ブロック分（例えば２ブロック分）のコンテンツをコンテンツ記憶領域４２記憶しておくようにしてもよい。
【００７９】
続くステップＳ２７において、指定されたブロックに対応する１次ダイジェスト値が算出される。このダイジェスト値は、指定されたブロックに含まれる部分コンテンツデータに第１ハッシュ関数を適用することによって算出される。第１ハッシュ関数は、第１ハッシュ関数記憶領域４３に記憶されている。
【００８０】
ステップＳ２８において、ＣＰＵコア２１は、指定されたブロックに対応する１次ダイジェスト値と、ステップＳ２７で算出された第１ダイジェスト値とが一致するか否かを判定する。なお、当該１次ダイジェスト値は、ステップＳ２３ですでにＲＡＭ２４に読み込まれている第１ダイジェストテーブル２から得られる。これら２つのダイジェスト値が一致する場合、第３認証処理における認証が成功したと判断され、ステップＳ２９の処理が実行される。一方、これら２つのダイジェスト値が一致しない場合、第３認証処理における認証が失敗したと判断され、ステップＳ３０の処理が実行される。
【００８１】
ステップＳ２９においては、ＣＰＵコア２１は、読み込まれたブロックの利用を許可し、当該ブロックに基づく処理を実行する。例えば、読み込まれたブロックがゲームプログラムであれば、ＣＰＵコア２１がゲームプログラムを実行することによってゲーム処理が実行される。なお、本実施形態において、コンテンツ１は例えばブロック単位で暗号化されていてもよく、コンテンツ１が暗号化されている場合には、暗号化されたコンテンツ１のデータがステップＳ２９（またはステップＳ２６でもよい）において復号される。ステップＳ２９の後、ＣＰＵコア２１は図８に示す処理を終了する。その後、ゲーム処理においてコンテンツ１を読み出すことが必要になれば、図８に示す処理が再度行われる。図８に示す処理は、コンテンツ１のブロックが読み出される度に行われる。
【００８２】
なお、他の実施形態においては、メモリカード１７に記憶されている第１および第２ダイジェストテーブル２および３もコンテンツ１と同様に暗号化されていてもよい。このとき、ＣＰＵコア２１は、上記ステップＳ２３で第１ダイジェストテーブル２を復号化する。また、第２ダイジェストテーブル３についてはステップＳ１１で復号化する。また、各データ１〜３を暗号化する方式や鍵は、一致している必要はない。
【００８３】
一方、ステップＳ３０においては、コンテンツ１の利用が禁止され、ＣＰＵコア２１は、図８に示す処理を終了する。なお、ステップＳ３０においてもステップＳ１６と同様、メモリカード１７内のコンテンツ１が不正なものであることを示すメッセージが第１ＬＣＤ１１または第２ＬＣＤ１２の画面に表示されてもよい。また、ステップＳ３０の後、ＣＰＵコア２１は、ゲーム処理を実行中であっても当該ゲーム処理を中止する。
【００８４】
以上のように、本実施形態によれば、第１〜第３認証処理において、第１ダイジェストテーブル２の全体をＲＡＭ２４に読み出す必要はなく、第２ダイジェストテーブル３と第１ダイジェストテーブル２のうちの１つのグループとを読み出すだけで認証を行うことができる。したがって、第１ダイジェストテーブル２の全体を読み出す従来の方法に比べて、認証処理用に必要となるメモリ領域を低減することができる。
【００８５】
なお、コンテンツ記憶領域４２が複数ブロック分のコンテンツ１のデータを記憶可能な場合には、コンテンツ記憶領域４２にすでに記憶されているコンテンツ１のデータについては、第２および第３認証処理を省略するようにしてもよい。具体的には、ＣＰＵコア２１は、図８に示す処理において、上記ステップＳ２２の処理の前に、ステップＳ２１で指定されたブロックがコンテンツ記憶領域４２にすでに記憶されているか否かを判定するようにしてもよい。そして、ブロックがすでに記憶されている場合には、ステップＳ２２〜Ｓ２８の処理をスキップしてステップＳ２９の処理を実行するようにしてもよい。
【００８６】
なお、上記実施形態においては、電子署名生成用ハッシュ関数としては、第１および第２ハッシュ関数よりも強い（破られにくい、すなわち、セキュリティレベルが高い）ハッシュ関数を用いることが好ましい。これは、電子署名生成用ハッシュ関数については、メモリカード１７が装着された時点で１回のみ用いられるので、セキュリティを重視した関数を用いることが好ましいからである。なお、ハッシュ関数のセキュリティレベルは、ダイジェスト値の計算処理におけるビット数や、ダイジェスト値のビット数や、暗号化付きであるか否か等によって決まる。すなわち、ダイジェスト値の計算処理におけるビット数やダイジェスト値のビット数が相対的に大きいハッシュ関数は、これらのビット数が相対的に小さいハッシュ関数に比べて強いと言える。また、暗号化付きのハッシュ関数（鍵付きハッシュ関数）は、暗号化付きでないハッシュ関数に比べて相対的に強いと言える。
【００８７】
また、上記実施形態においては、第１ハッシュ関数と第２ハッシュ関数とを同じものとした。ここで、他の実施形態においては、第２認証処理および第３認証処理の処理量を軽減する目的で、第１ハッシュ関数と第２ハッシュ関数とを異なるものとしてもよい。このとき、第２ハッシュ関数として、ダイジェスト値を算出するための処理量が第１ハッシュ関数よりも少ないハッシュ関数を用いることが好ましい。換言すれば、第１ハッシュ関数として第２ハッシュ関数よりも強いハッシュ関数を用いることが好ましい。例えば、他の実施形態では、第１ハッシュ関数としてＳＨＡ−１を用い、第２ハッシュ関数としてＭＤ−５を用いることが考えられる。なお、このとき、電子署名生成用ハッシュ関数は第１および第２ハッシュ関数よりも強いものが好ましいので、電子署名生成用ハッシュ関数としては例えばＳＨＡ−２５６を用いる。
【００８８】
第１ハッシュ関数として第２ハッシュ関数よりも強いハッシュ関数を用いる理由は、第２ハッシュ関数が破られるよりも第１ハッシュ関数が破られる方がコンテンツ１の改ざんが容易になるからである。第１ハッシュ関数は、コンテンツ１と１次ダイジェスト値との関係を示すものであるので、第１ハッシュ関数が破られるとコンテンツ１を直接改ざんできるのに対し、第２ハッシュ関数が破られてもコンテンツ１を直接改ざんすることはできない。したがって、第２認証処理および第３認証処理の処理量を軽減する目的でいずれかのハッシュ関数のセキュリティレベルを下げるのであれば、第２ハッシュ関数のセキュリティレベルを下げる方が好ましい。
【００８９】
また、上記実施形態においては、図１に示すデータ構造がメモリカード等の記憶媒体に記憶されてコンテンツ利用者に提供される形態を例として説明した。ここで、他の実施形態では、図１に示すデータ構造がネットワークを介して通信によってコンテンツ利用者に提供される形態であってもよい。例えば、認証装置（例えば上記ゲーム装置１０）と、上記データ構造を記憶したサーバ装置とがネットワークを介して通信可能なシステムに本発明を適用することも可能である。なお、このシステムにおける認証装置の動作は、メモリカードからデータを読み込む処理に代えて、サーバ装置からデータを受信する処理を行う点以外は、上記実施形態と同様の処理である。
【産業上の利用可能性】
【００９０】
本発明は、照合処理を効率良く行うとともに、認証のために要するメモリ容量を低減すること等を目的として、例えばゲームプログラムを利用者に提供するシステムや、当該システムにおいて用いられるゲーム装置等に適用することが可能である。
【図面の簡単な説明】
【００９１】
【図１】本実施形態における認証方法の対象となるコンテンツデータを含むデータ構造を示す図
【図２】図１に示す各データをメモリカードに書き込むための書込装置の構成を示すブロック図
【図３】図１に示す各データをメモリカードに書き込むための処理の流れを示すフローチャート
【図４】本実施形態に係る認証装置の一例であるゲーム装置の外観図
【図５】ゲーム装置の機能ブロック図
【図６】ゲーム装置１０のＲＡＭ２４に記憶される主なデータを示す図
【図７】ゲーム装置１０において実行される第１認証処理の流れを示すフローチャート
【図８】ゲーム装置１０において実行される第２および第３認証処理の流れを示すフローチャート
【符号の説明】
【００９２】
１  コンテンツ
２  第１ダイジェストテーブル
３  第２ダイジェストテーブル
４  電子署名
６  書込装置
７  記憶部
８  制御部
９  書込部
１０  ゲーム装置
１７  メモリカード
２１  ＣＰＵコア
２４  ＲＡＭ
４１  認証プログラム記憶領域
４２  コンテンツ記憶領域
４３  第１ハッシュ関数記憶領域
４４  第２ハッシュ関数記憶領域
４５  電子署名用データ記憶領域
【図１】
2008022074.tif 000003
【図２】
2008022074.tif 000004
【図３】
2008022074.tif 000005
【図４】
2008022074.tif 000006
【図５】
2008022074.tif 000007
【図６】
2008022074.tif 000008
【図７】
2008022074.tif 000009
【図８】
2008022074.tif 000010