(57)【要約】【課題】通信情報を分析し、業務の情報を抽出する。【解決手段】パケットを処理するネットワーク装置であって、所定の手順で処理を実行することによって各機能部を実現する演算デバイスと、前記演算デバイスに接続された記憶デバイスと、パケットを送受信する装置と接続されるインターフェースとを備え、前記装置からパケットを受信する受信処理部と、前記受信したパケットの各バイトの値であるスカラ値を、所定のベクトル化アルゴリズムによってベクトル値に変換するベクトル化部と、を備える。【選択図】図４
2019033312.tif 000002
【特許請求の範囲】
【請求項１】
パケットを処理するネットワーク装置であって、
所定の手順で処理を実行することによって以下の各機能部を実現する演算デバイスと、前記演算デバイスに接続された記憶デバイスと、パケットを送受信する装置と接続されるインターフェースとを備え、
前記装置からパケットを受信する受信処理部と、
前記受信したパケットの各バイトの値であるスカラ値を、所定のベクトル化アルゴリズムによってベクトル値に変換するベクトル化部と、を備えることを特徴とするネットワーク装置。
【請求項２】
請求項１に記載のネットワーク装置であって、
前記ベクトル値に変換されたパケットのデータを所定の学習アルゴリズムによって学習し、前記パケットが正常であることを判定するためのパラメータを生成する学習部を備えることを特徴とするネットワーク装置。
【請求項３】
請求項２に記載のネットワーク装置であって、
前記学習部が生成したパラメータを用いて、前記ベクトル値への変換元であるパケットが正常であるか否かを判定する監視部を備えることを特徴とするネットワーク装置。
【請求項４】
請求項１に記載のネットワーク装置であって、
所定のグループ化アルゴリズムによって、前記受信したパケットを分類するグループ化部と、
前記ベクトル値に変換されたパケットのデータを、前記分類されたグループに従って格納する状態管理部とを備えることを特徴とするネットワーク装置。
【請求項５】
請求項４に記載のネットワーク装置であって、
前記グループ化部は、ＳＹＮパケットを目印にしてパケットを分類することを特徴とするネットワーク装置。
【請求項６】
請求項４に記載のネットワーク装置であって、
前記グループ化部は、パケットのタイムスタンプの間隔によってパケットを分類することを特徴とするネットワーク装置。
【請求項７】
請求項４に記載のネットワーク装置であって、
前記グループ化部は、所定のフィールドの値によってパケットを分類することを特徴とするネットワーク装置。
【請求項８】
請求項１に記載のネットワーク装置であって、
前記ベクトル化部は、前記受信したパケットの第１のフィールドの値が所定の条件を満たす場合に、当該条件に対応する所定のルールを適用してスカラ値をベクトル値に変換することを特徴とするネットワーク装置。
【請求項９】
請求項８に記載のネットワーク装置であって、
前記ベクトル化部は、前記第１のフィールドの値が所定の条件を満たす場合に、当該条件に対応する所定のルールを適用して前記第１のフィールドと異なる第２のフィールドのスカラ値をベクトル値に変換することを特徴とするネットワーク装置。
【請求項１０】
請求項９に記載のネットワーク装置であって、
前記第１のフィールドはパケットヘッダに含まれ、前記第２のフィールドはペイロードに含まれることを特徴とするネットワーク装置。
【請求項１１】
請求項１に記載のネットワーク装置であって、
前記ベクトル化部によってベクトル値に変換されたデータを画像として表示するための表示データを生成する画像化部を備えることを特徴とするネットワーク装置。
【請求項１２】
ネットワーク装置がパケットを処理する方法であって、
前記ネットワーク装置は、所定の手順で処理を実行する演算デバイスと、前記演算デバイスに接続された記憶デバイスと、パケットを送受信する装置と接続されるインターフェースとを有し、
前記方法は、
前記演算デバイスが、前記装置からパケットを受信し、
前記演算デバイスが、前記受信したパケットの各バイトの値であるスカラ値を、所定のベクトル化アルゴリズムによってベクトル値に変換することを特徴とする方法。
【請求項１３】
請求項１２に記載の方法であって、
前記ベクトル値に変換されたパケットのデータを所定の学習アルゴリズムによって学習し、前記パケットが正常であることを判定するためのパラメータを生成し、
前記生成されたパラメータを用いて、前記ベクトル値に変換されたパケットが正常であるか否かを判定する監視部を備えることを特徴とする方法。
【請求項１４】
請求項１２に記載の方法であって、
前記ベクトル値に変換されたデータを画像として表示するための表示データを生成することを特徴とする方法。
【請求項１５】
ネットワーク装置がパケットを処理するためのプログラムであって、
前記ネットワーク装置は、所定の手順で処理を実行する演算デバイスと、前記演算デバイスに接続された記憶デバイスと、パケットを送受信する装置と接続されるインターフェースとを有し、
前記プログラムは、
前記装置からパケットを受信する手順と、
前記受信したパケットの各バイトの値であるスカラ値を、所定のベクトル化アルゴリズムによってベクトル値に変換する手順とを、前記演算デバイスに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク装置に関する。
【背景技術】
【０００２】
インフラの制御システムにおいてセキュリティ対策を行うにあたり、制御システムの動作が変わる可能性があることから、ネットワークを構成する装置のプログラム変更が困難である。そのため、制御ネットワーク上のパケットを監視することによるセキュリティ対策が必要となる。
【０００３】
このため、制御ネットワークのパケットを監視することによって、不審な通信や乗っ取りプロセスの発生を検出する技術が従来から取り組まれている。しかしながら、制御システムにおける正しい通信を用いてサイバー攻撃が行われた場合、従来技術では攻撃を検出できない。正しい通信による攻撃を防ぐためには、業務としての通信パターンを識別し、正しい通信における不正な業務を検出することが重要である。
【０００４】
本技術分野の背景技術として、国際公開第２０１６／２０６６０号（特許文献１）がある。特許文献１には、コンピュータシステムに対するサイバー脅威を検出する方法が開示されている。この方法は、処理装置によって実行されるように構成されており、コンピュータシステムに関連する第１エンティティに関連する入力データを受信し、前記受信した入力データの特性を表すメトリックを入力データから導出し、一つ以上のモデルを使用してメトリックを解析し、分析されたメトリックと第１エンティティの正常な動作モデルに従って、サイバー脅威の可能性を示すサイバー脅威リスクパラメータを決定する。また、コンピュータ読取可能媒体、コンピュータプログラム、及び脅威検出システムも開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第２０１６／２０６６０号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１に記載の方法では、ネットワークパケットデータを含む複数の測定基準から正常な挙動のモデルとサイバー驚異のリスクを分析するが、ネットワークパケットのフォーマットによって定められる情報の意味（例えば、どのフィールドに何のデータが書かれているか）が未知である場合に、ネットワークパケットデータから業務に関する情報を抽出して分析できない課題がある。
【課題を解決するための手段】
【０００７】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、パケットを処理するネットワーク装置であって、所定の手順で処理を実行することによって各機能部を実現する演算デバイスと、前記演算デバイスに接続された記憶デバイスと、パケットを送受信する装置と接続されるインターフェースとを備え、前記装置からパケットを受信する受信処理部と、前記受信したパケットの各バイトの値であるスカラ値を、所定のベクトル化アルゴリズムによってベクトル値に変換するベクトル化部と、を備える。
【発明の効果】
【０００８】
本発明の一態様によれば、通信情報を正確に分析でき、業務の情報を抽出できる。前述した以外の課題、構成及び効果は、以下の実施例の説明によって明らかにされる。
【図面の簡単な説明】
【０００９】
【図１】実施例１のネットワークシステムの構成の一例を示す説明図である。
【図２】実施例１の分析装置のハードウェア構成及びプログラム構成の一例を示すブロック図である。
【図３】実施例１の分析装置が受信するミラーパケットのフォーマットの一例を示す図である。
【図４】実施例１の分析装置及び転送装置各機能部の関係を示すブロック図である。
【図５】実施例１の通信状態管理部が保持するデータ構造の一例を示す図である。
【図６】実施例１の通信状態管理部が保持するデータ構造の一例を示す図である。
【図７】実施例１のベクトル化ルールが保持するデータ構造の一例を示す図である。
【図８】実施例１の受信処理部が実行する処理の詳細を示すフローチャートである。
【図９】実施例１のグループ化部が実行する処理の詳細を示すフローチャートである。
【図１０】実施例１のベクトル化部が実行する処理の詳細を示すフローチャートである。
【図１１】実施例１の画像化部が実行する処理の詳細を示すフローチャートである。
【図１２】実施例１の画像化部が出力する画面の例を示す図である。
【図１３】実施例１の機械学習部が実行する処理の詳細を示すフローチャートである。
【図１４】実施例１の監視部が実行する処理の詳細を示すフローチャートである。
【図１５】実施例２のネットワークシステムの構成の一例を示す説明図である。
【図１６】実施例２の学習装置のハードウェア構成及びプログラム構成の一例を示すブロック図である。
【図１７】実施例２の監視装置のハードウェア構成及びプログラム構成の一例を示すブロック図である。
【図１８】実施例２の学習装置、監視装置及び転送装置各機能部の関係を示すブロック図である。
【発明を実施するための形態】
【００１０】
以下、添付図面を参照して本発明の実施例を説明する。各実施例は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。各図において共通の構成には同一の参照符号が付されている。
【００１１】
＜実施例１＞
実施例１では、本発明の基本的な一例について説明する。図１は、実施例１のネットワークシステムの構成の一例を示す図である。
【００１２】
実施例１のネットワークシステムは、一つ以上の分析装置１００、転送装置１０１、ゲートウェイ１０２、コンピュータ１０３、ＳＣＡＤＡ１０４、ＨＭＩ１０５、ＰＬＣ１０６、及びＷＡＮ１０７から構成される制御システムネットワークである。制御システムネットワークを構成する装置は、図示した数に限られず、それぞれ一つ以上含まれていればよい。なお、以下の説明において、同種の装置を纏めて説明する場合には添え字を省略し（例えば、転送装置１０１）、同種の装置を別個に説明する場合には添え字を付す（例えば、転送装置１０１−１）。
【００１３】
分析装置１００、ゲートウェイ１０２、ＰＣ１０３、ＳＣＡＤＡ１０４、ＨＭＩ１０５、ＰＬＣ１０６、及びＷＡＮ１０７は、それぞれ、転送装置１０１を介して相互に接続される。
【００１４】
図１に示す例では、ＷＡＮ１０７及びＰＣ１０３は転送装置１０１−１に接続し、ＧＷ１０２−１は転送装置１０１−１及び転送装置１０１−２に接続し、分析装置１００−１、ＳＣＡＤＡ１０４、及びＨＭＩ１０５は転送装置１０１−２に接続し、ＧＷ１０２−２は転送装置１０１−２及び転送装置１０１−３に接続し、分析装置１００−１、ＰＬＣ１０６−１、及びＰＬＣ１０６−２は転送装置１０１−３に接続する。
【００１５】
転送装置１０１は、例えばスイッチやルータ等の装置であり、接続されている装置から送信されるパケットを他の装置に転送する。また、転送装置１０１は、受信したパケットを複製し、ミラーパケットを生成する機能を有する。転送装置１０１は、生成したミラーパケットを分析装置１００に送信する。ゲートウェイ１０２は、ファイアウォール、スイッチ、ルータ、パケット中継機能を備えたサーバ等であり、接続されている装置から送信されるパケットを他の装置に転送する際に、設定されたルールに基づいてパケットの転送を遮断する機能を有する。ＰＣ１０３は、一般的なオフィス用途のサーバ、ワークステーション、パーソナルコンピュータ等である。
【００１６】
ＳＣＡＤＡ（Ｓｕｐｅｒｖｉｓｏｒｙ  Ｃｏｎｔｒｏｌ  Ａｎｄ  Ｄａｔａ  Ａｃｑｕｉｓｉｔｉｏｎ）１０４は、制御システムにおけるシステム管理やプロセス制御を行うコンピュータである。ＨＭＩ（Ｈｕｍａｎ  Ｍａｃｈｉｎｅ  Ｉｎｔｅｒｆａｃｅ）１０５は、ＳＣＡＤＡの情報を人が閲覧するための機能を提供するコンピュータである。ＰＬＣ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｃｏｎｔｒｏｌｌｅｒ）１０６は、制御システムにおける産業機械等を制御するための機能を有するコンピュータである。ＷＡＮ１０７は、外部のネットワークである。
【００１７】
分析装置１００は、転送装置１０１から受信したミラーパケットを分析し、制御システムにおける業務を抽出する。業務とは、「制御コマンドの送信から当該コマンドによる制御が終了する（例えば、制御結果の返信）までの一連のデータのやりとり」や「特定の機器に対する継続的な死活確認のためのデータのやり取り」のように、制御システムの運用において意味を成す一連のデータのやりとりである。また、分析装置１００は、転送装置１０１から受信したミラーパケットを監視し、業務から外れた通信を検出する。さらに、分析装置１００は、転送装置１０１から受信したミラーパケットから得た情報を可視化するインターフェースを提供する。分析装置１００は、転送装置１０１と別に設けたが、転送装置１０１に内蔵されてもよい。また、１台の分析装置１００が、複数の転送装置１０１に接続されてもよい。実施例２で後述するように、分析装置１００を複数の装置に分けて構成しもてよい。分析装置１００の詳細は図２を用いて後述する。
【００１８】
図２は、実施例１の分析装置１００のハードウェア構成及びプログラム構成の一例を示すブロック図である。
【００１９】
分析装置１００は、ハードウェア構成として、演算装置２００、主記憶装置２０１、二次記憶装置２０２、ＮＩＦ２０３、及び出力装置２０４を有する。演算装置２００、主記憶装置２０１、二次記憶装置２０２、ＮＩＦ２０３、及び出力装置２０４は、システムバス２０６を介して互いに接続される。なお、各構成は、直接接続されてもよいし、複数に分かれたバスを介して接続されてもよい。
【００２０】
演算装置２００は、主記憶装置２０１に格納されるプログラムを実行する、例えば、ＣＰＵ、ＧＰＵ等である。演算装置２００がプログラムを実行することによって分析装置１００が有する機能が実現される。以下では、機能部を主語にして処理を説明する場合、演算装置２００が当該機能部を実現するプログラムを実行していることを示す。
【００２１】
主記憶装置２０１は、演算装置２００が実行するプログラム及び当該プログラムの実行に必要なデータを格納する。主記憶装置２０１は、不揮発性の記憶素子であるＲＯＭ及び揮発性の記憶素子であるＲＡＭを含む。ＲＯＭは、不変のプログラム（例えば、ＢＩＯＳ）などを格納する。ＲＡＭは、ＤＲＡＭ（Dynamic Random Access Memory）のような高速かつ揮発性の記憶素子であり、演算装置２００が実行するプログラム及びプログラムの実行時に使用されるデータを一時的に格納する。また、主記憶装置２０１は、各プログラムが使用するワークエリア及びバッファ等の記憶領域を有する。主記憶装置２０１に格納されるプログラムについては後述する。
【００２２】
二次記憶装置２０２は、例えば、磁気記憶装置（ＨＤＤ）、フラッシュメモリ（ＳＳＤ）等の大容量かつ不揮発性の記憶装置で構成され、演算装置２００が実行するプログラム及びデータを格納する。主記憶装置２０１に格納されるプログラム及びデータは二次記憶装置２０２に格納されてもよい。この場合、演算装置２００が、二次記憶装置２０２からプログラム及びデータを読み出し、主記憶装置２０１上に当該プログラム及びデータをロードする。
【００２３】
ＮＩＦ２０３は、所定のプロトコルに従って、他の装置との通信を制御するインターフェースである。本実施例の分析装置１００は、転送装置１０１に接続するためのＮＩＦ２０３を有する。ＮＩＦ２０３は、転送装置１０１から受信したミラーパケットを、後述する受信処理部２１１に出力する。
【００２４】
出力装置２０４は、分析装置１００の処理結果等を出力するインターフェースである。例えば、処理結果を表示するディスプレイ、タッチパネル等が考えられる。なお、出力装置２０４として、他の装置に処理結果を送信するＮＩＦが実装されてもよい。なお、出力装置２０４は、出力機能として実現してもよく、様々な実装方法でよい。
【００２５】
入力装置２０５は、分析装置１００の制御やパラメータを指定するための入力インターフェースである。例えば、キーボード、マウス、タッチパネルなどの入力デバイスである。なお、入力装置２０５として、他の装置から入力を受信するＮＩＦが実装されてもよい。なお、入力装置２０５は、入力機能として実現してもよく、様々な実装方法でもよい。
【００２６】
次に、主記憶装置２０１に格納されるプログラムの概要を説明する。本実施例の主記憶装置２０１は、受信処理部２１１、通信状態管理部２１２、グループ化部２１３、ベクトル化部２１４、機械学習部２１５、学習結果記憶部２１６、画像化部２１７、監視部２１８を実現するためのプログラムを格納する。なお、主記憶装置２０１には前述した以外のプログラムが格納されてもよい。各プログラムによる処理の詳細は後述する。
【００２７】
受信処理部２１１は、転送装置１０１から受信したミラーパケットのデータをメモリに複製し、ミラーパケットのデータをグループ化部２１３へ渡す。
【００２８】
通信状態管理部２１２は、グループ化部２１３によってグループ化され、ベクトル化部２１４によってベクトル化されたミラーパケットのデータを、グループごとにベクトル値列として保存する。
【００２９】
グループ化部２１３は、ミラーパケットデータを一連の業務によって生成された可能性のあるパケットのグループに分類する。グループ化部２１３は、パケットを一時的に格納するバッファを有する。なお、本実施例の分析装置１００では、グループ化部２１３は、受信処理部２１１が受信したパケットをグループに分類したが、ベクトル化部２１４がベクトル値化した後に、パケットをグループ化してもよい。
【００３０】
ベクトル化部２１４は、グループ化部２１３によってグループ化されたパケットデータをベクトル化する。グループ化部２１３からパケットデータを受け取った時点では、パケットデータは、スカラ値である各バイト値の列で表現されている。パケットのプロトコルヘッダの意味情報や時間情報などの、データ列そのものには含まれない情報を、各バイトのスカラ値に付加して、各バイトのデータをベクトル値化し、パケットデータをベクトル値の配列にする。このベクトル化により、従来パケットデータそのものを分析するだけでは得られなかった情報を抽出することを可能にする。
【００３１】
機械学習部２１５は、グループ化部２１３によってグループ化され、ベクトル化部２１４によってベクトル化されたパケットデータを用いて、機械学習によって業務による通信を学習し、パケットを分類するためのパラメータを算出する。
【００３２】
学習結果記憶部２１６は、機械学習部２１５が学習した、パケットデータを分類するためのパラメータを保持する。学習結果記憶部２１６が保持するパラメータは、監視部２１８が、業務による通信かによってパケットデータを分類するために利用する。
【００３３】
画像化部２１７は、グループ化部２１３によってグループ化され、ベクトル化部２１４によってベクトル化されたミラーパケットのデータから画像データを生成するための機能である。これにより、学習中のデータや監視中のデータを可視化して、パケットの傾向や、セキュリティリスクの発生を知ることが可能になる。
【００３４】
監視部２１８は、学習した正常業務と受信したミラーパケットデータとを比較して、業務によるものでないパケットを、セキュリティリスクとして検出する。
【００３５】
ベクトル化ルール２１９は、二次記憶装置２０２又は主記憶装置２０１に格納されており、ベクトル化部２１４によってスカラ値をベクトル値化するためのルールを保持する。ルールは設計時にハードコーディングされても、入力装置２０５から入力されるものでもよい。
【００３６】
演算装置２００が実行するプログラムは、リムーバブルメディア（ＣＤ−ＲＯＭ、フラッシュメモリなど）又はネットワークを介してコミュニケーションサーバ装置１に提供され、非一時的記憶媒体である不揮発性の二次記憶装置２０２に格納される。このため、分析装置１００は、リムーバブルメディアからデータを読み込むインターフェースを有するとよい。
【００３７】
分析装置１００は、物理的に一つの計算機上で、又は、論理的又は物理的に構成された複数の計算機上で構成される計算機システムであり、同一の計算機上で別個のスレッドで動作してもよく、複数の物理的計算機資源上に構築された仮想計算機上で動作してもよい。
【００３８】
図３は、実施例１の分析装置１００が受信するミラーパケットのフォーマットの一例を示す図である。
【００３９】
パケット３００は、ＭＡＣヘッダ３１０、ＩＰヘッダ３２０、ＴＣＰヘッダ３３０、ＴＣＰオプションヘッダ３４０、及びペイロード３６０を含む。
【００４０】
ＭＡＣヘッダ３１０は、ＤＭＡＣ３１１、ＳＭＡＣ３１２、ＴＰＩＤ３１３、ＴＣＩ３１４、及びＴｙｐｅ３１５を含む。ＤＭＡＣ３１１は、宛先ＭＡＣアドレスを表す。ＳＭＡＣ３１２は、送信元ＭＡＣアドレスを表す。ＴＰＩＤ３１３は、タグ付きフレームであること及びタグの種類を表す。ＴＣＩ３１４は、タグの情報を表す。Ｔｙｐｅ３１５は、ＭＡＣフレームのタイプを表す。
【００４１】
ＴＣＩ３１４は、さらに、ＰＣＰ３１６、ＣＦＩ３１７、及びＶＩＤ３１８を含む。ＰＣＰ３１６は優先度を表す。ＣＦＩ３１７はＭＡＣアドレスが正規フォームであるか否かを表す。ＶＩＤ３１８はＶＬＡＮのＩＤを表す。なお、ＶＬＡＮが使用されていないネットワークの場合、ＴＰＩＤ３１３及びＴＣＩ３１４は存在しない。この場合、分析装置１００はＶＩＤが「０」であるものとして処理を行う。
【００４２】
ＩＰヘッダ３２０は、ＩＰ  ｌｅｎｇｔｈ３２１、ｐｒｏｔｏｃｏｌ３２２、ＳＩＰ３２３、及びＤＩＰ３２４を含む。ＩＰ  ｌｅｎｇｔｈ３２１は、ＭＡＣヘッダ３１０を除くパケット長を表す。ｐｒｏｔｏｃｏｌ３２２は、プロトコル番号を表す。ＳＩＰ３２３は、送信元ＩＰアドレスを表す。ＤＩＰ３２４は、宛先ＩＰアドレスを表す。
【００４３】
ＴＣＰヘッダ３３０は、ｓｒｃ．ｐｏｒｔ３３１、ｄｓｔ．ｐｏｒｔ３３２、ＳＥＱ３３３、ＡＣＫ３３４、ｆｌａｇ３３５、ｔｃｐ  ｈｌｅｎ３３６、及びｗｉｎ＿ｓｉｚｅ３３７を含む。ｓｒｃ．ｐｏｒｔ３３１は、送信元ポート番号を表す。ｄｓｔ．ｐｏｒｔ３３２は、宛先ポート番号を表す。ＳＥＱ３３３は、送信シーケンス番号を表す。ＡＣＫ３３４は、受信シーケンス番号を表す。ｆｌａｇ３３５は、ＴＣＰフラグ番号を表す。ｔｃｐ  ｈｌｅｎ３３６は、ＴＣＰのヘッダ長を表す。ｗｉｎ＿ｓｉｚｅ３３７は、対向装置へ通知する  広告ウィンドウサイズを表す。
【００４４】
ＴＣＰオプションヘッダ３４０は、０又は複数のオプションを含む。例えば、ｏｐｔｉｏｎ  ｋｉｎｄ３４１、ｏｐｔｉｏｎ  ｌｅｎｇｔｈ３４２、及びオプション情報３４３等のオプションが含まれる。ｏｐｔｉｏｎ  ｋｉｎｄ３４１は、オプション種別を表す。ｏｐｔｉｏｎ  ｌｅｎｇｔｈ３４２は、オプション長を表す。オプション情報３４３は、オプションの種類に応じた情報を表す。
【００４５】
例えば、ＭＳＳ（Ｍａｘｉｍｕｍ  Ｓｅｇｍｅｎｔ  Ｓｉｚｅ）オプションは、ＴＣＰ通信を開始するときに自装置が受信可能なＭＳＳサイズを対向装置に通知するために用いられる。ＳＡＣＫ（Ｓｅｌｅｃｔｉｖｅ  ＡＣＫｎｏｗｌｅｄｇｅｍｅｎｔ）オプションは、ＴＣＰ通信を開始するときに、自装置がＳＡＣＫオプションに対応可能であることを対向装置に通知するために用いられる。ＳＡＣＫオプションは、さらに、通信中にパケットの廃棄が検出されたときに部分的に受信できたデータ箇所を対向装置に通知するために用いられる。タイムスタンプオプションは、通信中の自装置の受信時刻を対向装置に通知するために用いられる。ウィンドウスケールオプションは、ｗｉｎ＿ｓｉｚｅ３３７によって通知される値を右シフトするビット数を対向装置に通知して対向装置に通知可能な広告ウィンドウサイズの最大値を大きくするために用いられる。このように、ＴＣＰオプションヘッダ３４０は、通信開始時及び通信中に自装置の対応可能な機能及び情報を対向装置に伝えるために用いられる。
【００４６】
図４は、実施例１の分析装置１００及び転送装置１０１の各機能部の関係を示すブロック図である。転送装置１０１は、三つ以上のＮＩＦ４１１−１、４１１−２、４１１−３を有し、また、ポートミラーリング機能部４１０を含む。
【００４７】
ポートミラーリング機能部４１０は、ＮＩＦ４１１−１から受信したパケットをＮＩＦ４１１−２に転送し、受信したパケットと同一のミラーパケットをＮＩＦ４１１−３から分析装置１００に送信する。また、ポートミラーリング機能部４１０は、ＮＩＦ４１１−２から受信したパケットをＮＩＦ４１１−１に転送し、受信したパケットと同一のミラーパケットをＮＩＦ４１１−３から分析装置１００に送信する。
【００４８】
ＮＩＦ２０３は、転送装置１０１から受信したミラーパケットを受信処理部２１１に出力する。
【００４９】
受信処理部２１１は、ＮＩＦ２０３からの入力を監視しており、パケットが入力されるとグループ化部２１３に出力する。
【００５０】
グループ化部２１３は、受信処理部２１１から受信したパケットデータを、所定のアルゴリズムによって、一連の業務によって生成された可能性があるグループに分類する。分類後、グループ単位でパケットデータをベクトル化部２１４に出力する。所定のアルゴリズムについては後述する。
【００５１】
ベクトル化部２１４は、グループ化部２１３から受信した、グループ化されたパケットデータを、ベクトル化ルール２１９に記載される方法に従って、ベクトル化して、ベクトル値列を生成する。ベクトル化部２１４は、ベクトル化したデータを通信状態管理部２１２及び画像化部２１７へ出力する。
【００５２】
通信状態管理部２１２は、生成されたベクトル値列を、分類されたグループに従って保持する。通信状態管理部２１２が保持したデータ（ベクトル値列）は、機械学習部２１５及び監視部２１８によって参照される。
【００５３】
機械学習部２１５は、通信状態管理部２１２からグループ化されたベクトル値列を受信し、業務による通信を学習し、学習結果を学習結果記憶部２１６に格納する。
【００５４】
学習結果記憶部２１６は、機械学習部２１５によって学習結果として得られたパラメータを保持する。学習結果記憶部２１６が保持するパラメータは、監視部２１８が業務による通信と業務によらない通信とを分類するために使用される。
【００５５】
画像化部２１７は、グループ化部２１３によってグループ化され、ベクトル化部２１４によってベクトル化されたミラーパケットのデータ（ベクトル値列）を画像データに変換する。ベクトル値が３次元ベクトルでない場合、３次元ベクトルに変換して、ＲＧＢデータに変換するとよい。
【００５６】
監視部２１８は、通信状態管理部２１２からグループ化されたベクトル値列を受信し、学習結果記憶部２１６が保持するパラメータを参照して、ベクトル値列が業務によるものか判定する。業務によるものでない場合、当該パケットにはセキュリティリスクがあると判定し、出力装置２０４に異常を出力する。
【００５７】
ベクトル化ルール２１９は、ベクトル化部２１４がバイト値をベクトル化するためのルールを保持する。ルールは、ルールは設計時にハードコーディングされても、入力装置２０５から入力されるものでもよい。
【００５８】
以上に説明した機能ブロックは、前述したように、演算装置２００がプログラムを実行することによって実現されるが、その一部又は全部をハードウェア（例えば、ＦＰＧＡ）で構成してもよい。
【００５９】
図５は、通信状態管理部２１２が保持するデータ構造の一例を示す図である。
【００６０】
通信状態管理部２１２は、グループ化部２１３により分類されたグループに従って、ベクトル化部２１４によってベクトル化されたデータを保持する。図５に記載した例では、四つのテーブル５００−１〜５００−４が、４グループのデータを保持している。各行５０１−１、５０１−２は、ミラーパケットのデータに相当する。各テーブルの列５０２−０、５０２−１、５０２−２…は、元のパケットデータの各バイト値に相当する。図５では、各バイト値が、３次元のベクトル値に変換されて保持されている。なお、図５に記載した例では、ベクトル値列をグループ毎のテーブル形式で保持するが、他の形式でベクトル値列を保持してもよい。
【００６１】
図６は、学習結果記憶部２１６が保持するデータ構造の一例を示す図である。
【００６２】
学習結果記憶部２１６は、機械学習部２１５が学習したパラメータを、業務による通信であるかによってパケットデータを分類するために、保持する。図６に記載した例では、各行６０１−１、６０１−２、… ６０１−ｍは、ベクトル化部２１４によるパケットデータの分類を示し、ｍ種類に分類されている。また、Ｖ１〜Ｖｘ  ６０２−１〜６０２−ｘは、各分類における各ベクトル値の「重心」を示す。図５に示す通信状態管理部２１２に保持されているパケットデータは、パケット長が１５００バイトであるため、図６におけるｘは１５００である。さらに、ｆａｒｔｈｅｓｔ６０３は、各分類における「重心」から最も遠い「距離」を示す。「重心」及び「距離」については後述する。なお、図６に記載した例では、重心及び距離をテーブル形式で保持するが、他の形式で重心及び距離を保持してもよい。
【００６３】
図７は、ベクトル化ルール２１９が保持するデータ構造の一例を示す図である。
【００６４】
ベクトル化ルール２１９は、ベクトル化部２１４がパケットデータの各バイトの値をベクトル値列に変換するためのルールを保持する。
【００６５】
ベクトル化ルール２１９の各行には、パケットデータのバイト値をベクトル値へ変換するためのルールが定義されており、複数のルールが保持可能となっている。ルール＃１  ７０１−１を適用後、ルール＃２  ７０１−２を適用、と順に、定義されているだけのルールが適用される。なお、最先に適用されるルールが適用された時点で、以後のルールを適用しないようにしてもよい。
【００６６】
ベクトル化ルール２１９の各ルールは、フィルタ条件開始位置７０２−１、フィルタ条件終了位置７０２−２、フィルタ条件値７０２−３、適用範囲開始位置７０２−４、適用範囲終了位置７０２−５、及びベクトル化関数７０２−６を含む。
【００６７】
ベクトル化ルール２１９の各ルールは、パケットデータの先頭から、フィルタ条件開始位置７０２−１のバイト数とフィルタ条件終了位置７０２−２のバイト数との間の数値が、フィルタ条件値７０２−３に一致する場合、パケットデータの先頭から、適用範囲開始位置７０２−４のバイト数と適用範囲終了位置７０２−５のバイト数との間の数値にベクトル化関数７０２−６を適用するものとして定義される。
【００６８】
具体的には、ルール＃１  ７０１−１は、フィルタ条件開始位置７０２−１及びフィルタ条件終了位置７０２−２に定義されているバイトの数値がフィルタ条件値７０２−３、である場合、すなわち、１から１０バイト目の値が８０である場合、適用範囲開始位置７０２−４及び適用範囲終了位置７０２−５に定義されている３０から７０バイト目の値に、ベクトル化関数Ｆ（ｘ）を適用するものである。ここでＦ（ｘ）を、元のバイト値ｘを引数とするＦ（ｘ）＝（ｘ，０，ｘ＾２）と定義すると、特定のバイトの数値の変換量を大きくし、当該バイトの数値を強くした次元を持つベクトルを生成できる。これは、例えば、フィルタ条件に特定のプロトコルであることを定義して、その場合に、特定のベクトル成分を強くすることによって、特定のプロトコルであるという情報を埋め込むことができる。
【００６９】
また、ルール＃２  ７０１−２は、フィルタ条件開始位置７０２−１及びフィルタ条件終了位置７０２−２に定義されているバイトの数値がフィルタ条件値７０２−３、である場合、すなわち、４から２０バイト目の値が２２である場合、適用範囲開始位置７０２−４及び適用範囲終了位置７０２−５に定義されている８０から９０バイト目の値に、ベクトル化関数Ｇ（ｘ）を適用するものである。ここでＧ（ｘ）を、Ｇ（ｘ）＝（０，０，０）と定義すると、特定のバイトの数値に意味を持たせない次元を持つベクトルを生成できる。これは、例えば、ある条件では、特定のバイト数の数値が意味を持たないという情報を埋め込むことができる。
【００７０】
このように、ベクトル化部２１４では、ベクトル化ルール２１９に定義されたルールを用いることによって、パケットの各バイトの値からパケットを解析するために有用な意味が付加されたベクトルを生成する。
【００７１】
なお、例示したように、ベクトル化関数は、元のバイト値を含んでも、含まなくてもよい。また、ある位置（フィルタ条件範囲）のバイト値によって、他の位置（フィルタ適用範囲）のバイト値が制御されてもよい。さらに、例示では、パケットの各バイト値に対応して三次元のベクトルを生成したが、他の次元のベクトルを生成してもよい。
【００７２】
また、ベクトル化ルールを、ベクトル化関数で定義したが、関数を用いず、予め定めた対応表なお、他の形式で定義されたルールを用いてスカラ値をベクトル値に変換してもよい。
【００７３】
次に、各部による処理をフローチャートを用いて説明する。図８は、受信処理部２１１が実行する処理の詳細を示すフローチャートである。
【００７４】
受信処理部２１１は、分析装置１００が起動した後、転送装置１０１からミラーパケットの受信を待ち受け（ステップＳ８１０）、受信したミラーパケットデータをグループ化部へ複製する（ステップＳ８２０）。そして、受信処理部２１１は、ステップＳ８１０及びステップＳ８２０の処理を繰り返す。
【００７５】
受信処理部２１１は、分析装置１００の起動時以外に、この処理を開始してもよい。
【００７６】
図９は、グループ化部２１３が実行する処理の詳細を説明するフローチャートである。
【００７７】
グループ化部２１３は、受信処理部２１１からミラーパケットデータを受け取ると（ステップＳ９１０）、受け取ったミラーパケットデータを、所定のアルゴリズムを用いて分類する（ステップＳ９１５）。以下、ステップＳ９１５における所定のアルゴリズムのいくつかの例を説明する。
【００７８】
一つ目の例として、グループ化部２１３は、ｓｒｃ．ｐｏｒｔ３３１、ｄｓｔ．ｐｏｒｔ３３２のうち小さいほうのポート番号であるｓｅｒｖｉｃｅ．ｐｏｒｔ及び、ｐｒｏｔｏｃｏｌ３２２、ＳＩＰ３２３、ＤＩＰ３２４の四つの値が同一性かによって、受信したミラーパケットデータを分類してもよい。この例では、同一端末間の同一アプリケーションによる通信であるパケットを分類できる。
【００７９】
二つ目の例としてパケット長及びｐｒｏｔｏｃｏｌ３２２の二つの値が同一かによって、受信したミラーパケットデータを分類してもよい。この例では、同一の命令を含んだパケットを分類できる。
【００８０】
次に、グループ化部２１３は、分類されたミラーパケットデータがグループの先頭パケットであるかを、所定のアルゴリズムを用いて判定する（ステップＳ９１１）。以下、ステップＳ９１１における所定のアルゴリズムのいくつかの例を説明する。
【００８１】
一つ目の例として、所定のデルタ時間を空けて同一の分類がされたパケットを受信した場合に、当該パケットをグループ先頭パケットであると判定する。この例では、一連の業務による継続した通信が行われている場合に、一連の業務のパケットをグループ化できる。
【００８２】
二つ目の例として、ｆｌａｇ３３５にＳＹＮフラグが設定されている場合に、受信したパケットをグループ先頭パケットであると判定する。この例では、一連の業務ごとに通信が切断されるプロトコルにおいて、一連の業務のパケットをグループ化できる。
【００８３】
三つ目の例として、ペイロード３５０の特定のフィールドの値をグループ化の指標（いわゆる番兵値）として、番兵値が特定の値である場合に、受信したパケットをグループ先頭パケットであると判定する。この例は、ペイロードの定義や意味情報の一部が分かっている場合に効果的である。
【００８４】
その結果、受信したパケットがグループ先頭パケットでない場合、グループ化部２１３は、受信パケットをバッファに格納する（ステップＳ９１４）。
【００８５】
一方、受信したパケットがグループ先頭パケットである場合、グループ化部２１３は、バッファが空であるかを判定する（ステップＳ９１２）。その結果、バッファが空である場合、グループ化部２１３は、受信パケットをバッファに格納する（ステップＳ９１４）。
【００８６】
一方、バッファが空でない場合、グループ化部２１３は、バッファに格納されているパケットをベクトル化部２１４へ複製し、バッファをクリアする（ステップＳ９１３）。さらに、グループ化部２１３は、受信パケットをバッファに格納する（ステップＳ９１４）。
【００８７】
受信パケットをバッファに格納した後、この処理を終了して、次のパケットの受信を待ち受ける。
【００８８】
図１０は、ベクトル化部２１４が実行する処理の詳細を示すフローチャートである。
【００８９】
ベクトル化部２１４は、グループ化部２１３からデータを受け取ると（ステップＳ１０１０）、ベクトル化ルール２１９に記載されたルールに従って、データをベクトル化する（ステップＳ１０２０）。そして、ベクトル化部２１４は、ベクトル化したデータを通信状態管理部２１２へ送り、処理を終了する（ステップＳ１０３０）。
【００９０】
図１１は、画像化部２１７が実行する処理の詳細を示すフローチャートである。
【００９１】
画像化部２１７は、ベクトル化部２１４からデータを受け取ると（ステップＳ１１１０）、受け取ったデータが３次元ベクトル列か否かを判定する（ステップＳ１１２０）。
【００９２】
画像化部２１７は、ステップＳ１１２０で３次元ベクトル列であると判定した場合、ステップＳ１１３０に進む。一方、画像化部２１７は、３次元ベクトル列でないと判定した場合、所定のアルゴリズムによって各ベクトル値を３次元ベクトルに変換し（ステップＳ１１４０）、ステップ１１３０へ進む。
【００９３】
所定のアルゴリズムは、例えば、ｎ次元ベクトルでｎ＞３の場合、ｎを３で除した剰余（ｎ  ｍｏｄ  ３）で各次元を分類して、分類された次元の値を加算することによって、ｎ次元ベクトルを３次元ベクトルに変換する。例えば、５次元ベクトル（１１，２２，３３，４４，５５）は、３次元ベクトル（５５，７７，３３）に変換される。
【００９４】
一方、画像化部２１７は、ステップＳ１１２０で３次元ベクトル列であると判定した場合、３次元ベクトルの各次元の値が画像のＲＧＢ値を示すものとして、ＢＭＰ形式の画像データに変換する（ステップＳ１１３０）。ＲＧＢの代わりに、他の色空間を用いてもよい。ＢＭＰ形式の代わりに、ＧＩＦやＰＮＧといった他の形式の画像データに変換してもよい。
【００９５】
画像化部２１７は、画像データを出力装置２０４に出力し（ステップＳ１１５０）、処理を終える。
【００９６】
図１２は、画像化部２１７が出力する画面の例を示す図である。
【００９７】
図１２に示す画面では、一つのグループに分類されたベクトル値が、パケットの先頭からのバイト数を横軸にして、パケットの各バイトを色の濃さで表示し、１行（縦１ドット）につき１パケットの情報が表示される。すなわち、縦軸はパケットを表す。なお、１バイトの情報を所定数のドット（例えば、４ドット）で表示してもよく、所定バイトの情報を１ドットで表示してもよい。
【００９８】
図１２に示す画面では、長さが揃ったパケットが分類されているが、長さが異なるパケットが分類されている場合は、０でパディングしてパケット長を揃えるとよい。
【００９９】
このように、パケットを表示することによって、縦方向の色の変化によって、該当部分はパケットごとに値が同じか異なるかが分かる。
【０１００】
図１３は、機械学習部２１５が実行する処理の詳細を示すフローチャートである。
【０１０１】
機械学習部２１５は、通信状態管理部２１２からデータを受け取ると（ステップＳ１２１０）、機械学習により、ベクトルデータを分類する（ステップＳ１２２０）。
【０１０２】
機械学習の一例として、以下に説明する方法を採用できる。通信状態管理部２１２に保持されているグループ化されたベクトル値列ごとの距離を求める。距離は、ベクトル値列の先頭から順にユークリッド距離を求めることによってスカラ値列を作り、スカラ値列がｎ個の場合、各スカラ値の二乗の和のｎ乗根を求めることによって算出する。各グループ化されたベクトル値ごとの距離が求まった後、階層クラスタ分析として一般に知られる方法によって、各ベクトル値を複数個のクラスタに分割する。生成されるクラスタの数ｍは、機械学習の開始時に入力装置２０５から入力しても、設計時にハードコーディングしても、機械学習の過程で自動的に生成してもよい。生成されたｍ個のクラスタが、業務として分類された通信となるため、ｍの値は、分析装置１００が対象とするシステムにおいて、システムの操作者が業務の種類として把握している数に近く設定するとよい。
【０１０３】
クラスタへの分割後、各クラスタの重心を求める。重心は、各クラスタに含まれるベクトル値列の全てのベクトル値の幾何学的な重心を求めることによって、ベクトル値として求める。
【０１０４】
また、各クラスタの各ベクトル値と重心との距離を求め、各クラスタにおける最も遠い距離を求める。
【０１０５】
機械学習部２１５は、学習結果として、各クラスタの重心と、各クラスタにおけるもっとも遠い距離とを、学習結果記憶部２１６に保存し、処理を終了する（ステップＳ１２３０）。
【０１０６】
なお、階層クラスタ分析による機械学習の一例を説明したが、新たに受信したパケットと従来のパケットとで傾向が異なるかを判定可能な学習ができれば、他の機械学習の方法でもよい。
【０１０７】
図１４は、監視部２１８が実行する処理の詳細を示すフローチャートである。
【０１０８】
監視部２１８は、通信状態管理部２１２からデータを受け取ると（ステップＳ１３１０）、学習結果記憶部２１６に格納された情報を用いて、ベクトル化されたデータを分類する（ステップＳ１３２０）。学習結果記憶部２１６に格納されたｍ個の重心と、ベクトル化されたデータとの距離を求め、もっとも近いクラスタに分類する。
【０１０９】
監視部２１８は、学習結果記憶部２１６に格納された情報を用いてベクトル化されたデータの分類結果が学習時の分類と一致するかを判定する（ステップＳ１３３０）。分類されたクラスタの重心との距離が、最も遠い距離であるｆａｒｔｈｅｓｔ６０３より遠い場合、監視部２１８が受け取ったデータは当該クラスタに分類すべきものではなく、学習時の分類と一致しないと判定する。
【０１１０】
監視部２１８は、ステップＳ１３３０にて、一致すると判定した場合、処理を終了する。一方、監視部２１８は、一致しないと判定した場合、監視部２１８が受け取ったデータはいずれのクラスタにも分類されないので、正常業務でない通信が発生したと判定し、異常を検知した旨を出力装置２０４へ出力し、処理を終了する（ステップＳ１３４０）。出力装置２０４へ以上を出力する形態として、異常発生を報知する画面を表示するためのデータを出力したり、警報音を発生したり、ＨＭＩ１０５へ通知を出力して、回転警告灯を動作させたりする。
【０１１１】
実施例１の分析装置１００は、ポートミラーリング機能部４１０を有する転送装置１０１から送信されるミラーパケットを用いて処理を実行したが、ネットワークタップがネットワーク信号を分岐して取り出し、取り出したパケットを用いて同様の処理を実行してもよい。
【０１１２】
実施例１では、通信プロトコルとしてＴＣＰを例に説明したが、本実施例はＴＣＰ以外のプロトコルにも適用可能である。例えば、ＵＤＰ等のように、データが一定の長さを上限としてパケットに区切られて送受信される通信プロトコルであれば、本発明を適用できる。
【０１１３】
また、長さが異なるパケットを一つのクラスタに分類する場合、後のデータを０でパディングしてパケット長を揃えるとよい。
【０１１４】
実施例１によれば、通信プロトコル中のペイロードデータの意味情報が未知の場合においても、通信を分析して業務の情報を抽出し、サイバー攻撃などのセキュリティリスクを検知できる。特に、ネットワーク内へのセキュリティソフトのインストールによって、ノードにおいて遅延を生じさせたくない場合でもセキュリティリスクを検知できる。また、セキュリティソフトをインストールした場合には動作検証が必要であるところ、動作検証を必要とせずに、正常業務でない通信を検知できる。
【０１１５】
なお、本発明は、通信プロトコル中のフォーマット（例えば、ペイロードデータの意味情報）が既知の場合にも、適用可能である。その場合、セキュリティリスクの検知のために、通信プロトコル中のペイロードデータの意味情報を解釈するためのプログラム設計の工数を削減できる。
【０１１６】
＜実施例２＞
実施例１では、正常な業務による通信の学習と、通信が正常な業務に含まれるか否かの監視とを同一の分析装置１００に実装する。実施例２では、学習と監視を異なる装置に実装する例を示す。
【０１１７】
以下、実施例１との差異を中心に、実施例２について説明する。なお、実施例１と同一の構成、同一の処理には同一の符号を付し、それらの説明を省略する。
【０１１８】
図１５は、実施例２のネットワークシステムの構成の一例を示す図である。
【０１１９】
実施例２のネットワークシステムは、一つ以上の分析装置１００、学習装置１４１０、監視装置１４２０、ゲートウェイ１０２、コンピュータ１０３、ＳＣＡＤＡ１０４、ＨＭＩ１０５、ＰＬＣ１０６、及びＷＡＮ１０７から構成される制御システムネットワークである。制御システムネットワークを構成する装置は、図示した数に限られず、それぞれ一つ以上含まれていればよい。なお、以下の説明において、同種の装置を纏めて説明する場合には添え字を省略し（例えば、学習装置１４１０）、同種の装置を別個に説明する場合には添え字を付す（例えば、学習装置１４１０−１）。
【０１２０】
学習装置１４１０、監視装置１４２０、ゲートウェイ１０２、ＰＣ１０３、ＳＣＡＤＡ１０４、ＨＭＩ１０５、ＰＬＣ１０６、及びＷＡＮ１０７は、それぞれ、転送装置１０１を介して相互に接続される。
【０１２１】
図１５に示す例では、実施例１における分析装置１００−１の代わりに、学習装置１４１０−１及び監視装置１４２０−１が転送装置１０１−２に接続される。また、実施例１における分析装置１００−２の代わりに、学習装置１４１０−２及び監視装置１４２０−２が転送装置１０１−３に接続される。
【０１２２】
学習装置１４１０は、転送装置１０１から受信したミラーパケットを分析し、制御システムにおける業務を抽出する。監視装置１４２０は、転送装置１０１から受信したミラーパケットを監視し、業務から外れた通信を検出する。さらに、学習装置１４１０及び監視装置１４２０は、転送装置１０１から受信したミラーパケットから得た情報を可視化するインターフェースを提供する。学習装置１４１０の詳細は図１６を用いて後述し、監視装置１４２０の詳細は図１７を用いて後述する。
【０１２３】
図１６は、実施例２の学習装置１４１０のハードウェア構成及びプログラム構成の一例を示すブロック図である。
【０１２４】
学習装置１４１０のハードウェア構成は、実施例１の分析装置１００と同一であるため説明を省略する。
【０１２５】
学習装置１４１０の主記憶装置２０１は、受信処理部２１１、通信状態管理部２１２、グループ化部２１３、ベクトル化部２１４、機械学習部１７１０、画像化部２１７を実現するプログラムを格納する。受信処理部２１１、通信状態管理部２１２、グループ化部２１３、ベクトル化部２１４、及び画像化部２１７は、実施例１と同一であるため、説明を省略する。
【０１２６】
ベクトル化ルール２１９は、二次記憶装置２０２又は主記憶装置２０１に格納されており、ベクトル化部２１４によってスカラ値をベクトル値化するためのルールを保持する。ベクトル化ルール２１９は、実施例１と同一であるため、説明を省略する。
【０１２７】
学習装置１４１０の機械学習部１７１０は、グループ化部２１３によってグループ化され、ベクトル化部２１４によってベクトル化されたパケットデータを用いて、機械学習によって業務による通信を学習し、パケットを分類するためのパラメータを算出し、算出したパラメータを、出力装置２０４に出力する。なお、学習装置１４１０が、学習結果記憶部２１６を有してもよい。つまり、学習結果記憶部２１６は、学習装置１４１０か監視装置１４２０のいずれかが有すればよい。
【０１２８】
図１７は、実施例２の監視装置１４２０のハードウェア構成及びプログラム構成の一例を示すブロック図である。
【０１２９】
監視装置１４２０のハードウェア構成は、実施例１の分析装置１００と同一であるため説明を省略する。
【０１３０】
監視装置１４２０の主記憶装置２０１は、受信処理部２１１、通信状態管理部２１２、グループ化部２１３、ベクトル化部２１４、学習結果記憶部１７２０、画像化部２１７、監視部２１８を実現するプログラムを格納する。受信処理部２１１、通信状態管理部２１２、グループ化部２１３、ベクトル化部２１４、学習結果記憶部２１６、画像化部２１７、及び監視部２１８は、実施例１と同一であるため、説明を省略する。
【０１３１】
ベクトル化ルール２１９は、二次記憶装置２０２又は主記憶装置２０１に格納されており、ベクトル化部２１４によってスカラ値をベクトル値化するためのルールを保持する。ベクトル化ルール２１９は、実施例１と同一であるため、説明を省略する。
【０１３２】
つまり、学習装置１４１０は、実施例１の分析装置１００から機械学習部２１５を取り除いたものである。
【０１３３】
図１８は、実施例２の学習装置１４１０、監視装置１４２０及び転送装置１０１の各機能部の関係を示すブロック図である。
【０１３４】
実施例２では、処理が重い機械学習部１７１０と、リアルタイムの処理が求められる監視部２１８とを、別の装置に実装することによって、システム全体の処理能力を高め、大量の通信に対するセキュリティリスクの検知を実現可能としている。
【０１３５】
なお、学習装置１４１０と監視装置１４２０とで、受信処理部２１１、通信状態管理部２１２、グループ化部２１３、ベクトル化部２１４、画像化部２１７及びベクトル化ルール２１９の一部又は全部を共通化し、いずれか一方に実装してもよい。
【０１３６】
＜実施例３＞
実施例１では、正常な業務による通信の学習と、通信が正常な業務に含まれるか否かの監視とを同一の分析装置１００に実装する。実施例３では、学習機能も監視機能も有さず、ベクトル値化したパケットのデータを画像で表示する装置の例を示す。
【０１３７】
以下、実施例１との差異を中心に、実施例３について説明する。なお、実施例１と同一の構成、同一の処理には同一の符号を付し、それらの説明を省略する。
【０１３８】
実施例３の分析装置１００は、ハードウェア構成として、演算装置２００、主記憶装置２０１、二次記憶装置２０２、ＮＩＦ２０３、及び出力装置２０４を有する。演算装置２００、主記憶装置２０１、二次記憶装置２０２、ＮＩＦ２０３、及び出力装置２０４は、システムバス２０６を介して互いに接続される。なお、各構成は、直接接続されてもよいし、複数に分かれたバスを介して接続されてもよい。
【０１３９】
実施例３の主記憶装置２０１は、受信処理部２１１、通信状態管理部２１２、グループ化部２１３、ベクトル化部２１４、画像化部２１７を実現するためのプログラムを格納する。なお、主記憶装置２０１には前述した以外のプログラムが格納されてもよい。各プログラムによる処理の詳細は前述した実施例１と同じである。
【０１４０】
ベクトル化ルール２１９は、二次記憶装置２０２又は主記憶装置２０１に格納されており、ベクトル化部２１４によってスカラ値をベクトル値化するためのルールを保持する。ベクトル化ルール２１９は、実施例１と同一であるため、説明を省略する。
【０１４１】
以上に説明したように、本発明の実施例では、ベクトル化部２１４が、受信したパケットの各バイトの値であるスカラ値を、所定のベクトル化アルゴリズムによってベクトル値に変換するので、ネットワークパケットの各フィールドのデータが示す意味が未知であっても、通信情報を正確に分析でき、業務の情報を抽出できる。
【０１４２】
また、機械学習部２１５が、ベクトル値化されたパケットのデータを所定の学習アルゴリズムによって学習し、前記パケットが正常であることを判定するためのパラメータを生成し、監視部２１８が、機械学習部２１５が生成したパラメータを用いて、ベクトル値に変換されたパケットが正常であるか否かを判定するので、正常ではない業務のパケットを検出でき、セキュリティリスクを検出できる。
【０１４３】
また、グループ化部２１３が、所定のグループ化アルゴリズムによって、前記受信したパケットを分類するので、ネットワークパケットの各フィールドのデータが示す意味が未知である場合でも、業務の種類に従ってパケットを分類できる。また、様々な振る舞いのパケットを分類して、パケットの傾向が見やすく、異常が検出しやすくパケットを分類できる。
【０１４４】
また、グループ化部２１３が、ＳＹＮパケットを目印にしてパケットを分類するので、ＴＣＰプロトコルにおいて、ＳＹＮパケットは新たなセッションを確立するために用いられるものであるところ、業務単位毎にセッションを張り直す業務において、一連の業務に容易に分類できる。
【０１４５】
また、グループ化部２１３が、パケットのタイムスタンプの間隔によってパケットを分類するので、同種のパケット転送される時間の差が大きければ、業務の切れ目であると判断でき、該時間差によって一連の業務を的確に分類できる。
【０１４６】
また、グループ化部２１３は、所定のフィールドの値によってパケットを分類するので、特定の業務において特定のフィールドの値が分かっている場合に、的確に業務を分類できる。
【０１４７】
また、ベクトル化部２１４が、受信したパケットの第１のフィールドの値が所定の条件を満たす場合に、当該条件に対応する所定のルール（例えば、ベクトル化関数）を適用してスカラ値をベクトル値に変換するので、特定のフィールドの値によって、複数のベクトル化関数を切り替えて適用でき、パケットを的確に分類できる。
【０１４８】
また、ベクトル化部２１４が、第１のフィールド（例えば、ヘッダのフィールド）の値が所定の条件を満たす場合に、当該条件に対応する所定のルールを適用して第１のフィールドと異なる第２のフィールド（例えば、ペイロードのフィールド）のスカラ値をベクトル値に変換するので、あるフィールドの値が、別なフィールドの意味を示す場合に適切な情報を付加できる。例えば、ヘッダのフィールドには、ペイロードの位置や意味を定義しているものがあることから、ヘッダの情報を使用してペイロードに関する情報を付加できる。
【０１４９】
また、画像化部２１７が、ベクトル値に変換されたデータを画像として表示するための表示データを生成するので、ネットワークシステム内を転送されるパケットの傾向を人が見て分かりやすく、異常が検出しやすく表示できる。また、セキュリティリスクの検出が容易になる。
【０１５０】
なお、本発明は前述した実施例に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例及び同等の構成が含まれる。例えば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。また、ある実施例の構成の一部を他の実施例の構成に置き換えてもよい。また、ある実施例の構成に他の実施例の構成を加えてもよい。また、各実施例の構成の一部について、他の構成の追加・削除・置換をしてもよい。
【０１５１】
また、前述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。
【０１５２】
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶装置、又は、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に格納することができる。
【０１５３】
また、制御線や情報線は説明上必要と考えられるものを示しており、実装上必要な全ての制御線や情報線を示しているとは限らない。実際には、ほとんど全ての構成が相互に接続されていると考えてよい。
【符号の説明】
【０１５４】
１００  分析装置
１０１  転送装置
２０３  ＮＩＦ
２０４  出力装置
２０５  入力装置
２１１  受信処理部
２１２  通信状態管理部
２１３  グループ化部
２１４  ベクトル化部
２１５  機械学習部
２１６  学習結果記憶部
２１７  画像化部
２１８  監視部
２１９  ベクトル化ルール
４１０  ポートミラーリング機能部
１４１０  学習装置
１４２０  監視装置
【図１】
2019033312.tif 000003
【図２】
2019033312.tif 000004
【図３】
2019033312.tif 000005
【図４】
2019033312.tif 000006
【図５】
2019033312.tif 000007
【図６】
2019033312.tif 000008
【図７】
2019033312.tif 000009
【図８】
2019033312.tif 000010
【図９】
2019033312.tif 000011
【図１０】
2019033312.tif 000012
【図１１】
2019033312.tif 000013
【図１２】
2019033312.tif 000014
【図１３】
2019033312.tif 000015
【図１４】
2019033312.tif 000016
【図１５】
2019033312.tif 000017
【図１６】
2019033312.tif 000018
【図１７】
2019033312.tif 000019
【図１８】
2019033312.tif 000020