TOP > 国内特許検索 > 通信分類装置及び方法 > 明細書

明細書 :通信分類装置及び方法

発行国 日本国特許庁(JP)
公報種別 特許公報(B2)
特許番号 特許第5682089号 (P5682089)
公開番号 特開2012-175296 (P2012-175296A)
登録日 平成27年1月23日(2015.1.23)
発行日 平成27年3月11日(2015.3.11)
公開日 平成24年9月10日(2012.9.10)
発明の名称または考案の名称 通信分類装置及び方法
国際特許分類 H04L  12/70        (2013.01)
G06F  13/00        (2006.01)
FI H04L 12/70 100Z
G06F 13/00 510A
請求項の数または発明の数 6
全頁数 18
出願番号 特願2011-033932 (P2011-033932)
出願日 平成23年2月18日(2011.2.18)
審査請求日 平成25年7月18日(2013.7.18)
特許権者または実用新案権者 【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
【識別番号】899000068
【氏名又は名称】学校法人早稲田大学
発明者または考案者 【氏名】森 達哉
【氏名】千葉 大紀
【氏名】後藤 滋樹
個別代理人の代理人 【識別番号】100107766、【弁理士】、【氏名又は名称】伊東 忠重
【識別番号】100070150、【弁理士】、【氏名又は名称】伊東 忠彦
【識別番号】100124844、【弁理士】、【氏名又は名称】石原 隆治
審査官 【審査官】廣川 浩
参考文献・文献 特開2011-034416(JP,A)
澤谷 雪子,メッセージ本文受信前でのスパムメール検知方式の精度向上に関する一検討,電子情報通信学会技術研究報告,日本,社団法人電子情報通信学会,2009年11月 6日,第109巻 第285号,pp.19~24
調査した分野 H04L 12/00-12/955
G06F 13/00
特許請求の範囲 【請求項1】
通常の通信、悪意のある通信を弁別するための通信分類装置であって、
通信を発生させた端末の判定対象アドレスを取得し、該判定対象アドレスを構成するビット列の構造的な性質に基づいて、該判定対象アドレスに固有な特徴を特徴ベクトルとして抽出する特徴ベクトル抽出手段と、
随時または所定の周期で取得した悪意性の有無を示すラベルが付与されたアドレスのリストを格納した訓練データ記憶手段と、
前記訓練データ記憶手段の前記アドレスのリストに対し、アドレス毎に、アドレスに固有な特徴を特定することにより特徴ベクトルを抽出し、該特徴ベクトルに対して教師付き機械学習を適用して訓練を実施し、訓練結果を出力するアドレス訓練手段と、
前記アドレス訓練手段の前記訓練結果と前記特徴ベクトル抽出手段で抽出された前記特徴ベクトルを用いて、通信が通常の通信か、または、悪意のある通信かを確率的に判定する判定手段と、
を有し、
前記特徴ベクトル抽出手段は、
前記判定対象アドレスを構成するビット列をサブビット列に分割し、各サブビット列を任意の関数で変換した値を前記特徴ベクトルの要素とする手段を含む
ことを特徴とする通信分類装置。
【請求項2】
通常の通信、悪意のある通信を弁別するための通信分類装置であって、
ある一定の性質を持つアドレスを収集したアドレスリストからなる特徴抽出用アドレス情報を格納するアドレスリスト記憶手段と、
通信を発生させた端末の判定対象アドレスを取得し、該判定対象アドレスを構成するビット列の構造的な性質に基づいて、該判定対象アドレスに固有な特徴を特徴ベクトルとして抽出する特徴ベクトル抽出手段と、
随時または所定の周期で取得した悪意性の有無を示すラベルが付与されたアドレスのリストを格納した訓練データ記憶手段と、
前記訓練データ記憶手段の前記アドレスのリストに対し、アドレス毎に、アドレスに固有な特徴を特定することにより特徴ベクトルを抽出し、該特徴ベクトルに対して教師付き機械学習を適用して訓練を実施し、訓練結果を出力するアドレス訓練手段と、
前記アドレス訓練手段の前記訓練結果と前記特徴ベクトル抽出手段で抽出された前記特徴ベクトルを用いて、通信が通常の通信か、または、悪意のある通信かを確率的に判定する判定手段と、
を有し、
前記特徴ベクトル抽出手段は、
前記判定対象アドレスが前記アドレスリスト記憶手段に格納されている前記特徴抽出用アドレス情報に含まれるか否かにより値を定め、特徴ベクトルの構成要素の値とする手段を含む
ことを特徴とする通信分類装置。
【請求項3】
前記アドレス訓練手段及び前記判定手段は、
前記訓練結果として、悪意の有無を2値で表す、または、悪意性の距離もしくは確率を用いたスコアで表現する手段を含む
請求項1または2記載の通信分類装置。
【請求項4】
通常の通信、悪意のある通信を弁別するための通信分類方法であって、
特徴ベクトル抽出手段が、通信を発生させた端末の判定対象アドレスを取得し、該判定対象アドレスを構成するビット列の構造的な性質に基づいて、該判定対象アドレスに固有な特徴を特徴ベクトルとして抽出する特徴ベクトル抽出ステップと、
アドレス訓練手段が、随時または所定の周期で取得した悪意性の有無を示すラベルが付与されたアドレスのリストを格納した訓練データ記憶手段の前記アドレスのリストに対し、アドレス毎に、アドレスに固有な特徴を特定することにより特徴ベクトルを抽出し、該特徴ベクトルに対して教師付き機械学習を適用して訓練を実施し、訓練結果を出力するアドレス訓練ステップと、
判定手段が、前記アドレス訓練ステップで出力された前記訓練結果と前記特徴ベクトル抽出ステップで抽出された前記特徴ベクトルを用いて、通信が通常の通信か、または、悪意のある通信かを確率的に判定する判定ステップと、
を行い、
前記特徴ベクトル抽出ステップにおいて、
前記判定対象アドレスを構成するビット列をサブビット列に分割し、各サブビット列を任意の関数で変換した値を前記特徴ベクトルの要素とする
ことを特徴とする通信分類方法。
【請求項5】
通常の通信、悪意のある通信を弁別するための通信分類方法であって、
特徴ベクトル抽出手段が、通信を発生させた端末の判定対象アドレスを取得し、該判定対象アドレスを構成するビット列の構造的な性質に基づいて、該判定対象アドレスに固有な特徴を特徴ベクトルとして抽出する特徴ベクトル抽出ステップと、
アドレス訓練手段が、随時または所定の周期で取得した悪意性の有無を示すラベルが付与されたアドレスのリストを格納した訓練データ記憶手段の前記アドレスのリストに対し、アドレス毎に、アドレスに固有な特徴を特定することにより特徴ベクトルを抽出し、該特徴ベクトルに対して教師付き機械学習を適用して訓練を実施し、訓練結果を出力するアドレス訓練ステップと、
判定手段が、前記アドレス訓練ステップで出力された前記訓練結果と前記特徴ベクトル抽出ステップで抽出された前記特徴ベクトルを用いて、通信が通常の通信か、または、悪意のある通信かを確率的に判定する判定ステップと、
を行い、
前記特徴ベクトル抽出ステップにおいて、
ある一定の性質を持つアドレスを収集したアドレスリストからなる特徴抽出用アドレス情報を格納するアドレスリスト記憶手段を参照し、前記判定対象アドレスが、該アドレスリスト記憶手段に格納されている該特徴抽出用アドレス情報に含まれるか否かにより値を定め、特徴ベクトルの構成要素の値とする
ことを特徴とする通信分類方法。
【請求項6】
前記アドレス訓練ステップ及び前記判定ステップにおいて、
前記訓練結果として、悪意の有無を2値で表す、または、悪意性の距離もしくは確率を用いたスコアで表現する
請求項4または5記載の通信分類方法。
発明の詳細な説明 【技術分野】
【0001】
本発明は、通信分類装置及び方法に係り、特に、悪意のあるソフトウェア等の通信を弁別するための通信分類装置及び方法に関する。
【背景技術】
【0002】
ワームやボットネットと呼ばれるマルウェア(悪意のあるソフトウェア)による被害が拡大・深刻化している。マルウェアに感染したコンピュータはネットワークに接続された他のコンピュータに対して不正あるいは有害な動作を行うことが特徴であり、迷惑メールの大量送信や、サーバへの不正な大量アクセスによるサービス妨害攻撃といった悪質な行動を行うためのツールとして使われる。マルウェアの脅威は外部に対する攻撃のみならず、感染したコンピュータからクレジット番号やアドレス帳などの個人情報を抽出し、外部のコンピュータに送信する活動も存在する。このようなマルウェアによる被害を未然に防ぐためにはマルウェア本体を送受信している悪意のある通信を未然に検出する技術が必要となる。
【0003】
一般に悪意のある通信を検出する方法として、DPI (Deep Packet Inspection) 技術が広く普及している(例えば、非特許文献1参照)。DPIは時々刻々と到来するパケット群をリアルタイムに分析することによって通信の中身を再構成し、その中身に対して復号化やパターンマッチングを適用することによって悪意のある通信に固有な既知のパターンを発見する手法である。この手法は復号に要する演算リソースが必要であることや、復号が困難な暗号化された通信に対して適用ができないこと、およびパターンが未知である場合には適用できないという問題があった。特に演算リソースに関しては、ネットワーク回線の超高速化が進むに連れ、顕著な問題となることが予想される。
【0004】
上記問題の解決をサポートする一つの手段として、悪意のある通信を開始する端末に振られているアドレスの評判(レピュテーション)を用いる手法がある(例えば、非特許文献2参照)。ここでアドレスとはIPアドレスのようにネットワーク上の端末等に対して相互に到達性を得る為につけられたアドレスを指す。この方法は悪意のある通信を行う端末のアドレスがある一定のアドレス空間に集中しやすいという性質を利用したものであり、予め評判が悪いあるいは良いアドレスのリストを収集し、得られた評判リストと新たに観測した通信のアドレスを照合することによって、該当する通信の悪意性を推定的に判定する。当該技術は、用いる情報が端末アドレスだけであるので、簡便で軽量な手法によって超高速回線における適用が可能である。
【先行技術文献】
【0005】

