説明

コンテンツ伝送システム、コンテンツ伝送装置及びコンテンツ伝送方法、並びにコンピュータ・プログラム

【課題】障害によりMOVE動作が途切れた場合であっても、既にSink側で受け取ったデータに関する権利を公平となるように取り扱う。
【解決手段】Sinkはコンテンツを構成する各データを受信した時点で、コンテンツ全体の伝送処理の完了を待たずに、その受信データに関する権利がSourceから委譲され、Sink側で受信データが逐次的に利用可能になるとともに、Source側ではコンテンツの当該データ部分が無効化される。MOVEしたデータをSink側で受信した直後に利用可能にする。あるいは、受信データに関してSourceとの間で確約を経た後にSink側で利用可能にする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、デジタル化されたAVデータなどのコンテンツを機器間で伝送するコンテンツ伝送システム、コンテンツ伝送装置及びコンテンツ伝送方法、並びにコンピュータ・プログラムに係り、特に、著作権保護やその他の目的でコピーが制限されたコンテンツを機器間で暗号化伝送するコンテンツ伝送システム、コンテンツ伝送装置及びコンテンツ伝送方法、並びにコンピュータ・プログラムに関する。
【背景技術】
【0002】
デジタル化されたコンテンツはコピーや改竄などの不正な操作が比較的容易であることから、個人的又は家庭的なコンテンツの使用を許容しながら不正使用に対する防御が必要である。とりわけ、国内では2011年の地上アナログ放送停波に向けてアナログ放送受信機からデジタル放送受信機への置き換えが急速に進んでおり、家庭内のAVコンテンツのデジタル化に対してコンテンツの保護を技術的に実現することが必須と考えられている。
【0003】
日本国内では、ARIB(Associationof Radio Industries and Businesses:電波産業会)が中心となってデジタル放送に関する標準化が進められ、デジタル衛星放送、デジタル地上波放送、並びにデジタルCATVにおいてMPEG2システム(例えば、非特許文献1を参照のこと)を採用するとともに、「1世代のみコピー可」(コピーワンス)といったコピー制御機能の導入を義務付け、厳しいコンテンツ保護規定を設けている(例えば、非特許文献2を参照のこと)。
【0004】
また、デジタル伝送コンテンツの保護に関する業界標準的な技術として、DTLA(Digital Transmission Licensing Administrator)が開発したDTCP(Digital Transmission Content Protection)が挙げられ、コピー制御を始め著作権が保護された形でコンテンツを伝送させるための仕組みについて規定されている(例えば、非特許文献3を参照のこと)。
【0005】
DTCPでは、コンテンツ伝送時における機器間の認証プロトコルと、暗号化コンテンツの伝送プロトコルについて取り決められている。その規定によれば、コンテンツ提供元であるSourceとコンテンツ提供先であるSinkは、AKEコマンドの送受信により、認証手続きを経て鍵を共有化し、その鍵を用いて伝送路を暗号化してコンテンツの伝送を行なう。不正なSinkは、Sourceとの認証に成功しないと暗号鍵を取得できないから、コンテンツを取得することはできない。
【0006】
DTCPは、原初的には、IEEE1394を伝送路に用いたホーム・ネットワーク上におけるデジタル・コンテンツの伝送について規定している。最近では、DLNA(Digital Living Network Alliance)に代表されるように、デジタル化されたAVコンテンツをIPネットワーク経由で流通させようという動きが本格的になっていることから、IPネットワークに対応したDTCP技術、すなわちDTCP−IP(DTCP mapping to IP)の開発が進められている。
【0007】
DTCP−IPによれば、HTTP(Hyper Text Transfer Protocol)やRTP(Real Time Protocol)といったコンテンツ伝送用プロトコルを使用することができる。例えば、HTTPの手続きに従ってコンテンツを伝送する場合、SourceがHTTPサーバとなり、SinkがHTTPクライアントとなって、HTTPのためのTCP/IPコネクションが作成され、暗号化コンテンツの伝送が行なわれる。また、ホーム・ネットワークがルータ経由で外部のIPネットワークに接続されると、盗聴や改竄、コンテンツの不正コピーといった危惧があるため、DTCP−IPでは、コンテンツを保護しながらネットワーク伝送するためのさらなる方法を規定している(例えば、非特許文献4を参照のこと)。
【0008】
著作権保護に対応したコンテンツ伝送を行なう際、コピー制御や暗号化方式などコンテンツ保護に関するコンテンツ属性を指定する必要がある。DTCP−IPでは、コンテンツ伝送用のパケット(PCP)のヘッダ部に記述するE−EMI(Extended − Encryption Mode Indicator)と、Embeded CCI(Copy Control Information)という2つのメカニズムにより、コンテンツに付随したコピー制御情報の伝送を実現している。
【0009】
Embedded CCIは、パケットのペイロード部に埋め込んで伝送される。コンテンツ・ストリームをタンパリングすると誤った暗号解読を行なうことになるので、Embedded CCIの完全性を保証することができる。一方のE−EMIは、平文状態のヘッダ部に記載される、暗号モードを記述する4ビットのフィールドであり、その値はコピー制御情報の種類に対応する。ビット値定義を下表に示しておく。但し、同表で未使用となっている9つのE−EMI値は将来の拡張用に予備となっている。
【0010】
【表1】

