(57)【特許請求の範囲】
【請求項１】
ネットワークを介してパケットを送受信する端末がＰ２Ｐ端末であるか否かを検知するＰ２Ｐ端末検知装置であって、
前記端末が前記ネットワークを介して送受信するパケットを受信する受信手段と、
前記受信手段が受信した前記パケットが接続確立後に最初に送受信するパケットである初期パケットであるか否かを判定するパケット判定手段と、
前記パケット判定手段が前記初期パケットであると判定した場合に、前記初期パケットのランダム性の有無を判定し、前記初期パケットにランダム性があると判定した場合に、前記端末がＰ２Ｐ端末であると検知するランダム判定手段と、
前記ランダム判定手段が前記端末が前記Ｐ２Ｐ端末であると検知した場合に、検知された前記Ｐ２Ｐ端末のトラヒックを制御する制御手段と、
を備え、
前記パケット判定手段は、前記受信手段が受信した前記パケットに接続要求を有する属性が含まれている場合は、前記パケットから算出したコネクション情報を、コネクション情報データとして記録し、
前記受信手段が受信した前記パケットに接続要求を有する属性が含まれていない場合は、前記パケットから算出したコネクション情報が、前記コネクション情報データに含まれている場合に、前記パケットを前記初期パケットとして判定する、
ことを特徴とするＰ２Ｐ端末検知装置。
【請求項２】
前記ランダム判定手段は、前記受信手段が前記初期パケットを受信する毎に、前記初期パケットのランダム性の有無を判定し、前記初期パケットに前記ランダム性があると判定する毎に、前記端末がＰ２Ｐ端末であると検知する、
ことを特徴とする請求項１に記載のＰ２Ｐ端末検知装置。
【請求項３】
前記ランダム判定手段は、前記端末が前記Ｐ２Ｐ端末であると検知した場合に、前記端末を特定する情報と前記初期パケットの乱数らしさを含む検知情報を出力し、
前記制御手段は、前記ランダム判定手段が出力した前記検知情報に基づいて、検知された前記Ｐ２Ｐ端末のトラヒックを制御する、
ことを特徴とする請求項１または２に記載のＰ２Ｐ端末検知装置。
【請求項４】
検知した前記Ｐ２Ｐ端末のトラヒックをどのように制御するかを示す制御情報を、前記初期パケットの乱数らしさを含む情報に対応付けて記憶する制御情報記憶手段をさらに備え、
前記制御手段は、前記制御情報記憶手段が記憶する前記初期パケットの乱数らしさを含む情報と、前記ランダム判定手段が出力した前記検知情報に含まれる前記初期パケットの乱数らしさとを比較し、前記ランダム判定手段が出力した前記検知情報に含まれる前記初期パケットの乱数らしさが、前記制御情報記憶手段が記憶する前記初期パケットの乱数らしさよりもより乱数らしい場合に、前記制御情報記憶手段が記憶する前記制御情報に基づいて、検知した前記Ｐ２Ｐ端末のトラヒックを制御する、
ことを特徴とする請求項３に記載のＰ２Ｐ端末検知装置。
【請求項５】
複数の種別のＰ２Ｐソフトウェアを記憶する種別記憶手段をさらに備え、
前記制御情報記憶手段は、前記複数のＰ２Ｐソフトウェアの種別に対応付けて、前記制御情報と前記初期パケットの乱数らしさを含む情報とを記憶し、
前記ランダム判定手段は、前記端末に対して前記種別記憶手段が記憶する前記Ｐ２Ｐソフトウェアによる接続を行ない、前記接続が正常に行われた場合に、前記端末が使用するＰ２Ｐソフトウェアを特定し、特定した前記Ｐ２Ｐソフトウェアに対応する前記制御情報と前記初期パケットの乱数らしさを含む情報とを含む検知情報を出力する、
ことを特徴とする請求項４に記載のＰ２Ｐ端末検知装置。
【請求項６】
前記ランダム判定手段は、繰り返し、前記端末に対して前記種別記憶手段が記憶する前記Ｐ２Ｐソフトウェアによる接続を行なうことにより、前記端末が使用するＰ２Ｐソフトウェアを特定する、
ことを特徴とする請求項５に記載のＰ２Ｐ端末検知装置。
【請求項７】
ネットワークを介してパケットを送受信する端末がＰ２Ｐ端末であるか否かを検知するＰ２Ｐ端末検知装置で行われるＰ２Ｐ端末検知方法であって、
前記端末が前記ネットワークを介して送受信するパケットを受信する受信ステップと、
前記受信ステップにおいて受信した前記パケットが接続確立後に最初に送受信するパケットである初期パケットであるか否かを判定するパケット判定ステップと、
前記パケット判定ステップにおいて前記初期パケットであると判定された場合に、前記初期パケットのランダム性の有無を判定し、前記初期パケットにランダム性があると判定した場合に、前記端末がＰ２Ｐ端末であると検知するランダム判定ステップと、
前記ランダム判定ステップにおいて前記端末が前記Ｐ２Ｐ端末であると検知された場合に、検知された前記Ｐ２Ｐ端末のトラヒックを制御する制御ステップと、
を含み、
前記パケット判定ステップは、前記受信ステップが受信した前記パケットに接続要求を有する属性が含まれている場合は、前記パケットから算出したコネクション情報を、コネクション情報データとして記録し、
前記受信ステップが受信した前記パケットに接続要求を有する属性が含まれていない場合は、前記パケットから算出したコネクション情報が、前記コネクション情報データに含まれている場合に、前記パケットを前記初期パケットとして判定する、
ことを特徴とするＰ２Ｐ端末検知方法。
【請求項８】
前記ランダム判定ステップは、前記受信ステップにおいて前記初期パケットを受信する毎に、前記初期パケットのランダム性の有無を判定し、前記初期パケットに前記ランダム性があると判定する毎に、前記端末がＰ２Ｐ端末であると検知する、
ことを特徴とする請求項７に記載のＰ２Ｐ端末検知方法。
【請求項９】
前記ランダム判定ステップは、前記端末が前記Ｐ２Ｐ端末であると検知した場合に、前記端末を特定する情報と前記初期パケットの乱数らしさを含む検知情報を出力し、
前記制御ステップは、前記ランダム判定ステップにおいて出力された前記検知情報に基づいて、検知された前記Ｐ２Ｐ端末のトラヒックを制御する、
ことを特徴とする請求項７または８に記載のＰ２Ｐ端末検知方法。
【請求項１０】
前記制御ステップは、検知した前記Ｐ２Ｐ端末のトラヒックをどのように制御するかを示す制御情報を、前記初期パケットの乱数らしさを含む情報に対応付けて記憶する制御情報記憶手段が記憶する前記初期パケットの乱数らしさを含む情報と、前記ランダム判定ステップにおいて出力された前記検知情報に含まれる前記初期パケットの乱数らしさとを比較し、前記ランダム判定ステップにおいて出力された前記検知情報に含まれる前記初期パケットの乱数らしさが、前記制御情報記憶手段が記憶する前記初期パケットの乱数らしさよりもより乱数らしい場合に、前記制御情報記憶手段が記憶する前記制御情報に基づいて、検知した前記Ｐ２Ｐ端末のトラヒックを制御する、
ことを特徴とする請求項９に記載のＰ２Ｐ端末検知方法。
【請求項１１】
前記制御情報記憶手段には、前記複数のＰ２Ｐソフトウェアの種別に対応付けて、前記制御情報と前記初期パケットの乱数らしさを含む情報とが記憶され、
前記ランダム判定ステップは、前記端末に対して複数の種別のＰ２Ｐソフトウェアを記憶する種別記憶手段が記憶する前記Ｐ２Ｐソフトウェアによる接続を行ない、前記接続が正常に行われた場合に、前記端末が使用するＰ２Ｐソフトウェアを特定し、特定した前記Ｐ２Ｐソフトウェアに対応する前記制御情報と前記初期パケットの乱数らしさを含む情報とを含む検知情報を出力する、
ことを特徴とする請求項１０に記載のＰ２Ｐ端末検知方法。
【請求項１２】
前記ランダム判定ステップは、繰り返し、前記端末に対して前記種別記憶手段が記憶する前記Ｐ２Ｐソフトウェアによる接続を行なうことにより、前記端末が使用するＰ２Ｐソフトウェアを特定する、
ことを特徴とする請求項１１に記載のＰ２Ｐ端末検知方法。
【請求項１３】
ネットワークを介してパケットを送受信する端末がＰ２Ｐ端末であるか否かを検知するＰ２Ｐ端末検知システムであって、
Ｐ２Ｐ端末検知装置は、
前記端末が前記ネットワークを介して送受信するパケットを受信する第１の受信手段と、
前記受信手段が受信した前記パケットに、接続要求を有する属性が含まれている場合は、前記パケットから算出したコネクション情報を、コネクション情報データとして記録し、前記受信ステップが受信した前記パケットに接続要求を有する属性が含まれていない場合は、前記パケットから算出したコネクション情報が、前記コネクション情報データに含まれている場合に、前記パケットを接続確立後に最初に送受信するパケットである初期パケットであると判定するパケット判定手段と、
前記パケット判定手段が前記初期パケットであると判定した場合に、前記初期パケットのランダム性の有無を判定し、前記初期パケットにランダム性があると判定した場合に、前記端末がＰ２Ｐ端末であると検知するランダム判定手段と、
前記ランダム判定手段が前記端末がＰ２Ｐ端末であると検知した結果を検知情報として送信する送信手段と、を備え、
Ｐ２Ｐ端末制御装置は、
前記Ｐ２Ｐ端末検知装置から前記検知情報を受信する第２の受信手段と、
前記第２の受信手段が受信した前記検知情報に基づいて、検知された前記Ｐ２Ｐ端末のトラヒックを制御する制御手段と、
を備えることを特徴とするＰ２Ｐ端末検知システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、P2P通信を行なっている端末を検知し、検知したP2P端末に対する制御を行う技術に関する。
【背景技術】
【０００２】
インターネット上で行われる通信の一形態として、ピア・トゥ・ピア通信（以下、P2P通信と表記する。）と呼ばれるものがある。これは不特定多数のコンピュータ(ノード)が相互に接続され、ルータなどを介しファイルなどの情報を送受信するインターネットの利用形態である。
【０００３】
P2P通信は、ファイルの共有などの大きな恩恵を利用者にもたらす一方で、著作権を侵害するデータの流通に利用されたり、P2P通信のトラヒックの増加が通信ネットワークの大きな負荷となったりするなどの問題を発生させている。また、P2P通信を行うP2Pソフトを悪用したウイルスによる情報漏洩事故が多発し、社会的な問題となっている。最近では、ISP（Internet  Services  Provider）によるトラヒック制御を回避するために、Diffie-Hellman鍵交換を利用した暗号処理MSE(Message Stream Encryption)を実装したP2Pソフトも出現している。
【０００４】
これらの動きを受け、ネットワーク上のP2P端末を検知し、そのトラヒックを制御しようとする試みがなされている。例えば、特許文献１ではペイロード（パケットの総サイズのうち、送信IPや受信IPなどの管理情報（ヘッダ情報）を除いた正味のデータ。）の構造変化を、文字コード出現確率のヒストグラムの変化として評価し、P2P端末を検知するシステムに関する技術が開示されている。また、非特許文献1では、パケットの中身を解析してP2P端末を検知するP2P端末検知手法に関する技術が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開2008-141618号公報
【非特許文献】
【０００６】
【非特許文献１】S. Sen, O. Spatscheck, D. Wang, “Accurate, ScalableIn-Network Identification of P2P Trafic Using Application Signatures,” International World Wide Web Conference, May, 2004
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献1においては、ペイロードの構造変化をP2P端末検知に利用しており、少なくとも2パケット以上のデータが必要になるという問題がある。また、フロー（送信IP、送信ポート、受信IP、受信ポート、プロトコルの5要素が同一であるパケットの集合と、プロトコルが同一で送受信IPおよび送受信ポートが逆転したパケットの集合）単位でペイロードの構造変化を記憶しているため、多数のフローが存在する回線において負荷が高くなるといった課題があった。
【０００８】
また、非特許文献1においては、ペイロードに含まれる特定の文字列をP2P端末検知に利用しており、暗号化を行なうP2P端末の通信では、ペイロードに特定の文字列が現れず、検知できないといった課題があった。すなわち、これらの技術では、P2P端末が暗号化通信を行う場合において、ネットワークに負荷をかけることなく、P2P端末を検知することができず、その結果、本来トラヒック制御が必要なP2P端末に対して、その制御ができないという問題があった。
【０００９】
本発明は、以上の点に鑑みなされたものであり、ネットワークに負荷をかけることなく、P2P端末を検知し、本来トラヒック制御が必要なP2P端末に対する制御が可能なP2P端末検知装置、P2P端末検知方法、およびP2P端末検知システムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した目的を達成するために、本発明にかかるＰ２Ｐ端末検知装置は、ネットワークを介してパケットを送受信する端末がＰ２Ｐ端末であるか否かを検知するＰ２Ｐ端末検知装置であって、前記端末が前記ネットワークを介して送受信するパケットを受信する受信手段と、前記受信手段が受信した前記パケットが接続確立後に最初に送受信するパケットである初期パケットであるか否かを判定するパケット判定手段と、前記パケット判定手段が前記初期パケットであると判定した場合に、前記初期パケットのランダム性の有無を判定し、前記初期パケットにランダム性があると判定した場合に、前記端末がＰ２Ｐ端末であると検知するランダム判定手段と、前記ランダム判定手段が前記端末が前記Ｐ２Ｐ端末であると検知した場合に、検知された前記Ｐ２Ｐ端末のトラヒックを制御する制御手段と、を備えることを特徴とする。
【００１１】
また、本発明は、上記P2P端末検知装置を用いたP2P端末検知方法およびP2P端末検知システムである。
【発明の効果】
【００１２】
本発明によれば、ネットワークに負荷をかけることなく、P2P端末を検知し、本来トラヒック制御が必要なP2P端末に対する制御が可能なP2P端末検知装置、P2P端末検知方法、およびP2P端末検知システムを提供することができる。
【図面の簡単な説明】
【００１３】
【図１】第１の実施の形態におけるP2P端末検知システムの構成を示す図である。
【図２】トラヒック制御装置の構成例を示す図である。
【図３】P2P端末検知装置の構成例を示す図である。
【図４】コネクション管理データの例を示す図である。
【図５】検知情報の一例を示す図である。
【図６】P2P端末制御装置の構成例を示す図である。
【図７】制御ポリシデータの一例を示す図である。
【図８】検知処理の処理手順を示すフローチャートである。
【図９】制御処理の処理手順を示すフローチャートである。
【図１０】第２の実施の形態におけるP2P通信端末検知装置の構成例を示す図である。
【図１１】種別特定処理の処理手順を示すフローチャートである。
【図１２】接続試行処理の処理手順を示すフローチャートである。
【図１３】Winny接続プログラムの鍵情報の例を示す図である。
【発明を実施するための形態】
【００１４】
以下に添付図面を参照して、この発明にかかるP2P端末検知システム、P2P端末検知装置の実施の形態を詳細に説明する。
【００１５】
P2P端末の検知を行なうには、P2P端末間で送受信されるパケットデータを監視する方法が一般的に用いられる。パケットデータには、P2Pソフト特有の情報が記載されていることが多く、そういったP2Pソフトには有効な方法である。しかし、P2Pソフトによっては、当該パケットデータによる検知を逃れるために、パケットデータを暗号化し、特徴のない乱数列に見せかけるものが存在している。
【００１６】
本発明では、この特徴を利用し、初期パケット（コネクション確立後の最初のパケット）のランダム性を検定することで、暗号化通信を行なうP2P端末を検知する。第１の実施の形態では、この点に着目し、P2P端末の検知および検知したP2P端末に対するトラヒック制御について説明している。また、上記の方法では、P2Pソフトの種別までは特定できない。そこで、P2P端末として検知された端末に対して、P2Pソフトのプロトコルに従った接続を行ない、その接続の可否によりP2Pソフト種別を特定する。第２の実施の形態では、この点に着目し、P2P端末の検知および検知したP2P端末に対するトラヒック制御について説明している。
（第１の実施の形態）
まず、第１の実施の形態におけるP2P端末検知システム１０００を、図１から図９を用いて説明する。図１は、第１の実施の形態におけるP2P端末検知システム１０００の構成を示す図である。図１に示すように、P2P端末検知システム１０００は、トラヒック制御装置１０１と、P2P端末検知装置１０２と、P2P端末制御装置１０３とを含んで構成されている。
【００１７】
なお、以下では、P2P端末を検知し、検知したP2P端末に対するトラヒック制御を、上述した各装置で行う前提で説明しているが、例えば、ネットワークを流れるトラヒックに応じて、上述した検知や制御を１つの装置で行うこととしてもよい。まず、トラヒック制御装置１０１について説明する。
【００１８】
トラヒック制御装置１０１は、通信路１０４を流れるトラヒックを受信し、所定の制御ポリシに基づいてトラヒックを制御し、制御後のトラヒックを通信路１０８に送信する。また、トラヒック制御装置１０１は、通信路１０４のトラヒックの中から、検知対象のトラヒック、例えば、検知を行ないたい通信（分析対象の通信）のＩＰアドレスを参照し、参照したＩＰアドレスが設定されている端末が送受信を行なっているトラヒックをコピーし、コピーしたトラヒックを通信路１０５に出力する。なお、通信路１０５、通信路１０６、通信路１０７は、例えば、バスやケーブルなどの情報伝達媒体である。なお、トラヒック制御装置１０１がコピーしたトラヒックには、少なくとも送信IPアドレス、送信ポート、受信IPアドレス、受信ポートの各情報を含んでいるものとする。
【００１９】
P2P端末検知装置１０２は、通信路１０５を流れるトラヒックを受信し、受信したトラヒックの中からP2P通信の検知を行ない、その検知した結果である検知情報を通信路１０６に送信する。この検知情報の具体的な内容については、図５を用いて後述する。
【００２０】
なお、P2P端末検知装置１０２は、トラヒック制御装置１０１が分析対象のトラヒックを選択してコピーしたその分析対象のトラヒックに対して、P2P通信端末を検知する処理を実行することが望ましい。しかし、P2P端末検知装置１０２が十分な性能を持った装置であるならば、分析対象となるトラヒックの選択も含めて、P2P端末検知装置１０２がこれらの処理を実行しても良い。このような構成にすることにより、トラヒック制御装置１０１によるトラヒックの選択、および選択したトラヒックのコピーに係る負荷を軽減できる。この場合、図１において、P2P端末検知装置１０２は、通信路１０５に代えて、通信路１０４に接続し、トラヒック制御装置１０１は、P2P端末検知装置１０２と接続することなく、所定の制御ポリシに基づいてトラヒックを制御することができ、トラヒック制御装置１０１にかかる処理負荷が軽減される。
【００２１】
P2P端末制御装置１０３は、通信路１０６を流れる検知情報を受信し、受信した検知情報に従って、P2P端末に対してどのような制御を行うかを示す制御情報を、通信路１０７に送信する。この制御情報の具体的な内容については、図７を用いて後述する。
【００２２】
通信路１０４及び通信路１０８は、例えば、イントラネットやインターネットなどのネットワーク、あるいはこれらに接続するための通信網である。通信路１０４及び通信路１０８には1台以上の端末が接続され、例えば、ウェブアクセスやファイル転送などの通信を行なっている。P2P端末制御装置１０３は、他のネットワークに接続している複数のトラヒック制御装置に制御情報を送信し、他のネットワーク上を流れるトラヒックを制御しても良い。
【００２３】
図２は、トラヒック制御装置１０１の構成例を示す図である。図２に示すように、トラヒック制御装置１０１は、例えば、ルータ等のネットワーク機器であり、CPU（Central  Processing  Unit）２０４と、CPU２０４が処理を実行するために必要なデータを格納するためのメモリ２０６と、他装置と通信を行なうためのIF（インタフェース）２０１、IF２０２、IF２０３、IF２０５と、キーボード、ディスプレイなどの入出力を行なうための入出力装置２０７と、これらの各装置を接続する通信路（バス）２０８とを含んで構成される。なお、他の図においてもIF（インタフェース）と呼ぶが、接続先に応じて通信インタフェース、入出力インタフェース、又は動作に応じて通信装置、受信装置、送信装置、入出力装置などと呼ぶこともある。
【００２４】
CPU２０４は、メモリ２０６に記憶されたトラヒック制御プログラム２１０を実行する。メモリ２０６には、トラヒックを制御するためのトラヒック制御ルール２０９が格納されている。トラヒック制御ルール２０９には、通信を制御する情報が含まれており、例えば、トラヒック制御装置１０１を通過する通信のパケットの廃棄、帯域の制限、宛先経路の変更、トラヒックをコピーして他のIFから送信するミラーリング等のルールが格納されている。
【００２５】
トラヒック制御ルール２０９は、入出力装置２０７、あるいは通信路１０７を経由し、IF２０５を介して新たなルールを受信することによって書き換え又は追加される。トラヒック制御装置１０１は、通信路１０４から受信したトラヒックを、トラヒック制御ルール２０９に従い、IF２０２及び/又はIF２０３を介して、通信路１０５及び/又は通信路１０８に送信する。
【００２６】
図３は、P2P端末検知装置１０２の構成例を示す図である。上述したように、P2P端末検知装置１０２は、トラヒックの中からP2P通信を行なっている端末を検知するものである。図３に示すように、P2P端末検知装置１０２は、CPU３０２と、メモリ３０４と、IF３０１、IF３０３と、入出力装置３０５と、これらの各装置を接続する通信路（バス）とを含んで構成されたコンピュータである。
【００２７】
CPU３０２がメモリ３０４に記憶されたP2P端末検知プログラム３０７を実行することにより、P2P通信を行なっている端末を検知する。メモリ３０４には、初期パケットを判定するためのコネクション情報管理データ３０８が格納されている。P2P端末検知プログラム３０７は、あらかじめ、メモリ３０４に格納されていてもよいし、必要な時に、IF３０１あるいはIF３０３を介して他の装置からロード（インストール）されてもよい。
【００２８】
P2P端末検知装置１０２のIF３０１がTCP（Transmission  Control  Protocol）コネクション接続要求（TCPヘッダ内のSYNフラグをONにした）パケットを受信すると、CPU３０２からの指示にしたがって、P2P端末検知プログラム３０７は、コネクション管理データ３０８に当該パケットのコネクション情報４０１を登録し、1バイト以上のペイロードを有しているパケットを受信すると、コネクション管理データ３０８から当該パケットのコネクション情報を削除する。コネクション管理データ３０８は、例えば、図４に示すように、コネクション情報４０１の情報を含む。ここで、コネクション情報４０１とは、通信する端末同士のコネクションを識別するための情報であり、例えば、送信IPアドレス、送信ポート番号、受信IPアドレス、受信ポート番号から算出される情報である。
【００２９】
一般に、暗号化して通信を行なうP2P端末は、特徴のない乱数列に見せかけたパケットを初期パケットとして用いる。ＣＰＵ３０２からの指示に応じて、P2P端末検知プログラム３０７は、この初期パケットに対してランダム検定を行ない、当該コネクションがP2P端末による通信であるか判定を行なう。P2P端末検知装置１０２は、この判定結果を検知情報としてIF３０３を介して通信路１０６に送信する。
【００３０】
図５は、P2P端末検知プログラム３０７が、ＣＰＵ３０２からの指示に応じて、通信路１０６に送信する検知情報の一例を示す図である。図５に示すように、検知情報には、少なくとも、端末を識別（特定）するための端末情報５０１と、その端末がP2P端末である可能性の高さ（大きさ）を表す確信度５０２と、その端末が利用しているP2Pソフトの種別を示すP2Pソフト種別５０３とが含まれている。なお、P2P端末検知プログラム３０７によってP2Pソフト種別５０３を特定することができない場合は、P2Pソフト種別５０３としてAny（何らかのP2Pソフトであることを示す識別子）を送信する。
【００３１】
また、端末情報５０１には、ランダム性があると判定されたパケット（乱数らしさがある一定の閾値以下（あるいは閾値以上）のパケット）の送信IP５０４と、送信ポート５０５と、受信IP５０６と、受信ポート５０７とが含まれている。ここで、乱数らしさとは、真の乱数にどれだけ近いかの尺度を表している。図５では、IPアドレスが「192.168.0.1」の「10001」番ポートから、IPアドレスが「192.168.0.2」の「20000」番ポートに対して送信したパケットを、何らかのP2P通信である（P2Pソフト種別５０３が「Any」である）と検知した結果を示している。なお、P2P端末検知プログラム３０７による具体的な処理については、図８を用いて後述する。続いて、P2P端末制御装置１０３について説明する。
【００３２】
図６は、P2P端末制御装置１０３の構成例を示す図である。P2P端末制御装置103は、上述したように、P2P端末の通信を制御するものであり、CPU６０３と、メモリ６０２と、データを記録する容量を持つハードディスクやフラッシュメモリなどの記憶装置６０６と、他装置と通信を行うためのIF６０１、IF６０５と、入出力装置６０４と、これらの各装置間を接続する通信路６０７とを含んで構成されたコンピュータである。
【００３３】
CPU６０３は、メモリ６０２に記憶されているP2P端末制御プログラム６０８を実行することにより、P2P端末のトラヒック制御を行う。なお、記憶装置６０６には、P2P端末のトラヒックをどのように制御するのかを示す制御ポリシを格納した制御ポリシデータ６０９が格納されている。P2P端末制御プログラム６０８や制御ポリシデータ６０９は、あらかじめ、メモリ６０２または記憶装置６０６に格納されていてもよいし、入出力装置６０４からまたはIF６０１あるいはIF６０５を介して他の装置から、インストール（ロード）されてもよい。
【００３４】
図７は、制御ポリシデータ６０９の一例を示す図である。図７に示すように、制御ポリシデータ６０９は、P2Pソフト種別７０１と、確信度７０２と、制御情報７０３とを含む情報である。これらの情報は、あらかじめ管理者等によって設定され、制御ポリシデータ６０９のP2Pソフト種別７０１及び確信度７０２は、制御の内容である制御情報７０３を選択するための基準である。図７に示すように、制御情報７０３は、P2Pソフト種別７０１の種別および確信度７０２のレベル（数値の大きさ）に対応付けて記憶されている。
【００３５】
P2P端末制御プログラム６０８は、ＣＰＵ６０３からの指示に応じて、受信した検知情報に含まれるP2Pソフト種別５０３及び確信度５０２と、制御ポリシデータ６０９のP2Pソフト種別７０１及び確信度７０２とを比較し、比較した結果に対応する制御情報７０３を、IF６０５を介して通信路１０７に送信する。P2P端末制御プログラム６０８の具体的な処理については図９を用いて後述する。
【００３６】
続いて、P2P端末検知装置１０２のP2P端末検知プログラム３０７がP2P端末を検知し、検知情報を送信する処理（以下、検知処理と呼ぶ。）について説明する。図８は、検知処理の処理手順を示すフローチャートである。
【００３７】
図８に示すように、P2P端末検知プログラム３０７は、ＣＰＵ３０２からの指示に応じて、通信路１０５を流れるパケットを、IF３０１を介して受信し（ステップＳ８０１）、受信したパケットのヘッダ部を解析し、受信したパケットが、SYNフラグがONになっているパケット（SYNパケット）であるか否かを判定する（ステップＳ８０２）。
【００３８】
そして、P2P端末検知プログラム３０７は、受信したパケットが、SYNフラグがONになっているパケット（SYNパケット）であると判定した場合（ステップＳ８０２；Ｙｅｓ）、受信したパケットからコネクション情報４０１を算出し、算出したコネクション情報４０１を、コネクション情報管理データ３０８に登録し（ステップＳ８０３）、図８に示す検知処理を終了させる。
【００３９】
コネクション情報４０１は、上述したように、例えば、送信IP、送信ポート、受信IP、受信ポートを結合した12バイトの情報である。なお、上記コネクション情報４０１の算出方法は一例であり、P2P端末間の通信を識別できる情報であればどのような手法によって算出してもよい。
【００４０】
一方、P2P端末検知プログラム３０７は、受信したパケットが、SYNフラグがONになっているパケット（SYNパケット）でないと判定した場合（ステップＳ８０２；Ｎｏ）、P2P端末検知プログラム３０７は、さらに、受信したパケットが1バイト以上のペイロードを有しているか否かを判定する（ステップＳ８０４）。
【００４１】
P2P端末検知プログラム３０７は、受信したパケットが1バイト以上のペイロードを有していないと判定した場合（ステップＳ８０４；Ｎｏ）、図８に示す検知処理を終了させる。
【００４２】
一方、P2P端末検知プログラム３０７は、受信したパケットが1バイト以上のペイロードを有していると判定した場合（ステップＳ８０４；Ｙｅｓ）、さらに、ステップＳ８０４で判定したパケットのコネクション情報と、送受信IP及び送受信ポートを逆転したパケットのコネクション情報とを、ステップＳ８０３と同様の方法で算出し、算出した２つのコネクション情報のうち、どちらか一方のコネクション情報が、コネクション情報管理データ３０８に既に登録されているか否かを判定する（ステップＳ８０５）。
【００４３】
そして、P2P端末検知プログラム３０７は、算出した２つのコネクション情報のうち、どちらか一方のコネクション情報が、コネクション情報管理データ３０８に既に登録されていると判定した場合（ステップＳ８０５；Ｙｅｓ）、コネクション情報データ３０８から該当コネクション情報４０１を削除し、受信したパケットを初期パケットと判定して、ステップＳ８０６に進む。
【００４４】
一方、P2P端末検知プログラム３０７は、算出した２つのコネクション情報のうち、どちらか一方のコネクション情報が、コネクション情報管理データ３０８に既に登録されていないと判定した場合（ステップＳ８０５；Ｎｏ）、図８に示す検知処理を終了させる。
【００４５】
そして、P2P端末検知プログラム３０７は、ステップＳ８０５において、受信したパケットが初期パケットであると判定すると、そのパケットに対してランダム検定を行なう（ステップＳ８０７）。ランダム検定には、例えば、パケットデータのビット列の偏りを用いる。パケットデータが真にランダムであれば、パケットデータに含まれる0の個数と1の個数は等しくなる可能性が高い。そこで、（0の個数−1の個数）／（0と1の個数）の絶対値を求め、この値がある閾値（例えば0.2）より小さい場合は、ランダム性があると判定する（環境に合わせて閾値を変えてもよい）。
【００４６】
なお、上記のランダム検定方法は一例であり、例えば「NIST Special Publication 800-22」で述べられているランダム検定や、その他のランダム検定を用いてもよいし、それらを複数組み合わせて、全て閾値以下（あるいは閾値以上）だった場合（あるいは特定の検定だけ閾値以下（あるいは閾値以上））であった場合にランダム性があると判定してもよい。また、P2P端末検知プログラム３０７は、上述したランダム検定を、初期パケットを受信する毎に行い、初期パケットにランダム性があると判定する毎に、端末がＰ２Ｐ端末であると検知するものとする。
【００４７】
そして、P2P端末検知プログラム３０７は、ステップＳ８０６においてランダム検定を行ったパケットにランダム性があるか否かを判定し（ステップＳ８０７）、そのパケットにランダム性があると判定した場合（ステップＳ８０７；Ｙｅｓ）、当該パケットをP2P通信端末による通信と判定し、判定した結果を検知情報として、IF３０３を介して通信路１０６に送信し（ステップＳ８０８）、図８に示す検知処理を終了させる。
【００４８】
検知情報には、判定した端末情報５０１と、その端末がP2P端末である可能性の大きさを表す確信度５０２と、その端末が利用しているP2Pソフト種別５０３とが含まれている。なお、本実施の形態においては、P2Pソフト種別が特定できないため、何らかのP2Pソフトであることを意味する「Any」をP2Pソフト種別として送信する。また、確信度は、例えば、{1-|（0の個数−1の個数）｜／（0と1の個数）}などにより求める。例示した式によれば、確信度は、パケットデータに0と1が同じ数だけ存在する場合に1であり、パケットデータに0だけ、又は1だけしか存在しない場合に0となる。なお、上記の確信度の算出方法は一例であり、ランダム検定を用いて乱数らしさを算出し、確信度としてもよい。
【００４９】
一方、P2P端末検知プログラム３０７は、そのパケットにランダム性がないと判定した場合（ステップＳ８０７；Ｎｏ）、図８に示す検知処理を終了させる。このステップＳ８０３〜Ｓ８０５、Ｓ８０７、Ｓ８０８のいずれかの処理が終了すると、図８に示す検知処理の全ての処理が終了する。
【００５０】
続いて、P2P端末制御装置１０３のP2P端末制御プログラム608がP2P端末検知装置１０３から検知情報を受信し、制御情報を送信する処理（以下、制御処理と呼ぶ。）について説明する。図９は、制御処理の処理手順を示すフローチャートである。
【００５１】
図９に示すように、P2P端末制御プログラム６０８は、ＣＰＵ６０３からの指示に応じて、通信路１０６を流れる検知情報をIF６０１を介して受信し（ステップＳ９０１）、受信した検知情報に含まれているP2Pソフト種別５０３及び確信度５０２と、制御ポリシデータ６０９に含まれるP2Pソフト種別７０１及び確信度７０２とを比較し、該当するポリシ（検知情報に含まれるP2Pソフト種別５０２と制御ポリシデータ６０９に含まれるP2Pソフト種別７０１が一致し、検知情報に含まれる確信度５０２が、制御ポリシデータ６０９の確信度７０２の値以上であるポリシ）が存在するか否かを判定する（ステップＳ９０２）。
【００５２】
そして、P2P端末制御プログラム６０８は、該当するポリシが存在すると判定した場合（ステップＳ９０２；Ｙｅｓ）、検知情報に含まれている端末情報５０１と、制御情報７０３を、IF６０５を介して通信路１０７に送信し、図９に示す制御処理を終了させる。本実施の形態においては、例えば、図７に示したポリシを保持しているP2P端末制御装置１０３が、図５に示した検知情報を受信した場合、制御情報として「帯域制御」が選択されることとなる。そして、通信路１０７を介してトラヒック制御装置１０１が制御情報を受信すると、その制御情報に設定された内容（例えば、「帯域制御」）に従ってトラヒックを制御する。
【００５３】
一方、P2P端末制御プログラム６０８は、該当するポリシが存在しないと判定した場合（ステップＳ９０２；Ｎｏ）、何もせずに図９に示す制御処理を終了させる。そして、ステップＳ９０２またはＳ９０３の処理が終了すると、図９に示す制御処理の全ての処理が終了する。
【００５４】
このように、ネットワークを介してパケットを送受信する端末がＰ２Ｐ端末であるか否かを検知するＰ２Ｐ端末検知システム１０００において、Ｐ２Ｐ端末検知装置１０２は、ＩＦ３０１が、端末がネットワークを介して送受信するパケットを受信し、Ｐ２Ｐ端末検知プログラム３０７が、ＩＦ３０１が受信したパケットが接続確立後に最初に送受信するパケットである初期パケットであるか否かを判定し、初期パケットであると判定した場合に、初期パケットのランダム性の有無を判定し、初期パケットにランダム性があると判定した場合に、端末がＰ２Ｐ端末であると検知し、ＩＦ３０３が、Ｐ２Ｐ端末検知プログラム３０７が端末がＰ２Ｐ端末であると検知した結果を検知情報として送信し、Ｐ２Ｐ端末制御装置１０３は、ＩＦ６０１が、Ｐ２Ｐ端末検知装置１０３から前記検知情報を受信し、Ｐ２Ｐ端末制御プログラム６０２が、ＩＦ６０１が受信した検知情報に基づいて、検知されたＰ２Ｐ端末のトラヒックを制御するので、ネットワークに負荷をかけることなく、P2P端末を検知し、本来トラヒック制御が必要なP2P端末に対する制御が可能となる。すなわち、初期パケットのみを用いて、暗号化通信を行なうP2P端末の検知が可能となり、検知に応じたP2P端末の制御が可能となる。
【００５５】
なお、本実施例の一部を変更して、次のように実施してもよい。P2P端末検知プログラム３０７の検知結果を、入出力装置２０７に出力する。これにより、ネットワーク管理者が当該P2P端末の利用者に対して警告メッセージを発したりするなどの対策を講じることができる。
【００５６】
また、P2P端末検知プログラム３０７は、コネクション確立要求に対する応答（TCPヘッダ内のSYNフラグ及びACKフラグをONにした）パケットを受信すると、コネクション管理データ３０８に当該パケットのコネクション情報を登録する。これにより、確立しないTCP接続を大量に試みるSYN-Flood攻撃（SYN flooding attack）などの無意味なコネクション情報を保持しなくなる。
【００５７】
コネクション情報登録（ステップＳ７０３）では、受信したパケットと、送受信IP及び送受信ポートが逆転したパケットとのコネクション情報が同じ値になるようなコネクション情報算出方法を利用してもよい（例えば、送信IP、送信ポートを結合した値のMD5ハッシュ値と、受信IP、受信ポートを結合した値のMD5ハッシュ値との排他的論理和を取るなどして算出）。これによりステップＳ７０５の処理において、送受信IP及び送受信ポートを逆転させたコネクション情報を算出する必要がなくなる。また、コネクション情報管理データ３０８のメモリ領域を節約するために、先ほど求めた排他的論理和の上位4バイトをコネクション情報４０１としても良い。このとき、コネクション情報４０１の衝突が起こり、コネクションを誤って識別してしまう可能性があるため、メモリ領域に応じてコネクション情報４０１の大きさを変えてもよい。
（第２の実施の形態）
本実施の形態においては、上述したP2P端末検知プログラム３０７の検知情報送信（ステップＳ８０８）に係る処理が第１の実施の形態とは異なっているため、第１の実施の形態と同一の構成要素には同一の符号を付すことによってその説明を省略し、以下では、上述した異なる点を中心に説明する。
【００５８】
図１０は、第２の実施の形態におけるP2P通信端末検知装置９０２の構成例を示す図である。図１０に示すように、P2P通信端末検知装置９０２は、第１の実施の形態におけるメモリ３０４とは異なるメモリ９０４を備えている。メモリ９０４は、第１の実施の形態におけるメモリ３０４と同様の内容を記憶するほか、P2Pソフト種別を特定するためのＰ２Ｐ種別特定プログラム１００１を記憶している。さらに、P2P種別特定プログラム１００１には、P2P端末に接続するための、P2Pソフトの種別に応じた接続プログラムを記憶している。図１０では、その一例として、BitTorrent接続プログラム１００２ａと、Winny接続プログラム１００２ｂとが記憶されているが、これに限らず様々なP2Pソフトの種別に応じた接続プログラムを記憶することができる。
【００５９】
第２の実施の形態においては、CPU３０３がメモリ９０４に記憶されているP2P種別特定プログラム１００１を実行することにより、P2P種別の特定を行なう。P2P種別特定プログラム１００１は、上述したように、P2Pソフトに応じた接続を行なうためのP2P接続プログラム１００２を有している。これらのプログラムは、あらかじめ、メモリ９０４に格納されていてもよいし、必要なときに、IF３０１あるいはIF３０３を介して他の装置からロード（インストール）されてもよい。
【００６０】
図１１は、P2P端末検知装置９０２のP2P種別特定プログラム１００１が、P2Pソフトの種別を特定するための処理（以下、種別特定処理と呼ぶ。）の処理手順を示すフローチャートである。P2P種別特定プログラム１００１は、第１の実施の形態における検知情報送信（ステップＳ８０８）に代わって、P2P端末検知プログラム３０７から呼び出される。
【００６１】
図１１に示すように、P2P端末検知装置９０２のP2P種別特定プログラム１００１は、接続試行をしていないP2P接続プログラム１００２が存在するか否か、すなわち全接続プログラムについて接続を試行したか否かを判定する（ステップＳ１１０１）。
【００６２】
そして、P2P種別特定プログラム１００１は、全接続プログラムについて接続を試行していないと判定した場合（ステップＳ１１０１；Ｎｏ）、第１の実施の形態におけるステップＳ８０７において、P2P端末と判定された端末に対して、P2P接続プログラム１００２による接続を試行する接続試行処理を行う（ステップＳ１１０２）。なお、P2P接続プログラム１００２の例として、Winny接続プログラム１００２ｂが接続試行処理を行う場合の処理手順については、図１２を用いて後述する。
【００６３】
一方、P2P種別特定プログラム１００１は、全接続プログラムについて接続を試行したと判定した場合（ステップＳ１１０１；Ｙｅｓ）、図１１に示した種別特定処理を終了させる。
【００６４】
そして、P2P種別特定プログラム１００１は、ステップＳ１１０２において接続を試行した結果、P2P接続プログラム１００２によって接続が正しく行なわれたか否かを判定し（ステップＳ１１０３）、P2P接続プログラム１００２によって接続が正しく行なわれたと判定した場合（ステップＳ１１０３；Ｙｅｓ）、接続に利用したP2P接続プログラムの対象としているP2Pソフトが、当該端末で稼働していると判断し、ステップＳ１１０４に進む。
【００６５】
一方、P2P種別特定プログラム１００１は、P2P接続プログラム１００２によって接続が正しく行なわれていないと判定した場合（ステップＳ１１０３；Ｎｏ）ステップＳ１１０１に戻って、ステップＳ１１０１〜Ｓ１１０３の処理を繰り返す。
【００６６】
P2P種別特定プログラム１００１は、ステップＳ１１０３において、P2P接続プログラム１００２によって接続が正しく行なわれたと判定すると、その判定結果を、検知情報としてIF３０３を介して通信路１０６に送信し（ステップＳ１１０４）、図１１に示した種別特定処理を終了させる。検知情報には、判定した端末情報５０１と、その端末がP2P端末である可能性の大きさを表す確信度５０２、その端末が利用しているP2Pソフト種別５０３が含まれている。本実施例では、P2P通信するプログラムを特定させているため、確信度を1として送信してよい。
【００６７】
図１２は、図１１に示した接続試行処理の処理手順を示すフローチャートである。上述したように、図１２では、Winnyの特定を行なうWinny接続プログラム１００２ｂについて説明する。
【００６８】
図１２に示すように、Winny接続プログラム１００２ｂは、第１の実施の形態におけるステップＳ８０７の処理において、P2P端末と判定された端末に対して、鍵情報を送信する（ステップＳ１２０１）。鍵情報は、図１３に例示するように、乱数１３０１と、RC4暗号鍵１３０２と、データ１３０３とを含んでいる。データ１３０３は、例えば、Winnyを認識するためのバージョン番号であるバイト列「01 00 00 00 61」を、RC4暗号鍵１３０２を用いて暗号化したバイト列である。
【００６９】
Winny接続プログラム１００２ａは、接続先の端末からパケットを受信したか否かを判定する（ステップＳ１２０２）。そして、Winny接続プログラム１００２ａは、接続先の端末からパケットを受信したと判定した場合（ステップＳ１２０２；Ｙｅｓ）、ステップＳ１２０３に進む。
【００７０】
一方、Winny接続プログラム１００２ａは、接続先の端末からパケットを受信していないと判定した場合（ステップＳ１２０２；Ｎｏ）、図１２に示す接続試行処理を終了させる。例えば、Winny接続プログラム１００２ａは、ある一定時間（例えば、閾値として設定された時間3秒）経過してもパケットを受信しない場合、図１２に示す接続試行処理を終了させる。
【００７１】
ステップＳ１２０２において、接続先の端末からパケットを受信したと判定すると、Winny接続プログラム１００２ａは、受信したパケットの復号処理を行なう（ステップＳ１２０３）。このとき、接続先がWinnyであれば、図１３に例示したデータと同一構造のデータが送られてくる。そこで、RC4暗号鍵１３０２を用いて、データ１３０３の復号化を行なう。
【００７２】
Winny接続プログラムは、ステップＳ１２０３において復号した結果を、上述したバイト列「01 00 00 00 61」と比較して一致しているか否かを判定し（ステップＳ１２０４）、両者が一致していると判定した場合（ステップＳ１２０４；Ｙｅｓ）、接続先端末に正しく接続されたと判定する（ステップＳ１２０５）。そして、ステップＳ１２０２またはＳ１２０５の処理が終了すると、図１２に示した接続試行処理の全ての処理が終了する。
【００７３】
このように、第２の実施の形態によれば、Ｐ２Ｐ端末検知装置９０２は、メモリ９０４が、複数の種別のＰ２Ｐソフトウェアを記憶し、Ｐ２Ｐ端末検知装置１０３は、記憶装置６０６が、複数のＰ２Ｐソフトウェアの種別に対応付けて、制御情報と初期パケットの乱数らしさを含む情報とを制御ポリシデータ６０９として記憶し、Ｐ２Ｐ検知プログラム３０７は、端末に対してメモリ９０４が記憶するＰ２Ｐソフトウェアによる接続を行ない、接続が正常に行われた場合に、端末が使用するＰ２Ｐソフトウェアを特定し、特定したＰ２Ｐソフトウェアに対応する制御情報と初期パケットの乱数らしさを含む情報とを含む検知情報を出力する、ので、P2Pソフト種別を考慮したP2P通信端末の検知が可能となり、検知に応じたP2P端末の制御が可能となる。
【００７４】
本発明は、上記実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせても良い。
【符号の説明】
【００７５】
１０００…P2P端末検知システム、１０１…トラヒック制御装置、１０２…P2P端末検知装置、１０３…P2P端末制御装置、２０９…トラヒック制御ルール、２１０…トラヒック制御プログラム、３０７…P2P端末検知プログラム、３０８…コネクション管理データ、６０２…P2P端末制御プログラム、６０９…制御ポリシデータ、１００１…種別特定プログラム。
【図１】
0005520650.tif 000002
【図２】
0005520650.tif 000003
【図３】
0005520650.tif 000004
【図４】
0005520650.tif 000005
【図５】
0005520650.tif 000006
【図６】
0005520650.tif 000007
【図７】
0005520650.tif 000008
【図８】
0005520650.tif 000009
【図９】
0005520650.tif 000010
【図１０】
0005520650.tif 000011
【図１１】
0005520650.tif 000012
【図１２】
0005520650.tif 000013
【図１３】
0005520650.tif 000014