コンテンツの移動が無制限に行なわれると、その流通範囲は無制限となり、私的利用の範囲を超えてコンテンツが利用されるおそれがある。2013年6月時点では、DTCP(http://www.dtcp.com)は、コンテンツの移動に関しては、移動可能な世代数などを制限していない。そこで、本明細書で開示する技術では、コンテンツ移動可能な世代数の制限を設けることにより、コンテンツの流通範囲の拡大を抑制するようにしている。以下、図面を参照しながら本明細書で開示する技術の実施形態について詳細に説明する。
図1には、本明細書で開示する技術を適用したコンテンツ伝送システム100の構成例を模式的に示している。図示のコンテンツ伝送システム100は、家庭内に敷設されたホーム・ネットワーク110上に接続されたサーバー101と、端末102、端末103で構成される。同図では、簡素化のため、1台のサーバーと2台の端末しか描いていないが、2台以上のサーバー、並びに3台以上の端末がホーム・ネットワーク上に設置されることも想定される。
サーバー101は、端末102に提供するコンテンツを蓄積している。サーバー101は、例えば、地上ディジタル放送で受信した放送コンテンツや、ブルーレイ・ディスクなどの記録媒体(図示しない)から読み込んだ映画などの商用コンテンツ、さらにはインターネット上のコンテンツ・サーバー(図示しない)からダウンロードしたコンテンツを蓄積している。また、端末102は、サーバー101から移動(若しくはコピー)によりダウンロードしたコンテンツを蓄積し、さらに端末103に提供することもある。
ホーム・ネットワーク110を介したサーバー101と端末102間、並びに、端末102と端末103間のコンテンツ伝送には、DTCP技術が適用されている。例えば、コンテンツを利用したい端末102は、所定の相互認証及び鍵交換(Authentication and Key Exchange:AKE)アルゴリズムに従って、サーバー101と相互認証するとともに鍵を共有した後に、サーバー101内に蓄積されたコンテンツのダウンロードを要求することができる。サーバー101は、要求されたコンテンツを、共有した鍵を用いて暗号化伝送する。コンテンツを提供するサーバー101はSourceデバイスに相当し、コンテンツを利用する端末102はSinkデバイスに相当する。端末102から端末103へコンテンツをダウンロードする場合も同様に、AKEアルゴリズムに従って相互認証及び鍵の共有を行なった後、コンテンツを暗号化伝送する。この場合は、端末102がSourceデバイス、端末103がSinkデバイスとなる。
また、図2には、本明細書で開示する技術を適用したコンテンツ伝送システム200の他の構成例を模式的に示している。図示のコンテンツ伝送システム200は、家庭内に敷設されたホーム・ネットワーク210上に接続されたサーバー201並びに端末202と、インターネットなどの外部ネットワーク220上に接続された端末203で構成される。ホーム・ネットワーク210と外部ネットワーク220は、IP(Internet Protocol)プロトコルに従い、ルーター230経由で相互接続されている。同図では、簡素化のため、ホーム・ネットワーク210上にサーバーと端末をそれぞれ1台ずつしか描いていないが、2台以上のサーバーが設置されることや、ホーム・ネットワーク210上にも端末が接続され、さらに外部ネットワーク220上に2台以上の端末が接続されることも想定される。
サーバー201は、放送コンテンツや商用コンテンツなど、端末202に提供するコンテンツを蓄積している。ホーム・ネットワーク210を介したサーバー201と端末202間のコンテンツ伝送には、DTCP技術が適用される(同上)。
また、ホーム・ネットワーク210及び外部ネットワーク220を介したサーバー201と端末203間、並びに、端末202と端末203のコンテンツ伝送には、DTCP−IP技術が適用されている。したがって、端末203は、ホーム・ネットワーク210及び外部ネットワーク220からなるIPネットワーク越しに、サーバー201又は端末202と相互認証するとともに共有鍵を共有した後に、サーバー201又は端末202内に蓄積されたコンテンツを要求することができる。サーバー201又は端末202は、要求されたコンテンツを、共有した共有鍵を用いて暗号化伝送する。コンテンツを提供するサーバー201又は端末202はSourceデバイスに相当し、コンテンツを利用する端末203はSinkデバイスに相当する。
図3には、Sourceデバイスとして動作するコンテンツ送信装置300の機能的構成を模式的に示している。例えば、図1に示したコンテンツ伝送システム100において、端末102にコンテンツをダウンロードするサーバー101や、端末103にコンテンツをダウンロードする端末102や、図2に示したコンテンツ伝送システムにおいて、端末102、103にコンテンツをダウンロードするサーバー201や、端末103にコンテンツをダウンロードする端末102などが図示のSourceデバイスに相当する。
通信・制御部301は、ホーム・ネットワーク並びに外部ネットワークを介した通信動作を制御するとともに、当該コンテンツ送信装置300全体の動作を統括的に制御する。また、通信・制御部301は、HDMI(登録商標)(High Definition Multimedia Interface)やUSB(Universal Serial Bus)などの外部機器接続用(若しくは、コンテンツのディジタル出力用)のインターフェースを備えており、ハード・ディスク装置やブルーレイ・ディスク装置などの録画再生機器を接続することができる。
コンテンツ記録部302は、ホーム・ネットワーク並びに外部ネットワーク越しで端末に提供するコンテンツを記録する。コンテンツ記録部302は、例えばハード・ディスクやブルーレイ・ディスク、DVD(Digital Versatile Disc)のような、コンテンツを記録する記録媒体を備え、例えばFAT(File Allocation Table)のような一般的なファイル・システムの管理下で記録した各コンテンツを管理している。
コンテンツ取得部303は、端末に提供するコンテンツを取得する。コンテンツ取得部303は、例えば地上ディジタル放送用チューナーなどからなり、放送コンテンツを取得する。この場合のコンテンツ取得部303は、例えばARIB(Association of Radio Industries andBusinesses:電波産業会)で規定される仕様に基づく。コンテンツ取得部303は、例えば、放送チャンネルの全セグメント又は一部のセグメントの受信機能、EPG(Electronic Program Guide)の機能(番組検索、番組情報の表示、番組予約)、HDCP(High−bandwidth Digital Content Protection)仕様などに基づくコピー制御機能、放送コンテンツを限定受信したり受信した放送コンテンツを外部出力する際に暗号化したりするコンテンツ保護機能などを備えている。
また、コンテンツ取得部303は、ブルーレイ・ディスクなどのメディア再生装置からなり、映画などの商用コンテンツをメディアから読み取る。また、コンテンツ取得部303は、ブラウザーなどからなり、インターネット上のコンテンツ・サーバー(図示しない)から有償又は無償のコンテンツをダウンロードする。コンテンツ取得部303は、取得したコンテンツは、必要に応じて上記のコンテンツ記録部302内に記録してもよい。また、コンテンツ取得部303は、Sinkデバイスに提供するコンテンツをコンテンツ記録部302から取得することもある。
コンテンツ取得部303が取得したコンテンツ(放送コンテンツや商用コンテンツ)の中には、移動可能な世代数が制限されたものもある。コンテンツのコピー制限や移動制限は、一般には、コンテンツ提供元の業者が設定するものであり、コンテンツ取得部303が放送コンテンツの受信時、メディア再生装置からの再生時などにコピー制限や移動制限に関する制御情報を受け取ることができる。取得したコンテンツをコンテンツ記録部302内に記録する際には、コンテンツ記録部302又はコンテンツ取得部303(あるいは、その他の機能モジュールでもよい)は、コンテンツに対応付けてコピー制限や移動制限に関する制御情報が管理されるものとする。
本実施形態では、コンテンツ記録部302は、コンテンツの移動可能な世代数の情報(以下、「Move_count」とする)や世代制限付き移動可否などの移動制御情報を、図5に示すようにコンテンツ本体と対応付けて管理し、又は、図6に示すようにコンテンツ本体のデータの一部として管理できるものとする。但し、移動は常に1世代のみ可の場合には、移動可能な世代数Move_countの管理は不要である。
コンテンツ提供部304は、Sinkデバイスとして動作するコンテンツ受信装置(後述)からの要求に応答して、コンテンツ取得部303が取得したコンテンツを提供する。コンテンツ提供部304は、例えばHTTP(Hypet Text Transfer Protocol)プロトコルが利用して、Sinkデバイスへコンテンツを伝送する。また、コンテンツ提供部304は、伝送するコンテンツを、認証・鍵共有部306によりSinkデバイスと共有した共有鍵(コンテンツの移動の場合にはKXM)などから計算した暗号鍵KCを用いて暗号化する。但し、Sinkデバイスが外部ネットワーク上からのリモート・アクセスによりコンテンツを要求する場合、そのSinkデバイスは端末管理部307に事前登録されたものでなければならない(後述)。
コンテンツ提供部304がSinkデバイスへコンテンツを提供する方法としてストリーミングとダウンロードが挙げられ、また、ダウンロードはコンテンツのコピーと移動の2通りがある。コンテンツ提供部304は、コンテンツ記録部302内のコンテンツの移動を行なう場合、Sinkデバイスにコンテンツを送信した後、送信済みのコンテンツをコンテンツ記録部302から消去して、同時存在を禁止する。コピーの場合、このようなコンテンツの消去操作は不要である。以下では、移動の形式でコンテンツを提供する場合について主に説明し、ストリーミングとコピーについては説明を省略する。
また、コンテンツ提供部304は、移動可能な世代数が制限されたコンテンツをSinkデバイスに移動しようとする際には、相手となるSinkデバイスが世代制限付きのコンテンツ移動に対応しているかを事前にチェックし、また、移動するコンテンツに移動可能な世代数の情報Move_countを設定するが、その詳細については後述に譲る。
コンテンツ・リスト提供部305は、例えば端末からの要求に応答して、端末に提供可能なコンテンツのリストと詳細情報を、端末に提供する。上述からも分かるように、サーバー101、201が端末に提供可能なコンテンツは、コンテンツ取得部303が受信する放送コンテンツやメディアから読み出す商用コンテンツ、コンテンツ記録部302に既に記録されているコンテンツが挙げられる。コンテンツ・リストの提供には、例えば、DLNAのベースとなるUPnP(Universal Plug andPlay)で策定されている、コンテンツのリストとコンテンツの詳細情報を階層化して配信するCDS(Content Directory Service)機能が適用される。
認証・鍵共有部306は、コンテンツの要求元となるSinkデバイスとの間で、DTCP−IPが規定する認証及び鍵交換(AKE)アルゴリズムに従って、相互認証並びにコンテンツ暗号化のための共有鍵の共有を行なう。認証・鍵共有部306は、外部ネットワークからリモート・アクセスによりコンテンツを要求してくるSinkデバイスに対しては、リモート・アクセス用共有鍵KRを共有する。また、コンテンツの移動を要求してくるSinkデバイスに対しては、さらに移動(Move)用の共有鍵KXMを共有する。
端末管理部307は、コンテンツを要求するSinkデバイスの情報を管理する。現在のDTCP−IP(DTCP−IP Volume 1 Supplement E Revision 1.4)では、第三者によるコンテンツの利用を制限することを意図して、家庭内のサーバーへのリモート・アクセスを、そのサーバーに登録したSinkデバイスだけに限定している。本実施形態では、端末管理部307に事前登録されたSinkデバイスのみコンテンツの要求が許可されるものとする。端末管理部307は、外部ネットワークからリモート・アクセスによりコンテンツを利用するSinkデバイスに対して事前登録の処理を行なうとともに、そのSinkデバイスの情報を「remote sink registry」や「RAC(Remote Access Connection) registry」として管理する。事前登録は、現在のDTCP−IP(DTCP−IP Volume 1 Supplement E Revision 1.4)にも規定されているが、本明細書で開示する技術とは直接関連しないので、詳細な説明は省略する。
コンテンツ再生出力部308は、コンテンツ記録部302に記録されているコンテンツを復号して、再生出力する。
なお、上記の機能ブロック303〜307は、通信・制御部301において、オペレーティング・システムやTCP/IPプロトコルの上位で実行するアプリケーション・プログラムとして実現することもできる。また、この種のアプリケーション・プログラムは、インターネットなどの広域ネットワーク上で所定のダウンロード・サイトで配信することができ、ディジタル放送チューナーやTV受像機などのCE(Consumer Electronics)機器、スマートフォンなどの多機能端末にダウンロードして利用に供される。
このようなダウンロード・サイトは、例えば、コンピューター・プログラムを記憶する記憶装置2411と、コンピューター・プログラムのダウンロード要求を受信したことに応じてそのダウンロードを認める通信装置2412とを備えたサーバー2410からなり(図24を参照のこと)、ダウンロードしたコンピューター・プログラムをインストールするクライアント装置(DTCP_Source又はDTCP_Sink)と併せてコンピューター・プログラム配信システム2400を構成する。この種のサーバーは、クライアントからのコンピューター・プログラムのダウンロード要求に対して、コンピューター・プログラムの名称を示す情報を通知する情報通知装置2413をさらに備えている。情報通知装置2413は、コンピューター・プログラムの名称とともに、例えば、家庭内に記録した商用コンテンツを遠隔地の端末に提供するアプリケーションであることを示す情報を通知する。
図4には、Sinkデバイスとして動作するコンテンツ受信装置400の機能的構成を模式的に示している。例えば、図1に示したコンテンツ伝送システム100において、サーバー101にコンテンツを要求する端末102や、サーバー101若しくは端末102にコンテンツを要求する端末103、並びに、図2に示したコンテンツ伝送システム200において、サーバー201にコンテンツを要求する端末202や、サーバー201若しくは端末202にコンテンツを要求する端末203などが図示のSinkデバイスに相当する。
通信・制御部401は、ホーム・ネットワーク並びに外部ネットワークを介した通信動作を制御するとともに、当該コンテンツ受信装置400全体の動作を統括的に制御する。
コンテンツ・リスト閲覧部402は、Sourceデバイスとして動作するコンテンツ送信装置300(前述)に対して、コンテンツ・リストの取得要求を行ない、取得したコンテンツ・リストの閲覧画面を表示する。例えば、Sourceデバイスが提供可能なコンテンツのリストをCDS情報(前述)として取得したときには、コンテンツ一覧画面が表示される。ユーザーはこの一覧画面を通して、再生出力したいコンテンツを選択することができる。
コンテンツ取得部403は、コンテンツの取得要求をSourceデバイスに送信して、Sourceデバイス内のコンテンツを取得する。コンテンツ取得部403は、例えば、コンテンツ・リスト閲覧部402が表示するコンテンツ一覧画面の中でユーザーが入力部407などを介して選択したコンテンツの取得を要求する。入力部407は、パーソナル・コンピューターにおけるキーボード並びにマウス、スマートフォンなどの多機能端末におけるタッチパネル、リモコンにおける十字キー並び決定ボタンなどに相当する。
コンテンツ取得部403がSourceデバイスからコンテンツを取得する方法としてストリーミングとダウンロードが挙げられ、また、ダウンロードはコンテンツのコピーと移動の2通りがある。以下では、移動の形式でコンテンツを取得する場合について主に説明し、ストリーミングとコピーについては説明を省略する。なお、Sourceデバイスに対するコンテンツの取得要求並びにコンテンツの取得には、例えばHTTPプロトコルが利用される(後述)。
コンテンツ取得部403がSourceデバイスから取得したコンテンツは、後述する認証・鍵共有部406によりSourceデバイスとの間で共有した共有鍵(コンテンツの移動の場合にはKXM)などから計算した暗号鍵KCを用いて暗号化されている。コンテンツ復号部404は、Sourceデバイスから取得した暗号化コンテンツを、この暗号鍵KCを用いて復号化することができる。そして、コンテンツ再生出力部405は、復号したコンテンツを再生出力する。
コンテンツ記録部408は、コンテンツ取得部403がダウンロード(すなわち、移動又はコピー)の形式で取得したコンテンツを記録する。記録するコンテンツには記録用の暗号化処理が別途施されることもある。コンテンツ記録部302は、例えばハード・ディスクやブルーレイ、DVDのような、コンテンツを記録する記録媒体を備え、例えばFATのような一般的なファイル・システムの管理下で記録した各コンテンツを管理している。
Sourceデバイスからの移動により取得したコンテンツの中には、移動可能な世代数が制限されたものもある。本実施形態では、コンテンツ記録部408は、コンテンツの移動可能な世代数の情報(以下、「Move_count」とする)や世代制限付き移動可否などの移動制御情報を、図5に示すようにコンテンツ本体と対応付けて管理し、又は、図6に示すようにコンテンツ本体のデータの一部として管理できるものとする。コンテンツ取得部403が移動可能な世代数が制限されたコンテンツを取得し、コンテンツ記録部408に記録する際には、Move_countをデクリメントするなどの移動制御情報の更新処理を行なうが、その処理手順の詳細については後述に譲る。
認証・鍵共有部406は、コンテンツの要求先となるSourceデバイスとの間で、DTCP−IPが規定する認証及び鍵交換(AKE)アルゴリズムに従って、相互認証並びにコンテンツ暗号化のための暗号鍵の共有を行なう。認証・鍵共有部406は、外部ネットワークからリモート・アクセスによりコンテンツを要求するSourceデバイスとの間では、リモート・アクセス用共有鍵KRを共有する。また、コンテンツの移動を要求する際には、認証・鍵共有部406は、Sourceデバイスとの間でさらに移動(Move)用の共有鍵KXMを共有する。また、認証・鍵共有部406は、ホーム・ネットワーク210接続時において、Sourceデバイスに対してリモート・アクセスのための事前登録を行なうものとする(前述)。
なお、図1に示したコンテンツ伝送システム100の変形例として、コンテンツ受信装置400(若しくはSinkデバイス)としての端末102のコンテンツ記録部408が、コンテンツ送信装置300(若しくはSourceデバイス)に内蔵(例えば、内部バスで接続)され、単一の装置300内でコンテンツ記録部302からコンテンツ記録部408へコンテンツ伝送(例えば移動)を行なうという構成も考えられる。例えば、パーソナル・コンピューターなどの情報機器内に内蔵されるハード・ディスク・ドライブ並びにメモリーカードが、コンテンツ記録部302、コンテンツ記録部408にそれぞれ相当する。
上記の機能ブロック402〜406は、通信・制御部401において、オペレーティング・システムやTCP/IPプロトコルの上位で実行するアプリケーション・プログラムとして実現することもできる。この種のアプリケーション・プログラムは、インターネットなどの広域ネットワーク上で所定のダウンロード・サイトで配信することができ、スマートフォンなど、ホーム・サーバー内のコンテンツを再生する多機能端末にダウンロードして利用に供される。
このようなダウンロード・サイトは、例えば、コンピューター・プログラムを記憶する記憶装置2411と、コンピューター・プログラムのダウンロード要求を受信したことに応じてそのダウンロードを認める通信装置2412とを備えたサーバー2410からなり(図24を参照のこと)、ダウンロードしたコンピューター・プログラムをインストールするクライアント装置(DTCP_Source又はDTCP_Sink)と併せてコンピューター・プログラム配信システム2400を構成する。この種のサーバーは、クライアントからのコンピューター・プログラムのダウンロード要求に対して、コンピューター・プログラムの名称を示す情報を通知する情報通知装置2413をさらに備えている。情報通知装置2413は、コンピューター・プログラムの名称とともに、例えば、家庭内に記録した商用コンテンツを遠隔地で閲覧することが認められるアプリケーションであることを示す情報を通知する。
続いて、SourceデバイスからSinkデバイスへコンテンツを移動するための処理動作について説明する。
ここで言うSourceデバイスは、図1に示したコンテンツ伝送システム100において、端末102、103にコンテンツをダウンロードするサーバー101や、端末103にコンテンツをダウンロードする端末102、図2に示したコンテンツ伝送システムにおいて、端末202、203にコンテンツをダウンロードするサーバー201や、端末203にコンテンツをダウンロードする端末202である。また、Sinkデバイスは、図1に示したコンテンツ伝送システム100において、サーバー101にコンテンツを要求する端末102や、サーバー101若しくは端末102にコンテンツを要求する端末103、並びに、図2に示したコンテンツ伝送システム200において、サーバー201にコンテンツを要求する端末202や、サーバー201若しくは端末202にコンテンツを要求する端末203である。
本明細書で開示する技術は、SourceデバイスからSinkデバイスへコンテンツを移動する際に、世代制限付きでコンテンツの移動を制御する点に主な特徴がある。移動可能な世代数を制限すると、移動によるコンテンツの流通範囲を制限することにより、不正なコンテンツ利用の機会を抑制できるという効果がある。移動可能な世代数の制限は、DTCP−IP規格に従ってIPネットワーク経由でリモート・アクセスによりコンテンツの移動を行なう際にとりわけ効果があるが、もちろん、旧来のDTCP規格に従ってホーム・ネットワーク上でコンテンツの移動を行なう際にも適用することができる。
図7には、SourceデバイスとSinkデバイス間でリモート・アクセスによるコンテンツの移動を行なう際の全体的な手順を模式的に示している。なお、SourceデバイスとSinkデバイス間では事前登録(前述)が済んでいることを前提とする。
図示のコンテンツ移動手順は、Sinkデバイスが移動を要求するコンテンツを指定するコンテンツ・リスト閲覧フェーズ(SEQ701)と、SourceデバイスとSinkデバイス間で相互認証及び鍵交換手順を実施してリモート・アクセス用共有鍵KRを共有するRA−AKE手続きフェーズ(SEQ702)と、SourceデバイスとSinkデバイス間で移動用共有鍵KXMを共有するRA−AKE手続きフェーズ(SEQ703)と、コンテンツ・リスト閲覧フェーズで指定されたコンテンツを、移動用共有鍵KXMを用いて暗号化伝送するコンテンツ伝送フェーズ(SEQ704)からなる。
図8には、コンテンツ・リスト閲覧フェーズ(SEQ701)の中身を模式的に示している。この処理手順は、主にSourceデバイス側のコンテンツ・リスト提供部305とSinkデバイス側のコンテンツ・リスト閲覧部402の間で実施される。
Sinkデバイスからは、コンテンツ・リスト閲覧部402から、コンテンツ・リストの閲覧要求が発行される(SEQ801)。コンテンツ・リストの閲覧には、DLNAのベースとなるUPnPで策定されている、コンテンツのリストとコンテンツの詳細情報を階層化して配信するCDS機能が適用される(前述)。したがって、SEQ801では、SinkデバイスからCDS:Browseアクションが発行される。
Sourceデバイス側では、コンテンツ提供部304で提供可能なコンテンツ(例えば、コンテンツ取得部303で取得可能な放送コンテンツや商用コンテンツ、あるいは、自身のストレージであるコンテンツ記録部302に既に記録されているコンテンツなど)に対してCDS:Browseアクションが発行されたので、コンテンツ・リスト提供部305は、該当するコンテンツに関する取得可能なすべてのコンテンツ情報を取得して(SEQ802)、十分な情報量のCDS情報を生成する(SEQ803)。そして、Sourceデバイスは、Sinkデバイスに対してCDS Resultとして返す(SEQ804)。
Sinkデバイス側では、コンテンツ・リスト閲覧部402が、受信したCDS Resultを解析して、コンテンツのタイトル並びにより詳細情報を含むコンテンツ情報を表示する(SEQ805)。
Sinkデバイスのユーザーは、表示されているコンテンツ・リストの中から、再生したいコンテンツを選択することができる。そして、コンテンツが選択されると、SourceデバイスからSinkデバイスへのコンテンツの伝送が開始されるが、コンテンツ伝送に先駆けて、SinkデバイスとSourceデバイス間で、リモート・アクセス用の相互認証及び鍵交換すなわちRA−AKE処理(SEQ702)と、移動(Move)用のAKE処理(SEQ703)が実施される。
図9には、RA−AKE手続きフェーズ(SEQ702)の中身の詳細を示している。この処理手順は、主にSourceデバイス側の認証・鍵共有部306とSinkデバイス側の認証・鍵共有部406の間で実施される。なお、RA−AKE手続きフェーズについては、DTCPの仕様書(前述)のV1SE.10.7.2節にも記載されている。
Sinkデバイスは、リモート・アクセス用交換KR(Remote Exchange Key)用のビットが設定された共有鍵フィールドを含んだCHALLENGEコマンドを送信して、Sourceデバイスに対してAKE処理を要求する(SEQ901)。そして、SourceデバイスとSinkデバイス間で、認証手続きのうちチャレンジ・レスポンス部分が実行される(SEQ902〜904)。
但し、CHALLENGEコマンドのKR用のビットが設定されていないときには、SourceデバイスはRA−AKE手続きを中止し、RA−AKE以外のAKE手続きを引き続き行なうことができる。
Sourceデバイスは、チャレンジ・レスポンス手続きでSinkデバイスから、Device ID又はIDuをSink−IDとして受け取ると(SEQ905)、そのSink−IDが自身の端末管理部307内で管理しているremote sink registry(前述)に登録されているかどうかをチェックする(SEQ906)。
Sink−IDがremote sink registryにリストされていない場合には(SEQ906のNo)、Sourceデバイスは、SinkデバイスにAKE_CANCELコマンドを送信して(SEQ914)、RA−AKE手続きを中止する(SEQ915)。
一方、Sink−IDがremote sink registryに既に登録されている場合には(SEQ906のYes)、Sourceデバイスは、このSink−IDに該当するRAC recordが既に存在するかどうかを判別するために、RAC registry(後述)内をチェックする(SEQ907)。
Sink−IDに該当するRAC recordが存在する場合には(SEQ907のYes)、Sourceデバイスは、そのRAC recordに格納されているリモート・アクセス用共有鍵KR及びその共有鍵ラベルKR_labelを使うことに決定する。あるいは、Sourceデバイスは、リモート・アクセス用共有鍵KRを用いてコンテンツの伝送を行なっていないのであれば、RAC record内を参照し、格納されているKR及びKR_labelの値を更新するようにしてもよい(SEQ913)。
Sink−IDはremote sink registryに登録済みであるが、該当するRAC recordが存在しない場合には(SEQ907のNo)、Sourceデバイスは、RAC recordをカウントするカウント値RACCがRACCmax未満であるかどうかをチェックする(SEQ908)。ここで、RACCmaxは、リモート・アクセス・コネクションをカウントするカウンターであり、リモート・アクセス・コネクションが存在しないときにゼロに初期化される。
RACCがそのRACCmax未満でないときには(SEQ908のNo)、Sourceデバイスは、SinkデバイスにAKE_CANCELコマンドを送信して(SEQ914)、RA−AKE手続きを中止する(SEQ915)。
RACCがRACCmax未満であれば(SEQ908のYes)、Sourceデバイスは、RACCの値を1だけインクリメントした後(SEQ909)、所定の演算規則に従って、リモート・アクセス用共有鍵KR及びその共有鍵ラベルKR_labelを生成して(SEQ910)、これらをSinkデバイスのSink−IDと対応付けて、RAC registry内のRAC recordに格納する(SEQ911)。サーバー201は、例えば端末管理部307内でRAC recordを管理する。
そして、Sourceデバイスは、既存のRAC recordから取り出したリモート・アクセス用共有鍵KR及びその共有鍵ラベルKR_label(更新した場合を含む)、又は、新たに生成したリモート・アクセス用共有鍵KR及びその共有鍵ラベルKR_labelを、Sinkデバイスに送信する(SEQ916)。
SourceデバイスがRA_MANAGEMENT機能をサポートしている場合には、リモート・アクセス用交換KRを維持するためのKR用生存タイマーを開始させ、少なくとも1分間KRを保持する(SEQ912)。
図10には、MOVE−AKE手続きフェーズ(SEQ703)の中身を示している。この処理手順は、主にSourceデバイス側の認証・鍵共有部306とSinkデバイス側の認証・鍵共有部406の間で実施される。なお、MOVE−AKE手続きについては、DTCPの仕様書(前述)のV1SE.10.4.1節にも記載されている。
Sinkデバイスは、SourceデバイスにMV_INITIATEコマンドを送信することによって、移動用のRTT−AKEプロトコルを開始する(SEQ1001)。
これに対し、Sourceデバイスは、DTCP−IPのMoveプロトコルを実行できるときには、その受領確認として、MV_INITIATEレスポンスを返信する(SEQ1002)。
上述したように、SourceデバイスがSinkデバイスに移動するコンテンツの中には移動可能な世代数が制限されているものがある。Sinkデバイスは、移動用のRTT−AKEプロトコルの開始に際し、自分が世代制限付きのコンテンツ移動に対応していることをSourceデバイスに通知するようにしてもよい。例えば、当該プロトコルの開始コマンドであるMV_INITIATEに代えて、世代制限付きで移動できることを示すMV_INITIATE2を用意する方法が考えられる。SinkデバイスがMV_INITIATE2コマンドを用いて当該プロトコルを開始するとき、SourceデバイスはSinkデバイスが世代制限付きのコンテンツ移動に対応していることを認識することができる。この点の詳細については後述に譲る。
また、Sinkデバイスは、能力情報の交換が必要な場合には、この時点で、SourceデバイスにCAPABILITY_EXCHANGEコマンドを送信する(SEQ1003)。これに対し、Sourceデバイスは、CAPABILITY_EXCHANGEレスポンスを返信する(SEQ1004)。
続いて、SinkデバイスとSourceデバイスは、Challenge−Response portion of AKE手続と(SEQ1005)、Protected RTT Protocol手続を実施し(SEQ1006)、KAUTHを使って計算された移動用の認証鍵(HKAUTH)を共有する。
そして、Sourceデバイスは、移動用の共有鍵KXMを生成して、これをMV_EXCHANGE_KEYコマンドでSinkデバイスに送信する(SEQ1007)。これに対し、Sinkデバイスは、MV_EXCHANGE_KEYレスポンスを返信する(SEQ1008)。
移動用の共有鍵KXMの設定方法について、以下に補足しておく。
まず、Sourceデバイスは、乱数を移動用の共有鍵KXMに割り当てるとともに、この共有鍵KXMに共有鍵ラベルKXM_labelを割り当てる。
次いで、Sourceデバイスは、HKAUTHを使ってKXMにスクランブルをかけると、ライセンスの下でDTLA(Digital Transmission Licensing Administrator)から利用できるDTCP仕様に記載されている関数に従ってKSXMを求める。そして、Sourceデバイスは、鍵KSXMを共有鍵ラベルKXM_labelとともに、Sinkデバイスに送信する。
Sinkデバイスは、KAUTH´から計算されるHKAUTH´を使ってKSXMをデスクランブルすると、ライセンスの下でDTLAから利用できるDTCP仕様に記載されている関数に従って、Sourceデバイスと共有する移動用の共有鍵KXMを決定する。
図11には、コンテンツ伝送フェーズ(SEQ704)の中身を模式的に示している。この処理手順は、主にSourceデバイス側のコンテンツ提供部304とSinkデバイス側のコンテンツ取得部403の間で実施される。ここでは、上記のMOVE−AKE手続きフェーズ(SEQ703)を経てSourceデバイスとSinkデバイス間で共有される移動用の共有鍵KXMを用いて、コンテンツ・リスト閲覧フェーズ(SEQ701)で指定されたコンテンツの移動が行なわれるものとする。
Sinkデバイスは、HTTP GETメソッドを用いたHTTPリクエスト(HTTP GET request)により、Sourceデバイスに対して、コンテンツの移動を要求する(SEQ1101)。このHTTP GETリクエストには、コンテンツのURL(Uniform Resource Locator)とともに、MOVE−AKE手続きフェーズ(SEQ703)により取得した移動用の共有鍵ラベルKXM_labelを含める。HTTP GETリクエストは、BLKMove.dtcp.com<KXM_label>というヘッダー情報を含んでいる。
Sinkデバイスは、このコンテンツの移動要求(SEQ1101)の際に、自分が世代制限付きのコンテンツ移動に対応していることをSourceデバイスに通知するようにしてもよい。例えば、コンテンツ移動用プロトコルのために用意されているBLKMove.dtcp.comヘッダー・フィールドの拡張版として、BLKMove2.dtcp.comヘッダー・フィールドを用意して、このヘッダー内でSinkデバイスが世代制限付きのコンテンツ移動に対応していることをSourceデバイスに伝えることが考えられる。この点の詳細については後述に譲る。上記のように、BLKMove.dtcp.comヘッダー・フィールドは、共有鍵KXMを特定するためのパラメーターである共有鍵ラベルKXM_labelをパラメーターに含む。
あるいは、既に述べたように、Sinkデバイスは、移動用のRTT−AKEプロトコルの開始に際し、自分が世代制限付きのコンテンツ移動に対応していることをSourceデバイスに通知することもある。
いずれの方法でSinkデバイスが移動可能な世代数の制限対応について通知するにせよ、Sourceデバイスは、コンテンツ移動の開始に先駆けて、Sinkデバイスがコンテンツの移動可能な世代数の制限機能に対応しているかどうかを確認する(SEQ1102)。ここでは、Sinkデバイスが世代制限付きのコンテンツ移動に対応しているものとして説明を続ける。
Sourceデバイスは、Sinkデバイスからのコンテンツ要求を許可する場合には、共有鍵ラベルKXM_labelで指定された移動用共有鍵KXMを用いてコンテンツを暗号化して、Sourceデバイスは、HTTPレスポンス(HTTP GET response)としてSinkデバイスに伝送する(SEQ1103)。
HTTPレスポンスは、1つ以上のPCPからなる。具体的には、Sourceデバイスは、乱数を用いてノンスNcを生成すると、共有鍵KXMとノンスNcと暗号モードを表すE−EMIに基づいてコンテンツ鍵Kcを計算し、このコンテンツ鍵Kcを用いて暗号化する。そして、暗号化コンテンツを含んだPCP(Protected Content Packet)パケットをTCPストリーム上に乗せる。IPプロトコルは、暗号化コンテンツを含んだTCPストリームを所定の単位となるパケットの大きさに分割し、さらにヘッダー部を付加したIPパケットにし、指定されたIPアドレス宛てに届ける。
図12に示すように、PCPパケット1200は、暗号化コンテンツからなるペイロード1202とノンスNcとE−EMIを含んだヘッダー1201からなる。E−EMI(Extended Encription Mode Indicator)は、暗号モードを記述する4ビット長のフィールドで構成され、その値はコピー制御情報の7種類に対応する。
Sourceデバイスは、伝送するコンテンツは世代制限付きで移動可能であることと、移動可能な世代数の情報Move_countを、Sinkデバイス側に通知する必要がある。例えば、PCPヘッダー内のE−EMIに世代制限付きで移動可能であることを意味する値を追加定義するとともに、PCPペイロード内など(例えば、DTCP_descriptor、PCP−UR、CMIなど)に新たなフィールドを設けて移動可能な世代数の情報Move_countを運ぶようにしてもよい。この点の詳細については後述に譲る。
Sinkデバイス側では、Sourceデバイスからの各IPパケットを受信すると、これをTCPストリームに組み立てて、送信された元のPCPパケットを再現する。そして、ストリームからノンスNcとE−EMIを取り出すと、これらと共有鍵KXMを用いてコンテンツ鍵Kcを算出し、暗号化コンテンツを復号することができる。そして、復号化した後の平文のコンテンツに対しコンテンツ再生出力部405からの再生若しくはコンテンツ記録部408への記録などの処理を実施することができる。
このようにしてHTTPプロトコルを利用したコンテンツ伝送が終了すると、例えばSinkデバイス側から、コンテンツ伝送に使用したTCPコネクションを適宜切断する。
世代制限付きのコンテンツ移動機能に対応しているSinkデバイスは、受信したコンテンツに関する移動制御情報の更新処理を行なう(SEQ1104)。具体的には、コンテンツ記録部408への記録する際などに、受信したコンテンツが制限された世代数内で移動可能であるかどうかをチェックするとともに、移動可能な世代数の情報Move_countを更新する。この点の詳細については後述に譲る。
続いて、図1、図2に示したようなコンテンツ伝送システム100、200において、私的利用の範囲を超えるコンテンツの利用を防止する仕組みについて、さらに詳細に説明する。本明細書で開示する技術は、SourceデバイスからSinkデバイスへコンテンツを移動する際に、移動可能な世代数に制限を課すことによって、コンテンツの流通範囲を制限する方法を採用する。
世代制限付きのコンテンツの移動の仕組みを、本実施形態のようなDTCP若しくはDTCP−IPが適用されたコンテンツ伝送システム100、200で実現する場合、コンテンツの流通範囲を制限して、私的利用の範囲を超えるコンテンツの利用を防止することになる。
コンテンツの移動元であるSourceデバイスと、その移動先であるSinkデバイスの間で、コンテンツ移動の制御情報として、移動可能な世代数の情報Move_countを伝え、SinkデバイスはMove_countを1だけデクリメントして受信したコンテンツを管理するようにする。Move_countがまだ1以上であれば、Sinkデバイスは、(今度はSourceデバイスとして)それを次の制御情報としてコンテンツのさらなる移動が可能である。一方、Move_countが0になってしまうと、そのコンテンツのさらなる移動はできないものとする。なお、Move_count=1すなわち移動は1世代のみ可として運用するのであれば、移動可能な世代数の情報を伝える必要はなく、移動の可否を示す制御情報だけを用いることもできる。
まず、世代制限付きの移動の可否を示す制御情報を通知する方法について説明する。
DTCPをIP伝送にマッピングしたDTCP−IPでは、コンテンツ伝送に用いられるHTTPレスポンスは、1以上のPCPと呼ばれるパケットからなる。図12に示したように、そのPCPヘッダー1201は、E−EMIを含んでいる。このE−EMIは、暗号モード(E−EMI Mode)を記述する4ビット長のフィールドで構成され、その値はコピー制御情報の7種類に対応する。
本実施形態では、E−EMIフィールドの未定義の値に「世代制限付き移動可」を意味する値を追加定義する。具体的には、未定義の値「01112」をMode C2として「世代制限付き移動可」と定義する。図13には、DTCP−IP規格通りのE−EMIを示し、図14には、「01112」を「世代制限付き移動可」と追加定義したE−EMIを示している。
Sourceデバイスは、世代制限付きで移動が許可されたコンテンツを移動する際には、その伝送に用いられるPCPパケットのヘッダー内のE−EMIフィールドに「01112」を書き込む。Sinkデバイス側では、HTTPレスポンスの例えば先頭のPCPパケットのヘッダー内のE−EMIの値をチェックすることで、コンテンツが「世代制限付き移動可」であるかどうかを判別することができる(勿論、従来通り、コピー制御情報並びに対応する暗号モードを識別することもできる)。
次いで、移動可能な世代数を通知する方法について説明する。
DTCPで運用する制御情報の中に、移動可能な世代数に関する情報を運ぶための新たなフィールドを設ける方法が挙げられる。ここで言う制御情報として、DTCP_descriptor、PCP−UR、CMIなどを挙げることができる。
DTCP_descriptorは、MPEG−TS形式でコンテンツを伝送する際の、DTCP制御情報を送る手段として用意されたもので、MPEG−TSパケットの中(PCPペイロード内)に埋め込まれ、コンテンツとともに暗号化伝送される。図15には、DTCP_descriptorの未使用領域をMove_countフィールドとして定義して、移動可能な世代数を記載した例を示している。同図では、参照番号1501で示すように、移動可能な世代数として1(回)が記入されている。
PCP−UR(Protected Content Packet−Usage Rule)は、MPEG−TS以外の形式でコンテンツを伝送する際の、DTCP制御情報を送る手段として用意されたもので、図16に示すように、PCPヘッダー中のノンスNcのフィールドの中に格納される。また、図17には、ノンスNcのフィールドのうちPCP−UR部分のフォーマットをより詳細に示している。図示の例では、PCP−URの未使用領域1701をMove_countフィールドとして定義した例を示している。
例えば、コンテンツ伝送フェーズSEQ704で、MPEG−TS形式でコンテンツを伝送する場合には、図15に示したようにDTCP_descriptor内で移動可能な世代数の情報を運び、MPEG−TS以外の形式でコンテンツを伝送する場合は、図17に示したようにPCP−UR内で移動可能な世代数の情報を運ぶように、上記の方法を使い分けることも考えられる。
CMI(Content Management Information)は、コンテンツの伝送形式によらず共通の方法でDTCP制御情報を送る手段として用意されたものである。DTCP−IPの場合、コンテンツ伝送フェーズSEQ704では、コンテンツはPCP2パケット、制御情報はCMIパケットにそれぞれ格納され、PCP2とCMIのパケットが混在したデータとして送られる。図18には、CMIのパケット・フォーマットを示している。CMIパケットのペイロード部分であるCMIフィールドには、1又はそれ以上のCMI Descriptorが格納される。CMI descriptorの未使用領域をMove_countフィールドとして定義して、移動可能な世代数を記載する方法が考えられる。この方法によれば、コンテンツの伝送形式によらず共通に移動可能な世代数を伝えることができる。図19には、CMI descriptor1フォーマットの未使用領域1901をMove_countフィールドとして定義した例を示している。また、図20には、CMI descriptor2フォーマットの未使用領域2001をMove_countフィールドとして定義した例を示している。
上記では、DTCP−IP仕様において、コンテンツの移動に関する制御情報の伝送に、E−EMI、DTCP_descriptor、PCP−UR、CMIを利用可能であることを例示した。ここで、DTCP−IP仕様上、E−EMIの送信は必須であるのに対し、PCP−UR、CMIを送信することは必須ではない。言い換えれば、移動の可否を示す制御情報は必ず伝えることができるが、移動可能な世代数がSinkデバイスに伝わらないこともあり得る。
Sinkデバイスは、受信したPCPパケットのヘッダー内のE−EMIの値を参照して、世代制限付き移動可であることが分かると、少なくともその移動可能な世代数が1以上であると言える。そこで、PCP−UR、CMIが届かないなどの理由により、コンテンツの移動可能な世代数が不明な場合には、Sinkデバイスは、移動可能な世代数が1で受信したものとして処理するようにする。2以上の余分な世代数を与えないことにより、以降のコンテンツの流通範囲を制限する。
図21には、Sinkデバイスが、コンテンツ伝送フェーズSEQ704において、受信したコンテンツの移動世代数を制御するための処理手順をフローチャートの形式で示している。この処理手順では、移動可能な世代数Move_countが0になったことを以って、更なる移動が禁止されたコンテンツと判断するものとする。
通信・制御部401でHTTPレスポンスの例えば先頭のPCPパケットを受信すると、コンテンツ取得部403は、そのPCPヘッダー内のE−EMIの値を参照して、コンテンツが「世代制限付き移動可」であるかどうかをチェックする(ステップS2101)。
次いで、コンテンツ取得部403は、DTCP_descriptor、PCP−UR、CMIなどに定義されているMove_countフィールドの検出を試みる(ステップS2102)。
ここで、PCP−UR、CMIが届かないなどの理由により、Move_countフィールドを検出できないときには(ステップS2102のNo)、コンテンツ取得部403は、Move_count=1、すなわち受信したコンテンツは1世代のみ移動可能とみなして、このコンテンツを「更なる移動不可」と設定して(ステップS2105)、本処理ルーチンを終了する。
一方、Move_countフィールドを検出できたときには(ステップS2102のYes)、コンテンツ取得部403は、Move_countフィールドの値、すなわち移動可能な世代数を1だけデクリメントする(ステップS2103)。
次いで、コンテンツ取得部403は、Move_countフィールドの値が0より大きいか、すなわちまだ移動可能であるかどうかをチェックする(ステップS2104)。
ここで、Move_countフィールドの値が0以下、すなわち移動可能な世代数が消滅したときには(ステップS2104のNo)、コンテンツ取得部403は、このコンテンツを「更なる移動不可」と設定して(ステップS2105)、本処理ルーチンを終了する。
また、Move_countフィールドの値が0より大きいときには(ステップS2104のYes)、コンテンツ取得部403は、デクリメントしたMove_countフィールドの値で、このコンテンツを世代制限付きで移動可能としたまま、本処理ルーチンを終了する。
そして、コンテンツ取得部403は、上記の処理ルーチンを終了した後、移動可能な世代数の情報や世代制限付き移動可否の情報と対応付けて(図5又は図6を参照のこと)、受信したコンテンツをコンテンツ記録部408に記録する。
上述したように、Sinkデバイスは、E−EMIが「世代制限付き移動可」で、移動可能な世代数Move_count=1又はMove_countが不明として受信したコンテンツの更なる移動を防止する。具体的には、Sinkデバイスは、(Sourceデバイスとして)次にDTCP−IPで送信する場合、このようなコンテンツのE−EMIには、記録の禁止を意味する値(例えば、01002や11002)を用いる。そして、このように記録禁止を意味するE−EMIが使われているコンテンツを受信した次のSinkデバイスは、DTCP_descriptor、PCP−UR、CMIなどから判明した移動可能な世代数Move_countの値によらず、コンテンツを移動できないものとして扱う(E−EMIの内容を優先する)。
2013年6月時点では、DTCP(http://www.dtcp.com)は、コンテンツの移動に関しては、移動可能な世代数などを制限していない(前述)。DTCP仕様では、E−EMIの値は、コピー制御情報に対応した、コンテンツの暗号鍵(Kc)を計算するためのJ−AES関数の1つのパラメーターである。本実施形態のように未定義のE−EMIの値を世代制御に使用した場合(図14を参照のこと)、世代制限付きのコンテンツ移動に対応していない旧来のSinkデバイスは、E−EMIの値として「世代制限付き移動可」を意味する「01112」を受け取っても、正しい暗号鍵を計算できず、したがって、受信したコンテンツを復号できない。よって、世代制限付きのコンテンツ移動に対応しているSinkデバイスだけに世代制限付きのコンテンツを渡すことができることになる。
続いて、世代制限付きでコンテンツを移動する際に消失を防止する方法について説明する。
既に述べたように、コンテンツの移動は、SourceデバイスはSinkに送信済みのコンテンツを消去する伝送方法である。移動処理が不意の中断した場合などにコンテンツが消失するおそれがある。コンテンツの移動時に消失を防止する技術について、既に幾つか提案がなされている(例えば、特許文献1を参照のこと)。
世代制限付きのコンテンツ移動も、コンテンツの消失が起きないように、この機能に対応した装置間でのみ行なわれるべきである。このため、Sourceデバイスは、コンテンツ伝送フェーズ(SEQ704)でコンテンツの移動を開始する際に、Sinkデバイスが世代制限付きのコンテンツ移動に対応しているかどうかを確認する必要がある。
Sinkデバイスが世代制限付きのコンテンツ移動対応を確認する第1の方法として、Sinkデバイスがコンテンツの移動要求(図11中のSEQ1101)の際に、自分が世代制限付きのコンテンツ移動に対応していることをSourceデバイスに通知する方法が挙げられる。
具体的には、Sinkデバイスは、コンテンツ移動用プロトコルのために用意されているBLKMove.dtcp.comヘッダー・フィールドの拡張版として、BLKMove2.dtcp.comヘッダー・フィールドを用意して、このヘッダー内で世代制限付きのコンテンツ移動に対応していることをSourceデバイスに伝えることが考えられる。
これに対し、Sourceデバイスは、HTTP GETリクエストでBLKMove2.dtcp.comヘッダー・フィールドが使われていれば世代制限付きのコンテンツ移動を行なうが、BLKMove2.dtcp.comヘッダー・フィールドが使われていなければ世代制限付きのコンテンツ移動を行なわない。
図22には、Sourceデバイスが上記の第1の方法を用いて世代制限付きで移動可能なコンテンツを移動するための処理手順をフローチャートの形式で示している。
コンテンツ伝送フェーズ(SEQ704)で、SinkデバイスからのHTTP GETリクエストのヘッダーを通信・制御部301で受信すると(ステップS2201のYes)、コンテンツ提供部304は、そのヘッダーにBLKMove2.dtcp.comヘッダー・フィールドが含まれているかどうかをチェックする(ステップS2202)。
HTTP GETリクエストのヘッダーにBLKMove2.dtcp.comヘッダー・フィールドが含まれない場合には(ステップSS2202のNo)、世代制限付きのコンテンツ移動以外のHTTPリクエストを受けたと判断されるので、コンテンツ提供部304は、その他のHTTP処理を実行する(ステップS2206)。
一方、HTTP GETリクエストのヘッダーにBLKMove2.dtcp.comヘッダー・フィールドが含まれている場合には(ステップSS2202のYes)、コンテンツ提供部304は、このBLKMove2.dtcp.comヘッダー・フィールドで指定されている移動用の共有鍵ラベルKXM_labelを持つ移動用共有鍵KXMが認証・鍵共有部306内に存在するかどうかをさらにチェックする(ステップS2203)。
共有鍵ラベルKXM_labelを持つ共有鍵KXMが存在しないときには(ステップS2203のNo)、世代制限付きのコンテンツを移動のために暗号化できないので、コンテンツ提供部304は、このHTTPセッションをエラー終了する(ステップS2207)。
一方、共有鍵ラベルKXM_labelを持つ共有鍵KXMが存在するときには(ステップS2203のYes)、コンテンツ提供部304は、HTTP伝送の対象すなわち移動要求されているコンテンツが世代制限付きで移動可能かどうかをさらにチェックする(ステップS2204)。
コンテンツ提供部304は、例えば、コンテンツ記録部302内の要求されているコンテンツに対応付けられている世代制限付き移動の可否の情報や移動可能な世代数の情報を参照して、ステップS2204のチェックを行なう。コンテンツに対し、世代制限付き移動が不可で、移動可能な世代数が1以上といった情報の食い違いが生じた場合には、世代制限付き移動不可という情報を優先し、不用意なコンテンツの流通を抑制する。
移動要求されているコンテンツが世代制限付きで移動可能な場合には(ステップS2204のYes)、コンテンツ提供部304は、「世代制限付き移動可能」を意味するE−EMIの値(01112)(図14を参照のこと)を設定するとともに、DTCP_descriptor、PCP−UR、CMIなどに設けられたMove_countフィールドに移動可能な世代数を設定して、このコンテンツの移動を行なう(ステップS2205)。
また、移動要求されているコンテンツが世代制限付きで移動できるものでない場合には(ステップS2204のNo)、コンテンツ提供部304は、コンテンツを通常の移動は可能かどうかをさらにチェックする(ステップS2208)。
通常の移動が可能な場合には(ステップS2208のYes)、コンテンツ提供部304は、「Move」に相当するE−EMIの値(図14を参照のこと)を設定して、このコンテンツの移動を行なう(ステップS2209)。また、通常の移動もできないときには(ステップS2208のNo)、コンテンツ提供部304は、このHTTPセッションをエラー終了する(ステップS2207)。
また、Sinkデバイスが世代制限付きのコンテンツ移動対応を確認する第2の方法として、SinkデバイスがMOVE−AKE手続きの際に、自分が世代制限付きのコンテンツ移動に対応していることをSourceデバイスに通知する方法が挙げられる。
具体的には、Sinkデバイスは、MOVE−AKE手続きの開始コマンドであるMV_INITIATEに代えて、世代制限付きで移動できることを示すMV_INITIATE2を用意する方法が考えられる。
SinkデバイスがMV_INITIATE2コマンドを用いて当該プロトコルを開始するとき、SourceデバイスはSinkデバイスが世代制限付きのコンテンツ移動に対応していることを認識することができ、後続のコンテンツ伝送フェーズ(SEQ704)では世代制限付きのコンテンツの移動を行なう。一方、SinkデバイスがMV_INITIATEコマンドを用いて当該プロトコルを開始するとき、Sourceデバイスは世代制限付きのコンテンツの移動を行なわない。そのため、Sourceデバイスは当該プロトコルで共有鍵ラベルKXM_labelを生成し、記憶する際に、当該プロトコルがMV_INITIATE2とMV_INITIATEのどちらで開始したかを合わせて記憶するか、どちらで開始したかを共有鍵ラベルKXM_labelの値で判別できるようにする。例えば、MV_INITIATE2で開始した場合は値を偶数とし、その他の場合は奇数にするなどの方法が考えられる。
図23には、Sourceデバイスが上記の第2の方法を用いて世代制限付きで移動可能なコンテンツを移動するための処理手順をフローチャートの形式で示している。
コンテンツ伝送フェーズ(SEQ704)で、SinkデバイスからのHTTP GETリクエストのヘッダーを通信・制御部301で受信すると(ステップS2301のYes)、コンテンツ提供部304は、そのヘッダーにBLKMove.dtcp.comヘッダー・フィールドが含まれているかどうかをチェックする(ステップS2302)。
HTTP GETリクエストのヘッダーにBLKMove.dtcp.comヘッダー・フィールドが含まれない場合には(ステップSS2302のNo)、コンテンツ移動以外のHTTPリクエストを受けたと判断されるので、コンテンツ提供部304は、その他のHTTP処理を実行する(ステップS2307)。
一方、HTTP GETリクエストのヘッダーにBLKMove.dtcp.comヘッダー・フィールドが含まれている場合には(ステップSS2302のYes)、コンテンツ提供部304は、このBLKMove.dtcp.comヘッダー・フィールドで指定されている移動用の共有鍵ラベルKXM_labelを持つ移動用共有鍵KXMが認証・鍵共有部306内に存在するかどうかをさらにチェックする(ステップS2303)。
共有鍵ラベルKXM_labelを持つ共有鍵KXMが存在しないときには(ステップS2303のNo)、世代制限付きのコンテンツを移動のために暗号化できないので、コンテンツ提供部304は、このHTTPセッションをエラー終了する(ステップS2308)。
一方、共有鍵ラベルKXM_labelを持つ共有鍵KXMが存在するときには(ステップS2303のYes)、コンテンツ提供部304は、この共有鍵ラベルKXM_labelがMV_INITIATE2による処理で得られたものかどうかをさらにチェックする(ステップS2304)。そして、共有鍵ラベルKXM_labelがMV_INITIATE2による処理のものであれば(ステップS2304のYes)、コンテンツ提供部304は、HTTP伝送の対象すなわち移動要求されているコンテンツが世代制限付きで移動可能かどうかをチェックする(ステップS2305)。
移動要求されているコンテンツが世代制限付きで移動可能な場合には(ステップS2305のYes)、コンテンツ提供部304は、「世代制限付き移動可能」を意味するE−EMIの値(01112)(図14を参照のこと)を設定するとともに、DTCP_descriptor、PCP−UR、CMIなどに設けられたMove_countフィールドに移動可能な世代数を設定して、このコンテンツの移動を行なう(ステップS2306)。
また、共有鍵ラベルKXM_labelがMV_INITIATE2による処理のものでない場合(ステップS2304のNo)、又は、移動要求されているコンテンツが世代制限付きで移動できるものでない場合には(ステップS2305のNo)、コンテンツ提供部304は、コンテンツを通常の移動は可能かどうかをさらにチェックする(ステップS2309)。
通常の移動が可能な場合には(ステップS2309のYes)、コンテンツ提供部304は、「Move」に相当するE−EMIの値(図14を参照のこと)を設定して、このコンテンツの移動を行なう(ステップS2310)。また、通常の移動もできないときには(ステップS2208のNo)、コンテンツ提供部304は、このHTTPセッションをエラー終了する(ステップS2308)。
移動可能な世代数が制限されたコンテンツの場合、私的利用の範囲を超えた利用を防ぐ効果を高めるために、移動した後のコンテンツの伝送可能範囲を制限する運用も考えられる。
例えば、DTCP−IP仕様には、Remote Accessという、屋外の装置(Sinkデバイス)から家庭内の装置(Sourceデバイス)にあるコンテンツを利用する機能が規定されている。移動可能な世代数が制限されたコンテンツについては、移動した後のコンテンツへのRemote Accessを禁止するといった運用が、伝送可能範囲を制限する1つの具体例として挙げられる。
ここで、Remote Accessでの送信禁止ということを実現する方法としては、例えば以下の2つが考えられる。
(1)Sinkデバイスが世代制限付きで受信したコンテンツの移動可能な世代数Move_countを1だけデクリメントした結果、その値がゼロになったらRemote Accessでの送信を不可にする。なお、SinkデバイスがMove_countを検出できない場合もRemote Accessでの送信を不可にする。
(2)Sinkデバイスがコンテンツの移動可能な世代数Move_countを1だけデクリメントする際に、そのコンテンツが移動済みであることをコンテンツと対応付けて記憶しておく。そして、以後の送信において、移動済みコンテンツはRemote Accessでの送信を不可にする。
また、Remote Accessにおけるコンテンツの移動は常に1世代のみ可として、コンテンツ移動による伝送可能範囲を制限することによっても、私的利用範囲を超えた利用を防ぐ効果を高めることができる。このような移動可能な世代数の制限は、よりシンプルに実現することができる。例えば、Remote Accessによるコンテンツ移動時には、Sourceデバイスは、移動用の共有鍵KXMから計算した暗号鍵ではなく、Remote Accessによるコンテンツ移動の処理専用の計算方法で得た暗号鍵を用いて暗号化伝送し、Sinkデバイス側でも同様にこの処理専用の計算方法で得た暗号鍵を用いて受信コンテンツを復号する。そして、Sinkデバイスは、Remote Accessで受け取ったコンテンツのさらなる移動は自主的に禁止とする。
Remote Accessによるコンテンツ移動時に専用の暗号鍵の計算方法として、MOVE−AKE手続きで得た移動用の共有鍵KXMの代わりに、Remote Access用のRTT−AKE手続きで得た共有鍵KRを暗号鍵KCの計算に用いる方法が挙げられる。さらには、移動用の共有鍵KXMをハッシュ関数で処理して暗号鍵の計算に用いる方法や、移動用の共有鍵KXMとRemote Access用の共有鍵KRのXOR(排他的論理和)などの権利演算結果を暗号鍵の計算に用いる方法なども考えられる。
上記の方法は、E−EMIフィールドの未定義の値に「世代制限付き移動可」を意味する値を追加定義したり、DTCP_descriptor、PCP−UR、CMIなどを使って移動可能な世代数を伝えたりする必要はなく、シンプルである。E−EMIには、現状のMode C1(図13を参照のこと)をそのまま使用すればよい。