説明

情報通信装置及び情報通信方法、並びにコンピュータ・プログラム

【課題】 TCPストリームから正確にAKEコマンドを抽出する。
【解決手段】 AKEコマンド抽出用情報として取得したバイト・データの1〜3バイト目からTypeフィールド及びBLCフィールドの値のチェック、AKEコマンド抽出用情報として取得したバイト・データの4バイト目の上位及び下位それぞれ4ビットから抽出されるreserver_zeroフィールド及びctype/responseフィールドの値のチェック、並びに、バイト・データの所定バイト位置から取得したsubfunctionを取得した後にBLCフィールド及びctype/responseフィールドの値をチェックする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、著作権保護若しくはその他の目的で暗号化された伝送コンテンツを受信処理する情報通信装置及び情報通信方法、並びにコンピュータ・プログラムに係り、特に、DTCPに準拠した別の情報機器との間で相互認証及び鍵交換(AKE)の手続きを実行する情報通信装置及び情報通信方法、並びにコンピュータ・プログラムに関する。
【0002】
さらに詳しくは、本発明は、IPネットワーク上で別の情報機器との間でDTCP−IPに準拠した相互認証及び鍵交換(AKE)の手続きを実行する情報通信装置及び情報通信方法、並びにコンピュータ・プログラムに係り、特に、DTCP−IPに準拠した別の情報機器から送られてくるTCPペイロードから認証用制御(AKE)コマンドを正確に抽出する情報通信装置及び情報通信方法、並びにコンピュータ・プログラムに関する。
【背景技術】
【0003】
最近、ネットワークを経由した映像や音楽などのコンテンツの流通・配信サービスが盛んに行なわれる。この種のサービスでは、CDやDVDなどのメディアの移動を必要とせず、ネットワークを経由して遠隔端末間でコンテンツ配信を行なうことができる。一方、ネットワーク経由で取り扱われるコンテンツは、著作物の1つとして、著作権法の下で無断の複製や改竄などの不正使用から保護を受ける。著作権法では、同法第30条において、個人的に又は家庭内などを使用目的とした場合の使用者本人の複製を許容する一方、同法第49条第1項においては、私的使用以外での複製物の使用を禁止している。また、デジタル・コンテンツはコピーや改竄などの不正な操作が比較的容易であることから、法的な整備だけでなく技術的な側面からも、個人的又は家庭的なコンテンツの使用を許容しながら不正使用に対する防御が必要である。
【0004】
例えば、デジタル伝送コンテンツの保護に関する業界標準であるDTCP(Digital Transmission Content Protection)では、著作権が保護された形でコンテンツを伝送させるための仕組みについて規定している(例えば、非特許文献1を参照のこと)。DTCPでは、コンテンツ伝送時における機器間の認証プロトコルと、暗号化コンテンツの伝送プロトコルについて取り決められている。その規定は、要約すれば、DTCP準拠機器はMPEG(Moving Picture Experts Group)など取り扱いが容易な圧縮コンテンツを非暗号の状態で機器外に送出しないことと、暗号化コンテンツを復号するために必要となる鍵交換を所定の相互認証及び鍵交換(Authentication and Key Exchange:AKE)アルゴリズムに従って行なうこと、並びにAKEコマンドにより鍵交換を行なう機器の範囲を制限することなどを取り決めている。
【0005】
DTCPは、原初的には、IEEE1394などを伝送路に用いたホーム・ネットワーク上におけるデジタル・コンテンツの伝送について規定したものである。最近では、IEEE1394ベースで規定されたDTCP技術をIPネットワークに移植した技術の開発が進められている(以降、この技術をDTCP−IPと呼ぶ)。
【0006】
DTCP−IPは、DTCP技術をIPネットワークに移植した同様の技術であるが、伝送路にIPネットワークを使用すること、暗号化されたコンテンツの伝送にHTTPやRTPプロトコルを使用するという点で、IEEE1394ベースで規定された本来のDTCPとは相違する。ホーム・ネットワークの多くはルータなどを経由してインターネットなどの外部の広域ネットワークに接続されているので、DTCP−IP技術の確立により、デジタル・コンテンツを保護しながらIPネットワークを利用した柔軟で効率的なコンテンツの利用が図られる。他方、IPネットワーク上にはPCを主としたさまざまな機器が接続され、データの盗聴、改竄が簡単に行なわれてしまう危険が高いことから、DTCP−IPは、コンテンツを保護しながらネットワーク伝送するためのさらなる方法を規定している(例えば、非特許文献2を参照のこと)。
【0007】
DTCP−IPに従ったコンテンツの伝送手順について以下に説明しておく。但し、DTCPに準拠した機器は2つの種類に分類される。1つはDTCP_Sourceと言い、コンテンツの要求を受理し、コンテンツを送信するサーバ機器である。もう1つはDTCP_Sinkと言い、コンテンツを要求し、コンテンツを受信し、再生若しくは記録するクライアント機器である。
【0008】
DTCP_SourceとDTCP_Sinkはまず1つのTCP/IPコネクションを確立し、機器同士の認証を行なう。この認証をDTCP認証、若しくはAKE(Authentication and Key Exchange)と言う。DTCP準拠機器には、DTLA(Digital Transmission Licensing Administrator)と呼ばれる認可組織によりユニークな機器IDや鍵が埋め込まれている。DTCP認証手続きでは、このような情報を用いて互いが正規のDTCP準拠機器であることを確かめた後、コンテンツを暗号化若しくは復号するためのDTCP_Sourceが管理している鍵をDTCP_Sink機器と共有することができる。
【0009】
そして、DTCP準拠の機器間で認証手続きが済んだ後、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)などのプロトコルを利用することができる。HTTPの手続きに従ってコンテンツを要求する場合、DTCP_SourceがHTTPサーバとなり、DTCP_SinkがHTTPクライアントとなって、コンテンツの伝送を開始する。また、RTPによる伝送を要求するとき、DTCP_SourceがRTP Senderとなり、DTCP_SinkがRTP Receiverとなってコンテンツの伝送を開始する。なお、これらの通信手続き以外にもRSTP(Real Time Streaming Protocol)などの伝送プロトコルも適用が可能である。
【0010】
HTTPでコンテンツ伝送を行なう際、DTCP認証のためのTCP/IPコネクションとは別に、HTTPのためのTCP/IPコネクションがHTTPクライアントより作成される。そして、HTTPクライアントは、通常のHTTPと全く同様の動作手順によりHTTPサーバ上のコンテンツを要求する。これに対し、HTTPサーバは、要求通りのコンテンツをHTTPレスポンスとして返す。但し、HTTPレスポンスとして伝送されるデータは、HTTPサーバすなわちDTCP_Source機器がAKE認証をした後に共有した鍵を用いてコンテンツを暗号化したデータとなっている。暗号化されたデータを受信したクライアント(DTCP_Sink)は同様に、先の認証をした後に共有した鍵によりデータを復号し、再生若しくは記録を行なうことができる。
【0011】
このように、DTCP−IPは、DTCPに準拠した機器同士で認証を行ない、DTCP認証が完了した機器同士で鍵を共有し、コンテンツを伝送する際に暗号化及び復号をすることにより、伝送路の途中におけるコンテンツの盗聴、改竄を防ぐという、IPネットワーク上においても安全なコンテンツ伝送手法を提供することができる。
【0012】
上述したように、DTCPでは、コンテンツ提供元であるサーバ(DTCP Source)とコンテンツ提供先であるクライアント(DTCP Sink)は、AKEコマンドの送受信により、認証手続きを経て鍵を共有化し、その鍵を用いて伝送路を暗号化してコンテンツの伝送を行なうことを取り決めている。ここで、DTCP、並びにDTCP−IPそれぞれにおいてAKEコマンドを伝送する手順について考察してみる。
【0013】
DTCPは、原初的には、IEEE1394を伝送路に用いたデジタル・コンテンツの伝送について規定したものである。一方、DTCP−IPは、基本的にはDTCP規格に含まれるものであるが、伝送路にIEEE1394に代えてIPネットワークを使用する点が大きな相違点となる。
【0014】
IEEE1394は基本的にはMAC(Media Access Control)レイヤに相当する。このことから、コマンド送信元のDTCP機器は、個々のAKEコマンドをそれぞれ1つのMACフレームに乗せて転送すればよく、コマンド受信先のDTCP機器はMACフレームから1つのAKEコマンドを取り出せばよい(例えば、非特許文献3を参照のこと)。
【0015】
これに対し、DTCP−IPでは、送信データはTCPバイト・ストリームの形式をとるため、AKEコマンド送信元のDTCP機器側では、IPプロトコル層によりTCPペイロードを所定の単位となるパケットの大きさに分割し、さらにヘッダ部を付加したIPパケットにし、指定されたIPアドレス宛てに届ける(例えば、非特許文献4を参照のこと)。一方、AKEコマンド受信先となるDTCP機器側では、各IPパケットを受信すると、これをTCPバイト・ストリームに組み立て、さらにTCPバイト・ストリームからAKEコマンドを取り出さなければならない(図8を参照のこと)。
【0016】
コマンド受信側でバイト・ストリームからAKEコマンドを取り出すことができなければ、AKEによる認証手続き自体が成功せず、この結果コンテンツ鍵を共有できないことから、本来はコンテンツを利用できるDTCP機器であってもコンテンツを利用できなくなるというという問題を招来する。
【0017】
当業界において周知のように、通信プロトコルはTCPやIPといった複数のプロトコルのスタック構造をなし、これらの最上位層としてアプリケーションが位置付けられる。TCP/IP上でDTCPアプリケーションを実装するためには、TCPペイロードから個々のAKEコマンドを取り出すための明確な意図を持った処理方法が必要である。しかしながら、DTCP−IP自体ではこの種の意味のある処理方法については特に取り決めは存在しない。
【0018】
【非特許文献1】DTCP Specification Volume 1 Version 1.3 (Informational Version)http://www.dtcp.com/data/info_20040107_dtcp_Vol_1_1p3.pdf
【非特許文献2】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/
【非特許文献3】AV/C Digital Interface Command Set General Specification Version 4.1
【非特許文献4】RFC(Request For Comment) 791 INTERNET PROTOCOL
【発明の開示】
【発明が解決しようとする課題】
【0019】
本発明の目的は、著作権保護若しくはその他の目的で暗号化された伝送コンテンツを好適に受信処理することができる、優れた情報通信装置及び情報通信方法、並びにコンピュータ・プログラムを提供することにある。
【0020】
本発明のさらなる目的は、DTCPに準拠した別の情報機器との間で相互認証及び鍵交換(AKE)の手続きを好適に実行することができる、優れた情報通信装置及び情報通信方法、並びにコンピュータ・プログラムを提供することにある。
【0021】
本発明のさらなる目的は、IPネットワーク上で別の情報機器との間でDTCP−IPに準拠した相互認証及び鍵交換(AKE)の手続きを好適に実行することができる、優れた情報通信装置及び情報通信方法、並びにコンピュータ・プログラムを提供することにある。
【0022】
本発明のさらなる目的は、DTCP−IPに準拠した別の情報機器から送られてくるTCPペイロードから認証用制御(AKE)コマンドを正確に抽出することができる、優れた情報通信装置及び情報通信方法、並びにコンピュータ・プログラムを提供することにある。
【課題を解決するための手段】
【0023】
本発明は、上記課題を参酌してなされたものであり、その第1の側面は、IPネットワーク上で、DTCP−IPに準拠した他の情報通信装置との間で相互認証及び鍵交換のための認証制御用(AKE)コマンドを受信する情報通信装置であって、AKEコマンドは、先頭から順に1バイト長のTypeフィールドと、2バイト長のByte Length of Control(BLC)フィールドと、BLCフィールドに記載されたバイト長を持つControlフィールドと、AKE_Infoフィールドを備え、該他の情報通信装置からTCPストリームとして送られてくるバイト・データからAKEコマンドを抽出する際に、
受信したTCPストリームからバイト・データをAKEコマンド抽出用情報として取得するAKEコマンド抽出用情報取得手段と、
AKEコマンド抽出用情報として取得したバイト・データの1〜3バイト目からTypeフィールド及びBLCフィールドの値を取得する第1の情報取得手段と、
Typeフィールド及びBLCフィールドの値をチェックする第1の情報チェック手段と、
AKEコマンド抽出用情報として取得したバイト・データの4バイト目の上位4ビットをreserved_zeroフィールド値として取得するとともに、下位4ビットをAKEコマンドのコマンド・タイプ又はレスポンス・コードを示すctype/responseフィールド値として取得する第2の情報取得手段と、
reserved_zeroフィールド及びctype/responseフィールドの値をチェックする第2の情報チェック手段と、
AKEコマンド抽出用情報として取得したバイト・データの6バイト目をsubfunctionとして取得する第3の情報取得手段と、
BLCフィールド及びctype/responseフィールドの値をチェックする第3の情報チェック手段と、
AKEコマンド抽出用情報として取得したバイト・データからAKEコマンドを抽出するコマンド抽出手段と、
AKEコマンドを送信するコマンド送信手段と、
AKEコマンドの受信処理を起動するコマンド受信処理起動手段と、
を具備することを特徴とする情報通信装置である。
【0024】
本発明は、IPネットワーク上で著作権保護が必要となる情報コンテンツを伝送する情報通信システムに関するものであり、特に、具体的には、DTCP−IPに準拠した情報通信機器の間で相互認証及び鍵交換(AKE)のためのAKEコマンドを送受信し、相互認証及び鍵交換を経て共有した鍵を用いて暗号化コンテンツ伝送を安全に行なう情報通信システムに関する。
【0025】
DTCP−IPは、DTCPに準拠した機器同士で認証を行ない、DTCP認証が完了した機器同士で鍵を共有し、コンテンツを伝送際に暗号化及び復号をすることにより、伝送路途中におけるコンテンツの盗聴、改竄を防ぐという、IPネットワーク上においても安全なコンテンツ伝送手法を提供することができる。
【0026】
ここで、DTCPに準拠したコンテンツ伝送を実現するには、DTCP_Source機器とDTCP_Sink機器間でAKE手続きを成功裏に実施する必要がある。
【0027】
DTCPは原初的にはIEEE1394を伝送路に用いたデジタル・コンテンツの伝送を規定したものであるが、この場合、AKEコマンド毎に1つのMACフレームを用いて伝送が行なわれるので、受信側のDTCP機器では正しくAKEコマンドを読み取ることができる。
【0028】
一方、DTCP−IPでは、送信データはTCPバイト・ストリームの形式をとるため、AKEコマンド受信先となるDTCP機器側では、各IPパケットを受信すると、これをTCPバイト・ストリームに組み立て、さらにTCPバイト・ストリームからAKEコマンドを取り出さなければならない。TCPペイロードから個々のAKEコマンドを取り出すための明確な意図を持った処理方法が必要であるが、DTCP−IP自体ではこの種の意味のある処理方法については特に取り決めは存在しない。
【0029】
これに対し、本実施形態に係る情報通信装置は、AKEコマンドが先頭から順に1バイト長のTypeフィールドと、2バイト長のByte Length of Control(BLC)フィールドと、BLCフィールドに記載されたバイト長を持つControlフィールドと、AKE_Infoフィールドからなるデータ構造を備えていることに着目し、AKEコマンド抽出用情報として取得したバイト・データの1〜3バイト目からTypeフィールド及びBLCフィールドの値のチェック、AKEコマンド抽出用情報として取得したバイト・データの4バイト目の上位及び下位それぞれ4ビットから抽出されるreserver_zeroフィールド及びctype/responseフィールドの値のチェック、並びに、バイト・データの所定バイト位置から取得したsubfunctionを取得した後にBLCフィールド及びctype/responseフィールドの値をチェックすることによって、TCPストリームの形で送られてくるバイト・データから正確にAKEコマンドを抽出することができる。ここで言うAKEコマンドにはAKEコマンド・リクエストとAKEコマンド・レスポンスの両方が含まれる。
【0030】
勿論、当該情報通信装置は、受信したTCPストリームから取得したAKEコマンド抽出用情報の内容次第では、AKEコマンドを抽出することなく、取得したバイト・データを読み捨てることもある。あるいは、受信したTCPストリームから取得したAKEコマンド抽出用情報の内容に応じて、AKEコマンドを抽出せずに、AKEコマンド・レスポンスを送信することもある。
【0031】
具体的には、前記第1の情報チェック手段は、取得したTypeフィールド又はBLCフィールドの値に基づいて、AKEコマンド抽出用情報として取得したバイト・データがAKEコマンドを含むかどうかをチェックする。そして、該チェック結果が否定的であるときには、前記コマンド抽出手段はAKEコマンドを抽出せずに、取得したバイト・データを前記データ破棄手段が読み捨てるようにする。
【0032】
また、前記第2の情報チェック手段は、取得したreserved_zeroフィールド又はctype/responseフィールドの値に基づいて、AKEコマンド抽出用情報として取得したバイト・データがAKEコマンドを含むかどうかをチェックする。そして、該チェック結果が否定的であるときには、前記コマンド抽出手段はAKEコマンドを抽出せずに、取得したバイト・データを前記データ破棄手段が読み捨てるようにする。
【0033】
また、前記第3の情報チェック手段は、BLCフィールドの値が示すバイト長ではControlフィールドにsubfunctionを記載できないときには、ctype/responseフィールドの値をチェックする。
【0034】
ここで、ctype/responseフィールドの値がコマンド・タイプを示すときには、前記コマンド抽出手段はバイト・データからAKEコマンドを抽出せず、前記コマンド送信手段は、非実装であることを示すAKEコマンド・レスポンスを送信するようにする。あるいは、ctype/responseフィールドの値が非実装を示すレスポンス・コードであるときには、前記コマンド・レスポンス抽出手段は非実装レスポンスとしてAKEコマンド・レスポンスを抽出し、前記コマンド受信処理起動手段は非実装レスポンスの受信処理を起動するようにする。あるいは、ctype/responseフィールドの値が通常のレスポンス・コードであるときには、前記コマンド抽出手段はAKEコマンドを抽出せずに、取得したバイト・データを前記データ破棄手段が読み捨てるようにする。
【0035】
他方、BLCフィールドの値が示すバイト長でControlフィールドにsubfunctionを記載できるときには、前記第3の情報取得手段はAKEコマンド抽出用情報として取得したバイト・データの6バイト目をsubfunctionとして取得する。そして、前記第3の情報チェック手段は、ctype/responseフィールドの値に応じてBLCフィールドの値をチェックする。
【0036】
ここで、前記第3の情報チェック手段は、ctype/responseフィールドの値がコマンド・タイプを示すときに、前記第3の情報取得手段により取得したsubfunctionに対してBLCフィールドの値が示すControlフィールドのバイト長が期待通りであるかどうかをチェックする。そして、該チェック結果が肯定的であれば、前記コマンド抽出手段はAKEコマンド抽出用情報として取得したバイト・データからAKEコマンド・リクエストを抽出するとともに、前記コマンド受信処理起動手段がAKEコマンド・リクエストの受信処理を起動するようにする。あるいは、該チェック結果が否定的であれば、前記コマンド抽出手段はバイト・データからAKEコマンドを抽出せず、前記コマンド送信手段は、非実装であることを示すAKEコマンド・レスポンスを送信するようにする。
【0037】
また、前記第3の情報チェック手段は、ctype/responseフィールドの値が否定的でないレスポンス・コードを示すときに、前記第3の情報取得手段により取得したsubfunctionに対してBLCフィールドの値が示すControlフィールドのバイト長が期待通りであるかどうかをチェックする。そして、該チェック結果が肯定的であれば、前記コマンド抽出手段はAKEコマンド抽出用情報として取得したバイト・データからAKEコマンド・レスポンスを抽出するとともに、前記コマンド受信処理起動手段がAKEコマンド・レスポンスの受信処理を起動するようにする。あるいは、該チェック結果が否定的であれば、前記コマンド抽出手段はAKEコマンドを抽出せずに、取得したバイト・データを読み捨てるようにする。
【0038】
また、前記第3の情報チェック手段は、ctype/responseフィールドの値が否定的なレスポンス・コードを示すときに、BLCフィールドの値が示すControlフィールドのバイト長が期待通りであるかどうかをチェックする。そして、該チェック結果が肯定的であれば、前記コマンド抽出手段はAKEコマンド抽出用情報として取得したバイト・データからAKEコマンド・レスポンスを抽出するとともに、前記コマンド受信処理起動手段がAKEコマンド・レスポンスの受信処理を起動するようにする。あるいは、該チェック結果が否定的であれば、前記コマンド抽出手段はAKEコマンドを抽出せずに、取得したバイト・データを読み捨てるようにする。
【0039】
また、前記第3の情報チェック手段がctype/responseフィールドの値が非実装を示すレスポンス・コードであるときと判定したときには、前記コマンド・レスポンス抽出手段は非実装レスポンスとしてAKEコマンド・レスポンスを抽出し、前記コマンド受信処理起動手段は非実装レスポンスの受信処理を起動するようにする。
【0040】
また、本発明の第2の側面は、IPネットワーク上で、DTCP−IPに準拠した他の情報通信装置との間で相互認証及び鍵交換のための認証制御用(AKE)コマンドを受信するための処理をコンピュータ・システム上で実行するようにコンピュータ可読形式で記述されたコンピュータ・プログラムであって、AKEコマンドは、先頭から順に1バイト長のTypeフィールドと、2バイト長のByte Length of Control(BLC)フィールドと、BLCフィールドに記載されたバイト長を持つControlフィールドと、AKE_Infoフィールドを備え、該他の情報通信装置からTCPストリームとして送られてくるバイト・データからAKEコマンドを抽出する際に、前記コンピュータ・システムに対し、
受信したTCPストリームからバイト・データをAKEコマンド抽出用情報として取得するAKEコマンド抽出用情報取得手順と、
AKEコマンド抽出用情報として取得したバイト・データの1〜3バイト目からTypeフィールド及びBLCフィールドの値を取得する第1の情報取得手順と、
Typeフィールド及びBLCフィールドの値をチェックする第1の情報チェック手順と、
AKEコマンド抽出用情報として取得したバイト・データの4バイト目の上位4ビットをreserved_zeroフィールド値として取得するとともに、下位4ビットをAKEコマンドのコマンド・タイプ又はレスポンス・コードを示すctype/responseフィールド値として取得する第2の情報取得手順と、
reserved_zeroフィールド及びctype/responseフィールドの値をチェックする第2の情報チェック手順と、
AKEコマンド抽出用情報として取得したバイト・データの6バイト目をsubfunctionとして取得する第3の情報取得手順と、
BLCフィールド及びctype/responseフィールドの値をチェックする第3の情報チェック手順と、
AKEコマンド抽出用情報として取得したバイト・データからAKEコマンドを抽出するコマンド抽出手順と、
AKEコマンドを送信するコマンド送信手順と、
AKEコマンドの受信処理を起動するコマンド受信処理起動手順と、
を実行させることを特徴とするコンピュータ・プログラムである。
【0041】
本発明の第2の側面に係るコンピュータ・プログラムは、コンピュータ・システム上で所定の処理を実現するようにコンピュータ可読形式で記述されたコンピュータ・プログラムを定義したものである。換言すれば、本発明の第2の側面に係るコンピュータ・プログラムをコンピュータ・システムにインストールすることによって、コンピュータ・システム上では協働的作用が発揮され、本発明の第1の側面に係る情報通信装置と同様の作用効果を得ることができる。
【発明の効果】
【0042】
本発明によれば、DTCPに準拠した別の情報機器との間で相互認証及び鍵交換(AKE)の手続きを好適に実行することができる、優れた情報通信装置及び情報通信方法、並びにコンピュータ・プログラムを提供することができる。
【0043】
また、本発明によれば、IPネットワーク上で別の情報機器との間でDTCP−IPに準拠した相互認証及び鍵交換(AKE)の手続きを好適に実行することができる、優れた情報通信装置及び情報通信方法、並びにコンピュータ・プログラムを提供することができる。
【0044】
また、本発明によれば、DTCP−IPに準拠した別の情報機器から送られてくるTCPペイロードから認証用制御(AKE)コマンドを正確に抽出することができる、優れた情報通信装置及び情報通信方法、並びにコンピュータ・プログラムを提供することができる。
【0045】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施形態や添付する図面に基づくより詳細な説明によって明らかになるであろう。
【発明を実施するための最良の形態】
【0046】
以下、図面を参照しながら本発明の実施形態について詳解する。
【0047】
本発明は、IPネットワーク上で著作権保護が必要となる情報コンテンツを伝送する情報通信システムに関するものであり、特に、具体的には、DTCP−IPに準拠した情報通信機器の間で相互認証及び鍵交換(AKE)のためのAKEコマンドを送受信し、相互認証及び鍵交換を経て共有した鍵を用いて暗号化コンテンツ伝送を安全に行なう情報通信システムに関する。
【0048】
DTCP−IPでは、送信データはTCPバイト・ストリームの形式をとるため、AKEコマンド送信元のDTCP機器側では、IPプロトコル層によりTCPペイロードを所定の単位となるパケットの大きさに分割し、さらにヘッダ部を付加したIPパケットにし、指定されたIPアドレス宛てに届ける。一方、AKEコマンド受信先となるDTCP機器側では、各IPパケットを受信すると、これをTCPバイト・ストリームに組み立て、さらにTCPバイト・ストリームからAKEコマンドを取り出さなければならない。
【0049】
A.システム構成
DTCP−IPに従ったコンテンツ伝送は、コンテンツの要求を受理してコンテンツを送信するサーバとしてのSource機器と、コンテンツを要求し、コンテンツを受信し、再生若しくは記録するクライアントとしてのSink機器で構成される。図1には、本発明の一実施形態に係る情報通信システムの構成例を模式的に示している。
【0050】
図示の例では、Source機器A〜B、Sink機器A〜B及び中継機器A〜Cの各エンティティにより、DTCP−IP AKEシステムが構築されている。
【0051】
DTCP−IP に準拠した認証サーバであるSource機器AとDTCP−IPに準拠した認証クライアントであるSink機器Aが中継機器Aと中継機器Bを経由してネットワークで接続されている。
【0052】
また、中継機器A、中継機器B、中継機器C を経由して、DTCP−IPに準拠した認証サーバであるSource機器BやDTCP−IPに準拠した認証クライアントであるSink機器BがIPネットワークで接続されている。
【0053】
図2及び図3には、図1に示した情報通信システムにおいて、クライアント(すなわち、Sink機器)及びサーバ(すなわち、Source機器)として動作する情報通信装置の機能構成をそれぞれ模式的に示している。Sink機器とSource機器は、インターネットなどの図示しないTCP/IPネットワーク上でコネクションを確立することができ、このコネクションを利用して、認証手続きやコンテンツ伝送手続きを実行することができる。
【0054】
図2に示すSink機器は、DTCP−IP規格に準拠しており、DTCP_Sinkとして動作する。図示のクライアント機器は、機能ブロックとして、DTCP−IP認証ブロックと、DTCP−IPコンテンツ受信ブロックと、コンテンツ再生/記録ブロックを備えている。
【0055】
DTCP−IP認証ブロックは、AKEブロックと、メッセージ・ダイジェスト生成ブロックと、コンテンツ復号ブロックを備えている。
【0056】
AKEブロックは、DTCP−IPにおけるAKE機構(DTCP_Sink側)を実現するブロックでる。このAKEブロックは後述のメッセージ・ダイジェスト生成ブロックから要求されたパラメータを渡す機能も備えている。
【0057】
メッセージ・ダイジェスト生成ブロックは、指定されたアルゴリズムに従い、パラメータのメッセージ・ダイジェストを生成するブロックである。メッセージ・ダイジェストを生成するアルゴリズムはあらかじめ用意されたアルゴリズムを指定することができる。あらかじめ用意されたアルゴリズムとして、例えばMD5やSHA−1といった一方向性ハッシュ関数に関するアルゴリズムが挙げることができる(SHA−1は、MD5と同様、MD4を改良したものに相当するが、160ビットのハッシュ値を生成するので、強度はMDシリーズを上回る)。
【0058】
メッセージ・ダイジェスト生成ブロックは、DTCP−IP認証ブロックの外に公開してはならないAKEブロックが保持するパラメータのメッセージ・ダイジェストを生成できるようにAKEブロックと密に配置され、AKEブロックへパラメータを要求して取得することが可能であり、そのパラメータ若しくは外部から与えられたパラメータのメッセージ・ダイジェストを作成することができる。
【0059】
コンテンツ復号ブロックは、サーバから受信した暗号化されたコンテンツ・データをAKEで交換した鍵を用いてコンテンツの復号鍵を算出し、暗号コンテンツを復号するブロックである。ここで復号されたコンテンツは、コンテンツ再生/記録ブロックへ渡される。
【0060】
コンテンツ再生/記録ブロックは、渡されたコンテンツを、再生モードの場合は再生を行ない、記録モードの場合は保存する。
【0061】
DTCP−IPコンテンツ受信ブロックは、AKEを実施した後にコンテンツ伝送手続きを実行する処理モジュールである。図示の例では、DTCP−IPコンテンツ受信ブロックはHTTPクライアント・ブロックを持ち、HTTPクライアントとしてHTTPサーバへコンテンツを要求し、応答されたコンテンツをHTTPサーバから受信する。
【0062】
HTTPクライアント・ブロックは、HTTPリクエスト管理ブロックとHTTPレスポンス管理ブロックに分かれる。さらに、HTTPリクエスト管理ブロックは、HTTPリクエスト送信ブロックとHTTPリクエスト生成ブロックへ分かれる。
【0063】
HTTPリクエスト生成ブロックは、送信するコンテンツ伝送要求(HTTPリクエスト)を生成する。ここで生成されたHTTPリクエストは、HTTPリクエスト送信ブロックによりサーバへ送信される。
【0064】
HTTPレスポンス管理ブロックは、HTTPレスポンス受信ブロックとHTTPレスポンス解釈ブロックに分かれる。サーバから返信されるHTTPレスポンスと暗号化されたコンテンツは、HTTP受信ブロックで受信される。ここで受信したHTTPレスポンスは、HTTPレスポンス解釈ブロックでチェックされる。ここでのチェックがOKの場合は受信した暗号化コンテンツをDTCPに認証ブロック内のコンテンツ復号ブロックへ送る。また、このチェックがNGの場合は、エラー・レスポンスとしての処理を行なう。
【0065】
DTCP−IP認証ブロックとDTCP−IPコンテンツ受信ブロックは、サーバ機器との間で個別のTCP/IPコネクションを確立して、それぞれ認証手続き及びコンテンツ伝送手続きを互いに独立して実行する。
【0066】
また、図3に示すSource機器は、DTCP−IP規格に準拠しており、DTCP_Sourceとして動作する。サーバ機器は、機能ブロックとして、DTCP−IP認証ブロックと、DTCP−IPコンテンツ送信ブロックと、コンテンツ管理ブロックを備えている。
【0067】
DTCP−IP認証ブロックは、AKEブロックと、メッセージ・ダイジェスト生成ブロックと、コンテンツ暗号化ブロックを備えている。
【0068】
AKEブロックは、DTCP−IPにおけるAKE機構(DTCP_Source側)を実現するブロックである。このブロックは、後述のメッセージ・ダイジェスト生成ブロックから要求されたパラメータを渡す機能も備えている。AKEブロックは認証したDTCP_Sink機器に関する情報を認証した機器の数だけ保持し、それをクライアントからコンテンツが要求された際に認証済みのクライアントかどうかを判別するのに使用する。
【0069】
メッセージ・ダイジェスト生成ブロックは指定されたアルゴリズムに従い、パラメータのメッセージ・ダイジェストを生成するブロックである。メッセージ・ダイジェストを生成するアルゴリズムはあらかじめ用意されたアルゴリズムを指定できる。あらかじめ用意されたアルゴリズムとは、例えばMD5やSHA−1といった一方向性ハッシュ関数に関するアルゴリズムが挙げられる(同上)。
【0070】
メッセージ・ダイジェスト生成ブロックは、DTCP−IP認証ブロックの外に公開してはならないAKEブロックが保持するパラメータのメッセージ・ダイジェストを生成できるようにAKEブロックと密に配置され、AKEブロックへパラメータを要求して取得することが可能で、そのパラメータ若しくは外部から与えられたパラメータのメッセージ・ダイジェストを作成することができる。
【0071】
コンテンツ暗号化ブロックは、DTCP−IPコンテンツ送信ブロックの要求に応じて、コンテンツ管理ブロックより読み出したコンテンツ・データをAKEで交換した鍵から生成したコンテンツ鍵を用いて暗号化するブロックである。ここで復号されたコンテンツは、クライアントへ送信するために、DTCP−IPコンテンツ送信ブロックへ渡される。
【0072】
コンテンツ管理ブロックは、DTCP−IPの機構を用いて保護されるべきコンテンツを管理するブロックである。コンテンツ暗号化ブロックの読み出しに応じて、コンテンツのデータを渡す。
【0073】
DTCP−IPコンテンツ送信ブロックは、HTTPサーバ・ブロックを持ち、HTTPサーバとしてクライアントからのリクエストを受理し要求に応じた処理を実行する。
【0074】
HTTPサーバ・ブロックは、HTTPリクエスト管理ブロックとHTTPレスポンス管理ブロックに分かれる。さらに、HTTPリクエスト管理ブロックは、HTTPリクエスト受信ブロックと、HTTPリクエスト解釈ブロックに分かれる。
【0075】
HTTPリクエスト受信ブロックは、クライアントからのHTTPリクエストを受信する。受信したHTTPリクエストはHTTPリクエスト解釈ブロックに送られ、チェックされる。HTTPリクエスト解釈ブロックにおけるチェックがOKの場合、HTTPリクエストの情報をDTCP−IP認証ブロックへ通知する。
【0076】
HTTPレスポンス管理ブロックは、HTTPレスポンス生成ブロックとHTTPレスポンス送信ブロックに分かれる。
【0077】
HTTPレスポンス生成ブロックは、HTTPリクエスト解釈ブロックでのチェックがOKの場合、暗号化されたコンテンツを返すためのHTTPレスポンスを作成する。一方、HTTPリクエスト解釈ブロックでのチェックがNGの場合、エラーを返すためのHTTPレスポンスを作成する。
【0078】
HTTPレスポンス送信ブロックは、作成されたHTTPレスポンスを、要求元のクライアントへHTTPレスポンスを送信する。また、HTTPリクエスト解釈ブロックでのチェックがOKの場合には、HTTPレスポンス・ヘッダに続けて、DTCP−IP認証ブロック内のコンテンツ暗号化ブロックで暗号化したコンテンツを送信する。
【0079】
DTCP−IP認証ブロックとDTCP−IPコンテンツ送信ブロックは、Sink機器との間で個別のTCP/IPコネクションを確立して、それぞれ認証手続き及びコンテンツ伝送手続きを互いに独立して実行する。
【0080】
なお、DTCP−Sink機器及びDTCP−Source機器のいずれもがDTCP−IP認証ブロック内に持つメッセージ・ダイジェスト生成ブロックはDTCP−IP自体で規定される機能モジュールではなく、また本発明の要旨には直接関連しない。例えば、本出願人に既に譲渡されている特願2004−113459号公報にはメッセージ・ダイジェスト生成ブロックについて記述されている。
【0081】
B.HTTPを利用したコンテンツ伝送
図4には、DTCP_Source機器とDTCP_Sink機器の間でAKE手続き、及びHTTPプロトコルを利用したコンテンツ伝送を行なう仕組みを図解している。既に述べたように、DTCP_Source機器とDTCP_Sink機器の間では、AKE手続き用のTCPコネクションと、HTTPを利用したコンテンツ要求用、並びにコンテンツ鍵の確認用のTCPコネクションがそれぞれ独立して確立される(すなわち、DTCP_Source機器とDTCP_Sink機器はそれぞれ、AKE手続き用とコンテンツ伝送用、コンテンツ鍵の確認用に個別のソケット(IPアドレスとポート番号の組み合わせ)を持つ)。
【0082】
まず、AKE手続き用のTCPコネクションを確立し、同手続きが成功すると、DTCP_Source機器とDTCP_Sink機器の間では認証鍵Kauthを共有することができる。AKE手続きが終了すると、このTCPコネクションは切断される。そして、DTCP_Source機器とDTCP_Sink機器は、それぞれ内部で同様の処理を行なってKauthからコンテンツ鍵の種となる種鍵Kxを生成する。
【0083】
次いで、DTCP−Sink機器側からのコンテンツ要求などに応じて、HTTPプロトコルを用いたコンテンツ伝送用のTCPコネクションが確立される。
【0084】
DTCP_Source機器は、TCPコネクションを初期化する際に、乱数を用いてノンスNcを生成して、KxとNcを基にコンテンツ鍵Kcを生成する。そして、DTCP_Sink機器から要求されているコンテンツを、コンテンツ鍵Kcを用いて暗号化し、暗号化コンテンツとノンスNcからなるPCP(Protected Content Packet)をTCPストリーム上に乗せてDTCP_Sink機器に送信する。IPプロトコルは、TCPストリームを所定の単位となるパケットの大きさに分割し、さらにヘッダ部を付加したIPパケットにし、指定されたIPアドレス宛てに届ける。
【0085】
DTCP_Sink機器側では、DTCP_Source機器からの各IPパケットを受信すると、これをTCPストリームに組み立てる。そして、ストリームからノンスNcを取り出すと、これと認証鍵Kauthから求めた鍵Kxを用いてコンテンツ鍵Kcを算出する。そして、このコンテンツ鍵Kcを用いて受信した暗号化コンテンツを復号することができる。
【0086】
HTTPプロトコルを利用したコンテンツ伝送が終了すると、コンテンツ伝送用のTCPコネクションを適宜切断することができる。
【0087】
ここで、長大なTCPストリーム全体に渡り同じ暗号鍵を使用し続けると、鍵が解読される危険は高くなる。このため、DTCP−IPでは、Source機器は128MBのコンテンツ毎にノンスNcすなわちコンテンツ鍵Kcを更新するよう取り決められている。バイト・ストリーム中で、同じノンスNcから生成されたコンテンツ鍵Kcを用いて暗号化されたデータの範囲は、同じ鍵を用いて復号することができる復号化単位となる。
【0088】
また、バイト・ストリームの途中で復号鍵が動的に変更されることから、コンテンツ鍵の確認手続きが必要となる。そこで、DTCP_Sink機器は、コンテンツ伝送用のTCPコネクションとは別に、コンテンツ鍵の確認用のTCPコネクションをさらに確立し、DTCP_Source機器に対しコンテンツ鍵確認のための手続きを行なう。DTCP_Sink機器は、コンテンツ鍵の確認が必要になると、コンテンツ伝送用のTCPコネクションとは別に、適宜このTCPコネクションを確立する。
【0089】
但し、コンテンツ鍵の動的な変更並びにコンテンツ鍵の確認手続き自体は本発明の要旨には直接関連しないので、ここではこれ以上説明しない。
【0090】
C.TCPペイロードからの認証制御用コマンドの抽出処理
上述したように、DTCP−IPは、TCPコネクションを介してDTCPに準拠した機器同士でAKE認証を行ない、DTCP認証が完了した機器同士で鍵を共有し、コンテンツを伝送する際に暗号化及び復号をすることにより、伝送路の途中におけるコンテンツの盗聴、改竄を防ぐという、IPネットワーク上においても安全なコンテンツ伝送手法を提供することができる。
【0091】
DTCPに準拠したコンテンツ伝送を実現するには、DTCP_Source機器とDTCP_Sink機器間でDTCP−IP AKE手続きを成功裏に実施する必要がある。
【0092】
AKEコマンドは、基本的にIEEE1394の上位プロトコルであるAV/C General Specificationのサブセットという位置付けである。図6には、AKEコマンドのパケット・フォーマットを示している(例えば、非特許文献2を参照のこと)。同図に示すように、AKEコマンドは、1バイトのTypeフィールドと、2バイトのByte Length of Control(BLC)フィールドと、BLCフィールドに記載されたバイト長を持つフィールドと、AKE_Infoフィールドからなる。
【0093】
Type、BLC、Control各フィールドの0バイト目は、DTCPをIPにマッピングするために使用される。Typeフィールドにより、当該パケットがバージョン1のAKE制御パケットであることが示される。
【0094】
ctype/responseは、当該AKEコマンドのコマンド・タイプ又はレスポンス・コードを記載するフィールドであり、DTCP仕様第8章及びAV/Cデジタル・インターフェース・コマンドによる規定と同じ値を持つ。
【0095】
Controlフィールドの1〜7バイトは、IPプロトコルで使用されない場合にはControlフィールドの7バイト目のMSBを除いては、セクション8.3.1に規定されている0〜6バイトのオペランドと同一である。
【0096】
AKEコマンドは、サブファンクションという種類に分けることができる。サブファンクションは、AKEコマンドの6バイト目のsubfunctionフィールドに記載されている。
【0097】
AKE_Infoフィールドは、セクション8.3.1に規定されているデータ・フィールドと同様である。
【0098】
AKE_labelと各制御コマンドのソース・ソケットは適当なコントローラから由来することを確認しなければならない。
【0099】
また、図7にはAKEコマンドを用いた相互認証及び鍵交換の動作シーケンスを示している(例えば、非特許文献2を参照のこと)。
【0100】
Source機器(又はSink機器)からSink機器(又はSource機器)へ、AKE status commandが送信され、これに対し、Sink機器(又はSource機器)からAKE Status responseが返され、その後、Source機器(又はSink機器)からSink機器(又はSource機器)へCHALLENGE subfunctionが送信され、これに対し、Sink機器(又はSource機器)からresponseが返される。
【0101】
続いて、Source機器(又はSink機器)からSink機器(又はSource機器)へ、RESPONSE subfunctionが送信され、これに対し、Sink機器(又はSource機器)からAKE Status responseが返される。
【0102】
その後、Source機器からSink機器へ、EXCHANGE_KEY subfunctionが送信され、これに対し、Sink機器からresponseが返される。
【0103】
続いて、Source機器からSink機器へ、SRM subfunctionが送信され、これに対し、Sink機器からresponseが返される。
【0104】
続いて、Source機器からSink機器へ、CONTENT_KEY_REQ subfunctionが送信され、これに対し、Sink機器からresponseが返される。
【0105】
但し、requestはターゲットとなる機器を制御するときに用いられ、responseはrequestを受けた機器の応答を示すときに用いられる。コマンド・タイプを持つAKEコマンドは、AKEコマンド・リクエストであり、レスポンス・コードを持つAKEコマンドはAKEコマンド・レスポンスである。
【0106】
ここで、DTCP、並びにDTCP−IPそれぞれにおいてAKEコマンドを伝送する手順について考察してみる。
【0107】
DTCPは原初的にはIEEE1394を伝送路に用いたデジタル・コンテンツの伝送を規定したものであるが、この場合、AKEコマンド毎に1つのMACフレームを用いて伝送が行なわれるので、受信側のDTCP機器では正しくAKEコマンドを読み取ることができる。
【0108】
これに対し、DTCP−IPでは、送信データはTCPバイト・ストリームの形式をとるため、AKEコマンド受信先となるDTCP機器側では、各IPパケットを受信すると、これをTCPバイト・ストリームに組み立て、さらにTCPバイト・ストリームからAKEコマンドを取り出さなければならない。
【0109】
TCPペイロードから個々のAKEコマンドを取り出すための明確な意図を持った処理方法が必要であるが、DTCP−IP自体ではこの種の意味のある処理方法については特に取り決めは存在しない。そこで、以下では、TCPペイロードから認証制御用のコマンドを正確に抽出するための処理手順について説明する。
【0110】
但し、以下の説明では、AKEコマンドをやり取りするに先立って、Source機器とSink機器の間で TCPコネクションを確立し、双方向にバイト・データを送受信できる状態になっているものとする。
【0111】
また、ここで利用するTCP/IPレイヤの処理モジュールは、ネットワークから受信したデータをソケット・バッファというバッファに溜め込むことができるものとする。TCP/IPレイヤの処理モジュールを利用する立場のモジュールは、そのソケット・バッファに溜め込まれたデータ(ネットワークを流れてきたデータ)に対し、「読み出す」という処理を行なうことでそのデータを取得することができるものとする。
【0112】
図5には、Source機器がSink機器とDTCP−IP AKEを実施する際の処理手順をフローチャートの形式で示している。以下、図6に示したAKEコマンドのパケット・フォーマットを適宜参照しながら説明する。
【0113】
なお、AKEコマンドを抽出するまでの過程ではSource機器及びSink機器で実行する処理に差はないが、以下では説明の便宜上 Source機器とSink機器に分けて考えているが、本質ではないという点を理解されたい。
【0114】
また、TCPペイロードよりAKEコマンドを抽出した以降はそのAKEコマンドの内容に対応した処理を行なうことになるが、本発明の要旨とは直接関連しないので、その処理に関する説明は省略する。
【0115】
Source機器からSink機器に対してTCPペイロードにバイト・データが格納されたTCP/IPパケット(バイト・ストリーム)が送信されると、Sink機器のソケット・バッファにバイト・データが溜め込まれ始める。このとき、Source機器、若しくはSink機器がデータ送受信を止めるまで(例えば、TCPコネクション確立が切断されるまで)、Sink機器ではTCPストリームからAKEコマンドを抽出する処理を実行する。
【0116】
まず、読み出し済みのバイト・データが、Type[0]とBLC(Byte Length Control)を取得できるだけのサイズ以上となっているかどうか、具体的には、読み出し済みのバイト・データが3(=1+2=Type[0]+BLCサイズ)以上となっているかどうかをチェックする(ステップS1)。
【0117】
ここで、読み出し済みのバイト・データがType[0]とBLCを取得できるだけのサイズ未満であった場合には、ソケット・バッファよりバイト・データを可能な限り読み出して(ステップS1−1)、ステップS1へ戻る。
【0118】
また、読み出し済みのバイト・データがType[0]とBLCを取得できるだけのサイズ以上である場合には、そのバイト・データの1バイト目をType[0]の値として、2〜3バイト目のバイト・データを連結してBLCフィールドの値として取得した後(ステップS1−2)、次ステップS2に進む。
【0119】
ステップS2では、読み出し済みのバイト・データがType[0]とBLCとBLCフィールド値の合計、すなわち、1バイトのTypeフィールドと2バイトのBLCフィールドとBLCで記述されたバイト長のControlフィールドを取得できるだけのサイズ以上となっているかどうか、具体的には、3+BLCフィールド値以上となっているかどうかをチェックする。
【0120】
ここで、読み出し済みのバイト・データがType[0]とBLCとBLCフィールド値の合計を取得できるだけのサイズ未満であった場合には、ソケット・バッファよりバイト・データを可能な限り読み出して(ステップS2−1)、ステップS2へ戻る。
【0121】
また、読み出し済みのバイト・データがType[0]とBLCとBLCフィールド値の合計を取得できるだけのサイズ以上である場合には、次ステップ3へ進む。
【0122】
ステップS3では、ステップS1−2で取得したType[0]の値が0x01かどうか、すなわち取得したバイト・データがAKEコマンドであるかどうかをチェックする。
【0123】
ここで、ステップS1−2で取得したType[0]の値が0x01でない場合には、正常なAKEコマンドでないことになる。そこで、バイト・データからのAKEコマンドの抽出を諦めて、3+BLCフィールド値分のバイト・データを読み捨てて(ステップS3−1)、ステップS1へ戻る。
【0124】
また、ステップS1−2で取得したType[0]の値が0x01である場合には、次ステップS4へ進む。
【0125】
ステップS4では、ステップS1−2で取得したBLCの値が0x0000、若しくは0x0001以上かどうか、すなわちバイト・データの4バイト目が存在するかどうかをチェックする。
【0126】
ここで、ステップS1−2で取得したBLCの値が0x0000であった場合には、Controlフィールドが0バイト長となり、正常なAKEコマンドでないことになる。そこで、バイト・データからのAKEコマンドの抽出を諦めて、3+BLC値分のバイト・データを読み捨てて(ステップS3−1)、ステップS1に戻る。
【0127】
また、ステップS1−2で取得したBLCの値が0x0001以上であった場合には、バイト・データの4バイト目以降のControlフィールドが正常に存在することになる。この場合、バイト・データの4バイト目の上位4ビットをreserved_zeroフィールドの値として、4バイト目の下位4ビットをctype/responseフィールドの値として、それぞれ取得し(ステップS4−2)、次ステップS5に進む。
【0128】
ステップS5では、ステップS4−2で取得したreserved_zeroの値が0x0かどうかをチェックする。
【0129】
ここで、ステップS4−2で取得したreserved_zeroの値が0x0でなかった場合には、正常なAKEコマンドでないので、バイト・データからのAKEコマンドの抽出を諦めて、3+BLC値分のバイト・データを読み捨てて(ステップS3−1)、ステップS1に戻る。
【0130】
また、ステップS4−2で取得したreserved_zeroの値が正しく0x0である場合には、次ステップS6に進む。
【0131】
ステップS6では、ステップS4−2で取得したctype/responseの値が、いずれかのコマンド・タイプ若しくはレスポンス・コードを示す値と一致しているかをチェックする。
【0132】
この判断ブロックでは、具体的には、0x0、0x1、0x8、0x9、0xa、0xcのいずれかと一致しているかどうかをチェックする。ちなみに、0x0は コマンド・タイプ(ctype)の“CONTROL”を表し、0x1はコマンド・タイプ(ctype)の“STATUS”を表し、0x8はレスポンス・コードの“NOT_IMPLEMENTED”を表し、0x9はレスポンス・コードの“ACCEPTED”を表し、0xaはレスポンス・コードの“REJECTED”を表し、0xcはレスポンス・コードの“STABLE”を表す。
【0133】
ここで、ステップS4−2で取得したctype/responseの値がいずれかのコマンド・タイプ若しくはレスポンス・コードを示す値とも一致していなかった場合には、正常なAKEコマンドではないので、バイト・データからのAKEコマンドの抽出を諦めて、3+BLC値分のバイト・データを読み捨てて(ステップS3−1)、ステップS1に戻る。
【0134】
また、ステップS4−2で取得したctype/responseの値がいずれかのコマンド・タイプ若しくはレスポンス・コードを示す値と一致していた場合には、次ステップS7に進む。
【0135】
ステップS7では、ステップS1−2で取得したBLCの値が0x0001、0x0002、又は0x0003以上かどうかをチェックする。
【0136】
ここで、ステップS1−2で取得したBLCの値が0x0001又は0x0002のいずれかである場合には、受信したAKEコマンドが当該DTCP機器において非実装(NOT_IMPLEMENTED)、又はAKEコマンドとして正常でない可能性がある。そこで、ステップS4−2で取得したctype/responseの値が0x0若しくは0x1、0x8、又は、0x9、0xa、0xcのいずれであるかをさらにチェックする(ステップS7−1)。
【0137】
ステップS4−2で取得したctype/responseの値が0x0若しくは0x1、すなわちコマンド・タイプのAKEコマンドであった場合には、受信したAKEコマンドが当該DTCP機器において非実装であることから、読み出していた3+BLC値分のバイト・データの処理を終了した後、このデータに対しNOT_IMPLEMENTEDレスポンスを生成し、Source機器に対して当該レスポンスを送信してから(ステップS7−1−1)、ステップS1に戻る。
【0138】
また、ステップS4−2で取得したctype/responseの値が0x8、すなわちAKEコマンドがNOT_IMPLEMENTEDのレスポンス・コードであった場合には、読み出していた3+BLC値分のバイト・データをNOT_IMPLEMENTEDであると判断し、NOT_IMPLEMENTEDのAKEコマンド・レスポンスとして抽出し(ステップS7−1−2)、処理を終了する。
【0139】
また、ステップS4−2で取得したctype/responseの値が0x9、0xa、0xcのうちいずれか、すなわち通常のレスポンス・コードを示す場合には、受信したバイト・データはAKEコマンドとして正常でないので、読み出していた3+BLC値分のバイト・データを読み捨てて、ステップS1へ戻る。
【0140】
また、ステップS1−2で取得したBLCの値が0x0003以上であった場合には、AKEコマンドとして正常なバイト長のControlフィールドを持つことになるので、そのバイト・データの6バイト目をsubfunctionフィールドの値として取得した後(ステップS7−2)、次ステップS8へ進む。
【0141】
ステップS8では、ステップS4−2で取得したctype/responseの値が0x0、0x1、0x8、0x9、0xa、0xcのいずれと一致するかをチェックする。
【0142】
ここで、ステップS4−2で取得したctype/responseの値が0x0、すなわち受信したAKEコマンドがコマンド・タイプのCONTROLであった場合には、BLCがsubfunctionに対して期待通りであるか、すなわちステップS7−2で取得したsubfunction値に対応するサブファンクション毎に規定されているサイズと、ステップS1−2で取得したBLCの値が一致しているかどうかをさらにチェックする(ステップS8−1)。
【0143】
そして、ステップS7−2で取得したsubfunction値に対応するサブファンクション毎に規定されているサイズと、ステップS1−2で取得したBLCの値が一致していない場合、若しくはsubfunction値がDTCP−IPで規定されていない値であれば、当該DTCP機器は受信したAKEコマンドを非実装であることになる。この場合には、読み出していた3+BLC値分のバイト・データの処理を終了すると、このデータに対しNOT_IMPLEMENTEDレスポンスを生成し、Source機器に対して当該レスポンスを送信した後(ステップS7−1−1)、ステップS1に戻る。
【0144】
一方、ステップS8−1でサイズが一致すると判定された場合には、読み出していた3+BLCフィールド値分のバイト・データを、当該サブファンクションによるAKEコマンド・リクエストであると判断し、AKEコマンド・リクエストとして抽出して、処理を終了する。その後、AKEコマンド・リクエスト受信処理を行ないつつ(ステップS8−1−2)、ステップS1へ戻る。
【0145】
また、ステップS8において、ステップS4−2で取得したctype/responseの値が0x1、すなわちAKEコマンドがコマンド・タイプのSTATUSであると判定された場合にも、ステップS7−2で取得したsubfunction値に対応するサブファンクション毎に規定されているサイズと、ステップS1−2で取得したBLCの値が一致しているかどうかをさらにチェックする(ステップS8−1)。
【0146】
この場合も、ステップS7−2で取得したsubfunction値に対応するサブファンクション毎に規定されているサイズと、ステップS1−2で取得したBLCの値が一致していない場合、若しくはsubfunction値がDTCP−IPで規定されていない値であった場合には、読み出していた3+BLC値分のバイト・データの処理を終了し、このデータに対しNOT_IMPLEMENTEDレスポンスを生成し、Source機器に対して当該レスポンスを送信した後(ステップS7−1−1)、ステップS1に戻る。一方、サイズが一致すると判定された場合には、読み出していた3+BLCフィールド値分のバイト・データを、当該サブファンクションによるAKEコマンド・リクエストであると判断し、AKEコマンド・リクエストとして抽出して、処理を終了する。その後、AKEコマンド・リクエスト受信処理を行ないつつ(ステップS8−1−2)、ステップS1へ戻る。
【0147】
また、ステップS8において、ステップS4−2で取得したctype/responseの値が0x8、すなわちAKEコマンドがレスポンス・コードのNOT_IMPLEMENTEDであると判定された場合には、読み出していた3+BLCフィールド値分のバイト・データをNOT_IMPLEMENTEDレスポンスであると判断し、NOT_IMPLEMENTEDのAKEコマンド・レスポンスとして抽出し(ステップS7−1−2)、処理を終了する。
【0148】
また、ステップS8において、ステップS4−2で取得したctype/responseの値が0x9又は0xc、すなわちAKEコマンドがACCEPTED並びにSTABLEを示すレスポンス・コードであると判定された場合には、BLCがsubfunctionに対して期待通り、すなわちステップS7−2で取得したsubfunction値に対応するサブファンクション毎に規定されているサイズと、ステップS1−2で取得したBLCの値が一致しているかどうかをさらにチェックする(ステップS8−4)。
【0149】
ここで、ステップS7−2で取得したsubfunction値に対応するサブファンクション毎に規定されているサイズと、ステップS1−2で取得したBLCの値が一致していない場合、若しくはsubfunction値がDTCP−IPで規定されていない値であった場合には、受信したバイト・データがAKEコマンドとして正常でないので、読み出していた3+BLC値分のバイト・データを読み捨てて、ステップS1に戻る。
【0150】
一方、ステップS8−4においてサイズが一致すると判断された場合には、読み出していた3+BLCフィールド値分のバイト・データを、当該サブファンクションによるAKEコマンド・リクエストであると判断し、AKEコマンド・リクエストとして抽出して、処理を終了する。その後、AKEコマンド・リクエスト受信処理を行ないつつ(ステップS8−4−2)、ステップS1へ戻る。
【0151】
また、ステップS8において、ステップS4−2で取得したctype/responseの値が0xa、すなわちレスポンス・コードのREJECTEDであると判定された場合には、ステップS1−2で取得したBLCの値がREJECTEDレスポンスでのサイズに一致しているかどうかをさらにチェックする(ステップS8−5)。
【0152】
ここで、ステップS1−2で取得したBLCの値がREJECTEDレスポンスでのサイズに一致していない場合には、受信したバイト・データがAKEコマンドとして正常でないので、読み出していた3+BLC値分のバイト・データを読み捨てて、ステップS1に戻る。
【0153】
一方、ステップS1−2で取得したBLCの値がREJECTEDレスポンスでのサイズに一致する場合には、読み出していた3+BLCフィールド値分のバイト・データを、REJECTEDのAKEコマンド・レスポンスであると判断し、REJECTEDのAKEコマンド・レスポンスとして抽出して、処理を終了する。その後、AKEコマンド・リクエスト受信処理を行ないつつ(ステップS8−5−2)、ステップS1へ戻る。
【0154】
なお、図5に示したフローチャートでは、ステップS3においてステップS1−2で取得したType[0]の値が0x01かどうかをチェックするようにしているが、ステップS3におけるチェックなしに直接ステップS4に進むようにしてもよい。
【0155】
また、ステップS5において、ステップS4−2で取得したreserved_zeroの値が0x0かどうかをチェックすることなしに、直接ステップS6に進むようにしてもよい。
【0156】
また、ステップS3においてステップS1−2で取得したType[0]の値が0x01かどうかをチェックすることなく、ステップS4へ進み、且つ、ステップS5においてreserved_zeroの値が0x0かどうかをチェックすることなしに、直接ステップS6に進むようにしてもよい。
【0157】
また、ステップS2−1では、ソケット・バッファよりバイト・データを可能な限り読み出した後にステップS2に戻るが、ステップS1に戻るようにしてもよい。
【産業上の利用可能性】
【0158】
以上、特定の実施形態を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施形態の修正や代用を成し得ることは自明である。
【0159】
本明細書では、DTCP−IPに準拠した情報通信機器の間で相互認証及び鍵交換(AKE)のためのAKEコマンドを送受信するという実施形態を例にとって説明してきたが、本発明の要旨はこれに限定されるものではない。IPプロトコルを利用したコンテンツ伝送手続きを規定したDTCP以外のシステムにおいて、TCPバイト・ストリーム上で送られてくるコマンドを受信側で取り出す際に、同様に本発明を適用することができる。
【0160】
要するに、例示という形態で本発明を開示してきたのであり、本明細書の記載内容を限定的に解釈するべきではない。本発明の要旨を判断するためには、特許請求の範囲を参酌すべきである。
【図面の簡単な説明】
【0161】
【図1】図1は、本発明の一実施形態に係る情報通信システムの構成例を模式的に示した図である。
【図2】図2は、図1に示した情報通信システムにおいて、クライアント(すなわち、Sink機器)として動作する情報通信装置の機能構成を模式的に示した図である。
【図3】図3は、図1に示した情報通信システムにおいて、サーバ(すなわち、Source機器)として動作する情報通信装置の機能構成を模式的に示した図である。
【図4】図4は、DTCP_Source機器とDTCP_Sink機器の間でAKE手続き、及びHTTPプロトコルを利用したコンテンツ伝送を行なう仕組みを示した図である。
【図5】図5は、Source機器がSink機器とDTCP−IP AKEを実施する際の処理手順を示したフローチャートである。
【図6】図6は、AKEコマンドのパケット・フォーマットを示した図である。
【図7】図7は、AKEコマンドを用いた相互認証及び鍵交換の動作シーケンスを示した図である。
【図8】図8は、DTCP、並びにDTCP−IPそれぞれにおいて伝送されるAKEコマンドを受信側の機器で取り出す仕組みを説明するための図である。

