(57)【要約】【課題】データ列間またはデータ列リスト間の距離を効率的に求めることができる。【解決手段】距離測定装置１０は、計測対象の文字列または文字列リスト、及び、参照元の文字列または文字列リストに対し、k個の未使用の文字コードを区分文字列として入力して文字列または文字列リストを１つの文字列に変換する変換部１１と、計測対象の文字列におけるk長部分文字列と該部分文字列の直前に出現する文字とを結合した結合部分文字列の出現率である第１の出現率と、参照元の文字列における直後がk長部分文字列であると判明している文字の出現率である第２の出現率の対数である経験情報量と、の乗算値の総和である、k次経験交差エントロピーを、計測対象の文字列または文字列リストと参照元の文字列または文字列リストとの間の距離として算出する距離算出部１４と、を有する。【選択図】図１
2019096088.tif 000002
【特許請求の範囲】
【請求項１】
計測対象のデータ列またはデータ列リスト、及び、参照元のデータ列またはデータ列リストに対し、k（kは任意の自然数）個の未使用の文字コードを区分データ列として入力してデータ列またはデータ列リストを１つのデータ列に変換する変換部と、
前記変換部が変換した計測対象のデータ列におけるk長部分データ列と該部分データ列の直前に出現する文字とを結合した結合部分データ列の出現率である第１の出現率と、前記変換部が変換した前記参照元のデータ列における直後がk長部分データ列であると判明している文字の出現率である第２の出現率の対数である経験情報量と、の乗算値の総和である、k次経験交差エントロピーを、前記計測対象のデータ列またはデータ列リストと、前記参照元のデータ列またはデータ列リストとの間の距離として算出する距離算出部と、
を有することを特徴とする距離測定装置。
【請求項２】
前記距離算出部は、以下の（１）式を用いて前記k次経験交差エントロピーを算出することを特徴とする請求項１に記載の距離測定装置。
【数１】
2019096088.tif 000016
【請求項３】
前記距離算出部は、前記変換部が変換した参照元データ列の中に前記結合部分データ列が含まれていない場合、次数kを、前記変換部が変換した参照元データ列の中に前記結合部分データ列が出現する次数まで下げることを特徴とする請求項１または２に記載の距離測定装置。
【請求項４】
前記変換部は、入力がデータ列の場合には、先頭と末尾とに前記区分データ列を追加し、入力がデータ列リストの場合には、先頭と末尾とに前記区分データ列を追加するとともにリスト間に区分データ列を挟み一つのデータ列として連結することを特徴とする請求項１〜３のいずれか一つに記載の距離測定装置。
【請求項５】
検出対象の通信ログと悪性通信ログとの距離を測定する悪性距離測定装置と、悪性距離測定装置が測定した距離を基に前記通信ログに悪性通信が含まれることを検出する検出装置と、を有する通信システムであって、
前記悪性距離測定装置は、
計測対象のデータ列またはデータ列リスト、及び、参照元のデータ列またはデータ列リストに対し、k（kは任意の自然数）個の未使用の文字コードを区分データ列として入力してデータ列またはデータ列リストを１つのデータ列に変換する変換部と、
前記変換部が変換した計測対象のデータ列におけるk長部分データ列と該部分データ列の直前に出現する文字とを結合した結合部分データ列の出現率である第１の出現率と、前記変換部が変換した前記参照元のデータ列における直後がk長部分データ列であると判明している文字の出現率である第２の出現率の対数である経験情報量と、の乗算値の総和である、k次経験交差エントロピーを、前記計測対象のデータ列またはデータ列リストと、前記参照元のデータ列またはデータ列リストとの間の距離として算出する距離算出部と、  前記距離測定部に、悪性通信ログ及び良性通信ログを教師データとして学習させ、良性通信ログ及び悪性通信ログの経験情報量を、前記参照元のデータ列またはデータ列リストの経験情報量として蓄積させる学習部と、
前記距離測定部に、前記良性通信ログ及び悪性通信ログの経験情報量を基に、検出対象の通信ログと、教師データである悪性通信ログとの距離を算出させる推論部と、
を有し、
前記検出装置は、検出対象の通信ログと悪性通信ログとの距離が所定の距離以下の場合には、前記検出対象の通信ログに悪性通信が含まれることを検出する
ことを特徴とする通信システム。
【請求項６】
検出対象の通信ログと悪性通信ログとの距離を測定するマルウェア種別距離測定装置と、距離測定装置が測定した距離を基に前記通信ログに含まれる悪性通信の原因のマルウェアを判定する判定装置と、を有する通信システムであって、
前記マルウェア種別距離測定装置は、
計測対象のデータ列またはデータ列リスト、及び、参照元のデータ列またはデータ列リストに対し、k（kは任意の自然数）個の未使用の文字コードを区分データ列として入力してデータ列またはデータ列リストを１つのデータ列に変換する変換部と、
前記変換部が変換した計測対象のデータ列におけるk長部分データ列と該部分データ列の直前に出現する文字とを結合した結合部分データ列の出現率である第１の出現率と、前記変換部が変換した前記参照元のデータ列における直後がk長部分データ列であると判明している文字の出現率である第２の出現率の対数である経験情報量と、の乗算値の総和である、k次経験交差エントロピーを、前記計測対象のデータ列またはデータ列リストと、前記参照元のデータ列またはデータ列リストとの間の距離として算出する距離算出部と、
前記距離測定部に、マルウェア種別ごとに分別された悪性通信ログを教師データとして学習させ、マルウェア種別ごとに求めさせた経験情報量を、前記参照元のデータ列またはデータ列リストの経験情報量として蓄積させる学習部と、
前記距離測定部に、前記マルウェア種別ごとの経験情報量を基に、検出対象の通信ログと、各マルウェア種別の悪性通信ログとの距離をマルウェア種別毎に算出させる推論部と、
を有し、
前記判定装置は、前記推論部が推論した距離が最も短い距離に対応するマルウェア種別を、検出対象の通信ログに含まれる悪性通信の原因のマルウェアとして判定する
ことを特徴とする通信システム。
【請求項７】
計測対象のデータ列またはデータ列リスト、及び、参照元のデータ列またはデータ列リストに対し、k（kは任意の自然数）個の未使用の文字コードを区分データ列として入力してデータ列またはデータ列リストを１つのデータ列に変換する変換部であって、マルウェア種別ごとの悪性通信ログを変換する変換部と、
前記変換部が変換した計測対象のデータ列におけるk長部分データ列と該部分データ列の直前に出現する文字とを結合した結合部分データ列の出現率である第１の出現率と、前記変換部が変換した前記参照元のデータ列における直後がk長部分データ列であると判明している文字の出現率である第２の出現率の対数である経験情報量と、の乗算値の総和である、k次経験交差エントロピーを、前記計測対象のデータ列またはデータ列リストと、前記参照元のデータ列またはデータ列リストとの間の距離として算出する距離算出部であって、マルウェア種別ごとの悪性通信ログ間の距離を算出する距離算出部と、
マルウェア種別ごとの悪性通信ログ間の距離を用いて、マルウェア間の関係をマップ化したマルウェア関連マップ、または、マルウェア間を関連付けた関連グラフを作成する作成部と、
を有することを特徴とする作成装置。
【請求項８】
コンピュータを、請求項１〜４のいずれか一つに記載の距離測定装置として機能させるための距離測定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、距離測定装置、通信システム、作成装置及び距離測定プログラムに関する。
【背景技術】
【０００２】
従来、通信ネットワークやこれらに接続されたコンピュータに対する外部攻撃通信、及び、コンピュータがマルウェア等に感染した結果発生する内部攻撃や情報漏洩等の通信を検出する手法がある。この検出手法の一つとして、ネットワーク機器やコンピュータ等が出力するログを分析する手法がある。このような。ログを収集、分析し、攻撃や情報漏洩等、セキュリティ上の問題を引き起こす悪性通信を通常の通信(良性通信)の中から検出する装置として、SIEM（Security  Information  and  Event  Management）システムがあり、代表的な製品として、McAfee（登録商標）  SIEM、IBM（登録商標）  QRadar等がある（例えば、非特許文献１，２参照）。
【０００３】
この悪性通信の検出や分析において、ブラックリストやホワイトリスト等の既知の文字列・データ列のリストと、検査対象通信に出現する文字列・データ列を比較し、相違を判定することは重要な処理である。相違には、完全一致や正規表現に代表されるパターン一致等、一致または不一致の２値で表現するものがよく知られている。
【０００４】
一方、データ間の相違を数値化し、一致なら0、より相違するごとに値が大きくなるような距離として定義する手法がある。このような距離を利用することによって、機械学習手法、例えば、k-means法によるクラスタリングやk-近傍法による分類、推薦等を悪性通信の検出や分析に適用でき、より高度で効率的な検知、分析を行うことが可能となる。
【０００５】
例えば、文字列間の距離として代表的なものに編集距離(レーベンシュタイン距離)がある。情報理論では相対エントロピー（KL情報量）等が距離として提案されている（例えば、非特許文献３参照）。具体的には、文字列Qに対する文字列Pの相対エントロピーKL(P|Q)は、文字列中に出現する文字の出現率の相違を用いて、以下の通り算出される。
【０００６】
【数１】
2019096088.tif 000003
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】McAfee，“Security  Information  and  Event  Management(SIEM)”，［平成２９年１１月９日検索］，インターネット＜ＵＲＬ：https://www.mcafee.com/jp/products/siem/index.aspx＞
【非特許文献２】IBM，“IBM  QRadar  Security  Intelligence  Platform”，［平成２９年１１月９日検索］，インターネット＜ＵＲＬ：http://www-03.ibm.com/software/products/ja/qradar＞
【非特許文献３】杉山  将，“確率分布間の距離推定:機械学習分野における最新動向”，  日本応用数理学会論文誌,  vol.23,  no.3,  pp.  439-452,  2013.
【非特許文献４】S.R.Kosaraju,  G.MANZINI,“Compression  of  Low  Entropy  Strings  with  Lempel-Ziv  Algorithms”,  SIAM  J.  Comput.,  vol.29,  pp.893-911,  1999.
【発明の概要】
【発明が解決しようとする課題】
【０００８】
マルウェアは、特定の複数の通信を行うことがしばしばある。このため、単一の通信のみならず、複数の通信についてその特徴的な文字列及びデータ列をリストとし、ホワイトリスト・ブラックリスト等の既存リストとの相違を距離として判定できると、より検出精度が高められると考えられる。
【０００９】
しかしながら、現在、文字列間、文字列リスト間の距離を効率的に求める手法が存在しない。例えば、仮に、編集距離で各リスト同士の文字列の距離を総当たりで求め、それらの距離を、例えば、平均等のような各種算法により、文字列間、文字列リスト間の距離測定を行うことを考える。しかしながら、この測定手法は、少なくとも互いのリスト数Nの掛け算の回数の距離測定を行う必要があり、その計算量のオーダは、O(N2)と大きなものとなってしまう。
【００１０】
一方で、相対エントロピーは、参照元のデータ列を文字種ごとの出現率を算出した後に、対象データ列の各文字に対応する参照元文字種の出現率を処理すればよい。このため、相対エントロピーについては、文字列リスト数Nに比例する計算量O(N)で済む。しかしながら、相対エントロピーは、その相違の比較が文字単位となっており、文字の並びを考慮しておらず、文字列同士の距離を測るのには適していない。
【００１１】
また、文字の連なりを考慮したエントロピー（Shannonのn次エントロピー）は、文字の連なりに関する確率モデルを事前に決定しておく必要がある。しかしながら、この確率モデルの決定は、容易ではない。
【００１２】
本発明は、上記に鑑みてなされたものであって、データ列間またはデータ列リスト間の距離を効率的に求めることができる距離測定装置、通信システム、作成装置及び距離測定プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
上述した課題を解決し、目的を達成するために、本発明に係る距離測定装置は、計測対象のデータ列またはデータ列リスト、及び、参照元のデータ列またはデータ列リストに対し、k（kは任意の自然数）個の未使用の文字コードを区分データ列として入力してデータ列またはデータ列リストを１つのデータ列に変換する変換部と、変換部が変換した計測対象のデータ列におけるk長部分データ列と該部分データ列の直前に出現する文字とを結合した結合部分データ列の出現率である第１の出現率と、変換部が変換した参照元のデータ列における直後がk長部分データ列であると判明している文字の出現率である第２の出現率の対数である経験情報量と、の乗算値の総和である、k次経験交差エントロピーを、計測対象のデータ列またはデータ列リストと、参照元のデータ列またはデータ列リストとの間の距離として算出する距離算出部と、を有することを特徴とする。
【発明の効果】
【００１４】
本発明によれば、データ列間またはデータ列リスト間の距離を効率的に求めることができる。
【図面の簡単な説明】
【００１５】
【図１】図１は、実施の形態１に係る距離測定装置の構成の一例を示す図である。
【図２】図２は、図１に示す距離測定装置が実行する距離測定方法の処理手順を示すフローチャートである。
【図３】図３は、実施の形態２に係る通信システムの構成の一例を示す図である。
【図４】図４は、図３に示す悪性距離測定装置における学習処理の処理手順を示すフローチャートである。
【図５】図５は、図３に示す悪性距離測定装置における推論理の処理手順を示すフローチャートである。
【図６】図６は、図３に示す検出装置における検出処理の処理手順を示すフローチャートである。
【図７】図７は、実施の形態３に係る通信システムの構成の一例を示す図である。
【図８】図８は、図７に示すマルウェア種別距離測定装置における学習処理の処理手順を示すフローチャートである。
【図９】図９は、図７に示すマルウェア種別距離測定装置における推論理の処理手順を示すフローチャートである。
【図１０】図１０は、図７に示す判定装置における検出処理の処理手順を示すフローチャートである。
【図１１】図１１は、実施の形態４に係る作成装置の構成の一例を示す図である。
【図１２】図１２は、図１１に示す作成装置が実行する作成処理の処理手順を示すフローチャートである。
【図１３】図１３は、プログラムが実行されることにより、距離測定装置、悪性距離測定装置、マルウェア種別距離測定装置及び作成装置が実現されるコンピュータの一例を示す図である。
【発明を実施するための形態】
【００１６】
以下、図面を参照して、本発明の一実施形態を詳細に説明する。なお、この実施の形態により本発明が限定されるものではない。また、図面の記載において、同一部分には同一の符号を付して示している。
【００１７】
本実施の形態では、二つの文字列・データ列、または、文字列リスト・データ列リストについて、事前の確率モデルの想定を必要としない、文字の連なりを考慮した出現率を用い、二つの出現率の差異を算出することによって、距離測定の効率化を実現する。この距離を用いれば、例えば、対象の通信を構成する文字列リストと既存の悪性通信等を構成する文字列リストとの距離を測定し、ある程度近ければ悪性等と判定することが可能となる。以下、文字列間または文字列リスト間の距離測定を例として説明するが、本実施の形態は、データ列またはデータ列リスト全般に適用することができる。
【００１８】
［従来の数理的背景］
まず、以降の説明において必要となる従来の数理的背景を説明する。従来、事前の確率モデル設定を必要とせず、文字の連なりを考慮した出現率を用いるものとして、k次経験エントロピーが考案されている。このk次経験エントロピーは、文字列中から、文字長kの部分文字列を全て抽出し、抽出した各部分文字列について、文字列中の同一の部分文字列の直前（或いは直後）の文字の出現率を用いて計算されるものである。k次経験エントロピーは、以下の（２）式のように、算出される（詳細は、非特許文献４参照）。
【００１９】
【数２】
2019096088.tif 000004
【００２０】
また、（２）式に用いられる0次経験エントロピーは、以下の（３）式のように算出される。
【００２１】
【数３】
2019096088.tif 000005
【００２２】
ここで、対数の底には2、あるいは、文字集合Σの要素数がよく用いられる。pc=nc/|T|とすると、0次経験エントロピーは、Shannonの1次エントロピー（１−２式参照）と同様の形であることがわかる。
【００２３】
例として、文字列T（T=abcbcbccb）の2次経験エントロピーは以下の通り計算される。対数の底は2とした。
【００２４】
ここで、文字列Tにおける文字長2の部分文字列の集合は｛ab,bc,cb,cc｝となる。まず、最初の部分文字列abは、行頭にしかなく、直前の文字はないため、直前文字連結文字列は、Tab=（空）となる。一方、次の部分文字列bcについては、末尾に含む文字長3の部分文字列には、（先頭より）abc、（3文字目より）cbc、（5文字目より）cbcがあることから、それぞれの直前文字は、「a,c,c」である。したがって、部分文字列bcについての直前文字連結文字列は、Tbc=accとなる。同様に、部分文字列cbについての直前文字連結文字列は、Tcb=bbcとなる。また、部分文字列ccについての直前文字連結文字列は、Tcc＝bとなる。
【００２５】
各直前文字連結文字列の0次経験エントロピーは、以下の（Ａ−１）〜（Ａ−４）式のように求めることができる。
【００２６】
H0(Tac)=H0(空)=0                                        ・・・（Ａ−１）
H0(Tbc)=H0(acc)＝1÷3×log(3÷1)+2÷3×log(3÷2)=0.9183  ・・・（Ａ−２）
(na=1、nc=2、|Tbc|=3、小数点５桁以下四捨五入)
H0(Tcb)=H0(bbc)＝2÷3×log(3÷2)+1÷3×log(3÷1)=0.9183  ・・・（Ａ−３）
(nb=2、nc=１、|Tcb|=3、小数点５桁以下四捨五入)
H0(Tcc)=H0(b)=0                                          ・・・（Ａ−４）
【００２７】
上記のように、|T|=9、|Tac|=1、|Tbc|=3、|Tcb|=3、|Tcc|=1であるため、2次経験エントロピーH2(T)は、以下の（Ｂ−１）式のように求めることができる。
【００２８】
H2(T)=1÷9×H0(Tac)+3÷9×H0(Tbc)+3÷9×H0(Tbc)+3÷9×H0(Tcc)
=0.1111×0+0.3333×0.9183+0.3333×0.9183+0.1111×0
=0.6122                                ・・・（Ｂ−１）
【００２９】
［本実施の形態における数理的背景］
次に、本実施の形態における数理的背景について述べる。本実施の形態に係る距離測定方法は、上記のk次経験エントロピーを、k次経験交差エントロピーへと拡張することによって、文字の連なりを考慮した分布の差異を測ることを可能とする。
【００３０】
その前段階として、（２），（３）式を一つの式として書き下すと、以下の（４）式を求めることができる。
【００３１】
【数４】
2019096088.tif 000006
【００３２】
（４）式において、p(c,s)は、文字列T中で部分文字列sの直前に文字cが出現する同時確率である。このp(c,s)は、部分文字列c+s（+は文字列同士の結合処理を示す。）は、文字列Tに出現する回数を文字列長|T|で割ったものとなる。したがって、p(c,s)は、k+1長部分文字列c+sの出現率と同等である。また、p(c|s)は、直後の部分文字列がsであると分かっている際に文字cが出現する条件付き確率であり、直前文字連結文字列Tsにおけるcの出現率nc/|Ts|で計算される。
【００３３】
また、以下の（５−２）式のように、文字列c+sの経験情報量I(c+s)を定義すると、k次経験エントロピーは、（５−１）式に示すように、文字列T中のすべてのk+1長部分文字列の経験情報量を出現率に応じて総和したものであるとも記述できる。ただし、p(c+s)はk+1長の部分文字列c+sの出現率であり、p(c,s)と同等である。
【００３４】
【数５】
2019096088.tif 000007
【００３５】
そこで、上記式を基に、k次経験交差エントロピーHk(P,Q)（P,Qは文字列）について、以下の（６）式のように定義する。
【００３６】
【数６】
2019096088.tif 000008
【００３７】
すなわち、本実施の形態では、（６）式に示すように、計測対象の文字列におけるk長部分文字列と該部分文字列の直前に出現する文字とを結合した結合部分文字列の出現率である第１の出現率と、参照元の文字列における直後がk長部分文字列であると判明している文字ｃの出現率である第２の出現率の対数である経験情報量と、の乗算値の総和である、k次経験交差エントロピーを、計測対象の文字列または文字列リストと、参照元の文字列または文字列リストとの間の距離として算出する。
【００３８】
ただし、上記の（６）式では、q(c|s)が必ずしも算出できるとは限らないことがある。すなわち、q(c|s)が算出されるためには、少なくとも文字列Q中に部分文字列c+sが含まれていなくてはならない。しかしながら、c+sは文字列Pから取られたものであり、異なる文字列であるQには出現しないことはしばしば有りうる。
【００３９】
このため、本実施の形態では、上記の問題を解決するため、q(c|s)が算出できない場合、qにおいて算出できる次数k’にまでに下げて演算を行う。言い変えると、本実施の形態では、参照元文字列の中に結合部分文字列が含まれていない場合、次数kを、参照元文字列の中に結合部分文字列が出現する次数まで下げる。具体的には、本実施の形態では、直前文字cと部分文字列sとの先頭k’長からなる文字列sk’を結合したc+sk’について、文字列Q中に含まれる中で最大のk’のものを使用することとする。
【００４０】
この条件付き確率をq’(c|s)とすると、k次経験交差エントロピーは、以下に示す（７）式のように記述される。
【００４１】
【数７】
2019096088.tif 000009
【００４２】
k'=0時のq(c|sk’)は、sk’が空文字列であるので、代わりにq(c)を算出する。q(c)自体も算出できない場合、すなわち、文字cが文字列Q中に含まれない場合は、実施の形態１で後述する手段で代替する。
【００４３】
［k次経験KL情報量］
次に、k次経験交差エントロピーの各種情報量への適用について説明する。まず、k次経験交差エントロピーを、KL情報量（Kullback−Leibler  divergence：相対エントロピー（relative  entropy）)に適用する場合を例に説明する。
【００４４】
このKL情報量は、確率分布に基づく距離としてよく用いられている。このKL情報量に、上述のk次経験交差エントロピーを適用することによって、以下の（８）式のように、k次経験KL情報量として拡張することができる。
【００４５】
【数８】
2019096088.tif 000010
【００４６】
このように、文字の連なりを考慮したk次経験KL情報量を用いても、文字列間、文字列リスト間の距離を算出することが可能となる。
【００４７】
ここで、上記の文字列間の距離測定手法を文字列リストへと拡張する場合について説明する。この場合には、文字列リストに以下の処理を行い、文字列リストを文字列に変換してから距離測定を行うのが容易である。
【００４８】
具体的には、経験交差エントロピーの次数をk次で距離測定する場合、リスト先頭、リスト間、リスト末尾に、k個の未使用の文字（例えば、NULL文字「0x00」）を、区分文字として挿入し、一つの文字列に結合する。本実施の形態では、このように文字列リストを一つに結合した文字列を用いて文字列間の距離を測定する。
【００４９】
そして、文字列への変換方法の一例について説明する。例えば、次数2の場合の変換について説明する。変換前文字列リストは、例えば、「文字列1，文字列2，・・・，文字列n」である。この場合、文字列1の先頭、文字列1,2,・・・,nの各間、文字列nの末尾に、k個の未使用の文字(例えばNULL文字「0x00」)を挿入して一つの文字列に結合する。この結果、変換後結合文字列は、「(null)(null)文字列1(null)(null)文字列2(null)(null)…(null)(null)文字列n(null)(null)」となる。なお、(null)(null)は、2文字からなる区分文字列である。(null)は、1文字(ASCII値0)を示す。
【００５０】
そして、本実施の形態では、未使用文字がない場合でも、例えば、1バイトの各文字を2バイトとして取り扱うことによって、未使用文字(例えば「0xffff」等)を生成することができる。また、本実施の形態では、出現率が低いある1文字種（例えば、NULL文字)をエスケープシーケンスし、他の文字種２文字(例えば「\0」)に置換することによって、その1文字種を区分文字として使うこともできる。
【００５１】
また、本実施の形態では、リストQに対するリストPの距離について、リストPを一つの列に全て連結してから処理するのではなく、リストの要素１件ずつについて、先頭及び末尾に区分文字を追加し、以下の（９）式のように各要素の文字列長に応じた重みに応じて足し合わせることで、文字列間の距離を測定してもよい。
【００５２】
【数９】
2019096088.tif 000011
【００５３】
ただし、（９）式において、Piは、リストPのi番目の要素である。|Ti|は、リスト要素Piの文字列長である。|T|は、リストP全体の文字列長(|T|=Σ|Ti|)である。
【００５４】
これによって、文字列のみならず、文字列リスト間の距離も、文字の連なりを考慮したk次経験交差エントロピーを用いて算出可能となる。
【００５５】
なお、上記（４）式〜（７）式において、文字の連なりを考慮した出現率を算出するために、部分文字列sと、その直前の文字cとを用いたが、直前の文字の代わりに直後の文字を用いてもよい。
【００５６】
［k次経験JS情報量］
次に、k次経験交差エントロピーを、JS情報量（Jensen-Shannon  divergence）に適用する場合を例に説明する。JS情報量は、以下の（１０）式のように示すことができ、距離として用いられる。
【００５７】
【数１０】
2019096088.tif 000012
【００５８】
（１０）式において、Mは、PとQを結合した文字列であり、M/2は、その出現率を1/2して使用することを意味する。
【００５９】
このJS情報量についても、k次経験交差エントロピーを適用することによって、KL情報量と同様に、（１１−１）〜（１１−３）式のように、k次経験JS情報量として定義することができる。
【００６０】
【数１１】
2019096088.tif 000013
【００６１】
ただし、（１１−１）〜（１１−３）式において、P，Qが文字列の場合は、文字列全体を一つのリストとしてMを構成する。P，Qともに文字列の場合は、Mは、２要素のリストとなるためである。Mには、PとQとの部分文字列が全て含まれているため、k次経験JS情報量は、k次経験KL情報量と異なり、k長の文字列c+sの情報量Imを必ず算出できる。したがって、k次経験JS情報量を算出する場合は、より短い文字列c+s’の情報量を代わりに用いなくともよい。
【００６２】
このように、本実施の形態では、文字の連なりに関する確率モデルを事前に決定する必要なく、（６），（７）式に示す、文字の連なりを考慮したk次経験交差エントロピーを用いることによって、文字列間の距離を効率的に算出することができる。また、本実施の形態では、（８）式のように、k次経験交差エントロピーをKL情報量に適用し、k次経験KL情報量として拡張することによって、文字列間の距離を適切に算出することが可能となる。また、本実施の形態では、（８）式のように、k次経験交差エントロピーをJS情報量に適用し、k次経験JS情報量として拡張することによって、文字列間の距離を適切に算出することが可能となる。
【００６３】
［実施の形態１］
次に、実施の形態１について説明する。本実施の形態１では、例えば、k次経験KL情報量を用いて、文字列または文字列リスト間の距離を測定する距離装置について説明する。
【００６４】
図１は、実施の形態１に係る距離測定装置の構成の一例を示す図である。図１に示すように、本実施の形態１に係る距離測定装置１０は、変換部１１、出現数算出部１２、経験情報量算出部１３、距離算出部１４及び経験情報量格納部１５を有する。距離測定装置１０は、例えば、ROM（Read  Only  Memory）、RAM（Random  Access  Memory）、CPU（Central  Processing  Unit）等を含むコンピュータ等に所定のプログラムが読み込まれて、CPUが所定のプログラムを実行することで実現される。
【００６５】
距離測定装置１０は、距離の測定対象の文字列または文字リストの入力を受け付ける。図１の例では、計測対象である対象文字列または文字列リストと、参照元である参照文字列または文字列リストと、の入力を受け付ける。また、距離測定装置１０は、距離を演算する際に要する次数k等の設定情報の入力も受け付ける。そして、距離測定装置１０は、対象文字列または文字列リストと、参照文字列または文字列リストと、の間の距離を測定し、該測定した距離等の情報を出力する。
【００６６】
変換部１１は、入力された対象文字列または文字列リストと、参照元である参照文字列または文字列リストと、に対して変換処理を行い、距離測定に適した文字列へと変換する。
【００６７】
出現数算出部１２は、変換済対象文字列に対しては、k長部分文字列と該k長部分文字列の直前の文字との出現数を算出する。出現数算出部１２は、変換済参照文字列に対しては、0,1,…,k長部分文字列と該k長部分文字列の直前の文字との出現数を算出する。経験情報量算出部１３は、変換済みの参照文字列の出現数を基に、それぞれ0,1,…,k次経験KL情報量を算出し、経験情報量格納部１５に格納する。
【００６８】
距離算出部１４は、変換済みの対象文字列の出現数と、経験情報量格納部１５に格納された経験情報量とを基にk次経験交差エントロピーを計算し、対象文字列または文字列リストと、参照元である参照文字列または文字列リストとの距離として出力する。k次経験交差エントロピーは、変換部１１が変換した計測対象の文字列におけるk長部分文字列と該部分文字列の直前に出現する文字とを結合した結合部分文字列の出現率である第１の出現率と、変換部１１が変換した参照元の文字列における直後がk長部分文字列であると判明している文字cの出現率である第２の出現率の対数である経験情報量と、の乗算値の総和である。距離算出部１４は、変換部１１が変換した参照元データ列の中に結合部分データ列が含まれていない場合、次数kを、変換部１１が変換した参照元データ列の中に結合部分データ列が出現する次数まで下げる。
【００６９】
経験情報量格納部１５は、経験情報量算出部１３が算出した経験情報量を記憶する。
【００７０】
［変換部の処理］
まず、変換部１１の処理について説明する。変換部１１は、計測対象の文字列または文字列リスト、及び、参照元の文字列または文字列リストに対して、k個の未使用の文字コードを区分文字列として入力して文字列または文字列リストを１つの文字列に変換する。
【００７１】
例えば、変換部１１は、入力が文字列の場合には、先頭と末尾とに区分文字列を追加する。また、変換部１１は、入力が文字列リストの場合には、先頭と末尾とに区分文字列を追加するとともにリスト間に区分文字列を挟み一つの文字列として連結する。
【００７２】
［出現数算出部の処理］
次に、出現数算出部１２の処理について説明する。出現数算出部１２は、i長（0≦i≦k、iは整数）の部分文字列と該部分文字列の直前文字とを用いて、例えば、以下のように出現数を算出する。
【００７３】
まず、出現数算出部１２は、文字列から先頭の（i+1）文字を取得する。そして、出現数算出部１２は、取得した（i+1）文字を先頭1文字cと続く部分文字列siに分け、その出現数を変数N[si][c]に１を加算することによって記録する。次に、出現数算出部１２は、1文字ずらして、（i+1）文字を取得し、同様に出現数Nを記録する。出現数算出部１２は、この処理を、文字列の最後まで実行する。そして、出現数算出部１２は、各部分文字列siの出現数N[si]=ΣcN[si][c]を算出する。
【００７４】
なお、出現数算出部１２は、i=0長の場合も、部分文字列siを空文字列“”と対応させることによって、同様の算出処理を実行することが可能である。以下、変換済対象文字列に関する出現数（配列）をNpとし、変換済参照文字列に関する出現数（配列）をNqとする。出現数算出部１２は、対象文字列出現数Npを、k長について算出し、参照文字列出現数Nqを、0,  1,…,k長について算出する。
【００７５】
［経験情報量算出部の処理］
次に、経験情報量算出部１３の処理について説明する。経験情報量算出部１３は、参照文字列出現数Nqに基づき、0〜k次までの全ての経験情報量を算出する。経験情報量算出部１３は、i次(0≦i≦k、iは整数)の経験情報量I[c+si]を、以下の（１２）式を用いて、算出する。なお、（１２）式は、（５−２）式に基づく。
【００７６】
【数１２】
2019096088.tif 000014
【００７７】
経験情報量算出部１３は、このi次の経験情報量I[c+si]について、文字列c+siをキーとして経験情報量格納部１５に格納する。経験情報量算出部１３は、0次の場合もsiを空文字に対応させることによって、同様にi次の経験情報量I[c+si]の算出及び格納を行うことができる。
【００７８】
［距離算出部の処理］
次に、距離算出部１４の処理について説明する。距離算出部１４は、k次経験交差エントロピーを、計測対象の文字列または文字列リストと、参照元の文字列または文字列リストとの間の距離として算出する。この実施の形態１では、距離算出部１４は、対象文字列の出現数と経験情報量とに基づき、k次経験KL情報量を算出し、距離として出力する。
【００７９】
まず、距離算出部１４は、変換済みの対象文字列の部分文字列c+s（cは直前文字、sはk長部分文字列）について、以下の（１３）式のように、値dを算出する。なお、cは、直前文字であり、sは、k長部分文字列である。なお、値dは、（６）式におけるp(c,s)×logq(c|s)に該当する。
【００８０】
【数１３】
2019096088.tif 000015
【００８１】
ここで、（１３）式において、Npは、前述したように変換済みの対象文字列における出現数であり、Iは、経験情報量格納部１５から取得される経験情報量である。また、|TP|は、変換済み対象文字列から区分文字列を取り除いた文字長である。
【００８２】
（６）式より、全ての部分文字列について算出した値dの総和は、k次経験KL情報量である。このため、距離算出部１４は、この値dを全ての部分文字列で算出する。そして、距離算出部１４は、算出した値dを全て総和したものをk次経験KL情報量として求め、求めたk次経験KL情報量を距離として出力する。
【００８３】
［経験情報量格納部の構成］
次に、経験情報量格納部１５の構成について説明する。経験情報量格納部１５は、文字列をインデックスとして、文字列に対応する経験情報量を収めたデータ構造として構成される。経験情報量格納部１５は、文字列をキーに問い合わせがあると、問い合わせ対象の文字列とインデックスとの前方一致を行い、文字列長が最長となるインデックスに対応する情報量を、問い合わせ元に返却する。
【００８４】
経験情報量格納部１５のデータ構造は、例えば、トライ木アルゴリズムを利用して構成できる。トライ木アルゴリズムは登録したインデックス数Nについて、検索時の平均計算量は、O(logN)であることが知られており、高速に検索を行える。
【００８５】
経験情報量格納部１５は、問い合わせがあったキーがインデックスと、全く、前方一致しない場合、事前設定等で定められた方法に基づき、値を、問い合わせ元に返却する。例えば、経験情報量格納部１５は、規定値（0以上の値）を返却する。また、例えば、経験情報量格納部１５は、log|TQ|を返却する。|TQ|は、変換済み参照文字列から区分文字列を取り除いた文字長である。もちろん、経験情報量格納部１５は、他の方法を用いて値を返却してもよい。
【００８６】
［距離測定方法の処理手順］
次に、距離測定装置１０が実行する距離測定方法について説明する。図２は、図１に示す距離測定装置１０が実行する距離測定方法の処理手順を示すフローチャートである。
【００８７】
距離測定装置１０では、まず、変換部１１が、入力を受付けた対象文字列または文字列リストと、参照文字列または文字列リストとのそれぞれについて、距離測定に適した文字列へと変換する変換処理を行う（ステップＳ１１）。変換部１１は、先頭、リスト間、末尾にk長区分文字列を挿入し、リスト間に区分文字列を挟み一つの文字列として連結することによって変換済対象文字列及び変換済参照文字列を生成する。
【００８８】
そして、出現数算出部１２は、変換済対象文字列に対して、k長部分文字列と該k長部分文字列の直前の文字との出現数を算出し、変換済参照文字列に対して、0,1,…,k長部分文字列と該k長部分文字列の直前の文字との出現数を算出する出現数算出処理を行う（ステップＳ１２）。
【００８９】
続いて、経験情報量算出部１３は、変換済参照文字列の出現数に基づき、0〜k次までの全ての経験情報量を算出し、経験情報量格納部１５へ格納する経験情報量算出処理を行う（ステップＳ１３）。
【００９０】
そして、距離算出部１４は、変換済対象文字列の出現数と、経験情報量格納部１５に格納された経験情報量と、に基づき、距離等を算出する距離算出処理を行う（ステップＳ１４）。なお、距離測定装置１０は、参照文字列または文字列リストに対する変換処理、出現数算出処理及び経験情報量算出処理を、参照文字列または文字列リストの入力を受け付けた際に実行すれば足りる。
【００９１】
［本実施の形態１の効果］
本実施の形態では、文字の連なりを考慮したk次経験交差エントロピーを、文字列間または文字列リスト間の距離として算出している。k次経験交差エントロピーは、変換部１１が変換した計測対象の文字列におけるk長部分文字列と該部分文字列の直前に出現する文字とを結合した結合部分文字列の出現率である第１の出現率と、変換部１１が変換した参照元の文字列における直後がk長部分文字列であると判明している文字ｃの出現率である第２の出現率の対数である経験情報量と、の乗算値の総和である。
【００９２】
例えば、文字列m個のリストと文字列n個の文字列リストについて、文字列リスト間の距離を求めるために、文字列リスト間の各文字列同士を組合せてその距離を測り、それらの距離に対して、(平均等の)処理を行う方法がある。ただし、この方法では、少なくとも（m×n）回の距離計算が必要であり、計算量はO(N2)と大きくなる。これに対し、本実施の形態１では、経験情報量としたリスト部分はlogのオーダで済むため、その計算量がO(NlogN)となり、前述の手法による計算量O(N2)よりも格段に少なくなる。したがって、本実施の形態によれば、文字列または文字列リスト間同士の距離を、効率的に求めることができる。
【００９３】
また、本実施の形態１では、確率モデルを使用せずにk次経験交差エントロピーを算出するため、文字の連なりに関する確率モデルを事前に決定せずとも、対象文字列と参照文字列との距離を算出することが可能である。
【００９４】
また、本実施の形態１では、距離算出前に、対象文字列または文字列リストと、参照元である参照文字列または文字列リストとを、距離測定に適した一つの連結した文字列へと変換し、k次経験交差エントロピーの算出を適切に実行できる。
【００９５】
［実施の形態２］
次に、実施の形態２について説明する。実施の形態２では、図１に示す距離測定装置１０と同様の機能を有する距離測定部１０´を用い、通信ログから悪性通信を検出する通信システムについて説明する。
【００９６】
［通信システムの構成］
図３は、実施の形態２に係る通信システムの構成の一例を示す図である。図３に示すように、実施の形態２に係る通信システム２０１は、悪性距離測定装置２１０と、検出装置２２０とを有する。
【００９７】
悪性距離測定装置２１０は、図１に示す距離測定装置１０と同様の機能を有する距離測定部１０´を有する。悪性距離測定装置２１０は、悪性通信ログを教師データとして学習し、学習した悪性ログと、検出対象データである通信ログとの距離である悪性距離を算出する。
【００９８】
検出装置２２０は、悪性距離測定装置２１０が算出した悪性距離が、所定の距離以下の場合、距離測定対象の通信ログに悪性通信が含まれることを検出する。なお、図３では、悪性距離測定装置２１０と検出装置２２０とを別の装置として示すが、もちろん、悪性距離測定装置２１０と検出装置２２０との機能が同一の装置に備わっていてもよい。
【００９９】
［悪性距離測定装置の構成］
次に、悪性距離測定装置２１０について説明する。図３に示すように、悪性距離測定装置２１０は、距離測定部１０´、学習部２１１及び推論部２１２を有する。
【０１００】
学習部２１１は、距離測定部１０´に、悪性通信ログ及び良性通信ログを教師データとして学習させ、良性通信ログ及び悪性通信ログの経験情報量を、参照元の文字列または文字列リストの経験情報量として、経験情報量格納部１５に蓄積する。
【０１０１】
推論部２１２は、距離測定部１０´に、良性通信ログ及び悪性通信ログの経験情報量を基に、検出対象の通信ログと、教師データである悪性通信ログとの距離を算出させる。推論部２１２は、経験情報量格納部１５に蓄積された悪性ログの経験情報量と、検出対象の通信ログにおけるk長部分文字列及び該k長部分文字列の直前の文字との出現数と、を基に、距離測定部１０´に悪性距離を算出させる。なお、次数kは、事前に設定される。
【０１０２】
［学習部の処理］
次に、学習部２１１の処理について説明する。学習部２１１は、教師データである悪性通信ログ及び良性通信ログの入力を受け付ける。ここで、通信ログは、その１行を文字列リストの１リストとして取り扱う。
【０１０３】
まず、学習部２１１は、各教師データに対して、適宜、不要文字列の削除やログ形式の統一等の整形等の前処理を行う。学習部２１１は、不要文字列削除として、例えば、多数回出現する同一ログ行の削減等を行ってもよい。学習部２１１は、実施の形態１と同様に、距離測定部１０´に、前処理済みの教師データを参照元の文字列リストとして処理させ、そのk次経験情報量を経験情報量格納部１５に格納させる。
【０１０４】
［推論部の処理］
次に、推論部２１２の処理について説明する。推論部２１２は、検出対象データである通信ログに対して、学習部２１１と同様に、前処理を実施する。
【０１０５】
続いて、推論部２１２は、前所済みの検出対象データの通信ログから、教師データとして与えた良性通信ログと類似するログを除去する。例えば、推論部２１２は、単純に良性通信先ドメインと同一のログを、良性通信ログと類似するログであると判定してもよい。また、推論部２１２は、距離測定部１０´に、実施の形態１と同様の処理を実行させ、検出対象データである通信ログと、教師データである良性通信ログとの距離を測定させ、測定距離が所定以下のものを、良性通信ログと類似するログであると判定してもよい。
【０１０６】
推論部２１２は、距離測定部１０´に、良性通信ログを除去した検出対象データである通信ログと、教師データである悪性通信ログとの悪性距離を測定させる。この悪性距離は、距離測定部１０´に、実施の形態１と同様の処理を実行させ、距離測定部１０´の経験情報量格納部１５に保存された経験情報量を用いて算出される。
【０１０７】
推論部２１２は、測定した悪性距離を検出装置２２０に出力する。検出装置２２０は、悪性距離測定装置２１０から出力された悪性距離が、所定の距離以下の場合に、検出対象データである通信ログに悪性通信が含まれることを検出する。
【０１０８】
なお、推論部２１２は、検出対象データである通信ログを一括して推論する代わりに、検出対象データである通信ログを、送信元IPアドレス毎（端末毎）や単位時間毎等に応じて分割し、分割した通信ログごとに悪性距離を測定してよい。例えば、推論部２１２が、検出対象データである通信ログを端末毎に分割した場合、検出装置２２０は、悪性距離が所定以下だった端末をマルウェア感染端末として検出することができる。
【０１０９】
［学習処理の処理手順］
次に、悪性距離測定装置２１０における学習処理の処理手順について説明する。図４は、図３に示す悪性距離測定装置２１０における学習処理の処理手順を示すフローチャートである。
【０１１０】
悪性距離測定装置２１０では、まず、学習部２１１が、入力を受け付けた各教師データに対し、不要文字列の削除やログ形式の統一等の整形等の前処理を行う（ステップＳ２１）。そして、学習部２１１は、距離測定部１０´に、各教師データ別に経験情報量を算出させ、経験情報量格納部１５へ格納させる経験情報量算出処理を行う（ステップＳ２２）。
【０１１１】
［推論処理の処理手順］
次に、悪性距離測定装置２１０における推論処理の処理手順について説明する。図５は、図３に示す悪性距離測定装置２１０における推論理の処理手順を示すフローチャートである。
【０１１２】
推論処理では、推論部２１２が、検出対象データである通信ログに対し、不要文字列削除、形式整形及び分割等の前処理を実施する（ステップＳ２３）。そして、推論部２１２は、検出対象データである通信ログから、教師データである良性通信ログと類似するログを除去する除去処理を行う（ステップＳ２４）。
【０１１３】
続いて、推論部２１２は、距離測定部１０´に、良性通信ログを除去した検出対象データである通信ログと、教師データである悪性通信ログとの悪性距離を測定させる距離測定処理を行い（ステップＳ２５）、測定した悪性距離を検出装置２２０に出力する。
【０１１４】
［検出処理の処理手順］
次に、検出装置２２０における検出処理の処理手順について説明する。図６は、図３に示す検出装置２２０における検出処理の処理手順を示すフローチャートである。
【０１１５】
図６に示すように、まず、検出装置２２０は、悪性距離測定装置２１０による悪性距離の入力を受け付ける（ステップＳ２６）。そして、検出装置２２０は、悪性距離が、所定の距離以下の場合に、検出対象データである通信ログに悪性通信が含まれることを検出する検出処理を行い（ステップＳ２７）、悪性通信が含まれる通信ログを示す検出結果を対処装置等に出力する。
【０１１６】
［実施の形態２の効果］
このように、実施の形態２の通信システム２０１によれば、ブラックリストと、対象の通信ログとを１件ずつ個別に比較するのに対し、マルウェアの通信をひとまとめにして比較できることから、比較処理の高速化および検知精度の向上を図ることができるという効果を奏する。
【０１１７】
［実施の形態３］
次に、実施の形態３について説明する。実施の形態３では、距離測定部１０´を用い、通信ログに含まれる悪性通信の原因のマルウェアを判定する通信システムについて説明する。
【０１１８】
［通信システムの構成］
図７は、実施の形態３に係る通信システムの構成の一例を示す図である。図７に示すように、実施の形態３に係る通信システム３０１は、マルウェア種別距離測定装置３１０と、判定装置３２０とを有する。
【０１１９】
マルウェア種別距離測定装置３１０は、距離測定部１０´を有する。マルウェア種別距離測定装置３１０は、マルウェア種別ごとの悪性通信ログを教師データとして学習し、学習したマルウェア種別ごとの悪性通信ログと、検出対象データである通信ログとの距離であるマルウェア距離を算出する。
【０１２０】
判定装置３２０は、マルウェア種別距離測定装置３１０が算出したマルウェア距離が最も短い距離に対応するマルウェア種別を、検出対象の通信ログの悪性通信のマルウェアとして判定する。なお、図７では、マルウェア種別距離測定装置３１０と判定装置３２０とを別の装置として示すが、もちろん、マルウェア種別距離測定装置３１０と判定装置３２０との機能が同一の装置に備わっていてもよい。
【０１２１】
［マルウェア種別距離測定装置の構成］
次に、マルウェア種別距離測定装置３１０について説明する。図７に示すように、マルウェア種別距離測定装置３１０は、距離測定部１０´、学習部３１１及び推論部３１２を有する。
【０１２２】
学習部３１１は、距離測定部１０´に、マルウェア種別ごとに分別された悪性通信ログを教師データとして学習させ、マルウェア種別ごとに求めさせた経験情報量を、参照元の文字列または文字列リストの経験情報量として経験情報量格納部１５に蓄積する。
【０１２３】
推論部３１２は、距離測定部１０´に、検出対象データである通信ログと、教師データとして学習された各マルウェア種別の悪性通信ログとの距離であるマルウェア距離を算出させる。推論部３１２は、距離測定部１０に、経験情報量格納部１５に蓄積されたマルウェア種別ごとの悪性ログの経験情報量と、検出対象の通信ログにおけるk長部分文字列及び該k長部分文字列の直前の文字の出現数と、を基に、マルウェア距離をマルウェア種別毎に算出させる。なお、次数kは、事前に設定される。
【０１２４】
［学習部の処理］
次に、学習部３１１の処理について説明する。学習部３１１は、教師データであるマルウェア種別ごとに分別された悪性通信ログの入力を受け付ける。ここで、通信ログは、その１行を文字列リストの１リストとして取り扱う。
【０１２５】
まず、学習部３１１は、学習部２１１と同様に、各教師データに対して、適宜、不要文字列の削除やログ形式の統一等の整形等の前処理を行う。学習部３１１は、不要文字列削除として、例えば、多数回出現する同一ログ行の削減等を行ってもよい。学習部３１１は、距離測定部１０´に、実施の形態１と同様の処理を実行させ、前処理済みの教師データを参照元の文字列リストとして処理させ、そのk次経験情報量を経験情報量格納部１５に格納させる。k次経験情報量は、マルウェア種別毎に経験情報量格納部１５に蓄積される。
【０１２６】
［推論部の処理］
次に、推論部３１２の処理について説明する。推論部３１２は、検出対象データである通信ログに対して、学習部３１１と同様に、前処理を実施する。
【０１２７】
続いて、推論部３１２は、距離測定部１０´に、実施の形態１と同様の処理を実行させ、経験情報量格納部１５に蓄積されたマルウェア種別毎の経験情報量を基に、検出対象データである通信ログと各マルウェア種別の悪性通信ログとのマルウェア距離を、マルウェア種別毎に算出させる。推論部３１２は、測定したマルウェア距離を判定装置３２０に出力する。
【０１２８】
［判定装置の処理］
判定装置３２０は、マルウェア種別距離測定装置２１０から出力されたマルウェア距離が最も短い距離に対応するマルウェア種別を、検出対象の通信ログの悪性通信のマルウェアとして判定する。判定装置３２０は、判定結果を対処装置等に出力する。判定装置３２０は、判定結果として、マルウェア種別名とともにその距離を出力してもよいし、距離が近い順または特定距離内のマルウェア種別名を複数件出力してもよい。
【０１２９】
［学習処理の処理手順］
次に、マルウェア種別距離測定装置３１０における学習処理の処理手順について説明する。図８は、図７に示すマルウェア種別距離測定装置３１０における学習処理の処理手順を示すフローチャートである。
【０１３０】
マルウェア種別距離測定装置３１０では、まず、学習部３１１が、入力を受け付けた各教師データに対し、不要文字列の削除やログ形式の統一等の整形等の前処理を行う（ステップＳ３１）。そして、学習部３１１は、距離測定部１０´に、マルウェア種別ごとに、教師データに対する経験情報量を算出させ、マルウェア種別毎に経験情報量を経験情報量格納部１５へ格納させる経験情報量算出処理を行う（ステップＳ３２）。
【０１３１】
［推論処理の処理手順］
次に、マルウェア種別距離測定装置３１０における推論処理の処理手順について説明する。図９は、図７に示すマルウェア種別距離測定装置３１０における推論理の処理手順を示すフローチャートである。
【０１３２】
推論処理では、推論部３１２が、検出対象データである通信ログに対し、不要文字列削除、形式整形及び分割等の前処理を実施する（ステップＳ３３）。続いて、推論部３１２は、距離測定部１０´に、検出対象データである通信ログと、教師データとして学習された各マルウェア種別の悪性通信ログとのマルウェア距離をマルウェア毎に測定させる距離測定処理を行い（ステップＳ３４）、測定したマルウェア距離を判定装置３２０に出力する。
【０１３３】
［判定処理の処理手順］
次に、判定装置３２０における判定処理の処理手順について説明する。図１０は、図７に示す判定装置３２０における検出処理の処理手順を示すフローチャートである。
【０１３４】
図１０に示すように、まず、判定装置３２０は、マルウェア種別距離測定装置３１０によるマルウェア距離の入力を受け付ける（ステップＳ３５）。そして、判定装置３２０は、マルウェア距離が、マルウェア種別距離測定装置３１０から出力されたマルウェア距離が最も短い距離に対応するマルウェア種別を、検出対象の通信ログの悪性通信のマルウェアとして判定する判定処理を行い（ステップＳ３６）、判定結果を対処装置等に出力する。
【０１３５】
［実施の形態３の効果］
マルウェアの多くは、特定の複数回通信を行うことが多い。そこで、実施の形態３で説明したように、複数回通信の効率的な比較処理によって、マルウェア種別判定の判定精度向上を図ることができる。また、実施の形態３によれば、未知のマルウェアの通信であっても、その類似の通信のものを判定及び出力することが可能であり、その亜種マルウェアとして分析及び対策を実施することも可能となる。
【０１３６】
［実施の形態４］
次に、実施の形態４について説明する。実施の形態４では、実施の形態１に係る距離測定部１０´を用い、マルウェア種別ごとの悪性通信ログ間の距離を測定して、マルウェア種別ごとの悪性通信ログ間の距離を基にマルウェア関連マップまたは関連グラフ（系統樹）を生成する作成装置について説明する。
【０１３７】
［作成装置の構成］
図１１は、実施の形態４に係る作成装置の構成の一例を示す図である。図１１に示すように、実施の形態４に係る作成装置４１０は、マルウェア間距離測定部４１１、作成部４１２及び距離測定部１０´を有する。
【０１３８】
マルウェア間距離測定部４１１は、距離測定部１０´に、マルウェア種別ごとの悪性通信ログ間の距離をそれぞれ測定させ、測定させたマルウェア種別毎の通信ログ間の距離であるマルウェア間距離を、マルウェア間距離格納部４１５へ格納する。また、マルウェア間距離測定部４１１は、実施の形態２，３と同様に、マルウェア種別毎の悪性通信ログに対し、不要文字列削除、形式整形等の前処理を行ってから、種別毎の通信ログ間の距離の測定を行う。
【０１３９】
作成部４１２は、マルウェア間距離格納部４１５に格納されたマルウェア間距離を用いて関連マップ、関連グラフを作成する。作成部４１２は、マルウェア間距離を用いて、マルウェア間の関係をマップ化したマルウェア関連マップ、または、マルウェア間を関連付けた関連グラフを作成する。
【０１４０】
ここで、k次経験KL情報量について、一般的にKLk(P|Q)≠KLk(Q|P)であり、マルウェア間距離として二つの値が出現する。このため、作成部４１２では、k次経験KL情報量に対し、平均、最小値または最大値等の各種処理を行ってから、マルウェア間距離として用いる。または、k次経験JS情報量は、JSk(P|Q)＝JSk(Q|P)であるため、作成部４１２は、このk次経験JS情報量をマルウェア間距離として用いてもよい。
【０１４１】
ここで、関連マップの作成には、距離を用いる手法として、多次元尺度構成法(MDS)、isomap等の手法が知られている。このため、作成部４１２は、MDS、isomap等の手法を用いて、関連マップを作成する。また、作成部４１２は、関連グラフについては、距離が近いもの同士から順に関連付けを行っていく、階層的クラスタリング手法を用いて、関連グラフを作成する。
【０１４２】
［作成処理の処理手順］
次に、作成装置４１０が実行する作成処理の処理手順について説明する。図１２は、図１１に示す作成装置４１０が実行する作成処理の処理手順を示すフローチャートである。
【０１４３】
図１２に示すように、作成装置１０は、マルウェア間距離測定部４１１が、各通信ログに対する不要文字列削除、形式整形等の前処理を行う（ステップＳ５１）。続いて、マルウェア間距離測定部４１１は、距離測定部１０´に、マルウェア種別ごとの悪性通信ログ間の距離をそれぞれ測定させる距離測定処理を行う（ステップＳ５２）。マルウェア間距離測定部４１１は、測定したマルウェア種別毎の通信ログ間の距離であるマルウェア間距離を、マルウェア間距離格納部４１５へ格納する。
【０１４４】
作成部４１２は、マルウェア間距離格納部４１５に格納されたマルウェア間距離を用いてマルウェアの関連マップ、関連グラフを作成する作成処理を行う（ステップＳ５３）。作成部４１２は、作成したマルウェアの関連マップ、関連グラフを対処装置に出力する。
【０１４５】
［実施の形態４の効果］
マルウェアは、完全に新しく作られることは珍しく、既存のマルウェアやマルウェア作成ツールを改造して作成されることが大半であり、通信パターンもその既存のものと似通っていることが多い。そこで、実施の形態４では、通信に基づくマルウェアの関連マップ、関連グラフを生成することによって、マルウェアの作成系統を推測する等、マルウェア対策に寄与することができるという効果を奏する。
【０１４６】
［システム構成等］
図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部又は任意の一部が、CPU及び当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【０１４７】
また、本実施の形態において説明した各処理のうち、自動的に行なわれるものとして説明した処理の全部又は一部を手動的に行なうこともでき、あるいは、手動的に行なわれるものとして説明した処理の全部又は一部を公知の方法で自動的に行なうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【０１４８】
［プログラム］
図１３は、プログラムが実行されることにより、距離測定装置１０、悪性距離測定装置２１０、マルウェア種別距離測定装置３１０及び作成装置４１０が実現されるコンピュータの一例を示す図である。コンピュータ１０００は、例えば、メモリ１０１０、ＣＰＵ１０２０を有する。また、コンピュータ１０００は、ハードディスクドライブインタフェース１０３０、ディスクドライブインタフェース１０４０、シリアルポートインタフェース１０５０、ビデオアダプタ１０６０、ネットワークインタフェース１０７０を有する。これらの各部は、バス１０８０によって接続される。
【０１４９】
メモリ１０１０は、ROM１０１１及びRAM１０１２を含む。ROM１０１１は、例えば、BIOS（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１１００に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１１００に挿入される。シリアルポートインタフェース１０５０は、例えばマウス１１１０、キーボード１１２０に接続される。ビデオアダプタ１０６０は、例えばディスプレイ１１３０に接続される。
【０１５０】
ハードディスクドライブ１０９０は、例えば、OS（Operating  System）１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、距離測定装置１０、悪性距離測定装置２１０、マルウェア種別距離測定装置３１０及び作成装置４１０の各処理を規定するプログラムは、コンピュータにより実行可能なコードが記述されたプログラムモジュール１０９３として実装される。プログラムモジュール１０９３は、例えばハードディスクドライブ１０９０に記憶される。例えば、距離測定装置１０、悪性距離測定装置２１０、マルウェア種別距離測定装置３１０及び作成装置４１０における機能構成と同様の処理を実行するためのプログラムモジュール１０９３が、ハードディスクドライブ１０９０に記憶される。なお、ハードディスクドライブ１０９０は、SSD（Solid  State  Drive）により代替されてもよい。
【０１５１】
また、上述した実施の形態の処理で用いられる設定データは、プログラムデータ１０９４として、例えばメモリ１０１０やハードディスクドライブ１０９０に記憶される。そして、CPU１０２０が、メモリ１０１０やハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてRAM１０１２に読み出して実行する。
【０１５２】
なお、プログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ１１００等を介してCPU１０２０によって読み出されてもよい。あるいは、プログラムモジュール１０９３及びプログラムデータ１０９４は、ネットワーク（LAN（Local  Area  Network）、WAN（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール１０９３及びプログラムデータ１０９４は、他のコンピュータから、ネットワークインタフェース１０７０を介してCPU１０２０によって読み出されてもよい。
【０１５３】
以上、本発明者によってなされた発明を適用した実施の形態について説明したが、本実施の形態による本発明の開示の一部をなす記述及び図面により本発明は限定されることはない。すなわち、本実施の形態に基づいて当業者等によりなされる他の実施の形態、実施例及び運用技術等は全て本発明の範疇に含まれる。
【符号の説明】
【０１５４】
１０  距離測定装置
１１  変換部
１２  出現数算出部
１３  経験情報量算出部
１４  距離算出部
１５  経験情報量格納部
２０１，３０１  通信システム
２１０  悪性距離測定装置
２１１，３１１  学習部
２１２，３１２  推論部
２２０  検出装置
３１０  マルウェア種別距離測定装置
３２０  判定装置
４１０  作成装置
４１１  マルウェア間距離測定部
４１２  作成部
【図１】
2019096088.tif 000017
【図２】
2019096088.tif 000018
【図３】
2019096088.tif 000019
【図４】
2019096088.tif 000020
【図５】
2019096088.tif 000021
【図６】
2019096088.tif 000022
【図７】
2019096088.tif 000023
【図８】
2019096088.tif 000024
【図９】
2019096088.tif 000025
【図１０】
2019096088.tif 000026
【図１１】
2019096088.tif 000027
【図１２】
2019096088.tif 000028
【図１３】
2019096088.tif 000029