【非特許文献1】John Pirc "Common Network Security Misconceptions: Firewalls Exposed" http://www.sans.edu/resources/securitylab/pirc_john_firewalls.php
【非特許文献2】Commtouch Unveils New IP Reputation Service Based on Global Real-Time Data http://www.commtouch.com/press-releases/commtouch-unveils-new-ip-reputation-service-based-global-real-time-data
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上記非特許文献2のアドレスの評判リストを用いる方法は、いかにアドレスが収集されたかに大きく依存するため、一度アドレスが得られた後にはその精度を改善することが困難であったり、評判の収集時において観測されなかったアドレスに対しては判定ができない問題がある。例えば悪意のある通信に地域的な特徴が存在する場合、地域Aでの観測を元に構成した評判リストが地域Bではあまり役に立たないという問題がある。また、複数のアドレス評判リストや、アドレスの悪意性に関連するいくつかのヒントが得られているとき、各々の情報を用いて統合的な判断を下す一般的な手法はこれまでになかった。
【0007】
本発明は、上記の点に鑑みなされたもので、過去に観測されなかった未知のアドレスにも対応可能なアドレスの評判判定を行い、結果として悪意のある通信の検出を実現することが可能な通信分類装置及び方法を提供することを目的とする。
【課題を解決するための手段】
【0008】
上記の課題を解決するため、本発明は、通常の通信、悪意のある通信を弁別するための通信分類装置であって、
通信を発生させた端末の判定対象アドレスを取得し、該判定対象アドレスを構成するビット列の構造的な性質に基づいて、該判定対象アドレスに固有な特徴を特徴ベクトルとして抽出する特徴ベクトル抽出手段と、
随時または所定の周期で取得した悪意性の有無を示すラベルが付与されたアドレスのリストを格納した訓練データ記憶手段と、
前記訓練データ記憶手段の前記アドレスのリストに対し、アドレス毎に、アドレスに固有な特徴を特定することにより特徴ベクトルを抽出し、該特徴ベクトルに対して教師付き機械学習を適用して訓練を実施し、訓練結果を出力するアドレス訓練手段と、
前記アドレス訓練手段の前記訓練結果と前記特徴ベクトル抽出手段で抽出された前記特徴ベクトルを用いて、通信が通常の通信か、または、悪意のある通信かを確率的に判定する判定手段と、
を有し、
前記特徴ベクトル抽出手段は、
前記判定対象アドレスを構成するビット列をサブビット列に分割し、各サブビット列を任意の関数で変換した値を前記特徴ベクトルの要素とする手段を含む

