説明

データ認証方法およびデータ認証システム

【課題】照合処理を効率良く行うとともに、認証のために要するメモリ容量を低減する。
【解決手段】認証装置がアクセス可能な記憶手段には、コンテンツデータと、当該コンテンツデータを構成する複数の部分データのそれぞれについての1次ダイジェスト値を含む第1ダイジェストテーブル2と、当該第1ダイジェストテーブルの複数の部分データのそれぞれについての2次ダイジェスト値を含む第2ダイジェストテーブル3と、当該第2ダイジェストテーブルから生成される電子署名4とが記憶されている。第1読み出しステップにおいては、第2ダイジェストテーブルと電子署名とを記憶手段から認証装置のメモリに読み出す。第1認証ステップにおいては、メモリに読み出された電子署名と、メモリに読み出された第2ダイジェストテーブルとを用いてコンテンツデータの正当性を認証する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ認証方法に関し、より特定的には、正当な提供元から提供されたデータであることを認証するためのデータ認証方法に関する。
【背景技術】
【0002】
特許文献1には、情報記憶媒体に記憶されているプログラムデータの正当性を認証する技術が記載されている。この技術において、情報記憶媒体は、コンテンツデータと、コンテンツハッシュテーブルとを記憶している。コンテンツハッシュテーブルは、コンテンツデータを細分化したデータ(細分化されたコンテンツデータ)のそれぞれに対応するハッシュ値(ダイジェスト値)を含むデータである。コンテンツデータを読み込む情報処理装置は、細分化されたコンテンツデータおよびダイジェスト値を読み込み、細分化されたコンテンツデータから算出したハッシュ値と、読み込んだハッシュ値とを照合する。これによって、情報処理装置は、ハッシュ値の算出処理および照合処理を、細分化されたコンテンツデータ毎に実行することができる。したがって、情報処理装置は、コンテンツデータの一部を読み出す際、実際に読み出す部分についてのみ照合処理を行えばよいので、コンテンツデータの正当性に関する認証を効率的に行うことができる。
【0003】
なお、上記情報記憶媒体には、コンテンツハッシュテーブルから算出されるコンテンツハッシュ値に電子署名を施して暗号化したコンテンツ証明書が記憶される。このコンテンツ証明書を用いて照合処理を行うことによって、上記コンテンツデータおよびそれに対応するハッシュ値が改ざんされた場合でも、コンテンツデータの正当性を正確に認証することができる。具体的には、コンテンツ証明書を複合化して得られるコンテンツハッシュ値と、情報記憶媒体から読み込まれるコンテンツハッシュテーブルから得られるコンテンツハッシュ値とを照合することによって、コンテンツデータの正当性を認証することが可能である。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2006−74421号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
上記特許文献1では、情報処理装置がコンテンツ証明書を用いて情報記憶媒体内のデータの正当性を認証する場合、情報処理装置は、コンテンツハッシュテーブルからコンテンツハッシュ値を算出する処理を行う。そのため、情報処理装置は、コンテンツハッシュテーブル全体をメモリに読み出す必要がある。つまり、コンテンツハッシュテーブルのデータサイズが大きくなれば、情報処理装置において用意すべきメモリ容量も大きくなってしまう。したがって、情報処理装置が携帯機器等である場合のように十分な容量のメモリを搭載することが難しい場合には、認証のために要するメモリ容量が不足する可能性がある。なお、コンテンツハッシュテーブルのデータサイズを小さくするために、コンテンツデータを細分化するデータ単位を大きくすることによってハッシュ値の数を減らす方法が考えられる。しかし、この方法では、コンテンツデータの一部を読み出す際に行う照合処理の効率が悪くなってしまう。
【0006】
それ故、本発明の目的は、照合処理を効率良く行うとともに、認証のために要するメモリ容量を低減することができるデータ認証方法を提供することである。
【課題を解決するための手段】
【0007】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、本欄における括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【0008】
第1の発明は、コンテンツデータ(1)を認証する認証装置(ゲーム装置10)において用いられる認証方法である。認証装置がアクセス可能な記憶手段(メモリカード17)には、コンテンツデータと、第1ダイジェストテーブル(2)と、第2ダイジェストテーブル(3)と、電子署名(4)とが記憶されている。第1ダイジェストテーブルは、コンテンツデータを構成する部分コンテンツデータに対応するダイジェスト値である1次ダイジェスト値を含む。第2ダイジェストテーブルは、第1ダイジェストテーブルを構成する部分に対応するダイジェスト値である2次ダイジェスト値を含む。電子署名は、当該第2ダイジェストテーブルに含まれる2次ダイジェスト値から生成される。上記認証方法には、第1読み出しステップ(S11)と、第1認証ステップ(S12〜S14)とが含まれる。第1読み出しステップにおいては、第2ダイジェストテーブルと電子署名とを記憶手段から認証装置のメモリ(RAM24)に読み出す。第1認証ステップにおいては、メモリに読み出された電子署名と、メモリに読み出された第2ダイジェストテーブルに含まれる2次ダイジェスト値とを用いてコンテンツデータの正当性を認証する。
【0009】
なお、第1の発明において、コンテンツデータは、複数の部分コンテンツデータによって構成されるものである。1次ダイジェスト値は、各部分コンテンツデータ毎に算出される。第1ダイジェストテーブルは、全ての部分コンテンツデータに対応する1次ダイジェスト値を含んでいてもよい。また、電子署名を生成する際には、例えば、第2ダイジェストテーブルに含まれるデータ(例えば、第2ダイジェストテーブルに含まれる全データ)に対して所定の演算(ハッシュ関数を適用する演算等)が行われる。例えば、電子署名が、第2ダイジェストテーブルのデータに対して所定のハッシュ関数を適用することによって得られるダイジェスト値を所定の秘密鍵で暗号化したデータであってもよい。このとき、第1認証ステップでは、第2ダイジェストテーブルに含まれるデータに対して上記所定の演算を行うことによって生成されるデータと、上記秘密鍵に対応する公開鍵で電子署名を複合化したデータとが一致するか否かを判定してもよい。
【0010】
第2の発明においては、2次ダイジェスト値は、複数の1次ダイジェスト値からなるグループ毎に算出されてもよい。このとき、認証方法には、指定ステップ(S21)と、第1算出ステップ(S24)と、第2認証ステップ(S25)と、第2算出ステップ(S27)と、第3認証ステップ(S28)とがさらに含まれる。指定ステップにおいては、部分コンテンツデータのうちから読み出すべき部分コンテンツデータを指定する。第1算出ステップにおいては、指定された部分コンテンツデータに対応する1次ダイジェスト値を含むグループから、当該グループに対応する2次ダイジェスト値を算出する。第2認証ステップにおいては、第1算出ステップにおいて算出された2次ダイジェスト値と、指定された部分コンテンツデータに対応する1次ダイジェスト値を含むグループに対応する2次ダイジェスト値とを照合することによってコンテンツデータの正当性を認証する。第2算出ステップにおいては、第2認証ステップにおける認証が成功した場合、指定された部分データから当該部分データのダイジェスト値を算出する。第3認証ステップにおいては、第2算出ステップにおいて算出されたダイジェスト値と、指定された部分データに対応する1次ダイジェスト値とを照合することによってコンテンツデータの正当性を認証する。
【0011】
なお、第2の発明において、指定ステップでは、認証装置は、コンテンツデータに含まれるデータのうち、(ランダムアクセス等の手法によって)読み出すべきデータが決定したことに応じて、当該読み出すべきデータが含まれる部分コンテンツデータを指定するようにしてもよい。
【0012】
第3の発明においては、第1認証ステップは、認証装置と記憶手段とがアクセス可能となった後、第2認証ステップが実行される前に実行されてもよい。
【0013】
第4の発明においては、部分コンテンツデータから1次ダイジェスト値を算出するためのハッシュ関数と、部分第1ダイジェストテーブルから2次ダイジェスト値を算出するためのハッシュ関数とは同一であってもよい。
【0014】
第5の発明においては、電子署名は、第2ダイジェストテーブルに含まれる複数の2次ダイジェスト値に対応するダイジェスト値に基づいて生成されてもよい。このとき、当該ダイジェスト値を算出するためのハッシュ関数は、部分コンテンツデータから1次ダイジェスト値を算出するためのハッシュ関数よりもセキュリティレベルが高い。
【0015】
なお、第5の発明において、ハッシュ関数のセキュリティレベルが高い場合には、以下の場合が含まれる。
(a)ハッシュ関数でハッシュ値を算出する過程における処理ビット数が相対的に多い。(b)ハッシュ関数で算出した結果であるハッシュ値のビット数が相対的に多い。
(c)(暗号化付きでない関数と対比して)暗号化付きの関数である。
【0016】
第6の発明においては、第1ダイジェストテーブルの部分データから2次ダイジェスト値を算出するためのハッシュ関数は、コンテンツデータの部分データから1次ダイジェスト値を算出するためのハッシュ関数よりも、ダイジェスト値を算出するための処理量が少なくてもよい。
【0017】
なお、第6の発明において、ダイジェスト値を算出するための処理量が少ない場合には、以下の場合が含まれる。
(a)ハッシュ関数でハッシュ値を算出する過程における処理ビット数が相対的に少ない。
(b)ハッシュ関数で算出した結果であるハッシュ値のビット数が相対的に少ない。
(c)(暗号化付きの関数と対比して)暗号化付きでない関数である。
【0018】
第7の発明においては、第1認証ステップにおいて用いられるハッシュ関数は、部分第1ダイジェストテーブルから2次ダイジェスト値を算出するためのハッシュ関数、および、部分コンテンツデータから1次ダイジェスト値を算出するためのハッシュ関数よりもセキュリティレベルが高くてもよい。
【0019】
第8の発明は、コンテンツデータを認証する認証装置(ゲーム装置10)である。認証装置がアクセス可能な記憶手段(メモリカード17)には、コンテンツデータと、当該コンテンツデータを構成する部分コンテンツデータに対応するダイジェスト値である1次ダイジェスト値を含む第1ダイジェストテーブルと、当該第1ダイジェストテーブルを構成する部分第1ダイジェストテーブルに対応するダイジェスト値である2次ダイジェスト値を含む第2ダイジェストテーブルと、当該第2ダイジェストテーブルに含まれる2次ダイジェスト値から生成される電子署名とが記憶されている。認証装置は、読み出し手段(ステップS11を実行するCPUコア21等。以下、この欄において同様の場合にはステップ番号のみを記載する。)と、認証手段(S12〜S14)とを備える。読み出し手段は、第2ダイジェストテーブルと電子署名とを記憶手段から認証装置のメモリ(RAM24)に読み出す。認証手段は、メモリに読み出された電子署名と、メモリに読み出された第2ダイジェストテーブルに含まれる2次ダイジェスト値とを用いてコンテンツデータの正当性を認証する。
【0020】
第9の発明は、コンテンツデータを認証する認証装置(ゲーム装置10)のコンピュータ(CPUコア21等)において実行される認証処理プログラムである。認証装置がアクセス可能な記憶手段(メモリカード17)には、コンテンツデータと、当該コンテンツデータを構成する部分コンテンツデータに対応するダイジェスト値である1次ダイジェスト値を含む第1ダイジェストテーブルと、当該第1ダイジェストテーブルを構成する部分第1ダイジェストテーブルに対応するダイジェスト値である2次ダイジェスト値を含む第2ダイジェストテーブルと、当該第2ダイジェストテーブルに含まれる2次ダイジェスト値から生成される電子署名とが記憶されている。認証処理プログラムは、読み出しステップ(S11)と、認証ステップ(S12〜S14)とをコンピュータに実行させる。読み出しステップにおいては、コンピュータは、第2ダイジェストテーブルと電子署名とを記憶手段から認証装置のメモリに読み出す。認証ステップにおいては、コンピュータは、メモリに読み出された電子署名と、メモリに読み出された第2ダイジェストテーブルに含まれる2次ダイジェスト値とを用いてコンテンツデータの正当性を認証する。
【0021】
第10の発明は、記憶手段に記憶すべきデータを生成するデータ処理方法である。データ処理方法には、第1算出ステップ(S1)と、第2算出ステップ(S2)と、電子署名生成ステップ(S3)と、設定ステップ(S4)とが含まれる。第1算出ステップにおいては、コンテンツデータを構成する部分コンテンツデータに対応するダイジェスト値である1次ダイジェスト値を算出する。第2算出ステップにおいては、第1算出ステップにおいて算出された第1ダイジェスト値を含む第1ダイジェストテーブルを構成する部分第1ダイジェストテーブルに対応するダイジェスト値である第2ダイジェスト値を算出する。電子署名生成ステップにおいては、第2算出ステップにおいて算出された第2ダイジェスト値を含む第2ダイジェストテーブルから電子署名を生成する。設定ステップにおいては、コンテンツデータと、第1ダイジェストテーブルと、第2ダイジェストテーブルと、電子署名とを記憶手段に記憶すべきデータとして設定する。
【0022】
第11の発明は、データ構造に関する。データ構造には、コンテンツデータと、コンテンツデータを構成する部分コンテンツに対応するダイジェスト値である第1ダイジェスト値を含む第1ダイジェストテーブルと、第1ダイジェストテーブルを構成する部分第1ダイジェストテーブルに対応するダイジェスト値である第2ダイジェスト値を含む第2ダイジェストテーブルと、第2ダイジェストテーブルから生成される電子署名とが含まれる。
【発明の効果】
【0023】
第1、第8から第11の発明によれば、電子署名を用いた認証は、コンテンツデータのダイジェスト値を含む第1ダイジェストテーブルではなく、第1ダイジェストテーブルのダイジェスト値を含む第2ダイジェストテーブルを用いて行われる。つまり、電子署名を用いた認証処理において読み出すべきデータは、第1ダイジェストテーブルよりもデータサイズの小さい第2ダイジェストテーブルである。したがって、認証のために要するメモリ容量を従来に比べて低減することができる。また、第10および第11の発明によれば、上記発明において用いられるデータ構造を提供することができる。
【0024】
第2の発明によれば、認証装置は、第2ダイジェストテーブルだけでなく、第1ダイジェストテーブルおよびコンテンツデータが改ざんされていないか否かを確認する。したがって、コンテンツの正当性をより正確に認証することができる。
【0025】
第3の発明によれば、第1認証ステップにおいて第2ダイジェストテーブルの正当性が認証された後で、第2および第3認証ステップが実行される。第2および第3認証ステップは、第2ダイジェストテーブルが正当であることを前提とした認証処理であるので、第1認証ステップの後で第2および第3認証ステップを実行することによって、第2および第3認証ステップにおける認証を正確に行うことができる。
【0026】
第4の発明によれば、1次ダイジェスト値を算出するためのハッシュ関数と、2次ダイジェスト値を算出するためのハッシュ関数とを同一とすることによって、後述する第6の発明に比べて、ハッシュ関数が破られた結果コンテンツデータが自由に改ざんされる可能性を低くすることができる。
【0027】
第5および第7の発明によれば、電子署名に用いるハッシュ関数のセキュリティレベルを高くすることによって、ハッシュ関数が破られた結果コンテンツデータが自由に改ざんされる可能性を低くすることができる。
【0028】
第6の発明によれば、上記第4の発明に比べて、第2認証ステップの処理量を軽減することができる。
【図面の簡単な説明】
【0029】
【図1】本実施形態における認証方法の対象となるコンテンツデータを含むデータ構造を示す図
【図2】図1に示す各データをメモリカードに書き込むための書込装置の構成を示すブロック図
【図3】図1に示す各データをメモリカードに書き込むための処理の流れを示すフローチャート
【図4】本実施形態に係る認証装置の一例であるゲーム装置の外観図
【図5】ゲーム装置の機能ブロック図
【図6】ゲーム装置10のRAM24に記憶される主なデータを示す図
【図7】ゲーム装置10において実行される第1認証処理の流れを示すフローチャート
【図8】ゲーム装置10において実行される第2および第3認証処理の流れを示すフローチャート
【発明を実施するための形態】
【0030】
(1)本発明の概要
まず、図1を用いて本実施形態における認証方法の概要を説明する。図1は、本実施形態における認証方法の対象となるコンテンツデータを含むデータ構造を示す図である。図1に示すデータ構造には、コンテンツ1、第1ダイジェストテーブル2、第2ダイジェストテーブル3、および電子署名4が含まれる。図1に示す各データ1〜4は、記憶媒体に記憶された形態でコンテンツ1の利用者に提供されたり、サーバ側の記憶手段からインターネット等のネットワークを介して再生装置へ提供されたりする。
【0031】
コンテンツ1は、例えばゲームプログラムや、映像および/または音声データや、テキストデータ等、利用者に提供されるべきデータである。後述する例では、コンテンツ1は、ゲームプログラムおよび当該ゲームプログラムによるゲーム処理において用いられるデータである。本実施形態では、コンテンツ1は所定のデータサイズ毎に分割され、分割された部分データ(ブロック)を単位としてデータの読み出し等が行われる。
【0032】
第1ダイジェストテーブル2は、コンテンツ1を構成する複数の部分データのそれぞれについてのダイジェスト値(ハッシュ値)を含むデータである。本実施形態では、第1ダイジェストテーブル2に含まれるダイジェスト値を、第2ダイジェストテーブル3に含まれるダイジェスト値と区別する目的で、「1次ダイジェスト値」と呼ぶことがある。1次ダイジェスト値は、コンテンツ1のブロック毎に算出される。つまり、1次ダイジェスト値は、コンテンツ1の1ブロック分の部分データに対してハッシュ関数を適用することによって得られる。また、第1ダイジェストテーブル2に含まれる複数の1次ダイジェスト値は、複数のグループに区分される。図1においては、実線で囲まれる4つの1次ダイジェスト値が1つのグループを構成する。1つのグループに含まれる1次ダイジェスト値の個数は、複数であればいくつであってもよい。
【0033】
第2ダイジェストテーブル3は、第1ダイジェストテーブル2を構成する複数の部分データのそれぞれについてのダイジェスト値を含むデータである。本実施形態では、第2ダイジェストテーブル3に含まれるダイジェスト値を、第1ダイジェストテーブル2に含まれるダイジェスト値と区別する目的で、「2次ダイジェスト値」と呼ぶことがある。2次ダイジェスト値は、第1ダイジェストテーブル2のグループ毎に算出される。つまり、2次ダイジェスト値は、1グループ分の1次ダイジェスト値のデータに対してハッシュ関数を適用することによって得られる。図1では、1次ダイジェスト値A〜Dのデータからなるグループに対してハッシュ関数を適用することによって2次ダイジェスト値aが得られ、1次ダイジェスト値E〜Hのデータからなるグループに対してハッシュ関数を適用することによって2次ダイジェスト値bが得られる。
【0034】
電子署名4は、第2ダイジェストテーブル3から生成される電子署名のデータである。具体的には、電子署名4は、第2ダイジェストテーブル3に含まれる2次ダイジェスト値に対して所定のハッシュ関数を適用することによって得られるダイジェスト値を、公開鍵暗号化方式による暗号化によって暗号化したデータである。
【0035】
次に、図1に示すデータ構造を採用した場合におけるコンテンツ認証方法の概要を説明する。なお、コンテンツ1の認証とは、コンテンツ1が正当な提供元から提供されたデータであること、すなわち、正当な提供元以外の者によってコンテンツ1が改ざんされていないことの認証である。コンテンツ1の認証処理は、第1認証処理〜第3認証処理という3段階の処理を含む。第1認証処理は、第2ダイジェストテーブル3と電子署名4とを用いて、第2ダイジェストテーブル3の正当性を認証する処理である。すなわち、第1認証処理においては、第2ダイジェストテーブルから算出されるダイジェスト値と、電子署名4を復号することによって得られるダイジェスト値とを照合することによる認証が行われる。第2認証処理は、第1ダイジェストテーブル2に含まれる1つのグループについて正当性を認証する処理である。すなわち、第2認証処理においては、第1ダイジェストテーブル2から算出されるダイジェスト値と、第2ダイジェストテーブル3に含まれる2次ダイジェスト値とを照合することによる認証が行われる。第3認証処理は、コンテンツ1に含まれる1つのブロックについて正当性を認証する処理である。第3認証処理においては、コンテンツ1の1つのブロックから算出されるダイジェスト値と、第1ダイジェストテーブル2に含まれる1次ダイジェスト値とを照合することによる認証が行われる。
【0036】
上記の第1〜第3認証処理においては、第1ダイジェストテーブル2のデータ全体を一度にメモリに読み込む必要がない。上記第2認証処理では、第1ダイジェストテーブル2に含まれる1つのグループについてのみ認証を行うからである。したがって、本実施形態では、従来のように第1ダイジェストテーブル2のデータ全体を一度にメモリに読み込む場合に比べて、認証処理用に必要となるメモリ領域を低減することができる。
【0037】
例えば、コンテンツ1のデータサイズを256MB(バイト)とし、ダイジェスト単位(ハッシュ関数を適用するデータサイズ)を2KBとし、ダイジェスト値のデータサイズを16Bとした場合を考える。この場合、次の式(1)より、第1ダイジェストテーブルのデータサイズは2MBとなる。
(256[MB]/2[KB])×16[B]=2[MB] …(1)
また、第1ダイジェストテーブルのグループから2次ダイジェスト値を算出する場合においてもダイジェスト単位を2KBとし、ダイジェスト値のデータサイズを16Bとすると、次の式(2)より、第2ダイジェストテーブル3のデータサイズは16KBとなる。
2[MB]/2[KB]*16[B]=16[KB] …(2)
なお、ダイジェスト単位またはダイジェスト値のデータサイズは、コンテンツ1から1次ダイジェスト値を算出する場合、および、第1ダイジェストテーブル2から2次ダイジェストを算出する場合のそれぞれにおいて、任意に決定することができる。したがって、ダイジェスト単位またはダイジェスト値のデータサイズを適宜変更することによって、第2ダイジェストテーブルのデータサイズを適宜変更することが可能である。ここで、上記第1〜第3認証処理の詳細は後述するが、本実施形態では、認証装置は、第2ダイジェストテーブル3についてはその全体をメモリに読み出す必要がある一方、第1ダイジェストテーブル2については1つのグループのみをメモリに読み出せばよい。つまり、第2ダイジェストテーブル3のデータサイズ、すなわち16KBのメモリ領域を認証処理用に用意しておけばよい。これに対して、従来の方法では、第1ダイジェストテーブル2の全体を読み出す必要があるので、2MBのメモリ領域を認証処理用に用意しておかなければならない。以上のように、本実施形態によれば、従来に比べて認証処理用に必要となるメモリ領域を大幅に低減することができる。また、第2ダイジェストテーブルのデータサイズを調整することによって、ランダムアクセス性とメモリの容量とを勘案して、認証処理に必要となるメモリ領域の大きさを調整することができる。
【0038】
以下、本実施形態における処理の詳細について説明する。なお、以下では、コンテンツ利用者に提供されるべきコンテンツがゲームプログラムであり、図1に示すデータ1〜4がメモリカードに記憶されてコンテンツ利用者に提供され、メモリカード内のゲームプログラムが携帯型のゲーム装置によって読み出されて実行される場合を例として説明する。
【0039】
(2)コンテンツ提供側におけるデータ生成処理
まず、図1に示すデータ構造を生成する処理の詳細について図2および図3を用いて説明する。図2は、図1に示す各データをメモリカードに書き込むための書込装置の構成を示すブロック図である。図2において、書込装置6は、記憶部7、制御部8、および書込部9を備えている。書込装置6は、コンテンツ1の提供者側に設けられる。
【0040】
図2に示す記憶部7は、コンテンツ1、ダイジェスト値を算出するためのハッシュ関数、および、電子署名を生成するために用いられる暗号化鍵を記憶している。制御部8は、記憶部7に記憶されているデータを用いて、第1および第2ダイジェストテーブル2および3と電子署名4とを生成する。書込部9は、記憶媒体の一例であるメモリカード17にアクセス可能であり、制御部8の指示に従ってデータをメモリカード17に書き込む。
【0041】
図3は、図1に示す各データをメモリカードに書き込むための処理の流れを示すフローチャートである。図3に示す処理は、書込装置6の制御部8によって実行される。なお、典型的には、制御部8が所定のデータ生成プログラムを実行することによって図3に示す処理が実行される。
【0042】
図3に示すステップS1において、制御部8は、記憶部7に記憶されているコンテンツ1から第1ダイジェストテーブル2を生成する。すなわち、第1ダイジェストテーブル2に含まれる複数の1次ダイジェスト値を算出する。上述のように、1次ダイジェスト値は、コンテンツ1に含まれるブロック毎に算出される。つまり、制御部8は、コンテンツ1の各ブロックのそれぞれに対してハッシュ関数を適用することによって、各ブロックに対応する複数の1次ダイジェスト値を算出する。なお、1次ダイジェスト値を算出するために用いられるハッシュ関数を第1ハッシュ関数と呼ぶ。第1ハッシュ関数は記憶部7に記憶されている。ステップS1において算出された複数の1次ダイジェスト値は、第1ダイジェストテーブル2として記憶部7に記憶される。
【0043】
ステップS2において、制御部8は、ステップS1で算出された第1ダイジェストテーブル2から第2ダイジェストテーブル3を生成する。すなわち、第2ダイジェストテーブル3に含まれる複数の2次ダイジェスト値を算出する。上述のように、2次ダイジェスト値は、第1ダイジェストテーブル2に含まれるグループ毎に算出される。つまり、制御部8は、第1ダイジェストテーブル2の各グループのそれぞれに対してハッシュ関数を適用することによって、各グループに対応する複数の2次ダイジェスト値を算出する。なお、2次ダイジェスト値を算出するために用いられるハッシュ関数を第2ハッシュ関数と呼ぶ。第2ハッシュ関数は記憶部7に記憶されている。本実施形態では、第1ハッシュ関数および第2ハッシュ関数は同じものである。より具体的には、本実施形態では、第1ハッシュ関数および第2ハッシュ関数としてMD−5(Message Digest 5)を用いる。ステップS2において算出された複数の2次ダイジェスト値は、第2ダイジェストテーブル3として記憶部7に記憶される。
【0044】
ステップS3において、制御部8は、第2ダイジェストテーブル3から電子署名4を生成する。具体的には、制御部8はまず、第2ダイジェストテーブル3に所定の電子署名生成用ハッシュ関数を適用することによって第2ダイジェストテーブル3のダイジェスト値を算出する。本実施形態において、電子署名生成用ハッシュ関数は、上記第1および第2ハッシュ関数とは異なるものを使用する。具体的には、電子署名生成用ハッシュ関数としてSHA−1(Secure Hash Algorithm 1)を用いる。さらに、制御部8は、算出されたダイジェスト値を秘密鍵で暗号化することによって電子署名4を生成する。秘密鍵は、コンテンツ1(ゲームプログラム)を利用するゲーム装置側で用いられる公開鍵と対になる暗号化鍵であり、記憶部7に記憶されている。以上のように生成された電子署名4は記憶部7に記憶される。
【0045】
ステップS4において、コンテンツ1とともに、ステップS1〜S3で生成された第1ダイジェストテーブル2、第2ダイジェストテーブル3、および電子署名4がメモリカード17に書き込まれる。すなわち、制御部8は、これらの各データ1〜4をメモリカード17に書き込む指示を書込部9に与える。書込部9は、この指示に従って各データ1〜4をメモリカード17に書き込む。なお、メモリカード17はROM17aおよびRAM17bを搭載しており(図5参照)、各データ1〜4はROM17aに書き込まれる。上記ステップS4の後、制御部8は図3に示す処理を終了する。
【0046】
本実施形態では、上記ステップS1〜S4によってデータ1〜4が書き込まれたメモリカード17が、コンテンツ提供者からコンテンツ利用者へ提供される。コンテンツ利用者は、取得したメモリカード17を図4に示すゲーム装置10に装着することによって、メモリカード17内のコンテンツ(ゲームプログラム)1を利用する。
【0047】
(3)コンテンツ利用側における認証処理
次に、コンテンツ利用側において行われるコンテンツ1の認証処理の詳細について図4〜図8を用いて説明する。図4は、本実施形態に係る認証装置の一例であるゲーム装置の外観図である。図1において、ゲーム装置10は、表示手段である第1LCD(Liquid Crystal Display:液晶表示装置)11および第2LCD12、ハウジング13、操作スイッチ部14、ならびに、タッチパネル15を含む。また、ゲーム装置10には、上記メモリカード17が着脱自在に装着される。
【0048】
ハウジング13は上側ハウジング13aと下側ハウジング13bとによって構成されており、第1LCD11は上側ハウジング13aに収納され、第2LCD12は下側ハウジング13bに収納される。第1LCD11および第2LCD12の解像度はいずれも256dot×192dotである。なお、本実施形態では表示装置としてLCDを用いているが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置など、他の任意の表示装置を利用することができる。また任意の解像度のものを利用することができる。
【0049】
上側ハウジング13aには、1対のスピーカ30aおよび30bからの音を外部に放出するための音抜き孔18a、18bが形成されている。
【0050】
下側ハウジング13bには、メモリカード17を装着するための挿入口が設けられる。また、下側ハウジング13bには、入力装置として、操作スイッチ部14、すなわち、十字スイッチ14a、スタートスイッチ14b、セレクトスイッチ14c、Aボタン14d、Bボタン14e、Xボタン14f、Yボタン14g、Lボタン14L、およびRボタン14Rが設けられている。また、さらなる入力装置として、第2LCD12の画面上にタッチパネル15が装着されている。下側ハウジング13bには、第2LCD12の周囲に音孔33aが設けられる。マイク33はこの音孔付近のハウジング13b内部側に設けられ、音孔33aから入ってくるハウジング外部の音を入力して電気信号(音声信号)に変換する。下側ハウジング13bには、電源スイッチ19や、メモリカード17やスティック16を収納するための挿入口が設けられている。
【0051】
タッチパネル15としては、例えば抵抗膜方式や光学式(赤外線方式)や静電容量結合式など、任意の方式のものを利用することができる。タッチパネル15は、その表面をスティック16で触れると、その接触位置に対応する座標データを出力する機能を有している。なお、以下ではプレイヤがタッチパネル15をスティック16で操作するものとして説明を行うが、スティック16の代わりにペン(スタイラスペン)や指でタッチパネル15を操作することももちろん可能である。本実施形態では、タッチパネル15として、第2LCD12の解像度と同じく256dot×192dotの解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネル15の解像度と第2LCD12の解像度が一致している必要はない。
【0052】
次に、図5を参照してゲーム装置10の内部構成を説明する。図5において、ハウジング13に収納される電子回路基板20には、CPUコア21が実装される。CPUコア21には、バス22を介して、コネクタ23が接続されるとともに、入出力インターフェース回路(図面ではI/F回路と記す)25、第1GPU(Graphics Processing Unit)26、第2GPU27、RAM24、およびLCDコントローラ31が接続される。コネクタ23には、メモリカード17が着脱自在に接続される。メモリカード17は、図1に示すデータ1〜4を記憶するROM17aと、バックアップデータを書き換え可能に記憶するRAM17bを搭載する。メモリカード17のROM17aに記憶されたゲームプログラム(コンテンツ1)は、ゲーム装置10の記憶手段であるRAM24にロードされ、RAM24にロードされたゲームプログラムがCPUコア21によって実行される。RAM24には、ゲームプログラムの他にも、CPUコア21がゲームプログラムを実行して得られる一時的なデータや、ゲーム画像を生成するためのデータが記憶される。
【0053】
I/F回路25には、操作スイッチ部14、タッチパネル15、右スピーカ30a、左スピーカ30b、および、マイク33が接続される。右スピーカ30aと左スピーカ30bは、音抜き孔18a、18bの内側にそれぞれ配置される。ゲームの効果音等を出力する際、CPUコア21は、RAM24等に記憶された音声データ(音源)をI/F回路25から図示しないA/D変換回路やアンプ等を介して各スピーカ30aおよび30bへ出力する。これによって、各スピーカ30aおよび30bは音声データにより表される音声を出力する。また、マイク33に入力された音声を示す音声データは、I/F回路25を介してRAM24に記憶される。
【0054】
第1GPU26には、第1VRAM(Video RAM)28が接続され、第2GPU27には、第2VRAM29が接続される。第1GPU26は、CPUコア21からの指示に応じて、RAM24に記憶されているゲーム画像を生成するためのデータに基づいて第1のゲーム画像を生成し、第1VRAM28に描画する。第2GPU27は、同様にCPUコア21からの指示に応じて第2のゲーム画像を生成し、第2VRAM29に描画する。第1VRAM28および第2VRAM29はLCDコントローラ31に接続されている。
【0055】
LCDコントローラ31はレジスタ32を含む。レジスタ32はCPUコア21からの指示に応じて0または1の値を記憶する。LCDコントローラ31は、レジスタ32の値が0の場合は、第1VRAM28に描画された第1のゲーム画像を第1LCD11に出力し、第2VRAM29に描画された第2のゲーム画像を第2LCD12に出力する。また、レジスタ32の値が1の場合は、第1VRAM28に描画された第1のゲーム画像を第2LCD12に出力し、第2VRAM29に描画された第2のゲーム画像を第1LCD11に出力する。
【0056】
なお、上記のようなゲーム装置10の構成は単なる一例に過ぎず、本発明に係る認証装置は、コンテンツ1を再生および/または実行する任意のコンピュータシステムによって実現することができる。
【0057】
以下、ゲーム装置10において行われる認証処理の詳細について説明する。図6は、ゲーム装置10のRAM24に記憶される主なデータを示す図である。図6において、RAM24には、認証プログラム記憶領域41、コンテンツ記憶領域42、第1ハッシュ関数記憶領域43、第2ハッシュ関数記憶領域44、および電子署名用データ記憶領域45が設けられる。
【0058】
認証プログラム記憶領域41には、コンテンツ1に対する認証処理を実行するための認証プログラムが記憶される。認証プログラムは、メモリカード17から取得されるプログラムではなく、予め記憶されている。
【0059】
コンテンツ記憶領域42には、メモリカード17に記憶されているコンテンツ1の一部のデータが記憶される。ゲーム装置10は、コンテンツ1のうちで必要となる部分データをコンテンツ記憶領域42に適宜読み出し、読み出した部分データを利用してゲーム処理を実行する。
【0060】
第1ハッシュ関数記憶領域43には、上記第1ハッシュ関数が記憶される。また、第2ハッシュ関数記憶領域44には、上記第2ハッシュ関数が記憶される。第1および第2ハッシュ関数のデータは、認証プログラムと同様、予め記憶されている。なお、第1ハッシュ関数と第2ハッシュ関数とを同じハッシュ関数とする場合には、第1および第2ハッシュ関数記憶領域43および44のいずれかのみを設けておけばよい。
【0061】
電子署名用データ記憶領域45には、電子署名4を用いた認証に必要なデータ、すなわち、上記電子署名生成用ハッシュ関数および公開鍵のデータが記憶される。この公開鍵は、上記書込装置6において記憶される暗号鍵と対になる鍵である。なお、電子署名4を用いた認証に必要なデータは、認証プログラムと同様、予め記憶されている。
【0062】
なお、RAM24には、上記記憶領域41〜45に記憶されるデータの他、後述する認証処理において用いられる各種データが記憶される。
【0063】
次に、認証処理の詳細を説明する。本実施形態においては、認証処理は、メモリカード17がゲーム装置10に装着された際に実行される認証処理(第1認証処理)と、ゲーム装置10がメモリカード17からコンテンツ1のデータを読み出す際に実行される処理(第2および第3認証処理)とに分けられる。具体的には、第1認証処理は、メモリカード17がゲーム装置10に装着されたことに応じて実行され、第2および第3認証処理は、ゲーム装置10がメモリカード17からコンテンツ1のデータを読み出す際に実行される。
【0064】
図7は、ゲーム装置10において実行される第1認証処理の流れを示すフローチャートである。図7に示す第1認証処理は、ゲーム装置10にメモリカードが装着されたことに応じて実行される。第1認証処理は、メモリカードに記憶されているコンテンツが正当な提供者によるものである否かとは無関係に実行される。なお、第1認証処理においてコンテンツ1の読み込みが許可されるまでは、ゲーム装置10はコンテンツ1の読み込みを行わない。
【0065】
図7に示すステップS11において、CPUコア21は、ゲーム装置10に装着されたメモリカード17から第2ダイジェストテーブル3および電子署名4をRAM24に読み込む。ステップS11の後に実行されるステップS12〜S16において、第1認証処理、すなわち、第2ダイジェストテーブル3および電子署名4を用いたコンテンツ1の認証処理が行われる。
【0066】
続くステップS12において、CPUコア21は、読み込まれた電子署名4を復号することによってダイジェスト値を生成する。電子署名4の復号処理は、電子署名用データ記憶領域45に記憶されている公開鍵のデータを用いて行われる。さらにステップS13において、読み込まれた第2ダイジェストテーブル3からダイジェスト値を算出する。ダイジェスト値は、第2ダイジェストテーブル3に電子署名生成用ハッシュ関数を適用することによって算出される。電子署名生成用ハッシュ関数は、電子署名用データ記憶領域45に記憶されている。なお、他の実施形態では、ステップS12の処理およびステップS13の処理は、いずれが先に実行されてもよいし、並列的に実行されてもよい。
【0067】
ステップS14において、CPUコア21は、ステップS12で生成されたダイジェスト値と、ステップS13で算出されたダイジェスト値とが一致するか否かを判定する。これら2つのダイジェスト値が一致する場合、第1認証処理における認証が成功したと判断され、ステップS15の処理が実行される。一方、これら2つのダイジェスト値が一致しない場合、第1認証処理における認証が失敗したと判断され、ステップS16の処理が実行される。
【0068】
ステップS15においては、コンテンツ1の読み込み(ゲーム処理の実行)が許可され、CPUコア21は図7に示す第1認証処理を終了する。これによって、ステップS15以降において、コンテンツ1を用いたゲーム処理が実行される。ステップS15によって、第1認証処理による認証においてはコンテンツ1の正当性が認証されたこととなる。なお、本実施形態においては、第1認証処理による認証においてコンテンツ1の正当性が認証されても、第1認証処理の後に実行される第2認証処理および第3認証処理においてコンテンツ1の正当性が認証されないこともある。
【0069】
一方、ステップS16においては、コンテンツ1の読み込み(ゲーム処理の実行)が禁止される。このとき、コンテンツ1に含まれるゲームプログラムを実行することは不可能であるので、CPUコア21は、図7に示す処理を終了する。なお、ステップS16において、CPUコア21は、メモリカード17内のコンテンツ1が不正なものであることを示すメッセージ(例えば「このメモリカードは使用できません」等)を第1LCD11または第2LCD12の画面に表示させるようにしてもよい。
【0070】
なお、図7に示す第1認証処理が終了した後、CPUコア21は、RAM24に記憶されている第2ダイジェストテーブルから算出されたダイジェスト値、および、電子署名4のデータをRAM24から削除しても構わない。また、本実施形態においては、後述する第2認証処理において用いるので第2ダイジェストテーブルはRAM24に保持しておく。
【0071】
上記第1認証処理においてコンテンツ1の正当性が認証された場合、CPUコア21は、コンテンツ1に含まれるゲームプログラムを読み出して実行する処理、および、コンテンツ1に含まれるゲームデータ(画像データや音データ等)を読み出す処理等を行うことによって、ゲーム処理を進める。ここで、コンテンツ1のデータはブロック単位でゲーム装置10に読み込まれる。また、コンテンツ1の1ブロック分の部分データが読み込まれる時に、第2認証処理および第3認証処理が実行される。以下、第2認証処理および第3認証処理の詳細を説明する。
【0072】
図8は、ゲーム装置10において実行される第2および第3認証処理の流れを示すフローチャートである。図8に示す第2および第3認証処理は、ゲーム装置10が1ブロック分のコンテンツ1を読み出したことに応じて実行される。なお、第2および第3認証処理において読み出されたコンテンツ1の利用が許可されるまでは、ゲーム装置10はコンテンツ1を利用しない、すなわち、コンテンツ1に基づくゲーム処理を実行しない。
【0073】
図8に示すステップS21において、CPUコア21は、コンテンツ1の部分データ(部分コンテンツデータ)のうちで読み出すべき部分コンテンツデータのブロックを指定する。なお、読み出すべきコンテンツ部分データは、それまでに実行されたゲーム処理によって決められる。また、コンテンツ1に含まれる各ブロックのうちで最初に読み出すべき部分コンテンツデータが含まれるブロックは予め定められており、ゲーム装置10がコンテンツを最初に読み出す際には、CPUコア21は、当該予め定められたブロックを指定する。
【0074】
ステップS21の後のステップS22〜S25において第2認証処理が実行される。第2認証処理では、第1ダイジェストテーブル2に含まれる各グループのうちで、ステップS21で指定されたブロックに対応するグループに含まれる1次ダイジェスト値について正当性の認証が行われる。
【0075】
ステップS22において、CPUコア21は、ステップS21で指定されたブロックに対応するグループを指定する。つまり、当該ブロックに含まれる部分コンテンツデータに対応する1次ダイジェスト値を含むグループを指定する。例えば、図1に示すブロックAが指定された場合、ブロックAに対応するグループとして、1次ダイジェスト値A〜Dからなるグループが指定される。
【0076】
続くステップS23において、CPUコア21は、指定されたグループの1次ダイジェスト値をメモリカード17から読み出す。読み出されたデータは、RAM24に記憶される。なお、ステップS23では、前回のステップS23においてRAM24に記憶されたグループのデータに上書きする形で、新たなグループのデータがRAM24に記憶される。つまり、RAM24内には最新の1グループのデータのみが記憶されるので、RAM24には第1ダイジェストテーブル用の記憶領域として1グループ分の記憶領域を用意しておけばよい。
【0077】
さらに、ステップS24において、指定されたグループの1次ダイジェスト値から、当該グループに対応する第2ダイジェスト値が算出される。このダイジェスト値は、指定されたグループに含まれる複数の第1ダイジェスト値に第2ハッシュ関数を適用することによって算出される。第2ハッシュ関数は、第2ハッシュ関数記憶領域44に記憶されている。
【0078】
ステップS25において、CPUコア21は、ステップS24で算出された2次ダイジェスト値が、指定されたグループに対応する2次ダイジェスト値と一致するか否かを判定する。なお、当該2次ダイジェスト値は、図7に示すステップS11ですでにRAM24に読み込まれている第2ダイジェストテーブル3から得られる。例えば、図1に示す1次ダイジェスト値A〜Dからなるグループが指定された場合、当該グループに対応する2次ダイジェスト値は、図1に示す2次ダイジェスト値aとなる。ステップS25の判定において、これら2つのダイジェスト値が一致する場合、第2認証処理における認証が成功したと判断され、ステップS26の処理が実行される。一方、これら2つのダイジェスト値が一致しない場合、第2認証処理における認証が失敗したと判断され、ステップS30の処理が実行される。
【0079】
上記第2認証処理における認証が成功した場合、ステップS26〜S29において第3認証処理が実行される。第3認証処理では、コンテンツ1に含まれる各ブロックのうちのステップS21で指定されたブロックについて正当性の認証が行われる。
【0080】
ステップS26において、CPUコア21は、指定されたブロック(ブロックに含まれる部分コンテンツデータ)をメモリカード17から読み出す。読み出されたデータは、RAM24のコンテンツ記憶領域42に記憶される。なお、コンテンツ記憶領域42には少なくとも1ブロック分のコンテンツ1を記憶することができればよいが、複数ブロック分(例えば2ブロック分)のコンテンツをコンテンツ記憶領域42記憶しておくようにしてもよい。
【0081】
続くステップS27において、指定されたブロックに対応する1次ダイジェスト値が算出される。このダイジェスト値は、指定されたブロックに含まれる部分コンテンツデータに第1ハッシュ関数を適用することによって算出される。第1ハッシュ関数は、第1ハッシュ関数記憶領域43に記憶されている。
【0082】
ステップS28において、CPUコア21は、指定されたブロックに対応する1次ダイジェスト値と、ステップS27で算出された第1ダイジェスト値とが一致するか否かを判定する。なお、当該1次ダイジェスト値は、ステップS23ですでにRAM24に読み込まれている第1ダイジェストテーブル2から得られる。これら2つのダイジェスト値が一致する場合、第3認証処理における認証が成功したと判断され、ステップS29の処理が実行される。一方、これら2つのダイジェスト値が一致しない場合、第3認証処理における認証が失敗したと判断され、ステップS30の処理が実行される。
【0083】
ステップS29においては、CPUコア21は、読み込まれたブロックの利用を許可し、当該ブロックに基づく処理を実行する。例えば、読み込まれたブロックがゲームプログラムであれば、CPUコア21がゲームプログラムを実行することによってゲーム処理が実行される。なお、本実施形態において、コンテンツ1は例えばブロック単位で暗号化されていてもよく、コンテンツ1が暗号化されている場合には、暗号化されたコンテンツ1のデータがステップS29(またはステップS26でもよい)において復号される。ステップS29の後、CPUコア21は図8に示す処理を終了する。その後、ゲーム処理においてコンテンツ1を読み出すことが必要になれば、図8に示す処理が再度行われる。図8に示す処理は、コンテンツ1のブロックが読み出される度に行われる。
【0084】
なお、他の実施形態においては、メモリカード17に記憶されている第1および第2ダイジェストテーブル2および3もコンテンツ1と同様に暗号化されていてもよい。このとき、CPUコア21は、上記ステップS23で第1ダイジェストテーブル2を復号化する。また、第2ダイジェストテーブル3についてはステップS11で復号化する。また、各データ1〜3を暗号化する方式や鍵は、一致している必要はない。
【0085】
一方、ステップS30においては、コンテンツ1の利用が禁止され、CPUコア21は、図8に示す処理を終了する。なお、ステップS30においてもステップS16と同様、メモリカード17内のコンテンツ1が不正なものであることを示すメッセージが第1LCD11または第2LCD12の画面に表示されてもよい。また、ステップS30の後、CPUコア21は、ゲーム処理を実行中であっても当該ゲーム処理を中止する。
【0086】
以上のように、本実施形態によれば、第1〜第3認証処理において、第1ダイジェストテーブル2の全体をRAM24に読み出す必要はなく、第2ダイジェストテーブル3と第1ダイジェストテーブル2のうちの1つのグループとを読み出すだけで認証を行うことができる。したがって、第1ダイジェストテーブル2の全体を読み出す従来の方法に比べて、認証処理用に必要となるメモリ領域を低減することができる。
【0087】
なお、コンテンツ記憶領域42が複数ブロック分のコンテンツ1のデータを記憶可能な場合には、コンテンツ記憶領域42にすでに記憶されているコンテンツ1のデータについては、第2および第3認証処理を省略するようにしてもよい。具体的には、CPUコア21は、図8に示す処理において、上記ステップS22の処理の前に、ステップS21で指定されたブロックがコンテンツ記憶領域42にすでに記憶されているか否かを判定するようにしてもよい。そして、ブロックがすでに記憶されている場合には、ステップS22〜S28の処理をスキップしてステップS29の処理を実行するようにしてもよい。
【0088】
なお、上記実施形態においては、電子署名生成用ハッシュ関数としては、第1および第2ハッシュ関数よりも強い(破られにくい、すなわち、セキュリティレベルが高い)ハッシュ関数を用いることが好ましい。これは、電子署名生成用ハッシュ関数については、メモリカード17が装着された時点で1回のみ用いられるので、セキュリティを重視した関数を用いることが好ましいからである。なお、ハッシュ関数のセキュリティレベルは、ダイジェスト値の計算処理におけるビット数や、ダイジェスト値のビット数や、暗号化付きであるか否か等によって決まる。すなわち、ダイジェスト値の計算処理におけるビット数やダイジェスト値のビット数が相対的に大きいハッシュ関数は、これらのビット数が相対的に小さいハッシュ関数に比べて強いと言える。また、暗号化付きのハッシュ関数(鍵付きハッシュ関数)は、暗号化付きでないハッシュ関数に比べて相対的に強いと言える。
【0089】
また、上記実施形態においては、第1ハッシュ関数と第2ハッシュ関数とを同じものとした。ここで、他の実施形態においては、第2認証処理および第3認証処理の処理量を軽減する目的で、第1ハッシュ関数と第2ハッシュ関数とを異なるものとしてもよい。このとき、第2ハッシュ関数として、ダイジェスト値を算出するための処理量が第1ハッシュ関数よりも少ないハッシュ関数を用いることが好ましい。換言すれば、第1ハッシュ関数として第2ハッシュ関数よりも強いハッシュ関数を用いることが好ましい。例えば、他の実施形態では、第1ハッシュ関数としてSHA−1を用い、第2ハッシュ関数としてMD−5を用いることが考えられる。なお、このとき、電子署名生成用ハッシュ関数は第1および第2ハッシュ関数よりも強いものが好ましいので、電子署名生成用ハッシュ関数としては例えばSHA−256を用いる。
【0090】
第1ハッシュ関数として第2ハッシュ関数よりも強いハッシュ関数を用いる理由は、第2ハッシュ関数が破られるよりも第1ハッシュ関数が破られる方がコンテンツ1の改ざんが容易になるからである。第1ハッシュ関数は、コンテンツ1と1次ダイジェスト値との関係を示すものであるので、第1ハッシュ関数が破られるとコンテンツ1を直接改ざんできるのに対し、第2ハッシュ関数が破られてもコンテンツ1を直接改ざんすることはできない。したがって、第2認証処理および第3認証処理の処理量を軽減する目的でいずれかのハッシュ関数のセキュリティレベルを下げるのであれば、第2ハッシュ関数のセキュリティレベルを下げる方が好ましい。
【0091】
また、上記実施形態においては、図1に示すデータ構造がメモリカード等の記憶媒体に記憶されてコンテンツ利用者に提供される形態を例として説明した。ここで、他の実施形態では、図1に示すデータ構造がネットワークを介して通信によってコンテンツ利用者に提供される形態であってもよい。例えば、認証装置(例えば上記ゲーム装置10)と、上記データ構造を記憶したサーバ装置とがネットワークを介して通信可能なシステムに本発明を適用することも可能である。なお、このシステムにおける認証装置の動作は、メモリカードからデータを読み込む処理に代えて、サーバ装置からデータを受信する処理を行う点以外は、上記実施形態と同様の処理である。
【産業上の利用可能性】
【0092】
本発明は、照合処理を効率良く行うとともに、認証のために要するメモリ容量を低減すること等を目的として、例えばゲームプログラムを利用者に提供するシステムや、当該システムにおいて用いられるゲーム装置等に適用することが可能である。
【符号の説明】
【0093】
1 コンテンツ
2 第1ダイジェストテーブル
3 第2ダイジェストテーブル
4 電子署名
6 書込装置
7 記憶部
8 制御部
9 書込部
10 ゲーム装置
17 メモリカード
21 CPUコア
24 RAM
41 認証プログラム記憶領域
42 コンテンツ記憶領域
43 第1ハッシュ関数記憶領域
44 第2ハッシュ関数記憶領域
45 電子署名用データ記憶領域

