最近、ネットワークを経由した映像や音楽などのコンテンツの流通・配信サービスが盛んに行なわれる。この種のサービスでは、CDやDVDなどのメディアの移動を必要とせず、ネットワークを経由して遠隔端末間でコンテンツ配信を行なうことができる。一方、ネットワーク経由で取り扱われるコンテンツは、著作物の1つとして、著作権法の下で無断の複製や改竄などの不正使用から保護を受ける。著作権法では、同法第30条において、個人的に又は家庭内などを使用目的とした場合の使用者本人の複製を許容する一方、同法第49条第1項においては、私的使用以外での複製物の使用を禁止している。また、デジタル・コンテンツはコピーや改竄などの不正な操作が比較的容易であることから、法的な整備だけでなく技術的な側面からも、個人的又は家庭的なコンテンツの使用を許容しながら不正使用に対する防御が必要である。
例えば、デジタル伝送コンテンツの保護に関する業界標準であるDTCP(Digital Transmission Content Protection)では、著作権が保護された形でコンテンツを伝送させるための仕組みについて規定している(例えば、非特許文献1を参照のこと)。DTCPでは、コンテンツ伝送時における機器間の認証プロトコルと、暗号化コンテンツの伝送プロトコルについて取り決められている。その規定は、要約すれば、DTCP準拠機器はMPEG(Moving Picture Experts Group)など取り扱いが容易な圧縮コンテンツを非暗号の状態で機器外に送出しないことと、暗号化コンテンツを復号するために必要となる鍵交換を所定の相互認証及び鍵交換(Authentication and Key Exchange:AKE)アルゴリズムに従って行なうこと、並びにAKEコマンドにより鍵交換を行なう機器の範囲を制限することなどを取り決めている。
コンテンツ提供元であるサーバ(DTCP Source)とコンテンツ提供先であるクライアント(DTCP Sink)は、AKEコマンドの送受信により、認証手続きを経て鍵を共有化し、その鍵を用いて伝送路を暗号化してコンテンツの伝送を行なう。したがって、不正なクライアントは、サーバとの認証に成功しないと暗号鍵を取得できないから、コンテンツを享受することはできない。また、AKEコマンドを送受信する機器の台数や範囲を制限することによって、コンテンツが使用される範囲を著作権法で言うところの個人的又は家庭の範囲内に抑えることができる。
DTCPは、原初的には、IEEE1394などを伝送路に用いたホーム・ネットワーク上におけるデジタル・コンテンツの伝送について規定したものである。最近では、IEEE1394ベースで規定されたDTCP技術をIPネットワークに移植した技術の開発が進められている(以降、この技術をDTCP−IPと呼ぶ)。ホーム・ネットワークの多くはルータなどを経由してインターネットなどの外部の広域ネットワークに接続されているので、DTCP−IP技術の確立により、デジタル・コンテンツを保護しながらIPネットワークを利用した柔軟で効率的なコンテンツの利用が図られる。
DTCP−IPは、基本的にはDTCP規格に含まれ、DTCP技術をIPネットワークに移植した同様の技術であるが、伝送路にIPネットワークを使用すること、暗号化されたコンテンツの伝送にHTTPやRTPプロトコルを使用するという点で、IEEE1394ベースで規定された本来のDTCPとは相違する。また、IPネットワーク上にはPCを主としたさまざまな機器が接続され、データの盗聴、改竄が簡単に行なわれてしまう危険が高いことから、DTCP−IPは、コンテンツを保護しながらネットワーク伝送するためのさらなる方法を規定している(例えば、非特許文献2を参照のこと)。
ここで、DTCP−IPに従ったコンテンツの伝送手順について説明する。但し、DTCPに準拠した機器は2つの種類に分類される。1つはDTCP_Sourceと言い、コンテンツの要求を受理し、コンテンツを送信するサーバ機器である。もう1つはDTCP_Sinkと言い、コンテンツを要求し、コンテンツを受信し、再生若しくは記録するクライアント機器である。
図6には、DTCP_Source機器とDTCP_Sink機器の間でAKEに基づく鍵交換手続き、及び鍵交換により共有した鍵を利用した暗号化コンテンツ伝送を行なう仕組みを図解している。同図に示す例では、コンテンツ伝送にはHTTPプロトコルが利用される。
DTCP_SourceとDTCP_Sinkはまず1つのTCP/IPコネクションを確立し、機器同士の認証を行なう。この認証をDTCP認証、若しくはAKE(Authentication and Key Exchange)と言う。DTCP準拠機器には、DTLA(Digital Transmission Licensing Administrator)と呼ばれる認可組織によりユニークな機器IDや認証鍵Kauthが埋め込まれている。DTCP認証手続きでは、このような情報を用いて互いが正規のDTCP準拠機器であることを確かめた後、コンテンツを暗号化若しくは復号するためのDTCP_Sourceが管理している認証鍵KauthをDTCP_Sink機器と共有することができる。
AKE手続きが成功すると、DTCP_Source機器とDTCP_Sink機器は、それぞれ内部で同様の処理を行なってKauthからコンテンツ鍵の種となる種鍵Kxを生成する。種鍵Kxは、コンテンツ伝送時にコンテンツ鍵Kcを生成するために使用される(後述)。
そして、DTCP準拠の機器間でAKEによる認証及び鍵交換手続きが済んだ後、DTCP_SinkはDTCP_Source上のコンテンツを要求する。DTCP_Sourceは、CDS(Contents Directory Service)などを通じてDTCP_SinkにDTCP_Source上のコンテンツへのアクセス先を示すコンテンツ場所をあらかじめ伝えることができる。DTCP_Sinkがコンテンツを要求するとき、HTTP(Hyper Text Transfer Protocol)やRTP(Real Time Protocol)などのプロトコルを利用することができる。あるいは、RSTP(Real Time Streaming Protocol)などの伝送プロトコルも適用が可能である。
図6に示すようにHTTPの手続きに従ってコンテンツを要求する場合、DTCP_SourceがHTTPサーバとなり、DTCP_SinkがHTTPクライアントとなって、コンテンツの伝送を開始する。ちなみに、RTPによる伝送を要求するとき、DTCP_SourceがRTP Senderとなり、DTCP_SinkがRTP Receiverとなってコンテンツの伝送を開始する。
HTTPでコンテンツ伝送を行なう際、DTCP認証のためのTCP/IPコネクションとは別に、HTTPのためのTCP/IPコネクションがHTTPクライアントより作成される(すなわち、DTCP_Source機器とDTCP_Sink機器はそれぞれ、AKE手続き用とコンテンツ伝送用に個別のソケット(IPアドレスとポート番号の組み合わせ)を持つ)。そして、HTTPクライアントは、通常のHTTPと全く同様の動作手順によりHTTPサーバ上のコンテンツを要求する。これに対し、HTTPサーバは、要求通りのコンテンツをHTTPレスポンスとして返す。
ここで、HTTPレスポンスとして伝送されるデータは、HTTPサーバすなわちDTCP_Source機器がAKE認証をした後に共有した鍵を用いてコンテンツを暗号化したデータとなっている。
具体的には、DTCP_Source機器は、乱数を用いてノンスNcを生成して、KxとNcを基にコンテンツ鍵Kcを生成する。そして、DTCP_Sink機器から要求されているコンテンツを、コンテンツ鍵Kcを用いて暗号化し、暗号化コンテンツとノンスNcからなるPCP(Protected Content Packet)をTCPストリーム上に乗せてDTCP_Sink機器に送信する。そして、IPプロトコルは、TCPストリームを所定の単位となるパケットの大きさに分割し、さらにヘッダ部を付加したIPパケットにし、指定されたIPアドレス宛てに届ける(例えば、非特許文献3を参照のこと)。
DTCP_Sink機器側では、DTCP_Source機器からの各IPパケットを受信すると、これをTCPストリームに組み立てる。そして、ストリームからノンスNcを取り出すと、これと認証鍵Kauthから求めた鍵Kxを用いて同様にコンテンツ鍵Kcを算出し、暗号化コンテンツを復号することができる。そして、復号化した後の平文のコンテンツに対し再生若しくは記録などの処理を実施することができる。
そして、HTTPプロトコルを利用したコンテンツ伝送が終了すると、使用したTCPコネクションを適宜切断することができる。
ここで、長大なTCPストリーム全体に渡り同じ暗号鍵を使用し続けると、鍵が解読される危険は高くなる。このため、DTCP−IPでは、Source機器は128MBのコンテンツ毎にノンスNcすなわちコンテンツ鍵Kcを更新するよう取り決められている。バイト・ストリーム中で、同じノンスNcから生成されたコンテンツ鍵Kcを用いて暗号化されたデータの範囲は、同じ鍵を用いて復号することができる復号化単位となる。
また、このようにバイト・ストリームの途中で復号鍵が動的に変更されることから、コンテンツ鍵の確認手続きが必要となる。そこで、DTCP_Sink機器は、コンテンツ伝送用のTCPコネクションとは別に、コンテンツ鍵の確認用のTCPコネクションをさらに確立し、DTCP_Source機器に対しコンテンツ鍵確認のための手続きを行なう。DTCP_Sink機器は、コンテンツ鍵の確認が必要になると、適宜このTCPコネクションを確立する。
例えば、DTCP−IP Volume 1 Supplement SectionV1SE.8.6には、Content Key Confirmationについて規定している。これによれば、Sink機器は、CONT_KEY_CONF subfunctionを用いて、現在のノンスNcに関連付けられたコンテンツ鍵の確認を行なう。
DTCP−IPでは、暗号化コンテンツとノンスNcを含んだPCPというパケット形式でコンテンツ伝送が行なわれる。1つのPCPが同じ復号鍵で復号することができる復号化単位に相当する。Sink機器は、コンテンツ・ストリーム毎に、最も新しく受信したPCPのノンスNcの値を確認し、さらに動的に変更される後続のノンスについても2分間隔で再確認しなければならない。但し、Sink機器がノンスを初期確認した後に後続のノンスNcの値が単調に増大する連続的な数値であることを監視し確認する場合には、周期的なコンテンツ鍵確認の手続きを省略することができる。
Sink機器は、未確認の初期ノンスを取得すると、当該コンテンツ・ストリームに関して暗号化コンテンツの復号を終了しなければならなくなる前に、1分間だけコンテンツ鍵の確認を再試行する猶予期間が与えられる。そして、Sink機器は、この猶予期間中にノンスNcの確認に成功すると、暗号化コンテンツの復号動作を回復することができる。
図7には、コンテンツ鍵確認のためのSink機器とSource機器間の手続きを示している。但し、Rは64ビット値で、初期は乱数であるが、後続の試行では1 mod 264でインクリメントするとともに、以下の通りとする。
MX=SHA−1(Kx||Ky)
MAC3A=MAC3B=[SHA−1(MX+NcT+R)]msb80
MAC4A=MAC4B=[SHA−1(MX+NcT+R)]lsb80
(上式で、“+”はmod264の加算を意味するために使用される。)
図示のコンテンツ確認手続きでは、Sink機器は、CONT_KEY_CONFコマンドにおいて、検査用のノンスNcTをSource機器に送る。
Source機器側では、CONT_KEY_CONFコマンドを受信すると、検査用のノンスNcTを取り出して、現在のノンスNcと比較する。そして、現在のノンスNcがNcTとNcT+5の範囲にあるときには検査用のノンスNcTが有効であることを確認する。検査用のノンスNcTが有効であることを確認できたときには、さらにMAC4AとMAC4Bが等しいかどうかに基づいてコンテンツ鍵の確認を行なう。そして、コンテンツ鍵が正しかったことを示すACCEPTEDレスポンス、又は正しくなかったことを示すREJECTEDレスポンスのいずれかをSink機器に返す。
Sink機器側では、Source機器からACCEPTEDレスポンスが返されたときには、さらにMAC4AとMAC4Bが等しいかどうかに基づいてコンテンツ鍵の確認を行なう。そして、Sink機器自身でコンテンツ鍵が正しいことを確認できた場合にはSink機器はconfirmed状態になる。
一方、Source機器からACCEPTEDレスポンスが返されたがSink機器自身でのコンテンツ鍵確認に失敗した場合や、Source機器からREJECTEDレスポンスが返されたときには、Sink機器はnon−confirmation状態になる。
ここで、confirmedはCONT_KEY_CONFによりコンテンツ鍵が正しいことが確認された状態、non−confirmationはCONT_KEY_CONFによりコンテンツ鍵が不正であることが確認された状態であり、いずれもDTCP Volume 1 Supplement E SectionV1SE8.6に規定されている。
confirmed状態では、Sink機器は受信コンテンツの復号処理を継続して行なうことができる。他方、non−confirmation状態では、Sink機器は復号処理を継続できない。
図8には、Source機器がSink機器との間でコンテンツ鍵確認手続きを行なうための処理手順をフローチャートの形式で示している。
Source機器は、コンテンツ伝送先となるSink機器からコンテンツ確認を要求するCONT_KEY_CONFコマンドを受信すると(ステップS1)、コンテンツ鍵の確認を行なう(ステップS2)。具体的には、当該コマンドから検査用のノンスNcTを取り出して、現在のノンスNcと比較する。そして、現在のノンスNcがNcTとNcT+5の範囲にあるときには検査用のノンスNcTが有効であることを確認する。
そして、Source機器は、コンテンツ鍵が正しいことを確認した場合には その旨を示すACCEPTEDレスポンスをSink機器に返信するが(ステップS3)、コンテンツ鍵が不正であることを確認した場合にはその旨を示すREJECTEDレスポンスを返信する(ステップS4)。
なお、ACCEPTED並びにREJECTEDはともにDTCP Volume 1 Supplement E SectionV1SE8.6に規定されている、コマンドに対するレスポンスである。
また、図9には、Sink機器がSource機器との間でコンテンツ鍵確認手続きを行なうための処理手順をフローチャートの形式で示している。
Sink機器は、コンテンツ要求先となるSource機器に対しCONT_KEY_CONFコマンドを送信した後(ステップS11)、当該Source機器からのレスポンス受信を待機する(ステップS12)。
ここで、Source機器からACCEPTEDレスポンスを受信したときには(ステップS13)、さらにMAC4AとMAC4Bが等しいかどうかに基づいて、自らコンテンツ鍵を確認する(ステップS14)。このとき、コンテンツ鍵が正しい場合にはconfirmed(ステップS15)、コンテンツ鍵が不正である場合には non−confirmationである(ステップS17)。また、Sink機器がSource機器からREJECTEDレスポンスを受信したときには(ステップS16)、non−confirmationである(ステップS17)。
confirmedでは、Sink機器は受信コンテンツの復号処理を継続して行なうことができる。他方、non−confirmationでは、Sink機器は復号処理を継続できない(前述)。但し、Sink機器は、最初のnon−confirmationとなってから1分間はコンテンツ鍵確認手続きを繰り返すことができるので(ステップS18)、ステップS11に戻り(ステップS19)、CONT_KEY_CONFコマンドを再発行する。
コンテンツ鍵確認手続きを再試行して、1分以内にconfirmedとなれば(ステップS15)、受信コンテンツの復号処理を継続することができる。しかし、1分間non−confirmationが継続した場合には(ステップS18)、受信コンテンツの復号処理を直ちに停止しなければならない(ステップS20)。
上述したように、DTCP−IPの規格では、コンテンツ鍵確認の手続きにおいて、Sink機器がCONT_KEY_CONFコマンドを送信して、Source機器からACCEPTED又はREJECTEDといった正常なレスポンスを受信してコンテンツ鍵の確認に失敗した結果としてnon−confirmationの状態に陥ること、並びに、non−confirmation状態となったときにSink機器にはコンテンツの復号処理を停止するまでに1分間の猶予が与えられることが明記されている。したがって、Sink機器はnon−confirmationの状態になってから1分間はCONT_KEY_CONFコマンドを繰り返し送信し、この猶予期間にコマンド鍵の確認に成功すると、Sink機器はコンテンツの復号処理を停止せずに済む。
しかしながら、DTCP−IPの規格では、コンテンツ鍵確認の手続きにおいて、Sink機器がSource機器からACCEPTEDやREJECTEDなどCONT_KEY_CONFコマンドに対する正常なレスポンスを受け取ることができなかったためにコンテンツ鍵確認が成功しなかったときの処理については特に明記していない。具体的には、Sink機器がCONT_KEY_CONFコマンドを送信したのに対して、Source機器からはNOT_IMPLEMENTED(非実装)レスポンスが返された場合や、レスポンス受信待機に対してタイムアウトした場合に、Sink機器がnon−confirmation状態になることは明記されていない。
non−confirmation状態にならないことは、言い換えれば、コンテンツ鍵確認に失敗したときにSink機器に猶予期間が与えられないことになる。すなわち、Sink機器は、Source機器からNOT_IMPLEMENTEDレスポンスを受信したときやレスポンス受信待機期間がタイムアウトすると、即座にコンテンツの復号処理を停止しなければならない。そして、復号処理が停止されたコンテンツを利用したいときには、コンテンツ伝送手続きを改めて最初から実施しなければならず、1分間の猶予期間を利用してコンテンツ復号処理を再開する場合に比べると、処理が非効率的となる。
Source機器のビジー状態やネットワークの輻輳によってCONT_KEY_CONFのレスポンスが遅れることがある。しかしながら、Sink機器が通常ありえないNOT_IMPLEMENTEDを受信したときや、レスポンスに対するタイムアウトが発生したときに受信コンテンツの復号処理を直ちに停止してしまうと、Sink機器の動作として問題がある。何故ならば、Sink機器は、正しいコンテンツ鍵を持っているにも関わらず、受信コンテンツの復号処理を行うことができなくなるからである。
DTCP Specification Volume 1 Version 1.3 (Informational Version)http://www.dtcp.com/data/info_20040107_dtcp_Vol_1_1p3.pdf
DTCP Volume 1 Supplement E Mapping DTCP to IP, Version 1.0 (Informational Version)http://www.dtcp.com/data/info_20031124_dtcp_VISE_1p0.pdf/
RFC(Request For Comment) 791 INTERNET PROTOCOL
以下、図面を参照しながら本発明の実施形態について詳解する。
本発明は、TCP/IPなどのネットワーク上やファイル・システムからバイト・ストリームとして暗号データを受理して復号する情報通信システムに関する。本発明に係る情報通信システムでは、Source機器とSink機器間でTCPストリームのような長大なバイト・ストリームでコンテンツ伝送する途中でコンテンツ鍵を動的に変更し、且つ、Sink機器はSource機器に対してコンテンツ鍵の確認手続きを適宜行なう。また、この情報通信システムでは、相互認証及び鍵交換(AKE)、コンテンツ伝送、並びにコンテンツ鍵確認の手続き毎にTCPコネクションが確立される。かかるシステムの具体例は、DTCP_Source機器とDTCP_Sink機器の間で行なわれるHTTPプロトコルを利用したコンテンツ伝送である。
A.システム構成
DTCP−IPに従ったコンテンツ伝送は、コンテンツの要求を受理してコンテンツを送信するサーバとしてのSource機器と、コンテンツを要求し、コンテンツを受信し、再生若しくは記録するクライアントとしてのSink機器で構成される。図1には、本発明の一実施形態に係る情報通信システムの構成例を模式的に示している。
図示の例では、Source機器A〜B、Sink機器A〜B及び中継機器A〜Cの各エンティティにより、DTCP−IP AKEシステムが構築されている。
DTCP−IP に準拠した認証サーバであるSource機器AとDTCP−IPに準拠した認証クライアントであるSink機器Aが中継機器Aと中継機器Bを経由してネットワークで接続されている。
また、中継機器A、中継機器B、中継機器C を経由して、DTCP−IPに準拠した認証サーバであるSource機器BやDTCP−IPに準拠した認証クライアントであるSink機器BがIPネットワークで接続されている。
図2及び図3には、図1に示した情報通信システムにおいて、クライアント(すなわち、Sink機器)及びサーバ(すなわち、Source機器)として動作する情報通信装置の機能構成をそれぞれ模式的に示している。Sink機器とSource機器は、インターネットなどの図示しないTCP/IPネットワーク上でコネクションを確立することができ、このコネクションを利用して、認証手続きやコンテンツ伝送手続きを実行することができる。
図2に示すSink機器は、DTCP−IP規格に準拠しており、DTCP_Sinkとして動作する。図示のクライアント機器は、機能ブロックとして、DTCP−IP認証ブロックと、DTCP−IPコンテンツ受信ブロックと、コンテンツ再生/記録ブロックを備えている。
DTCP−IP認証ブロックは、AKEブロックと、メッセージ・ダイジェスト生成ブロックと、コンテンツ復号ブロックを備えている。
AKEブロックは、DTCP−IPにおけるAKE機構(DTCP_Sink側)を実現するブロックでる。このAKEブロックは後述のメッセージ・ダイジェスト生成ブロックから要求されたパラメータを渡す機能も備えている。
メッセージ・ダイジェスト生成ブロックは、指定されたアルゴリズムに従い、パラメータのメッセージ・ダイジェストを生成するブロックである。メッセージ・ダイジェストを生成するアルゴリズムはあらかじめ用意されたアルゴリズムを指定することができる。あらかじめ用意されたアルゴリズムとして、例えばMD5やSHA−1といった一方向性ハッシュ関数に関するアルゴリズムが挙げることができる(SHA−1は、MD5と同様、MD4を改良したものに相当するが、160ビットのハッシュ値を生成するので、強度はMDシリーズを上回る)。
メッセージ・ダイジェスト生成ブロックは、DTCP−IP認証ブロックの外に公開してはならないAKEブロックが保持するパラメータのメッセージ・ダイジェストを生成できるようにAKEブロックと密に配置され、AKEブロックへパラメータを要求して取得することが可能であり、そのパラメータ若しくは外部から与えられたパラメータのメッセージ・ダイジェストを作成することができる。
コンテンツ復号ブロックは、サーバから受信した暗号化されたコンテンツ・データをAKEで交換した鍵を用いてコンテンツの復号鍵を算出し、暗号コンテンツを復号するブロックである。ここで復号されたコンテンツは、コンテンツ再生/記録ブロックへ渡される。
コンテンツ再生/記録ブロックは、渡されたコンテンツを、再生モードの場合は再生を行ない、記録モードの場合は保存する。
DTCP−IPコンテンツ受信ブロックは、AKEを実施した後にコンテンツ伝送手続きを実行する処理モジュールである。図示の例では、DTCP−IPコンテンツ受信ブロックはHTTPクライアント・ブロックを持ち、HTTPクライアントとしてHTTPサーバへコンテンツを要求し、応答されたコンテンツをHTTPサーバから受信する。
HTTPクライアント・ブロックは、HTTPリクエスト管理ブロックとHTTPレスポンス管理ブロックに分かれる。さらに、HTTPリクエスト管理ブロックは、HTTPリクエスト送信ブロックとHTTPリクエスト生成ブロックへ分かれる。
HTTPリクエスト生成ブロックは、送信するコンテンツ伝送要求(HTTPリクエスト)を生成する。ここで生成されたHTTPリクエストは、HTTPリクエスト送信ブロックによりサーバへ送信される。
HTTPレスポンス管理ブロックは、HTTPレスポンス受信ブロックとHTTPレスポンス解釈ブロックに分かれる。サーバから返信されるHTTPレスポンスと暗号化されたコンテンツは、HTTP受信ブロックで受信される。ここで受信したHTTPレスポンスは、HTTPレスポンス解釈ブロックでチェックされる。ここでのチェックがOKの場合は受信した暗号化コンテンツをDTCP認証ブロック内のコンテンツ復号ブロックへ送る。また、このチェックがNGの場合は、エラー・レスポンスとしての処理を行なう。
DTCP−IP認証ブロックとDTCP−IPコンテンツ受信ブロックは、サーバ機器との間で個別のTCP/IPコネクションを確立して、それぞれ認証手続き及びコンテンツ伝送手続きを互いに独立して実行する。
また、図3に示すSource機器は、DTCP−IP規格に準拠しており、DTCP_Sourceとして動作する。サーバ機器は、機能ブロックとして、DTCP−IP認証ブロックと、DTCP−IPコンテンツ送信ブロックと、コンテンツ管理ブロックを備えている。
DTCP−IP認証ブロックは、AKEブロックと、メッセージ・ダイジェスト生成ブロックと、コンテンツ暗号化ブロックを備えている。
AKEブロックは、DTCP−IPにおけるAKE機構(DTCP_Source側)を実現するブロックである。このブロックは、後述のメッセージ・ダイジェスト生成ブロックから要求されたパラメータを渡す機能も備えている。AKEブロックは認証したDTCP_Sink機器に関する情報を認証した機器の数だけ保持し、それをクライアントからコンテンツが要求された際に認証済みのクライアントかどうかを判別するのに使用する。
メッセージ・ダイジェスト生成ブロックは、指定されたアルゴリズムに従い、パラメータのメッセージ・ダイジェストを生成するブロックである。メッセージ・ダイジェストを生成するアルゴリズムはあらかじめ用意されたアルゴリズムを指定できる。あらかじめ用意されたアルゴリズムとは、例えばMD5やSHA−1といった一方向性ハッシュ関数に関するアルゴリズムが挙げられる(同上)。
メッセージ・ダイジェスト生成ブロックは、DTCP−IP認証ブロックの外に公開してはならないAKEブロックが保持するパラメータのメッセージ・ダイジェストを生成できるようにAKEブロックと密に配置され、AKEブロックへパラメータを要求して取得することが可能で、そのパラメータ若しくは外部から与えられたパラメータのメッセージ・ダイジェストを作成することができる。
コンテンツ暗号化ブロックは、DTCP−IPコンテンツ送信ブロックの要求に応じて、コンテンツ管理ブロックより読み出したコンテンツ・データをAKEで交換した鍵から生成したコンテンツ鍵を用いて暗号化するブロックである。ここで復号されたコンテンツは、クライアントへ送信するために、DTCP−IPコンテンツ送信ブロックへ渡される。
コンテンツ管理ブロックは、DTCP−IPの機構を用いて保護されるべきコンテンツを管理するブロックである。コンテンツ暗号化ブロックの読み出しに応じて、コンテンツのデータを渡す。
DTCP−IPコンテンツ送信ブロックは、HTTPサーバ・ブロックを持ち、HTTPサーバとしてクライアントからのリクエストを受理し要求に応じた処理を実行する。
HTTPサーバ・ブロックは、HTTPリクエスト管理ブロックとHTTPレスポンス管理ブロックに分かれる。さらに、HTTPリクエスト管理ブロックは、HTTPリクエスト受信ブロックと、HTTPリクエスト解釈ブロックに分かれる。
HTTPリクエスト受信ブロックは、クライアントからのHTTPリクエストを受信する。受信したHTTPリクエストはHTTPリクエスト解釈ブロックに送られ、チェックされる。HTTPリクエスト解釈ブロックにおけるチェックがOKの場合、HTTPリクエストの情報をDTCP−IP認証ブロックへ通知する。
HTTPレスポンス管理ブロックは、HTTPレスポンス生成ブロックとHTTPレスポンス送信ブロックに分かれる。
HTTPレスポンス生成ブロックは、HTTPリクエスト解釈ブロックでのチェックがOKの場合、暗号化されたコンテンツを返すためのHTTPレスポンスを作成する。一方、HTTPリクエスト解釈ブロックでのチェックがNGの場合、エラーを返すためのHTTPレスポンスを作成する。
HTTPレスポンス送信ブロックは、作成されたHTTPレスポンスを、要求元のクライアントへHTTPレスポンスを送信する。また、HTTPリクエスト解釈ブロックでのチェックがOKの場合には、HTTPレスポンス・ヘッダに続けて、DTCP−IP認証ブロック内のコンテンツ暗号化ブロックで暗号化したコンテンツを送信する。
DTCP−IP認証ブロックとDTCP−IPコンテンツ送信ブロックは、Sink機器との間で個別のTCP/IPコネクションを確立して、それぞれ認証手続き及びコンテンツ伝送手続きを互いに独立して実行する。
なお、DTCP−Sink機器及びDTCP−Source機器がそれぞれDTCP−IP認証ブロック内に持つメッセージ・ダイジェスト生成ブロックは、DTCP−IP自体で規定される機能モジュールではなく、また本発明の要旨には直接関連しない。例えば、本出願人に既に譲渡されている特願2004−113459号公報には、この種のメッセージ・ダイジェスト生成ブロックについて記述されている。
B.HTTPを利用したコンテンツ伝送
DTCP−IPに準拠したコンテンツ伝送については既に説明したが、図6を参照しながらおさらいをしておく。
DTCP−IPに準拠したSource機器及びSink機器間でHTTPプロトコルを利用したコンテンツ伝送を実施する場合、TCPストリームのような長大なバイト・ストリームを途中でコンテンツ鍵を変更しながら暗号化通信が行なわれ、且つ、暗号化コンテンツの復号処理その他のコンテンツ処理を実施する際にコンテンツ鍵の確認手続きが行なわれる。また、相互認証及び鍵交換(AKE)、コンテンツ伝送、並びにコンテンツ鍵確認の手続き毎にTCPコネクションが確立される。
具体的には、AKE手続きが成功すると、DTCP_Source機器とDTCP_Sink機器は、認証鍵Kauthを共有することができ、それぞれ内部で同様の処理を行なってKauthからコンテンツ鍵の種となる種鍵Kxを生成する。Source機器は、乱数を用いてノンスNcを生成して、KxとNcを基にコンテンツ鍵Kcを生成し、Sink機器から要求されているコンテンツを、コンテンツ鍵Kcを用いて暗号化し、暗号化コンテンツとノンスNcからなるPCPをTCPストリーム上に乗せてSink機器に送信する。一方、Sink機器側では、TCPストリームからノンスNcを取り出すと、これと認証鍵Kauthから求めた鍵Kxを用いて同様にコンテンツ鍵Kcを算出し、暗号化コンテンツを復号することができる。
このように、DTCP−IPは、DTCPに準拠した機器同士で認証を行ない、DTCP認証が完了した機器同士で鍵を共有し、コンテンツを伝送する際に暗号化及び復号をすることにより、伝送路途中におけるコンテンツの盗聴、改竄を防ぐという、IPネットワーク上においても安全なコンテンツ伝送手法を提供することができる。
また、長大なTCPストリーム全体に渡り同じ暗号鍵を使用し続けると、鍵が解読される危険は高くなる。このため、Source機器は128MBのコンテンツ毎にノンスNcすなわちコンテンツ鍵Kcを更新する。そして、バイト・ストリームの途中で復号鍵が動的に変更されることから、コンテンツ鍵の確認手続きが必要となり、Sink機器は、Source機器に対しコンテンツ鍵確認のための手続きを行なう。
C.コンテンツ鍵確認手続き
コンテンツ鍵確認手続きでは、Sink機器は、検査用のノンスNcTを付加したCONT_KEY_CONFコマンドをSource機器に送る。Source機器側では、CONT_KEY_CONFコマンドを受信すると、検査用のノンスNcTを取り出して、現在のノンスNcと比較する。そして、現在のノンスNcがNcTとNcT+5の範囲にあるときには検査用のノンスNcTが有効であることを確認する。
そして、Source機器は、コンテンツ鍵が正しいことを確認した場合には その旨を示すACCEPTEDレスポンスをSink機器に返信するが、コンテンツ鍵が不正であることを確認した場合にはその旨を示すREJECTEDレスポンスを返信する(図8を参照のこと)。
一方、Sink機器は、コンテンツ要求先となるSource機器に対しCONT_KEY_CONFコマンドを送信した後、当該Source機器からのレスポンス受信を待機する。そして、Source機器からACCEPTEDレスポンスを受信したときには、さらにSink機器自身でコンテンツ鍵を確認し、コンテンツ鍵が正しい場合にはconfirmed状態となるが、コンテンツ鍵が不正である場合には non−confirmation状態となる。また、Sink機器がSource機器からREJECTEDレスポンスを受信したときにもnon−confirmation状態となる(図9を参照のこと)。
Sink機器は、non−confirmedでは、Sink機器は復号処理を継続できないが、最初のnon−confirmationとなってから1分間はコンテンツ鍵確認手続きを繰り返すことができる。そして、1分以内にconfirmedとなれば、受信コンテンツの復号処理を継続することができる。
Sink機器からのコンテンツ鍵確認要求に対するSource機器側の動作として、Source機器のビジー状態やネットワークの輻輳によってCONT_KEY_CONFコマンドのレスポンスが遅れることや、NOT_IMPLEMENTEDレスポンスが返されることも想定される。ところが、DTCP−IPでは、ACCEPTED/REJECTEDレスポンス以外の場合におけるSink機器の対処方法については明記されていない。
Sink機器が正しいコンテンツ鍵を持っている場合、レスポンスの遅延やSource機器からの通常あり得ないレスポンスによって、Sink機器側でのコンテンツ鍵確認判定が影響を受け、受信コンテンツの復号処理を行なうことができなくなると、Sink機器の動作として問題がある。
そこで、本実施形態では、Sink機器は、Source機器からNOT_IMPLEMENTEDを受信したときや、レスポンスに対するタイムアウトが発生したときに、即時に受信コンテンツの復号処理を停止するのではなく、(擬似的に)non−confirmationと判定することにより、Source機器に対してコンテンツ鍵の確認手続きを繰り返し行なうようにしている。したがって、Sink機器は、Source機器のビジー状態やネットワークの輻輳によってCONT_KEY_CONFのレスポンスの受信に遅れが生じる状況下であっても、その後にコンテンツ鍵が正しいことを確認できたときには、受信コンテンツの復号処理を継続して行なうことができる。
図4には、Sink機器において、コンテンツ鍵確認手続きを行なうための機能的構成を模式的に示している。
コマンド送信部11は、Source機器に対するコマンド送信を行なう。Source機器に対してコンテンツ鍵の確認を要求するときには、コンテンツ鍵確認用のTCPコネクションを確立して、検査用のノンスNcTを含んだCONT_KEY_CONFコマンドを送信する。
また、最初のnon−confirmationとなってから1分間はコンテンツ鍵確認手続きを繰り返すことが許容されているので、コマンド送信部11は、この猶予期間内にCONT_KEY_CONFコマンドをSource機器宛てに再度送信する。
レスポンス待機部12は、Source機器に対してコマンドを送信した後、TCPコネクション上で受信動作を行ない、Source機器からのレスポンスが届くのを待機する。
レスポンス受信部13は、送信したコマンドに対するSource機器からのレスポンスを受信処理する。送信コマンドがCONT_KEY_CONFコマンドであった場合には、Source機器からのレスポンスとして、コンテンツ鍵が正しかったことを示すACCEPTEDレスポンスと、正しくなかったことを示すREJECTEDレスポンスと、通常はあり得ないNOT_IMPLEMENTEDレスポンスが想定される。レスポンス受信部13は、受信したレスポンスがいずれであるかを解釈し、ACCEPTEDレスポンスであればコンテンツ鍵確認判定部15に通知する。また、Source機器からREJECTEDレスポンスが返されたときにはnon−confirmation状態になる。
また、DTCP−IPではACCEPTED/REJECTEDレスポンス以外の場合におけるSink機器の対処方法については明記されていないが、本実施形態では、レスポンス受信部13は、Source機器からNOT_IMPLEMENTEDレスポンスを受信したときにはnon−confirmation状態となるようにしている。
レスポンスに対するタイムアウト検出部14は、コマンド送信部からSource機器宛てにコマンドを送信してからSource機器からレスポンスが返されるまでのタイムアウトを検出する。例えば、Source機器のビジー状態やネットワークの輻輳によってレスポンスが遅れると、タイムアウトが検出される。
DTCP−IPでは、CONT_KEY_CONFコマンドのレスポンスが遅れたときのSink機器側での対処方法について特に明記していない。これに対し、本実施形態では、レスポンスに対するタイムアウト検出部14は、CONT_KEY_CONFコマンドのレスポンスが遅れたときにはnon−confirmation状態となるようにしている。
コンテンツ鍵確認判定部15は、Source機器からACCEPTEDレスポンスが返されたことをレスポンス受信部13から通知されると、MAC4AとMAC4Bが等しいかどうかに基づいてコンテンツ鍵の確認を行なう。そして、Sink機器自身でコンテンツ鍵が正しいことを確認できた場合にはSink機器はconfirmed状態になるが、Sink機器自身でのコンテンツ鍵確認に失敗した場合には、non−confirmation状態になる。
復号処理停止部16は、最初のnon−confirmationとなってから1分間にconfirmed状態とならなかった場合に、DTCP−IP認証ブロック内のコンテンツ復号ブロック(図2を参照のこと)における受信コンテンツの復号処理を停止する。
図5には、図4に示した機能的構成を備えたSink機器においてコンテンツ鍵確認手続きを行なうための処理手順をフローチャートの形式で示している。
コマンド送信部11がコンテンツ要求先となるSource機器に対しCONT_KEY_CONFコマンドを送信した後(ステップS31)、レスポンス待機部12は当該Source機器からのレスポンス受信を待機する(ステップS32)。そして、レスポンスに対するタイムアウト検出部14がタイムアウトを検出するまでは(ステップS43)、レスポンス待機部12はレスポンスの待機動作を継続する。
ここで、Source機器からレスポンスを受信したときには、レスポンス受信部13がレスポンスの種別を判定する(ステップS33)。そして、ACCEPTEDレスポンスを受信したときには(ステップS34)、コンテンツ鍵確認判定部15に通知して、コンテンツ鍵確認判定処理を起動する(ステップS35)。コンテンツ鍵確認判定部15は、MAC4AとMAC4Bが等しいかどうかに基づいてコンテンツ鍵の確認を行なう。そして、コンテンツ鍵が正しい場合にはconfirmed(ステップS36)、コンテンツ鍵が不正である場合には non−confirmationである(ステップS38)。
また、レスポンス受信部13がSource機器からREJECTEDレスポンスを受信したときには(ステップS37)、non−confirmationとなる(ステップS38)。本実施形態では、レスポンス受信部13がSource機器からNOT_IMPLEMENTEDレスポンスを受信したときにも(ステップS37)、non−confirmationとなる(ステップS38)。
また、本実施形態では、Source機器に対しCONT_KEY_CONFコマンドを送信した後、レスポンスに対するタイムアウト検出部14がタイムアウトを検出した場合にも(ステップS43)、non−confirmationとなる(ステップS38)。
confirmed状態では(ステップS36)、DTCP−IP認証ブロック内のコンテンツ復号ブロックは受信コンテンツの復号処理を継続して行なうことができる。他方、non−confirmation状態では(ステップS38)、Sink機器は復号処理を継続できない(前述)。但し、Sink機器は、最初のnon−confirmationとなってから1分間はコンテンツ鍵確認手続きを繰り返すことができるので(ステップS39)、ステップS31に戻り(ステップS40)、CONT_KEY_CONFコマンドを再発行する。
コンテンツ鍵確認手続きを再試行して、1分以内にconfirmedとなれば(ステップS36)、受信コンテンツの復号処理を継続することができる。しかし、1分間non−confirmationが継続した場合には(ステップS39)、受信コンテンツの復号処理を直ちに停止しなければならない(ステップS41)。
このように、図5に示した処理手順によれば、Sink機器は、Source機器からREJECTEDレスポンスを受信したときだけでなく、NOT_IMPLEMENTEDを受信したときや、レスポンスに対するタイムアウトが発生したときに、即時に受信コンテンツの復号処理を停止するのではなく、(擬似的に)non−confirmationと判定することにより、Source機器に対してコンテンツ鍵の確認手続きを繰り返し行なうことができる。したがって、Sink機器は、Source機器のビジー状態やネットワークの輻輳によってCONT_KEY_CONFのレスポンスの受信に遅れが生じる状況下であっても、その後にコンテンツ鍵が正しいことを確認できたときには、受信コンテンツの復号処理を継続して行なうことができる。