【発明の効果】
【0009】
上記のように、本発明は、通信を発生させた端末のアドレス構造から特徴ベクトルを抽出し、得られた特徴に対して教師付き機械学習の手法を適用することにより、通信が通常かあるいは悪意があるかという、通信の悪意性の種別を推定的に判定することにより、過去に観測されなかった未知のアドレスにも対応可能なアドレスの評価判定が可能となり、結果として悪意のある通信を検出することができる。
【図面の簡単な説明】
【0010】
【図1】本発明の一実施の形態における通信分類装置の構成図である。
【図2】本発明の一実施例の通信分類装置の動作のフローチャートである。
【図3】本発明の一実施例のシステムの適用例である。
【発明を実施するための形態】
【0011】
以下図面と共に、本発明の実施の形態を説明する。

【0012】
図1は、本発明の一実施の形態における通信分類装置の構成を示す。

【0013】
同図に示す通信分類装置100は、判定対象アドレス受信部110、特徴抽出用アドレス受信部120、訓練用データ受信部130、アドレス特徴抽出部140、アドレス訓練部150、アドレス判定部160、判定出力部170、判定結果キャッシュ部180、アドレス情報記憶部101、訓練元データ記憶部102、訓練データ記憶部103から構成される。

【0014】
アドレス情報記憶部101は、特徴抽出用アドレス情報受信部120により外部から入力されたアドレス情報を格納する。

【0015】
訓練元データ記憶部102は、訓練用データ受信部130において、随時または所定の周期で受信されたアドレス毎に悪意性の有無に関するラベルが付与された訓練元データを格納する。

【0016】
訓練データ記憶部103は、訓練元データのアドレスに対して特徴ベクトルを抽出したデータ(訓練データ)を格納する。

【0017】
判定対象アドレス受信部110は、外部から判定対象となるアドレスを受信する。

【0018】
特徴抽出用アドレス情報受信部120は、外部から特徴を抽出するためのアドレスを受信し、アドレス情報記憶部101に格納する。

【0019】
訓練用データ受信部130は、随時または所定の周期で外部から訓練用のデータを受信し、訓練元データ記憶部102に格納する。

【0020】
アドレス特徴抽出部140は、端末のアドレスを構成するビット列の構造的な性質に基づいて、アドレスに固有な特徴を特徴ベクトルとして抽出する。詳細については後述する。

【0021】
アドレス訓練部150は、訓練元データ記憶部102から取得した、予め悪意性のある有無でラベル付けされたアドレスのリストに対し、アドレス毎に、アドレスに固有な特徴を特定することにより特徴ベクトルを抽出し、当該特徴ベクトルに対して公知技術である教師付機械学習の方法を用いて教師データの訓練を実施する。

【0022】
アドレス判定部160は、アドレス訓練部150における訓練結果と特徴ベクトルに基づいて、新たに観測したアドレスによる通信が通常であるか、あるいは悪意のある通信であるのかの悪意性を判断する。

【0023】
判定結果出力部170は、アドレス判定部160による判定結果を外部及び判定キャッシュ部180に出力する。

【0024】
判定キャッシュ部180は、過去の判定結果を保存し、当該判定結果は、判定対象アドレス受信部110が受信したアドレスと同じアドレスが判定キャッシュ部180の内容と照合する際に利用される。

【0025】
最初に、アドレス特徴抽出部140において、アドレスから特徴ベクトルを抽出する方法について説明する。

【0026】
アドレス特徴抽出部140において、特徴ベクトルを生成する方法として以下に示す4つの手法を示す。

