(57)【要約】  データ分類装置（１）は、データの属するクラスおよび前記クラスの下位のクラスであるサブクラスが既知である既知データの入力を受け付ける既知データ入力部（３）と、既知データに含まれる特徴から、当該特徴を用いて同じクラスに属する既知データのサブクラスの分類を実施した場合に分類が失敗するような特徴を抽出する特徴抽出部（４）と、特徴抽出部（４）により抽出された特徴を用いて、分類の対象データのクラスを分類する分類部（５）とを備える。
2020075662.tif 000002
【特許請求の範囲】
【請求項１】
データの属するクラスおよび前記クラスの下位のクラスであるサブクラスが既知である既知データの入力を受け付ける既知データ入力部と、
前記既知データに含まれる特徴から、当該特徴を用いて同じクラスに属する既知データのサブクラスの分類を実施した場合に分類が失敗するような特徴を抽出する特徴抽出部と、
前記特徴抽出部により抽出された特徴を用いて、分類の対象データのクラスを分類する分類部と、
を備えることを特徴とするデータ分類装置。
【請求項２】
前記特徴抽出部は、
前記既知データに含まれる特徴から、当該特徴を用いて同じクラスに属する既知データのサブクラスの分類を実施した場合に、互いに類似するサブクラスの既知データの分類が失敗するような特徴を抽出する
ことを特徴とする請求項１に記載のデータ分類装置。
【請求項３】
前記特徴抽出部は、
前記既知データに含まれる特徴から、当該特徴を用いて同じクラスの既知データのサブクラスの分類を実施した場合にサブクラスの分類が失敗し、かつ、当該特徴を用いて既知データのクラスの分類を実施した場合にクラスの分類が成功するような特徴を抽出する
ことを特徴とする請求項１に記載のデータ分類装置。
【請求項４】
前記特徴抽出部は、
前記既知データに含まれる特徴から、当該特徴を用いて同じクラスの既知データのサブクラスの分類を実施した場合に、当該既知データがどのサブクラスに分類されるかの予測確率を算出し、前記算出した予測確率をサブクラス間で平滑化した値を算出し、当該特徴を用いた既知データのサブクラスの分類が、前記平滑化した予測確率の値に近づくような特徴を抽出する
ことを特徴とする請求項１または請求項２に記載のデータ分類装置。
【請求項５】
同じ前記サブクラスに属するデータ群は、
悪性のクラスに属し、同じ悪性ツールにより作成された悪性データ群である
ことを特徴とする請求項１に記載のデータ分類装置。
【請求項６】
データ分類装置より実行されるデータ分類方法であって、
データの属するクラスおよび前記クラスの下位のクラスであるサブクラスが既知である既知データの入力を受け付ける既知データ入力ステップと、
前記既知データに含まれる特徴から、当該特徴を用いて同じクラスに属する既知データのサブクラスの分類を実施した場合に分類が失敗するような特徴を抽出する特徴抽出ステップと、
前記特徴抽出ステップにより抽出された特徴を用いて、分類の対象データのクラスを分類する分類ステップと、
を含んだことを特徴とするデータ分類方法。
【請求項７】
データの属するクラスおよび前記クラスの下位のクラスであるサブクラスが既知である既知データの入力を受け付ける既知データ入力ステップと、
前記既知データに含まれる特徴から、当該特徴を用いて同じクラスに属する既知データのサブクラスの分類を実施した場合に分類が失敗するような特徴を抽出する特徴抽出ステップと、
前記特徴抽出ステップにより抽出された特徴を用いて、分類の対象データのクラスを分類する分類ステップと、
をコンピュータに実行させることを特徴とするデータ分類プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ分類装置、データ分類方法、および、データ分類プログラムに関する。
【背景技術】
【０００２】
機械学習を応用したデータ分類は様々な分野で応用されている。例えば、サイバーセキュリティでは、アンドロイド（登録商標）アプリケーションの分類（非特許文献１参照）や、IoT機器のファームウェアの分類（非特許文献２参照）等に応用されている。これらの分類により、既知の悪性アプリケーションに類似するアプリケーションや、既知の脆弱性のあるプログラムに類似するプログラムを特定することができる。【０００３】
ここで、一般的な機械学習手法では、既知データと分類対象のデータとの特徴が類似していることを前提としている。しかし、データによっては、時間とともに特徴が変化する場合もある。そこで、時間ともに特徴が変化する場合でも高精度にデータを分類する手法として、経時的な変化の影響を受けにくい特徴量の設計（非特許文献３参照）や、特徴の変化を検知する手法（非特許文献４参照）も提案されている。【０００４】
一般的な機械学習では、ラベル付きの既知データが大量に必要であるが、ラベル付きのデータを入手できない場合も存在する。そこで、ラベル付きのデータを入手できない場合であっても機械学習を行えるよう、ラベル付けが容易な、分類対象のデータに類似するデータを利用する手法が提案されている（非特許文献５参照）。【０００５】
この手法では、分類対象のデータに類似するラベル付きデータ（source）と、分類対象のラベルなしデータ（target）とを利用する。【０００６】
具体的には、この手法では、sourceとtargetとに共通する特徴を抽出し、その抽出された特徴を用いたsourceとtargetとの分類が失敗するように、特徴の抽出方法を調整する。一例を挙げると、sourceが写真のデータ、targetがスケッチのデータの場合、sourceとtargetとに共通する特徴として物体の輪郭の特徴が抽出される。そして、その抽出された特徴を用いたsourceとtargetとの分類が失敗するように、特徴の抽出方法を調整する。例えば、上記の調整により、例えば、sourceとtargetとに共通する特徴（例えば、物体の輪郭の特徴）は抽出されるが、sourceに固有の色やテクスチャ等の特徴は抽出されない。このようにして調整された特徴に基づいてsourceの分類ができるような機械学習を実施することで、targetを高精度に分類することができる。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】D.  Arp,  M.  Spreitzenbarth,  et  al.,  “DREBIN:  Effective  and  Explainable  Detection  of  Android  Malware  in  Your  Pocket”,  Proceedings  of  the  2014  Network  and  Distributed  System  Security  Symposium,  2014.
【非特許文献２】X.  Xu  et  al.,  “Neural  Network-based  Graph  Embedding  for  Cross-Platform  Binary  Code  Similarity  Detection”,  Proceedings  of  the  24th  ACM  Conference  on  Computer  and  Communications  Security,  pp.  363-376,  2017.
【非特許文献３】K.  Bartos,  et  al.,  “Optimized  Invariant  Representation  of  Network  Traffic  for  Detecting  Unseen  Malware  Variants”,  Proceedings  of  the  25th  USENIX  Security  Symposium,  pp.  807-822,  2016.
【非特許文献４】R.  Jordaney,  et  al.,  “Transcend:  Detecting  Concept  Drift  in  Malware  Classification  Models”,  Proceedings  of  the  26th  USENIX  Security  Symposium,  pp.  625-642,  2017.
【非特許文献５】K.  Bousmalis,  et  al.,  “Domain  Separation  Networks”,  Proceedings  of  the  29th  Advances  in  Neural  Information  Processing  Systems,  pp.  343-351,  2016.
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ここで、サイバーセキュリティにおいて、同じツールで作成された悪性データ群（以下、ファミリと呼ぶ）は互いに類似している。よって、新規のデータであってもその新規のデータのファミリに既知データが含まれていれば、上記の機械学習を用いることで、新規データを高精度に分類することができる。しかし、新規のデータのファミリが、既知データを含まないファミリ（未知のファミリ）であった場合は、高精度な分類を行うことは困難であった。【０００９】
例えば、上記のように、特徴が徐々に変化するデータについては高精度に分類する手法が提案されているが、未知のファミリのように特徴が大きく変化する場合には適用できない。また、ラベル付きデータが入手できない場合に、類似のラベル付きデータを利用して分類する手法についても、未知のファミリのラベルなしデータを事前に入手できないため、適用できない。つまり、従来、未知のファミリのデータを精度よく分類することは困難であった。そこで、本発明は、未知のファミリのデータを精度よく分類することを課題とする。
【課題を解決するための手段】
【００１０】
前記した課題を解決するため、本発明は、データの属するクラスおよび前記クラスの下位のクラスであるサブクラスが既知である既知データの入力を受け付ける既知データ入力部と、前記既知データに含まれる特徴から、当該特徴を用いて同じクラスに属する既知データのサブクラスの分類を実施した場合に分類が失敗するような特徴を抽出する特徴抽出部と、前記特徴抽出部により抽出された特徴を用いて、分類の対象データのクラスを分類する分類部と、を備えることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、未知のファミリのデータを精度よく分類することができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、データ分類装置の構成例を示す図である。
【図２】図２は、対象データの一例を示す図である。
【図３】図３は、既知データの一例を示す図である。
【図４】図４は、図１の特徴抽出部の動作概要を説明するための図である。
【図５】図５は、図１の分類部による対象データの分類の一例を説明するための図である。
【図６】図６は、図１のデータ分類装置の処理手順の例を示すフローチャートである。
【図７】図７は、図６のＳ２における特徴の抽出処理を詳細に説明するフローチャートである。
【図８】図８は、第２の実施形態におけるデータ分類装置の特徴抽出部の動作概要を説明するための図である。
【図９】図９は、第３の実施形態におけるデータ分類装置の特徴抽出部の動作概要を説明するための図である。
【図１０】図１０は、予測確率が最も高い順に所定数のサブクラス（ファミリ）の予測確率を高くする方法を説明するための図である。
【図１１】図１１は、予測確率が所定の閾値以上のサブクラス（ファミリ）の予測確率を高くする方法を説明するための図である。
【図１２】図１２は、予測確率に所定の値（定数）を足す方法を説明するための図である。
【図１３】図１３は、予測確率をソフトマックス関数の係数で調整する方法を説明するための図である。
【図１４】図１４は、プロキシログを記録するデータ蓄積部を含むシステムの例を示す図である。
【図１５】図１５は、数値ベクトルの算出の一例を示す図である。
【図１６】図１６は、データ分類装置を備えるシステムの一例を示す図である。
【図１７】図１７は、データ分類プログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【００１３】
以下、図面を参照しながら、本発明を実施するための形態（実施形態）を第１の実施形態から第３の実施形態に分けて説明する。本発明は、各実施形態に限定されない。
【００１４】
［第１の実施形態］
［構成］
まず、図１を用いて第１の実施形態のデータ分類装置１の構成例を説明する。なお、以下の説明において、データのクラスとは、例えば、当該データが悪性または良性であるか等の属性であり、サブクラスは、各クラスのさらに詳細な属性（クラスの下位の属性）である。換言すると、悪性／良性等のクラスを、さらに複数の集合に分割したファミリ等のラベルがサブクラスに相当する。
【００１５】
データ分類装置１は、新規データ（未知のファミリのデータ）をいずれかのクラスに分類する。このデータ分類装置１は、対象データ入力部（新規データ入力部）２と、既知データ入力部３と、特徴抽出部４と、分類部５とを備える。
【００１６】
対象データ入力部２は、分類の対象データ（新規データ）の入力を受け付ける。対象データには、例えば、通番および数値ベクトルが含まれる（図２参照）。この数値ベクトルは、事前に決められた方法でデータの特性を表現したベクトルである。図２に示す対象データは、４つの特徴量をもつ数値ベクトルにより、データの特性を表現した例である。数値ベクトルの特徴量は、例えば、悪性URL（Uniform  Resource  Locator）のサブドメインの有無、パスの階層数、クエリの数等である。
【００１７】
既知データ入力部３は、既知データ（データの属するクラスおよびサブクラスが既知であるデータ）の入力を受け付ける。この既知データには、通番、数値ベクトル、クラス、サブクラス等が含まれる（図３参照）。この数値ベクトルは、対象データの数値ベクトルと同じ方法で作成される。例えば、対象データの数値ベクトルがサブドメインの有無、パスの階層数、クエリの数等の３つの特徴量をもつ数値ベクトルであれば、サブドメインの有無、パスの階層数、クエリの数等の３つの特徴量を持つ数値ベクトルで作成される。
【００１８】
既知データのクラスは、例えば、「良性」、「悪性」等が考えられるが、「drive-by  download」、「標的型攻撃」、「フィッシング」等でもよい。各クラスのさらに詳細なカテゴリであるサブクラスは全てのデータにつけられていてもよいが、一部のデータのみでもよい。例えば、「悪性」のクラスのサブクラスの場合、悪性サイトを作成するexploit  kitの名称の「Rig」、「Neutrino」、「Magnitude」等が考えられるが、マルウェアのファミリ名の「ランサムウェア」、「ダウンローダ」、「PUP」等でもよい。したがって、例えば、同じサブクラスに属するデータ群は、同じ悪性ツール（例えば、上記の「Rig」等）により作成された悪性データ群である。
【００１９】
特徴抽出部４は、既知データに含まれる特徴から、当該特徴を用いて同じクラスの既知データの分類を実施した場合にサブクラスの分類が失敗するような特徴（つまり、同じクラスのサブクラス間で共通する特徴）を抽出する。例えば、既知データの数値ベクトルがＮ次元の変数により記述されている場合、特徴抽出部４は、そのＮ次元の変数のうち、各サブクラス間で変数の値（特徴量）が類似するもの（例えば、数値ベクトルの１次元目と３次元目の値）を抽出する。
【００２０】
すなわち、特徴抽出部４は、既知データから特徴を抽出し、その抽出した特徴で同じクラスの既知データのサブクラスの分類がどの程度可能か評価する。そして、特徴抽出部４は、評価の結果、抽出した特徴で、同じクラスの既知データのサブクラスの分類が精度よく行われている（分類に成功している）と判断した場合、抽出する特徴を変更する。一方、特徴抽出部４は、抽出した特徴で同じクラスの既知データのサブクラスの分類が精度よく行われていない（分類に失敗している）と判断した場合、当該特徴を分類部５へ出力する。
【００２１】
上記の特徴抽出部４の動作概要を、図４を用いて説明する。図４における四角い囲みは数値ベクトルを示し、その中の丸は数値ベクトル中の変数を示す。
【００２２】
例えば、図４の「入力」と書かれた囲みの中の丸は入力データ（例えば、既知データ）の数値ベクトルの変数を示し、「抽出された特徴」と書かれた囲みの中の丸は入力データの数値ベクトルの変数から抽出された特徴を示す。
【００２３】
また、図４の矢印は数値ベクトルの一部の選択や、ニューラルネットワーク、SVM（Support  Vector  Machine）、ランダムフォレスト等でのベクトルの変換を意味する。なお、図４の左側は特徴抽出部４による特徴の抽出、右側は特徴抽出部４による当該特徴の評価に相当する（図５、図６においても同様）。
【００２４】
例えば、特徴抽出部４は、図４に示すように、入力データの数値ベクトルの変数から特徴を抽出すると、当該特徴を用いたファミリ（サブクラス）の分類がどの程度可能かを評価する。そして、特徴抽出部４は、評価の結果、当該特徴によるファミリの分類に成功していれば抽出する特徴を変更する。一方、評価の結果、当該特徴によるファミリの分類に失敗していれば、特徴抽出部４は、当該特徴を分類部５へ出力する。つまり、特徴抽出部４は、入力データから抽出する特徴について、当該特徴を用いた入力データのファミリの分類が失敗するように特徴を変更する。
【００２５】
なお、特徴抽出部４は、入力データの数値ベクトルから特徴を抽出する際、数値ベクトルの一部を選択してもよいし、ニューラルネットワーク等で低次元のベクトルに変換してもよい。また、特徴抽出部４は、抽出された特徴でサブクラスの分類がどの程度可能か評価する際、サブクラスの分類にニューラルネットワークを使用することが考えられるが、ランダムフォレスト、SVM等を使用してもよい。
【００２６】
なお、抽出する特徴の変更（調整）は、例えば以下のようにして行われる。例えば、特徴抽出部４が、図３に示す数値ベクトルの一部から特徴を抽出する場合、サブクラスの分類に失敗するような特徴（例えば、数値ベクトルの１次元目の値と３次元目の値）を選び直し、選び直した特徴で構成される新たな数値ベクトルを作成する。
【００２７】
また、数値ベクトルをニューラルネットワークで低次元のベクトルに変換することにより特徴を抽出する場合には、特徴抽出部４は、ニューラルネットワークのニューロン間の重みを変更する。
【００２８】
なお、特徴抽出部４は、サブクラスの分類が失敗するようにする方法として、例えば、各サブクラスに分類される予測確率が各サブクラス間で同じになるように調整する方法が考えられるが、各サブクラスの予測確率が低下するように調整してもよい。
【００２９】
分類部５は、特徴抽出部４により抽出された特徴を用いて、対象データ（新規データ）のクラスを分類する。例えば、図５に示すように、特徴抽出部４により既知データから抽出された特徴が数値ベクトルの１次元目の値と３次元目の値であり、対象データの数値ベクトルが［0.2,1.2,1.4,1.0］である場合を考える。この場合、分類部５は、既知データそれぞれの数値ベクトル（符号１１０１）および対象データの数値ベクトルの１次元目の値と３次元目の値とを用いて類似度を計算する。類似度の計算は、例えば、以下の式（１）に基づき行われる。そして、分類部５は、計算の結果、最も類似度の高い通番２のデータのクラス（例えば、「悪性」）に対象データを分類する。
【００３０】
【数１】
2020075662.tif 000003
【００３１】
また、上記において類似度としては、ベクトルの差分のL2ノルムの逆数を用いたが、ベクトルの内積、ベクトルの差分のL1ノルムの逆数等を用いてもよい。
【００３２】
また、例えば、図５に示すように、分類部５が、既知データおよび対象データの数値ベクトル（４次元の値）をそのまま用いて既知データと対象データとの類似度を算出すると、既知データのうちクラスが「悪性」のデータも「良性」のデータも類似度の差があまりない（通番２の「0.63」と通番３の「0.75」等）。よって、分類部５は対象データのクラスを「悪性」に分類することができない。
【００３３】
しかし、異なるサブクラスでも数値ベクトルの値が類似している１次元目と３次元目を特徴として抽出すると、既知データのうちクラスが「悪性」のデータとクラスが「良性」のデータとで類似度の差が大きくなる（例えば、通番２の「100」と通番３の「1.3」等）。よって、分類部５は対象データのクラスを「悪性」に分類することができる。
【００３４】
このようにデータ分類装置１は、既知データから同じクラスのサブクラス間に共通する特徴を抽出し、当該特徴を用いて対象データのクラスの分類を行うので、対象データのクラスの分類精度を向上させることができる。
【００３５】
［処理手順］
次に、図６を用いてデータ分類装置１の処理手順の例を説明する。まず、データ分類装置１の既知データ入力部３は既知データの入力を受け付ける（Ｓ１）。その後、特徴抽出部４はＳ１で受け付けた既知データから特徴を抽出する（Ｓ２）。そして、対象データ入力部２が対象データの入力を受け付ける（Ｓ３）と、分類部５はＳ２で抽出された特徴を用いて、対象データのクラスを分類する（Ｓ４）。その後、分類部５は対象データのクラスの分類結果（例えば、悪性／良性）を出力する（Ｓ５）。
【００３６】
次に、図７を用いて、図６のＳ２における処理を詳細に説明する。特徴抽出部４は、Ｓ２で受け付けた既知データから特徴を抽出すると（Ｓ２１）、当該抽出した特徴を用いて同じクラスに属する既知データのサブクラスの分類を行う（Ｓ２２）。ここで、特徴抽出部４が、当該抽出した特徴を用いた既知データのサブクラスの分類に失敗したと判断した場合（Ｓ２３でＮｏ）、当該抽出した特徴を分類部５へ出力する（Ｓ２４）。一方、特徴抽出部４が、当該抽出した特徴を用いた既知データのサブクラスの分類に成功したと判断した場合（Ｓ２４でＹｅｓ）、抽出する特徴を変更し（Ｓ２５）、Ｓ２２へ戻る。つまり、特徴抽出部４は、既知データから、前回抽出した特徴とは異なる特徴を用いてＳ２２の処理を実行する。
【００３７】
このようにデータ分類装置１は、既知データから同じクラスのサブクラス間に共通する特徴（つまり、同じクラスに属するサブクラスの分類に失敗するような特徴）を抽出し、当該特徴を用いて対象データのクラスの分類を行うので、対象データのクラスの分類精度を向上させることができる。よって、例えば、データ分類装置１は、攻撃に悪用するアプリケーションや管理が厳格ではないレジストラ等、攻撃者が変更しにくい特徴を抽出し、その特徴を用いて対象データを分類することができる。その結果、例えば、対象データが未知のファミリ（未知ファミリ）のデータであったとしても、データ分類装置１は、悪性か否かを精度よく分類することができる。つまり、未知ファミリの悪性データの検知率を向上させることができる。
【００３８】
［第２の実施形態］
なお、上記の特徴抽出部４が既知データから特徴を抽出する際、既知データのクラスの分類が成功することも考慮して特徴を抽出してもよい。
【００３９】
例えば、データ分類装置１の特徴抽出部４は、図８に示すように既知データから抽出された特徴を用いて、同じクラスの既知データのファミリの分類（サブクラスの分類）と、既知データの悪性／良性の分類（クラスの分類）を行う。そして、特徴抽出部４は、同じクラスの既知データのサブクラスの分類が失敗し、かつ、既知データのクラスの分類が成功するように、抽出する特徴を変更する。このようにすることで、特徴抽出部４は、既知データから、クラスの分類精度がより高い特徴を抽出することができる。
【００４０】
［第３の実施形態］
また、特徴抽出部４は、既知データから特徴を抽出する際、同じクラスに属する既知データのサブクラスの分類を行った場合、類似のサブクラスについての分類が失敗するような特徴を抽出してもよい。
【００４１】
つまり、特徴抽出部４が、同じクラスに属するすべてのサブクラスの分類が同程度失敗するような特徴を抽出してしまうと、実際には共通の特徴がほとんど存在しないサブクラスからも特徴を抽出してしまうおそれがある。その結果、分類部５が当該特徴を用いて対象データのクラスの分類をすると、分類精度を低下させてしまうおそれがある。そこで、特徴抽出部４が、同じクラスのサブクラスのうち、類似するサブクラスを対象に既知データの分類が失敗するような特徴を抽出することで、クラスの分類を成功させるような特徴を安定して抽出することができる。
【００４２】
なお、類似のサブクラスは、データ分類装置１の管理者等が手動で設定したものでよいし、事前に、既知データの数値ベクトルを用いて各サブクラスを分類しておき、その分類結果を用いて設定されたものでもよい。
【００４３】
例えば、事前の分類結果を用いる場合、特徴抽出部４は、抽出した特徴を用いて同じクラスの既知データのサブクラスの分類を実施した場合に、既知データがどのサブクラスに分類されるかの予測確率を算出する。
【００４４】
例えば、特徴抽出部４は、図９のグラフ９０１に示すようにファミリ（サブクラス）１，２，３への分類の予測確率を算出する。そして、特徴抽出部４は、グラフ９０２に示すように、各ファミリの予測確率を平滑化する。その後、特徴抽出部４は、当該特徴を用いた既知データのファミリの分類結果が、平滑化後の予測確率に近づくように、特徴を変更（調整）する。
【００４５】
例えば、図９のグラフ９０１において最も予測確率が高い「ファミリ１」と類似するファミリは分かりにくい。しかし、特徴抽出部４がグラフ９０２のように各ファミリの分類結果の予測確率を平滑化することで、ファミリ１と類似するファミリが「ファミリ２」であることが分かりやすくなる。つまり、どのファミリ同士が類似しているか事前に分からない場合、特徴抽出部４が事前に算出したファミリの予測確率を参照することで、どのファミリ同士が類似しているかを推測しやすくなる。そして、特徴抽出部４が、ファミリの分類結果の予測確率を平滑化した値に近づくように、抽出する特徴を調整することで、類似するファミリに共通の特徴を抽出しやすくなる。
【００４６】
なお、特徴抽出部４は、図９に示すように、ファミリの分類結果が平滑化後の予測確率に近づくことの他、クラスの分類が成功することも考慮して特徴を調整してもよいし、ファミリの分類結果が平滑化後の予測確率に近づくことのみを考慮して特徴を調整してももちろんよい。
【００４７】
［予測確率の平滑化方法の例］
次に、特徴抽出部４によるサブクラス分類における予測確率の平滑化方法の例を説明する。特徴抽出部４によるサブクラス分類における予測確率の平滑化方法としては、例えば、以下の（１）〜（４）に示す方法が考えられる。
【００４８】
（１）予測確率が最も高い順に所定数のサブクラス（ファミリ）の予測確率を高くする方法（図１０参照）
（２）予測確率が所定の閾値以上のサブクラス（ファミリ）の予測確率を高くする方法（図１１参照）
（３）予測確率に所定の値（定数）を足す方法（図１２参照）
（４）予測確率をソフトマックス関数の係数で調整する方法（図１３参照）
【００４９】
例えば、（１）予測確率が最も高い順に所定数（例えば、２つ）のファミリの予測確率を高くする方法の場合、特徴抽出部４は、ファミリ１〜３のうち予測確率が最も高いファミリ１，２の予測確率を同じ値にする（図１０の例１，２参照）。
【００５０】
また、例えば、（２）予測確率が閾値以上のファミリの予測確率を高くする方法の場合、特徴抽出部４は、図１１の例１に示すファミリ１〜３について、予測確率が所定の閾値以上のファミリ１，２の予測確率を同じ値にする。また、特徴抽出部４は、図１１の例２に示すファミリ１〜３のうち、予測確率が所定の閾値以上のファミリはファミリ１のみなので、ファミリ１の予測確率のみを用いて特徴を抽出する。
【００５１】
また、例えば、（３）予測確率に所定の値（定数）を足す方法（図１２参照）の場合、特徴抽出部４は、図１２の例１の左に示すファミリ１〜３の予測確率に所定の値（例えば、定数ａ）を足した上で平滑化を行い、例１の右に示すファミリ１〜３の予測確率を算出する。また、特徴抽出部４は、図１２の例２の左に示すファミリ１〜３の予測確率に所定の値（例えば、定数ａ）を足した上で平滑化を行い、例２の右に示すファミリ１〜３の予測確率を算出する。ここでの各ファミリの予測確率の平滑化は、例えば、以下の式（２）を用いて行われる。
【００５２】
【数２】
2020075662.tif 000004
【００５３】
なお、式（２）におけるａは定数、piはファミリｉの予測確率、pi´は平滑化されたファミリｉの予測確率、jはファミリの変数を示す。
【００５４】
また、例えば、（４）各ファミリの予測確率をソフトマックス関数の係数で調整する方法（図１３参照）の場合、特徴抽出部４は、図１３の例１の左に示すファミリ１〜３の予測確率をソフトマックス関数の係数を調整することで平滑化を行い、例１の右に示すファミリ１〜３の予測確率を算出する。また、特徴抽出部４は、図１３の例２の左に示すファミリ１〜３の予測確率についても同様に、ソフトマックス関数の係数を調整することで平滑化を行い、例２の右に示すファミリ１〜３の予測確率を算出する。ここでの各ファミリの予測確率の平滑化は、例えば、以下の式（３）を用いて行われる。
【００５５】
【数３】
2020075662.tif 000005
【００５６】
なお、式（３）におけるａは係数、piはファミリｉの予測確率、pi´は平滑化されたファミリｉの予測確率、jはファミリの変数を示す。
【００５７】
なお、類似するファミリの数が予め分かっている場合、（１）予測確率が最も高い順に所定数のファミリの予測確率を高くする方法を用いるのがよい。また、類似するサブクラスが比較的少ない場合、（２）予測確率が閾値以上のファミリの予測確率を高くする方法を用いるのがよい。さらに、類似するファミリが比較的多い場合、（３）予測確率に所定の値（定数）を足す方法を用いるのがよい。また、類似するファミリと類似しないファミリとが同数程度混在する場合、（４）予測確率をソフトマックス関数の係数で調整する方法を用いるのがよい。
【００５８】
［適用例］
次に、各実施形態のデータ分類装置１を、未知ファミリによる攻撃の検知に適用した場合の例を説明する。上記のデータ分類装置１を含むシステムは、例えば、以下の（１）〜（５）に示す手順を行う。
【００５９】
手順（１）正常（良性）および悪性のプロキシログと、そのプロキシログのクラスおよびサブクラスのラベルとを収集する。
手順（２）プロキシログから数値ベクトルを算出する。
手順（３）複数のサブクラスに共通の特徴を抽出する。
手順（４）抽出した特徴を用いてクラスの分類器を構築する。
手順（５）分類器を用いて攻撃の検知を行う。
【００６０】
なお、上記のプロキシログは、例えば、図１４に示すネットワークにおけるデータ蓄積部に蓄積されたものを用いる。
【００６１】
図１４に示すネットワークにおいて、各ＰＣ（Personal  Computer）はルータとプロキシを経由してインターネットに接続されている。データ蓄積部は、プロキシを介した通信のログ（プロキシログ）を記録する。ここでのプロキシログの記録の形式に制約はないが、プロキシログから数値ベクトルを算出する際に必要なデータと、プロキシログのクラスおよびサブクラスのラベルの収集に必要な情報を記録しておく。
【００６２】
手順（１）においてプロキシログのラベルを収集する方法としては、IDS（Intrusion  Detection  System）の検知名を利用する方法の他、アンチウイルスソフト等の検知名を利用する方法でもよい。例えば、システムが、IDSにより悪性として検知されたプロキシログのクラスのラベルを悪性とし、サブクラスのラベルはIDSの検知名に基づいて設定する。また、データ蓄積部に記録されたデータに対して、別途IDSによるラベル付けを行ってもよいし、プロキシログの記録と同時にIDSによる検知とラベル付けとを行ってもよい。
【００６３】
手順（２）でプロキシログから算出される数値ベクトルの例を図１５に示す。ここでは、システムが、プロキシログのHTTP（HyperText  Transfer  Protocol）リクエストに含まれるURLから数値ベクトルを算出する場合を説明する。なお、この数値ベクトルは、悪性データと良性データの特性を反映するように設計される。ここでは、数値ベクトルは、HTTPリクエストに含まれるURLにおける、サブドメインの有無、URLの長さ、パスの階層数、クエリの数等を数値化したものが考えられるが、HTTPリクエストに含まれるURLの、クエリのエントロピー、ホスト名のIPアドレスでの指定、ドメイン名の人気度合い、HTTPメソッド、content-type等を数値化したものでもよい。
【００６４】
図１５では、HTTPリクエストごとに数値ベクトルを算出する例を示したが、複数のHTTPリクエストの集合から数値ベクトルを算出してもよい。集合の作成の仕方は、例えば、送信元IPアドレスと宛先FQDN（Fully  Qualified  Domain  Name）が同一のHTTPリクエストの集合を作成する方法が考えられるが、送信元IPアドレスと宛先ドメイン名が同一のHTTPリクエスト集合でもよいし、所定時間内に同一送信元IPアドレスから送信されたHTTPリクエストの集合でもよい。
【００６５】
手順（３）では、システムは、前記した第１の実施形態〜第３の実施形態で述べた方法で、各サブクラスに共通の特徴を抽出する。
【００６６】
手順（４）では、システムは、手順（３）で抽出された特徴を用いて、クラス分類のための分類器を構築する。この分類器は、例えば、ニューラルネットを用いて構築する方法が考えられるが、ランダムフォレストやSVM等を用いてもよい。
【００６７】
手順（５）において、手順（４）により構築された分類器を用いて攻撃の検知を行うシステムの構成例を図１６に示す。なお、図１６に示すデータ分類装置１において、既知データ入力部３（図１参照）の記載は省いている。
【００６８】
また、手順（４）で構築された分類器は、図１６のモデル蓄積部に格納される。そして、データ分類装置１の分類部５は、モデル蓄積部に格納された分類器を用いて、対象データが悪性か否かを分類する。つまり、分類部５は、攻撃の検知を行う。そして、分類部５は、その分類結果を通知部へ出力する。通知部は、例えば、分類結果が悪性である場合には、対象データの送信元の端末の所有者または遠隔の監視センターに対して悪性な通信（攻撃）があったことを通知する。このようにすることで、システムは未知ファミリによる攻撃を検知し、その結果を通知することができる。
【００６９】
［プログラム］
また、上記の実施形態で述べたデータ分類装置１の機能を実現するプログラムを所望の情報処理装置（コンピュータ）にインストールすることによって実装できる。例えば、パッケージソフトウェアやオンラインソフトウェアとして提供される上記のプログラムを情報処理装置に実行させることにより、情報処理装置をデータ分類装置１として機能させることができる。ここで言う情報処理装置には、デスクトップ型またはノート型のパーソナルコンピュータ、ラック搭載型のサーバコンピュータ等が含まれる。また、その他にも、情報処理装置にはスマートフォン、携帯電話機やＰＨＳ（Personal  Handyphone  System）等の移動体通信端末、さらには、ＰＤＡ（Personal  Digital  Assistants）等がその範疇に含まれる。また、データ分類装置１を、クラウドサーバに実装してもよい。
【００７０】
図１７を用いて、上記のプログラム（データ分類プログラム）を実行するコンピュータの一例を説明する。図１７に示すように、コンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ１０２０と、ハードディスクドライブインタフェース１０３０と、ディスクドライブインタフェース１０４０と、シリアルポートインタフェース１０５０と、ビデオアダプタ１０６０と、ネットワークインタフェース１０７０とを有する。これらの各部は、バス１０８０によって接続される。
【００７１】
メモリ１０１０は、ＲＯＭ（Read  Only  Memory）１０１１およびＲＡＭ（Random  Access  Memory）１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１１００に接続される。ディスクドライブ１１００には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース１０５０には、例えば、マウス１１１０およびキーボード１１２０が接続される。ビデオアダプタ１０６０には、例えば、ディスプレイ１１３０が接続される。
【００７２】
ここで、図１７に示すように、ハードディスクドライブ１０９０は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３およびプログラムデータ１０９４を記憶する。前記した実施形態で説明した各種データや情報は、例えばハードディスクドライブ１０９０やメモリ１０１０に記憶される。
【００７３】
そして、ＣＰＵ１０２０が、ハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出して、上述した各手順を実行する。
【００７４】
なお、上記のデータ分類プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ１１００等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、上記のプログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ＬＡＮやＷＡＮ（Wide  Area  Network）等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【符号の説明】
【００７５】
１  データ分類装置
２  対象データ入力部
３  既知データ入力部
４  特徴抽出部
５  分類部
【図１】
2020075662.tif 000006
【図２】
2020075662.tif 000007
【図３】
2020075662.tif 000008
【図４】
2020075662.tif 000009
【図５】
2020075662.tif 000010
【図６】
2020075662.tif 000011
【図７】
2020075662.tif 000012
【図８】
2020075662.tif 000013
【図９】
2020075662.tif 000014
【図１０】
2020075662.tif 000015
【図１１】
2020075662.tif 000016
【図１２】
2020075662.tif 000017
【図１３】
2020075662.tif 000018
【図１４】
2020075662.tif 000019
【図１５】
2020075662.tif 000020
【図１６】
2020075662.tif 000021
【図１７】
2020075662.tif 000022
【国際調査報告】
2020075662.tif 000023
2020075662.tif 000024