【0011】
Source側では、コンテンツ・ストリームの特性に従って正しい暗号モードを選択し、これに基づいてE−EMIを設定する。また、Sinkは、コンテンツを伝送するパケットのヘッダ中のE−EMIで指定される正しい暗号解読モードを選択する。また、Sinkでは、E−EMIやEmbedded CCIで指定されている通りに、受信コンテンツを符号化して蓄積し、自らSourceとなるときにはコピー制御情報に従って2次的なコンテンツ伝送動作を制御する。コピー制御の種類として、以下が挙げられる。
【0012】
Copy Free:著作権自体は留保するが、DTCPを用いたコピー制御は行なわない。
Copy Never:決してコンテンツを複製してはならない。
Copy One Generation:1回だけ(One Generation)だけコピーが許容される。
No More Copies:もはやコピーが許されない。
【0013】
上記のうちNo More Copiesは、元はCopy One Generationに設定されたコンテンツを1回(first generation)だけコピーしたことによりコピーが許可されなくなった状態である。DTCP−IPでは、No More Copiesとして符号化されたコンテンツを伝送する手段として、Move機能が用意されており、Sinkは受信したコンテンツをNo More Copiesとして符号化して扱うこと、及び、Source側では伝送した後のコンテンツを消去又は利用不能にするという条件の下で、SourceからSinkへコンテンツをMOVEすることが許容される(例えば、非特許文献4、非特許文献5を参照のこと)。具体的には、元はCopy One Generationであったコンテンツが個人のビデオ録画機器(PVR)などのSourceにNo More Copiesとして符号化・記録されている場合、上記の条件を満たすことで、Copy One Generationの状態で符号化し、単一のSinkにのみMOVEすることが許容される。
【0014】
現状の規定によれば、E−EMIでC0モード、又はB1モードのいずれかを使用してMOVE動作を行なうことができる。Sink側では、これらのモードで受け取ったコンテンツを、AKE手続きで取得した鍵を用いて復号し、記録することができる。また、Source側では、送信した瞬間にデータを無効化する必要がある。
【0015】
SourceからSinkへのコンテンツのMOVE処理が複数のデータ伝送シーケンスで構成される場合、上述したような、Source側でコンテンツを消去又は利用不能にするという条件を一貫して遵守しなければならない。例えば、コンテンツを複数の領域に分割してそれぞれを別のタイトル鍵で暗号化し、コンテンツ復号化の際に使用される時変鍵を抽出し、タイトル鍵領域の元のタイトル鍵を、抽出した当該時変鍵で順次上書きして前のコンテンツの復号化を不可能にすることによって、Move処理した元のコンテンツを安全且つ効率的に削除するコンテンツ管理装置について提案がなされている(例えば、特許文献1を参照のこと)。
【0016】
ここで、SourceとSink間で行なわれているMOVEシーケンスが障害などにより中断したときに、Source及びSinkのそれぞれにコンテンツが分断されるという問題がある。コンテンツ全体の伝送が成功裏に終わればSourceとSink間でコンテンツの権利を無事に委譲することができるが、伝送の途中で障害が発生すると、伝送後のデータ部分はSink側に、伝送前のデータ部分はSourceに残り、コンテンツが分断される。MOVE動作中に生じる障害として、コネクション・エラーが発生する、一方の機器の電源が遮断される、コンテンツ格納用のメディアが抜き取られる(あるいはストレージが故障する)、Sink側でコンテンツを格納するストレージが満杯になるといった原因が挙げられる。
【0017】
例えば、汎用バス経由でコンテンツ伝送を行なうSourceとSinkの間にコンテンツ移動コントローラを設け、Move動作に際してSourceとSinkの両方に重複して存在する再生可能なコンテンツの量が通常の再生時間にして1分を超えてはならないというDTCP規格に基づいて、コンテンツ移動コントローラがSource及びSinkいずれかで不具合を検出すると1分以内にMOVEを中断し、Sourceに再生可能な状態で残っている部分で移動動作を再開することによってコンテンツの消失を避けるコンテンツ移動システムについて提案がなされている(例えば、特許文献を参照2のこと)。但し、この場合は、コンテンツ移動コントローラが介在しなければならないことから、装置コストが増大する。また、無線LAN上で任意のSourceとSink間でMOVE動作がアドホックに起動する場合には、コンテンツ移動コントローラの配置が困難となり、あるいはコンテンツ移動コントローラの介在が伝送シーケンスのボトルネックとなる。
【0018】
また、コンテンツを受信完了したSinkから返信されるコンテンツの記録状態情報を基にSourceが送信済みのコンテンツを消去することで、Sinkがコンテンツを正常記録できない際のSource側でのコンテンツの紛失を防ぐコンテンツ記録システムについて提案がなされている(例えば、特許文献3を参照のこと)。しかしながら、同システムでは、コンテンツ伝送が途切れたことによりコンテンツがSourceとSinkで分断してしまった事態の解消方法については何ら考慮されていない。
【0019】
また、著作権保護されたデータを他の記録装置に移動する際に、独自の複写暗号鍵で複写データを暗号化して保持しておき、万一移動時の障害などにより移動後のデータが不良の場合は、移動後のデータを無効とし、複写データから元のデータを復元することにより、著作権保護を行ないながら元のデータの消失を防止する、コンテンツ・データを取り扱う装置について提案がなされている(例えば、特許文献4を参照のこと)。しかしながら、同装置では、移動先にデータが記録されてから元のデータを消去するか、又は移動先でのデータの記録と並行して元のデータを消去するので、コンテンツ伝送が途切れたことによりコンテンツがSourceとSinkで分断してしまった事態の解消方法について十分には考慮されていない。
【0020】
コンテンツ伝送が途切れたことによりコンテンツがSourceとSinkで分断してしまった場合、まだコンテンツがMOVEしていないと扱うと、Sink側では一部でも使用が可能であるから、コンテンツの権利者は不利益を被る。また、コンテンツがMOVEされたと扱うと、Sink側ではコンテンツ全体を利用できる訳ではないから、ユーザにとって不利である。
【0021】
MOVE動作が完全に終了しなかった場合、Undo(すなわちMOVEしなかった状態に戻す)や、Resume(すなわち残りのMOVE動作を再開する)といった解決方法も考えられる。
【0022】
しかしながら、Sinkが利用可能な状態でしかデータを受け取ることができない(すなわち、Unusableという状態で記録することができない)機器である場合には、受け取ったデータをUnusableな状態にできない限り、Undoを行なうことができない。また、Sink側で受け取ったデータを1回限りの逐次書き込み専用のストレージに記録しているような場合には、ストレージにデータを書き込まなかった状態に戻すことはできない。また、MOVE動作か途切れた原因が機器の故障などの場合は、Resumeすることはできない。
【0023】
【特許文献1】特開2003−101529号公報
【特許文献2】特開2005−158056号公報
【特許文献3】特開2005−293731号公報
【特許文献4】特開2005−250567号公報
【非特許文献1】ISO/IEC 13818−1GENERICCODING OF MOVING PICTURES AND ASSOCIATED AUDIO:SYSTEMS Recommendation H.222.0
【非特許文献2】ARIB TR−B14 ARIB TR−B15
【非特許文献3】DTCP Specification Volume 1 Version 1.4 (Informational Version)http://www.dtcp.com/
【非特許文献4】DTCP Volume 1 Supplement E Mapping DTCP to IP, Version 1.1 (Informational Version)http://www.dtcp.com/
【非特許文献5】DIGITAL TRANSMISSION PROTECTION LICENSE AGREEMENT, Adopter Agreement May 2005
【発明の開示】
【発明が解決しようとする課題】
【0024】
本発明の目的は、DTCPに準拠した情報機器同士で暗号化コンテンツの伝送手続きを好適に実行することができる、優れたコンテンツ伝送システム、コンテンツ伝送装置及びコンテンツ伝送方法、並びにコンピュータ・プログラムを提供することにある。
【0025】
本発明のさらなる目的は、MOVE機能を用いてSourceからSinkへコンテンツを好適に移動することができる、優れたコンテンツ伝送システム、コンテンツ伝送装置及びコンテンツ伝送方法、並びにコンピュータ・プログラムを提供することにある。
【0026】
本発明のさらなる目的は、何らかの障害によりMOVE動作が途切れた場合であっても、既にSink側で受け取ったデータに関してコンテンツ権利者及びユーザにとって公平となるように取り扱うことができる、優れたコンテンツ伝送システム、コンテンツ伝送装置及びコンテンツ伝送方法、並びにコンピュータ・プログラムを提供することにある。
【課題を解決するための手段】
【0027】
本発明は、上記課題を参酌してなされたものであり、その第1の側面は、コンテンツを送信するSourceとコンテンツを受信するSink間でコンテンツを伝送するコンテンツ伝送システムであって、前記Sinkは、前記Sourceから受信した部分のデータを逐次有効化し、前記Sourceは、前記Sinkに送信した部分のデータを逐次無効化しながら、コンテンツの移動を行なうことを特徴とするコンテンツ伝送システムである。
【0028】
但し、ここで言う「システム」とは、複数の装置(又は特定の機能を実現する機能モジュール)が論理的に集合した物のことを言い、各装置や機能モジュールが単一の筐体内にあるか否かは特に問わない(以下、同様)。
【0029】
本発明は、著作権保護が必要となる情報コンテンツを例えばIPネットワーク上で伝送するコンテンツ伝送システムに関するものであり、特に、具体的には、DTCP−IPに準拠した情報通信機器の間で、相互認証及び鍵交換を経て共有した鍵を用いて暗号化コンテンツ伝送を安全に行なうコンテンツ伝送システムに関する。DTCPでは、コピー制御を始め著作権が保護された形でコンテンツを伝送する仕組みが規定されている。
【0030】
コンテンツ伝送の形態は、Source上のコンテンツをSinkにコピーする方法と、SourceからSinkへコンテンツを移動してSourceにコンテンツを残さない方法がある。DTCPにおいては、Sinkは受信したコンテンツをNo More Copiesとして符号化して扱うこと、及び、Source側では伝送した後のコンテンツを消去又は利用不能にすることを条件にして、No More Copyとして符号化されたコンテンツを伝送するMOVE機能が用意されている。
【0031】
しかしながら、SourceとSink間でMOVE機能によるコンテンツ伝送処理が障害などに起因して中断したときに、Source及びSinkのそれぞれにコンテンツが分断されるという問題がある。MOVE動作が完全に終了しなかった場合、Undo(すなわちMOVEしなかった状態に戻す)や、Resume(すなわち残りのMOVE動作を再開する)といった解決方法も考えられるが、これらの処理を行なえないケースもある。
【0032】
そこで、本発明に係るコンテンツ伝送システムでは、Sinkは、Sourceから受信した部分のデータを逐次有効化するとともに、Sourceは、Sinkに送信した部分のデータを逐次無効化することを可能にし、Sink側ではコンテンツを構成する各データを受信する度にそのデータに関する権利をSinkに委譲するという仕組みを導入した。
【0033】
このようにコンテンツを構成するデータを部分的若しくは段階的に移動するという仕組みを導入することによって、何らかの障害によりコンテンツのMOVE動作が途切れた場合であっても、既にSink側で受け取ったデータに関してコンテンツ権利者及びユーザにとって公平となるように取り扱うことができる。
【0034】
ここで、Sinkは、Sourceから受信して有効化したコンテンツ・データの少なくとも一部を無効化することができる場合には、受信データを無効化してから移動の取り消しをSourceに要求することができる。Sourceは、該取り消し要求に応じて、一旦無効化した当該送信データを有効化することで、コンテンツ移動前の状態を復元することができる。
【0035】
また、Sourceは、データをSink宛てに送信した直後に無効化すると、データ伝送トランザクション中のコネクション・エラーや電源遮断に起因して、Sink側ではデータの欠落が生じる可能性がある。そこで、Sourceは、Sinkからデータを受信したことの確約手続きに応じて送信データの無効化処理を行なうようにしてもよい。
【0036】
具体的には、SinkはSourceから受信して有効化したデータの範囲を指定した受領確認コマンドを送信し、これに対し、Sourceは、該受領確認コマンドを受信したことに応じて、指定された範囲のデータを無効化するようにする。
【0037】
このように、段階的なコンテンツの移動を確約手続き付きで行なうことにより、確約を経てからでないとSourceはデータの無効化を行なわないから、コネクション・エラーのためにデータの欠落が生じることはない。また、伝送トランザクション中に機器の電源がオフされた場合であっても、確約前のデータを不揮発記憶領域に格納しておくことで、データの欠落を回避することができる。
【0038】
また、本発明の第2の側面は、DTCP Sourceとしてコンテンツを送信するための処理をコンピュータ・システム上で実行するようにコンピュータ可読形式で記述されたコンピュータ・プログラムであって、前記コンピュータ・システムに対し、
AKE手続きによりSinkとの間で相互認証及び鍵交換を行なう認証手順と、
送信対象となるコンテンツのデータを、前記認証手順において交換した鍵を用いて前記Sinkへ暗号化伝送するデータ伝送手順と、
前記データ伝送手順において送信された部分のデータを順次無効化するデータ無効化手順を実行させ、
Sinkへコンテンツを移動することを特徴とするコンピュータ・プログラムである。
【0039】
また、本発明の第3の側面は、DTCP Sinkとしてコンテンツを受信するための処理をコンピュータ・システム上で実行するようにコンピュータ可読形式で記述されたコンピュータ・プログラムであって、前記コンピュータ・システムに対し、
AKE手続きによりSourceとの間で相互認証及び鍵交換を行なう認証手順と、
前記Sourceから送信されるコンテンツ・データを、前記認証手順において交換した鍵を用いて受信処理するデータ受信手順と、
前記データ受信手順において受信された部分のデータを順次有効化するデータ有効化手順を実行させ、
Sourceからコンテンツを移動することを特徴とするコンピュータ・プログラムである。
【0040】
本発明の第2乃至第3の各側面に係るコンピュータ・プログラムは、コンピュータ・システム上で所定の処理を実現するようにコンピュータ可読形式で記述されたコンピュータ・プログラムを定義したものである。換言すれば、本発明の第2乃至第3の各側面に係るコンピュータ・プログラムをコンピュータ・システムにインストールすることによってコンピュータ・システム上では協働的作用が発揮され、本発明の第1の側面に係るシステムにおいてSource並びにSinkとしてそれぞれ動作し、本発明の第1の側面に係るコンテンツ伝送システムと同様の作用効果を得ることができる。
【発明の効果】
【0041】
本発明によれば、DTCPに準拠した情報機器同士で暗号化コンテンツの伝送手続きを好適に実行することができる、優れたコンテンツ伝送システム、コンテンツ伝送装置及びコンテンツ伝送方法、並びにコンピュータ・プログラムを提供することができる。
【0042】
また、本発明によれば、Move機能を用いてSourceからSinkへコンテンツを好適に移動することができる、優れたコンテンツ伝送システム、コンテンツ伝送装置及びコンテンツ伝送方法、並びにコンピュータ・プログラムを提供することができる。
【0043】
本発明に係るコンテンツ伝送システムによれば、コンテンツのMOVEを行なう際に、Sink側では受信したデータを逐次的に利用可能にする(すなわち、コンテンツを構成する各データを受信する度にそのデータに関する権利をSinkに委譲する)という仕組みを導入することにより、何らかの障害によりMOVE動作が途切れた場合であっても、既にSink側で受け取ったデータに関してコンテンツ権利者及びユーザにとって公平となるように取り扱うことができる。
【0044】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施形態や添付する図面に基づくより詳細な説明によって明らかになるであろう。
【発明を実施するための最良の形態】
【0045】
本発明は、著作権やその他の目的で保護が必要となる情報コンテンツを所定のコピー制御情報に従って暗号化伝送するコンテンツ伝送システムに関するものである。かかるシステムの具体例は、DTCP機器の間で行なわれるコンテンツ伝送である。以下、図面を参照しながら本発明の実施形態について詳解する。
【0046】
A.システム構成
DTCP−IPに従ったコンテンツ伝送は、コンテンツの要求を受理してコンテンツを送信するサーバとしてのSourceと、コンテンツを要求し、コンテンツを受信し、再生若しくは記録するクライアントとしてのSinkで構成される。図1には、本発明の一実施形態に係る情報通信システムの構成例を模式的に示している。
【0047】
図示の例では、DTCP−IP に準拠した認証サーバであるSourceとDTCP−IPに準拠した認証クライアントであるSinkはネットワークを経由して接続されて、AKEシステムが構築されている。ここで言うネットワークには、Ethernet(登録商標)や、インターネット、その他のIPネットワークが含まれる。SinkとSourceは、TCP/IPネットワーク上でコネクションを確立することができ、このコネクションを利用して、認証手続きやコンテンツ伝送手続きを実行することができる。
【0048】
図2及び図3には、図1に示したコンテンツ伝送システムにおいて、Sink及びSourceとして動作するコンテンツ伝送装置の、特に認証及びコンテンツ伝送に着目した機能構成をそれぞれ模式的に示している。
【0049】
図2に示すSinkは、DTCP−IP認証ブロックと、DTCP−IPコンテンツ受信ブロックと、コンテンツ再生/記録ブロックを備えている。
【0050】
DTCP−IP認証ブロックは、AKEブロックと、メッセージ・ダイジェスト生成ブロックと、コンテンツ復号ブロックで構成される。DTCP−IP認証ブロックは、より好ましくは耐タンパ性を備えている。
【0051】
AKEブロックは、DTCP−IPにおけるAKE機構(Sink側)を実現するブロックでる。このAKEブロックは後述のメッセージ・ダイジェスト生成ブロックから要求されたパラメータを渡す機能も備えている。
【0052】
メッセージ・ダイジェスト生成ブロックは、例えばMD5やSHA−1といった指定されたアルゴリズムに従い、パラメータのメッセージ・ダイジェストを生成するブロックであり、DTCP−IP認証ブロックの外に公開してはならないAKEブロックが保持するパラメータのメッセージ・ダイジェストを生成できるようにAKEブロックと密に配置される。
【0053】
コンテンツ復号ブロックは、AKEで交換した鍵Kxを用いてコンテンツの復号鍵Kcを算出し、DTCP−IPコンテンツ受信ブロックがSourceから受信した暗号化コンテンツをこの復号鍵Kcで復号する。ここで復号されたコンテンツは、コンテンツ再生/記録ブロックへ渡される。
【0054】
コンテンツ再生/記録ブロックは、コンテンツ復号ブロックから渡されたコンテンツを、再生モードの場合は再生を行ない、記録モードの場合はハード・ディスク又はその他の記録媒体(図示しない)に保存する。但し、コンテンツの記録動作は、コンテンツ伝送用のパケットPCP内に挿入されているコピー制御情報の規定に従う。
【0055】
DTCP−IPコンテンツ受信ブロックは、AKEを実施した後にSourceとのコンテンツ伝送手続きを実行する処理モジュールである。図示の例では、DTCP−IPコンテンツ受信ブロックはHTTPクライアント・ブロックを持ち、HTTPサーバ(すなわちSource)へコンテンツを要求し、応答されたコンテンツをHTTPサーバから受信する。HTTPクライアント・ブロックは、HTTPリクエスト管理ブロックとHTTPレスポンス管理ブロックに分かれる。
【0056】
HTTPリクエスト管理ブロックは、HTTPリクエスト送信ブロックとHTTPリクエスト生成ブロックに分かれる。HTTPリクエスト生成ブロックは、送信するコンテンツ伝送要求(HTTPリクエスト)を生成する。ここで生成されたHTTPリクエストは、HTTPリクエスト送信ブロックによりHTTPサーバとしてのSourceへ送信される。
【0057】
HTTPレスポンス管理ブロックは、HTTPレスポンス受信ブロックとHTTPレスポンス解釈ブロックに分かれる。サーバから返信されるHTTPレスポンスと暗号化されたコンテンツは、HTTP受信ブロックで受信される。ここで受信したHTTPレスポンスは、HTTPレスポンス解釈ブロックでチェックされる。ここでのチェック結果が肯定的であれば受信した暗号化コンテンツをDTCP認証ブロック内のコンテンツ復号ブロックへ送る。また、このチェック結果が否定的となる場合は、エラー・レスポンスとしての処理を行なう。SourceからのHTTPレスポンスは1つ以上のPCPからなる。
【0058】
DTCP−IP認証ブロックとDTCP−IPコンテンツ受信ブロックは、サーバ機器との間で個別のTCP/IPコネクションを確立して、それぞれ認証手続き及びコンテンツ伝送手続きを互いに独立して実行する。
【0059】
また、図3に示すSourceは、DTCP−IP認証ブロックと、DTCP−IPコンテンツ送信ブロックと、コンテンツ管理ブロックを備えている。
【0060】
DTCP−IP認証ブロックは、AKEブロックと、メッセージ・ダイジェスト生成ブロックと、コンテンツ暗号化ブロックで構成される。DTCP−IP認証ブロックは、より好ましくは耐タンパ性を備えている。
【0061】
AKEブロックは、DTCP−IPにおけるAKE機構(Source側)を実現するブロックである。このブロックは、後述のメッセージ・ダイジェスト生成ブロックから要求されたパラメータを渡す機能も備えている。AKEブロックは認証したSinkに関する情報を認証した機器の数だけ保持し、それをSinkからコンテンツが要求された際に認証済みのSinkかどうかを判別するのに使用する。
【0062】
メッセージ・ダイジェスト生成ブロックは、MD5やSHA−1といった指定されたアルゴリズムに従い、パラメータのメッセージ・ダイジェストを生成するブロックであり、DTCP−IP認証ブロックの外に公開してはならないAKEブロックが保持するパラメータのメッセージ・ダイジェストを生成できるようにAKEブロックと密に配置される。
【0063】
コンテンツ暗号化ブロックは、DTCP−IPコンテンツ送信ブロックの要求に応じてコンテンツ管理ブロックより読み出したコンテンツ・データを、AKEで交換した鍵Kxから生成したコンテンツ鍵Kcを用いて暗号化する。ここで暗号化されたコンテンツは、Sinkへ送信するために、DTCP−IPコンテンツ送信ブロックへ渡される。
【0064】
コンテンツ管理ブロックは、DTCP−IPの機構を用いて保護されるべきコンテンツを管理するブロックである。コンテンツ暗号化ブロックの読み出しに応じて、コンテンツのデータを渡す。
【0065】
DTCP−IPコンテンツ送信ブロックは、HTTPサーバ・ブロックを持ち、Sinkからのリクエストに応じた処理を実行する。HTTPサーバ・ブロックは、HTTPリクエスト管理ブロックとHTTPレスポンス管理ブロックに分かれる。
【0066】
HTTPリクエスト管理ブロックは、HTTPリクエスト受信ブロックと、HTTPリクエスト解釈ブロックに分かれる。HTTPリクエスト受信ブロックは、クライアントとしてのSinkからのHTTPリクエストを受信する。受信したHTTPリクエストはHTTPリクエスト解釈ブロックに送られ、チェックされる。HTTPリクエスト解釈ブロックにおけるチェック結果が肯定的であれば、HTTPリクエストの情報をDTCP−IP認証ブロックへ通知する。
【0067】
HTTPレスポンス管理ブロックは、HTTPレスポンス生成ブロックとHTTPレスポンス送信ブロックに分かれる。HTTPレスポンス生成ブロックは、HTTPリクエスト解釈ブロックでのチェック結果が肯定的であれば、暗号化されたコンテンツを返すためのHTTPレスポンスを作成する。HTTPレスポンスは1つ以上のPCPからなる。一方、HTTPリクエスト解釈ブロックでのチェック結果が否定的となる場合、エラーを返すためのHTTPレスポンスを作成する。HTTPレスポンス送信ブロックは、作成されたHTTPレスポンスを、要求元のクライアントへ送信する。また、HTTPリクエスト解釈ブロックでのチェック結果が肯定的となる場合には、HTTPレスポンス・ヘッダに続けて、DTCP−IP認証ブロック内のコンテンツ暗号化ブロックで暗号化したコンテンツを送信する。
【0068】
DTCP−IP認証ブロックとDTCP−IPコンテンツ送信ブロックは、HTTPクライアントとしてのSinkとの間で個別のTCP/IPコネクションを確立して、それぞれ認証手続き及びコンテンツ伝送手続きを互いに独立して実行する。
【0069】
なお、Sink及びSourceのいずれもがDTCP−IP認証ブロック内に持つメッセージ・ダイジェスト生成ブロックは、DTCP−IP自体で規定される機能モジュールではなく、また本発明の要旨には直接関連しない。
【0070】
B.HTTPを利用したコンテンツ伝送
続いて、DTCP−IPに従ったコンテンツの伝送手順について説明する。図4には、SourceとSinkの間でAKEに基づく鍵交換手続き、及び鍵交換により共有した鍵を利用した暗号化コンテンツ伝送を行なう仕組みを図解している。DTCP−IPではHTTPやRTPなどのコンテンツ伝送用プロトコルを利用することができるが、図示の例ではHTTPの手続きに従うものとする。また、コンテンツ伝送の形態は、コンテンツの複製とコンテンツの移動があるが、ここでは前者を前提にして説明する。後者のコンテンツ伝送方法は、DTCPで規定されるMOVE機能によって実現されるが、その詳細については後述に譲る。
【0071】
SourceとSinkは、まず1つのTCP/IPコネクションを確立し、機器同士の認証及び鍵交換のためのAKE手続きを行なう。DTCP準拠機器には、DTLA(前述)により発行された機器証明書が埋め込まれている。DTCP認証手続きでは、互いが正規のDTCP準拠機器であることを確かめた後、認証鍵KauthをSourceとSinkで共有する。AKE手続きが成功すると、Sourceはコンテンツ暗号鍵Kcの種となる種鍵Kxを生成し、認証鍵Kauthで暗号化してSinkに送る。
【0072】
そして、AKEによる認証及び鍵交換手続きが済んだ後、SinkはSource上のコンテンツを要求することができる。また、Sourceは、UPnPで規定されているCDS(ContentDirectory Service)などを通じてSinkにSource上のコンテンツへのアクセス先を示すコンテンツ場所をあらかじめ伝えることができる。
【0073】
図2及び図3に示した構成例では、SourceがHTTPサーバとなり、SinkがHTTPクライアントとなって、コンテンツの伝送を開始する(RTPを使用するときは、SourceがRTPSenderとなり、SinkがRTP Receiverとなる)。HTTPのためのTCP/IPコネクションが、AKEのためのTCP/IPコネクションとは別に、HTTPクライアントより作成される(すなわち、AKE手続き用とコンテンツ伝送用に個別のソケット情報(IPアドレスとポート番号の組み合わせ)を持つ)。そして、HTTPクライアントとして動作するSinkは、通常のHTTPと全く同様の動作手順によりHTTPサーバとして動作するSource上のコンテンツを要求する。これに対し、HTTPサーバは、要求通りのコンテンツをHTTPレスポンスとして返す。
【0074】
Sourceは、乱数を用いてノンスNcを生成して、種鍵KxとノンスNcと暗号モードを表すE−EMIを基にコンテンツ鍵Kcを生成する。そして、Sinkから要求されているコンテンツを、コンテンツ鍵Kcを用いて暗号化し、暗号化コンテンツからなるペイロードとノンスNcとE−EMIを含んだヘッダからなるパケットであるPCP(Protected Content Packet)をTCPストリーム上に乗せて送信する。そして、IPプロトコルは、TCPストリームを所定の単位となるパケットの大きさに分割し、さらにヘッダ部を付加したIPパケットにし、指定されたIPアドレス宛てに届ける。
【0075】
Sink側では、Sourceからの各IPパケットを受信すると、これをTCPストリームに組み立てて、送信されたPCPを取り出す。そして、ストリームからノンスNcとE−EMIを取り出すと、これらと種鍵Kxを用いて同様にコンテンツ鍵Kcを算出し、暗号化コンテンツを復号して、再生若しくは記録などの処理を実施する。HTTPプロトコルを利用したコンテンツ伝送が終了すると、例えばSink側から、使用したTCPコネクションを適宜切断する。
【0076】
また、長大なTCPストリーム全体に渡り同じ暗号鍵を使用し続けると、鍵が解読される危険は高くなる。このため、DTCP−IPでは、Sourceは128MB毎にノンスNcすなわちコンテンツ鍵Kcを更新する(1ずつインクリメントする)よう取り決められている。Sinkは、コンテンツ鍵の確認が必要になると、コンテンツ伝送用のTCPコネクションとは別に、コンテンツ鍵の確認用のTCPコネクションをさらに確立し、Sourceに対しコンテンツ鍵確認のための手続きを行なう。例えば、DTCP−IP Volume 1 Supplement E.8.6には、コンテンツ鍵の確認手続きとして“Content Key Confirmation”を規定している。
【0077】
DTCP−IPでは、ノンスNcを含んだヘッダと、暗号化コンテンツからなるペイロードで構成される、PCPというパケット形式でコンテンツ伝送が行なわれる。図5には、PCPのデータ構造を模式的に示している。PCPヘッダは平文であり、ノンスNcが含まれている。また、PCPペイロードはノンスNcで決まるコンテンツ鍵Kcで暗号化されたコンテンツ(但し、コピー制御情報として“copy−free”が指定されているコンテンツは暗号化不要)で構成される。PCPペイロードは、常に16バイトの倍数になるように、必要に応じて暗号化前にpaddingが行なわれる。また、コンテンツの安全のために定期的にノンスNcすなわちコンテンツ鍵Kcを更新するが(前述)、その時点でもPCPはpaddingされる(コンテンツ鍵Kcを更新しなくても複数のPCPにpaddingすることは可能)。また、protected_content_lengthの値が16の整数倍でないときは、コンテンツに1〜15バイトのpaddingが付く。ノンスNcの更新に伴い、コンテンツ鍵確認手続を起動するのは上述した通りである。ちなみに、HTTPレスポンスは1つ以上のPCPからなり、RTPペイロードは1つのPCPからなる。図6には、PCPをpaddingする様子を示している。
【0078】
C.コンテンツのMOVE動作
DTCP−IPでは、Source側でNo More Copiesとして符号化されているコンテンツをSinkで利用できるようにする手段として、MOVE機能が用意されている。すなわち、Sinkは受信したコンテンツをNo More Copiesとして符号化して扱うこと、及び、Source側では伝送した後のコンテンツを消去又は利用不能にするという条件の下で、SourceからSinkへコンテンツをMOVEすることが許容される。MOVE機能によれば、SourceとSink間で伝送したコンテンツのエンティティ数が増えることはないので、コンテンツ保護上の問題はない。
【0079】
しかしながら、SourceとSink間でMOVE機能によるコンテンツ伝送処理が障害などに起因して中断したときに、Source及びSinkのそれぞれにコンテンツが分断されるという問題がある。MOVE動作が完全に終了しなかった場合、Undo(すなわちMOVEしなかった状態に戻す)や、Resume(すなわち残りのMOVE動作を再開する)といった解決方法も考えられるが、これらの処理を行なえないケースもある。
【0080】
そこで、本実施形態では、SourceからSinkへコンテンツのMOVEを行なう際に、Sink側では受信したデータを逐次的に利用可能にするという仕組みを導入することにした。この場合、Sinkはコンテンツを構成する各データを受信した時点で、コンテンツ全体の伝送処理の完了を待たずに、その受信データに関する権利がSourceから委譲され、Sink側で受信データが利用可能になるとともに、Source側ではコンテンツの当該データ部分が無効化される。すなわち、データ伝送する度にMOVEしたコンテンツが増分すると言う、段階的なコンテンツの移動が行なわれる。
【0081】
コンテンツをMOVEする際に、Sink側で受信データを逐次的に利用可能にしていくというこのような仕組みを、本明細書では“INCREMENTAL MOVE”と呼ぶことにする。INCREMENTAL MOVEによれば、何らかの障害によりMOVE動作が途切れた場合であっても、既にSink側で受け取られたデータの増分に関してコンテンツ権利者及びユーザにとって公平となるように取り扱うことができる、と本発明者らは思料する。
【0082】
INCREMENTAL MOVEでは、MOVEしたデータをSink側で受信した直後に利用可能にするようにしてもよい。Source側では、データが受信されるのと引き換えに、当該データ部分を利用不能(すなわち無効化)にする。但し、データ受信直後に権利を委譲すると、Source側では、自分から伝送したデータがSinkで正しく受信及び格納されたかどうかを知ることはできない。そこで、受信データに関してSourceとの間で確約(commitment)を経た後に、Sink側で利用可能(すなわち有効化)にするようにしてもよい。この場合、Sourceは、確約手続きの一環としてSink側から受信を通知されたデータ部分を利用不能にする。以下では、それぞれの方法に分けて、INCREMENTAL MOVEの実施形態について説明する。
【0083】
C−1.即時的なINCREMENTAL MOVE
図7〜図10には、MOVEしたデータをSink側で受信した直後に利用可能にする場合のコンテンツ伝送シーケンスを模式的に示している。
【0084】
図7に示すように、コンテンツ全体の伝送が成功裏に終われば、SourceとSink間でコンテンツの権利を無事に委譲することができる。これに対し、図8に示すように伝送の途中で障害が発生すると、伝送後のデータ部分はSink側に、伝送前のデータ部分はSourceに残り、コンテンツが分断される。MOVEが中断し、且つ、以降でMOVE処理を再開(Resume)することができないときに、このような状態に陥る。Sinkは、無事に受信したデータ増分に関しては権利が委譲され、その利用可能になる。また、Sourceは、既に送信したデータの部分を無効化するが、未送信となった残りのデータに関しては権利を留保し、その利用が可能である。
【0085】
また、Sinkが既に受信したデータのうち任意の時点から利用不能にすることができる場合には、その時点以降のMOVEを取り消すことができる。データのMOVEを取り消すために、本実施形態では“CANCEL”というコマンドを定義している。
【0086】
図9には、受信データのある時点x以降のMOVEを取り消すためのコンテンツ伝送シーケンスを模式的に示している。x以前の受信データは、例えば、Sink側で既に利用可能な状態でデータを記録してしまい、なお且つ無効化できない(すなわちUndoすることができない)データ部分、あるいはSink側で利用するのに都合のよいデータ単位(例えば、受信バッファのサイズ)などである。Sinkは、Sourceに対し、MOVEを取り消したい時点xを引数に含んだCANCELコマンドを送信する。
【0087】
また、Sinkが受信データをすべて利用不可能な状態にすることが可能で、且つSinkがMOVE自体を取り消したい場合には、図10に示すように、取り消したい時点を初期値0に設定したCANCELコマンドをSourceに送信することで、今回のMOVE動作全体をUndoすることができる。
【0088】
CANCELコマンドの伝送は、安全なトランザクションで行なう必要がある。例えば、コマンド伝送用あるいはAKE用のTCPコネクションを利用して、CANCELコマンド並びにそれに関連するトランザクションを行なうことができる。CANCELコマンドのフレーム・フォーマットについては後に説明する。
【0089】
SourceからSinkへコンテンツをMOVEするのは、クライアントとして動作するSinkがコンテンツ・サーバとして動作するSourceからコンテンツをダウンロードするケースと、クライアントとして動作するSurceがコンテンツ・サーバとして動作するSinkへコンテンツをアップロードするケースが想定される。以下では、それぞれのケースについて、Source並びにSinkが即時的なINCREMENTAL MOVEを行なうための動作手順について説明する。
【0090】
図11には、即時的なINCREMENTAL MOVE動作によりSinkがSourceからコンテンツをMOVEによりダウンロードする場合に、Sourceが実行する動作手順をフローチャートの形式で示している。
【0091】
まず、コンテンツ送信先機器となるSinkとの間で認証及び鍵交換(AKE)手続き用のTCPコネクションを確立して、AKE処理を行なう(ステップS1)。Sourceが最初に鍵を渡す相手は1台のSinkに限定する。
【0092】
AKEに成功すると、Sinkとの間でコンテンツ伝送用のTCPコネクションを確立する。そして、Sinkからコンテンツの送信要求を受信すると(ステップS2のYes)、指定された部分のデータを送信する(ステップS3)。そして、送信した部分のデータを無効済みでなければ(ステップS4のNo)、当該部分のコンテンツを無効化する(ステップS5)。
【0093】
ここで言う「無効化」とは、実際にデータを消したり変えたりすることではなく、再送以外の目的での利用を抑制する処理である。SinkによりMOVEがCANCELされたときには無効化したデータを利用可能な状態に戻す。CANCELコマンドは、例えば、無効化すべきコンテンツの範囲を指定するポインタ情報を持ち、Source側では、ポインタの位置以前の範囲のデータの利用を制限するなどの管理を行なう。
【0094】
Sourceは、SinkからCANCELコマンドを受信すると(ステップS6のYes)、CANCELコマンドで指定された位置(例えば、図9中の時点x)以降で無効化されている部分を有効化して(ステップS7)、本処理ルーチンを終了する。
【0095】
一方、SinkからCANCELコマンドを受信しないときには(ステップS6のNo)、MOVE動作を中断する必要があるかどうかをチェックする(ステップS7)。MOVE動作の中断が必要となるのは、ユーザや他のアプリケーションから中断の要求がある場合、タイムアウトした場合などである。
【0096】
MOVE動作を中断する必要があるときには(ステップS7のYes)、本処理ルーチンを終了する。また、MOVE動作を中断する必要がないときには(ステップS7のNo)、SinkからOKコマンドを受信したことにより(ステップS8のYes)、本処理ルーチンを終了する。
【0097】
また、OKコマンドを受信しないときには(ステップS9のNo)、ステップS2に戻って、Sinkから次のコンテンツの送信要求を待機する。
【0098】
なお、Sourceが無効化したデータ部分の再送を行なうときは、Sinkが当該再送部分を別に複製に用いないことが前提である。Sourceは、認証時にSinkがこの前提を遵守できるかどうかを確認し、確認できないときには再送を拒否するようにしてもよい。
【0099】
図12には、即時的なINCREMENTAL MOVE動作によりSinkがSourceからコンテンツをダウンロードする場合に、Sinkが実行する動作手順をフローチャートの形式で示している。
【0100】
まず、コンテンツ送信元機器となるSourceとの間で認証及び鍵交換(AKE)手続き用のTCPコネクションを確立して、AKE処理を行なう(ステップS11)。
【0101】
AKEに成功すると、Sourceとの間でコンテンツ伝送用のTCPコネクションを確立する。そして、Sinkは、コンテンツの未送信部分のデータの送信要求を送信する(ステップS12)。
【0102】
ここで、送信要求した部分のデータを正常に受信することができなかったときには(ステップS13のNo)、データの再送を行なう必要があるかどうかをチェックする(ステップS14)。データの再送が必要となるのは、タイムアウトが発生した場合や、受信データに異常がある場合、受信データが不完全な場合などである。
【0103】
データ再送が必要でなければ(ステップS14のNo)、ステップS13に戻って、正常なデータを受信するまで待機する。データ再送が必要なときは(ステップS14のYes)、既に送信されたデータの再送要求をSourceに送信した後(ステップS15)、ステップS13に戻って、正常なデータを受信するまで待機する。なお、Sourceから無効化したデータ部分の再送を行なうときは、Sinkが当該再送部分を別に複製に用いないことが前提である。
【0104】
また、送信要求した部分のデータを正常に受信することができたときには(ステップS13のYes)、コンテンツのすべてのデータを受信したかどうかをチェックする(ステップS16)。未送信のデータが残っているときには、コンテンツのMOVE動作を中断する必要があるかどうかをチェックする(ステップS17)。MOVE動作の中断が必要となるのは、ユーザや他のアプリケーションから中断の要求が発生した場合、タイムアウトした場合などである。
【0105】
MOVE動作を継続する場合には(ステップS17のNo)、ステップS12に戻り、未送信のデータの受信処理を繰り返し行なう。
【0106】
一方、MOVE動作を中断すべき場合には(ステップS17のYes)、中断後に有効にならない範囲の先頭位置xを決定し、CANCELコマンドでxをSourceに通知するとともに(ステップS18)、Sink側では受信したコンテンツのx以降の部分のデータを無効化して(ステップS19)、本処理ルーチンを終了する。ここで言う無効化の処理は上述と同様である。
【0107】
また、コンテンツを構成するすべてのデータを受信したときには(ステップS16のYes)、Sinkは、Sourceに対してOKコマンドを送信し(ステップS20)、本処理ルーチン全体を終了する。
【0108】
図13には、即時的なINCREMENTAL MOVE動作によりSourceがSinkへコンテンツをアップロードする場合に、Sourceが実行する動作手順をフローチャートの形式で示している。
【0109】
まず、コンテンツ送信先機器となるSinkとの間で認証及び鍵交換(AKE)手続き用のTCPコネクションを確立して、AKE処理を行なう(ステップS21)。Sourceが最初に鍵を渡す相手は1台のSinkに限定する。AKEに成功すると、Sinkとの間でコンテンツ伝送用のTCPコネクションを確立する。
【0110】
そして、アップロードすべきすべてのコンテンツを送信したかどうかをチェックする(ステップS22)。
【0111】
未送信のコンテンツ・データがあるときには(ステップS22のNo)、そのデータの送信を行なう(ステップS23)。そして、送信した部分のデータを無効化する(ステップS24)。
【0112】
送信したデータのコンテンツを無効化した後、並びに送信すべきすべてのコンテンツを送信した後(ステップS22のYes)、無効化したデータの再送要求をSinkから受信したかどうかをチェックする(ステップS25)。
【0113】
データの再送要求を受信したときには(ステップS25のYes)、指定された部分のデータを送信する(ステップS26)。但し、データ再送を行なうときは、Sinkが当該再送部分を別に複製に用いないことが前提である。Sourceは、認証時にSinkがこの前提を遵守できるかどうかを確認し、確認できないときには再送を拒否するようにしてもよい。
【0114】
データの再送要求を受信しなかったとき(ステップS25のNo)、並びに、再送要求に応じてデータ再送を行なった後、Sourceは、SinkからCANCELコマンドを受信したかどうかをチェックする(ステップS27)。
【0115】
CANCELコマンドを受信したときには(ステップS27のYes)、CANCELコマンドで指定された位置(例えば、図9中の時点x)以降で無効化されている部分を有効化して(ステップS28)、本処理ルーチンを終了する。
【0116】
一方、SinkからCANCELコマンドを受信しないときには(ステップS27のNo)、MOVE動作を中断する必要があるかどうかをチェックする(ステップS29)。本処理ルーチンを終了する。MOVE動作の中断が必要となるのは、ユーザや他のアプリケーションから中断の要求がある場合、タイムアウトした場合などである。MOVE動作を中断する必要があるときには、本処理ルーチンを終了する。また、MOVE動作を中断する必要がないときには、SinkからOKコマンドを受信して(ステップS30のYes)、確約を経た後に本処理ルーチンを終了する。
【0117】
また、OKコマンドを受信しないときには(ステップS30のNo)、ステップS2に戻って、Sinkから次のコンテンツの送信要求を待機する。
【0118】
図14には、即時的なINCREMENTAL MOVE動作によりSourceがSinkへコンテンツをアップロードする場合に、Sinkが実行する動作手順をフローチャートの形式で示している。
【0119】
まず、コンテンツ送信元機器となるSourceとの間で認証及び鍵交換(AKE)手続き用のTCPコネクションを確立して、AKE処理を行なう(ステップS31)。AKEに成功すると、Sourceとの間でコンテンツ伝送用のTCPコネクションを確立する。
【0120】
そして、Sinkは、Sourceからデータを正常に受信できたかどうかをチェックする(ステップS32)。
【0121】
ここで、データを正常に受信することができなかったときには(ステップS32のNo)、データの再送を行なう必要があるかどうかをチェックする(ステップS33)。データの再送が必要となるのは、タイムアウトが発生した場合や、受信データに異常がある場合、受信データが不完全な場合などである。
【0122】
データ再送が必要でなければ(ステップS33のNo)、ステップS32に戻って、正常なデータを受信するまで待機する。データ再送が必要なときは(ステップS33のYes)、既に送信されたデータの送信要求をSourceに送信した後(ステップS34)、ステップS32に戻って、正常なデータを受信するまで待機する。なお、Sourceから無効化したデータ部分の再送を行なうときは、Sinkは正常に受信できなかった部分の補完以外の目的には使用しない。
【0123】
また、SinkがSourceからデータを正常に受信することができたときには(ステップS32のYes)、コンテンツのすべてのデータを受信したかどうかをチェックする(ステップS35)。未送信のデータが残っているときには、コンテンツのMOVE動作を中断する必要があるかどうかをチェックする(ステップS36)。MOVE動作の中断が必要となるのは、ユーザや他のアプリケーションから中断の要求が発生した場合、タイムアウトした場合などである。
【0124】
MOVE動作を継続する場合には(ステップS36のNo)、ステップS32に戻り、未送信のデータの受信処理を繰り返し行なう。
【0125】
一方、MOVE動作を中断すべき場合には(ステップS36のYes)、中断後に有効にならない範囲の先頭位置xを決定し、CANCELコマンドでxをSourceに通知するとともに(ステップS37)、Sink側では受信したコンテンツのx以降の部分のデータを無効化して(ステップS38)、本処理ルーチンを終了する。ここで言う無効化の処理は上述と同様である。
【0126】
また、コンテンツを構成するすべてのデータを受信したときには(ステップS35のYes)、Sinkは、Sourceに対してOKコマンドを送信し(ステップS39)、本処理ルーチン全体を終了する。
【0127】
C−2.確約付きのINCREMENTAL MOVE
図15〜17には、受信データに関してSourceとの間で確約(commitment)を経た後にSink側で利用可能にするようにする場合のコンテンツ伝送シーケンスを模式的に示している。
【0128】
SinkにMOVEされたデータは、当該データに関してSourceとの間で確約手続きを行なうまでは利用不可能な状態を保つ。Sourceは、確約手続きでSinkから指定されたデータ部分を利用不可能にする。本実施形態では、確約手続きを行なうために、“OK”というコマンドを定義している。Sinkは、受信データのうち利用可能にしたい(すなわち確約の対象となる)データ部分をOKコマンドに記して、Sourceに送信する。
【0129】
図15には、コンテンツ全体の伝送が成功裏に終了する場合のシーケンス例を示している。Sinkは、pまでデータを受信した時点でそのデータを利用可能にしたい場合には、時点pを引数に含んだOKコマンドをSourceに送信して、確約手続きを行なう。そして、Source側で時点pまでのデータを利用不可能にする(すなわち無効化する)ことと引き換えに、Sink側では当該時点までのデータの利用を可能にする(すなわち有効化する)ことができる。
【0130】
さらに、Sinkは、qまでデータを受信した時点、並びに、rまでデータを受信した時点においても、OKコマンドをSourceに送信して、確約手続きを行ない、各々の時点でそれぞれデータを利用可能な状態にしている。
【0131】
Sinkが確約手続きを行なう時点は、例えば、Sink側で利用するのに都合のよいデータ単位(受信バッファサイズなど)である。図15に示した例では、このような数回の確約手続きを経て、コンテンツ全体のMOVEが完了する。
【0132】
コンテンツ伝送の途中で新たにMOVEしたデータ増分について確約手続きを行なうことで、各時点での受信データを逐次的に利用可能にすることができる。このように追加分のデータに関する確約手続きを逐次的に行なうMOVE動作のことを中間的な確約手続き(INTERMEDIATE COMMITMENT)と呼ぶこともできる。勿論、中間的な確約手続きを行なわず、コンテンツ全体の伝送が完了した時点でSinkがコンテンツ全体に関するOKコマンドを送信し、一括して確約手続きを行なうようにしてもよいが、これは“BLOCK MOVE”に相当する。BLOCK MOVEに関しては、例えば本出願人に既に譲渡されている特願2006−4129号明細書を参照されたい。
【0133】
図16には、中間的な確約手続きを行なうコンテンツ伝送の途中で障害が発生した場合の伝送シーケンス例を示している。Sinkは、pまでデータを受信した時点でそのデータを利用可能にしたい場合には、時点pを引数に含んだOKコマンドをSourceに送信して、確約手続きを行なう。そして、Source側で時点pまでのデータを利用不可能にすることと引き換えに、Sink側では当該時点までのデータの利用を可能にする。同様に、qまでデータを受信した時点で確約手続きを行なうことで、Sink側では当該時点までのデータの利用を可能にする。
【0134】
ここで、コンテンツ伝送に障害が発生し、且つ、以降でMOVE処理を再開(Resume)することができないときには、伝送後のデータ部分はSink側に、伝送前のデータ部分はSourceに残り、コンテンツが分断される。即時的なINCREMENTAL MOVEでは、MOVEが中断してResumeすることができない場合は必ずコンテンツが分断されるが(図8〜図9を参照のこと)、確約付きのINCREMENTAL MOVEでは、中間的な確約手続きを行なった後にMOVEが中断し、且つMOVE処理をResumeできないときのみコンテンツの分断が生じる。
【0135】
図15に示した例では、複数回の中間的な確約手続きを行なっているが、Sink側で一旦利用可能にした受信データを利用不可能にすることができる場合には、確約を行なった後であってもMOVEを取り消すことができる。図17に示す例では、Sinkは、p、q、並びにrの各時点で中間的な確約手続きを行なった後、すべての受信データを利用不可能にすることを記したCANCELコマンドをSourceに送信している。この場合、Source側では送信したコンテンツが再び利用可能な状態となり、MOVEをUndoすることができる。
【0136】
OKコマンドの伝送は、安全なトランザクションで行なう必要がある。例えば、コマンド伝送用あるいはAKE用のTCPコネクションを利用して、OKコマンド並びにそれに関連するトランザクションを行なうことができる。OKコマンドのフレーム・フォーマットについては後に説明する。
【0137】
即時的なINCREMENTAL MOVEでは、データ伝送トランザクションの途中で、コネクション・エラーに起因するデータの欠落が生じ得る。また、伝送トランザクション中に機器の電源がオフされたことに伴い、バッファリングされたデータの欠落が生じ得る。これに対し、確約付きのINCREMENTAL MOVEによれば、確約手続きを経てからでないとSourceはデータの無効化を行なわないから、コネクション・エラーのためにデータの欠落が生じることはない。また、伝送トランザクション中に機器の電源がオフされた場合であっても、確約前のデータを不揮発記憶領域に格納しておくことで、データの欠落を回避することができる。
【0138】
また、即時的なINCREMENTAL MOVEでは、MOVEをUndoする手続きを安全なトランザクションで行なう必要があるのに対し、確約付きのINCRENEMTAN MOVEでUndoを行なうには、中間的な確約手続きを経た場合のみ安全なトランザクションが必要となる。
【0139】
SourceからSinkへコンテンツをMOVEするのは、クライアントとして動作するSinkがコンテンツ・サーバとして動作するSourceからコンテンツをダウンロードするケースと、クライアントとして動作するSurceがコンテンツ・サーバとして動作するSinkへコンテンツをアップロードするケースが想定される。以下では、それぞれのケースについて、Source並びにSinkが確約付きINCREMENTAL MOVEを行なうための動作手順について説明する。
【0140】
図18には、確約付きのINCREMENTAL MOVE動作によりSinkがSourceからコンテンツをダウンロードする場合に、Sourceが実行する動作手順をフローチャートの形式で示している。
【0141】
まず、コンテンツ送信先機器となるSinkとの間で認証及び鍵交換(AKE)手続き用のTCPコネクションを確立して、AKE処理を行なう(ステップS51)。Sourceが最初に鍵を渡す相手は1台のSinkに限定する。
【0142】
AKEに成功すると、Sinkとの間でコンテンツ伝送用のTCPコネクションを確立する。そして、Sinkからコンテンツの送信要求を受信すると(ステップS52のYes)、指定された部分のデータを送信する(ステップS53)。なお、データ送信処理と並行して、Sourceでは送信したデータの無効化処理を行なうが、その無効化処理動作の詳細については後述に譲る。
【0143】
また、Sourceは、SinkからCANCELコマンドを受信すると(ステップS54のYes)、CANCELコマンドで指定された位置以降で無効化されているデータ部分を有効化して(ステップS55)、本処理ルーチンを終了する。
【0144】
一方、SinkからCANCELコマンドを受信しないときには(ステップS54のNo)、MOVE動作を中断する必要があるかどうかをチェックする(ステップS56)。MOVE動作の中断が必要となるのは、ユーザや他のアプリケーションから中断の要求がある場合、タイムアウトした場合などである。
【0145】
MOVE動作を中断する必要があるときには(ステップS56のYes)、本処理ルーチンを終了する。また、MOVE動作を中断する必要がないときには(ステップS56のNo)、既にSinkに送信したデータが図19に示す処理手順(後述)に従って最後まで無効化されているかどうかをチェックする(ステップS57)。最後まで無効化されているときには、本処理ルーチンを終了する。また、最後まで無効化されていないときには、ステップS52に戻り、Sinkからの次の送信要求を待機する。
【0146】
Sourceは、図18に示した処理手順に従ってSinkにコンテンツをダウンロードする際、これの処理とは並行して、Sinkからの通知(すなわちOKコマンドを用いた確約手続き)に基づいて、送信済みデータの無効化処理を行なう。ここで言う「無効化」とは、実際にデータを消したり変えたりすることではなく、再送以外の目的での利用を抑制する処理である(同上)。Sourceが無効化したデータ部分の再送を行なうときは、Sinkが当該再送部分を別に複製に用いないことが前提である。Sourceは、認証時にSinkがこの前提を遵守できるかどうかを確認し、確認できないときには再送を拒否するようにしてもよい。
【0147】
図19には、確約付きのINCREMENTAL MOVEを行なう際にSourceが並行して行なうデータ無効化処理の手順をフローチャートの形式で示している。
【0148】
Sourceは、Sinkに対してコンテンツの送信を開始してから(ステップS61のYes)、中断するまでの間に(ステップS62のNo)、OKコマンドを受信すると(ステップS63のYes)、送信したデータの有効範囲の先頭からOKコマンドで指定された位置xまで無効化を行なう(ステップS64)。
【0149】
送信したコンテンツの最後のデータまで無効化したら(ステップS65のYes)、本処理ルーチンを終了する。また、送信したコンテンツの最後のデータまで無効化しないときには(ステップS65のNo)、ステップS62に戻って、中断の発生又は次のOKコマンドの受信を待機する。
【0150】
また、MOVE動作が中断したときには(ステップS62のYes)、本処理ルーチンを終了する。
【0151】
図20には、確約付きのINCREMENTAL MOVE動作によりSinkがSourceからコンテンツをダウンロードする場合に、Sinkが実行する動作手順をフローチャートの形式で示している。
【0152】
まず、コンテンツ送信元機器となるSourceとの間で認証及び鍵交換(AKE)手続き用のTCPコネクションを確立して、AKE処理を行なう(ステップS71)。
【0153】
AKEに成功すると、Sourceとの間でコンテンツ伝送用のTCPコネクションを確立する。そして、Sinkは、コンテンツの未送信部分のデータの送信要求を送信し(ステップS72)、要求したデータ部分をSourceから正しく受信できたかどうかをチェックする(ステップS73)。なお、Sourceからのデータ受信処理と並行して、Sinkでは受信したデータの有効化処理を行なうが、その有効化処理動作の詳細については後述に譲る。
【0154】
ここで、送信要求した部分のデータを正常に受信することができなかったときには(ステップS73のNo)、データの再送を行なう必要があるかどうかをチェックする(ステップS74)。データの再送が必要となるのは、タイムアウトが発生した場合や、受信データに異常がある場合、受信データが不完全な場合などである。
【0155】
データ再送が必要でなければ(ステップS74のNo)、ステップS73に戻って、正常なデータを受信するまで待機する。データ再送が必要なときは(ステップS74のYes)、既に送信されたデータの再送要求をSourceに送信した後(ステップS75)、ステップS73に戻って、正常なデータを受信するまで待機する。なお、Sourceから無効化したデータ部分の再送を行なうときは、Sinkが当該再送部分を別に複製に用いないことが前提である。
【0156】
また、送信要求した部分のデータを正常に受信することができたときには(ステップS73のYes)、受信したデータを図21に示す処理手順(後述)に従って最後まで有効化したかどうかをチェックする(ステップS76)。最後まで有効化したならば、本処理ルーチンを終了する。
【0157】
有効化していない受信データが残っているときには(ステップS76のNo)、コンテンツのMOVE動作を中断する必要があるかどうかをチェックする(ステップS77)。MOVE動作の中断が必要となるのは、ユーザや他のアプリケーションから中断の要求が発生した場合、タイムアウトした場合などである。
【0158】
MOVE動作を継続する場合には(ステップS77のNo)、ステップS72にて送信を要求したコンテンツを最後まで受信したかどうかをチェックする(ステップS80)。そして、最後まで受信していなければ、ステップS12に戻り、未送信のデータの受信処理を繰り返し行なう。また、最後まで受信していれば、ステップS76に戻り、受信データを最後まで有効化したかどうかをチェックする。
【0159】
一方、MOVE動作を中断すべき場合には(ステップS77のYes)、中断後に有効にならない範囲の先頭位置xを決定し、CANCELコマンドでxをSourceに通知するとともに(ステップS78)、Sink側では受信したコンテンツのx以降の部分のデータを無効化して(ステップS79)、本処理ルーチンを終了する。
【0160】
Sinkは、図20に示した処理手順に従ってSourceからコンテンツをダウンロードする際、これの処理とは並行して、Sourceへの通知(すなわちOKコマンドを用いた確約手続き)に基づいて、受信データの有効化処理を行なう。ここで言う「有効化」は、利用不能状態のデータを再生利用が可能な状態にする処理である。
【0161】
図21には、確約付きのINCREMENTAL MOVEを行なう際にSiinkが並行して行なうデータ有効化処理の手順をフローチャートの形式で示している。
【0162】
まず、有効化する前のコンテンツ・データが所定の有効化単位だけ受信したか(すなわち受信データ・バッファに蓄積されたか)どうかをチェックする(ステップS81)。有効化前のコンテンツ・データを未だ所定の有効化単位だけ受信していないときには(ステップS81のNo)、有効化前のコンテンツを最後まで受信するまで(ステップS82)、Sourceからのデータ受信を待機する。
【0163】
そして、有効化する前のコンテンツ・データを所定の有効化単位だけ受信すると(ステップS81のYes)、MOVE動作が中断したかどうかをチェックする(ステップS83)。MOVE動作が中断したときには、本処理ルーチンを終了する。
【0164】
一方、MOVE動作が中断していないときには(ステップS83のNo)、有効化する部分の末尾位置xをOKコマンドでSourceに通知し(ステップS84)、さらに無効範囲の先頭から末尾位置xを有効化する(ステップS85)。
【0165】
そして、コンテンツを最後まで有効化したときには(ステップS86のYes)、本処理ルーチンを終了し、最後まで有効化していないときには(ステップS86のNo)、ステップS81に戻る。
【0166】
図22には、確約付きのINCREMENTAL MOVE動作によりSourceがSinkへコンテンツをアップロードする場合に、Sourceが実行する動作手順をフローチャートの形式で示している。
【0167】
まず、コンテンツ送信先機器となるSinkとの間で認証及び鍵交換(AKE)手続き用のTCPコネクションを確立して、AKE処理を行なう(ステップS91)。Sourceが最初に鍵を渡す相手は1台のSinkに限定する。AKEに成功すると、Sinkとの間でコンテンツ伝送用のTCPコネクションを確立する。
【0168】
そして、アップロードすべきすべてのコンテンツを送信したかどうかをチェックし(ステップS92)、未送信のコンテンツ・データがあるときにはそのデータの送信を行なう(ステップS93)。なお、データ送信処理と並行して、Sourceでは、SinkからのOKコマンドの受信に基づいて送信したデータの無効化処理を行なうが、その動作手順は図19に示したフローチャートに従う。
【0169】
次いで、無効化したデータの再送要求をSinkから受信したかどうかをチェックする(ステップS94)。データの再送要求を受信したときには、指定された部分のデータを送信する(ステップS95)。但し、データ再送を行なうときは、Sinkが当該再送部分を別に複製に用いないことが前提である。Sourceは、認証時にSinkがこの前提を遵守できるかどうかを確認し、確認できないときには再送を拒否するようにしてもよい。
【0170】
データの再送要求を受信しなかったとき(ステップS94のNo)、並びに、再送要求に応じてデータ再送を行なった後、Sourceは、SinkからCANCELコマンドを受信したかどうかをチェックする(ステップS96)。
【0171】
CANCELコマンドを受信したときには(ステップS96のYes)、CANCELコマンドで指定された位置以降で無効化されているデータ部分を有効化して(ステップS97)、本処理ルーチンを終了する。
【0172】
一方、SinkからCANCELコマンドを受信しないときには(ステップS96のNo)、MOVE動作を中断する必要があるかどうかをチェックする(ステップS98)。本処理ルーチンを終了する。MOVE動作の中断が必要となるのは、ユーザや他のアプリケーションから中断の要求がある場合、タイムアウトした場合などである。MOVE動作を中断する必要があるときには、本処理ルーチンを終了する。
【0173】
また、MOVE動作を中断する必要がないときには(ステップS98のNo)、Sinkに既に送信したデータが図19に示した処理手順に従って最後まで無効化されたかどうかをチェックする(ステップS99)、最後まで無効化されているときには本処理ルーチンを終了する。最後まで無効化されていないときには、ステップS92に戻る。
【0174】
図23には、確約付きのINCREMENTAL MOVE動作によりSourceがSinkへコンテンツをアップロードする場合に、Sinkが実行する動作手順をフローチャートの形式で示している。
【0175】
まず、コンテンツ送信元機器となるSourceとの間で認証及び鍵交換(AKE)手続き用のTCPコネクションを確立して、AKE処理を行なう(ステップS101)。AKEに成功すると、Sourceとの間でコンテンツ伝送用のTCPコネクションを確立する。
【0176】
そして、Sinkは、Sourceからデータを正常に受信できたかどうかをチェックする(ステップS102)。なお、Sourceからのデータ受信処理と並行して、Sinkでは受信したデータの有効化処理を行なうが、図21に示した動作手順に従ってその処理が行なわれる。
【0177】
ここで、送信要求した部分のデータを正常に受信することができなかったときには(ステップS102のNo)、データの再送を行なう必要があるかどうかをチェックする(ステップS103)。データの再送が必要となるのは、タイムアウトが発生した場合や、受信データに異常がある場合、受信データが不完全な場合などである。
【0178】
データ再送が必要でなければ(ステップS103のNo)、ステップS102に戻って、正常なデータを受信するまで待機する。データ再送が必要なときは(ステップS103のYes)、既に送信されたデータの送信要求をSourceに送信した後(ステップS104)、ステップS102に戻って、正常なデータを受信するまで待機する。なお、Sourceから無効化したデータ部分の再送を行なうときは、Sinkは正常に受信できなかった部分の補完以外の目的には使用しない。
【0179】
また、送信要求した部分のデータを正常に受信することができたときには(ステップS102のYes)、受信したデータが図21に示した処理手順に従って最後まで有効化されたかどうかをチェックする(ステップS105)。最後まで有効化されていたならば、本処理ルーチンを終了する。
【0180】
有効化されていない受信データが残っているときには(ステップS105のNo)、コンテンツのMOVE動作を中断する必要があるかどうかをチェックする(ステップS106)。MOVE動作の中断が必要となるのは、ユーザや他のアプリケーションから中断の要求が発生した場合、タイムアウトした場合などである。
【0181】
MOVE動作を継続する場合には(ステップS106のNo)、ステップS72にて送信を要求したコンテンツを最後まで受信したかどうかをチェックする(ステップS109)。そして、最後まで受信していなければ、ステップS102に戻り、未送信のデータの受信処理を繰り返し行なう。また、最後まで受信していれば、ステップS105に戻り、受信データを最後まで有効化したかどうかをチェックする。
【0182】
一方、MOVE動作を中断すべき場合には(ステップS106のYes)、中断後に有効にならない範囲の先頭位置xを決定し、CANCELコマンドでxをSourceに通知するとともに(ステップS107)、Sink側では受信したコンテンツのx以降の部分のデータを無効化して(ステップS108)、本処理ルーチンを終了する。
【0183】
C−3.INCREMENTAL MOVEを実現するSinkの構成
本実施形態に係るコンテンツ伝送システムでは、CANCELコマンドを利用することで、SourceからSinkへ一旦MOVEしたコンテンツを任意の範囲で取り消すことができる。
【0184】
CANCELを実現するには、Sinkが既に受信したデータのうち、特定の時点又は任意の時点から利用不能にすることができる仕組みを持つことが前提となる。
【0185】
Sinkの概略的な機能構成は、図2を参照しながら既に説明した通りである。すなわち、DTCP−IP認証ブロック内では、AKEブロックによりSourceとの間で鍵Kxが交換される。そして、コンテンツ復号ブロックは、鍵Kxからコンテンツ復号鍵Kcを算出し、DTCP−IPコンテンツ受信ブロックでSourceから受信した暗号化コンテンツをこの復号鍵Kcで復号する。
【0186】
図24には、一旦有効化したコンテンツ・データを無効化すなわち利用不能にするためのDTCP−IP認証ブロックの機能構成例を示している。図示のDTCP−IP認証ブロックは、コンテンツ復号ブロックにて復号したコンテンツ・データを一時的に格納するコンテンツ・バッファ・ブロックと、バッファリングされたコンテンツ・データを記録するコンテンツ記録ブロックを備えている。コンテンツ管理ブロックでは、CANCELやOKなどSourceへ発行するコマンドに基づいて、コンテンツ・バッファ・ブロック並びにコンテンツ記録ブロックに格納されているコンテンツ・データの管理を行なう。
【0187】
コンテンツの保存方法として、ハード・ディスクなどの書き換え可能な記録媒体に記録されている場合と、1回のみ書き込み可能な記録媒体に記録されて書き換え不可能な場合がある。コンテンツ記録ブロックに保存されたコンテンツが書き換え可能な場合は、有効化前のコンテンツを保存して、後から有効化することもできる。一方、コンテンツ記録ブロックに保存されたコンテンツが書き換え不可の場合は、コンテンツ・データは有効化後の状態で保存する必要がある。また、コンテンツ記録ブロックを、コンテンツ復号ブロックと同様に、耐タンパ性のあるDTCP−IP認証ブロック内に配置することで、コンテンツ復号ブロックとコンテンツ記録ブロック間での復号コンテンツの漏洩の問題はなくなる。
【0188】
なお、コンテンツ再生ブロックでは、伝送内容のリアルタイム・モニタリングとしての使い方であれば、有効化前のデータをコンテンツ記録ブロックから読み出して、そのままビデオ及びオーディオ信号に変換(rendering)して、ディスプレイなどのAV出力部から映像並びに音響出力することはできる。このような復号コンテンツの再生方法は、出力とともにデータが失われるのでコンテンツのコピーには相当せず、SourceとSinkの両方に再生可能なコンテンツが重複して存在してはならないというDTCP規格に抵触しないからである。
【0189】
ここで、INCREMANTAL MOVEされたコンテンツ・データをSink側ですべてCANCELするには、コンテンツ・バッファ・ブロック内のデータに加え、コンテンツ記録ブロック内に書き込まれたデータもすべて無効化することができることが前提となる。また、コンテンツ記録ブロック内に書き込んだデータを無効化することができない場合であっても、コンテンツ・バッファ・ブロック内のデータを破棄することができるならば、その部分だけはCANCELすることが許容される。
【0190】
データ再送が必要となるケースを挙げて具体的に説明する。コンテンツ復号ブロックにより復号されたコンテンツが複数のデータ・ブロックからなり、それぞれがシーケンス・カウンタを持つとする。コンテンツ・バッファ・ブロックでは、受信したデータ・ブロックのシーケンス・カウンタが不連続であれば、その箇所のデータが欠落していることを確認することができる。この場合、最後に正常と確認されたデータ・ブロック以降をコンテンツ記録ブロックに転送する前に、再送処理を起動して欠落したデータ・ブロックをSourceに再送要求して取得し直すことで、不連続なデータをコンテンツ記録ブロックに渡すことを防止できる。
【0191】
また、Sinkが、図20並びに図23に示したように、確約付きのINCREMENTAL MOVEを実装する場合には、コンテンツ復号ブロックで復号したデータを、Sourceとの間で確約を交わすまでは無効状態でバッファリングする必要がある。
【0192】
図25には、このような仕組みを備えたコンテンツ・バッファ・ブロックの構成例を示している。図示のコンテンツ・バッファ・ブロックは、あるデータ単位を無効状態で保持することができるバッファ・メモリを1以上備えている。OKコマンドを使用した処理に要する時間も、Sourceからのコンテンツ受信や記録動作を継続する場合は、複数のバッファ・メモリを順次切り替えて使用する。
【0193】
コンテンツ復号ブロックから復号後のデータが入力されると、まず、SW1により当該単位毎に各バッファ・メモリに振り分けられ、無効状態のままバッファされる。そして、OKコマンドをSourceに送信して受信通知処理を完了したデータ単位は、SW2を経由してコンテンツ記録ブロックに供給され、有効状態として格納される。
【0194】
MOVE動作を完全にCANCELできるのは、コンテンツ・バッファ・ブロック内のすべてのデータに加え、コンテンツ記録ブロック内に書き込まれたデータもすべて無効化できる場合に限られる。また、コンテンツ記録ブロック内に書き込んだデータを無効化することができない場合であっても、コンテンツ・バッファ・ブロック内のデータを破棄することができるならば、その部分だけはCANCELすることが許容される。
【0195】
再送が必要となる場合の処理は図24の場合と同様なので、ここでは説明を省略する。
【0196】
C−4.OKコマンド、CANCELコマンド
本実施形態に係るコンテンツ伝送システムでは、INCREMENTAL MOVEを好適に実現するために、OK並びにCANCELというコマンドを定義した。これらのコマンドのフレーム・フォーマットの一例を図26に示す。
【0197】
命令コードでコマンドの種別を示し、メッセージで各コマンドのパラメータを送る。また、改竄防止用に、最後のシグニチャで命令コードとメッセージに対する電子署名を送る。但し、即時的なINCREMENTAL MOVEにおいてSinkから送るOKコマンドは、攻撃に利がないので、シグニチャを使用しないという運用形態も考えられる。
【0198】
具体的なメッセージとして、確約付きのINCREMENTAL MOVE処理においてSinkから送信するOKコマンドについては、受信し終えたデータの末尾位置を先頭からのバイト数で示すことが考えられる。一方、即時的並びに確約付きのINCREMENTAL MOVE処理においてSinkから送信するCANCELコマンドについては、コンテンツの先頭からのバイト数で位置を示し、それ以降をCANCELする範囲とすることが考えられる。
【0199】
また、シグニチャには、例えば鍵付きハッシュ値を用いることが考えられる最初に行なう認証及び鍵交換(AKE)を通してSourceとSinkだけが共有する秘密鍵に所定の演算を施し、それを鍵として上記のメッセージ及び所定の情報に対する鍵付きハッシュ値を求める。なお、所定の情報はすべてのSourceとSinkがあらかじめ知っている特定の値を初期値として使うものとする。
【0200】
OKコマンドやCANCELコマンドは、Sourceに届いたことをSink側で確実に確認することができないと、コンテンツの重複や欠落が生じてしまう。このため、実際には2相コミットメントなどの手続きを用いて、複数のやり取りを経て1つのコマンド処理を行なうことが考えられる。この場合、複数のやり取りを行なう際には上記のハッシュ対象の1つである所定の情報をSourceとSinkが同期して値を増やすなどの方法で順次切り替えることで、第3者に予測不能で且つSourceとSinkが互いに相手の正当性を確認するハッシュ値を生成することができ、トランザクションはより安全なものとなる。
【産業上の利用可能性】
【0201】
以上、特定の実施形態を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施形態の修正や代用を成し得ることは自明である。
【0202】
本発明の適用例として、SourceとSink間で行なわれるHTTPプロトコルを利用したコンテンツ伝送を挙げることができるが、本発明の要旨はこれに限定されない。著作権やその他の目的で保護が必要となる情報コンテンツを所定のコピー制御情報に従って暗号化伝送する他のあらゆるコンテンツ伝送システム、あるいはコピー制御やコンテンツの暗号化を行なわないシステムであっても、移動元にデータを残さずに機器間でデータを移動させる際に、同様に本発明を適用することができる。
【0203】
要するに、例示という形態で本発明を開示してきたのであり、本明細書の記載内容を限定的に解釈するべきではない。本発明の要旨を判断するためには、特許請求の範囲を参酌すべきである。
【図面の簡単な説明】
【0204】
【図1】図1は、本発明の一実施形態に係る情報通信システムの構成例を模式的に示した図である。
【図2】図2は、図1に示した情報通信システムにおいて、Sinkとして動作する情報通信装置の機能構成を示した図である。
【図3】図3は、図1に示した情報通信システムにおいて、Sourceとして動作する情報通信装置の機能構成を示した図である。
【図4】図4は、SourceとSinkの間でAKEに基づく鍵交換手続き、及び鍵交換により共有した鍵を利用した暗号化コンテンツ伝送を行なう仕組みを説明するための図である
【図5】図5は、PCPのデータ構造を模式的に示した図である。
【図6】図6は、PCPペイロードにパディングする様子を示した図である。
【図7】図7は、MOVEしたデータをSink側で受信した直後に利用可能にする場合のコンテンツ伝送シーケンスを模式的に示した図である。
【図8】図8は、MOVEしたデータをSink側で受信した直後に利用可能にする場合のコンテンツ伝送シーケンス(途中で障害が生じた場合)を模式的に示した図である。
【図9】図9は、受信データのある時点x以降のMOVEを取り消すためのコンテンツ伝送シーケンスを模式的に示した図である。
【図10】図10は、MOVEしたデータをSink側で受信した直後に利用可能にする場合のコンテンツ伝送シーケンスを模式的に示した図である。
【図11】図11は、即時的なINCREMENTAL MOVE動作によりSinkがSourceからコンテンツをMOVEによりダウンロードする場合に、Sourceが実行する動作手順を示したフローチャートである。
【図12】図12は、即時的なINCREMENTAL MOVE動作によりSinkがSourceからコンテンツをダウンロードする場合に、Sinkが実行する動作手順を示したフローチャートである。
【図13】即時的なINCREMENTAL MOVE動作によりSourceがSinkへコンテンツをアップロードする場合に、Sourceが実行する図13は、動作手順を示したフローチャートである。
【図14】図14は、即時的なINCREMENTAL MOVE動作によりSourceがSinkへコンテンツをアップロードする場合に、Sinkが実行する動作手順を示したフローチャートである。
【図15】図15は、受信データに関してSourceとの間で確約を経た後に、Sink側で利用可能にするようにする場合のコンテンツ伝送シーケンスを模式的に示した図である。
【図16】図16は、受信データに関してSourceとの間で確約を経た後に、Sink側で利用可能にするようにする場合のコンテンツ伝送シーケンス(途中で障害が発生した場合)を模式的に示した図である。
【図17】図17は、受信データに関してSourceとの間で確約を経た後に、Sink側で利用可能にするようにする場合のコンテンツ伝送シーケンス(MOVEをUndoする場合)を模式的に示した図である。
【図18】図18は、確約付きのINCREMENTAL MOVE動作によりSinkがSourceからコンテンツをダウンロードする場合に、Sourceが実行する動作手順を示したフローチャートである。
【図19】図19は、確約付きのINCREMENTAL MOVEを行なう際にSourceが並行して行なうデータ無効化処理の手順を示したフローチャートである。
【図20】図20は、確約付きのINCREMENTAL MOVE動作によりSinkがSourceからコンテンツをダウンロードする場合に、Sinkが実行する動作手順を示したフローチャートである。
【図21】図21は、確約付きのINCREMENTAL MOVEを行なう際にSiinkが並行して行なうデータ無効化処理の手順を示したフローチャートである。
【図22】図22は、確約付きのINCREMENTAL MOVE動作によりSourceがSinkへコンテンツをアップロードする場合に、Sourceが実行する動作手順を示したフローチャートである。
【図23】図23は、確約付きのINCREMENTAL MOVE動作によりSourceがSinkへコンテンツをアップロードする場合に、Sinkが実行する動作手順を示したフローチャートである。
【図24】図24は、一旦有効化したコンテンツ・データを無効化すなわち利用不能にするためのDTCP−IP認証ブロックの構成例を示した図である。
【図25】図25は、コンテンツ・バッファ・ブロックの構成例を示した図である。
【図26】図26は、OK並びにCANCELコマンドのフレーム・フォーマットの一例を示した図である。