【0027】
(1)抽出する始点と始点からの抽出個数を指定して特徴ベクトルを構成する方法:
一般に、N 個のビット列 {b1, b2, ....., bN} によって構成されるアドレスに対して、上位j番目からk個のビットを用いて構成したビット列 {bj, bj+1, ....., bj+k-1} を特徴ベクトルとして抽出する。

【0028】
ここで、各ビット bj (j =1, ....., N) は"0"か"1"の値を取り、j,kは
1≦ j < j + k - 1 ≦N
を満たす任意に設定が可能な値である。

【0029】
ここで、特徴ベクトルの抽出における、始点jと抽出個数kの値の定め方について説明する。

【0030】
IPv4では経験則から定め方を例示可能だが、その他アドレス体系における具体的な定め方については本発明では範疇外とする。なお、IPv4アドレスの場合は上位ビット(第1~第3オクテット)がネットワークアドレスに近いため、より重要な意味を持ち、始点は j=1、抽出個数は k=24 (1オクテットは8ビットであり、3オクテットは24ビットに相当する)という定め方が一つの実施形態となる。詳細については実施例において後述する。一方、IPv6をはじめ、他のアドレス体系の場合IPv4の経験則が当てはまるとは限らない。

【0031】
(2)サブビット列に分割し、各サブビット列を任意の関数で値に変換して特徴ベクトルの要素とする方法:
一般に、N 個のビット列 {b1, b2,…, bN} によって構成されるアドレスを、上位から順番に T 個のサブビット列 sj (j=1,…,T) に分割する。当該分割条件を以下に示す。

【0032】
・T個に分割された各サブビット列 sj のサイズ(サブビット列を構成するビットの総数) Sj は、
S1 + S2 + ... + ST ≦ N (式1)
を満たす、任意の値となるように設定される。

【0033】
・1番目のサブビット列 s1 の開始位置は、上記(式1)が満たされている限り、任意の値をとることができる。

【0034】
例えば N = 10個のビット列 {b1, b2, ..., b10} によって構成されるアドレスに対し、
s1 = {b3, b4, b5}
のようにサブビット列を構成することが可能である。

【0035】
・各サブビット列 sj に対し、各sjを構成する Sj 個のビットに対して、任意に定義可能な関数f(sj)を適用した結果の値を構成要素とする特徴ベクトルを構成する。

【0036】
上記の分割する個数T,サブビットs1の開始位置,特徴ベクトルの構成要素を作成するための任意に定義可能な関数f(sj)とその関数の適用方法の定め方としては以下の2つの方法がある。

【0037】
・任意のサイズ(分割個数T,s1の開始位置)で定義が可能なサブビットに分割する:
・分割されたサブビットから特徴ベクトルを構成できる関数f(sj)を適用する:
なお、特徴ベクトルを構成できる関数f(sj)は、既存の(任意の)関数を利用することとする。例えば、
・10進表記を利用した特徴ベクトル構成方法;
・10進表記した値に対してハッシュ関数を適用する方法;
などがある。

【0038】
(3)アドレス情報記憶部101に格納された数個のアドレスリスト(アドレスリスト数A個)に対し、各アドレスリストが特定のアドレスを含むか否かで値を定め、特徴ベクトルの構成要素の値(要素数A個=アドレスリストの個数)とする方法:
ここで、アドレスリストとは、ある一定の性質を持つアドレスを収集したものであり、単一のアドレスあるいは複数の連続するアドレスをネットワークプレフィックスによって表記したものから構成される。

【0039】
例えば、アドレスリストとは、過去の実績に基づいて、悪意のある通信を発生する可能性が高いアドレスのみを収集したリスト、通常の通信を発生する可能性が高いアドレスのみを収集したリスト、ある特定の国に所属するアドレスリスト、ある特定のAS (Autonomous System) に所属するアドレスリスト、ある特定のサブネットワークに所属するアドレスリスト、あるサーバにて観測されたアドレスリスト、等である。以下に、IPv4アドレスの場合を示す。

【0040】
単一のアドレスの例: 192.168.1.1
ネットワークプレフィックス表記の例:192.168.1.0/24
各アドレスリストは、同一の性質を有するアドレスを収集したものであり、これらのアドレスリストはリアルタイムに更新することが可能である。

【0041】
(4)上記の(1)~(3)の方法を任意に組み合わせて特徴ベクトルを抽出する方法も可能である。

【0042】
悪意性判定対象のアドレスが、アドレス情報記憶部101のアドレスリストLj (j=1,2,...,A ,Aは用意したアドレスリストの個数)のリスト内に含まれるか否かの結果を特徴ベクトルの要素の値として、特徴ベクトル{l1, l2,..., lA} を構成する。このため、特徴ベクトルの要素数は、用意したアドレスリストLj (j=1,2,...,A) のリスト数A個(任意)に対応する。

【0043】
アドレス特徴抽出部140は、悪意性判定対象のアドレスがリストに含まれるか否かを判断する際に、上記のIPv4アドレスの場合では、単一アドレスの場合は該アドレスが一致するか否かで判断し、ネットワークプレフィックスの場合は、該アドレスに対してネットワークプレフィックスによって一意に指定されるサブネットマスクを適用した場合に一致するか否かで判断する。ひとつでも一致した場合にリストに含まれるとする。一般に、悪意性判定対象のアドレスが、アドレスリストLj に含まれるとき、lj = 1 とし、そうでないときlj = 0 とする。なお、悪意性判定対象のアドレスの与え方は実施例にて後述する。

【0044】
次に、アドレス訓練部150について説明する。