【特許請求の範囲】
【請求項1】
コンテンツデータを認証する認証装置において用いられる方法であって、
前記認証装置がアクセス可能な記憶手段には、前記コンテンツデータと、当該コンテンツデータを構成する部分コンテンツデータに対応するダイジェスト値である1次ダイジェスト値を含む第1ダイジェストテーブルと、当該第1ダイジェストテーブルを構成する部分第1ダイジェストテーブルに対応するダイジェスト値である2次ダイジェスト値を含む第2ダイジェストテーブルと、当該第2ダイジェストテーブルに含まれる2次ダイジェスト値から生成される電子署名とが記憶されており、
前記第2ダイジェストテーブルと前記電子署名とを前記記憶手段から前記認証装置のメモリに読み出す第1読み出しステップと、
前記メモリに読み出された電子署名と、前記メモリに読み出された第2ダイジェストテーブルに含まれる2次ダイジェスト値とを用いて前記コンテンツデータの正当性を認証する第1認証ステップとを含む、認証方法。
【請求項2】
前記2次ダイジェスト値は、複数の1次ダイジェスト値のグループ毎に算出され、
前記部分コンテンツデータのうちから読み出すべき部分コンテンツデータを指定する指定ステップと、
前記指定された部分コンテンツデータに対応する1次ダイジェスト値を含むグループから、当該グループに対応する2次ダイジェスト値を算出する第1算出ステップと、
前記第1算出ステップにおいて算出された2次ダイジェスト値と、前記指定された部分コンテンツデータに対応する1次ダイジェスト値を含むグループに対応する2次ダイジェスト値とを照合することによって前記コンテンツデータの正当性を認証する第2認証ステップと、
前記第2認証ステップにおける認証が成功した場合、前記指定された部分コンテンツデータから当該部分コンテンツデータの1次ダイジェスト値を算出する第2算出ステップと、
前記第2算出ステップにおいて算出された1次ダイジェスト値と、前記指定された部分コンテンツデータに対応する1次ダイジェスト値とを照合することによって前記コンテンツデータの正当性を認証する第3認証ステップとをさらに含む、請求項1に記載の認証方法。
【請求項3】
前記第1認証ステップは、前記認証装置と前記記憶手段とがアクセス可能となった後、前記第2認証ステップが実行される前に実行される、請求項2に記載の認証方法。
【請求項4】
前記部分コンテンツデータから1次ダイジェスト値を算出するためのハッシュ関数と、前記部分第1ダイジェストテーブルから2次ダイジェスト値を算出するためのハッシュ関数とは同一であることを特徴とする、請求項2に記載の認証方法。
【請求項5】
前記電子署名は、第2ダイジェストテーブルに含まれる複数の2次ダイジェスト値に対応するダイジェスト値に基づいて生成され、当該ダイジェスト値を算出するためのハッシュ関数は、前記部分コンテンツデータから1次ダイジェスト値を算出するためのハッシュ関数よりもセキュリティレベルが高いことを特徴とする、請求項4に記載の認証方法。
【請求項6】
前記部分第1ダイジェストテーブルから2次ダイジェスト値を算出するためのハッシュ関数は、前記部分コンテンツデータから1次ダイジェスト値を算出するためのハッシュ関数よりも、ダイジェスト値を算出するための処理量が少ないことを特徴とする、請求項2に記載の認証方法。
【請求項7】
前記第1認証ステップにおいて用いられるハッシュ関数は、前記部分第1ダイジェスト