【特許請求の範囲】
【請求項1】
コンテンツを送信するSourceとコンテンツを受信するSink間でコンテンツを伝送するコンテンツ伝送システムであって、
前記Sinkは、前記Sourceから受信した部分のデータを逐次有効化するとともに、前記Sourceは、前記Sinkに送信した部分のデータを逐次無効化して、コンテンツを前記Sourceから前記Sinkへ移動する、
ことを特徴とするコンテンツ伝送システム。
【請求項2】
前記Sinkは、前記Sourceから受信して有効化したコンテンツ・データの少なくとも一部を無効化して、当該データの移動の取り消しを要求し、
前記Sourceは、該取り消し要求に応じて、一旦無効化した当該送信データを有効化する、
ことを特徴とする請求項1に記載のコンテンツ伝送システム。
【請求項3】
前記Sourceは、前記Sinkからのデータを受信したことを示す所定の確約手続きに応じて送信データの無効化処理を行なう、
ことを特徴とする請求項1に記載のコンテンツ伝送システム。
【請求項4】
前記Sinkは、前記Sourceから受信して有効化したデータの範囲を指定した受領確認コマンドを送信し、
前記Sourceは、該受領確認コマンドを受信したことに応じて、指定された範囲のデータを無効化する、
ことを特徴とする請求項3に記載のコンテンツ伝送システム。
【請求項5】
前記Sinkは、前記Sourceに対して確約手続きを行なって有効化した受信データの少なくとも一部を無効化して、当該データの移動の取り消しを要求し、
前記Sourceは、該取り消し要求に応じて、確約手続きを経て一旦無効化した当該送信データを有効化する、
ことを特徴とする請求項3に記載のコンテンツ伝送システム。
【請求項6】
DTCPに従ってコンテンツを送信するSourceとして動作するコンテンツ伝送装置であって、
AKE手続きによりSinkとの間で相互認証及び鍵交換を行なう認証手段と、
送信対象となるコンテンツのデータを、前記認証手段により交換した鍵を用いて前記Sinkへ暗号化伝送するデータ伝送手段と、
前記データ伝送手段により送信された部分のデータを順次無効化するデータ無効化手段を備え、
Sinkへコンテンツを移動することを特徴とするコンテンツ伝送装置。
【請求項7】
前記Sinkからの移動取り消し要求に応じて、一旦無効化したデータを有効化するデータ有効化手段をさらに備える、
ことを特徴とする請求項6に記載のコンテンツ伝送装置。
【請求項8】
前記データ無効化手段は、前記Sinkがデータを受信したことを示す所定の確約手続きに応じて、前記データ伝送手段により送信したデータの無効化処理を行なう、
ことを特徴とする請求項6に記載のコンテンツ伝送装置。
【請求項9】
前記データ無効化手段は、有効化したデータの範囲を指定した受領確認コマンドを前記Sinkからデータを受信したことに応じて、前記データ伝送手段により送信したデータの無効化処理を行なう、
ことを特徴とする請求項8に記載のコンテンツ伝送装置。
【請求項10】
前記Sinkからの移動取り消し要求に応じて、確約手続きを経て一旦無効化したデータを有効化するデータ有効化手段をさらに備える、
ことを特徴とする請求項8に記載のコンテンツ伝送装置。
【請求項11】
DTCPに従ってコンテンツを受信するSinkとして動作するコンテンツ伝送装置であって、
AKE手続きによりSourceとの間で相互認証及び鍵交換を行なう認証手段と、
前記Sourceから送信されるコンテンツ・データを、前記認証手段により交換した鍵を用いて受信処理するデータ受信手段と、
前記データ受信手段により受信された部分のデータを順次有効化するデータ有効化手段を備え、
Sourceからコンテンツを移動することを特徴とするコンテンツ伝送装置。
【請求項12】
前記データ有効化手段により有効化されたデータの少なくとも一部を無効化するデータ無効化手段と、
前記データ無効化手段により無効化したデータの移動の取り消しを前記Sourceに要求する移動取り消し要求手段と、
をさらに備えることを特徴とする請求項11に記載のコンテンツ伝送装置。
【請求項13】
データを受信したことを前記Sourceに示す所定の確約手続きを行なう確約手続き手段をさらに備え、
前記データ有効化手段は、前記確約手続き手段による確約手続きを経て、該当するデータを有効化する、
ことを特徴とする請求項11に記載のコンテンツ伝送装置。
【請求項14】
前記確約手続き手段は、有効化したデータの範囲を指定した受領確認コマンドを前記Sourceに送信する、
ことを特徴とする請求項13に記載のコンテンツ伝送装置。
【請求項15】
前記確約手続き手段による確約手続きを行なって有効化した受信データの少なくとも一部を無効化するデータ無効化手段と、
前記データ無効化手段により無効化したデータの移動の取り消しを前記Sourceに要求する移動取り消し要求手段と、
をさらに備えることを特徴とする請求項13に記載のコンテンツ伝送装置。
【請求項16】
DTCP Sourceとしてコンテンツを送信するコンテンツ伝送方法であって、
AKE手続きによりSinkとの間で相互認証及び鍵交換を行なう認証ステップと、
送信対象となるコンテンツのデータを、前記認証ステップにおいて交換した鍵を用いて前記Sinkへ暗号化伝送するデータ伝送ステップと、
前記データ伝送ステップにおいて送信された部分のデータを順次無効化するデータ無効化ステップを備え、
Sinkへコンテンツを移動することを特徴とするコンテンツ伝送方法。
【請求項17】
DTCP Sinkとしてコンテンツを受信するコンテンツ伝送装置であって、
AKE手続きによりSourceとの間で相互認証及び鍵交換を行なう認証ステップと、
前記Sourceから送信されるコンテンツ・データを、前記認証ステップにおいて交換した鍵を用いて受信処理するデータ受信ステップと、
前記データ受信ステップにおいて受信された部分のデータを順次有効化するデータ有効化ステップを備え、
Sourceからコンテンツを移動することを特徴とするコンテンツ伝送装置。
【請求項18】
DTCP Sourceとしてコンテンツを送信するための処理をコンピュータ・システム上で実行するようにコンピュータ可読形式で記述されたコンピュータ・プログラムであって、前記コンピュータ・システムに対し、
AKE手続きによりSinkとの間で相互認証及び鍵交換を行なう認証手順と、
送信対象となるコンテンツのデータを、前記認証手順において交換した鍵を用いて前記Sinkへ暗号化伝送するデータ伝送手順と、
前記データ伝送手順において送信された部分のデータを順次無効化するデータ無効化手順を実行させ、
Sinkへコンテンツを移動することを特徴とするコンピュータ・プログラム。
【請求項19】
DTCP Sinkとしてコンテンツを受信するための処理をコンピュータ・システム上で実行するようにコンピュータ可読形式で記述されたコンピュータ・プログラムであって、前記コンピュータ・システムに対し、
AKE手続きによりSourceとの間で相互認証及び鍵交換を行なう認証手順と、
前記Sourceから送信されるコンテンツ・データを、前記認証手順において交換した鍵を用いて受信処理するデータ受信手順と、
前記データ受信手順において受信された部分のデータを順次有効化するデータ有効化手順を実行させ、
Sourceからコンテンツを移動することを特徴とするコンピュータ・プログラム。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate


【公開番号】特開2007−199890(P2007−199890A)
【公開日】平成19年8月9日(2007.8.9)
【国際特許分類】
【出願番号】特願2006−15886(P2006−15886)
【出願日】平成18年1月25日(2006.1.25)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】