以下に、本発明の実施の形態について図面を参照しながら詳細に説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。従ってそれらについての詳細な説明は繰り返さない。
[パスMTUディスカバリおよびIPフラグメントについて]
はじめに、コピーコントロールされたコンテンツの伝送とは関係ないが、本発明の前提技術となるパスMTUディスカバリおよびIPフラグメントについて説明する。同一のローカルネットワークに属していない機器同士のIPネットワーク上の伝送を早くする(スループットを上げる)手段として、MTU(Maximum Transmission Unit)の最適値を見付ける方法がある。MTUとは、一度に送信できるパケットの最大値を表している。MTUの最適値を見付ける方法を図15および図16を用いて説明する。
図15は、パスMTUディスカバリの説明図である。図16は、IPフラグメントの説明図である。まず図15を参照して、機器A1501は、ルータC1502およびルータD1503を介して機器B1504に接続されている。機器A1501とルータC1502との間のMTUは1500バイト、ルータC1502とルータD1503との間のMTUは1000バイト、ルータD1503と機器B1504との間のMTUは1500バイトであるとする。
機器A1501は、たとえば、図16(a)に示すパケット長が1500バイトのパケットを機器B1504に向けて送信するとする。ルータC1502がパケットを受信すると、ルータC1502は受信したパケットをその先のルータD1503に送信しようとするが、ルータC1502とルータD1503との間のMUTが1000バイトであるため、パケット長が1500バイトのパケットをそのままでは送信することができない。そこでルータC1502は、図16(a)に示すパケット長が1500バイトのパケットを、図16(b)に示すパケット長が1000バイトのパケットとパケット長が520バイトのパケットとに分割してルータD1503に送信する。このルータC1502で行なわれるパケットの分割をフラグメント(IPフラグメント)といい、スループットを下げる要因となる。
IPフラグメントの発生をなくすためには、機器A1501から機器B1504に至るパス上での最小MTU(パスMTUと呼ばれる)を見付け、機器A1501が最初からパスMTUと同じパケット長のパケットを送信すればよい。このパスMTUを見付ける方法は、パスMTUディスカバリ(RFC1191,1981)と呼ばれている。パスMTUを見付ける方法について、再び図15を参照して説明する。
まず機器A1501は、図15(a)に示すように自機器で取り扱える最大MTUのパケット長(たとえば、1500バイト)で、IPフラグメントを禁止するDフラグを立てた(Dフラグを「1」にした)パケットを機器B1504に向けて送信する。ここで、IPフラグメントを禁止するDフラグについて図17を用いて説明する。
図17は、IPv4およびIPv6のIPヘッダの構成を示す図である。図17(a)は、IP version 4(RFC791、IPv4と呼ばれる)のIPヘッダの構成を示しており、IPフラグメントを禁止するDフラグ1701は、IPヘッダ中の1ビットに割り当てられている。Dフラグ1701が「0」のときはIPフラグメントが許可されていることを示し、「1」のときはIPフラグメントが禁止されていること示す。図17(b)は、次世代のIP version 6(RFC2460、IPv6と呼ばれる)のIPヘッダの構成を示している。IPv6のIPヘッダには、Dフラグに該当するビットが含まれていない。しかし、IPv6ではIPフラグメントを禁止しているので、常にDフラグが「1」であることと等価である。
再び図15を参照して、機器A1501は、パケット長が1500バイトで、かつIPフラグメントを禁止しているパケットを機器B1504に送信する。ルータC1502がパケットを受信すると、ルータC1502はIPフラグメントを行なわなければパケットをルータD1503に送信することができないが、パケットのIPフラグメントが禁止されているため、パケットをルータD1503に送信することができない。この場合、ルータC1502は機器A1501から受信したパケットを破棄し、パケット長がルータC1502とルータD1503との間のMTU(1000バイト)より長いことを通知するICMP(Internet Control Message Protocol、RFC792)パケットを機器A1501に送信する(図15(b))。このICMPパケットにはルータC1502が取扱うことができる最大MTUが1000バイトであるという情報が含まれている。
ICMPパケットを受信した機器A1501は、今度はパケット長が1000バイトで、かつIPフラグメントを禁止しているパケットを機器B1504に向けて送信する(図15(c))。パケットを受信したルータC1502は、今度は受信したパケットをルータD1503に送信する。このようにして機器A1501は、機器B1504までのパスMTUが1000バイトであることを知ることができる。なお、途中にあるルータの数がもっと多く、途中により小さいMTUを持つパスが存在する場合においても、図15(b)のICMPパケットの送信と、図15(c)のパケット長を短くしたパケットの送信を繰り返すことにより、パスMTUを見付けることができる。
また、コピーコントロールされたコンテンツの伝送とは関係ないが、ローカルネットワークをインターネットに接続するときのバックボーンとしてATM(Asynchronous Transfer Mode)が多く使われていることに着目し、ATMセル化を考慮した場合のMTUの最適値を求める方法も考えられている。これはATMセルのペイロード長は48バイトであり、ペイロード長が48に足りないときは、48バイトに足りない分のパディングが行なわれる。パディングされたパケットは有効なパケットではないのでスループットを下げる要因となる。このパディングが生じないMTUを見付けるためにスループットを測定する方法が使われている。
前述したパスMTUディスカバリおよびIPフラグメント等の技術については、以下の文献に示されている。
“Internet Control Message Protocol”、[online]、September 1981,RFC 792、[平成16年7月30日検索]、インターネット〈URL:http://www.ietf.org/rfc/rfc0792.txt〉
“INTERNTE PROTOCOL”、[online]、September 1981,RFC 791、[平成16年7月30日検索]、インターネット〈URL:http://www.ietf.org/rfc/rfc0791.txt〉
S.Deering et.al、“Internet Protocol,Version 6(IPv6)Specification” 、[online]、December 1998,RFC 2460[平成16年7月30日検索]、インターネット〈URL:http://www.ietf.org/rfc/rfc2460.txt〉
J. Mogul et.al、“Path MTU Discovery”、[online]、November 1990,RFC 1991、[平成16年7月30日検索]、インターネット〈URL:http://www.ietf.org/rfc/rfc1191.txt〉
J.McCann et.al、“Path MTU Discovery for IP version 6”、[online]、August 1996,RFC 1981、[平成16年7月30日検索]、インターネット〈URL:http://www.ietf.org/rfc/rfc1981.txt〉
“ATMセル化を考慮した場合の最速MTUについて”、[online]、[平成16年7月30日検索]、インターネット〈URL:http://www.geocities.jp/hamdah3502213/osugi.osg.htm〉
[実施の形態1]
前述したパスMTUディスカバリおよびIPフラグメント等の技術に基づいて家庭内のネットワーク(ローカルネットワーク)に属しているある機器(送信器)が他の機器にコピーコントロールされたコンテンツを送信しようとするとき、どのようにしてコピーコントロールされたコンテンツが家庭内のネットワーク以外の他の機器(受信器)に流出することを阻止するかについて詳しく説明する。
図1は、ネットワークの概略構成を示すブロック図である。ローカルネットワーク101,111は、たとえばイーサネット(登録商標)や無線LAN等で構築されている構内ネットワークである。図1では、少なくとも一方のローカルネットワークは家庭内のネットワークであるとする。ここでは、ローカルネットワーク101が家庭内のネットワークであるとする。
ローカルネットワーク101は、たとえば、機器102、機器103、機器104および機器105等から構成されている。ローカルネットワーク111は、たとえば、機器112、機器113、機器114および機器115等から構成されている。機器102〜105等および機器112〜115等は、たとえば、パソコン、デジカメ、デジタルビデオカメラ、DVDレコーダ等で代表されるデジタル化されたコンテンツの送受信を行なうことができる機器である。前述したように、家庭内のネットワークであるローカルネットワーク101に属している機器102〜105等同士では、コピーコントロールされたコンテンツのコピーおよびムーブが認められる。これに対して、ローカルネットワーク101に属している機器102〜105等とローカルネットワーク111に属している機器112〜115等との間では、コピーコントロールされたコンテンツのコピーおよびムーブは認められない。
ローカルネットワーク101は、たとえば、ルータ121およびルータ131(インターネット)等を介してローカルネットワーク111と接続されている。これによりローカルネットワーク101の機器(たとえば、機器102)は、ローカルネットワーク111の機器(たとえば、機器112)とコピーコントロールされていないコンテンツのやり取りは可能となっている。
なお、図1には示されていないが、ローカルネットワーク101およびローカルネットワーク111は、ルータ121およびルータ131等を介して他のローカルネットワーク等とも接続されている。
たとえば、ローカルネットワーク101の機器102が他の機器にコピーコントロールされたコンテンツを送信しようとするとき、コピーコントロールされたコンテンツが機器102の属しているローカルネットワーク101以外の機器に流出することを阻止するために、機器102は、他の機器が機器102と同一のローカルネットワーク101に属している機器であるか否かを判定する必要がある。
以下、家庭内のネットワークに属しているある機器が他の機器にコピーコントロールされたコンテンツを送信しようとするとき、コピーコントロールされたコンテンツがある機器の属している家庭内のネットワーク以外の他の機器に流出することを阻止するために、ある機器がどのようにして他の機器がある機器と同一の家庭内のネットワークに属している機器であるか否かを判定するのかについて詳しく説明する。
図2は、実施の形態1におけるシステムの概略構成を示すブロック図である。システムは、機器A201、機器B211およびネットワーク221から構成されている。ここでは、機器A201をコピーコントロールされたコンテンツを送信する機器(送信器)とし、機器B211をコピーコントロールされたコンテンツを受信する機器(受信器)として説明する。
ネットワーク221は、機器B211が機器A201と同一のローカルネットワークに属している機器であるか否かによりイーサネット(登録商標)や無線LAN等で構築されているローカルネットワークであったり、インターネット等であったりする。ここでは、ローカルネットワークは、家庭内のネットワークであるとする。
機器A201が機器B211にコピーコントロールされたコンテンツを送信しようとするとき、コピーコントロールされたコンテンツが機器A201の属しているローカルネットワーク以外の機器に流出することを阻止するために、機器A201は、機器B211が機器A201と同一のローカルネットワークに属している機器であるか否かの判定を、コピーコントロールされたコンテンツを機器B211に送信する前(認証段階)に行なう。
機器A201は、機器制御部202、送信パケット生成部203、パケット送受信部204および受信パケット解析部205を有している。機器B211は、機器A201と同じ構成であるので、ここでは主に機器A201について説明する。
機器A201の機器制御部202は、機器A201全体の動作を制御する部分である。また、機器制御部202は、機器A201の内部状態や後述するパケット解析部205から入力した解析結果に基づいて機器B211等に送信するパケットの生成等を決定し、送信パケット生成部203にパケットの生成を指示する。
また、機器A201が機器B211にコピーコントロールされたコンテンツを送信しようとするとき、機器B211が機器A201と同一のローカルネットワークに属している機器であるか否かを確認するため、機器A201の機器制御部202は認証段階において機器B211が機器A201と同一のローカルネットワークに属している機器であるか否かを確認する確認用のパケット(後述する返信パケット等)の生成を機器A201の送信パケット生成部203に対して指示する。
機器A201の送信パケット生成部203は、機器制御部202からの指示に応じてパケットを生成し、生成したパケットを機器A201のパケット送受信部204に出力する。機器A201のパケット送受信部204は、機器A201の送信パケット生成部203から入力したパケットをネットワーク221を介して接続されている機器B211に向けて送信する。また、機器A201のパケット送受信部204は、送信したパケットに対する応答パケットとして受信したパケットを機器A201の受信パケット解析部205に出力する。機器A201の受信パケット解析部205は、機器A201のパケット送受信部204から入力したパケットのパケット長、フラグの有無、パケットの種類等を解析し、解析結果を機器A201の機器制御部202に出力する。
機器A201の機器制御部202は、受信パケット解析部205から入力した解析結果に基づいて機器B211が機器A201と同一のローカルネットワークに属している機器であるか否かを判定する。機器制御部202は、機器B211が機器A201と同一のローカルネットワークに属していない機器であると判定したときは認証処理を打ち切り、機器B211にコピーコントロールされたコンテンツを送信しない。一方、機器制御部202は、機器B211が機器A201と同一のローカルネットワークに属している機器であると判定したときは、認証処理が終了した後にコピーコントロールされたコンテンツを機器B211に送信する。
以下、機器A201の機器制御部202がどのようにして機器B211が機器A201と同一のローカルネットワークに属している機器であるか否かを判定するのかについて具体的に説明する。
次に、図3を参照して、パケットフォーマットの種類について説明する。図3は、種々のメディア上でパケットを送信するときのパケットフォーマットを示す図である。
図3(a)は、イーサネット(登録商標)上でパケットを送信するときのパケットフォーマットを示している。図3(b)は、無線LAN(IEEE802.11)上でパケットを送信するときのパケットフォーマットを示している。図3(c)は、PPPoE(PPP over Ethernet(登録商標)、FRC2516)を用いたADSLやFTTH上でパケットを送信するときのパケットフォーマットを示している。
図3(a)に示すように、イーサネット(登録商標)上でパケットを送信するときのパケットフォーマットは、Ethernet(登録商標)ヘッダ301、IPヘッダ302、IPペイロード303およびFCS(Frame Check Sequence)304から構成されている。イーサネット(登録商標)上でパケットを送信するとき、一度に送信できるパケットの最大値(最大MTU)は1500バイトであり、IPヘッダ302とIPペイロード303とを合わせたパケット長が1500バイト以内となる。
図3(b)に示すように、無線LAN(IEEE802.11)上でパケットを送信するときのパケットフォーマットは、802.11ヘッダ311、LLC/SNAPフィールド312、IPヘッダ313、IPペイロード314およびFCS315から構成されている。無線LAN(IEEE802.11)上でパケットを送信するときの最大MTUは2304バイトであり、LLC/SNAPフィールド312とIPヘッダ313とIPペイロード314とを合わせたパケット長が2304バイト以内となる。無線LAN(IEEE802.11)上でパケットを送信するとき、イーサネット(登録商標)に合わせてMTUを1500バイトにすることが可能である。この場合、図3(b)に示すようにIPヘッダ313とIPペイロード314とを合わせたパケット長が1500バイト以内となる。
図3(c)に示すように、PPPoEを用いたADSLやFTTH上でパケットを送信するときのパケットフォーマットは、伝送路依存ヘッダ321、ISP依存ヘッダ322、PPPoEフィールド323、PPPフィールド324、IPヘッダ325、IPペイロード326およびFCS327から構成されている。PPPoEを用いたADSL等でパケットを送信するときの最大MTUは1500バイトであり、ISP依存ヘッダ322とPPPoEフィールド323とPPPフィールド324とIPヘッダ325とIPペイロード326とを合わせたパケット長が1500バイト以内となる。ISP依存ヘッダ322とPPPoEフィールド323とPPPフィールド324とは有限の大きさを持っているため、IPヘッダ325とIPペイロード326とを合わせたパケットの長さは必ず1500バイト未満になる。
同一のローカルネットワークに属している機器同士の通信では、一般的にはイーサネット(登録商標)や無線LANが利用されている。そのため、ある機器が送信したパケット長(IPヘッダとIPペイロードとを合わせた大きさ)が1500バイトのパケットは、途中でIPフラグメントされることなく他の機器に到達することができる。
一方、同一のローカルネットワークに属していない機器同士の通信では、一般的にはPPPoEを用いたADSL等が利用されている。そのため、ある機器が送信したパケット長(IPヘッダとIPペイロードとを合わせた大きさ)が1500バイトのパケットは、途中でIPフラグメントされなければ、他の機器に到達することができない。
このように、同一のローカルネットワークに属していない機器同士の通信で一般的に利用されているPPPoEを用いたADSL等では、パケット長が1500バイトのパケットは、途中でIPフラグメントされなければ他の機器に到達することができないという特徴を利用して、機器A201の機器制御部202は、機器B211が機器A201と同一のローカルネットワークに属している機器であるか否かを判定するのである。再び図2を参照して、詳しく説明する。
機器A201が機器B211にコピーコントロールされたコンテンツを送信しようとするとき、機器A201の機器制御部202は認証段階において機器A201の送信パケット生成部203に対してパケット長が1500バイトで、かつDフラグの値を「1」にした(IPフラグメントを禁止した)パケットの生成を指示する。
なお、このパケット長が1500バイトのパケットは、確認用のダミーのパケットでもよいし、本来送りたいパケットの後ろにパディングしてパケット長を1500バイトにしたパケットでもよい。
機器B211が機器A201と同一のローカルネットワークに属している機器であるときは、前述したように機器A201と機器B211とは、一般的にはイーサネット(登録商標)や無線LANで接続されている。そのため、機器A201と機器B211との間のネットワーク221のパスMTUを1500バイトに設定することが可能である。この場合、機器A201から送信されたIPヘッダとIPペイロードとを合わせたパケット長が1500バイトのパケットは、ネットワーク221内でIPフラグメントされることなく機器B211に到達することができる。
機器B211は、機器A201から送信されたパケットを正常に受信したときに、正常にパケットを受信したことを示す所定の応答パケットを必ず機器A201に送信するようにしておく。この応答パケットには、たとえば、機器B211が機器A201と同一のローカルネットワークに属している機器であることを示すデータを含めるようにしておいても良い。
機器A201の機器制御部202は、受信パケット解析部205から入力した解析結果が、機器A201から送信したパケット長が1500バイトのパケットを正常に受信したことを示す応答パケットであることを示しているときは、機器B211が機器A201と同一のローカルネットワークに属している機器であると判定する。この場合、機器A201は、認証処理が終了した後にコピーコントロールされたコンテンツを機器B211に送信する。
一方、機器B211が機器A201と同一のローカルネットワークに属していない機器であるときは、前述したように機器A201と機器B211とは、一般的にはPPPoEを用いたADSL等で接続されている。そのため、機器A201と機器B211との間に設けられたネットワーク221のパスMTUは1500バイト未満になる。この場合、機器A201から送信されたIPヘッダとIPペイロードとを合わせたパケット長が1500バイトのパケットは、ネットワーク内でIPフラグメントされなければ機器B211に到達することができない。
しかし、機器A201から送信されたパケットは、Dフラグが「1」であるためIPフラグメントを行なうことができない。この場合、ネットワーク221(たとえば、ネットワーク221に設けられているルータ等)は、機器A201から送信されたパケットを放棄し、パケット長が所定のパケット長より長いことを通知するICMPパケットを応答パケットとして機器A201に送信する。
機器A201の機器制御部202は、受信パケット解析部205から入力した解析結果がパケット長が所定のパケット長より長いことを通知するICMPパケットであることを示しているとき、機器B211が機器A201と同一のローカルネットワークに属していない機器であると判定し、認証処理を打ち切る。この場合、機器A201は機器B211にコピーコントロールされたコンテンツを送信しない。
また、機器A201は、パケット長が1500バイトで、かつDフラグの値を「1」にしたパケットを送信してから一定時間が経過するまでの間にICMPパケットまたは機器B211から送信された所定の応答パケットのどちらも受信しないことも考えられる。このようなときは、機器A201は、パケット長が1500バイトで、かつDフラグの値を「1」にしたパケットを再び機器B211に向けて送信するようにしておく。
また、ネットワーク221に設けられているルータ等において、Dフラグの値が「1」から「0」に不正に書き換えられることも考えられる。この場合、本来ならネットワーク221に設けられているルータ等から機器A201にICMPパケットが送信されるはずである。しかし、Dフラグの値が不正に書き換えられたことにより、機器A201から送信されたパケットは、ネットワーク221に設けられているルータ等によりIPフラグメントされて機器B211に到達する。そこで、機器B211の受信パケット解析部205は、Dフラグの値が不正に書き換えられていないか、および受信したパケットがIPフラグメントされていないか否かについても確認するようにしておく。この場合、機器B211は機器A201に対して認証失敗のパケットを送信し、認証処理を打ち切るようにしておくとよい。
図4は、機器A201と機器B211との間で行なわれる認証処理の一例を示した図である。図4では、前述したのと同様に機器A(ソース機器)201をコピーコントロールされたコンテンツを送信する送信器とし、機器B(シンク機器)211をコピーコントロールされたコンテンツを受信する受信器として説明する。また図4の説明では、機器B211が機器A201と同一のローカルネットワークに属していない機器であるとして説明する。
機器A201と機器B211との間のネットワークにはルータF411が設けられている。ルータF411は、機器B211が機器A201と同一のローカルネットワークに属していない機器であるときに機器A201と機器B211との間のネットワーク内に複数存在するであろうルータのうちの1つを示している。
まず、S401において、機器B211はコピーコントロールされたコンテンツを所持している機器A201に認証要求パケットを送信する。認証要求パケットには、前述したように乱数値Bおよびデバイス証明書Bのデータが含まれている。S402において、機器A201は認証要求パケットを受信したことを示すACKパケットを機器B211に送信する。
S403において、機器A201はパケット長が1500バイトで、かつDフラグの値を「1」にした返信パケットを機器B211に送信する。この返信パケットには、前述したように乱数値Aおよびデバイス証明書Aのデータが含まれている。また、この返信パケットは、図13のS1303に示す返信パケットのパケット長を1500バイトに拡張したものである。
前述したように機器B211が機器A201と同一のローカルネットワークに属していない機器であるときは、機器A201と機器B211との間のパスMTUは1500バイト未満である。図4では、たとえば、ルータF411の先のパスMTUが1500バイト未満であるとする。従って、パケット長が1500バイトで、かつDフラグの値を「1」にした返信パケットを受信したルータF411は、返信パケットをIPフラグメントしなければ、機器B211に返信パケットを送信することができない。
しかし、ルータF411が受信した返信パケットのDフラグは「1」であるため、ルータF411は返信パケットをIPフラグメントすることができない。この場合、S404において、ルータF411は、機器A201から受信した返信パケットを放棄し、機器A201から受信したパケットのパケット長が所定のパケット長より長いために送信することができないというエラーを示すICMPパケットを応答パケットとして機器A201に送信する。ICMPパケットを受信した機器A201は、機器B211が機器A201と同一のローカルネットワークに属していない機器であると判定する。
S405において、機器A201は機器B211に認証失敗を通知するパケットを送信し、認証処理を打ち切る。機器B211は認証失敗を通知するパケットを受信すると認証処理を打ち切り、S406において機器A201に認証失敗を通知するパケットを受信したことを示すACKパケットを送信する。この場合、機器A201は機器B211にコピーコントロールされたコンテンツを送信しない。
なお、機器A201から送信された返信パケットが機器B211で受信されたとき、機器B211は返信パケットのパケット長が1500バイトで、かつDフラグが「1」であることを確認するようにしておく。そして機器B211は、受信した返信パケットのパケット長が1500バイトでないとき、またはDフラグが「0」であるときは認証失敗のパケットを機器A201に送信し、認証処理を打ち切るようにしておく。
なお、前述の実施の形態1では、機器A201は従来の認証処理に用いられる返信パケットのパケット長とDフラグとを変更して機器B211が機器A201と同一のローカルネットワークに属している機器であるか否かを確認するためのパケットとして兼用しているが、機器B211が機器A201と同一のローカルネットワークに属している機器であるか否かを確認するためだけのパケットを用いる方法であってもよい。
また、機器B211が機器A201と同一のローカルネットワークに属しているか否かを確認するために、機器A201から送信される返信パケットは、認証要求パケットの送受信から鍵交換メッセージの送受信が終了するまで(より望ましくは鍵交換メッセージの送受信が開始するまで)の間にやり取りされることが好ましい。
また、前述の実施の形態1では、機器B211が機器A201と同一のローカルネットワークに属しているか否かを確認するための確認用のパケットを機器A201から機器B211に送信する例を示しているが、機器B211から機器A201に確認用のパケットを送信するようにしてもよい。
図5は、機器A201の機器制御部202で実行される処理の流れを示すフローチャートである。まず、S501において、機器B211から送信された認証要求パケットを受信したか否かが判断される。認証要求パケットを受信していないと判断されたときは、認証段階ではないのでこのフローチャートの処理は終了する。一方、認証要求パケットを受信したと判断されたときは、認証処理を行なうためS502の処理に進む。S502において、送信パケット生成部203にパケット長が1500バイトで、かつDフラグの値を「1」にした返信パケットの生成を指示する処理が行なわれる。
S503において、返信パケットに対する応答パケットを受信したか否かが判断される。前述したように、この応答パケットは、機器A201と機器B211との間のネットワークに設けられているルータF411等から送信されてくるICMPパケットや、機器A201から送信された返信パケットが機器B211で正常に受信されたときに機器B211から送信される所定の応答パケットである。
機器A201のパケット送受信部204で応答パケットが受信されると、受信された応答パケットが機器A201の受信パケット解析部205で解析され、解析結果が機器A201の機器制御部202に出力される。これにより機器A201の機器制御部202は、応答パケットを受信したか否かを判断することができる。応答パケットを受信したと判断されたときは、S505の処理に進む。一方、応答パケットを受信していないと判断されたときは、S504の処理に進む。
S504において、機器A201の送信パケット生成部203に返信パケットの生成を指示してから一定時間が経過したか否かが判断される。一定時間が経過していないと判断されたときはS503の処理に戻り、一定時間が経過するまで繰り返しS503、S504の処理が行なわれる。一方、一定時間が経過したと判断されたときは、S502の処理に戻り、再度S502、S503、S504の処理が行なわれる。
S505では、機器A201の受信パケット解析部205において応答パケットを解析した解析結果が、ICMPパケットであることを示しているか否かが判断される。解析結果がICMPパケットであることを示しているときはS508の処理に進み、解析結果がICMPパケットではないことを示しているときはS506の処理に進む。
S506において、機器B211が機器A201と同一のローカルネットワークに属している機器であると判定されるとともに、機器A201の送信パケット生成部203に認証処理の続きである鍵交換パケットの生成を指示する処理が行なわれる。
その後、S507において、機器A201の送信パケット生成部203にコピーコントロールされたコンテンツのパケットの生成を指示する処理が行なわれる。これにより、機器A201から機器B211にコピーコントロールされたコンテンツが送信される。
S508では、機器B211が機器A201と同一のローカルネットワークに属していない機器であると判定されるととともに、機器A201の送信パケット生成部203に認証失敗を通知するパケットの生成を指示する処理が行なわれる。
S508において、機器B211が機器A201と同一のローカルネットワークに属していない機器であると判定されたので、S509において、認証処理を打ち切る処理が行なわれる。この場合、機器A201の送信パケット生成部203にコピーコントロールされたコンテンツのパケットの生成を指示する処理が行なわれることはなく、機器A201から機器B211にコピーコントロールされたコンテンツは送信されない。
以上に説明した機能を備えている機器A201あるいは機器B211を、デジタル化されたコンテンツを取り扱うことができるパソコン、デジカメ、デジタルビデオカメラ、DVDレコーダ等に搭載するようにしておく。
このようにしておくと、機器A201の機器制御部202は、ネットワーク211を介して接続されている機器B211に向けて送信したパケット長が1500バイトで、かつDフラグの値が「1」のパケットに対する応答パケットがICMPパケットであるか、正常に受信できた事を示すACKパケットであるかを判断することで、機器B211が機器A201と同一のローカルネットワークに属している機器であるか否かを判定することができる。
また、機器A201の機器制御部202は、認証段階において機器B211が機器A201と同一のローカルネットワークに属している機器であるか否かを確認するための返信パケットの生成を機器A201の送信パケット生成部203に指示するため、機器B211が機器A201と同一のローカルネットワークに属していない機器であると判定したときは、コピーコントロールされたコンテンツを伝送する段階の前に機器B211との通信を終了することができる。その結果、機器A201から機器A201とは異なるローカルネットワークに属している機器B211にコピーコントロールされたコンテンツが流出することを阻止することができる。
また、機器A201と機器B201との間に設けられているルータ等で機器A201が送信したパケットのDフラグの値が不正に書き換えられたときであっても認証処理が打ち切られるため、機器A201から機器B211にコピーコントロールされたコンテンツが流出することを阻止することができる。
また、機器A201の送信パケット生成部203に返信パケットの生成を指示してから一定時間が経過するまでの間に何ら応答パケットを受信しないときに、機器A201の送信パケット生成部203に再度返信パケットを生成することを指示するため、機器B211が機器A201と同一のローカルネットワークに属している機器であるか否かの判定を極力行なうようにすることができる。
なお、前述の実施の形態1では、図5のS504において一定時間が経過したと判断されたときはS502の処理に戻る例を示したが、これに限られない。たとえば、S504において、一定時間が経過したと判断されたときは、S509の処理に進むようにしておき、認証処理を打ち切るようにしてもよい。このようにしておくと、機器B211が機器A201と同一のローカルネットワークに属している機器であるか不明であるときに、機器A201から機器B211にコピーコントロールされたコンテンツが流出することを阻止することができる。
[実施の形態2]
次に実施の形態2について説明する。この実施の形態2では、実施の形態1と相違する点を主として説明する。実施の形態1では、機器A201がDフラグの値を「1」にして送信した返信パケットに対する応答パケットの種類により機器B211が機器A201と同一のローカルネットワークに属している機器であるか否かを判定した。実施の形態2では、機器A201から送信されたDフラグの値を「0」にした返信パケットを受信した機器B211が、受信した返信パケットの状態により機器B211が機器A201と同一のローカルネットワークに属している機器であるか否かを判定する。
図6は、機器A201と機器B211との間で行なわれる認証処理の一例を示した図である。実施の形態1では、機器A211から機器Bに送信される返信パケットのDフラグが「1」であったためIPv4およびIPv6の両方に適用することができたが、実施の形態2では、機器A201から機器B211に送信される返信パケットのDフラグが「0」であるためIPv4のみにしか適用することができない。
図6では、前述したのと同様に機器A(ソース機器)201をコピーコントロールされたコンテンツを送信する送信器とし、機器B(シンク機器)211をコピーコントロールされたコンテンツを受信する受信器として説明する。また図6の説明では、機器B211が機器A201と同一のローカルネットワークに属していない機器であるとして説明する。
まず、S601において、機器B211はコピーコントロールされたコンテンツを所持している機器A201に認証要求パケットを送信する。認証要求パケットには、乱数値Bおよびデバイス証明書Bのデータが含まれている。S602において、機器A201は認証要求パケットを受信したことを示すACKパケットを機器B211に送信する。
S603において、機器A201はパケット長が1500バイトで、かつDフラグの値を「0」にした返信パケットを機器B211に送信する。この返信パケットには、乱数値Aおよびデバイス証明書Aのデータが含まれている。また、この返信パケットは、図13のS1303に示す返信パケットのパケット長を1500バイトに拡張したものである。
前述したように機器B211が機器A201と同一のローカルネットワークに属していない機器であるときは、機器A201と機器B211との間のパスMTUは1500バイト未満である。図6では、前述したのと同様にルータF411の先のパスMTUが1500バイト未満であるとする。従って、パケット長が1500バイトで、かつDフラグの値を「0」にした返信パケットを受信したルータF411は、返信パケットをIPフラグメントしなければ、機器B211に返信パケットを送信することができない。
実施の形態2では、返信パケットのDフラグの値が「0」であるため、ルータF411は返信パケットをIPフラグメントすることができる。この場合、ルータF411は、返信パケットを複数のパケット(実施の形態2では、パケット604およびパケット605の2つに分割された例を示す)にIPフラグメントし、IPフラグメントした2つの返信パケットを機器B211に送信する。
機器B211は、IPフラグメントされた2つの返信パケット604,605の両方を受信すると、2つにIPフラグメントされた返信パケット604,605を元の1つの返信パケットに再構築する。S606において、機器B211は機器A201に返信パケットを受信したこと示すACKパケットを送信する。機器B211は、IPフラグメントされた返信パケットを受信したときは、機器B211が機器A201と同一のローカルネットワークに属していない機器であると判定する。
S607において、機器B211は機器A201に認証失敗を通知するパケットを送信し、認証処理を打ち切る。機器A201は、認証失敗を通知するパケットを受信すると認証処理を打ち切り、S608において機器B211に認証失敗を通知するパケットを受信したことを示すACKパケットを送信する。この場合、機器A201は機器B211にコピーコントロールされたコンテンツを送信しない。
なお、機器A201から送信された返信パケットがIPフラグメントされずに機器B211に到達することも考えられる。この場合、機器B211は、機器A201から送信された返信パケットのパケット長が1500バイトであることを確認するようにしておく。そして機器B211は、受信した返信パケットのパケット長が1500バイトでないときは認証失敗のパケットを機器A201に送信し、認証処理を打ち切るようにしておく。
このようにしておくと、機器B211が機器A201と同一のローカルネットワークに属している機器であるか否かが不明であるときに、機器A201から機器B211にコピーコントロールされたコンテンツが流出することを阻止することができる。
なお、前述の実施の形態2では、機器A201は従来の認証処理に用いられる返信パケットのパケット長を変更して機器B211が機器A201と同一のローカルネットワークに属している機器であるか否かを確認するためのパケットとして兼用しているが、機器B211が機器A201と同一のローカルネットワークに属している機器であるか否かを確認するためだけのパケットを用いる方法であってもよい。
また、機器B211が機器A201と同一のローカルネットワークに属しているか否かを確認するために、機器A201から送信される返信パケットは、認証要求パケットの送受信から鍵交換メッセージの送受信が終了するまで(より望ましくは鍵交換メッセージの送受信が開始するまで)の間にやり取りされることが好ましい。
図7は、機器B211の機器制御部202で実行される処理の流れを示すフローチャートである。まず、S701において、機器B211の送信パケット生成部203に対して認証要求パケットの生成を指示する処理を行なったか否かが判断される。認証要求パケットの生成を指示する処理を行なっていないときは、認証段階ではないのでこのフローチャートの処理は終了する。一方、認証要求パケットの生成を指示する処理を行なったときは認証処理を行なうためS702の処理に進む。
S702において、返信パケットを受信したか否かが判断される。この返信パケットは、前述したように機器A201が機器B211から送信されてきた認証要求パケットを受信したときに送信するパケットである。機器B211のパケット送受信部204で返信パケットが受信されると、受信された返信パケットが機器B211の受信パケット解析部205で解析され、解析結果が機器B211の機器制御部202に出力されることで機器制御部202は返信パケットを受信したか否かを判断することができる。返信パケットを受信したと判断されたときは、S704の処理に進む。一方、返信パケットを受信していないと判断されたときは、S703の処理に進む。
S703において、機器B211の送信パケット生成部203に対して認証要求パケットの生成を指示してから一定時間が経過したか否かが判断される。一定時間が経過していないと判断されたときは、S702の処理に戻り、一定時間が経過するまで繰り返しS702、S703の処理が行なわれる。一方、一定時間が経過したと判断されたときは、後述するS708の処理に進み、認証処理を打ち切る処理が行なわれる。
S704において、機器B211の受信パケット解析部205において返信パケットを解析した解析結果が、IPフラグメントされた返信パケットであることを示しているか否かが判断される。解析結果がIPフラグメントされた返信パケットであることを示しているときはS707の処理に進み、そうでないときはS705の処理に進む。
S705において、機器B211が機器A201と同一のローカルネットワークに属している機器であると判定されるとともに、機器B211の送信パケット生成部203に対して認証成功を通知するパケットの生成を指示する処理が行なわれる。認証成功を通知するパケットは、通知を目的とするだけのパケットでも良いし、認証段階の続きのパケット(鍵交換パケット等)でも良い。その後、S706において、機器A201から送信されたコピーコントロールされたコンテンツのパケットの受信処理が行なわれる。
S707では、機器B211が機器A201と同一のローカルネットワークに属していない機器であると判定されるとともに、機器B211の送信パケット生成部203に対して認証失敗を通知するパケットの生成を指示する処理が行なわれる。
S707において、機器B211が機器A201と同一のローカルネットワークに属していない機器であると判定されたので、S708において、認証処理を打ち切る処理が行なわれる。この場合、機器A201から機器B211にコピーコントロールされたコンテンツが送信されない。
以上に説明した機能を備えている機器A201あるいは機器B211を、デジタル化されたコンテンツを取り扱うことができるパソコン、デジカメ、デジタルビデオカメラ、DVDレコーダ等に搭載するようにしておく。
このようにしておくと、機器B211の機器制御部202は、ネットワークを介して接続されている機器A201から送信された返信パケットがIPフラグメントされているかを判断することで、機器B211が機器A201と同一のローカルネットワークに属している機器であるか否かを判定することができる。
また、機器B211の機器制御部202は、認証段階において機器B211が機器A201と同一のローカルネットワークに属している機器であるか否かを確認するための返信パケットがIPフラグメントされているか否かを判断するため、機器B211が機器A201と同一のローカルネットワークに属していない機器であると判定したときは、コピーコントロールされたコンテンツを伝送する段階の前に機器A201との通信を終了することができる。その結果、機器A201から機器Aとは異なるローカルネットワークに属している機器B211にコピーコントロールされたコンテンツが流出することを阻止することができる。
なお、前述の実施の形態2では、図7のS703において一定時間が経過したと判断されたときはS708の処理に進み、認証処理を打ち切る処理が行なわれる例を示したが、これに限られない。たとえば、S703において一定時間が経過したと判断されたときは、S701の処理に戻るようにしておき、再度S701、S702、S703の処理が行なわれるようにしてもよい。
このようにしておくと、機器B211の送信パケット生成部203に認証要求パケットの生成を指示してから一定時間が経過するまでの間に返信パケットを受信しないときに、機器B211の送信パケット部203に再度認証要求パケットを生成することを指示するため、機器B211が機器A201と同一のローカルネットワークに属している機器であるか否かの判定を極力行なうようにすることができる。
[実施の形態3]
次に実施の形態3について説明する。この実施の形態3では、実施の形態1および実施の形態2と相違する点を主として説明する。実施の形態3では、ある機器から他の機器に送信するパケット長を変化させていったときに、パケット長の変化に対する伝送時間の変化を測定することにより他の機器がある機器と同一のローカルネットワークに属しているか否かを判定する点で実施の形態1および実施の形態2と相違する。以下、その方法について詳しく説明する。
同一のローカルネットワークに属していない機器同士の通信においてADSLが用いられているとき、通信がPPPoA(PPP over AAL5、RFC2364)を用いて行なわれるときがある。PPPoAは、ATMネットワーク上でPPP接続を行なうための仕様である。通信がPPPoAを用いて行なわれるとき、ある機器から送信されたパケット長が1500バイトのパケットは、途中でIPフラグメントされることなく他の機器に到達することができる場合がある。この場合、実施の形態1および実施の形態2で説明した方法では、コピーコントロールされたコンテンツが、ある機器の属しているローカルネットワーク以外の機器に流出することを阻止することができない。
PPPoAを用いたADSL上でパケットを送信するとき、最終的にはATMパケットにパケットがマッピング(ATMセル化)されて送信される。図8は、PPPoAを用いたADSLの場合に、IPパケットがどのようにATMパケットにマッピングされるかを示した図である。図8(a)は、PPPoAを用いたADSL上でIPパケットを送信するときのATMセルにマッピングされる前のパケットフォーマットを示している。図8(b)は、ATMネットワーク上でパケットを送信するときのパケットフォーマットを示している。
図8(a)に示すように、PPPoAを用いたADSL上でパケットを送信するときのパケットフォーマットは、LLC/SNAP801、PPPフィールド802、IPヘッダ803、IPペイロード804、PADフィールド805およびTrailer806
から構成されている。LLC/SNAPフィールド801、PPPフィールド802、IPヘッダ803およびIPペイロード804は、前述したイーサネット(登録商標)、無線LANおよびPPPoEのフレームフォーマットで説明したものと同じである。Trailerフィールド806には、LLC/SNAPフィールド801からIPペイロード804までの長さ情報や誤り検出のためのCRC等が含まれている。PADフィールド805は、パディングであり、ATMセル化するときに用いられる。
図8(b)に示すようにATMネットワーク上でパケットを送信するときのパケットフォーマットは、ATMヘッダおよびATMペイロードから構成されている。ATMパケットは、長さ5バイトのATMヘッダと長さ48バイトのATMペイロードとからなる固定長53バイトのパケットである。
図8(a)に示すパケットを図8(b)に示すATMパケットにATMセル化するとき、最後のATMパケットのATMペイロード842が48バイトに満たないことがある。このとき、前述した図8(a)のPADフィールド805のパディングを付加して48バイトにする。
図9は、種々のメディア上におけるパケット長と伝送時間との関係を示した図である。図9(a)は、ATMネットワーク上におけるパケット長と伝送時間との関係を示した図である。図9(b)は、イーサネット(登録商標)や無線LAN(IEEE802.11b)上におけるパケット長と伝送時間との関係を示した図である。図9(c)は、無線LAN(IEEE802.11a、IEEE802.11g)上におけるパケット長と伝送時間との関係を示した図である。
ATMセル化をするときは前述したようにパディングが行なわれるため、送信したいパケット長が変化してもATMセル化した後のATMパケットの数が変わらない限りATMパケットの送信に要する時間は変わらない。従って、ATMネットワーク上では、図9(a)に示すようにパケット長が変化したときの伝送時間の変化は階段状となる。
一方、イーサネット(登録商標)や無線LAN(IEEE802.11b)上でパケットを送信するときは、図9(b)に示すようにパケット長の変化に応じて、1バイト単位で伝送時間が変化する。また、無線LAN(IEEE802.11aやIEEE802.11g)は、OFDM(Orthogonal Frequency Division Multiplexing)変調方式を使用しているため、図9(c)に示すようにOFDMシンボル単位で伝送時間が変化するが、その単位は最大でも27バイトとATMの48バイト単位とは異なる。
そのため、パケット長と伝送時間との関係を調べることにより、ある機器と他の機器との間のネットワークにATMネットワークが含まれているか否か、すなわち他の機器がある機器と同一のローカルネットワークに属している機器であるか否かを調べることができる。伝送時間は、前述したRTTを測定することにより求められる。
RTTを測定するときに、ある機器から送信されたRTT測定用パケットを受信した他の機器に、予め決められた内容の一定長の応答パケットを送信させるようにしておくことも考えられるが、RTT測定用パケットと同じパケット長の応答パケットを送信させるようにしておくことが好ましい。このようにしておくと、パケット長の変化に対する伝送時間の変化の影響を2倍にすることができ、図9(a)に示すグラフの段差を明確にすることができる。このようなRTT測定用パケットおよび応答パケットの例としてpingコマンドとして使用されるICMPパケットのEcho Message(Type8)とEcho Reply Message(Type0)とがある。また、RTTは、ネットワークが込み合うと値が大きくなる傾向があるので、複数回測定したうちの最小値を採用することが好ましい。
図10は、実施の形態3におけるシステムの概略構成を示すブロック図である。システムは、機器E1001、機器B211およびネットワーク221から構成されている。ここでは、機器E1001をコピーコントロールされたコンテンツを送信する機器(送信器)とし、機器B211をコピーコントロールされたコンテンツを受信する機器(受信器)として説明する。なお、実施の形態3において受信器である機器B211は、実施の形態1および実施の形態2と同じ構成であるが、機器E1001と同じ構成にしてもよい。
実施の形態1および実施の形態2と同様に、ネットワーク221は、機器B211が機器E1001と同一のローカルネットワークに属している機器であるか否かによりイーサネット(登録商標)や無線LAN等で構築されている構内ネットワークであったり、インターネット等であったりする。
機器E1001が機器B211にコピーコントロールされたコンテンツを送信しようとするとき、コピーコントロールされたコンテンツが機器E1001の属しているローカルネットワーク以外の機器に流出することを阻止するために、機器E1001は、機器B211が機器E1001と同一のローカルネットワークに属している機器であるか否かの判定を、コピーコントロールされたコンテンツを機器B211に送信する前(認証段階)に行なう。
機器E1001は、機器制御部1002、送信パケット生成部203、パケット送受信部204、受信パケット解析部1003およびRTT測定部1004を有している。機器E1001が機器B211にコピーコントロールされたコンテンツを送信しようとするとき、機器B211が機器E1001と同一のローカルネットワークに属している機器であるか否かを確認するため、RTT測定用パケットの生成を機器E1001の送信パケット生成部203に対して指示する。機器制御部1002は、機器E1001の送信パケット生成部203にRTT測定用パケットの生成の指示を出した時間(タイミング)の情報をRTT測定部1004に出力する。
機器E1001の送信パケット生成部203は、機器制御部1002からの指示に応じてRTT測定用パケットを生成し、生成したRTT測定用パケットを機器E1001のパケット送受信部204に出力する。機器E1001のパケット送受信部204は、機器E1001の送信パケット生成部203から入力したRTT測定用パケットをネットワーク221を介して接続されている機器B211に向けて送信する。
また、機器E1001のパケット送受信部204は、機器B211から受信したRTT測定用パケットに対する応答パケットを受信パケット解析部1003に出力する。受信パケット解析部1003は、解析結果を機器制御部1002に出力するとともに、パケット送受信部204から応答パケットを入力した時間(タイミング)の情報をRTT測定部1004に出力する。
RTT測定部1004は、機器制御部1002が送信パケット生成部203にRTT測定用パケットの生成を指示してから受信パケット解析部1003にRTT測定用パケットに対する応答パケットが入力されるまでの時間をRTTとして求め、求めたRTTを機器制御部1002に出力する。
なお、前述の実施の形態3では、機器制御部1002が送信パケット生成部203にRTT測定用パケットの生成を指示してから受信パケット解析部1003にRTT測定用パケットに対する応答パケットが入力されるまでの時間をRTTとして求める例を示したがこれに限られない。たとえば、機器E1001のパケット送受信部204にRTT測定用パケットが入力されてから機器E1001のパケット送受信部204が受信パケット解析部1003にRTT測定用パケットに対する応答パケットを出力するまでの時間をRTTとして求めてもよい。この場合、パケット送受信部204にRTT測定用パケットが入力された時点でタイムスタンプを付加しておき、機器E1001のパケット送受信部204が応答パケットを出力する時点でタイムスタンプを付加しておく等しておき、RTT測定部1004は、そのタイプスタンプに基づいてRTTを求めることとなる。
図11は、機器E1001と機器B211との間で行なわれる認証処理の一例を示した図である。図11では、前述したのと同様に機器E(ソース機器)1001をコピーコントロールされたコンテンツを送信する送信器とし、機器B(シンク機器)211をコピーコントロールされたコンテンツを受信する受信器として説明する。また図11では、機器B211が機器E1001と同一のローカルネットワークに属していない機器であるとして説明する。
まず、S1101において、機器B211はコピーコントロールされたコンテンツを所持している機器E1001に認証要求パケットを送信する。この認証要求パケットには、乱数値Bおよびデバイス証明書Bのデータが含まれている。S1102において、機器E1001は認証要求パケットを受信したことを示すACKパケットを機器B211に送信する。
S1103において、機器E1001は機器B211に返信パケットを送信する。この返信パケットには、乱数値Aおよびデバイス証明書Aのデータが含まれている。S1104において、機器B211は返信パケットを受信したことを示すACKパケットを機器E1001に送信する。
S1105からS1110までの処理では、機器E1001は機器B211にRTT測定用パケットを送信する処理を繰り返し行ない、機器B211は機器E1001から送信されたRTT測定用パケットを受信したときに、RTT測定用パケットを受信したことを示す応答パケットを送信する処理を繰り返し行なう。このとき、機器E1001は、機器B211に前回送信したRTT測定用パケットのパケット長よりも予め定められている長さずつ変化させたRTT測定用パケットを送信する。S1105からS1110までの処理において、機器制御部1002が送信パケット生成部203にRTT測定用パケットの生成を指示してから受信パケット解析部1003にRTT測定用パケットに対する応答パケットが入力されるまでの時間(RTT)が繰り返し測定される。この処理の詳しい説明は後述することとする。
機器E1001は、送信したRTT測定用パケットのパケット長と測定されたRTTとの関係が図9(a)に示したような階段状の関係で、かつ階段1段当りのパケット長が48バイトであるときは、機器B211が機器E1001と同一のローカルネットワークに属していない機器であると判定するが、そうでないときは機器B211が機器E1001と同一のローカルネットワークに属している機器であると判定する。
機器B211が機器E1001と同一のローカルネットワークに属していない機器であると判定されたときは、S1111に示すように、機器E1001は機器B211に認証失敗を通知するパケットを送信し、認証処理を打ち切る。機器B211は、認証失敗を通知するパケットを受信すると認証処理を打ち切り、S1112において機器E1001に認証失敗を通知するパケットを受信したことを示すACKパケットを送信する。この場合、機器E1001は機器B211にコピーコントロールされたコンテンツを送信しない。
なお、前述の実施の形態3では、機器E1001から機器B211にRTT測定用パケットを送信する例を示したがこれに限られず、機器B211から機器E1001にRTT測定用パケットを送信するようにしてもよい。
ここで、図11のS1105からS1110までのRTTを測定する処理について詳しく説明する。RTTの測定をするときは、最初に機器E1001から機器B211に送信するRTT測定用パケットのパケット長(START_LENGTH)、測定を終了するRTT測定用パケットのパケット長(END_LENGTH)、RTT測定用パケットのパケット長を変化させるときの変化させる長さ(STEP)、同じパケット長のRTT測定用パケットにおいてRTTを測定する回数(COUNT_MAX)およびタイムアウト時間(TH_TIMEOUT)のパラメータ値を予め定めておく必要がある。
パラメータ値の制限として、START_LENGTHとEND_LENGTHとの差は、96バイトより大きい必要である。なぜなら、RTT測定用パケットのパケット長と測定されたRTTとの関係が図9(a)に示す階段状の関係になるときに、階段1段当りのパケット長が48バイトであるか否かを判断するためには少なくとも段が3段必要であるが、ATMセル化によりパケット長が48バイト変化する間はRTTが変化しない可能性があるため、START_LENGTHとEND_LENGTHとの差が96バイト以下の場合、段が2段しか現われない可能性があるからである。
また、STEPは48の約数であることが望ましい。なぜなら、RTT測定用パケットのパケット長と測定されたRTTとの関係が図9(a)に示す階段状の関係になるときに、階段1段当りのパケット長が48バイトであるか否かを判断するにあたり48の約数でない数(たとえば「7」)をSTEPにしておくと、たとえば、階段1段当りのパケット長が42バイトや49バイト変化したときにRTTが1段分変化することになり、正確に階段1段当りのパケット長が48バイトであるかを判断することができないからである。なお、STEPは、正数に限られず負数であってもよい。以下、図12および図13を参照してRTTの測定方法を具体的に説明するが、図12および図13ではSTEPは正数であるとして説明する。
図12および図13は、機器E1001の機器制御部1002で実行される処理の流れを示すフローチャートである。まず、S1201において、機器B211から送信された認証要求パケットを受信したか否かが判断される。認証要求パケットを受信していないと判断されたときは、認証段階ではないので図12および図13のフローチャートの処理は終了する。一方、認証要求パケットを受信したと判断されたときは、S1202の処理へ進む。
S1202において、返信パケットの送信処理を行う。これは、図11のS1103とS1104に対応する、返信パケットの生成指示と、返信パケットに対するACKの受信待ちからなる。返信パケットの送信処理が終わると、機器制御部1002が送信パケット生成部203にRTT測定用パケットの生成を指示してから受信パケット解析部1003にRTT測定用パケットに対する応答パケットが入力されるまでの時間(RTT)を測定する処理を行なうため、S1203以降の処理に進む。
S1203において、初期化処理が行なわれる。初期化処理では、RTT記録テーブルが未測定の状態にされ、RTT測定用パケットのパケット長としてSTART_LENGTHが設定され、COUNTの値が「1」に設定される。RTT記録テーブルとは、RTT測定用パケットのパケット長(LENGTH)毎に測定されたRTTを記録しておくテーブルであり、たとえば機器E1001に搭載されているRAM、ハードディスク等の記憶媒体により実現される。
S1204において、機器E1001の送信パケット生成部203に対してパケット長がSTART_LENGTHとなるRTT測定用パケットの生成を指示する処理が行なわれる。S1205において、RTT測定用パケットに対する応答パケットを受信したか否かが判断される。機器E1001のパケット送受信部204で応答パケットが受信されると、受信された応答パケットが受信パケット解析部1003で解析され、解析結果が機器制御部1002に出力される。これにより機器制御部1002は、応答パケットを受信したか否かを判断することができる。応答パケットを受信したと判断されたときは、S1207の処理に進む。一方、応答パケットを受信していないと判断されたときは、S1206の処理に進む。
S1206において、機器E1001の送信パケット生成部203に対してRTT測定用パケットの生成を指示してから一定時間が経過したか否かが判断される。一定時間が経過していないと判断されたときはS1205の処理に戻り、一定時間が経過するまで繰り返しS1205、S1206の処理が行なわれる。一方、一定時間が経過したと判断されたときは、S1204の処理に戻り、再度S1204、S1205、S1206の処理が行なわれる。
S1207において、RTTが最小値であるか否かが判断される。前述したように同じパケット長のRTT測定用パケットではCOUNT_MAXで定義される回数だけRTTの測定が繰り返し行なわれる。S1207では、今回測定されたRTTの値が前回までに測定されたRTTのうちの最小値が記録されているRTT記録テーブルの値と比較され、RTT記録テーブルに記録されているRTTの値よりも小さいか否かが判断される。今回測定されたRTTの値がRTT記録テーブルに記録されているRTTの値よりも小さいと判断されたときはS1208の処理に進み、今回測定されたRTTの値がRTT記録テーブルに記録されているRTTの値よりも大きいと判断されたときはS1209の処理に進む。最初のRTTの測定では、RTT記録テーブルに比較するRTTの値が記録されていないので、S1208に進む。
S1208は、S1207において「Yes」の判断がなされたときのみ行なわれ、測定したRTTの値をRTT記録テーブルに記録する処理が行なわれる。S1209において、COUNTの値がCOUNT_MAXであるか否かが判断される。COUNTの値がCOUNT_MAXでないときは、S1210においてCOUNTの値に「1」が加算され、S1209においてCOUNTの値がCOUNT_MAXであると判断されるまでS1204からS1209までの処理が繰り返し行なわれる。
S1209においてCOUNTの値がCOUNT_MAXであると判断されたときは、S1211において、LENGTHが予め定められているEND_LENGTH以上であるか否かが判断される。LENGTHが予め定められているEND_LENGTH未満であると判断されたときは、S1212において、STEPで定義されている長さが今回のRTT測定用パケットのパケット長に加算されるとともに、COUNTの値が「1」に設定され、LENGTHがEND_LENGTH以上と判断されるまで、S1204からS1210までの処理が繰り返し行なわれる。
一方、S1211においてLENGTHがEND_LENGTH以上であると判断されたときは、S1301において、RTTの再計測が必要であるか否かが判断される。LENGTHが長くなれば、測定されるRTTの値は同じであるか大きくなるが、小さくなることはない。そこで、RTT記録テーブルにおいて、あるLENGTHに対するRTTの値RTT(n)と、あるLENGTH+STEPに対するRTTの値RTT(n+1)とを比較し、RTT(n)>RTT(n+1)となっている箇所があるか否かを判断する。RTT(n)>RTT(n+1)となっている箇所があればRTTの再計測が必要であるのでS1302の処理に進み、なければS1303の処理に進む。
S1302では、S1301において説明したようにRTT(n)>RTT(n+1)となったあるLENGTHに対するRTTの値の再計測が行なわれる。この際、RTTの値は1回だけ測定されてもよいし、前述したCOUNTの値がCOUNT_MAXとなるまで繰り返し測定してもよいし、RTT記録テーブルの値が更新されまで繰り返し測定してもよい。RTTの値の再計測が終了すると、S1301の処理に戻る。
S1303において、パケット長判定処理が行なわれる。パケット長判定処理では、RTT記録テーブルにおいてLENGTHの小さい方から順にRTTの値が確認されていき、同じRTTの値(ある誤差範囲に入っているRTTの値)が続くLENGTHの範囲が調べられる。これがEND_LENGTHまで行なわれる。
S1304では、S1303で調べられた同じRTTの値が続くLENGTHの範囲が48バイトであるか否かが判断される。同じRTTの値が続くLENGTHの範囲が48バイトであるときはS1307の処理に進み、そうでないときはS1305の処理に進む。
S1305において、機器B211が機器E1001と同一のローカルネットワークに属している機器であると判定されるとともに、機器E1001の送信パケット生成部203に対して認証成功を通知するパケットの生成を指示する処理が行なわれる。認証成功を通知するパケットは、通知を目的とするだけのパケットでも良いし、認証段階の続きのパケット(鍵交換パケット等)でも良い。その後、S1306において、機器E1001の送信パケット生成部203に対してコピーコントロールされたコンテンツのパケットの生成を指示する処理が行なわれる。これにより、機器E1001から機器B211にコピーコントロールされたコンテンツが送信される。
S1307では、機器B211が機器E1001と同一のローカルネットワークに属していない機器であると判定されるとともに、機器E1001が送信パケット生成部203に対して認証失敗を通知するパケットの生成を指示する処理が行なわれる。S1307において、機器B211が機器E1001と同一のローカルネットワークに属していない機器であると判定されたので、S1308において認証処理を打ち切る処理が行なわれる。この場合、機器E1001の送信パケット部203に対してコピーコントロールされたコンテンツのパケットの生成を指示する処理が行なわれることはなく、機器E1001から機器B211にコピーコントロールされたコンテンツは送信されない。
以上に説明した機能を備えている機器E1001あるいは機器B211を、デジタル化されたコンテンツを取り扱うことができるパソコン、デジカメ、デジタルビデオカメラ、DVDレコーダ等に搭載するようにしておく。
このようにしておくと、機器E1001の機器制御部1002は、ネットワークを介して接続されている機器B211に向けて送信した予め定められている長さずつパケット長を変化させたパケットに対する応答パケットを受信するまでの応答時間を測定して、送信したパケット長と測定した応答時間との関係から機器B211が機器A201と同一のローカルネットワークに属している機器であるか否かを判定することができる。
また、機器E1001の機器制御部1002は、認証段階において機器B211が機器E1001と同一のローカルネットワークに属している機器であるか否かを判定するためのRTT測定用パケットの生成を機器E1001の送信パケット生成部203に指示するため、機器B211が機器E1001と同一のローカルネットワークに属していない機器であると判定したときは、コピーコントロールされたコンテンツを伝送する段階の前に機器B211との通信を終了することができる。その結果、機器E1001から機器E1001とは異なるローカルネットワークに属している機器B211にコピーコントロールされたコンテンツが流出することを阻止することができる。
また、機器E1001の送信パケット送信部203にRTT測定用パケットの生成を指示してから一定時間が経過するまでの間にRTT測定用パケットに対する応答パケットを受信しないときに、機器E1001の送信パケット生成部203に再度RTT測定用パケットの生成を指示するため、RTTの測定を極力行なうようにすることができ、機器B211が機器E1001と同一のローカルネットワークに属している機器であるか否かの判定を極力行なうようにすることができる。
なお、前述の実施の形態3では、図12のS1206において一定時間が経過したと判断されたときはS1204の処理に戻る例を示したが、これに限られない。たとえば、S1206において一定時間が経過したと判断されたときは、図13のS1308に進むようにしておき、認証処理を打ち切るようにしてもよい。このようにしておくと、RTTの測定を行なうことができず、機器B211が機器E1001と同一のローカルネットワークに属している機器であるか否かが不明であるときに、機器E1001から機器B211にコピーコントロールされたコンテンツが流出することを阻止することができる。
なお、前述の実施の形態1、実施の形態2および実施の形態3は、それぞれ排他的なものではなく、組み合わせて用いることもできる。
DTCP−IPは、大きく、相手機器がコピーコントロールされたコンテンツをやり取りしてもよいDTLAに認証された機器であるかを調べる認証段階と、実際にコピーコントロールされたコンテンツのやり取りを行なうコンテンツ伝送段階とに分けることができる。前述の実施の形態1から実施の形態3までにおいて、機器B211が機器A201と同一のローカルネットワークに属している機器であるか否か、または機器B211が機器E1001と同一のローカルネットワークに属しているか否かの判定は、認証段階および伝送段階のどちらでも可能であるが、前述の実施の形態1から実施の形態3まで説明したように、認証段階の一部で判定することが好ましい。なぜなら、認証段階において機器B211が機器A201あるいは機器E1001と同一のローカルネットワークに属していない機器であると判定されたときは、コピーコントロールされたコンテンツをやり取りすべきではなく、認証に失敗したとして認証処理を打ち切るべきだからである。また、前述の実施の形態1および実施の形態2においては、パケット長が1500バイト未満のパケットをパディングして1500バイトにするときにオーバヘッドを生じるが、認証段階の方が伝送段階よりも一般的にデータ伝送レートが低く、またパケットのタイミングに対する要求も少ないため、オーバヘッドの影響を受けにくいからである。
なお、今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなく特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
101 ローカルネットワーク、102〜105 機器、111 ローカルネットワーク、112〜115 機器、121 ルータ、131 ルータ、201 機器A、202 機器制御部、203 送信パケット生成部、204 パケット送受信部、205 受信パケット解析部、211 機器B、221 ネットワーク、411 ルータF、1001 機器E、1002 機器制御部、1003 受信パケット解析部、1004 RTT測定部。