説明

情報処理装置

【課題】メモリカードの鍵管理情報の更新中にメモリカードが機器から抜かれる等の異常が発生した時に、既に書き込まれているコンテンツが使用できなくなる状態を防ぐこと。
【解決手段】 暗号化コンテンツと、コンテンツの暗号化に用いられる複数のタイトル鍵(Kt)と、鍵管理情報(MKB)と、複数のタイトル鍵をコンテンツのアプリケーション毎に暗号化するのに用いられる第1のアプリケーション鍵(62)と第2のアプリケーション鍵(64)とを格納するSDカード(50)が接続されるホスト(100)であって、鍵管理情報を更新する更新部(103)と、鍵管理情報の更新時に第1、第2のアプリケーション鍵を交互に更新する処理部(110)とを具備する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は記録可能な記憶媒体に記録されるコンテンツの保護技術に関し、不正機器や不正記憶媒体を無効化するための情報処理装置に関する。
【背景技術】
【0002】
コンテンツの記憶媒体の一例としてSD(Secure Digital)カードと称されるメモリカードがある。SDカードではコンテンツを保護するための仕組みとして、Content Protection for Recordable Media(CPRM)と呼ばれるコンテンツ保護技術が採用されている。このCPRMでは以下のような特徴の技術が採用されている。
【0003】
コンテンツを保護するためのコンテンツの暗号化に用いられる暗号化鍵などの管理情報をメモリカードに読み書きするための仕組みとして、相互認証方式が採用されている。さらに、不正機器を無効化するための仕組みとして、メディア鍵ブロックと呼ばれる鍵管理情報を利用する技術が採用されている(例えば、非特許文献1参照)。不正機器とはコンテンツ保護技術によりコンテンツに施されている保護情報をコンテンツから取り外したり、コンテンツの改窟を行ったり、あるいは機器の秘密情報を露呈する機器である。
【0004】
鍵管理情報は技術ライセンス団体が発行するが、発行時点で不正機器として認知されている機器ではメモリカード等の記憶媒体に記憶された暗号化コンテンツが復号できなくすること(不正機器の無効化または不正機器の排除:これらはリボークとも称される)を実現するための管理情報である。鍵管理情報は特定のメディア鍵が複数の異なるデバイス鍵で暗号化された複数の暗号化メディア鍵を含む。メディア鍵は通信を行う双方の機器や記憶媒体において認証やコンテンツを暗号化するための暗号化鍵自体の暗号化に用いられる鍵情報である。デバイス鍵は各機器や各記憶媒体に対して一意もしくは一定に割り当てられた鍵情報であり、少なくとも1つのデバイス鍵が機器や記憶媒体に各々記憶される。このメディア鍵を無効にする新たな鍵管理情報を生成し、これを用いて相互認証を行うことにより、不正機器に対する認証が成功しなくなる。この結果、不正機器を無効化または排除することができる。従って、鍵管理情報は記憶媒体の製造時点において判明している不正機器の情報を反映した最新のものでなければ、不正機器の無効化が健全且つ効率的に実現されなくなってしまう。このため、メモリカードでは鍵管理情報をより新しいものに更新するための仕組みも導入されている。
【0005】
メモリカードはDVD(Digital Versatile Disc)等の光ディスクまたは磁気ディスクとは異なり、データの記憶のためのフラッシュメモリ以外にコントローラも内蔵している。不正機器ではない正当な機器でしか暗号化鍵や鍵管理情報などのデータの書き込みや読み出しをできないようにするための相互認証がこのコントローラにより情報処理装置との間で行われる。
【0006】
一方、秘密領域を有する記録媒体にコンテンツの記録を行い、コンテンツの記憶を行い、コンテンツの著作権の保護を図る有効な鍵管理方法において、タイトル鍵で暗号化を行って記録を行う秘密領域の無駄な消費を防止する方法も提案されている(例えば、特許文献1参照)。
【0007】
また、著作権保護技術の安全性を確保することができる相互認証方法も提案されている(例えば、特許文献2参照)。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2006−217218号公報
【特許文献2】特開2004−220317号公報
【非特許文献】
【0009】
【非特許文献1】Content Protection for Recordable Media Specification: SD Memory Card Book Common Part, Revision 0.961, May 3, 2007
【発明の概要】
【発明が解決しようとする課題】
【0010】
メモリカード内にある鍵管理情報を更新する際、メモリカードの認証エリア内にあるタイトル鍵を鍵管理情報から導出されるメモリカード固有のメディアユニーク鍵を用いて新たに暗号化して書き込む必要がある。タイトル鍵は多数(例えば、数千個)あるので、再暗号化したタイトル鍵を認証エリアに書き込んでいる際に、ユーザによりメモリカードが機器から抜かれると、全てのタイトル鍵の再暗号化が完了せずに、一部のタイトル鍵は旧いメディアユニーク鍵のままで暗号化されているため、全体としてタイトル鍵が正常な状態にならず、コンテンツが復号できなくなる場合がある。
【0011】
上述の課題はSDカードに限らず、他のメモリカードにおいても適用される。
【0012】
本発明の目的はメモリカードの鍵管理情報の更新中にメモリカードが機器から抜かれる等の異常が発生した時に、既に書き込まれているコンテンツが使用できなくなる状態を防ぐことができる情報処理装置を提供することにある。
【課題を解決するための手段】
【0013】
本発明の一態様による情報処理装置は、記憶媒体がカードスロットを介して接続される情報処理装置において、前記情報処理装置は、装置全体を制御するCPU(Central Processing Unit)と、各種データや各種アプリケーションの各種プログラムを記憶するROM(Read Only Memory)とRAM(Random Access Memory)と、該CPUと該ROMと該RAMとを接続するバスとを少なくとも備え、前記記憶媒体はコンテンツ暗号化のための複数のタイトル鍵と、前記複数のタイトル鍵をコンテンツのアプリケーション毎に暗号化するための第1のアプリケーション鍵と第2のアプリケーション鍵と、メディア鍵ブロックと、認証鍵と、メディアユニーク鍵と、を格納し、前記メディア鍵ブロックは複数の異なるデバイス鍵で暗号化されている複数の暗号化メディア鍵を含み、前記第1のアプリケーション鍵と第2のアプリケーション鍵はメディアユニーク鍵で暗号化されており、前記メディアユニーク鍵はメディア鍵とメディア識別子とから導出され、前記情報処理装置は、前記記憶媒体からメディア鍵ブロックを読み出し、暗号化メディア鍵から認証鍵を導出する算出手段と、前記記憶媒体から認証鍵を読み出して前記導出された認証鍵と比較し、相互認証を実行する手段と、相互認証が成功した場合、前記記憶媒体から前記メディアユニーク鍵と、前記第1、第2の暗号化アプリケーション鍵のうち有効なアプリケーション鍵を読み出し、読み出したアプリケーション鍵を記憶媒体のメディアユニーク鍵を用いて復号し、復号結果をホストのメディアユニーク鍵で再暗号化し、再暗号化結果を前記記憶媒体へ供給し、前記第1、第2の暗号化アプリケーション鍵のうち無効なアプリケーション鍵を更新する手段と、該装置が格納しているメディア鍵ブロックを前記記憶媒体へ供給する手段と、を具備し、前記記憶媒体は前記情報処理装置から供給されたメディア鍵ブロックと、該媒体が格納しているメディア鍵ブロックとの新旧を比較し、該媒体が格納している旧のメディア鍵ブロックを前記情報処理装置から供給された新のメディア鍵ブロックで書き換える更新手段を具備する情報処理装置である。
【発明の効果】
【0014】
メモリカードの鍵管理情報の更新中にメモリカードが機器から抜かれる等の異常が発生した時に、既に書き込まれているコンテンツが使用できなくなる状態を防ぐことができる。
【図面の簡単な説明】
【0015】
【図1】本発明の一実施の形態にかかるホストの構成の一例を示す図。
【図2】本発明の一実施の形態にかかるSDカードの構成の一例を示す図。
【図3】一実施の形態に係るメディア鍵ブロックのデータ構成の一例を示す図。
【図4】一実施の形態に係る認証エリアのディレクトリ構成例を示す図。
【図5】一実施の形態に係る更新処理の手順の前半を示すフローチャートである。
【図6】一実施の形態に係る更新処理の手順の中間の部分を示すフローチャートである。
【図7】一実施の形態に係る更新処理の手順の後半を示すフローチャートである。
【発明を実施するための形態】
【0016】
以下、図面を参照して本発明による情報処理装置の実施の形態を説明する。
【0017】
第1の実施の形態
本実施の形態においては鍵管理情報としては、AACS(Advanced Access Content System)などで利用しているメディア鍵ブロックMKBを用いる。相互認証を行う2つの情報処理装置としては、SDカードのようにセキュリティ機能としてアクセス制限の掛けられた記憶領域とコントローラとを有するメモリカードと、メモリカードにデータを読み書きするアプリケーションを実行するホストとを例にして説明する。メモリカードとしては、SDカードを例にして説明する。
【0018】
図1は本実施の形態にかかるホスト100の構成の概要を示す図である。図2は本実施の形態にかかるSDカード50の構成の概要を示す図である。
【0019】
ホスト100は装置全体を制御するCPU(Central Processing Unit)等の制御装置と、各種データや各種アプリケーション等の各種プログラムを記憶するROM(Read Only Memory)やRAM(Random Access Memory)等の記憶装置と、これらを接続するバスとを少なくとも備えており、通常のコンピュータを利用したハードウェア構成となっている。ホスト100では情報を表示する表示装置と、ユーザの指示入力を受け付けるキーボードやマウス等の入力装置と、外部装置の通信を制御する通信I/F(interface)とが有線または無線により各々接続される。SDカード50はCPU、ROM及びRAMを有するコントローラと、各種データや各種プログラムを記憶領域とを有する。
【0020】
鍵管理情報の使用に関連して、SDカード50に記憶されるデータ及びホスト100に記憶されるデータについて各々説明する。
【0021】
図2に示すように、SDカード50は記憶領域として、更新可能メモリ51、更新不可メモリ52、アクセス制限の掛けられた認証エリア59を有する。認証エリア59はホスト100とSDカード50間で相互認証が成功しなければアクセスできない領域である。SDカード50は暗号化コンテンツを格納するユーザデータエリアも含むが、本発明の動作と関係ないので、図示省略する。なお、コンテンツが128ビットより大きい場合、コンテンツの暗号化方式はCBCモードのAES暗号化である。最後のブロックが128ビット以下である場合、最後のブロックは暗号化されない。コンテンツ全体が128ビット以下である場合、コンテンツは暗号化されない。
【0022】
更新可能メモリ51はデータを更新可能に記憶する記憶領域であり、メディア鍵ブロックMKB、認証鍵Kauth、カード内のメディア鍵ブロックMKBの更新毎にインクリメントされる更新カウンタのカウント値である更新回数UC(Update Counter)を格納する。ホスト100は更新回数UCが奇数か偶数かを判ればよいので、更新回数UCは複数ビットであるが、ホスト100は更新回数UCのLSBの1ビットだけ判ればよい。
【0023】
更新不可メモリ52はデータを更新不能に記憶する記憶領域であり、メディア識別子MID、デバイス鍵(Kd)セット、デバイス情報番号(Device_info、またはDevice_node)を格納する。
【0024】
認証エリア59はタイトル鍵(Kt)ファイル、偶数用アプリケーション鍵(Kapp)ファイル62、奇数用アプリケーション鍵(Kapp)ファイル64を格納する。コンテンツの各部分はユニークなタイトル鍵Ktで暗号化される。タイトル鍵Ktおよびタイトル鍵ファイルは認証エリア59に複数存在し得る。タイトル鍵ファイルはアプリケーション毎にアプリケーション鍵Kappで暗号化される。アプリケーション鍵Kappは各メディア鍵ブロックMKBに関連するメディアユニーク鍵Kmuで暗号化される。各メディア鍵ブロックMKB毎に2つのアプリケーション鍵ファイルがある。1つは偶数用アプリケーション鍵ファイル62であり、他は奇数用アプリケーション鍵ファイル64である。ホスト100はどちらのアプリケーション鍵ファイルが有効であるかを決定する。ホスト100がSDカード50へメディア鍵ブロックMKBを要求すると、SDカード50はメディア鍵ブロックMKBとともに更新回数を返送する。更新回数が偶数である場合、偶数用アプリケーション鍵ファイル62が有効であり、奇数用アプリケーション鍵ファイル64が無効である。更新回数が奇数である場合、奇数用アプリケーション鍵ファイル64が有効であり、偶数用アプリケーション鍵ファイル62が無効である。0は偶数として扱う。タイトル鍵Ktは暗号化されて、暗号化アプリケーション鍵ファイルと同様に認証・鍵交換実行部109、58を介してホスト100から供給される。
【0025】
メディア識別子MIDはSDカード50を一意に識別可能な媒体識別情報であり、識別情報に相当する。例えば、128ビットであり、メディアデバイス鍵(Kd)セットのデバイスノードを含む。
【0026】
メディア鍵ブロックMKBは複数のデバイス鍵のそれぞれで暗号化されたメディア鍵(秘密鍵)である複数の暗号化メディア鍵Km(暗号化秘密鍵)を含む鍵管理情報である。複数のアプリケーションをサポートするためにメモリカードは複数、例えば8個のメディア鍵ブロックMKBを含む。メディア鍵ブロックMKBの最大サイズは、例えば1メガバイトである
デバイス鍵(Kd)セットはSDカード50やホスト100などの各情報処理装置に対して割り当てられた鍵情報であり、暗号化メディア鍵Kmを復号可能なデバイス鍵Kdを少なくとも1つ含む鍵情報であり、装置秘密鍵に相当する。デバイス鍵(Kd)セットは各情報処理装置に対して一意に割り当てられているものとする。デバイス鍵(Kd)セットはデバイスノードと、1以上ののメディアデバイス鍵Kdと各デバイス鍵に関連するuv番号(UV)とを含む。
【0027】
デバイス情報番号はデバイス鍵(Kd)セットを識別可能なインデックス情報である。デバイス情報番号は指定情報に相当し、メディア鍵ブロックMKBに含まれる暗号化メディア鍵Kmを特定するために用いられる。
【0028】
認証鍵Kauthはメディア鍵ブロックMKB毎に設けられ、メディア識別子MIDとメディア鍵プライム(後述)とで一方向性関数(AES)に演算することにより計算される。認証鍵Kauthは例えば128ビット長である。
【0029】
メディアユニーク鍵Kmuはメディア識別子MIDとメディア鍵Kmとで一方向性関数に演算することで得られるもので、秘密固有鍵に相当する。
【0030】
鍵管理情報(メディア鍵ブロックMKB)について、SDカード50が記憶しているものと、ホスト100が記憶しているものとを区別する必要がある場合は前者をメディア鍵ブロックMKBと記載し、後者をメディア鍵ブロックMKBと記載し、これらを区別する必要がない場合は単にメディア鍵ブロックMKBと記載する。
【0031】
デバイス鍵セットについても、SDカード50が記憶しているものと、ホスト100が記憶しているものとを区別する必要がある場合は前者をKdと記載し、後者をKdと記載し、これらを区別する必要がない場合は単にデバイス鍵(Kd)セットと記載する。
【0032】
メディア鍵Kmについても、メディア鍵ブロックMKBに基づいて復号されるものと、メディア鍵ブロックMKBに基づいて復号されるものとを区別する必要がある場合は前者をKmと記載し、後者をKmと記載し、これらを区別する必要がない場合は単にメディア鍵Kmと記載する。
【0033】
メディアユニーク鍵Kmuについても、メディア鍵ブロックMKBに基づいて生成されるものと、メディア鍵ブロックMKBに基づいて生成されるものとを区別する必要がある場合は前者をKmuと記載し、後者をKmuと記載し、これらを区別する必要がない場合には単にメディアユニーク鍵Kmuと記載する。
【0034】
図1に示すように、ホスト100はSDカード50と同様に、記憶領域として、更新可能メモリ101、更新不可メモリ102を有する。
【0035】
更新可能メモリ101はメディア鍵ブロックMKBを格納する。メディア鍵ブロックMKBはホスト100で実行されるアプリケーションの製造(或いは出荷)時にホスト100に書き込まれるようにしても良いし、出荷後にネットワークや他のメディアを使ってホスト100に配布されるようにしても良い。
【0036】
更新不可メモリ102は更新可能メモリ101に記憶されたメディア鍵ブロックMKBを復号するために必要なデバイス鍵(Kd)セットを格納する。デバイス鍵(Kd)セットはデバイスノードと、325対のデバイス鍵Kdとデバイス鍵Kdに関連するuv番号(UV)とからなる。
【0037】
次に、上述のハードウェア構成において、SDカード50においてCPUがROMや記憶領域に記憶された各種プログラムを実行することにより実現される各種機能のうち本実施の形態に関連する機能について説明する。ここでは、SDカード50は利用可能な鍵管理情報として、更新可能メモリ51に記憶されているメディア鍵ブロックMKBを用いるものとする。
【0038】
図2に示すように、SDカード50は送信部53、復号部54、一方向性関数部55、一方向性関数部56、MKB検証・更新部57、認証・鍵交換実行部58の各機能を実現させる。
【0039】
送信部53は更新可能メモリ51に記憶されているメディア鍵ブロックMKB、認証鍵Kauth、更新カウンタUC、及び更新不可メモリ52に記憶されているメディア識別子MID及びデバイス情報番号を送信部53を介してホスト100に送る。
【0040】
復号部54はMKB処理の一部を実行するものであり、SDカード50に記憶されているメディア鍵ブロックMKBがホスト100に記憶されているメディア鍵ブロックMKBより旧い場合、メディア鍵ブロックMKBの一部のレコードであって、自身のデバイス情報番号によって特定される暗号化メディア鍵Km、即ち、自身のデバイス情報番号によって識別されるデバイス鍵(Kd)セットに対応した暗号化メディア鍵Kmをホスト100から受け取る。復号部54は受け取った暗号化メディア鍵Kmをデバイス鍵(Kd)セットに含まれるデバイス鍵の1つを用いて復号し、さらにメディア鍵と一定の値とで一方向性関数に演算して、メディア鍵プライムKm’を求める。
【0041】
一方向性関数部55はメディア識別子MIDとメディア鍵プライムKm’とで一方向性関数に演算することにより認証鍵Kauthを求める。
【0042】
一方向性関数部56はメディア鍵プライムKm’とメディア鍵プライムデータ(後述)とで一方向性関数に演算することによりメディア鍵プライム応答(後述)を生成し、これを認証・鍵交換実行部58、109を介してホスト100に送る。
【0043】
MKB検証・更新部57はホスト100での検証結果に応じてメディア鍵ブロックMKBの全てをホスト100から受け取り、これを検証する。MKB検証・更新部57は当該検証結果に応じて、更新可能メモリ51に記憶されたメディア鍵ブロックMKBをメディア鍵ブロックMKBに置き換えると共に、更新可能メモリ51に記憶された認証鍵Kauthを一方向性関数部55がメディア鍵ブロックMKBから求めた認証鍵Kauthに置き換える。
【0044】
認証・鍵交換実行部58はホスト100と共有される認証鍵Kauthを用いて暗号通信を行うための認証(AKE相互認証)及び鍵交換処理を実行する。認証(AKE相互認証)及び鍵交換処理は外部にはその内容が判らないようにセキュアに実行される。
【0045】
次に、ホスト100の制御装置が記憶装置や外部記憶装置に記憶された各種プログラムを実行することにより実現される各種機能のうち本実施の形態に関連する機能について説明する。
【0046】
図1に示すように、ホスト100は受信部111、MKB検証・更新部103、メディア鍵ブロックMKB処理部104、一方向性関数部105、アプリケーション鍵処理部110、一方向性関数部112、113、指定レコード選択処理部106、一方向性関数部107、データ検証処理部108、認証・鍵交換実行部109の各機能を実現させる。
【0047】
MKB検証・更新部103はメディア鍵ブロックMKB、メディア識別子MID及びデバイス情報番号をSDカード50から受け取ると、更新不可メモリ102に記憶されているデバイス鍵セットKdを用いてメディア鍵ブロックMKBの正当性を検証する。MKB検証・更新部103はメディア鍵ブロックMKBと更新可能メモリ101に記憶されているメディア鍵ブロックMKBとの新旧を比較する。メディア鍵ブロックMKBの方が旧い場合、MKB検証・更新部103は更新可能メモリ101に記憶されているメディア鍵ブロックMKBをメディア鍵ブロックMKBに置き換える。一方、メディア鍵ブロックMKBの方が新しい場合、MKB検証・更新部103はデバイス情報番号を指定レコード選択処理部106に送る。
【0048】
指定レコード選択処理部106は更新可能メモリ101に記憶されているメディア鍵ブロックMKBの一部のレコードであって、MKB検証・更新部103から受け取ったデバイス情報番号によって特定される暗号化メディア鍵、即ち、当該デバイス情報番号によって識別されるデバイス鍵セットKdに対応した暗号化メディア鍵KmをSDカード50に送る。
【0049】
MKB処理部104はメディア鍵ブロックMKBを更新不可メモリ102に記憶されているデバイス鍵セットKdに含まれるデバイス鍵の1つを用いて処理しメディア鍵Kmを求める。
【0050】
一方向性関数部105はSDカード50から受け取ったメディア識別子MIDとメディア鍵ブロックMKB処理部104が求めたメディア鍵Kmとで一方向性関数に演算することによりメディアユニーク鍵Kmuを求める。メディアユニーク鍵Kmuはアプリケーション鍵処理部110に供給される。アプリケーション鍵はSDカード50の認証エリア59から認証・鍵交換実行部58、109を介してアプリケーション鍵処理部110に供給され、処理後のアプリケーション鍵は認証・鍵交換実行部109、58を介して再びSDカード50の認証エリア59に供給される。
【0051】
一方向性関数部112はメディア鍵Kmと定数とで一方向性関数に演算し、メディア鍵プライムKm’を求める。
【0052】
一方向性関数部113はメディア鍵プライムKm’とメディア識別子MIDとで一方向性関数に演算し、認証鍵Kauthを求める。認証鍵Kauthを認証・鍵交換実行部109に供給される。
【0053】
一方向性関数部107はメディア鍵プライムKm’とメディア鍵プライムデータ(後述)とで一方向性関数に演算し、メディア鍵プライム応答の期待値(後述)を求める。期待値はデータ検証処理部108に供給される。
【0054】
データ検証処理部108は指定レコード選択処理部106が行った暗号化メディア鍵Kmの送信に応答してSDカード50から応答を受け取ると、応答と期待値とを比較することにより、当該応答の正当性を検証する。データ検証処理部108は当該検証により正当性が確認されたら、メディア鍵ブロックMKBの全てをSDカード50に送る。この送信は、その信号経路は図示していないが、認証・鍵交換実行部109、認証・鍵交換実行部58を介して行われる。
【0055】
アプリケーション鍵処理部110はSDカード50の更新可能メモリ51から取得したメディア鍵ブロックMKBの更新回数UCを読み取って、認証エリア59内の偶数用アプリケーション鍵ファイル62、奇数用アプリケーション鍵ファイル64のいずれが有効/無効かを判定するとともに、有効なアプリケーション鍵ファイルをメディアユニーク鍵Kmuで再暗号化し、再暗号化したアプリケーション鍵ファイルを無効アプリケーション鍵ファイルに上書きする機能を有する。アプリケーション鍵ファイルも認証・鍵交換実行部109、58を介してSDカード50とホスト100との間で通信される。
【0056】
メディア鍵ブロックMKBのデータ構成について図3を用いて説明する。メディア鍵ブロックMKBはバージョン番号、メディア鍵検証用レコード、複数の暗号化メディア鍵の各レコード、複数のメディア鍵プライムの各レコード、複数のUVデスクリプターの各レコードを含む。
【0057】
バージョン番号はメディア鍵ブロックMKBのバージョンを示し、メディア鍵ブロックMKBの新旧を比較可能な情報(比較管理情報)である。
【0058】
メディア鍵検証用レコードはSDカード50がホスト100からメディア鍵ブロックMKBを受け取った時に当該メディア鍵ブロックMKBを検証するために用いられる。具体的にはメディア鍵検証用レコードは固定データ(例えば、”01234XXX”などの数列)をメディア鍵Kmで暗号化したものである。固定データはSDカード50に別途予め記憶される。
【0059】
暗号化メディア鍵は1つのブロック情報番号またはブロック情報番号のグループ毎に、1つずつレコードが分かれてメディア鍵ブロックMKBに含まれる。例えば、ブロック情報番号“1”に対応する1つの暗号化メディア鍵と、ブロック情報番号“100”〜“199”に対応する1つの暗号化メディア鍵とが別々のレコードとして含まれる。各ブロック情報番号には上述したようにデバイス鍵セットが対応しているから、各暗号化メディア鍵はブロック情報番号に対応するデバイス鍵セットに含まれるデバイス鍵の1つによって復号可能である。
【0060】
暗号化メディア鍵プライムは暗号化メディア鍵と同様に格納されている。なお、暗号化メディア鍵のレコードおよび暗号化メディア鍵プライムのレコードは図4のように種別毎にブロックをなして配置されておいてもよいし、暗号化メディア鍵のレコードおよび暗号化メディア鍵プライムのレコードが一つのブロックに混ざって配置されていてもよい。
【0061】
図4は認証エリアのディレクトリ構成例を示す図である。認証エリアではディレクトリは各アプリケーションにより割り当てられる。ディレクトリ名はXXXである。XXXはSDアプリケーション名である。各ディレクトリ内で暗号化タイトル鍵を格納するファイル名はYYY.KYXである。YYYはSDアプリケーションにより割り当てられる。各メディア鍵ブロックMKBに関連した暗号化アプリケーション鍵を格納するファイル名はAPP_nn_x.KYXである。“nn”はメディア鍵ブロックMKBの番号(十進数で00から07)、xは1は奇数を示し、2は偶数を示す。
【0062】
図4はビデオコンテンツに対するタイトル鍵束の例を示す。ディレクトリ名はVIDEOであり、ビデオコンテンツを暗号化するためのタイトル鍵の束を格納するファイルはVIDEOnnn.KYX、またはMOnnn.KYXである。nnnは十進数である。APP_08_1.KYXはビデオアプリケーション用のアプリケーション鍵ファイルであり、奇数用である。APP_08_2.KYXは偶数用のアプリケーション鍵ファイルである。メディア鍵ブロックMKBの更新回数が0の場合、APP_08_2.KYXが有効のアプリケーション鍵ファイルである。
【0063】
アプリケーション鍵は一つのアプリケーションに対して一つである。つまり、一つのメディア鍵ブロックMKBに対して一つである。それに対して、アプリケーション鍵ファイルは奇数用と偶数用で二つになる。メモリカードに一つ以上のメディア鍵ブロックMKBが格納されていると、それぞれのMKBに対してアプリケーション鍵が存在する。前述のビデオ用のタイトル鍵は一つのアプリケーション鍵で暗号化されている。また、アプリケーション鍵はメモリカードに固有のメディアユニーク鍵Kmuで暗号化されている。メディアユニーク鍵はMKBとデバイス鍵セット、メディア識別子から算出できる値である。
【0064】
MKBをデバイス鍵KdでMKB処理すると、メディア鍵Kmが得られる。メディア鍵Kmとメディア識別子MIDとで一方向性関数に演算することによりメディアユニーク鍵Kmuが得られる。
【0065】
一方、メディア鍵Kmと定数とで一方向性関数に演算すると、メディア鍵プライムKm’が得られる。メディア識別子MIDとメディア鍵プライムKm’とで一方向性関数に演算すると、認証鍵Kauthが得られる。
【0066】
次に、本実施の形態にかかるホスト100とSDカード50とで行うSDカードのメディア鍵ブロックMKB更新処理の手順について図5、図6、図7のフローチャートを参照して説明する。
【0067】
SDカード50がホスト100のカードスロット(図示せず)に挿入されると、ステップ#12で、ホスト100はGET_MKBコマンドを発行する。
【0068】
SDカード50はステップ#14で更新可能メモリ51内のメディア鍵ブロックMKB及び更新回数UCをホスト100へ送信する。ホスト100はステップ#16でメディア鍵ブロックMKB及び更新回数UCをSDカード50から受信する。ホスト100はSDカード50のMKBのバージョン番号とホスト100のメディア鍵ブロックMKBのバージョン番号とを比べ、ホスト100のメディア鍵ブロックMKBのバージョン番号がSDカード50のMKBのバージョン番号より新しい場合、SDカード50のメディア鍵ブロックMKBを更新する。これにより、不正なSDカードはホストに接続された時、メディア鍵ブロックMKBが最新のメディア鍵ブロックMKBに更新されるので、最新のメディア鍵ブロックMKBが当該カードの情報を含んでいれば、無効化することができる。それ以外の場合は、本発明の範囲外なので、説明は省略するが、SDカード50のメディア鍵ブロックMKBのバージョン番号がホスト100のメディア鍵ブロックMKBのバージョン番号より新しい場合、ホスト100のメディア鍵ブロックMKBが更新される。
【0069】
更新回数UCは認証エリア59内の2つのアプリケーション鍵ファイルのいずれが有効であるかを示すものであり、更新回数UCが偶数の場合、偶数用アプリケーション鍵ファイル62が有効で、奇数用アプリケーション鍵ファイル64が無効である。反対に、更新回数UCが奇数の場合、奇数用アプリケーション鍵ファイル64が有効で、偶数用アプリケーション鍵ファイル62が無効である。この識別結果はステップ#74および#86で使用する。
【0070】
ホスト100はステップ#18で更新不可メモリ102内のデバイス鍵セットKdと受信したメディア鍵ブロックMKBとで一方向性関数に演算することによりメディア鍵プライムKm’を求める。具体的には、MKB処理部104がメディア鍵ブロックMKBとKdをMKB処理して求めたKmが一方向性関数部112に供給され、Kmと定数とで一方向性関数に演算することによりメディア鍵プライムKm’が求められる。
【0071】
ホスト100はステップ#22でGET_MIDコマンドを発行する。SDカード50はステップ#24で更新不可メモリ52内のメディア識別子MIDをホスト100へ送信する。ホスト100はステップ#26でメディア識別子MIDをSDカード50から受信する。ホスト100はステップ#28で一方向性関数部113によりメディア鍵プライムKm’とメディア識別子MIDとで一方向性関数に演算することにより認証鍵Kauthを求める。
【0072】
ホスト100はステップ#32でホスト100とSDカード50間で上記認証鍵Kauthと、SDカード50の更新可能エリア51内に格納されている認証鍵Kauthとを用いて相互認証(AKE)を行う。相互認証が成功した場合、ホスト100とSDカード50で同じセッション鍵Ksが生成され、共有される。
【0073】
ホスト100はステップ#34でSDカード50の更新不可メモリ52内のメディア識別子MIDに含まれているデバイスノードに対応するホスト100のメディア鍵ブロックMKBの中からメディア鍵プライムメディアレコード内のメディア鍵プライムデータレコードの16バイトのエントリと、メディア鍵プライムレコードの明示的なサブセット差分内のUVデスクリプターの6バイトのエントリとを探す。
【0074】
ホスト100はステップ#36でメディア鍵ブロックMKBのバージョン番号(Version Number)、メディア鍵プライムレコード(Media Key Prime Data)、UVデスクリプター(UV Descriptor)、パディングデータ(00000000000016)を連結し、32バイトのメディア鍵プライム要求Km’Requestを生成する。
【0075】
Km’Request=Version Number||Media Key Prime Data||UV Descriptor||00000000000016
ホスト100はステップ#38でメディア鍵プライム要求Km’Requestをステップ#32で共有されているセッション鍵Ksで暗号化する。暗号化方式はAESのECBCモードである(以下、この暗号化方式をAES_ECBCと称する)。
【0076】
ホスト100はステップ#42で暗号化メディア鍵プライム要求Km’Requestを認証・鍵交換実行部109、58を介してSDカード50へ送信する。SDカード50はステップ#44で暗号化メディア鍵プライム要求Km’Requestを受信する。
【0077】
ホスト100はステップ#46でメディア鍵プライム応答の期待値を計算する。メディア鍵プライム応答の期待値はメディア鍵プライムデータ(図3に示すようにメディア鍵ブロックMKBに格納されている)とメディア鍵ブロックMKBから導出したメディア鍵プライムKm’とでAES暗号アルゴリズムを用いた一方向性関数(以下、この方式をAES_Gと称する)に演算することにより計算される。計算された期待値は図示しないセキュアなメモリに保存される。
【0078】
Expected-Km’Response=AES_G(Km’,Media Key Prime Data)
SDカード50はステップ#44で受信した暗号化メディア鍵プライム要求Km’Requestをステップ#32で共有したセッション鍵Ksを用いて復号する(ステップ#48)。復号方式はAESのDCBCモードである(以下、この暗号化方式をAES_DCBCと称する)。
【0079】
SDカード50はステップ#50で以下の式により受信したデータが正確に復号できたことを確認する。
【0080】
[AES_DCBC(Ks,Km’Request)]lsb_48=00000000000016
復号データの正当性が確認できた場合、SDカード50(復号部54)は復号したメディア鍵プライムデータ要求Km’Request、更新不可メモリ52内のデバイス鍵セットKd、メディア鍵ブロックMKBのバージョン番号を用いてMKB処理を行い、メディア鍵プライムKm’の候補値を計算する(ステップ#54)。SDカード50はそのメディア鍵プライムKm’の候補値をセキュアなメモリに保存しておく。
【0081】
SDカード50(一方向性関数部55)はステップ#56でメディア鍵プライムKm’の候補値とメディア識別子MIDとで一方向性関数に演算し、認証鍵Kauthを計算する。さらに、その認証鍵Kauthを候補値としてセキュアなメモリに保存しておく。
【0082】
SDカード50(一方向性関数部56)はステップ#58でメディア鍵プライムKm’の候補値とメディア鍵プライムデータ(図3に示すようにメディア鍵ブロックMKBに格納されている)とで一方向性関数に演算し16バイトのメディア鍵プライム応答を以下の式にて計算する。
【0083】
Km’Response=AES_G(the candidate Km’,Media Key Prime Data)
ホスト100はステップ#62でGET_MKPRコマンドを発行する。SDカード50はステップ#64でメディア鍵プライム応答をセッション鍵Ksで暗号化して、ホスト100へ送信する。暗号化方式はAES_ECBCである。ホスト100はステップ#66で暗号化メディア鍵プライム応答をSDカード50から受信し、セッション鍵Ksで復号する。復号方式はAES_DCBCである。
【0084】
ホスト100(データ検証処理部108)はステップ#46で求めたメディア鍵プライム応答の期待値と、ステップ#66で復号したメディア鍵プライム応答とが一致するか否かを確認する(ステップ#68)。一致したときは次のステップへ進み、一致しない場合、処理は中止される。
【0085】
ホスト100はステップ#72でSDカード50の更新可能メモリ51内のメディア鍵ブロックMKBを用いてホスト100とSDカード50間で相互認証(AKE)を行う。相互認証が成功した場合、ホスト100はSDカード50の認証エリア59からデータを読む/認証エリア59にデータを書く前に必要である新セッション鍵Ksを求める。
【0086】
ホスト100はステップ#73でSDカードへ有効なアプリケーションファイルの読み込み要求する。
【0087】
ホスト100はステップ#74でSECURE_READ_MULTI_BLOCKコマンドを発行する。SDカード50はステップ#76で認証エリア59から有効なアプリケーション鍵ファイル62または64を読出し、ホスト100へ送信する。ホスト100はステップ#78で有効なアプリケーション鍵ファイル62または64をSDカード50から受信する。
【0088】
ホスト100はステップ#80でメディア鍵ブロックMKBから導出したメディア鍵Kmとメディア識別子MIDから導出したメディアユニーク鍵Kmuを用いて暗号化アプリケーション鍵ファイルを復号する。ホスト100はステップ#82でメディア鍵ブロックMKBから導出したメディア鍵Kmとメディア識別子MIDから導出したSDカード50のメディアユニーク鍵Kmuでアプリケーション鍵ファイルを再度暗号化する。
【0089】
ホスト100はステップ#84でホスト100とSDカード50間で相互認証(AKE)を行う。相互認証が成功した場合、新セッション鍵Ksを求める。
【0090】
ホスト100はステップ#85でSDカードへ無効なアプリケーションファイルへ書き込みを要求する。
【0091】
ホスト100はステップ#86でSECURE_WRITE_MULTI_BLOCKコマンドを発行する。
【0092】
ホスト100はステップ#88で再暗号化アプリケーション鍵ファイルをSDカード50へ送信する。SDカード50はステップ#90で再暗号化アプリケーション鍵ファイルをホスト100から受信し、認証エリア59内の無効のアプリケーション鍵ファイルへ上書きする。
【0093】
ホスト100はステップ#92でSET_MKBコマンドを発行する。ホスト100はステップ#94でメディア鍵ブロックMKBをSDカード50へ送信する。SDカード100はステップ#96でメディア鍵ブロックMKBをホスト100から受信する。SDカード100はステップ#98(あるいは受信中のステップ#96)でメディア鍵ブロックMKBの正当性を確認する。例えば、SDカード50が保持しているメディア鍵プライムKm’が正しいものがどうかをメディア鍵ブロックMKB内の検証データ(図3参照)を用いて検証する。あるいは、メディア鍵ブロックMKBのバージョン番号がメディア鍵ブロックMKBのバージョン番号よりも大きいことを確認する。あるいは、メディア鍵ブロックMKB内のハッシュ値が正しいことを確認する等である。
【0094】
SDカード50は受信したメディア鍵ブロックMKBの正当性を確認できた場合、ステップ#100でメディア鍵ブロックMKBとこれに付随する認証鍵Kauthをメディア鍵ブロックMKBと認証鍵Kauthの候補に置き換える。さらに、メディア鍵ブロックMKBの更新回数UCをインクリメントする。更新回数UCをインクリメントすることで、ホスト100がSDカード50からメディア鍵ブロックMKBを取得する際に付随する更新回数UCがインクリメントされているので、二つのアプリケーション鍵ファイルの有効および無効が入れ替わる。
【0095】
以上説明したように、ホスト100だけでなく、コントローラを内蔵したSDカード50にも、メディア鍵ブロック(鍵管理情報)を復号するために必要なデバイス鍵を含むデバイス鍵セットを記憶する。そして、ホスト100とSDカード50とが互いに自身が記憶しているデバイス鍵セットを用いて、メディア鍵ブロックMKBにより秘匿されているメディア鍵を復号する。更に、両者が、メディア識別子を用いてメディア鍵を変換したメディアユニーク鍵が一致した場合のみ、相互認証を継続できるようにする。
【0096】
また、複数のタイトル鍵を一つのアプリケーション鍵で暗号化し、アプリケーション鍵をメディアユニーク鍵で再暗号化する。アプリケーション鍵はメモリの一つのセクタに収まるサイズなので、再暗号化する部分を小さくすることができ、書換えに係る時間を短縮することができる。そのため、鍵管理情報の更新中にメモリカードがホストから抜かれる等の異常が発生しても、既に書き込まれているコンテンツが使用できなくなる状態を防ぐことができる。
【0097】
メモリカードは新たな鍵管理情報が入力された際に鍵管理情報の正当性を確認し、正当性が確認できた場合、鍵管理情報を更新し、更新回数をインクリメントする。
【0098】
一つの鍵管理情報毎に2つのアプリケーション鍵があり、一つは有効アプリケーション鍵、他は無効アプリケーション鍵である。ホストはメモリカードから鍵管理情報を取得する際に、メモリカード内で鍵管理情報が何回更新されたかを検出し、更新回数が偶数か奇数かで2つのアプリケーション鍵の何れが有効であるかを判断する。
【0099】
なお、この発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【0100】
<変形例1>
上述した実施の形態において、ホスト100またはSDカード50で実行される各種プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。
【0101】
ホスト100はCD−ROM、フレキシブルディスク(FD)、CD−R、DVD等のコンピュータで読み取り可能な記憶媒体からデータを読み出すドライブを備え、記憶媒体に記憶された各種プログラムを、当該ドライブを介して読み出してこれをインストールすることにより提供するように構成しても良い。
【0102】
<変形例2>
上述した実施の形態において、相互認証を行う2つの情報処理装置としてはホスト100とSDカード50とを例にして説明した。しかし、相互認証を行う2つの情報処理装置はこれらに限らない。
【0103】
一方の情報処理装置としてSDカード50にメディア鍵ブロック、デバイス鍵セット、メディア識別子及びメディアユニーク鍵が予め記憶される構成とした。しかし、当該一方の情報処理装置自体にこれらの情報が記憶されるのではなく、例えば、当該一方の情報処理装置はデバイス鍵を保有し、自身に着脱自在に装着され且つメディア鍵ブロック、メディア識別子及びメディアユニーク鍵が記憶されている記憶媒体からこれらの情報を取得するようにしても良い。即ち、この場合、当該一方の情報処理装置は利用可能な鍵管理情報として、記憶媒体に記憶されているメディア鍵ブロックを用いる。
【0104】
また、相互認証を行う2つの情報処理装置はDVDなどの光磁気ディスクにデータの読み書きを行うドライブと、ドライブを介して光磁気ディスクにデータの読み書きを行う情報処理装置(PCにインストールされるアプリケーション)とであっても良い。この場合、より複製されやすいアプリケーションがインストールされる情報処理装置が上述のSDカード50と同様の機能を実現させ、ドライブが上述のホスト100と同様の機能を実現させるようにする。このような構成においてはアプリケーションが秘匿しているデバイス鍵に対応したデバイス情報番号をドライブに送り、ドライブは光磁気ディスクに記録されているメディア鍵ブロックから受信したデバイス情報番号に対応した暗号化メディア鍵を取り出し、アプリケーション側に送り返すことになる。このような構成によれば、このアプリケーションを不正に複製した不正アプリケーションが出回った場合に、当該不正アプリケーションに記憶されているデバイス鍵セットを管理団体が特定できるようになる。
【0105】
なお、ドライブは常に光磁気ディスクからメディア鍵ブロックを読み出すだけでなく、自身の不揮発性メモリにメディア鍵ブロックを記憶しておき、光磁気ディスクとアプリケーションとの両方から送られてくる各メディア鍵ブロックを用いて不揮発性メモリ内のメディア鍵ブロックを最新の状態に更新しておくこともできる。
【0106】
<変形例3>
上述した実施の形態において、認証鍵Kauthはメディア鍵Kmから求めたメディア鍵プライムKm’から求め、メディアユニーク鍵Kmuもメディア鍵Kmから求めている。そのため、メディアユニーク鍵Kmuを認証鍵Kauthの代わりに使うことも可能である。その場合、SDカード50の更新可能メモリ51は認証鍵Kauthの代わりにメディアユニーク鍵Kmuを格納する。
【0107】
さらに、認証鍵Kauthの代わりにメディアユニーク鍵Kmuを使う場合、SDカード50の更新可能メモリ51内にメディアユニーク鍵Kmuを格納しなくても良い。これは、メディアユニーク鍵Kmuはメディア鍵Kmとメディア識別子MIDとで一方向演算すれば求めることができるからである。
【0108】
<変形例4>
上述した実施の形態において、SDカード50は一方向性関数部55、56を備え、一方向性関数演算によりデータの変換を行ったが、これに限らず、その他の演算によりデータの変換を行う変換部を備えるようにしても良い。ホスト100についても同様に、一方向性関数部105、112、113に限らず、その他の演算によりデータの変換を行う変換部を備えるようにしても良い。
【0109】
<変形例5>
上述した実施の形態において、識別情報としてメディア識別子を用いたが、これに限らず、識別情報は情報処理装置を一意に識別可能な情報であれば良い。また、装置秘密鍵としてデバイス鍵を用いたが、これに限らず、装置秘密鍵は各情報処理装置に対して割り当てられた鍵情報であれば良い。更に、指定情報としてデバイス情報番号を用いたが、これに限らず、指定情報はメディア鍵ブロックMKBに含まれる暗号化メディア鍵を特定する情報であれば良い。
【符号の説明】
【0110】
50…メモリカード、51…更新可能メモリ、52…更新不可メモリ、53…送信部、54…復号部、55、56…一方向性関数部、57…MKB検証・更新部、58…認証・鍵交換実行部、59…認証エリア、100…ホスト、101…更新可能メモリ、102…更新不可メモリ、103…MKB検証・更新部、104…MKB処理部、105、107…一方向性関数部、106…指定レコード選択処理部、108…データ検証処理部、109…認証・鍵交換実行部、110…アプリケーション鍵再暗号化部。

【特許請求の範囲】
【請求項1】
記憶媒体がカードスロットを介して接続される情報処理装置において、
前記情報処理装置は、装置全体を制御するCPU(Central Processing Unit)と、各種データや各種アプリケーションの各種プログラムを記憶するROM(Read Only Memory)とRAM(Random Access Memory)と、該CPUと該ROMと該RAMとを接続するバスとを少なくとも備え、
前記記憶媒体はコンテンツ暗号化のための複数のタイトル鍵と、前記複数のタイトル鍵をコンテンツのアプリケーション毎に暗号化するための第1のアプリケーション鍵と第2のアプリケーション鍵と、メディア鍵ブロックと、認証鍵と、メディアユニーク鍵と、を格納し、
前記メディア鍵ブロックは複数の異なるデバイス鍵で暗号化されている複数の暗号化メディア鍵を含み、
前記第1のアプリケーション鍵と第2のアプリケーション鍵はメディアユニーク鍵で暗号化されており、
前記メディアユニーク鍵はメディア鍵とメディア識別子とから導出され、
前記情報処理装置は、
前記記憶媒体からメディア鍵ブロックを読み出し、暗号化メディア鍵から認証鍵を導出する算出手段と、
前記記憶媒体から認証鍵を読み出して前記導出された認証鍵と比較し、相互認証を実行する手段と、
相互認証が成功した場合、前記記憶媒体から前記メディアユニーク鍵と、前記第1、第2の暗号化アプリケーション鍵のうち有効なアプリケーション鍵を読み出し、読み出したアプリケーション鍵を記憶媒体のメディアユニーク鍵を用いて復号し、復号結果をホストのメディアユニーク鍵で再暗号化し、再暗号化結果を前記記憶媒体へ供給し、前記第1、第2の暗号化アプリケーション鍵のうち無効なアプリケーション鍵を更新する手段と、
該装置が格納しているメディア鍵ブロックを前記記憶媒体へ供給する手段と、を具備し、
前記記憶媒体は前記情報処理装置から供給されたメディア鍵ブロックと、該媒体が格納しているメディア鍵ブロックとの新旧を比較し、該媒体が格納している旧のメディア鍵ブロックを前記情報処理装置から供給された新のメディア鍵ブロックで書き換える更新手段を具備する情報処理装置。
【請求項2】
前記記憶媒体は前記メディア鍵ブロックの更新回数情報も格納し、前記更新回数情報に基づいて、奇数回目の更新の場合、前記第1のアプリケーション鍵を読み出して前記情報処理装置へ送信し、偶数回目の更新の場合、前記第2のアプリケーション鍵を読み出して前記情報処理装置へ送信する請求項1記載の情報処理装置。
【請求項3】
前記記憶媒体から読み出したメディア鍵ブロックと、前記情報処理装置が格納しているデバイス鍵とで一方向関数に演算することによりメディア鍵を求める手段と、
前記メディア鍵と前記記憶媒体の識別子とで一方向性関数に演算することによりメディアユニーク鍵を求める手段とをさらに具備する請求項1記載の情報処理装置。
【請求項4】
前記算出手段は、
記憶媒体から読み出したメディア鍵ブロックと、前記情報処理装置が格納しているデバイス鍵とで一方向性関数に演算することによりメディア鍵を求める手段と、
前記メディア鍵と定数とで一方向性関数に演算することによりメディア鍵プライムを求める手段と、
前記メディア鍵プライムと前記記憶媒体の識別子とで一方向性関数に演算することにより認証鍵を求める手段と、を具備する請求項1記載の情報処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2011−30275(P2011−30275A)
【公開日】平成23年2月10日(2011.2.10)
【国際特許分類】
【出願番号】特願2010−240103(P2010−240103)
【出願日】平成22年10月26日(2010.10.26)
【分割の表示】特願2008−187856(P2008−187856)の分割
【原出願日】平成20年7月18日(2008.7.18)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】