テーブルから2次ダイジェスト値を算出するためのハッシュ関数、および、前記部分コンテンツデータから1次ダイジェスト値を算出するためのハッシュ関数よりもセキュリティレベルが高いことを特徴とする、請求項1に記載の認証方法。
【請求項8】
コンテンツデータを認証する認証装置であって、
前記認証装置がアクセス可能な記憶手段には、前記コンテンツデータと、当該コンテンツデータを構成する部分コンテンツデータに対応するダイジェスト値である1次ダイジェスト値を含む第1ダイジェストテーブルと、当該第1ダイジェストテーブルを構成する部分第1ダイジェストテーブルに対応するダイジェスト値である2次ダイジェスト値を含む第2ダイジェストテーブルと、当該第2ダイジェストテーブルに含まれる2次ダイジェスト値から生成される電子署名とが記憶されており、
前記第2ダイジェストテーブルと前記電子署名とを前記記憶手段から前記認証装置のメモリに読み出す読み出し手段と、
前記メモリに読み出された電子署名と、前記メモリに読み出された第2ダイジェストテーブルに含まれる2次ダイジェスト値とを用いて前記コンテンツデータの正当性を認証する認証手段とを備える、認証装置。
【請求項9】
コンテンツデータを認証する認証装置のコンピュータにおいて実行される認証処理プログラムであって、
前記認証装置がアクセス可能な記憶手段には、前記コンテンツデータと、当該コンテンツデータを構成する部分コンテンツデータに対応する1次ダイジェスト値を含む第1ダイジェストテーブルと、当該第1ダイジェストテーブルを構成する部分第1ダイジェストテーブルに対応するダイジェスト値である2次ダイジェスト値を含む第2ダイジェストテーブルと、当該第2ダイジェストテーブルに含まれる2次ダイジェスト値から生成される電子署名とが記憶されており、
前記第2ダイジェストテーブルと前記電子署名とを前記記憶手段から前記認証装置のメモリに読み出す読み出しステップと、
前記メモリに読み出された電子署名と、前記メモリに読み出された第2ダイジェストテーブルに含まれる2次ダイジェスト値とを用いて前記コンテンツデータの正当性を認証する認証ステップとを前記コンピュータに実行させる認証処理プログラム。
【請求項10】
記憶手段に記憶すべきデータを生成するデータ処理方法であって、
コンテンツデータを構成する部分コンテンツデータに対応するダイジェスト値である1次ダイジェスト値を算出する第1算出ステップと、
前記第1算出ステップにおいて算出された第1ダイジェスト値を含む第1ダイジェストテーブルを構成する部分第1ダイジェストテーブルに対応するダイジェスト値である第2ダイジェスト値を算出する第2算出ステップと、
前記第2算出ステップにおいて算出された第2ダイジェスト値を含む第2ダイジェストテーブルから電子署名を生成する電子署名生成ステップと、
前記コンテンツデータと、前記第1ダイジェストテーブルと、前記第2ダイジェストテーブルと、前記電子署名とを前記記憶手段に記憶すべきデータとして設定する設定ステップとを含む、データ処理方法。
【請求項11】
コンテンツデータと、
前記コンテンツデータを構成する部分コンテンツに対応するダイジェスト値である第1ダイジェスト値を含む第1ダイジェストテーブルと、
前記第1ダイジェストテーブルを構成する部分第1ダイジェストテーブルに対応するダイジェスト値である第2ダイジェスト値を含む第2ダイジェストテーブルと、
前記第2ダイジェストテーブルから生成される電子署名とを含む、データ構造。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2012−114934(P2012−114934A)
【公開日】平成24年6月14日(2012.6.14)
【国際特許分類】
【出願番号】特願2012−2506(P2012−2506)
【出願日】平成24年1月10日(2012.1.10)
【分割の表示】特願2006−189696(P2006−189696)の分割
【原出願日】平成18年7月10日(2006.7.10)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】