【特許請求の範囲】
【請求項1】
IPネットワーク上で、DTCP−IPに準拠した他の情報通信装置との間で相互認証及び鍵交換のための認証制御用(AKE)コマンドを受信する情報通信装置であって、AKEコマンドは、先頭から順に1バイト長のTypeフィールドと、2バイト長のByte Length of Control(BLC)フィールドと、BLCフィールドに記載されたバイト長を持つControlフィールドと、AKE_Infoフィールドを備え、該他の情報通信装置からTCPストリームとして送られてくるバイト・データからAKEコマンドを抽出する際に、
受信したTCPストリームからバイト・データをAKEコマンド抽出用情報として取得するAKEコマンド抽出用情報取得手段と、
AKEコマンド抽出用情報として取得したバイト・データの1〜3バイト目からTypeフィールド及びBLCフィールドの値を取得する第1の情報取得手段と、
Typeフィールド及びBLCフィールドの値をチェックする第1の情報チェック手段と、
AKEコマンド抽出用情報として取得したバイト・データの4バイト目の上位4ビットをreserved_zeroフィールド値として取得するとともに、下位4ビットをAKEコマンドのコマンド・タイプ又はレスポンス・コードを示すctype/responseフィールド値として取得する第2の情報取得手段と、
reserved_zeroフィールド及びctype/responseフィールドの値をチェックする第2の情報チェック手段と、
AKEコマンド抽出用情報として取得したバイト・データの6バイト目をsubfunctionとして取得する第3の情報取得手段と、
BLCフィールド及びctype/responseフィールドの値をチェックする第3の情報チェック手段と、
AKEコマンド抽出用情報として取得したバイト・データからAKEコマンドを抽出するコマンド抽出手段と、
AKEコマンドを送信するコマンド送信手段と、
AKEコマンドの受信処理を起動するコマンド受信処理起動手段と、
を具備することを特徴とする情報通信装置。
【請求項2】
受信したTCPストリームから取得したAKEコマンド抽出用情報の内容に応じて、前記コマンド抽出手段がAKEコマンドを抽出することなく、取得したバイト・データを読み捨てるデータ破棄手段をさらに備える、
ことを特徴とする請求項1に記載の情報通信装置。
【請求項3】
前記第1の情報チェック手段は、取得したTypeフィールド又はBLCフィールドの値に基づいて、AKEコマンド抽出用情報として取得したバイト・データがAKEコマンドを含むかどうかをチェックし、
該チェック結果が否定的であるとき、前記コマンド抽出手段はAKEコマンドを抽出せずに、取得したバイト・データを前記データ破棄手段が読み捨てる、
ことを特徴とする請求項2に記載の情報通信装置。
【請求項4】
前記第2の情報チェック手段は、取得したreserved_zeroフィールド又はctype/responseフィールドの値に基づいて、AKEコマンド抽出用情報として取得したバイト・データがAKEコマンドを含むかどうかをチェックし、
該チェック結果が否定的であるとき、前記コマンド抽出手段はAKEコマンドを抽出せずに、取得したバイト・データを前記データ破棄手段が読み捨てる、
ことを特徴とする請求項2に記載の情報通信装置。
【請求項5】
受信したTCPストリームから取得したAKEコマンド抽出用情報の内容に応じて、前記コマンド抽出手段はAKEコマンドを抽出せずに、前記コマンド送信手段がAKEコマンド・レスポンスを送信する、
ことを特徴とする請求項1に記載の情報通信装置。
【請求項6】
前記第3の情報チェック手段は、BLCフィールドの値が示すバイト長ではControlフィールドにsubfunctionを記載できないときには、ctype/responseフィールドの値をチェックし、
ctype/responseフィールドの値がコマンド・タイプを示すときには、前記コマンド抽出手段はバイト・データからAKEコマンドを抽出せず、前記コマンド送信手段は、非実装であることを示すAKEコマンド・レスポンスを送信し、
ctype/responseフィールドの値が非実装を示すレスポンス・コードであるときには、前記コマンド・レスポンス抽出手段は非実装レスポンスとしてAKEコマンド・レスポンスを抽出し、前記コマンド受信処理起動手段は非実装レスポンスの受信処理を起動し、
ctype/responseフィールドの値が通常のレスポンス・コードであるときには、前記コマンド抽出手段はAKEコマンドを抽出せずに、取得したバイト・データを読み捨てる、
ことを特徴とする請求項1に記載の情報通信装置。
【請求項7】
BLCフィールドの値が示すバイト長でControlフィールドにsubfunctionを記載できるときには、前記第3の情報取得手段はAKEコマンド抽出用情報として取得したバイト・データの6バイト目をsubfunctionとして取得し、
前記第3の情報チェック手段は、ctype/responseフィールドの値に応じてBLCフィールドの値をチェックする、
ことを特徴とする請求項1に記載の情報通信装置。
【請求項8】
前記第3の情報チェック手段は、ctype/responseフィールドの値がコマンド・タイプを示すときに、前記第3の情報取得手段により取得したsubfunctionに対してBLCフィールドの値が示すControlフィールドのバイト長が期待通りであるかどうかをチェックし、
該チェック結果が肯定的であれば、前記コマンド抽出手段はAKEコマンド抽出用情報として取得したバイト・データからAKEコマンド・リクエストを抽出するとともに、前記コマンド受信処理起動手段がAKEコマンド・リクエストの受信処理を起動し、
該チェック結果が否定的であれば、前記コマンド抽出手段はバイト・データからAKEコマンドを抽出せず、前記コマンド送信手段は、非実装であることを示すAKEコマンド・レスポンスを送信する、
ことを特徴とする請求項7に記載の情報通信装置。
【請求項9】
前記第3の情報チェック手段は、ctype/responseフィールドの値が否定的でないレスポンス・コードを示すときに、前記第3の情報取得手段により取得したsubfunctionに対してBLCフィールドの値が示すControlフィールドのバイト長が期待通りであるかどうかをチェックし、
該チェック結果が肯定的であれば、前記コマンド抽出手段はAKEコマンド抽出用情報として取得したバイト・データからAKEコマンド・レスポンスを抽出するとともに、前記コマンド受信処理起動手段がAKEコマンド・レスポンスの受信処理を起動し、
該チェック結果が否定的であれば、前記コマンド抽出手段はAKEコマンドを抽出せずに、取得したバイト・データを読み捨てる、
ことを特徴とする請求項7に記載の情報通信装置。
【請求項10】
前記第3の情報チェック手段は、ctype/responseフィールドの値が否定的なレスポンス・コードを示すときに、BLCフィールドの値が示すControlフィールドのバイト長が期待通りであるかどうかをチェックし、
該チェック結果が肯定的であれば、前記コマンド抽出手段はAKEコマンド抽出用情報として取得したバイト・データからAKEコマンド・レスポンスを抽出するとともに、前記コマンド受信処理起動手段がAKEコマンド・レスポンスの受信処理を起動し、
該チェック結果が否定的であれば、前記コマンド抽出手段はAKEコマンドを抽出せずに、取得したバイト・データを読み捨てる、
ことを特徴とする請求項7に記載の情報通信装置。
【請求項11】
前記第3の情報チェック手段がctype/responseフィールドの値が非実装を示すレスポンス・コードであるときと判定したときには、前記コマンド・レスポンス抽出手段は非実装レスポンスとしてAKEコマンド・レスポンスを抽出し、前記コマンド受信処理起動手段は非実装レスポンスの受信処理を起動する、
ことを特徴とする請求項7に記載の情報通信装置。
【請求項12】
IPネットワーク上で、DTCP−IPに準拠した他の情報通信装置との間で相互認証及び鍵交換のための認証制御用(AKE)コマンドを受信する情報通信方法であって、AKEコマンドは、先頭から順に1バイト長のTypeフィールドと、2バイト長のByte Length of Control(BLC)フィールドと、BLCフィールドに記載されたバイト長を持つControlフィールドと、AKE_Infoフィールドを備え、該他の情報通信装置からTCPストリームとして送られてくるバイト・データからAKEコマンドを抽出する際に、
受信したTCPストリームからバイト・データをAKEコマンド抽出用情報として取得するAKEコマンド抽出用情報取得ステップと、
AKEコマンド抽出用情報として取得したバイト・データの1〜3バイト目からTypeフィールド及びBLCフィールドの値を取得する第1の情報取得ステップと、
Typeフィールド及びBLCフィールドの値をチェックする第1の情報チェック・ステップと、
AKEコマンド抽出用情報として取得したバイト・データの4バイト目の上位4ビットをreserved_zeroフィールド値として取得するとともに、下位4ビットをAKEコマンドのコマンド・タイプ又はレスポンス・コードを示すctype/responseフィールド値として取得する第2の情報取得ステップと、
reserved_zeroフィールド及びctype/responseフィールドの値をチェックする第2の情報チェック・ステップと、
AKEコマンド抽出用情報として取得したバイト・データの6バイト目をsubfunctionとして取得する第3の情報取得ステップと、
BLCフィールド及びctype/responseフィールドの値をチェックする第3の情報チェック・ステップと、
AKEコマンド抽出用情報として取得したバイト・データからAKEコマンドを抽出するコマンド抽出ステップと、
AKEコマンドを送信するコマンド送信ステップと、
AKEコマンドの受信処理を起動するコマンド受信処理起動ステップと、
を具備することを特徴とする情報通信方法。
【請求項13】
受信したTCPストリームから取得したAKEコマンド抽出用情報の内容に応じて、前記コマンド抽出ステップによりAKEコマンドを抽出することなく、取得したバイト・データを読み捨てるデータ破棄ステップをさらに備える、
ことを特徴とする請求項12に記載の情報通信方法。
【請求項14】
前記第1の情報チェック・ステップでは、取得したTypeフィールド又はBLCフィールドの値に基づいて、AKEコマンド抽出用情報として取得したバイト・データがAKEコマンドを含むかどうかをチェックし、
該チェック結果が否定的であるとき、前記コマンド抽出ステップによりAKEコマンドを抽出せずに、取得したバイト・データを前記データ破棄ステップにおいて読み捨てる、
ことを特徴とする請求項13に記載の情報通信方法。
【請求項15】
前記第2の情報チェック・ステップでは、取得したreserved_zeroフィールド又はctype/responseフィールドの値に基づいて、AKEコマンド抽出用情報として取得したバイト・データがAKEコマンドを含むかどうかをチェックし、
該チェック結果が否定的であるとき、前記コマンド抽出ステップによりAKEコマンドを抽出せずに、取得したバイト・データを前記データ破棄ステップにおいて読み捨てる、
ことを特徴とする請求項13に記載の情報通信方法。
【請求項16】
受信したTCPストリームから取得したAKEコマンド抽出用情報の内容に応じて、前記コマンド抽出ステップによりAKEコマンドを抽出せずに、前記コマンド送信手段がAKEコマンド・レスポンスを送信する、
ことを特徴とする請求項12に記載の情報通信方法。
【請求項17】
前記第3の情報チェック・ステップでは、BLCフィールドの値が示すバイト長ではControlフィールドにsubfunctionを記載できないときには、ctype/responseフィールドの値をチェックし、
ctype/responseフィールドの値がコマンド・タイプを示すときには、前記コマンド抽出ステップによりバイト・データからAKEコマンドを抽出せず、前記コマンド送信ステップにおいて、非実装であることを示すAKEコマンド・レスポンスを送信し、
ctype/responseフィールドの値が非実装を示すレスポンス・コードであるときには、前記コマンド・レスポンス抽出ステップにより非実装レスポンスとしてAKEコマンド・レスポンスを抽出し、前記コマンド受信処理ステップにおいて非実装レスポンスの受信処理を起動し、
ctype/responseフィールドの値が通常のレスポンス・コードであるときには、前記コマンド抽出ステップによりAKEコマンドを抽出せずに、取得したバイト・データを読み捨てる、
ことを特徴とする請求項12に記載の情報通信方法。
【請求項18】
BLCフィールドの値が示すバイト長でControlフィールドにsubfunctionを記載できるときには、前記第3の情報取得ステップでは、AKEコマンド抽出用情報として取得したバイト・データの6バイト目をsubfunctionとして取得し、
前記第3の情報チェック・ステップでは、ctype/responseフィールドの値に応じてBLCフィールドの値をチェックする、
ことを特徴とする請求項12に記載の情報通信方法。
【請求項19】
前記第3の情報チェック・ステップでは、ctype/responseフィールドの値がコマンド・タイプを示すときに、前記第3の情報取得ステップにより取得したsubfunctionに対してBLCフィールドの値が示すControlフィールドのバイト長が期待通りであるかどうかをチェックし、
該チェック結果が肯定的であれば、前記コマンド抽出ステップにおいてAKEコマンド抽出用情報として取得したバイト・データからAKEコマンド・リクエストを抽出するとともに、前記コマンド受信処理起動においてAKEコマンド・リクエストの受信処理を起動し、
該チェック結果が否定的であれば、前記コマンド抽出ステップではバイト・データからAKEコマンドを抽出せず、前記コマンド送信ステップにおいて、非実装であることを示すAKEコマンド・レスポンスを送信する、
ことを特徴とする請求項18に記載の情報通信方法。
【請求項20】
前記第3の情報チェック・ステップでは、ctype/responseフィールドの値が否定的でないレスポンス・コードを示すときに、前記第3の情報取得手段により取得したsubfunctionに対してBLCフィールドの値が示すControlフィールドのバイト長が期待通りであるかどうかをチェックし、
該チェック結果が肯定的であれば、前記コマンド抽出ステップにおいて、AKEコマンド抽出用情報として取得したバイト・データからAKEコマンド・レスポンスを抽出するとともに、前記コマンド受信処理起動ステップにおいてAKEコマンド・レスポンスの受信処理を起動し、
該チェック結果が否定的であれば、前記コマンド抽出によりAKEコマンドを抽出せずに、取得したバイト・データを読み捨てる、
ことを特徴とする請求項18に記載の情報通信方法。
【請求項21】
前記第3の情報チェック・ステップでは、ctype/responseフィールドの値が否定的なレスポンス・コードを示すときに、BLCフィールドの値が示すControlフィールドのバイト長が期待通りであるかどうかをチェックし、
該チェック結果が肯定的であれば、前記コマンド抽出ステップにおいて、AKEコマンド抽出用情報として取得したバイト・データからAKEコマンド・レスポンスを抽出するとともに、前記コマンド受信処理起動ステップにおいてAKEコマンド・レスポンスの受信処理を起動し、
該チェック結果が否定的であれば、前記コマンド抽出ステップによりAKEコマンドを抽出せずに、取得したバイト・データを読み捨てる、
ことを特徴とする請求項18に記載の情報通信方法。
【請求項22】
前記第3の情報チェック・ステップにおいてctype/responseフィールドの値が非実装を示すレスポンス・コードであるときと判定したときには、前記コマンド・レスポンス抽出ステップにおいて、非実装レスポンスとしてAKEコマンド・レスポンスを抽出し、前記コマンド受信処理起動ステップにおいて非実装レスポンスの受信処理を起動する、
ことを特徴とする請求項18に記載の情報通信方法。
【請求項23】
IPネットワーク上で、DTCP−IPに準拠した他の情報通信装置との間で相互認証及び鍵交換のための認証制御用(AKE)コマンドを受信するための処理をコンピュータ・システム上で実行するようにコンピュータ可読形式で記述されたコンピュータ・プログラムであって、AKEコマンドは、先頭から順に1バイト長のTypeフィールドと、2バイト長のByte Length of Control(BLC)フィールドと、BLCフィールドに記載されたバイト長を持つControlフィールドと、AKE_Infoフィールドを備え、該他の情報通信装置からTCPストリームとして送られてくるバイト・データからAKEコマンドを抽出する際に、前記コンピュータ・システムに対し、
受信したTCPストリームからバイト・データをAKEコマンド抽出用情報として取得するAKEコマンド抽出用情報取得手順と、
AKEコマンド抽出用情報として取得したバイト・データの1〜3バイト目からTypeフィールド及びBLCフィールドの値を取得する第1の情報取得手順と、
Typeフィールド及びBLCフィールドの値をチェックする第1の情報チェック手順と、
AKEコマンド抽出用情報として取得したバイト・データの4バイト目の上位4ビットをreserved_zeroフィールド値として取得するとともに、下位4ビットをAKEコマンドのコマンド・タイプ又はレスポンス・コードを示すctype/responseフィールド値として取得する第2の情報取得手順と、
reserved_zeroフィールド及びctype/responseフィールドの値をチェックする第2の情報チェック手順と、
AKEコマンド抽出用情報として取得したバイト・データの6バイト目をsubfunctionとして取得する第3の情報取得手順と、
BLCフィールド及びctype/responseフィールドの値をチェックする第3の情報チェック手順と、
AKEコマンド抽出用情報として取得したバイト・データからAKEコマンドを抽出するコマンド抽出手順と、
AKEコマンドを送信するコマンド送信手順と、
AKEコマンドの受信処理を起動するコマンド受信処理起動手順と、
を実行させることを特徴とするコンピュータ・プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2007−36350(P2007−36350A)
【公開日】平成19年2月8日(2007.2.8)
【国際特許分類】
【出願番号】特願2005−212630(P2005−212630)
【出願日】平成17年7月22日(2005.7.22)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】