【0045】
アドレス訓練部150は、予め定めた周期毎に、訓練元データ記憶部102に格納されているラベル付きアドレスリスト訓練データ、及び訓練データ記憶部103に格納されているラベルと特徴ベクトルからなる訓練データを用いて機械学習の訓練を実施し、訓練結果として、悪意の有無の2値、または、悪性の距離または確率を用いたスコアをアドレス判定部160に出力する。訓練元データ記憶部102のラベル付きアドレスリスト訓練データは、悪意の有無の可能性を示すラベルとアドレスから構成され、訓練用データ受信部130より新たなリストを得ることにより随時更新可能である。訓練データ記憶部103は、アドレス訓練部150によって生成されたラベル付きアドレスリスト訓練データのアドレスに対して抽出された特徴ベクトルとラベルの組を格納する。

【0046】
アドレス判定部160は、アドレス訓練部150から取得した訓練結果と、アドレス特徴抽出部140から取得した特徴ベクトルを用いて、判定対象アドレス受信部110にて受信した受信アドレス情報に対して、通信が通常であるか否かを判定し、通信の悪意性を確率的に推定する。

【0047】
判定出力部170は、アドレス判定部160の判定結果を外部に出力すると共に、判定結果キャッシュ部180にも出力する。
【実施例】
【0048】
以下、本発明の実施例を図面と共に説明する。
【実施例】
【0049】
本実施例では、アドレスとしてIPv4アドレスを用い、公知の教師付機械学習の手法として2クラスのサポートベクターマシン(以下SVM)を用いるが、本発明の適用範囲はこの限りではない。
【実施例】
【0050】
図2は、本発明の一実施例の通信分類装置の動作のフローチャートである。
【実施例】
【0051】
ステップ101) 通信分類装置100の判定対象アドレス受信部110は、判定の対象となるアドレス情報を受信する。
【実施例】
【0052】
ステップ102) 判定対象アドレス受信部110は、受信したアドレスに対する判定が過去になされていたかを判定結果キャッシュ部180に問い合わせる。判定結果が既にキャッシュされている場合はステップ103に移行し、キャッシュされていない場合はステップ104に移行する。
【実施例】
【0053】
ステップ103) 判定結果キャッシュ部180に記録されている判定結果を基に、判定結果を抽出し、結果を判定出力部170に出力する。
【実施例】
【0054】
ステップ104) 判定結果キャッシュ部180にキャッシュされていない場合は該アドレス情報をアドレス特徴抽出部140に出力し、特徴ベクトルを抽出する。
【実施例】
【0055】
ステップ105) 一方、アドレス訓練部150では、訓練元データ記憶部102の予め準備した通常と悪意を区別するラベル付きの訓練データを用いて機械学習の訓練を実施しておく。この訓練データは、予め定めた周期が到来する毎に更新することができる。また、ラベル付きの訓練データは訓練用アドレスリスト受信部130より新たなリストを得ることによって随時更新可能である。図3に示すように訓練データはネットワークの内部に設置した各種の侵入・攻撃・異常検知システム230などの出力を利用し、実際に悪意のある通信を行ったアドレスに対してラベルを"+1"と付与することによって構成可能である。そのほか、外部で公開しているブラックリストやホワイトリストを訓練データとして用いることが可能である。訓練した結果はアドレス判定部160によって利用される。学習や訓練した結果の詳細については後述する。
【実施例】
【0056】
アドレス特徴抽出部140で抽出された特徴ベクトルは、アドレス判定部160に出力され、アドレス判定部160ではアドレス訓練部150より得た訓練結果を用いて、アドレス受信部110にて受信した該受信したアドレス情報に対して、通信が通常であるか、悪意があるかの通信の悪意性を確率的に推定し、出力値yを出力する。
【実施例】
【0057】
ステップ106) アドレス判定部160の出力値y>0であれば、ステップ108に移行し、y≦0であればステップ107に移行する。
【実施例】
【0058】
ステップ107) 悪意はないと判定し、その結果を判定出力部170と判定結果キャッシュ部180に出力する。
【実施例】
【0059】
ステップ108) 悪意があると判定し、その結果を判定出力部170と判定結果キャッシュ部180に出力する。
【実施例】
【0060】
以下に、上記のステップ104の特項ベクトルの抽出方法について説明する。
【実施例】
【0061】
以下ではIPv4アドレス"192.168.5.88 "を例として特徴ベクトルを抽出する方法を例示する。
【実施例】
【0062】
一般にIPv4 アドレスは32ビット長で定義され、広く用いられている"192.168.5.88 "という表記は32ビットを4個の8ビットに区切り、各々の8ビットの値を10進表記したものを"."で結合したものである。
【実施例】
【0063】
(1)抽出する始点と始点からの抽出個数を指定して特徴ベクトルを構成する方法:
"192.168.5.88 "を2進数表記すると
11000000101010000000010101011000
のように32個のビットから構成されるビット列となる。このうち上位 j 番目から k 個のビットを用いて構成したビット列を特徴ベクトルとする。
【実施例】
【0064】
j=1, k=24 とすると、特徴ベクトルは24個の要素を持ち、
{1,1,0,0,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1,0,1}
となる。
【実施例】
【0065】
なお、IPv4アドレスの場合は、実験による経験則から、上位ビット(第1~第3オクテット)がネットワークアドレスに近いため、より重要な意味を持ち、始点は j=1、抽出個数は k=24 という定め方が一つの実施形態となりえる。
【実施例】
【0066】
(2)サブビット列に分割し、各サブビット列を任意の関数で値に変換して特徴ベクトルの要素とする方法:
一般に、N 個のビット列 {b1, b2, ..., bN} によって構成されるアドレスを上位から順番に T 個のサブビット列 sj (j=1,...,T) に分割する。
ここでは前述と同じ"192.168.5.88 "を用いると、元のビット列は、
11000000101010000000010101011000
である。N = 32, T = 5 とし、サブビット列を
s1 = 11000000
s2 = 1010
s3 = 1000
s4 = 0000
s5 = 0101
と定義する。サブビット列 sj (j=1,2,..,4) のサイズは
S1 = 8, S2 = S3 = S4 = S5 = 4
である。
【実施例】
【0067】
各々のサブビット列 sj に対して、適用する関数 f(sj) を「sj を10進表記する」と定義した場合、
{192, 10, 8, 0, 5}
のように特徴ベクトルを構成できる。
【実施例】
【0068】
なお、各サブビット列に関数 f(sj)を適用した値は次のとおりとなる。
【実施例】
【0069】
f(s1) =( 11000000)2 = (192)10 ,f(s2) = (1010)2 = (10)10 ,f(s3) = (1000)2 = (8)10 ,f(s4) = (0000)2 = (0)10
f(s5) = (0101)2 = (5)10
あるいは関数 f(sj) を「{s1,s2,...,sj} のビットを結合して得られたビットを10進表記する」と定義した場合、
{192, 3082, 49320, 789120, 12625925}
のように特徴ベクトルを構成できる。
【実施例】
【0070】
なお、各サブビット列に関数 f(sj)を適用した値は次のとおりとなる。
【実施例】
【0071】
f(s1) =( 11000000)2 = (192)10
f(s2) = (110000001010)2 = (3082)10
f(s3) = (1100000010101000)2 = (49320)10
f(s4) = (11000000101010000000)2 = (789120)10
f(s5) = (110000001010100000000101)2 = (12625925)10
あるいは関数を以下のような特徴ベクトルを構成する関数として定義することもできる。
例えば、簡単のため、T=1 とし、s1 = 110000001010100000000101 とする。サブビットのサイズは S1 = 24 である。24ビット長の最大値は10進表記で 224=16,777,216 であるので、サブビットs1の10進表記 12,625,925 を用い、12,625,925 番目のビットのみが"1"で他はすべて"0"の粗な特徴ベクトルを構成することもできる。
【実施例】
【0072】
上記のバリエーションとして、
s1 = 11000000
s2 = 10101000
s3 = 00000101
とした場合、それぞれのサブビットは8ビット長であるため、0から255の256通りの値をとることができる。
【実施例】
【0073】
それらの値を利用して 256 x 3 = 768 通りの要素からなる特徴ベクトルを構成する。関数 f(sj)として、最初の256ビットのうち、s1 を10進表記した値である192番目のビットを1、次の256ビットのうち、s2を10進表記した値である168番目のビットを1、最後の256ビットのうち、s3を10進表記した値である5番目のビットを1とし、残りのすべてのビットを0とする関数を定義することもできる。
【実施例】
【0074】
上述のとおり、特徴ベクトルを構成するために、分割されたサブビット列に適用される関数f(sj)は、既存の任意の関数が利用され、例えば、「10進表記を利用した特徴ベクトル構成方法」、「10進表記した値に対してハッシュ関数を適用する方法」などがある。
【実施例】
【0075】
(3)アドレス情報記憶部101に格納された数個のアドレスリスト(アドレスリスト数A個)に対し、各アドレスリストが特定のアドレスを含むか否かで値を定め、特徴ベクトルの構成要素の値(要素数A個=アドレスリストの個数)とする方法:
別途アドレス情報記憶部101に用意したA種類のアドレスデータ L1,L2,...,LA を用いてA個の要素からなる特徴ベクトルを構成する方法を述べる。
【実施例】
【0076】
表1にアドレスデータの例を示す。これは日本のIPv4アドレスの一部を抽出した例である。
【実施例】
【0077】
【表1】
JP0005682089B2_000002t.gif
上記の表1のアドレスデータは、ネットワークプレフィックス表記である 1.21.0.0/16 は、1.21.0.0 から 1.21.255.255 までの 65536 個のアドレス集合に対応する。
【実施例】
【0078】
このようなアドレスデータは、特徴抽出用アドレス受信部120を通じて通信分類システムの外部から取り込み、アドレス情報記憶部101に格納される。
【実施例】
【0079】
アドレス特徴抽出部140は、悪意性判定対象のアドレスが、アドレス情報記憶部101の Lj (j=1,2,...,A) のデータ内に含まれるか否かでベクトル{l1, l2,..., lA} を構成し、悪意性判定対象のアドレスの特徴として抽出する。例えばA =10であり、悪意性判定対象のアドレスが 1, 2, 10番目のデータにアドレス情報記憶部101の掲載のアドレスに合致するとき、
{1,1,0,0,0,0,0,0,0,1}
のように、特徴ベクトルを抽出する。
【実施例】
【0080】
該アドレスがアドレス情報記憶部101のアドレスデータに合致するか否かの判断を上記の表1の例を用いて説明する。
【実施例】
【0081】
悪意性判定対象のアドレスが"1.21.3.1"であったとすると、これは表1における"1.21.0.0/16"で表記するアドレス集合に包含されるので、合致すると判断する。従って、特徴ベクトルは、{1,0,0,0,0,0,0,0,0,0}となる。
【実施例】
【0082】
判定対象のアドレスが"4.1.2.3"であったとすると、表1で示されるアドレスデータに含まれないので合致しないと判断する。従って、特徴ベクトルは、{0,0,0,0,0,0,0,0,0,0}となる。
【実施例】
【0083】
(4)上記の(1)~(3)の方法を任意に組み合わせて特徴ベクトルを抽出する方法:
例えば、上記の(1)の方法と(3)の方法を組み合わせ、"192.168.5.88"に対して、前述の(1)の例(j=1,k=24の特徴ベクトル)である、
{1,1,0,0,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1,0,1}
と、同様に(3)の最初の例である、『A =10であり、悪意性判定対象のアドレスが 1, 2, 10番目のリストに掲載のアドレスに合致する』からなる特徴ベクトル
{1,1,0,0,0,0,0,0,0,1}
とを組み合わせ、
{1,1,0,0,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1,0,1,1,1,0,0,0,0,0,0,0,1}
のように34次元の特徴ベクトルを構成することが可能である。本実施例ではアドレスデータとして国情報に相当する情報を用いたが、この他BGP経路情報あるいはWhoisといった外部公開されているIPアドレスに関する情報を利用することができる。
【実施例】
【0084】
次に、アドレス訓練部150の処理について説明する。
【実施例】
【0085】
以下では、2クラスのSVMを適用してアドレスを訓練する手順を例示する。
【実施例】
【0086】
SVMは入力データを高次元に写像した上でデータを識別する超平面を構築することである。写像された高次元空間において線形分離を試みる。
【実施例】
【0087】
訓練データを用いた学習では、超平面による識別境界と訓練データ間の距離、すなわちマージンを最大化するようパラメタを最適化する。
【実施例】
【0088】
はじめに、訓練元データ記憶部102に格納されている訓練データの元となるデータ(訓練元データ)の例を表2に示す。ここでラベルは2値{-1,+1}をとり、"-1"なら通常である可能性が高いアドレス、"+1"なら悪意のある可能性が高いアドレスであると定義する。
【実施例】
【0089】
【表2】
JP0005682089B2_000003t.gif
前記の訓練元データに記載の各々のアドレスに対して特徴ベクトルを抽出することによって表3のような訓練データを生成し、訓練データ記憶部103に格納する。ここでは特徴ベクトルは24次元であり、上位24ビットのビット列によって構成した。
【実施例】
【0090】
【表3】
JP0005682089B2_000004t.gif
訓練データにおけるi番目のサンプルの特徴ベクトルを
Xi = {xi1,xi2,...,xi24}
と表記する。同様にi番目のサンプルのラベルを ci と表記する。例えば、1番目の特徴ベクトルとラベルの値は
X1 = {1,1,0,0,0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,0,0,1,0,1}
c1 = +1
である。
【実施例】
【0091】
またSVMのパラメタをベクトル W = {w1,w2,...,w24} と定義する。ここではXi, W共に行ベクトルである。
【実施例】
【0092】
訓練データからマージン最大化を実現するようなパラメタWを学習するには、すべての i=1,2,...,M に対し、
【実施例】
【0093】
【数1】
JP0005682089B2_000005t.gif
という条件の下で、目的関数∥W∥2を最小とするような W を求める事(二次計画法)であり 例えば、文献「J.C Platt, "Fast Training of Support Vector Machines using Sequential Minimal Optimization." Advances in Kernel Methods - Support Vector Learning, B. Scholkopf, c. Burges,and A. Smola, eds., pp. 185-208, MIT Press, (1999)」に記載のSequential minimal optimization(SMO) などの数値的解析の手法によって高速に算出する事ができる。ここで、bはバイアスパラメタである。WTはWの転置行列φ(Xi)
はベクトル Xi に特徴空間の変換を施す非線形関数を適用したものである。∥W∥はベクトル W のユークリッドノルムである。M は訓練データにおけるサンプル数である。
【実施例】
【0094】
特徴空間の変換を施す非線形関数φ(Xi)は既存技術を利用する。SVM においてはカーネルトリックと呼ばれる技術を利用することにより、φ(Xi)自体を明示的に定義することなく、マージン最大化の計算を行うことが可能である。すなわちφ(Xi)を直接定義せずに、一般的に下記のようなφ(Xi)の内積で定義されるカーネル関数 k(x, x')を用いて定義する。
【実施例】
【0095】
k(Xi,Xi') =φ(Xi) Tφ(Xi')
ここで、φ(Xi) Tはφ(Xi)の転置行列である。
【実施例】
【0096】
よく利用されるガウスカーネルは、次の式で定義される。
【実施例】
【0097】
k(Xi,Xi') = exp(-∥Xi-Xi'∥2 / 2σ2)
このようなカーネル関数を導入すると、マージン最大化はカーネル関数によって表現される二次計画法を解く問題に帰着する。
【実施例】
【0098】
次に、アドレス判定部160の処理について説明する。
【実施例】
【0099】
SVM を適用することにより、アドレスの通信の悪意性の有無を判定可能である。新たに観測したアドレスに対して、アドレス特徴抽出部140において特徴ベクトルを抽出し、X = {x1,x2,...,x24} を得たとする。アドレス判定部160では、
y = WTφ(X) + b
を計算し、y が正であれば悪意性がある、負の値であれば通常のアドレスである、と判定する。ここでW, b は前記のアドレス訓練部150で計算済みの値を用いる。なお、 y の計算はカーネル関数を用いて、
【実施例】
【0100】
【数2】
JP0005682089B2_000006t.gif
と計算することができる。ここでaiは二次計画法を解くために導入する制約式ごとに定義したラグランジュ乗数(正数)であり、訓練時に数値的に求めることができる。
【実施例】
【0101】
次に、図2に沿って新規のアドレスを受信してからそのアドレスを判定するまでの処理を説明する。なお、アドレス判定において、通信の悪意性の度合いを示す要素である「ラベル」の値の表現方法として、前述したように「悪意性の有/無」=有る(+1)/無い(-1)の2値で示す方法の他、悪意性の距離もしくは確率というスコア(連続値)で表現する方法もとり得る。ここで、悪意性の距離の測り方、確率の測り方については文献「John C. Platt
"Probabilistic Outputs for Support Vector Machines and Comparisons to Regularized Likelihood Methods", ADVANCES IN LARGE MARGIN CLASSIFIERS, pp. 61-74, 1999 http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.41.1639」に記載の方法を本発明に適用した例を示す。ある観測したアドレスに悪意性がある状態をC=1 と書くことにする。Cはクラスの意である。同様にあるアドレスに対してC=-1であればそのアドレスに悪意性が存在しない状態を示す。
【実施例】
【0102】
あるアドレスの特徴ベクトルに対してSVMのアドレス判定によって算出した出力値 y を得たとする(ステップ105)。yが所与である条件の下で、実際にそのアドレスに悪意性がある確率(条件付き確率)を次式に示すようにシグモイド関数でパラメトリックにモデル化し、シグモイド関数のパラメタA, B を訓練データからフィッティングする。
【実施例】
【0103】
P(C=1 | y) = 1 / (1 + exp(Ay+B))
フィッティングの方法は下記の通りである。はじめに訓練集合のCi (i=1,2,…)を用い、
ti = (yi+1)/2
という変数を定義する。A,B は次式で表現される訓練データの負の対数尤度を最小化する値を数値計算によって求める事ができる。
【実施例】
【0104】
【数3】
JP0005682089B2_000007t.gif
ただし、
pi = 1/(1 + exp(Ay i +B))
であり、y i は訓練データx iに対してSVMの出力値 y を計算した結果である。
【実施例】
【0105】
以上が本願発明の各構成要素の例であるが、アドレス判定部160において、悪意性判定対象のアドレスを判定する方法の使用例として、次のようなケースがある。
【実施例】
【0106】
<ケース1>
ゲートウェイルータ等で、外部インターネットから内部組織への通信の送信元IPアドレスを得ることができるため、ルータが観測したすべてのアドレスを、本装置100への入力値である悪意性判定対象アドレスとし、悪意性があると判断したアドレスをフィルターするケース。
【実施例】
【0107】
<ケース1の例>
本発明の通信分類装置100はネットワーク上のゲートウェイルータ210と連携をする形で利用される。図3に構成例を示す。ネットワークの管理者は予め本システムのアドレス訓練部が保持する訓練元データを準備し、通信分類装置100に投入する。この訓練元データはアドレス毎に悪意性の有無に関するラベルが付与されたものである。同様にネットワーク内部の侵入・異常・攻撃検知システム230の出力結果を訓練元データ(訓練元データ記憶部102)として利用することができる。本装置100では前述のアドレス訓練を実施し、アドレス判定が可能な状態を保持する。
【実施例】
【0108】
ゲートウェイルータ210で判定の対象とするアドレスが観測されたら、そのアドレス情報を本発明の通信分類装置100に送信する。本発明の通信分類装置100はアドレス受信部110にてアドレス情報を受信し、アドレス特徴抽出部140へと転送する。アドレス特徴抽出部140が特徴ベクトルの抽出を行い、特徴ベクトルデータをアドレス判定部160へと転送する。アドレス判定部160では前記得られた特徴ベクトルに対してアドレス判定を行い、結果を判定結果送信部(図示せず)へ送信する。判定結果送信部は前記ルータ210に対して判定結果データを送信する。ルータ210は判定結果に基づいて該アドレスから送信されたパケットに対して適切な処理を行う。例えば悪意性があるパケットに対しては送信レートに制限をかけたり、パケットを廃棄したりする。前記の処理はルータの処理負荷によって変更しても構わない。
【実施例】
【0109】
<ケース2>
あるプログラムが、特定のアドレスからの通信を受信した際に、その通信を受け取るか否かを判断するために、通信分類装置100の出力である悪意性判定結果を利用するケース。
【実施例】
【0110】
<ケース2の例>
あるサーバ上で動作するプログラムがあるIPアドレスを持つクライアントからリクエストを受けたものとする。この際にそのリクエストをプログラムが実際に処理する前に本発明の通信分類装置100に問い合わせをし、悪意性のあるアドレスであることが判明したらリクエストを廃棄するか、サーバの負荷が高い場合は他の通常のリクエストを優先し、悪意性のあるアドレスからのリクエストを最低優先とする。
【実施例】
【0111】
なお、図1に示す通信分類装置の構成要素の各動作をプログラムとして構築し、通信分類装置として利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。
【実施例】
【0112】
本発明は、上記の実施の形態及び実施例に記載した方法に限定されることなく、特許請求の範囲内において、種々変更・応用が可能である。
【符号の説明】
【0113】
100 通信分類装置
101 アドレス情報記憶部
102 訓練元データ記憶部
103 訓練データ記憶部
110 判定対象アドレス受信部
120 特徴抽出用アドレス情報受信部
130 訓練用データ受信部
140 アドレス特徴抽出部
150 アドレス訓練部
160 アドレス判定部
170 判定出力部
180 判定結果キャッシュ部
図面
【図1】
0
【図2】
1
【図3】
2