(57)【要約】  【課題】インテグリティチェックデータが格納されているフラッシュメモリの劣化対策を実現するデータ格納装置を提供する。  【解決手段】コンテンツ再生装置１０００は、再生履歴情報の改ざんの有無を確認するためのインテグリティチェックデータ（確認データ）として、再生履歴情報のハッシュ値を用いる。そして、第１のアドレス計算部１００４及び第２のアドレス計算部１００６は、インテグリティチェックデータの読込先アドレス及び格納先アドレスを、そのハッシュ値を用いて決定する。これにより、フラッシュメモリにおけるインテグリティチェックデータの格納先を分散させ、フラッシュメモリの劣化を防止することができる。【選択図】  図１
2010027038.tif 000002
【特許請求の範囲】
【請求項１】
所定の情報を格納し耐タンパー技術により保護されていない非セキュア格納部と、
耐タンパー技術で保護され且つデータの書き込みの繰り返しによって劣化する性質を有するセキュア格納部と、
前記非セキュア格納部に格納された前記所定の情報に所定の計算を施してインテグリティチェックデータを生成する生成部と、
前記インテグリティチェックデータの所定領域を構成する数値列に基づいて、前記インテグリティチェックデータを格納する前記セキュア格納部の格納先アドレスを生成して、この生成された格納先アドレスに基づいて前記インテグリティチェックデータを前記セキュア格納部に格納する格納処理部と、を具備する
メモリ制御装置。
【請求項２】
コンテンツの再生部と、
前記コンテンツの再生に関する再生情報を格納し耐タンパー技術により保護されていない非セキュア格納部と、
耐タンパー技術で保護され且つデータの書き込みの繰り返しによって劣化する性質を有するセキュア格納部と、
前記非セキュア格納部に格納された前記再生情報に所定の計算を施してインテグリティチェックデータを生成する生成部と、
前記インテグリティチェックデータの所定領域を構成する数値列に基づいて、前記インテグリティチェックデータを格納する前記セキュア格納部の格納先アドレス生成して、この生成された格納先アドレスに基づいて前インテグリティチェックデータを前記セキュア格納部に格納する格納処理部と、を具備する
コンテンツ再生装置。
【請求項３】
コンテンツの再生部と、
前記コンテンツの再生に関する再生情報を格納し耐タンパー技術により保護されていない通常格納部と、
耐タンパー技術で保護され且つデータの書き込みの繰り返しによって劣化する性質を有するセキュア格納部と、
前記非セキュア格納部に格納された前記再生情報に所定の計算を施して第１インテグリティチェックデータを生成する生成部と、
前記第１インテグリティチェックデータの所定領域を構成する第１数値列に基づいて、前記第１インテグリティチェックデータを格納する前記セキュア格納部の第１格納先アドレス生成して、この生成された第１格納先アドレスに基づいて前記第１インテグリティチェックデータを前記セキュア格納部に格納する格納処理部と、
再生対象のコンテンツの再生情報を前記非セキュア格納部から読み出して前記所定の計算を施して第２インテグリティチェックデータを計算し、前記第２インテグリティチェックデータの所定領域を構成する第２数値列に基づいて生成された前記セキュア格納部の第２アドレスから所定のインテグリティチェックデータを読み出し、前記読み出した所定のインテグリティチェックデータと前記第１インテグリティチェックデータとを比較して一致した場合前記再生情報は改竄されていないと判断し、一方、不一致の場合前記再生情報は改竄されていると判断する検証部と、を具備した
コンテンツ再生装置。
【請求項４】
前記再生情報が改竄されていると前記検証部が判断した場合、前記再生部は前記コンテンツの再生を禁止することを特徴とする請求項３記載のコンテンツ再生装置。
【請求項５】
前記再生情報が改竄されていないと前記検証部が判断した場合、前記再生部は前記コンテンツを再生することを特徴とする請求項３記載のコンテンツ再生装置。
【請求項６】
前記再生部によりコンテンツが再生されると前記再生情報を更新して前記更新された再生情報を前記非セキュア格納部に格納する再生情報生成部を設け、
前記再生部は、前記再生情報が改竄されていないと前記検証部が判断した場合、前記コンテンツを再生し、
前記再生情報生成部は、前記コンテンツの再生により更新された再生情報を前記非セキュア格納部に格納し、
前記生成部は、前記更新された再生情報に前記所定の計算をして第３インテグリティチェックデータを生成し、
前記格納処理部は、前記セキュア格納部の前記第１格納先アドレスに格納されている前記第１インテグリティチェックデータの一部を書き換え、
前記格納処理部は、さらに、前記第３インテグリティチェックデータの所定領域を構成する第３数値列に基づいて、前記第３インテグリティチェックデータを格納する前記セキュア格納部の第３格納先アドレスを生成し、この生成された第３格納先アドレスに基づいて前記第３インテグリティチェックデータを前記セキュア格納部に格納することを特徴とする請求項３記載のコンテンツ再生装置。
【請求項７】
前記所定のインテグリティチェックデータが前記一部を書き換えた第１インテグリティチェックデータの場合、所定のインテグリティチェックデータと前記第１インテグリティチェックデータとを比較して不一致と判断することを特徴とする請求項６記載のコンテンツ再生装置。
【請求項８】
前記一部を書き換えた前記第１インテグリティチェックデータの第１格納先アドレスを保持した旧アドレス保持部を設け、
前記検証部は、前記旧アドレス保持部から読み出された第１格納先アドレスに基づいて、前記セキュア格納部から前記一部を書き換えた前記第１インテグリティチェックデータを前記所定のインテグリティチェックデータとして読み出し、
前記一部を書き換えた第１インテグリティチェックデータと前記第１インテグリティチェックデータとを比較して不一致と判断することを特徴とする請求項６記載のコンテンツ再生装置。
【請求項９】
前記セキュア格納部は、所定のサイズのブロックを最低書込み単位としてデータを書き込むフラッシュメモリであることを特徴とする請求項２記載のコンテンツ再生装置。
【請求項１０】
前記インテグリティチェックデータの所定領域を構成する数値列は、前記インテグリティチェックデータの下位所定ビットの数値列であることを特徴とする請求項２記載のコンテンツ再生装置。
【請求項１１】
前記所定の計算はハッシュ計算であり、前記インテグリティチェックデータはハッシュ値であることを特徴とする請求項２記載のコンテンツ再生装置。
【請求項１２】
前記再生情報は、前記コンテンツを再生した履歴を示す再生履歴情報であることを特徴とする請求項２記載のコンテンツ再生装置。
【請求項１３】
前記再生情報は、前記コンテンツの再生権利を示す情報であることを特徴とする請求項２記載のコンテンツ再生装置。
【請求項１４】
所定の情報を格納し耐タンパー技術により保護されていない非セキュア格納部と、
耐タンパー技術で保護され且つデータの書き込みの繰り返しによって劣化する性質を有するセキュア格納部と、を備えたメモリ制御装置の制御方法であって、
メモリ制御装置に、
前記非セキュア格納部に格納された前記所定の情報に所定の計算を施してインテグリティチェックデータを生成させ、
前記インテグリティチェックデータの所定領域を構成する数値列を基づいて、前記インテグリティチェックデータを格納する前記セキュア格納部の格納先アドレスを生成し、
この生成された格納先アドレスを用いて前記インテグリティチェックデータを前記セキュア格納部に格納する
ことを特徴とする制御方法。
【請求項１５】
所定の情報を格納し耐タンパー技術により保護されていない非セキュア格納部と、耐タンパー技術で保護され且つデータの書き込みの繰り返しによって劣化する性質を有するセキュア格納部と、を備えたメモリ制御装置を制御するコンピュータプログラムを格納した記憶媒体であって、
前記プログラムはメモリ制御装置のコンピュータに、
前記非セキュア格納部に格納された前記所定の情報に所定の計算を施してインテグリティチェックデータを生成させる処理と、
前記インテグリティチェックデータの所定領域を構成する数値列に基づいて前記インテグリティチェックデータを格納する前記セキュア格納部の格納先アドレスを生成する処理と、
この生成された格納先アドレスを用いて前記インテグリティチェックデータを前記セキュア格納部に格納する処理と、
を実行させることを特徴とする記憶媒体。
【請求項１６】
コンテンツの再生部と、前記コンテンツの再生に関する再生情報を格納し耐タンパー技術により保護されていない非セキュア格納部と、耐タンパー技術で保護され且つデータの書き込みの繰り返しによって劣化する性質を有するセキュア格納部と、を具備するコンテンツ再生装置の制御方法であって、
前記非セキュア格納部に格納された前記再生情報に所定の計算を施してインテグリティチェックデータを生成し、
前記インテグリティチェックデータの所定領域を構成する数値列に基づいて前記インテグリティチェックデータを格納する前記セキュア格納部の格納先アドレスを生成し、
この生成された格納先アドレスを用いて前記インテグリティチェックデータを前記セキュア格納部に格納する
ことを特徴とする制御方法。
【請求項１７】
コンテンツの再生部と、前記コンテンツの再生に関する再生情報を格納し耐タンパー技術により保護されていない非セキュア格納部と、耐タンパー技術で保護され且つデータの書き込みの繰り返しによって劣化する性質を有するセキュア格納部と、を具備するコンテンツ再生装置を制御するコンピュータプログラムを記憶した記憶媒体であって、
前記コンピュータプログラムは前記コンテンツ再生装置のコンピュータに対し、
前記非セキュア格納部に格納された前記再生情報に所定の計算を施してインテグリティチェックデータを生成する処理と、
前記インテグリティチェックデータの所定領域を構成する数値列に基づいて前記インテグリティチェックデータを格納する前記セキュア格納部の格納先アドレスを生成する処理と、
この生成された格納先アドレスを用いて前記インテグリティチェックデータを前記セキュア格納部に格納する処理と、
を実行させることを特徴とする記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はフラッシュメモリの劣化対策に関し、特に、コンテンツの不正利用を防止するために用いられるインテグリティチェックデータを格納するフラッシュメモリの劣化対策に関する発明である。
【背景技術】
【０００２】
近年、サーバからクライアントへコンテンツを送信し、クライアントにてコンテンツを視聴するコンテンツ配信システムが利用されるようになってきている。
上記システムにおけるコンテンツの販売形態としては、１回のみ視聴可能、視聴回数の制限を設ける、累積視聴時間の制限を設ける、視聴時間に応じて課金する等、様々なものがある（非特許文献１を参照）。コンテンツの試聴回数や累積視聴時間等に応じて課金する場合、視聴回数や視聴時間等の再生に関する情報（以下、「再生情報」と呼称する。）をクライアントにて管理する必要がある。
【０００３】
このとき、悪意のあるユーザや外部の攻撃者が、再生情報を改ざんしたり、再生情報の前の状態を保持しておき視聴後に前の状態の再生情報に戻すセーブリストア攻撃をしたりして、利用可能な範囲を超えてコンテンツを不正利用する可能性がある。
そこで、従来は、再生情報に対するハッシュ値などのインテグリティチェックデータをセキュアなメモリに格納して、再生情報の改ざんが行われているか否かをチェックすることで、コンテンツの不正利用を防止している。インテグリティチェックデータを格納するセキュアなメモリとして、不揮発性メモリであるフラッシュメモリを使用することが考えられる。しかし、フラッシュメモリは書き込みにより劣化し、最終的には破壊されてしまう。
【０００４】
特に、インテグリティチェックデータは、数秒から数分単位で頻繁に更新されることが多く、インテグリティチェックデータを格納するメモリとしてフラッシュメモリを用いると、書き込みが頻繁に発生することにより、劣化度合いが大きくなる。
特許文献１及び特許文献２は、フラッシュメモリの劣化対策を開示している。
特許文献１は、フラッシュメモリの格納領域に対するデータの書き込み回数が、劣化に耐え得る回数以下となるように制御する技術を開示している。具体的には、図１３（ａ）に示すように、格納領域に、データとデータを書き込んだ回数とを対にして格納し、現在使用している格納領域を示すポインタを、フラッシュメモリの最初の場所に格納する。そして、データを書き込んだ回数が、閾値を超えたときに、図１３（ｂ）に示すように、次の格納領域を使用するように、ポインタを更新する。その結果、すべての格納領域を閾値以下の書き込み回数となるように制御することができる。
【０００５】
また、特許文献２は、フラッシュメモリの各格納領域の使用頻度に基づいて、次に使用する格納領域を決定する技術を開示している。これにより、各格納領域の使用頻度を平均化して、フラッシュメモリの劣化を抑制することができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平８−３１４８０７号公報
【特許文献２】特開平１１−８５６２９号公報
【非特許文献】
【０００７】
【非特許文献１】Ｍａｒｌｉｎ  Ｕｓｅ  Ｃａｓｅｓ  Ｐａｒｔ  １，２，２００８年３月２４日、（ＵＲＬ：ｈｔｔｐ：／／ｗｗｗ．ｍａｒｌｉｎ−ｃｏｍｍｕｎｉｔｙ．ｃｏｍ／）
【非特許文献２】岡本龍明、山本博資著「現代暗号」、産業図書（１９９７年）
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１では、フラッシュメモリに格納されているインテグリティチェックデータの読み込み処理の際に、ポインタ及びデータの両方の読み込みが必要であり、また、書き込み処理の際に、ポインタの読み込みやデータとデータを書き込んだ回数との両方の書き込みが必要であるため、処理量が増加する。更に、通常、フラッシュメモリはブロック単位を最低書き込み単位として書き込むが、データと回数とをそれぞれ書き込むブロックが異なる場合に、データと回数との両方を書き込むことにより劣化度合いが大きくなる。また、特許文献２では、各領域の使用頻度を管理する必要がある。
【０００９】
このように、特許文献１及び特許文献２に記載の劣化対策は、データの読み込み及び書き込みに伴う処理量が増加するという問題がある。  
本発明は、上記の問題点に鑑みなされたものであって、上記の従来技術と比較して、読み込み及び書き込み時の処理量を少なくしつつ、インテグリティチェックデータを格納するセキュアなフラッシュメモリに適した劣化対策を実現するデータ格納装置、コンテンツ再生装置、データ格納方法、コンピュータプログラム、記録媒体及び集積回路を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記の目的を達成するために、本発明は、メモリ制御装置であって、所定の情報を格納し耐タンパー技術により保護されていない非セキュア格納部と、耐タンパー技術で保護され且つデータの書き込みの繰り返しによって劣化する性質を有するセキュア格納部と、前記非セキュア格納部に格納された前記所定の情報に所定の計算を施してインテグリティチェックデータを生成する生成部と、前記インテグリティチェックデータの所定領域を構成する数値列に基づいて、前記インテグリティチェックデータを格納する前記セキュア格納部の格納先アドレスを生成して、この生成された格納先アドレスに基づいて前記インテグリティチェックデータを前記セキュア格納部に格納する格納処理部と、を具備することを特徴とする。
【発明の効果】
【００１１】
上記の構成によると、非セキュア格納部に格納された所定の情報に所定の計算を施して生成されたインテグリティチェックデータの一部に基づいて、前記セキュア格納部の格納先アドレスを生成することにより、所定の情報が更新される毎に生成されたインテグリティチェックデータも異なるので、前記セキュア格納部の所定領域に書き込みが集中して前記セキュア格納部が劣化するのを抑制できる。
【００１２】
また、前記所定の情報から生成されたインテグリティチェックデータそのものの一部に基づいて前記セキュア格納部の格納先アドレスを生成して、この生成された格納先アドレスを用いて前記格納先アドレスに前記生成されたインテグリティチェックデータを格納するので、インテグリティチェックデータを格納するためのアドレスを別途生成する処理を削減でき、その分処理を高速化できる。
【００１３】
また、本発明は、コンテンツ再生装置であって、コンテンツの再生部と、前記コンテンツの再生に関する再生情報を格納し耐タンパー技術により保護されていない非セキュア格納部と、耐タンパー技術で保護され且つデータの書き込みの繰り返しによって劣化する性質を有するセキュア格納部と、前記非セキュア格納部に格納された前記再生情報に所定の計算を施してインテグリティチェックデータを生成する生成部と、前記インテグリティチェックデータの所定領域を構成する数値列に基づいて、前記インテグリティチェックデータを格納する前記セキュア格納部の格納先アドレス生成して、この生成された格納先アドレスに基づいて前インテグリティチェックデータを前記セキュア格納部に格納する格納処理部とを具備することを特徴とする。
【００１４】
本態様によると、非セキュア格納部に格納されたコンテンツの再生情報に所定の計算を施して生成されたインテグリティチェックデータの一部に基づいて、前記セキュア格納部の格納先アドレスを生成することにより、前記再生情報が更新される毎に生成されたインテグリティチェックデータも異なるので、前記セキュア格納部の所定領域に書き込みが集中して前記セキュア格納部が劣化するのを抑制できる。
【００１５】
また、前記再生情報から生成されたインテグリティチェックデータそのものの一部に基づいて前記セキュア格納部の格納先アドレスを生成して、この生成された格納先アドレスを用いて前記格納先アドレスに前記生成されたインテグリティチェックデータを格納するので、インテグリティチェックデータを格納するためのアドレスを別途生成する処理を削減でき、その分処理を高速化できる。
【００１６】
また、本発明は、コンテンツ再生装置であって、コンテンツの再生部と、前記コンテンツの再生に関する再生情報を格納し耐タンパー技術により保護されていない通常格納部と、耐タンパー技術で保護され且つデータの書き込みの繰り返しによって劣化する性質を有するセキュア格納部と、前記非セキュア格納部に格納された前記再生情報に所定の計算を施して第１インテグリティチェックデータを生成する生成部と、前記第１インテグリティチェックデータの所定領域を構成する第１数値列に基づいて、前記第１インテグリティチェックデータを格納する前記セキュア格納部の第１格納先アドレス生成して、この生成された第１格納先アドレスに基づいて前記第１インテグリティチェックデータを前記セキュア格納部に格納する格納処理部と、再生対象のコンテンツの再生情報を前記非セキュア格納部から読み出して前記所定の計算を施して第２インテグリティチェックデータを計算し、前記第２インテグリティチェックデータの所定領域を構成する第２数値列に基づいて生成された前記セキュア格納部の第２アドレスから所定のインテグリティチェックデータを読み出し、前記読み出した所定のインテグリティチェックデータと前記第１インテグリティチェックデータとを比較して一致した場合前記再生情報は改竄されていないと判断し、一方、不一致の場合前記再生情報は改竄されていると判断する検証部とを具備することを特徴とする。
【００１７】
本態様によると、再生対象のコンテンツの再生情報を前記非セキュア格納部から読み出して前記所定の計算を施して第２インテグリティチェックデータを計算し、前記第２インテグリティチェックデータの所定領域を構成する第２数値列に基づいて生成された前記セキュア格納部の第２アドレスから所定のインテグリティチェックデータを読み出し、前記読み出した所定のインテグリティチェックデータと前記第１インテグリティチェックデータとを比較して一致した場合前記再生情報は改竄されていないと判断し、一方、不一致の場合前記再生情報は改竄されていると判断する。
【００１８】
これにより、本装置の外部からアクセス可能である非セキュア格納部に格納された再生情報が、改竄されたか否かを、本装置の外部からアクセスできないセキュア格納部に格納されたインテグリティチェックデータとの比較により検証する。そのため、前記再生情報は改竄された否かの判断を確実に検証できる。
ここで、前記再生情報が改竄されていると前記検証部が判断した場合、前記再生部は前記コンテンツの再生を禁止するように構成してもよい。
【００１９】
本態様によると、コンテンツの不正利用を防止できる。
ここで、前記再生情報が改竄されていないと前記検証部が判断した場合、前記再生部は前記コンテンツを再生するように構成してもよい。
本態様によると、前記再生情報が改竄されていない場合には、コンテンツの再生を許可する。
【００２０】
ここで、前記再生部によりコンテンツが再生されると前記再生情報を更新して前記更新された再生情報を前記非セキュア格納部に格納する再生情報生成部を備え、前記再生部は、前記再生情報が改竄されていないと前記検証部が判断した場合、前記コンテンツを再生し、前記再生情報生成部は、前記コンテンツの再生により更新された再生情報を前記非セキュア格納部に格納し、前記生成部は、前記更新された再生情報に前記所定の計算をして第３インテグリティチェックデータを生成し、前記格納処理部は、前記セキュア格納部の前記第１格納先アドレスに格納されている前記第１インテグリティチェックデータの一部を書き換え、前記格納処理部は、さらに、前記第３インテグリティチェックデータの所定領域を構成する第３数値列に基づいて、前記第３インテグリティチェックデータを格納する前記セキュア格納部の第３格納先アドレスを生成し、この生成された第３格納先アドレスに基づいて前記第３インテグリティチェックデータを前記セキュア格納部に格納するように構成してもよい。
【００２１】
前記再生部がコンテンツを再生した場合、前記コンタンツの再生情報も更新される必要がある。この場合、再生後の再生情報からインテグリティチェックデータが生成され、前記セキュア格納部に格納される。一方、前記セキュア格納部には、再生前の再生情報に対応するインテグリティチェックデータも格納されている。ここで、非セキュア格納部は、本装置の外部からアクセス可能であるため、格納された再生情報が更新前のものに改竄されるおそれがある。
【００２２】
上記のように、前記セキュア格納部には、再生前の再生情報に対応するインテグリティチェックデータも格納されているため、改竄された更新前の再生情報からインテグリティチェックデータが生成された場合、更新前の再生情報からインテグリティチェックデータと前記セキュア格納部に格納されたインテグリティチェックデータとが一致して、コンテンツが不正利用されるおそれがある。
【００２３】
そこで、本態様によると、前記セキュア格納部の前記第１格納先アドレスに格納されている前記第１インテグリティチェックデータの一部を書き換える。
これにより、仮に、非セキュア格納部に格納された再生情報が更新前のものに改竄された場合であっても、前記更新前の再生情報から生成されたインテグリティチェックデータは、前記セキュア格納部に格納され且つ前記更新前の再生情報に対応するインテグリティチェックデータとは一致しないので、前記再生情報は改竄された否かを確実に判断でき、コンテンツの不正利用を防止できる。
【００２４】
ここで、前記コンテンツ再生装置は、前記所定のインテグリティチェックデータが前記一部を書き換えた第１インテグリティチェックデータの場合、所定のインテグリティチェックデータと前記第１インテグリティチェックデータとを比較して不一致と判断するように構成してもよい。
本態様によると、前記第１インテグリティチェックデータと前記一部を書き換えた第１インテグリティチェックデータとを比較するので、両者の比較結果は不一致となって、コンテンツの不正利用を防止できる。
【００２５】
ここで、前記コンテンツ再生装置は、前記一部を書き換えた前記第１インテグリティチェックデータの第１格納先アドレスを保持した旧アドレス保持部を備え、前記検証部は、前記旧アドレス保持部から読み出された第１格納先アドレスに基づいて、前記セキュア格納部から前記一部を書き換えた前記第１インテグリティチェックデータを前記所定のインテグリティチェックデータとして読み出し、前記一部を書き換えた第１インテグリティチェックデータと前記第１インテグリティチェックデータとを比較して不一致と判断するように構成してもよい。
【００２６】
本態様によると、前記一部を書き換えた第１インテグリティチェックデータの第１格納先アドレスを保持した旧アドレス保持部を備えることにより、更新後の再生情報に対応する第３インテグリティチェックデータの第３格納先アドレスとは別に、更新前の再生情報に対応する一部を書き換えた第１インテグリティチェックデータの格納先が保持されているので、前記一部を書き換えた第１インテグリティチェックデータと前記第１インテグリティチェックデータとの比較が容易となる。
【００２７】
ここで、前記セキュア格納部は、所定のサイズのブロックを最低書込み単位としてデータを書き込むフラッシュメモリであるとしてもよい。
本態様によると、フラッシュメモリの所定領域に書き込みが集中してフラッシュメモリが劣化するのを抑制できる。
ここで、前記インテグリティチェックデータの所定領域を構成する数値列は、前記インテグリティチェックデータの下位所定ビットの数値列であるとしてもよい。
【００２８】
本態様によると、インテグリティチェックデータの下位所定ビットの数値列に基づき、格納先アドレスを生成することができる。
ここで、前記所定の計算はハッシュ計算であり、前記インテグリティチェックデータはハッシュ値であるとしてもよい。
本態様によると、ハッシュ値を用いることで、改竄検出の信頼性を高めることができる。また、本態様によると、ハッシュ値に基づき格納先アドレスが生成されるので、セキュア格納部におけるデータの格納先を分散させることができる。
【００２９】
ここで、前記再生情報は、前記コンテンツを再生した履歴を示す再生履歴情報であるとしてもよい。
本態様によると、再生履歴の改竄検出を行い、コンテンツの不正利用を防止することができる。
ここで、前記再生情報は、前記コンテンツの再生権利を示す情報であるとしてもよい。
【００３０】
本態様によると、再生権利の改竄検出を行い、コンテンツの不正利用を防止することができる。
【図面の簡単な説明】
【００３１】
【図１】本発明に係るひとつの実施形態としてのコンテンツ再生装置１０００の構成を示すブロック図である。
【図２】コンテンツ再生装置１０００における各メモリに格納されるデータを示す図である。
【図３】再生履歴情報の例を示す図である。
【図４】コンテンツ再生装置１０００の動作を示すフローチャートである。
【図５】コンテンツ再生装置１０００の再生情報検証処理の動作を示すフローチャートである。
【図６】コンテンツ再生装置１０００のコンテンツ再生処理の動作を示すフローチャートである。
【図７】コンテンツ再生装置１０００の再生情報蓄積処理の動作を示すフローチャートである。
【図８】コンテンツ再生装置１０００の再生情報送信処理の動作を示すフローチャートである。
【図９】確認データ変更部１０１０による確認データの変更処理の具体例を示す図である。
【図１０】コンテンツ再生装置１０００のセーブリストア攻撃に関する効果を説明する図である。
【図１１】従来方法の再生検証処理と、コンテンツ再生装置１０００が行う再生検証処理とを比較して説明するための図である。
【図１２】従来方法の再生情報蓄積処理と、コンテンツ再生装置１０００が行う再生情報蓄積処理とを比較して説明するための図である。
【図１３】従来技術であるフラッシュメモリの劣化対策方法を示す図である。
【発明を実施するための形態】
【００３２】
以下では、本発明に係る一つの実施形態であるコンテンツ再生装置１０００について、図面を参照して説明する。
＜コンテンツ再生装置１０００の構成＞
図１は、コンテンツ再生装置１０００の構成を機能的に示す機能ブロック図である。
同図に示すように、コンテンツ再生装置１０００は、コンテンツ用メモリ２００１、コンテンツ鍵用メモリ２００２、再生情報用メモリ２００３、確認データ用メモリ２００４、コンテンツ再生部１００１、再生情報生成部１００２、確認データ生成部１００３、第１のアドレス計算部１００４、確認データ格納部１００５、第２のアドレス計算部１００６、比較対象データ読込部１００７、検証部１００８、旧アドレス保持部１００９、確認データ変更部１０１０、再生情報送信部１０１１及び検証結果通知部１０１２から構成される。
【００３３】
コンテンツ再生装置１０００は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット等を備えるコンピュータシステムである。
ＲＯＭ及びハードディスクユニットにはコンピュータプログラムが記録されており、マイクロプロセッサがコンピュータプログラムに従って動作することにより、コンテンツ再生装置１０００は、その機能を達成する。
【００３４】
（１）コンテンツ用メモリ２００１
コンテンツ用メモリ２００１は、暗号化コンテンツを格納するためのメモリである。コンテンツ用メモリ２００１は、例えば、フラッシュメモリやハードディスクなどの不揮発メモリで実現される。また、コンテンツ用メモリ２００１は、フラッシュメモリやハードディスクに限定されず、コンテンツ再生装置１０００に挿入されているカードであってもよい。
【００３５】
暗号化コンテンツは、コンテンツがコンテンツ鍵で暗号化されて生成された暗号文である。なお、コンテンツ鍵は、コンテンツ鍵用メモリ２００２に格納されている。
コンテンツは、音楽、動画、写真、アニメーション、コンピュータゲーム、コンピュータプログラム等であって、コンテンツのデータＣＤには、コンテンツ識別子ＩＤが付加されている。
【００３６】
そして、暗号化コンテンツのデータＣＣＤは、
ＣＣＤ＝Ｅｎｃ（ＫＣ，ＩＤ‖ＣＤ）
である。ここで、「ＫＣ」は、コンテンツ鍵を示し、「‖」は、データの連結を示し、「Ｅｎｃ（Ｋ，Ｄ）」は、暗号鍵ＫでデータＤを暗号化した暗号文を示す。
コンテンツを暗号化する暗号方式は、共通鍵暗号（ブロック暗号やストリーム暗号）を使用する。なお、暗号方式は公開鍵暗号であってもよい。その場合は、暗号化コンテンツのデータＣＣＤは、
ＣＣＤ＝Ｅｎｃ（ＫＰＣ，ＩＤ‖ＣＤ）
である。ここで、「ＫＰＣ」は、公開鍵を示す。
【００３７】
なお、暗号方式については、非特許文献２の７９〜１０５ページ（共通鍵暗号）及び１０７〜１３０ページ（公開鍵暗号）に詳しく記載されているため、ここでは説明を省略する。
また、ここでは、コンテンツのデータＣＤにコンテンツ識別子ＩＤも含めて暗号化したものを暗号化コンテンツとしているが、これに限らない。コンテンツ識別子ＩＤを含めずに暗号化してもよいし、他のデータ（例えば、コンテンツの権利情報）を含めて暗号化したものを暗号化コンテンツとしてもよい。
【００３８】
図２（ａ）は、コンテンツ用メモリ２００１に格納されている情報の一例を示す図である。同図に示すように、コンテンツ用メモリ２００１は、コンテンツ識別子ごとに暗号化コンテンツを格納している。
図２（ａ）に示す具体例では、コンテンツ用メモリ２００１は、コンテンツ識別子「ＩＤ１」及び「ＩＤ１」で識別される暗号化コンテンツ、コンテンツ識別子「ＩＤ２」及び「ＩＤ２」で識別される暗号化コンテンツを含む、複数個のコンテンツ識別子と暗号化コンテンツとの組を格納しているが、単純に１個の暗号化コンテンツのみを格納する場合があってもよい。
【００３９】
（２）コンテンツ鍵用メモリ２００２
コンテンツ鍵用メモリ２００２は、コンテンツ鍵を格納するためのメモリである。コンテンツ鍵は、コンテンツを暗号化するための鍵である。
コンテンツ鍵用メモリ２００２は、例えば、フラッシュメモリやハードディスクなどの不揮発メモリで実現される。また、コンテンツ鍵用メモリ２００２は、フラッシュメモリやハードディスクに限定されず、コンテンツ再生装置１０００に挿入されているカードであってもよい。
【００４０】
コンテンツ鍵が漏洩すると、暗号化コンテンツを不正に復号化される恐れがあるため、安全性の観点から、コンテンツ鍵用メモリ２００２は、セキュアに実装されることが望ましい。
コンテンツ鍵を使用する暗号方式は、コンテンツ用メモリ２００１の説明で述べたように共通鍵暗号であるが、公開鍵暗号で使用してもよい。
【００４１】
共通鍵暗号を使用する場合は、暗号化で使用する暗号鍵と同じものを、コンテンツ鍵としてコンテンツ鍵用メモリ２００２に格納する。
公開鍵暗号を使用する場合は、暗号化で使用する公開鍵に対応する秘密鍵を、コンテンツ鍵としてコンテンツ鍵用メモリ２００２に格納する。
同図に示すように、コンテンツ鍵用メモリ２００２は、コンテンツ用メモリ２００１（図２（ａ）参照）に格納されている暗号化コンテンツに対応するコンテンツ鍵を、コンテンツ識別子と対応付けて記憶している。
【００４２】
（３）再生情報用メモリ２００３
再生情報用メモリ２００３は、コンテンツ再生の履歴を示す再生履歴情報を格納するためのメモリである。
再生情報用メモリ２００３は、例えば、フラッシュメモリやハードディスクなどの不揮発メモリで実現される。また、再生情報用メモリ２００３は、フラッシュメモリやハードディスクに限定されず、コンテンツ再生装置１０００に挿入されているカードであってもよい。
【００４３】
図２（ｃ）は、再生情報用メモリ２００３に格納されている情報の一例を示す図である。同図に示すように、再生情報用メモリ２００３は、コンテンツ毎のコンテンツの再生履歴情報を、コンテンツ識別子と対応付けて格納している。
なお、コンテンツごとの格納先の開始アドレスは、予め与えられているものとする。
図３は、再生履歴情報の例を示している。図３（ａ）は、再生履歴情報として、再生時間を使用している例であり、図３（ｂ）は、再生履歴情報として、再生回数を使用している例である。
【００４４】
（４）確認データ用メモリ２００４
確認データ用メモリ２００４は、再生履歴情報のハッシュ値である確認データを格納するためのメモリである。
確認データ用メモリ２００４は、例えば、フラッシュメモリなどの不揮発メモリで実現される。また、確認データ用メモリ２００４は、フラッシュメモリに限定されず、ハードディスクやコンテンツ再生装置１０００に挿入されているカードであってもよい。
【００４５】
確認データが改ざんされると、再生履歴情報の改ざんを正しくチェックすることができず、不正なコンテンツ利用がなされる恐れがあるため、安全性の観点から、確認データ用メモリ２００４は、セキュアに実装されることが望ましい。
図２（ｄ）は、確認データ用メモリ２００４に格納される情報の一例を示す図である。同図に示すように、確認データ用メモリ２００４は、コンテンツごとに確認データを格納するための領域が予め与えられているものとする。
【００４６】
例えば、領域２００４ａには、コンテンツ識別子「ＩＤ１」が割り振られており、領域２００４ａは、「ＩＤ１」により識別されるコンテンツの確認データを格納するための領域である。同様に、領域２００４ｂには、コンテンツ識別子「ＩＤ２」が割り振られており、領域２００４ｂは、「ＩＤ２」により識別されるコンテンツの確認データを格納するための領域である。
【００４７】
各領域は、確認データを複数個以上格納できる大きさが確保されている。一例として、確認データの大きさが２５６ビット＝３２バイトである場合は、各領域の大きさは、２＾８×３２＝８，１９２バイトである。ここで、ｘ＾ｙはｘのｙ乗を示す。
なお、コンテンツごとの確認データの格納可能領域の開始アドレスは、予め与えられているものとする。
【００４８】
（５）コンテンツ再生部１００１
コンテンツ再生部１００１は、コンテンツ用メモリ２００１に格納されている暗号化コンテンツと、コンテンツ鍵用メモリ２００２に格納されているコンテンツ鍵とを読み込み、コンテンツ鍵を用いて暗号化コンテンツを復号化する。さらに、コンテンツ再生部１００１は、復号化したコンテンツを再生する。
【００４９】
なお、コンテンツ再生の際には、外部からコンテンツ再生部１００１に対して、再生するコンテンツのコンテンツ識別子が指定され、コンテンツ再生部１００１は、指定されたコンテンツ識別子に対応する暗号化コンテンツとコンテンツ鍵とを読み込み、復号化処理及び再生処理を行うものとする。
ここで、コンテンツ再生部１００１は、コンテンツ識別子と、暗号化コンテンツの格納先の開始アドレス及びコンテンツ鍵の格納先の開始アドレスとを対応付けたテーブルを予め保持しており、それに基づいて、指定されたコンテンツ識別子に対応する暗号化コンテンツとコンテンツ鍵とを読み込むように構成してもよい。
【００５０】
（６）再生情報生成部１００２
再生情報生成部１００２は、コンテンツ再生部１００１にてコンテンツが再生されると、再生履歴情報を生成し、生成した再生履歴情報を、再生情報用メモリ２００３に格納する。
再生履歴情報の具体例としては、図３（ａ）及び（ｂ）に示すように、コンテンツを再生した累積の時間を示す再生時間や、コンテンツを再生した累積の回数を示す再生回数を用いることができる。
【００５１】
再生情報生成部１００２は、図３（ａ）の例では、コンテンツ識別子ごとに、コンテンツの再生時間である再生履歴情報を生成し、図３（ｂ）の例では、コンテンツ識別子ごとに、コンテンツの再生回数である再生履歴情報を生成する。なお、再生時間及び再生回数は、再生履歴情報の一例であり、再生履歴情報はこれらに限定されるものではない。
再生情報生成部１００２は、再生履歴情報が再生時間であれば、一定時間（例えば、１分）ごとに再生履歴情報を生成し、再生履歴情報が再生回数であれば、再生開始時又は再生終了時に、再生回数を更新した再生履歴情報を生成する。また、再生情報生成部１００２は、再生開始時又は再生終了時に再生回数を更新するのではなく、所定の時間を再生したときに再生回数を更新するとしてもよい。
【００５２】
再生履歴情報として再生時間を用いる場合には、再生情報生成部１００２は、再生時間を計測する手段を有するものとする。また、再生履歴情報として再生回数を用いる場合には、再生情報生成部１００２は、再生開始又は再生終了を検知する手段を有するものとする。再生履歴情報の生成のトリガをチェックするための方法については、本発明では特に限定しない。
【００５３】
再生情報生成部１００２は、生成した再生履歴情報を、再生情報用メモリ２００３に格納する。
（７）確認データ生成部１００３
確認データ生成部１００３は、コンテンツ再生中の再生履歴情報更新に伴い、更新された再生履歴情報に対する確認データを生成する。
【００５４】
また、確認データ生成部１００３は、コンテンツの再生前に、再生履歴情報の検証のため、再生情報用メモリ２００３に格納されている再生履歴情報に基づいて、確認データを生成する。
確認データは、具体的には、ハッシュ対象データＨＤをハッシュ関数へ入力したときの出力、すなわちハッシュ値である。
【００５５】
ハッシュ関数へ入力するハッシュ対象データＨＤは、図３（ａ）の例であれば、コンテンツ識別子と再生時間とを連結したものであり、図３（ｂ）の例であれば、コンテンツ識別子と再生回数とを連結したものである。なお、ハッシュ対象データＨＤは、複数のコンテンツ識別子と再生時間との組であってもよいし、複数のコンテンツ識別子と再生回数との組であってもよい。
【００５６】
確認データ生成部１００３が使用するハッシュ関数は、ＳＨＡ−１、ＳＨＡ−２（ＳＨＡ−２５６など）、ＲＩＰＥＭＤ、ＭＤ５などである。
確認データ生成部１００３は、安全性の観点から、攻撃者に知られないようにセキュアにハッシュ関数を実行する必要があるため、例えば、鍵付ハッシュ関数を用いることができる。
【００５７】
鍵付ハッシュ関数の鍵をＫＨとして、ハッシュ対象データをＨＤとすると、確認データは、Ｈ＝Ｈａｓｈ（ＫＨ‖ＨＤ）となる。ここで、「Ｈａｓｈ（）」は、ハッシュ関数を示し、「‖」はデータの連結を示す。
本実施形態では、確認データ生成部１００３は、ＳＨＡ−２５６を用いた鍵付ハッシュ関数を用いるものとする。すなわち、確認データ生成部１００３にて生成される確認データ（ハッシュ値）は、２５６ビットである。
【００５８】
なお、確認データ生成部１００３は、ＭＡＣなどの共通鍵暗号を用いた鍵付ハッシュ関数を用いても良い。鍵付ハッシュ関数については、非特許文献２の１８９〜１９５ページに記載されている。
確認データ生成部１００３は、コンテンツ再生中の再生履歴情報更新に伴い、更新された再生履歴情報に対する確認データを生成した場合、生成した確認データを、確認データ格納部１００５へ出力する。
【００５９】
確認データ生成部１００３は、コンテンツの再生前に、再生履歴情報の検証のため、再生情報用メモリ２００３に格納されている再生履歴情報に基づいて確認データを生成した場合、生成した確認データを、第２のアドレス計算部１００６へ出力する。
（８）第１のアドレス計算部１００４
第１のアドレス計算部１００４は、コンテンツ再生中の再生履歴情報更新に伴い、更新された再生履歴情報に対して生成された確認データの格納先アドレスを計算する。
【００６０】
以下では、計算方法の一例を示す。コンテンツ識別子ＩＤに対応する確認データをＨ、コンテンツ識別子ＩＤに対応する確認データの格納可能領域の開始アドレスをＳとして、格納先アドレスＡＳ１を、
ＡＳ１＝Ｓ＋Ｈ  ｍｏｄ  ２＾８
とする。ここで、「ｘ  ｍｏｄ  ｙ」は、ｘをｙで割ったときの余りを示す。
【００６１】
上記一例では、ＡＳ１がＨの下位８ビットに対応するため、第１のアドレス計算部１００４は、ｍｏｄ計算をせず単純に、確認データ（ハッシュ値）の下位８ビットを格納先アドレスとすればよい。
第１のアドレス計算部１００４は、格納先アドレスを、確認データ格納部１００５へ出力する。
【００６２】
（９）確認データ格納部１００５
確認データ格納部１００５は、確認データ生成部１００３から確認データを受け取り、第１のアドレス計算部１００４から格納先アドレスを受け取る。
確認データ格納部１００５は、確認データ用メモリ２００４の格納先アドレスが示す領域に、確認データを格納する。
【００６３】
（１０）第２のアドレス計算部１００６
第２のアドレス計算部１００６は、確認データ生成部１００３から、検証対象の確認データを受け取ると、受け取った確認データの検証に必要な比較対象データの読込先アドレスを計算する。
具体的には、第２のアドレス計算部１００６は、確認データ生成部１００３から受け取った確認データに基づいて、比較対象データの読込先アドレスを計算する。計算方法は、第１のアドレス計算部１００４と同様である。すなわち、受け取った確認データをＨ、確認データの格納可能領域の開始アドレスをＳとすると、読込先アドレスＡＲ２は、
ＡＲ２＝Ｓ＋Ｈ  ｍｏｄ  ２＾８
である。そして、第２のアドレス計算部１００６は、第１のアドレス計算部１００４と同様に、ｍｏｄ計算せず単純に、確認データ生成部１００３から受け取った確認データ（ハッシュ値）の下位８ビットを、読込先アドレスとすればよい。
【００６４】
第２のアドレス計算部１００４は、確認データと読込先アドレスとを、比較対象データ読込部１００７へ出力する。
また、第２のアドレス計算部１００４は、検証部１００８から、検証成功の通知を受け取ると、生成した読込先アドレスを、旧アドレス保持部１００９へ出力する。
（１１）比較対象データ読込部１００７
比較対象データ読込部１００７は、第２のアドレス計算部１００４から、確認データと読込先アドレスとを受け取る。
【００６５】
比較対象データ読込部１００７は、確認データ用メモリ２００４から、読込先アドレスが示す領域に格納されているデータを読み込み、読み込んだデータを比較対象データとする。
そして、比較対象データ読込部１００７は、第２のアドレス計算部１００４から受け取った確認データと、確認データ用メモリ２００４から読み込んだ比較対象データとを、検証部１００８へ出力する。
【００６６】
（１２）検証部１００８
検証部１００８は、比較対象データ読込部１００７から、確認データと比較対象データとを受け取る。そして、確認データと比較対象データとが一致するか否か検証する。
確認データと比較対象データとが一致する場合は、再生履歴情報の改ざん、セーブリストア攻撃などが行われていないことを意味する。この場合、コンテンツ再生装置１０００は、コンテンツ再生処理を開始する。また、確認データと比較対象データとが一致する場合、検証部１００８は、第２のアドレス計算部１００６へその旨を通知する。
【００６７】
確認データと比較対象データとが一致しない場合は、再生履歴情報の改ざん、セーブリストア攻撃などが行われていることを意味する。この場合、コンテンツ再生装置１０００は、コンテンツ再生処理を中止する。
検証部１００８は、検証結果を、検証結果通知部１０１２へ出力する。
（１３）旧アドレス保持部１００９
旧アドレス保持部１００９は、古い確認データの格納先アドレスを保持する。より具体的には、旧アドレス保持部１００９は、検証部１００８において比較対象データと確認データとが一致した場合に、第２のアドレス計算部１００６が計算した読込先アドレスを、旧アドレスとして保持する。
【００６８】
図２（ｅ）は、旧アドレス保持部１００９に保持されている情報の一例を示す図である。同図に示すように、旧アドレス保持部１００９は、コンテンツ毎に、コンテンツ識別子と旧アドレス（古い確認データの格納先アドレス）とを対応付けて格納している。
（１４）確認データ変更部１０１０
確認データ変更部１０１０は、確認データ用メモリ２００４に格納されている古い確認データを変更する。
【００６９】
より具体的には、確認データ変更部１０１０は、確認データ用メモリ２００４の、旧アドレス保持部１００９が保持している旧アドレスが示す領域に格納されている確認データの一部を変更する。例えば、確認データ変更部１０１０は、確認データの最初の１バイトを変更してもよいし、任意の１バイトや、任意の１ビットを変更してもよい。
（１５）再生情報送信部１０１１
再生情報送信部１０１１は、再生情報用メモリ２００３に格納されている再生履歴情報を、図示していないコンテンツ管理サーバへ送信する。
【００７０】
再生情報送信部１０１１は、コンテンツ識別子が示すコンテンツごとに再生履歴情報を送るとしてもよい。
また、再生情報送信部１０１１は、ディジタル署名を生成する機能を有し、再生履歴情報にディジタル署名を付加して、コンテンツ管理サーバへ送信するとしてもよい。ディジタル署名については、非特許文献２の１７１〜１８７ページに記載されている。
【００７１】
（１６）検証結果通知部１０１２
検証結果通知部１０１２は、検証部１００８から受け取った検証結果を、外部に通知する。ここで、外部の通知先の具体例は、コンテンツ管理サーバやコンテンツ再生装置１０００の製造機関などである。
なお、検証結果通知部１０１２は、検証部１００８において、確認データと比較対象データとが一致しない場合にのみ、その旨を外部へ通知するとしてもよい。
【００７２】
＜コンテンツ再生装置１０００の動作＞
ここでは、図４から図８に示すフローチャートを用いて、コンテンツ再生装置１０００の動作について説明する。
（１）全体の処理の流れ
図４は、コンテンツ再生装置１０００の全体の処理の流れを示している。
【００７３】
コンテンツ再生装置１０００は、外部から、再生すべきコンテンツのコンテンツ識別子ＩＤが入力されると、コンテンツ再生処理に先立ち、そのコンテンツ識別子ＩＤに対応する再生履歴情報の検証処理を行い（ステップＳ１）、その後、コンテンツ再生処理群を行う（ステップＳ２）。そして、コンテンツ再生装置１０００は、再生履歴情報検証処理（ステップＳ３）と、コンテンツ再生処理群（ステップＳ４）とを繰り返したのち、再生情報送信処理を行う（ステップＳ５）。
【００７４】
ここで、ステップＳ２のコンテンツ再生処理群では、コンテンツ再生（ステップＳ１１）、再生情報蓄積処理（ステップＳ１２）、コンテンツ再生（ステップＳ１３）、再生情報蓄積処理（ステップＳ１４）、・・・と、コンテンツ再生及び再生情報蓄積処理の一連の動作が、繰り返し行われる。ステップＳ４のコンテンツ再生処理群においても同様である。
【００７５】
（２）再生情報検証処理
図５は、コンテンツ再生装置１０００による再生情報検証処理の動作を示すフローチャートである。なお、ここに示す動作は、図４のステップＳ１及びステップＳ３の詳細である。
確認データ生成部１００３は、外部から入力されたコンテンツ識別子に対応する再生履歴情報を、再生情報用メモリ２００３から読み出す（ステップＳ１００）。
【００７６】
そして、確認データ生成部１００３は、読み出した再生履歴情報をハッシュ対象データとしてハッシュ関数へ入力し、ハッシュ値である確認データを生成する（ステップＳ１０１）。
続いて、第２のアドレス計算部１００６は、比較対象データの読み込み先のアドレスを計算する（ステップＳ１０２）。具体的には、第２のアドレス計算部１００６は、ステップＳ１０１で生成された確認データの下位８ビットを比較対象データの読込先アドレスとする。
【００７７】
比較対象データ読込部１００７は、確認データ用メモリ２００４から、ステップＳ１０２で計算された読込先アドレスの位置にある比較対象データを読み込む（ステップＳ１０３）。
検証部１００８は、比較対象データと確認データとが一致するか否か確認する（ステップＳ１０４）。比較対象データと確認データとが一致する場合（ステップＳ１０４でＹＥＳ）、ステップＳ１０５へ進み、一致しない場合（ステップＳ１０４でＮＯ）、ステップＳ１０６へ進む。
【００７８】
ステップＳ１０４でＹＥＳの場合、旧アドレス保持部１００９は、ステップＳ１０２で計算したアドレスを旧アドレスとして保持する（ステップＳ１０５）。その後、コンテンツ再生装置１０００は、再生情報検証処理を終了し、コンテンツ再生処理へ進む。
ステップＳ１０４でＮＯの場合、検証結果通知部１０１２は、比較対象データと確認データとが一致しない旨を、外部へ通知する（ステップＳ１０６）。その後、コンテンツ再生装置１０００は、処理を終了する。
【００７９】
（３）コンテンツ再生処理
図６は、コンテンツ再生装置１０００によるコンテンツ再生の動作を示すフローチャートである。なお、ここに示す動作は、図４のステップＳ１１及びステップＳ１４の詳細である。
コンテンツ再生部１００１は、外部から入力されたコンテンツ識別子に対応する暗号化コンテンツをコンテンツ用メモリ２００１から読み込み、更に、対応するコンテンツ鍵をコンテンツ鍵用メモリ２００２から読み込む（ステップＳ２０１）。
【００８０】
次に、コンテンツ再生部１００１は、暗号化コンテンツを、コンテンツ鍵を用いて復号し、コンテンツを生成する。そして、生成したコンテンツを再生する（ステップＳ２０２）。その後、コンテンツ再生装置１０００は、再生履歴情報蓄積処理を行う。
（４）再生情報蓄積処理
図７は、コンテンツ再生装置１０００による再生情報蓄積処理の動作を示すフローチャートである。なお、ここに示す動作は、図４のステップＳ１２及びステップＳ１４の詳細である。
【００８１】
再生情報生成部１００２は、再生履歴情報を生成し、生成した再生履歴情報を、再生情報用メモリ２００３に格納する（ステップＳ３０１）。
その後、確認データ変更部１０１０は、旧アドレス保持部１００９が保持する旧アドレスを読み出す。そして、旧アドレスが示す位置の確認データの一部を変更する（ステップＳ３０２）。
【００８２】
続いて、確認データ生成部１００３は、ステップＳ３０１で生成し、格納した再生履歴情報を、ハッシュ対象データとしてハッシュ関数へ入力し、ハッシュ値である確認データを生成する（ステップＳ３０３）。
その後、第１のアドレス計算部１００４は、確認データの格納先アドレスを計算する（ステップＳ３０４）。具体的には、第１のアドレス計算部１００４は、ステップＳ３０３で生成された確認データの下位８ビットを格納先アドレスとする。
【００８３】
確認データ格納部１００５は、確認データを確認データ用メモリ２００４の格納先アドレスが示す位置に格納する（ステップＳ３０５）。その後、コンテンツ再生装置１０００は、コンテンツ再生処理を行う。
なお、コンテンツ再生及び再生情報蓄積処理は、正確に図４のフローチャートに示す順序で行われることは必須ではない。コンテンツ再生装置１０００は、コンテンツを再生しつつ、所定のタイミングで（例えば１分毎に）、再生情報蓄積処理を行う。
【００８４】
ここで、図９を用いて、ステップＳ３０２の確認データ変更部１０１０による確認データの変更処理について、２つの具体例を用いて説明する。
図９（ａ）は、確認データ用メモリ２００４の古い確認データの最上位バイトに０ｘ００を書き込む（最上位バイトを０埋めする）ことにより、古い確認データを変更する例である。古い確認データが「０ｘ１５３ｅ４８ａｂ…」であったとすると、変更後は、「０ｘ００３ｅ４８ａｂ…」となる。
【００８５】
図９（ｂ）は、確認データ用メモリ２００４の古い確認データの最上位バイトに任意の値（ここでは、０ｘｆｆとする。）をＸＯＲ（排他的論理和）演算することにより、古い確認データを変更する例である。古い確認データが「０ｘ１５３ｅ４８ａｂ…」であったとすると、変更後は、「０ｘｅａ３ｅ４８ａｂ…」となる。
確認データ変更部１０１０は、（ａ）及び（ｂ）の何れの具体例を用いてもよい。
【００８６】
しかし、（ａ）の具体例では、変更前の古い確認データの最上位バイトが「０ｘ００」である場合には、値が変更されないので、安全性を考慮すると、確認データ変更部１０１０は、（ｂ）のＸＯＲ演算を用いるほうがよい。
（５）再生情報送信処理
図８は、コンテンツ再生装置１０００による再生情報送信処理の動作を示すフローチャートである。なお、ここに示す動作は、図４のステップＳ５の詳細である。
【００８７】
再生情報送信部１０１１は、コンテンツ管理サーバから要求を受け付けると、要求されたコンテンツ識別子に対応する再生履歴情報を再生情報用メモリ２００３から読み出す。そして、再生情報送信部１０１１は、読み出した再生履歴情報を、コンテンツ管理サーバへ送信する（ステップＳ４０１）。その後、コンテンツ再生装置１０００は、再生情報送信処理を終了する。
【００８８】
なお、コンテンツ再生装置１０００は、コンテンツ管理サーバから要求を受け付けたときに限らず、所定のタイミングで上記の再生情報送信処理を行ってもよい。
＜実施形態の効果＞
上述したように、本実施形態では、格納対象である確認データそのものに基づいて格納先アドレス決定することで、格納先アドレスを容易に生成することができる。
【００８９】
ここで、引用文献１に記載されている技術と比較すると、データの読み込み時には、引用文献１に記載されている技術は、ポインタの読み込み及びデータの読み込みという２回の読み込み処理が必要であるのに対して、本実施形態では、データのみ１回の読み込み処理だけでよい。データの書き込み時は、引用文献１に記載されている技術は、２回の読み込み、２回の書き込み、及び回数の判定が必要であるのに対して、本実施形態では、２回の書き込み処理だけでよい。
【００９０】
さらに、本実施形態では、再生履歴情報のハッシュ値（確認データ）が格納対象データであるから、再生履歴情報に対して格納先アドレスの値が拡散される。そして、入力に対して出力が一様に分布するハッシュ関数を用いると、確認データ用メモリ２００４の各領域の使用頻度（書き込み回数）を平均化することができる。そこで、確認データの格納可能領域を大きくすることで、確認データ用メモリ２００４の各領域の使用頻度を低下させることができ、確認データ用メモリ２００４の劣化を抑制することができる。
【００９１】
また、本実施形態では、コンテンツ再生装置１０００は、コンテンツを再生しながら再生履歴情報を更新していくが、再生履歴情報が更新されたときに、古い（更新前の）確認データを変更する。これは、セーブリストア攻撃を防止するためである。
図１０は、古い確認データを変更しなかった場合に生じる問題について説明するための図である。古い確認データを変更しない場合、図１０のように、再生情報用メモリ２００３を古い再生情報用メモリのデータに置き換えると、再生情報検証処理（図５参照）において、確認データ生成部１００３は、古い再生履歴情報のハッシュ値を確認データとして生成する。
【００９２】
その後、第２のアドレス計算部１００６は、確認データに基づいて、比較対象データの読込先アドレスを決定するが、古い再生履歴情報から生成された確認データに基づいて決定する読込先アドレスには、古い確認データが格納されている。
そのため、再生情報用メモリ２００３を古い再生情報用メモリのデータに置き換えても、検証部１００８による検証処理で正しく検証されてしまうため、セーブリストア攻撃が可能になってしまう。
【００９３】
そこで、本実施形態では、再生履歴情報が更新されたときに、古い確認データを変更することにより、再生情報用メモリ２００３を古い再生情報用メモリのデータに置き換えても、確認データと比較対象データとが一致しないため、検証部１００８による検証処理で不正であることが検証できる。
さらに、本実施形態では、古い確認データの全部を変更するのではなく、一部を変更するので、書き込みのためにアクセスするサイズが削減できる。古い確認データの「一部」を変更すればよい理由は、コンテンツ再生装置１０００は、再生情報検証処理でハッシュ関数を用いて確認データを計算しており、少なくとも１ビットを変更した確認データに対応するハッシュ対象データを求めることは、変更前の確認データに対応するハッシュ対象データ（古い再生履歴情報）が既知であっても、困難だからである。
【００９４】
ここで、確認データ用メモリ２００４としてフラッシュメモリを用いる場合を考える。フラッシュメモリは、通常、ブロック単位を最低書き込み単位としてアクセスする。
確認データのサイズが１ブロックのサイズより大きい場合、確認データの中の任意の１ブロック（確認データの一部）を変更すればよいので、変更するブロックを削減でき、フラッシュメモリの劣化を抑えることができる。
【００９５】
また、確認データが２ブロックに跨って格納されている場合、どちらか１ブロックに格納されている確認データの一部を変更すればよいので、変更するブロックを削減でき、フラッシュメモリの劣化を抑えることができる。
なお、古い確認データは少なくとも１ビット変更すればよいので、古い確認データの任意の１ビット、１バイト、１ブロック又は古い確認データの全部を変更するとしてもよい。また、古い確認データからランダムに選択した１ビット、１バイト又は１ブロックを変更するとしてもよい。
【００９６】
次に、図１１を用いて、再生情報検証処理について、従来方法と上記実施形態とを比較する。
図１１（ａ）は、従来の再生情報検証処理を示す図である。
従来の再生情報検証処理は、再生履歴情報を読み出し（ステップＳ５０１）、再生履歴情報から確認データを生成する（ステップＳ５０２）。そして、比較対象データの格納先を示すアドレスを読み込み（ステップＳ５０３）、そのアドレスから、比較対象データを読み出す（ステップＳ５０４）。その後、確認データと比較対象データとを比較する（ステップＳ５０５）。
【００９７】
図１１（ｂ）は、本発明の上記実施形態の再生情報検証処理を示す図である。
実施形態の再生情報検証処理は、再生履歴情報を読み出し（ステップＳ５０１）、再生履歴情報から確認データを生成する（ステップＳ５０２）。そして、比較対象データの格納先を示すアドレスを計算する（ステップＳ５０３ａ）、そのアドレスから、比較対象データを読み出す（ステップＳ５０４）。その後、確認データと比較対象データとを比較する（ステップＳ５０５）。
【００９８】
両者を比較すると、ステップＳ５０３とステップＳ５０３ａとが異なる。即ち、本発明の実施形態では、従来のアドレスの読み込みに替えて、アドレスを計算する。このアドレス計算は、確認データのモジュロ計算であったり、確認データの下位所定ビットを抽出することであった。そのため、ステップＳ５０３ａのアドレス計算は、ステップＳ５０３のアドレス読み込みより高速である。
【００９９】
従って、再生検証処理全体を比較すると、本発明の実施形態の方が、従来方法よりも高速に処理することが可能である。
続いて、図１２を用いて、再生情報蓄積処理について、従来方法と上記実施形態とを比較する。
図１２（ａ）は、従来の再生情報蓄積処理を示す図である。
【０１００】
従来の再生情報蓄積処理は、先ず、再生履歴情報を生成し（ステップＳ６０１）、その後、再生履歴情報から確認データを生成する（ステップＳ６０３）。続いて、確認データの格納先を示すアドレスを読み込む（ステップＳ６０４）。その後、書き込み回数を読み込み（ステップＳ６０５）、書き込み回数と閾値とを比較し、書き込み回数が閾値以下であるか判定する（ステップＳ６０６）。書き込み回数が閾値以下であれば、確認データを、ステップＳ６０４で読み込んだアドレスが示す位置へ格納する（ステップＳ６０７）。最後に、書き込み回数を更新する（ステップＳ６０８）。  
【０１０１】
図１２（ｂ）は、本発明の上記実施形態の再生情報蓄積処理を示す図である。
実施形態の再生情報蓄積処理は、先ず、再生履歴情報を生成し（ステップＳ６０１）、その後、古い確認データの一部を変更する（ステップＳ６０２）。次に、再生履歴情報から確認データを生成し（ステップＳ６０３）、生成した確認データから格納先のアドレスを計算する（ステップＳ６０４ａ）。そして、確認データを、ステップＳ６０４で計算したアドレスが示す位置へ格納する（ステップＳ６０７）。
【０１０２】
両者を比較すると、従来方法は７つのステップを含むのに対し、実施形態はそれより少ない５つのステップを含む。
また、本発明の実施形態のステップＳ６０４ａでは、従来のアドレスの読み込みに替えて、アドレスを計算する。このアドレス計算は、確認データのモジュロ計算であったり、確認データの下位所定ビットを抽出することであった。そのため、ステップＳ６０４ａのアドレス計算は、ステップＳ６０４のアドレス読み込みより高速である。
【０１０３】
従って、実施形態の再生検証処理は、従来方法よりも高速に処理することが可能である。
＜その他の変形例＞
上記に説明した実施形態は、本発明の実施形態の一例であり、本発明はこの実施形態に何ら限定されるものではなく、本発明の思想から逸脱しない範囲において種々なる態様で実施し得るものである。例えば、以下のような場合も本発明に含まれる。
【０１０４】
（１）上記の実施形態では、コンテンツ再生装置１０００は、コンテンツ管理サーバに対して再生履歴情報を送信しているが、再生履歴情報を送信する前に、再生情報検証処理を行い、送信する再生情報の正当性を確認した後に、コンテンツ管理サーバに再生履歴情報を送信するように構成してもよい。
（２）コンテンツ再生装置１０００は、再生履歴情報として、再生時間や再生回数を使用していたが、これに限らない。例えば、コンテンツの所定の箇所を再生した回数であってもよい。また、早送りや巻戻しなどの特殊再生を行った回数としてもよい。さらに、再生時間やこれらの回数のいずれかの組み合わせであってもよい。
【０１０５】
（３）上記の実施形態では、コンテンツ再生装置１０００は、コンテンツの再生履歴情報を更新（蓄積）し、再生履歴情報の正当性を検証していた。しかし、これに限らず、再生権利情報を更新（蓄積）・検証してもよい。
再生権利情報を蓄積する場合は、コンテンツ再生装置１０００は、予め、コンテンツ管理サーバからコンテンツやコンテンツ鍵を入手する際に、再生権利情報を入手するとしてもよい。
【０１０６】
ここで、再生権利情報は、例えば、コンテンツの再生可能期限（例：２００８年３月２５日まで）、コンテンツを再生するための残りの再生時間、残りの再生回数、コンテンツの所定の箇所を再生する残りの回数や特殊再生を行うための残りの回数である。さらに、再生権利情報は、これらの組み合わせであってもよい。
また、コンテンツ再生装置１０００は、再生履歴情報と再生権利情報とを組み合わせた再生情報を更新・検証してもよい。
【０１０７】
（４）上記の実施形態では、確認データ用メモリ２００４は、コンテンツ識別子ごとに確認データの格納可能領域が設定されているが、これに限定されず、複数のコンテンツ識別子で一つの格納可能領域を共用していてもよい。
（５）上記の実施形態では、確認データ用メモリ２００４は、コンテンツ識別子ごとに確認データの格納可能領域を、確認データの大きさの２＾８倍の大きさとしているが、これに限定されない。確認データの格納可能領域の大きさは、確認データの大きさの何倍であってもよい。例えば、ｎ倍（ｎ：２以上の整数）の大きさでもよい。
【０１０８】
その場合は、第１のアドレス計算部１００４及び第２のアドレス計算部１００６は、確認データをｍｏｄ  ｎしたものを格納先アドレス及び読込先アドレスとして計算する。
また、格納可能領域の大きさを確認データのｎ倍とした場合であっても、第１のアドレス計算部１００４及び第２のアドレス計算部１００６は、確認データをｍｏｄ  ｍ（ｍ≠ｎ）したものを格納先アドレス及び読込先アドレスとして計算してもよい。
【０１０９】
さらに、格納可能領域は、確認データの大きさの整数倍でなくてもよい。例えば、格納可能領域の大きさは、確認データの１０００．５倍の大きさであってもよい。
（６）上記の実施形態では、旧アドレス保持部１００９は、検証部１００８において比較対象データと確認データとが一致した場合に、その確認データに対して、第２のアドレス計算部１００６が計算したアドレスを旧アドレスとして保持しているが、保持するアドレスや保持するタイミングはこれに限らない。
【０１１０】
たとえば  確認データ格納部１００５が確認データ格納部１００５を格納したときの、第１のアドレス計算部１００４で計算した格納先アドレスを旧アドレスを保持するとしてもよい。また、旧アドレスを格納するタイミングはいつでもよい。
（７）上記の実施形態では、旧アドレス保持部１００９にて、古い確認データの旧アドレスを保持した上で、確認データ変更部１０１０が、旧アドレスに格納されている確認データを変更しているが、これに限らない。
【０１１１】
旧アドレス保持部１００９が、古い確認データ自体を保持し、確認データ変更部１０１０が、古い確認データに基づきアドレスを計算し、そのアドレスに格納されている確認データを変更してもよい。アドレスの計算方法は、第１のアドレス計算部１００４や第２のアドレス計算部１００６と同様の方法を用いてもよい。
（８）上述したように、コンテンツは、音楽、動画、写真、アニメーション、コンピュータゲーム、コンピュータプログラム等である。上記の実施形態において、コンテンツ再生装置１０００は、コンテンツを「再生」していたが、コンテンツがプログラムである場合には、コンテンツ再生装置１０００は、プログラムを「実行」するとしてもよい。
【０１１２】
（９）上記の実施形態では、本発明の一つの形態であるコンテンツ再生装置１０００について説明した。しかし、本発明にこれに限らず、コンテンツ再生の機能を備えていない、データ格納装置の形態で実現することも可能である。
データ格納装置は、例えば、移動端末であってもよい。そして、コンテンツ再生装置１０００が再生履歴情報の更新（蓄積）・検証を行う代わりに、データ格納装置は、移動の履歴、すなわち、位置履歴を更新（蓄積）・検証するとしてもよい。
【０１１３】
データ格納装置が位置履歴を更新・検証する場合は、上記実施形における再生情報生成部１００２を、位置履歴情報を生成する位置履歴情報生成部１００２’に変更し、上記実施形態における再生履歴情報を位置履歴情報に変更する。
そして、位置履歴情報生成部１００２’は、位置履歴を検知する手段を備え、所定のタイミング（例えば、一定時間ごとなど）または位置履歴が変更されるごとに、位置履歴情報を更新する。
【０１１４】
（１０）また、位置履歴ではなく、所定の処理、例えば、サーバや計算機へのアクセス履歴、乱数生成の処理の履歴、鍵発行や証明書発行処理の履歴などを管理し、これらを更新・検証するデータ格納装置も本発明に含まれる。
この場合、データ格納装置は、コンテンツ再生装置１０００のようなコンテンツ再生の機能は備えず、単純にそれらの履歴データを蓄積する機能を備えるとしてもよい。また、乱数生成の処理の履歴の場合、データ格納装置は、履歴情報として、乱数を蓄積してもよいし、乱数を生成するシード情報を蓄積してもよい。また、鍵発行や証明書発行処理の場合、データ格納装置は、履歴情報として、秘密鍵や公開鍵などの鍵自体を蓄積してもよいし、証明書の署名部分を蓄積してもよい。
【０１１５】
（１１）上記の実施形態では、コンテンツ再生装置１０００は、検証の対象である再生履歴情報を再生情報用メモリ２００３に格納していた。しかし、本発明はこれに限定されず、コンテンツ再生装置１０００は、再生履歴情報を外部から取得するとしてもよい。
また、本発明は、検証対象のデータを外部から入力して検証するデータ検証装置としてもよい。この場合、検証対象のデータとして再生履歴情報ではなくパスワードデータを使用してもよい。
【０１１６】
検証対象のデータとしてパスワードデータを使用する場合、頻繁にパスワードデータが変更されてもよい。データ検証装置は、古いパスワードデータに対応する古い確認データの一部又は全部を変更するように構成してもよい。
（１２）上記の実施形態におけるコンテンツ再生装置１０００は、位置情報を取得する手段を備える構成としてもよい。そして、コンテンツ再生装置１０００は、位置情報を検証することにより、コンテンツを特定の場所でのみ再生可能とする仕組みを提供するとしてもよい。
【０１１７】
また、コンテンツ再生装置１０００は、コンテンツを再生することが可能な前記特定の場所を任意のタイミングで変更するように構成してもよい。
また、本発明は、コンテンツ再生処理に代えて、他の特定の処理を行う装置であって、前記特定の処理を特定の場所でのみ実行することが可能な仕組みを提供する装置としてもよい。
【０１１８】
（１３）上記の各装置は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記ＲＡＭまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
【０１１９】
（１４）上記の各装置を構成する構成要素の一部または全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムＬＳＩは、その機能を達成する。
【０１２０】
（１５）上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なＩＣカードまたは単体のモジュールから構成されているとしてもよい。前記ＩＣカードまたは前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどから構成されるコンピュータシステムである。前記ＩＣカードまたは前記モジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ＩＣカードまたは前記モジュールは、その機能を達成する。このＩＣカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
【０１２１】
（１６）本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるディジタル信号であるとしてもよい。
（１７）また、本発明は、前記コンピュータプログラムまたは前記ディジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記ディジタル信号であるとしてもよい。
【０１２２】
（１８）また、本発明は、前記コンピュータプログラムまたは前記ディジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
（１９）また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
【０１２３】
（２０）また、前記プログラムまたは前記ディジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記ディジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
（２１）上記の実施形態及び上記の変形例をそれぞれ組み合わせるとしてもよい。
【産業上の利用可能性】
【０１２４】
本発明は、インテグリティチェックデータ用メモリとして用いられるフラッシュメモリの劣化対策として、フラッシュメモリの製造及び販売をする産業において利用することができる。また、フラッシュメモリを組み込んだコンテンツ再生機器の製造及び販売をする産業においても利用することができる。
【符号の説明】
【０１２５】
１０００      コンテンツ再生装置
１００１      コンテンツ再生部
１００２      再生情報生成部
１００３      確認データ生成部
１００４      第１のアドレス計算部
１００５      確認データ格納部
１００６      第２のアドレス計算部
１００７      比較対象データ読込部
１００８      検証部
１００９      旧アドレス保持部
１０１０      確認データ変更部
１０１１      再生情報送信部
１０１２      検証結果通知部
【図１】
2010027038.tif 000003
【図２】
2010027038.tif 000004
【図３】
2010027038.tif 000005
【図４】
2010027038.tif 000006
【図５】
2010027038.tif 000007
【図６】
2010027038.tif 000008
【図７】
2010027038.tif 000009
【図８】
2010027038.tif 000010
【図９】
2010027038.tif 000011
【図１０】
2010027038.tif 000012
【図１１】
2010027038.tif 000013
【図１２】
2010027038.tif 000014
【図１３】
2010027038.tif 000015