(57)【要約】  本発明はニューラルネットワーク学習ベースの変種悪性コードを検出するための装置、そのための方法及びこの方法を実行するためのプログラムが記録されたコンピュータ読み取り可能な記録媒体に関するものである。本発明によれば、別の特徴を抽出せず、一次元２進データを二次元データに変換し、多層の非線形構造を有するニューラルネットワークを介してディープラーニングを行うので、ディープラーニングの実行により悪性コード及びその変種の特徴を抽出できる。従って、別の特徴抽出ツールや専門家の人為的な努力を必要としないので、分析時間が短縮され、既存の悪性コードの分類ツールが検出できない変種悪性コードもディープラーニングを行って検出することができる。【選択図】  図２
2019527447.tif 000002
【特許請求の範囲】
【請求項１】
変種悪性コードを検出するための装置であって、
一つの元素がデータ処理単位である二次元マトリックスからなる入力層と、複数の演算を含む複数の層で構成され、前記複数の層のうちいずれかの層のいずれかの演算結果は重みが適用されて、次層の演算に入力として提供される隠れ層と、複数のノードからなる出力層と、を含むニューラルネットワーク；
一次元２進コードであるデータが入力されると、前記一次元２進コードをピクセル単位に区分してピクセルを生成し、前記入力層のマトリックスのサイズに合わせて前記生成されたピクセルを用いて画像を生成することによって、前記データを変換するデータ変換部；及び
前記データが疑わしいデータであれば、前記データ変換部によって変換された前記データを疑わしいデータとして前記ニューラルネットワークに入力して、前記ニューラルネットワークを介して前記疑わしいデータから予め学習された悪性コードの特徴を抽出し、分類して前記疑わしいデータに含まれた悪性コードのカテゴリを検出する検出部を含むことを特徴とする変種悪性コードを検出するための装置。
【請求項２】
前記データ変換部は、前記一次元２進コードをアーキテクチャで用いられるワードサイズの整数倍ずつ区分して、二次元ベクトルのシーケンスに変換することを特徴とする請求項１記載の変種悪性コードを検出するための装置。
【請求項３】
前記データが学習データであれば、前記データ変換部によって変換された前記データを学習データとして前記ニューラルネットワークに入力して、前記ニューラルネットワークの複数の演算を通じて出力された出力値が前記学習データの既知の悪性コードのカテゴリを示す期待値になるように、逆伝播アルゴリズムを用いて前記重みを補正する学習部を更に含むことを特徴とする請求項１記載の変種悪性コードを検出するための装置。
【請求項４】
前記隠れ層は、前記疑わしいデータがマッピングされる複数の特徴マップで構成され、カーネルとの演算を通じて前記疑わしいデータに含まれた悪性コードの特徴を抽出する畳込み層；
前記畳込み層に対応して前記抽出した悪性コードの特徴がマッピングされる複数の特徴マップで構成され、カーネルとの演算を通じて前記悪性コードの特徴のサンプルを抽出するプーリング層；及び
それぞれ前記悪性コードの特徴を示す複数のノードで構成される全結合層を含むことを特徴とする請求項１記載の変種悪性コードを検出するための装置。
【請求項５】
一つの元素がデータ処理単位である二次元マトリックスからなる入力層と、複数の演算を含む複数の層で構成され、前記複数の層のうちいずれかの層のいずれかの演算結果は重みが適用されて、次層の演算に入力として提供される隠れ層と、複数のノードからなる出力層と、を含むニューラルネットワークを用いて変種悪性コードを検出するための方法であって、
一次元２進コードである入力データが入力されると、データ変換部が、前記一次元２進コードをピクセル単位に区分してピクセルを生成し、前記生成されたピクセルを用いて前記マトリックスの行と列の比と同じ割合を有する画像に前記データを変換するステップ；及び
前記データが疑わしいデータであれば、検出部が、前記データ変換部によって変換された前記データを疑わしいデータとして前記ニューラルネットワークに入力して、前記ニューラルネットワークを介して悪性コードの特徴を抽出し、抽出した悪性コードの特徴に基づいて前記疑わしいデータに含まれた悪性コードのカテゴリを検出するステップを含むことを特徴とする変種悪性コードを検出するための方法。
【請求項６】
前記変換ステップは、一次元２進シーケンスで構成される入力データをアーキテクチャで用いられるワードサイズの整数倍ずつ区分して、二次元ベクトルのシーケンスに変換することを特徴とする請求項５に記載の変種悪性コードを検出するための方法。
【請求項７】
前記変換ステップ後、前記データが学習データであれば、学習部が、前記データ変換部によって変換された前記データを学習データとして前記ニューラルネットワークに入力して、前記ニューラルネットワークの複数の演算を通じて出力された出力値が前記学習データの既知の悪性コードのカテゴリを示す期待値になるように、逆伝播アルゴリズムを用いて前記重みを補正するステップを更に含むことを特徴とする請求項５記載の変種悪性コードを検出するための方法。
【請求項８】
前記検出ステップは、前記疑わしいデータがマッピングされる特徴マップとカーネルとの間の演算を通じて前記疑わしいデータに含まれた悪性コードの特徴を抽出するステップ；
前記抽出した悪性コードの特徴を、それぞれ悪性コードの特徴を示す複数のノードにマッピングするステップ；及び
前記マッピングされた悪性コードの特徴を、それぞれ悪性コードのカテゴリを示す複数のノードにマッピングして出力するステップを含むことを特徴とする請求項５記載の変種悪性コードを検出するための方法。
【請求項９】
請求項５乃至８のいずれか一つに記載の変種悪性コードを検出するための方法を実行するためのプログラムが記録されたコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は変種悪性コードを検出するための技術に関するもので、より詳細にはニューラルネットワーク学習ベースの変種悪性コードを検出するための装置、そのための方法及びこの方法が記録されたコンピュータ読み取り可能な記録媒体に関するものである。
【背景技術】
【０００２】
悪性コードとは悪意のある目的で製作してコンピュータに悪影響を及ぼす全てのソフトウェアを呼ぶ。既存のシグネチャベースの検出方法や静的又は動的解析方法では、急速に増加している変種悪性コードに対処することが難しい。即ち、既存の方法を用いて悪性コードを検出する場合には、受動的分析とシグネチャを生成する方法で悪性コードを検出するため、変種悪性コードに対処することが難しい。また、既存の方法では、悪性コードの自動生成ツールなどを用いた変種悪性コードの生成及び伝播が容易に発生する恐れがある。悪性コードを静的に検出する既存の静的解析方法は悪性コードの実行ファイル、又は分解コードから人が任意に悪性コードの特徴を抽出して分析するため、データの特性を複合的に反映することが難しい。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明の目的はニューラルネットワーク学習ベースでデータに含まれた変種悪性コードを検出することができる装置、そのための方法及びこの方法を実行するためのプログラムが記録されたコンピュータ読み取り可能な記録媒体を提供することにある。
【課題を解決するための手段】
【０００４】
前述したような目的を達成するための本発明の一態様に係る変種悪性コードを検出するための装置は、一つの元素がデータ処理単位である二次元マトリックスからなる入力層と、複数の演算を含む複数の層で構成され、前記複数の層のうちいずれかの層のいずれかの演算結果は重みが適用されて、次層の演算に入力として提供される隠れ層と、複数のノードからなる出力層と、を含むニューラルネットワーク；一次元２進コードであるデータが入力されると、前記入力層のマトリックスに合わせて前記データを変換するデータ変換部；及び前記データが疑わしいデータであれば、前記疑わしいデータを前記ニューラルネットワークに入力して、前記ニューラルネットワークを介して前記疑わしいデータから予め学習された悪性コードの特徴を抽出し、分類して前記疑わしいデータに含まれた悪性コードのカテゴリを検出する検出部を含む。
【０００５】
前記データ変換部は、前記一次元２進コードをアーキテクチャで用いられるワードサイズの整数倍ずつ区分して、二次元ベクトルのシーケンスに変換することを特徴とする。
【０００６】
前記データ変換部は、前記一次元２進コードをピクセル単位に区分してピクセルを生成し、前記入力層のマトリックスのサイズに合わせて前記生成されたピクセルを用いて画像を生成することを特徴とする。
【０００７】
本発明の一実施形態に係る変種悪性コードを検出するための装置は、前記変換されたデータが学習データであれば、前記学習データを前記ニューラルネットワークに入力して、前記ニューラルネットワークの複数の演算を通じて出力された出力値が前記学習データの既知の悪性コードのカテゴリを示す期待値になるように、逆伝播アルゴリズムを用いて前記重みを補正する学習部を更に含む。
【０００８】
前記隠れ層は、前記疑わしいデータがマッピングされる複数の特徴マップで構成され、カーネルとの演算を通じて前記疑わしいデータに含まれた悪性コードの特徴を抽出する畳込み層；前記畳込み層に対応して前記抽出した悪性コードの特徴がマッピングされる複数の特徴マップで構成され、カーネルとの演算を通じて前記悪性コードの特徴をダウンサンプリングするプーリング層；及びそれぞれ前記悪性コードの特徴を示す複数のノードで構成される全結合層を含む。
【０００９】
前述したような目的を達成するための本発明の他の態様に係る変種悪性コードを検出するための方法は、一次元２進コードである入力データが入力されると、データ変換部が、一つの元素がデータ処理単位である所定サイズの二次元マトリックスに合わせて前記データを変換するステップ；及び前記データが疑わしいデータであれば、検出部が、ニューラルネットワークを介して予め学習された悪性コードの特徴を前記疑わしいデータから抽出し、抽出した悪性コードの特徴に基づいて前記疑わしいデータに含まれた悪性コードのカテゴリを検出するステップを含むことを特徴とする。
【００１０】
前記変換ステップは、一次元２進シーケンスで構成される入力データをアーキテクチャで用いられるワードサイズの整数倍ずつ区分して、二次元ベクトルのシーケンスに変換することを特徴とする。
【００１１】
前記変換ステップは、前記一次元２進コードをピクセル単位に区分してピクセルを生成するステップと、前記生成されたピクセルを用いて前記マトリックスに合わせて画像に変換するステップと、を含む。
【００１２】
前述した方法は、前記変換ステップ後、前記データが学習データであれば、学習部が、前記学習データを前記ニューラルネットワークに入力して、前記ニューラルネットワークの複数の演算を通じて出力された出力値が前記学習データの既知の悪性コードのカテゴリを示す期待値になるように、前記重みを補正するステップを更に含む。
【００１３】
前記検出ステップは、前記疑わしいデータがマッピングされる特徴マップとカーネルとの間の演算を通じて前記疑わしいデータに含まれた悪性コードの特徴を抽出するステップ；前記抽出した悪性コードの特徴を、それぞれ悪性コードの特徴を示す複数のノードにマッピングするステップ；及び前記マッピングされた悪性コードの特徴を、それぞれ悪性コードのカテゴリを示す複数のノードにマッピングして出力するステップを含む。
【００１４】
また、前述した本発明の好ましい実施形態に係る変種悪性コードを検出するための方法を実行するためのプログラムが記録されたコンピュータ読み取り可能な記録媒体を提供する。
【発明の効果】
【００１５】
本発明によれば、別の特徴を抽出せず、一次元２進データを二次元データに変換し、多層の非線形構造を有するニューラルネットワークを介してディープラーニングを行うので、ディープラーニングの実行により悪性コード及びその変種の特徴を抽出できる。従って、別の特徴抽出ツールや専門家の人為的な努力を必要としないので、分析時間が短縮され、既存の悪性コードの分類ツールが検出できない変種悪性コードもディープラーニングを行って検出することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施形態に係るニューラルネットワーク学習ベースの変種悪性コードを検出するための装置の構成を示すブロック図である。
【図２】本発明の一実施形態に係るデータ変換部の動作を説明するための図である。
【図３】本発明の他の実施形態に係るデータ変換部の動作を説明するための図である。
【図４】本発明の実施形態に係るニューラルネットワーク学習ベースの変種悪性コードを検出するためのニューラルネットワークの構成を示すブロック図である。
【図５】本発明の一実施形態に係るニューラルネットワークの内部構造及び概念を説明するための図である。
【図６】本発明の実施形態に係るカーネルＫｃを用いた畳込み演算の一例を説明するための図である。
【図７】本発明の実施形態に係るプール演算の一例を説明するための図である。
【図８】本発明の実施形態に係る重みを適用するノードの演算を説明するための図である。
【図９】本発明の実施形態に係るディープラーニングに基づいて悪性コードを学習する方法を説明するためのフローチャートである。
【図１０】本発明の実施形態に係るニューラルネットワーク学習ベースの変種悪性コードを検出するための方法を説明するためのフローチャートである。
【発明を実施するための最良の形態】
【００１７】
前述したような目的を達成するための本発明の一態様に係る変種悪性コードを検出するための装置は、一つの元素がデータ処理単位である二次元マトリックスからなる入力層と、複数の演算を含む複数の層で構成され、前記複数の層のうちいずれかの層のいずれかの演算結果は重みが適用されて、次層の演算に入力として提供される隠れ層と、複数のノードからなる出力層と、を含むニューラルネットワーク；一次元２進コードであるデータが入力されると、前記入力層のマトリックスに合わせて前記データを変換するデータ変換部；及び前記データが疑わしいデータであれば、前記疑わしいデータを前記ニューラルネットワークに入力して、前記ニューラルネットワークを介して前記疑わしいデータから予め学習された悪性コードの特徴を抽出し、分類して前記疑わしいデータに含まれた悪性コードのカテゴリを検出する検出部を含む。
【００１８】
前記データ変換部は、前記一次元２進コードをアーキテクチャで用いられるワードサイズの整数倍ずつ区分して、二次元ベクトルのシーケンスに変換することを特徴とする。
【００１９】
前記データ変換部は、前記一次元２進コードをピクセル単位に区分してピクセルを生成し、前記入力層のマトリックスのサイズに合わせて前記生成されたピクセルを用いて画像を生成することを特徴とする。
【００２０】
本発明の一実施形態に係る変種悪性コードを検出するための装置は、前記変換されたデータが学習データであれば、前記学習データを前記ニューラルネットワークに入力して、前記ニューラルネットワークの複数の演算を通じて出力された出力値が前記学習データの既知の悪性コードのカテゴリを示す期待値になるように、逆伝播アルゴリズムを用いて前記重みを補正する学習部を更に含む。
【００２１】
前記隠れ層は、前記疑わしいデータがマッピングされる複数の特徴マップで構成され、カーネルとの演算を通じて前記疑わしいデータに含まれた悪性コードの特徴を抽出する畳込み層；前記畳込み層に対応して前記抽出した悪性コードの特徴がマッピングされる複数の特徴マップで構成され、カーネルとの演算を通じて前記悪性コードの特徴をダウンサンプリングするプーリング層；及びそれぞれ前記悪性コードの特徴を示す複数のノードで構成される全結合層を含む。
【００２２】
前述したような目的を達成するための本発明の他の態様に係る変種悪性コードを検出するための方法は、一次元２進コードである入力データが入力されると、データ変換部が、一つの元素がデータ処理単位である所定サイズの二次元マトリックスに合わせて前記データを変換するステップ；及び前記データが疑わしいデータであれば、検出部が、ニューラルネットワークを介して予め学習された悪性コードの特徴を前記疑わしいデータから抽出し、抽出した悪性コードの特徴に基づいて前記疑わしいデータに含まれた悪性コードのカテゴリを検出するステップを含むことを特徴とする。
【００２３】
前記変換ステップは、一次元２進シーケンスで構成される入力データをアーキテクチャで用いられるワードサイズの整数倍ずつ区分して、二次元ベクトルのシーケンスに変換することを特徴とする。
【００２４】
前記変換ステップは、前記一次元２進コードをピクセル単位に区分してピクセルを生成するステップと、前記生成されたピクセルを用いて前記マトリックスに合わせて画像に変換するステップと、を含む。
【００２５】
前述した方法は、前記変換ステップ後、前記データが学習データであれば、学習部が、前記学習データを前記ニューラルネットワークに入力して、前記ニューラルネットワークの複数の演算を通じて出力された出力値が前記学習データの既知の悪性コードのカテゴリを示す期待値になるように、前記重みを補正するステップを更に含む。
【００２６】
前記検出ステップは、前記疑わしいデータがマッピングされる特徴マップとカーネルとの間の演算を通じて前記疑わしいデータに含まれた悪性コードの特徴を抽出するステップ；前記抽出した悪性コードの特徴を、それぞれ悪性コードの特徴を示す複数のノードにマッピングするステップ；及び前記マッピングされた悪性コードの特徴を、それぞれ悪性コードのカテゴリを示す複数のノードにマッピングして出力するステップを含む。
【００２７】
また、前述した本発明の好ましい実施形態に係る変種悪性コードを検出するための方法を実行するためのプログラムが記録されたコンピュータ読み取り可能な記録媒体を提供する。
【００２８】
本発明の詳細な説明に先立ち、以下で説明する本明細書および特許請求の範囲に使用した用語や単語は、通常的や辞書的な意味に限定して解釈してはならず、発明者はその自身の発明を最善の方法として説明するために用語の概念を適切に定義できるという原則に立ち、本発明の技術的な思想に符合する意味と概念として解釈しなければならない。従って、本明細書に記載した実施形態と図面に示す構成は、本発明の最も好ましい一実施形態に過ぎず、本発明の技術的な思想を全て代弁するものではないため、本出願時点においてこれらを代替することができる多様な均等物と変形例があり得ることを理解しなければならない。
【００２９】
以下、添付図面を参照して本発明の好ましい実施形態を詳しく説明する。この時、添付図面において同一の構成要素については同一の参照符号を付したことに注意しなければならない。なお、本発明の要旨を不明にする公知の機能及び構成についての詳細な説明は適宜省略する。同様の理由から添付図面において、一部の構成要素は、誇張されたり、省略されたり、または概略的に図示されており、各構成要素のサイズが実際の大きさを全面的に反映したものではない。
【００３０】
まず、本発明の実施形態に係るニューラルネットワーク学習ベースの変種悪性コードを検出するための装置について説明することにする。図１は本発明の実施形態に係るニューラルネットワーク学習ベースの変種悪性コードを検出するための装置の構成を示すブロック図である。また、図２は本発明の一実施形態に係るデータ変換部の動作を説明するための図であり、図３は本発明の他の実施形態に係るデータ変換部の動作を説明するための図である。そして、図４は本発明の実施形態に係るニューラルネットワーク学習ベースの変種悪性コードを検出するためのニューラルネットワークの構成を示すブロック図である。また、図５は本発明の一実施形態に係るニューラルネットワークの内部構造及び概念を説明するための図である。
【００３１】
図１を参照すると、本発明の実施形態に係るニューラルネットワーク学習ベースの変種悪性コードを検出するための装置（以下、「悪性コード検出装置」と略称する）は、データ変換部１００、学習部２００、検出部３００及びニューラルネットワーク４００を含む。また、ニューラルネットワーク４００は入力層４１０、隠れ層４２０及び出力層４３０を含む複数の層からなる。特に、ニューラルネットワーク４００に含まれた複数の層は複数の演算からなり、複数の層のうちいずれかの層のいずれかの演算は重みを適用して、次層の少なくとも一つの演算で入力として用いられる。これらの演算及び重みによってニューラルネットワークは複数の非線形層を含む非線形多層構造を有するようになる。
【００３２】
ニューラルネットワーク４００の入力層４１０は一つの元素がデータ処理単位である二次元マトリックスからなる。データ変換部１００は学習データ及び疑わしいデータのうちいずれかのデータが入力されると、入力されたデータをニューラルネットワーク４００の規格に合わせて変換する。即ち、入力されたデータは一次元２進コードからなり、データ変換部１００は一次元２進コードを一つの元素がデータ処理単位である二次元マトリックスに合わせて変換する。
【００３３】
図２を参照して説明する実施形態によれば、データ変換部１００はデータが入力されると、入力されたデータの２進コード、即ち、２進シーケンス（ｂｉｎａｒｙ  ｓｅｑｕｅｎｃｅ）をｋビットずつ束ねて単一の値として読み取る。そして、データ変換部１００はｋビットずつ読み取られた一次元２進コード（２進シーケンス）をＤサイズを有する二次元ベクトルシーケンス（ｖｅｃｔｏｒ  ｓｅｑｕｅｎｃｅ）に変換する。ここで、ｋ＊Ｄはアーキテクチャで用いられるワードサイズの整数倍である。即ち、データ変換部１００は非定型性を有していたコードをｋ＊Ｄサイズに定型化された二次元ベクトルシーケンスに変換（ｅｍｂｅｄｄｉｎｇ）する。その後、データ変換部は二次元ベクトルシーケンスに変換されたデータ（学習データ又は疑わしいデータ）を学習部２００又は検出部３００に入力として提供する。
【００３４】
図３を参照して説明する他の実施形態によれば、データ変換部１００はデータが入力されると、入力されたデータの２進コードをピクセル単位に区分してピクセルを生成する（００００００００：ｂｌａｃｋ→ＦＦＦＦＦＦＦＦ：ｗｈｉｔｅ）。例えば、入力されたデータの２進コードをデータ変換部によって８ビット単位で束ねて単一のピクセル（ｐｉｘｅｌ）に示す。その後、データ変換部１００は入力層４１０のマトリックスのサイズに合わせて生成したピクセルを用いて画像を生成する。即ち、データ変換部１００は入力層４１０のマトリックスの行と列の比と同じ割合を有する画像を生成する。このように、本発明の他の実施形態によれば、２進コードに変換して入力層４１０の規格に合った画像を生成する。この時、データ変換部１００は悪性コードごとに実行ファイルのサイズが異なるため、画像の縦横比が適切に維持されるように、画像の横の長さを実行可能ファイルのサイズに比例して固定させる。特に、データ変換部１００は画像で示したデータ（学習データ又は疑わしいデータ）のサイズが異なるため、入力層４１０の規格に合わせるために パディング（ｐａｄｄｉｎｇ）、クロッピング（ｃｒｏｐｐｉｎｇ）、サイズ変更（ｒｅｓｉｚｉｎｇ）などを通じて画像のサイズを調整することができる。その後、データ変換部は二次元画像に変換されたデータ（学習データ又は疑わしいデータ）を学習部２００又は検出部３００に入力として提供する。
【００３５】
学習部２００はデータ変換部１００からの学習データが入力されると、その学習データをニューラルネットワーク４００に入力し、ニューラルネットワーク４００をディープラーニングさせる。
【００３６】
それぞれのニューラルネットワーク４００は複数の演算を含む複数の層（ｌａｙｅｒ）を含む。
【００３７】
複数の層のうちいずれかの層のいずれかの演算で得られた演算結果には重みＷが適用されて、次層の少なくとも一つの演算に入力として提供されて用いられる。
【００３８】
学習部２００は学習データをニューラルネットワーク４００に入力し、ニューラルネットワーク４００は複数の層の複数のノードを通じて行われる演算による最終の演算結果が当該学習データの悪性コードのカテゴリを示すように重みＷを算出する。このように、重みＷを算出する過程を本発明では「ディープラーニング（ｄｅｅｐ  ｌｅａｎｉｎｇ）」と称する。
【００３９】
検出部３００はデータ変換部１００から疑わしいデータが入力されると、その疑わしいデータをニューラルネットワーク４００に入力してニューラルネットワーク４００を介して疑わしいデータに含まれた悪性コードのカテゴリを検出する。即ち、検出部３００はニューラルネットワーク４００を介して悪性コードのカテゴリを検出し、検出した悪性コードのカテゴリを出力する。
【００４０】
前述したように、ニューラルネットワーク４００は複数の演算を含む複数の層を含む。このようなニューラルネットワーク４００についてより詳細に説明することにする。図４を参照すると、ニューラルネットワーク４００は入力層４１０、隠れ層４２０及び出力層４３０からなる。
【００４１】
入力層４１０は前述したような学習データや疑わしいデータが入力される層である。入力層４１０は所定のサイズを有する二次元マトリックスであり、このような二次元マトリックスの一つの元素は、一実施形態によれば、アーキテクチャのデータ処理単位であるワードサイズの整数倍になることができる。また、他の実施形態によれば、二次元マトリックスの一つの元素はピクセルになることができる。
【００４２】
なお、隠れ層４２０は学習データに基づいて悪性コードの特徴をディープラーニングしたり、ディープラーニングの結果に基づいて演算を行うことによって、疑わしいデータに含まれた悪性コードの特徴を分類して抽出するための層である。
【００４３】
隠れ層４２０は交互に繰り返される所定数の畳込み層（ＣＬ：ｃｏｎｖｏｌｕｔｉｏｎ  ｌａｙｅｒ）、プーリング層（ＰＬ：ｐｏｏｌｉｎｇ  ｌａｙｅｒ）、及び全結合層（ＦＬ：ｆｕｌｌｙ  ｃｏｎｎｅｃｔｅｄ  ｌａｙｅｒ）を含む。
【００４４】
一例として、図５に示すように、隠れ層は第１及び第２畳込み層ＣＬ１、ＣＬ２と第１及び第２プーリング層ＰＬ１、ＰＬ２を含むことができる。畳込み層ＣＬ（ＣＬ１、ＣＬ２）及びプーリング層ＰＬ（ＰＬ１、ＰＬ２）は所定のサイズを有する特徴マップ（ｆｅａｔｕｒｅ  ｍａｐ）からなる。特徴マップを構成する各元素は所定のサイズを有するカーネルとの演算、即ち、畳込み演算（ｃｏｎｖｏｌｕｔｉｏｎ）又はプール演算（ｐｏｏｌｉｎｇ又はｓｕｂｓａｍｐｌｉｎｇ）を通じて算出される。図５において、このような特徴マップは実線の長方形で示されており、カーネルは点線の長方形で示されている。
【００４５】
畳込み層ＣＬ１、ＣＬ２の特徴マップを構成する各元素は所定のサイズを有するカーネルを用いた畳込み演算を通じて算出される。畳込み演算に用いられるカーネルＫｃは相異なる複数の悪性コードの特徴を抽出するためのパラメータである。また、相異なる複数の悪性コードの特徴を抽出するために、相異なるカーネルＫｃの各元素は異なる値を有する。図６は本発明の実施形態に係るカーネルＫｃを用いた畳込み演算の一例を説明するための図である。図６に示すように、ニューラルネットワークは入力特徴マップＭ１とカーネルＫｃとの間に畳込み演算を行って、新しい出力特徴マップＭ２を生成する。図６の（Ａ）に示すように、入力特徴マップＭ１は４×４サイズを有し、６（Ｂ）に示すように、カーネルＫｃは２×２サイズを有すると仮定する。ここで、カーネルＫｃは畳込み演算の重みＷである。
【００４６】
このように、ニューラルネットワークは４×４サイズの入力特徴マップと２×２サイズのカーネルとの間に畳込み演算を行って、図６（Ｃ）に示すように、３×３サイズの出力特徴マップを生成する。ニューラルネットワークは一定の間隔でカーネルＫｃがシフトしながら、特徴マップ（入力）の元素とそれに対応するカーネルの元素との間に畳込み演算を行う。より詳細には、畳込み演算は特徴マップ（入力）の元素と、それに対応するカーネルＫｃとの間の積を加算する演算（「積和演算」）を通じて得られる。一例として、出力特徴マップＭ２の（１、１）元素は第１の演算（Ｓ１）を通じて算出される。即ち、第１の演算（Ｓ１）の結果、出力特徴マップＭ２の（１、１）元素が以下の数式１のような積和演算を通じて算出される。
（１×１）＋（１×１）＋（０×０）＋（１×０）＝２  ・・・（数式１）
【００４７】
また、出力特徴マップＭ２の（２、２）元素は第２演算（Ｓ２）を通じて算出される。このような第２演算（Ｓ２）の結果、出力特徴マップＭ２の（２、２）元素が以下の数式２のような積和演算を通じて算出される。
（１×１）＋（０×１）＋（０×０）＋（１×０）＝１  ・・・（数式２）
【００４８】
前述したように、ニューラルネットワークは畳込み演算を通じて生成された特徴マップについてプール演算を行う。即ち、プーリング層ＰＬ１、ＰＬ２の特徴マップを構成する各元素は所定のサイズを有するカーネルを用いたプール演算（ｐｏｏｌｉｎｇ又はｓｕｂｓａｍｐｌｉｎｇ）を通じて算出される。プール演算に用いられるカーネルＫｐは複数の悪性コードの特徴をダウンサンプリングするためのパラメータである。図７は本発明の実施形態に係るプール演算の一例を説明するための図である。図７に示すように、ニューラルネットワークは入力特徴マップＭ３とカーネルＫｐとの間にプール演算を行って新しい出力特徴マップＭ４を生成する。ここで、入力特徴マップＭ３は図７（ａ）に示すように、４×４サイズを有し、カーネルＫｐは図７（ｂ）に示すように、２×２のサイズを有すると仮定する。このように、ニューラルネットワークは４×４サイズの特徴マップと２×２サイズのカーネルとの間にプール演算を行って、図７（ｃ）に示すように、２×２サイズを有する出力特徴マップを生成する。
【００４９】
ニューラルネットワークはカーネルＫｐが一定の間隔でシフトしながら入力特徴マップの元素とそれに対応するカーネルの元素との間にプール演算を行う。この実施形態においては、プール演算はカーネルＫｐがカーネルのサイズだけシフトすると仮定する。特に、プール演算は最大値、平均値、中央値、ノルム（ｎｏｒｍ）の値を選択する演算のうちいずれかであり得る。この実施形態においては、最大値を選択するプール演算を行って出力特徴マップを算出すると仮定する。一例として、出力特徴マップＭ４の（１、１）元素は第３演算（Ｓ３）を通じて算出される。即ち、第３演算（Ｓ３）の結果、出力特徴マップＭ４の（１、１）元素が以下の数式３のような最大値を選択するプール演算を通じて算出される。
Ｍａｘ（１，０，４，６）＝６  ・・・（数式３）
【００５０】
他の例として、出力特徴マップＭ４の（１、２）元素は第４の演算（Ｓ４）を通じて算出される。このような第４の演算（Ｓ４）の結果、出力特徴マップＭ４の（１、２）元素が以下の数式４のような最大値を選択するプール演算を通じて算出される。
Ｍａｘ（２，３，０，１）＝３  ・・・（数式４）
【００５１】
前述したように、畳込み層ＣＬ及びプーリング層ＰＬとの間の演算が行われると、特徴マップの数は増加し、特徴マップを構成する元素の数は減少する。
【００５２】
全結合層ＦＬは特徴マップの全ての元素が単一の値に完全に結合された層である。このような状態を通常全結合状態とする。
【００５３】
全結合層ＦＬは複数のノードからなり、データから抽出できる悪性コードの特徴を分類して抽出した層である。従って、全結合層ＦＬの複数のノードにおけるそれぞれは相異なる悪性コードの特徴を示す。また、各ノードは固有の演算を有する。図５の実施形態にはｎ個のノードＮ１、Ｎ２、Ｎ３、…Ｎｎが示されている。
【００５４】
各ノードＮ１、Ｎ２、Ｎ３、…Ｎｎは連結された前層の演算結果の入力を受け取って演算を行い、演算結果は次層の対応するノードＰ１、Ｐ２、Ｐ３に出力する。
【００５５】
図８は本発明の実施形態に係る重みを適用してノードを演算する過程を説明するための図である。図８に示すように、いずれかのノードＮａは前層の関連ノードの出力を入力として受け取って演算を行った後、その演算結果を出力する。前層の出力が次層に入力される際に、重みＷが適用される。即ち、図８に示すように、ノードＮａの入力は前層の３つのノードにおけるそれぞれの演算結果である第１乃至第３出力Ｉ１、Ｉ２、Ｉ３のそれぞれに第１乃至第３重みＷ１、Ｗ２、Ｗ３をそれぞれ適用し、これを合算して得られた値である。即ち、ノードＮａの入力は以下の数式５のような積和演算を通じて得られる。
（Ｉ１×Ｗ１）＋（Ｉ２×Ｗ２）＋（Ｉ３×Ｗ３）  ・・・（数式５）
【００５６】
また、ノードＮａの出力Ｏは次層のノードに対応する重みを適用して提供される。例えば、図８に示すように、ノードＮａの出力がノードＮｂに入力される際に、重みＷｂが適用されて提供され、ノードＮａの出力がノードＮｃに入力される際に、重みＷｃが適用されて提供される。
【００５７】
全結合層ＦＬの出力は出力層４３０に入力として提供され、重みＷを介して全結合層ＦＬにマッピングされる。出力層４３０のノードにおけるそれぞれは悪性コードのカテゴリに対応する。このような出力層４３０のノードにおけるそれぞれの出力は、ニューラルネットワーク４００に入力された学習データ又は疑わしいデータが当該悪性コードのカテゴリである確率を示すスコアであり得る。例えば、図４の出力層４３０のノードＰ１、Ｐ２、Ｐ３のそれぞれは悪性コードカテゴリ１，２、３に対応し、ノードＰ１、Ｐ２、Ｐ３のそれぞれの出力は学習データ又は疑わしいデータが悪性コードカテゴリ１，２、３である確率を意味する。
【００５８】
それによって、検出部３００は疑わしいデータをニューラルネットワーク４００に入力し、ニューラルネットワーク４００の最終出力値、即ち、出力層４３０のノードにおけるそれぞれの出力に基づいて疑わしいデータに含まれた悪性コードがある悪性コードのカテゴリに属するかが分かれる。
【００５９】
例えば、検出部３００はノードＰ１、Ｐ２、Ｐ３のいずれかの出力が所定値以上であり、他の２つのノードより高い数値を有する場合は、入力された疑わしいデータに含まれた悪性コードが当該ノードに対応する悪性コードのカテゴリに属すると判断することができる。
【００６０】
次に、本発明の実施形態に係る悪性コードを学習する方法について説明することにする。図９は本発明の実施形態に係る悪性コードを学習する方法を説明するためのフローチャートである。
【００６１】
学習データが入力されると、データ変換部１００はＳ１１０ステップで、一次元２進コードである学習データをニューラルネットワーク４００の入力層４１０のマトリックスに合わせて変換する。一実施形態よると、データ変換部１００は一次元２進コードをアーキテクチャで用いられるワードサイズの整数倍ずつ区分して、二次元ベクトルシーケンスに変換し、変換したシーケンスを学習部２００に入力する。他の実施形態によれば、データ変換部１００は一次元２進コードをピクセル単位に区分してピクセルを生成し、生成したピクセルを用いて入力層４１０のマトリックスの行と列の比と同じサイズの画像に変換学習部２００に入力する。
【００６２】
次に、学習部２００はＳ１２０ステップで、前ステップで変換された学習データをニューラルネットワーク４００に入力し、ニューラルネットワーク４００の出力値を導出する。この時、ニューラルネットワーク４００は学習データに対して複数の層の複数の演算を通じて出力値を導出する。
【００６３】
ここで、複数の層のうちいずれかの層のいずれかの演算結果は重みが適用されて、次層の演算に入力として提供される。
【００６４】
学習データはその悪性コードのカテゴリが知られている悪性コードを含む。従って、学習データを入力したとき、ニューラルネットワーク４００の出力、即ち、ニューラルネットワーク４００の出力層４３０の出力値は学習データの既知の悪性コードのカテゴリを示すことを期待することができる。このように、学習データがニューラルネットワーク４００に入力された時、学習データの既知の悪性コードのカテゴリを示すことを期待する出力値を本発明では「期待値」と称する。従って、学習部２００はＳ１３０ステップで、出力値が期待値になるように、又は出力値と期待値の差が最小になるように逆伝播アルゴリズムを用いて重みを修正する。例えば、図５に示すように、出力層４３０はノードＰ１、Ｐ２、Ｐ３を含み、それぞれの悪性コードの第１乃至第３カテゴリを示すと仮定する。また、入力された学習データは第３カテゴリに属する悪性コードを含むと仮定する。第１乃至第３カテゴリのそれぞれの出力はニューラルネットワーク４００に入力された学習データが第１乃至第３カテゴリに属する確率を示すスコアである。従って、学習部２００は出力層４３０のノードＰ３の出力値が最大になるように逆伝播アルゴリズムを用いて重みを修正する。前述したＳ１１０ステップ乃至Ｓ１３０ステップは複数の学習データを用いて「十分なディープラーニングが行われる」まで繰り返し行うことが好ましい。本発明において、「十分なディープラーニングが行われる」とは任意の学習データを入力した場合には出力値と期待値の差が予め設定された数値未満になるまでを意味する。
【００６５】
その後、前述したような方法で十分にディープラーニングしたニューラルネットワーク４００を介して変種悪性コードを検出するための方法について説明することにする。図１０は本発明の実施形態に係るニューラルネットワーク学習ベースの変種悪性コードを検出するための方法を説明するためのフローチャートである。
【００６６】
図１０を参照すると、疑わしいデータが入力される場合、データ変換部１００はＳ２１０ステップで、一次元２進コードである疑わしいデータをニューラルネットワーク４００の入力層４１０のマトリックスに合わせて変換する。一実施形態よれば、図２に示すように、データ変換部１００は一次元２進コードをアーキテクチャで用いられるワードサイズの整数倍ずつ区分して二次元ベクトルシーケンスに変換し、変換したシーケンスを検出部３００に入力する。他の実施形態によれば、図３に示すように、データ変換部１００は２進コードをピクセル単位に区分してピクセルを生成し、生成したピクセルを用いて入力層４１０のマトリックスの行と列の比と同じサイズの画像に変換し、変換した画像を検出部３００に入力する。
【００６７】
その後、検出部３００はＳ２２０ステップで、前ステップで変換した疑わしいデータをニューラルネットワーク４００に入力してニューラルネットワーク４００の出力値を導出する。この時、ニューラルネットワーク４００は疑わしいデータに対して複数の層の複数の演算を行って出力値を算出する。
【００６８】
ここで、複数の層のうちいずれかの層のいずれかの演算結果は予め学習された重みが適用されて、次層の演算に入力として提供される。次には、出力値を導出する手順についてより詳細に説明する。ニューラルネットワーク４００の入力層４１０に疑わしいデータが入力されると、隠れ層４２０の畳込み層ＣＬ及びプーリング層ＰＬは特徴マップとカーネル（Ｋ）との間の入力された疑わしいデータの演算に予め学習された重みを適用して、疑わしいデータに含まれた悪性コードの特徴を分類して抽出する。その後、畳込み層ＣＬ及びプール階ＰＬから抽出した悪性コードの特徴を、予め学習された重みを用いて全結合層ＦＬの悪性コードの特徴を示すノードにマッピングする。続いて、全結合層ＦＬはマッピングされた悪性コードの特徴を予め学習された重みを用いて出力層４３０の悪性コードのカテゴリを示すノードにマッピングする。そして、出力層４３０の各ノードは疑わしいデータに含まれた悪性コードが当該悪性コードのカテゴリに属する確率をスコアとして出力する。
【００６９】
次に、検出部３００はＳ２３０のステップで、疑わしいデータに含まれた悪性コードが出力層４３０の各ノードのうち出力値が最大であるノードに該当する悪性コードのカテゴリに属すると判断し、当該悪性コードのカテゴリを出力する。
【００７０】
一方、前述した本発明の実施形態に係る方法は多様なコンピュータ手段を通じて行われることができるプログラム命令形態で具現されてコンピュータで読み取り可能な記録媒体に記録されることができる。ここで、記録媒体はプログラム命令、データファイル、データ構造などを単独で又は組み合わせて含むことができる。記録媒体に記録されるプログラム命令は本発明のために特別に設計されて構成されたものであるか、コンピュータソフトウェアの当業者に公知されて使用可能なものであり得る。例えば、記録媒体はハードディスク、フロッピーディスク及び磁気テープのような磁気媒体（Ｍａｇｎｅｔｉｃ  Ｍｅｄｉａ）、ＣＤ−ＲＯＭ、ＤＶＤのような光記録媒体（Ｏｐｔｉｃａｌ  Ｍｅｄｉａ）、フロプティカルディスク（Ｆｌｏｐｔｉｃａｌ  Ｄｉｓｋ）のような磁気−光媒体（Ｍａｇｎｅｔｏ−Ｏｐｔｉｃａｌ  Ｍｅｄｉａ）、及びＲＯＭ、ＲＡＭ、フラッシュメモリーなどのようなプログラム命令を格納し、行うように特別に構成したハードウェア装置を含む。また、プログラム命令の例としてはコンパイラーによって作られるような機械語コードだけでなく、インタプリターなどを用いてコンピュータで行うことができる高級言語コードを含む。このようなハードウェア装置は本発明の動作を行うために１つ以上のソフトウェアモジュールとして作動するように構成することができ、その逆も同様である。
【００７１】
以上、本発明をいくつかの好ましい実施形態を用いて説明したが、これらの実施形態は例示的なものであり、限定的なものではない。このように、本発明の属する技術分野における通常の知識を有する者であれば、本発明の思想と添付された特許請求の範囲に記載された権利範囲から外れずに、均等論によって多くの変形及び修正がなされ得ることがわかるはずである。
【符号の説明】
【００７２】
１００  データ変換部
２００  学習部
３００  検出部
４００  ニューラルネットワーク
４１０  入力層
４２０  隠れ層
４３０  出力層
【図１】
2019527447.tif 000003
【図２】
2019527447.tif 000004
【図３】
2019527447.tif 000005
【図４】
2019527447.tif 000006
【図５】
2019527447.tif 000007
【図６】
2019527447.tif 000008
【図７】
2019527447.tif 000009
【図８】
2019527447.tif 000010
【図９】
2019527447.tif 000011
【図１０】
2019527447.tif 000012
【国際調査報告】
2019527447.tif 000013
2019527447.tif 000014
2019527447.tif 000015
2019527447.tif 000016