本開示における技術的な検討事項等について詳細に説明する。以下、サイバー攻撃、不正アクセス等を含む、セキュリティ上問題となり得る各種事象(インシデント)を、「セキュリティ事象」(「セキュリティインシデント」)と記載することがある。また、本開示において、セキュリティ情報は特に限定されず、あるセキュリティ事象に関する幅広い情報が含まれ得る。セキュリティ情報の具体例については後述する。
以下、サイバー攻撃等のセキュリティ事象が発生した場合の、セキュリティ担当者の典型的な対応について例示する。
サイバー攻撃等のセキュリティ事象が発生した場合、セキュリティ担当者は、そのセキュリティ事象に関連して早期に得られる情報(例えば、マルウェアの名称、マルウェア本体、マルウェアが実行する通信に関する情報等)からキーワード(検索語)を選択する。
セキュリティ担当者は、選択したキーワードを用いて、セキュリティに関する情報を提供する提供元(以下、情報源と記載する)から、そのキーワードに関する情報を取得する。このような情報源は、典型的には、例えば、通信ネットワークを介して脆弱性情報、サイバー攻撃情報等を収集、提供する情報サイトや、オンラインデータベース等であってよい。セキュリティ担当者は、例えば、情報源において、あるキーワードに関する情報を検索し、その検索結果を新たな情報として取得する。
セキュリティ担当者は、取得した断片的な情報から更なるキーワードを選択し、そのキーワードを用いて更に情報を取得する。セキュリティ担当者は、サイバー攻撃に対するセキュリティ対策についての十分な情報が得られるまで、上記のような処理を繰り返す。セキュリティ担当者は、収集した情報から、知識や経験に基づいて有用な情報を抽出(選択)し、更なる攻撃を防ぐようにセキュリティ対策を実施する。
サイバー攻撃の増大に伴い、セキュリティ情報の収集及び分析に要するセキュリティ担当者の工数が増大するとともに、収集される情報も増加している。また、情報収集及び分析作業を人手により実行する場合、それらの作業を実行するセキュリティ担当者の知識や経験等が、評価結果の精度や作業量に影響する。
このため、セキュリティ担当者の知識や経験等に依存することなく、セキュリティ対策に有用な情報を収集可能な技術を提供することが、本開示における技術的な検討事項の一つである。
本開示に係る技術のある実施形態は、あるセキュリティ事象に関する有用なセキュリティ情報の収集に用いられる分析モデルを作成することができる。分析モデルを用いることにより、例えば、あるセキュリティ事象に関するセキュリティ情報が与えられた際に、他の有用なセキュリティ情報を情報源から取得する処理(以下、情報収集処理と記載する)を適宜選択することができる。
セキュリティ担当者が収集するセキュリティ情報には、ある種の静的な特徴(例えばパターン)を持つデータ(例えば、IPアドレス、ホスト名、マルウェアバイナリのハッシュ値等)が含まれる場合がある。これより、本開示に係る技術のある実施形態において、分析モデルは、セキュリティ情報に含まれるデータの静的な特徴を学習するよう構成される。
また、セキュリティ担当者は、情報収集の段階に応じて、収集する情報を適宜変更することがある。具体例として、同じ種類のセキュリティ情報(例えばIPアドレス)に基づいて、他のセキュリティ情報を収集する場合を想定する。セキュリティ事象が発生してから間もない初期の段階では、典型的には、セキュリティ担当者は、例えば、あるセキュリティ情報について容易に収集可能な情報(例えばIPアドレスに対するホスト名等)を収集することがある。これに対して、セキュリティ事象に関する分析がある程度実行された段階では、セキュリティ担当者は、同じ種類のセキュリティ情報に関して、例えば、取得が容易ではない情報、又は、取得にコストが要する情報、等を収集することがある。
これより、本開示に係る技術のある実施形態において、分析モデルは、あるセキュリティ事象に関するセキュリティ情報の取得過程(例えば、情報提供元の選択及び情報収集の順序等)を学習するよう構成される。
以下の各実施形態を用いて説明する本開示に係る技術を用いることで、情報収集に要する工数が低減され得る。その理由は、分析モデルを用いることで、あるセキュリティ事象に関するセキュリティ情報が与えられた際に、そのセキュリティ事象に関する他の有用なセキュリティ情報を取得する情報収集処理を、適切に選択できるからである。また、これにより、あるセキュリティ事象の対策について、セキュリティ担当者の観点から有用な情報が提供され得る。その理由は、分析モデルが、セキュリティ担当者等によって予め有用性が判断された訓練データを用いて学習されるからである。
以下、各実施形態を用いて、本開示に係る技術について詳細に説明する。以下の各実施形態(及びその変形例)の構成は例示であり、本開示に係る技術の技術範囲はそれらには限定されない。即ち、以下の各実施形態を構成する構成要素の区分け(例えば、機能的な単位による分割)は、各実施形態を実現可能な一例である。各実施形態を実現する構成は、以下の例示に限定されず、様々な構成が想定される。以下の各実施形態を構成する構成要素は、更に分割されてもよい。また、以下の各実施形態を構成する1以上の構成要素が統合されてもよい。また、各実施形態が1以上の物理的装置、仮想的装置、及びその組合せを用いて実現される場合、1以上の構成要素が1以上の装置により実現されてもよく、1つの構成要素が複数の装置を用いて実現されてもよい。
<第1実施形態>
[構成]
以下、本開示に係る技術を実現可能な第1の実施形態について説明する。以下において説明するシステムの構成要素は、単体の装置(物理的又は仮想的な装置)を用いて構成されてもよく、複数の離間した装置(物理的又は仮想的な装置)を用いて実現されてもよい。システムの構成要素が複数の装置により構成される場合、各装置の間は有線、無線、又はそれらを適切に組み合わせた通信ネットワークにより通信可能に接続されてもよい。以下において説明するシステム及びその構成要素を実現可能なハードウェア構成については、後述する。
図1は、本実施形態におけるセキュリティ情報分析装置100の機能的な構成を例示するブロック図である。図2は、本実施形態におけるセキュリティ情報評価装置200の機能的な構成を例示するブロック図である。図3は、本実施形態におけるセキュリティ情報分析システムの機能的な構成を例示するブロック図である。図4は、本実施形態におけるセキュリティ情報分析システムの他の機能的な構成を例示するブロック図である。
図1乃至図4において、同様の機能を実現可能な構成要素には、同じ参照符号が付されている。以下、各構成要素について説明する。
図1に例示するように、本実施形態におけるセキュリティ情報分析装置100は、情報収集部101、学習部102、分析モデル記憶部103及び訓練データ供給部104を備える。セキュリティ情報分析装置100を構成するこれらの構成要素の間は、適切な通信方法を用いて通信可能に接続されていてよい。また、セキュリティ情報分析装置100は、各種セキュリティ情報を提供する情報提供元である1以上の情報源105と、適切な通信方法を用いて通信可能に接続されている。
情報源105は、あるセキュリティ情報に関連する他のセキュリティ情報を提供可能な、セキュリティ情報の提供元である。情報源105は、特に制限されることなく、セキュリティに関する情報を提供可能なサービス、サイト、データベース等が幅広く含まれてよい。
一つの具体例として、情報源105は、セキュリティに関する情報(脆弱性、サイバー攻撃等)をデータベース等により保有する外部サイトであってもよい。例えば、そのような外部サイトにおいて、あるセキュリティ情報(例えば、IPアドレスやホスト名等)を検索することで、他のセキュリティ情報(例えば、そのIPに関する通信を実行するマルウェアの情報等)が得られる。上記に限定されず、情報源105は、例えば、Whoisサービスであってもよく、DNS(Domain Name System)サービスであってもよい。情報源105は、外部のサイトやサービスに限定されず、ローカルにセキュリティ情報を蓄積したデータベースであってもよい。
情報収集部101は、情報源105から、あるセキュリティ情報に関連する他のセキュリティ情報を取得する。情報収集部101は、例えば、1以上の情報源105ごとに個別に設けられてもよい。以下、情報収集部101を、クローラ(Crawler)と記載する場合がある。クローラ101は、例えば、ある情報源105において、学習部102(後述)から提供されたセキュリティ情報を検索し、その検索結果を他のセキュリティ情報として学習部102に提供してもよい。
クローラ101は、情報源105ごとに適切な方法を用いて、情報収集処理を実行するよう構成される。一つの具体例として、クローラ101は、情報源105に対して、検索用のリクエスト(例えばクエリ等)を送信し、そのリクエストに対するレスポンスを受信してもよい。他の具体例として、クローラ101は、情報源105が提供するコンテンツ(テキストデータ等)を取得し、取得したコンテンツの中から適切なセキュリティ情報を検索してもよい。本実施形態においては、情報収集処理の終了(打ち切り)を表す特殊なクローラ101(以下、終了処理クローラと記載する)が用意されてもよい。
学習部102は、セキュリティ情報の分析に使用可能な分析モデルを生成する。具体的には、学習部102は、訓練データ供給部104(後述)から提供された訓練データを用いて学習処理を実行することで、分析モデルを生成する。
分析モデルは、あるセキュリティ事象に関するセキュリティ情報を入力として受けつけ、クローラ101それぞれについて「重み」を算出可能なモデルである。分析モデルが算出する重み(各クローラ101の重み)は、あるクローラ101による情報取得処理の有用性(適切性)を表す情報である。本実施形態において、各クローラ101による情報取得処理の有用性は、例えば、各クローラ101が取得可能なセキュリティ情報の有用性を表す。また、セキュリティ情報の有用性は、例えば、あるセキュリティ事象に関する分析、対策に用いられる情報としての有用性を表す。セキュリティ情報の有用性は、セキュリティ担当者や他のシステム等により判断されてもよい。本実施形態においては、有用性が予め判断されたセキュリティ情報を含む訓練データが、分析モデルの学習(後述)に用いられる。
分析モデルは、各クローラ101が取得可能なセキュリティ情報の有用性を反映した重みを算出する。より具体的には、分析モデルは、例えば、入力として与えられたセキュリティ情報を用いて、有用性が高い他のセキュリティ情報を取得可能なクローラ101について、比較的大きな重みを算出するように構成される。即ち、あるセキュリティ情報を分析モデルに入力した際に算出される重みが大きいクローラ101を選択することで、他の有用なセキュリティ情報を取得可能となることが期待される。このような観点から、分析モデルが出力する重みは、あるセキュリティ情報について、適切なクローラ101を選択することが可能な情報(選択情報)であると考えることもできる。
分析モデルは、個別のクローラ101に関する重みに限らず、複数のクローラ101による組合せ(クローラセットと記載する場合がある)に関する重みを提供するよう構成されてもよい。即ち、分析モデルは、クローラセットを、例えば、仮想的な一つのクローラとして扱うことができる。この場合、あるセキュリティ情報についての情報収集処理を、クローラセットに含まれる各クローラ101がそれぞれ実行し、その結果を統合することで、クローラセットによる情報収集処理の結果が得られる。クローラセットによる情報収集処理の結果は、クローラセットに含まれる各クローラ101が取得したセキュリティ情報を含む集合である。係る集合は、特に限定されず、和集合であってもよく、積集合であってもよく、排他的論理和の集合であってもよい。以下、説明の都合上、クローラ101及びクローラセットをまとめて、単にクローラ101と記載する場合がある。分析モデルの具体的な構成及び学習方法については後述する。
分析モデル記憶部103は、学習部102により生成された分析モデルを記憶する。分析モデル記憶部103が分析モデルを記憶する方法は、特に限定されず、適切な方法を採用可能である。分析モデル記憶部103は、例えば、メモリ領域に分析モデルを配置してもよく、ファイルやデータベース等に分析モデルを記録してもよい。なお、セキュリティ情報分析装置100は、分析モデル記憶部103に記憶された分析モデルを外部(ユーザ、他のシステム、装置等)に提供してもよい。
訓練データ供給部104は、ユーザや他のシステムから提供された訓練データを、学習部102に供給する。訓練データは、あるセキュリティ事象に関する対策に有用なセキュリティ情報(即ち、あるセキュリティ事象に関して、有用であると判断されたセキュリティ情報)の集合である。
訓練データを作成又は取得する方法は特に限定されず、適切な方法を採用可能である。具体例として、訓練データは、セキュリティ担当者が過去に収集、蓄積したセキュリティ事象に関するセキュリティ情報(分析済みのセキュリティ情報)を用いて、訓練データが作成されてもよい。他の具体例として、訓練データは、信頼可能な他のシステムから提供されたデータ又は信頼可能な外部のCSIRT(Computer Security Incident Response Team)が作成したレポート等を用いて作成されてもよい。例えば、セキュリティ関係の企業又は組織等が提供する、脆弱性情報、サイバー攻撃情報等から、訓練データを作成することができる。このように作成される訓練データには、セキュリティ担当者又は外部の組織等の知見が反映されていると考えられる。訓練データの具体的な形式及び内容については後述する。
以下、図2を参照して、セキュリティ情報評価装置200の構成について説明する。
情報収集部101は、セキュリティ情報分析装置100における情報収集部101と同様に構成されてよい。この場合、情報収集部101は、例えば、ある情報源105において、評価部201(後述)から提供されたセキュリティ情報であるキーワードを検索し、検索結果をセキュリティ情報として評価部201に提供してもよい。
分析モデル記憶部103は、セキュリティ情報分析装置100における分析モデル記憶部103と同様に構成されてもよい。分析モデル記憶部103には、セキュリティ情報分析装置100(具体的には、学習部102)において生成された分析モデルが記憶される。セキュリティ情報評価装置200は、セキュリティ情報分析装置100から、分析モデルをオンライン又はオフラインで取得してもよい。
評価部201は、分析モデル記憶部103に記憶された分析モデルを用いて、セキュリティ情報供給部202(後述)から供給されたセキュリティ情報を分析する。より具体的には、評価部201は、セキュリティ情報供給部202から供給されたセキュリティ情報を分析モデルに入力として与え、分析モデルが算出するクローラ101ごとの重みを取得する。
評価部201は、例えば、最も重みが大きいクローラ101を用いて、情報源105に対して、入力されたセキュリティ情報に関する情報収集処理を実行する。評価部201は、その情報収集処理により得られた新たなセキュリティ情報を、分析モデルに対して入力として与えることで、上記処理を繰り返し実行可能である。これにより、評価部201は、入力として与えられたセキュリティ事象に関するセキュリティ情報から、そのセキュリティ事象の対策に有用な一連の他のセキュリティ情報を取得することが可能である。評価部201は、上記処理により取得した一連のセキュリティ情報を、分析結果として提供してもよい。評価部201の具体的な動作については、後述する。
セキュリティ情報供給部202は、評価対象のセキュリティ情報を受けつけ、そのセキュリティ情報を評価部201に供給する。セキュリティ情報供給部202は、例えば、ユーザ、他のシステム等の外部から、訓練データに含まれない、新たに発生したセキュリティ事象に関するセキュリティ情報を受けつけることができる。
評価結果提供部203は、あるセキュリティ情報に関して評価部201が供給する分析結果を、セキュリティ情報評価装置の外部(例えば、ユーザ、他のシステム等)に、そのセキュリティ情報に関する評価結果として提供する。具体例として、評価結果提供部203は、評価結果を、画面に表示してもよく、印刷装置を介して印刷してもよく、記憶媒体に出力してもよく、通信回線を介して送信してもよい。評価結果提供部203における評価結果の出力方法は、特に限定されない。
以下、本実施形態における情報分析システムについて説明する。本実施形態においては、例えば、図3に示すように、セキュリティ情報分析装置100と、セキュリティ情報評価装置200とを用いて、セキュリティ情報分析システム300が構成されてもよい。図3に例示するセキュリティ情報分析システム300において、セキュリティ情報分析装置100と、セキュリティ情報評価装置200との間は、適切な通信方法を用いて通信可能に接続されている。
セキュリティ情報分析システム300におけるセキュリティ情報分析装置100には、外部(ユーザ、他のシステム等)から、訓練データが供給される。セキュリティ情報分析装置100は、その訓練データを用いて分析モデルを学習し、学習済みの分析モデルを、セキュリティ情報評価装置200に提供してもよい。
セキュリティ情報分析システム300におけるセキュリティ情報評価装置200には、外部(ユーザ、他のシステム等)から、評価対象のセキュリティ情報が供給される。セキュリティ情報評価装置200は、学習済みの分析モデルを用いて、供給されたセキュリティ情報に関する評価結果を生成する。セキュリティ情報分析装置100における学習処理と、セキュリティ情報評価装置200における分析処理とは、個別に実行されてよい。
本実施形態におけるセキュリティ情報分析システム300は、図3に例示する構成に限定されない。セキュリティ情報分析システム300は、例えば、図4に例示するように構成されてもよい。図4は、図1に例示するセキュリティ情報分析装置100の構成要素と、図2に例示するセキュリティ情報評価装置200の構成要素と、を統合したシステムの機能的な構成を例示する。なお、図4に例示する構成においても、学習部102における学習処理と、評価部201における分析処理とは、個別に実行されてよい。なお、本実施形態におけるセキュリティ情報分析装置100と、セキュリティ情報評価装置200とは、個別の装置として実現されてもよく、図3又は図4に例示するようなシステムの一部として実現されてもよい。
[分析モデル]
以下、分析モデルの具体的な構成と、訓練データを用いた学習プロセスについて説明する。
図5は、本実施形態における分析モデルの概要を示す説明図である。図5に示す分析モデルは、説明のための具体例であり、分析モデルの構成は、図5に例示する具体例には限定されない。
図5に例示するように、本実施形態における分析モデルは、全体としてニューラルネットワークを用いて構成される。具体的には、分析モデルは、第1モデルと、第2モデルと組み合わせたニューラルネットワークとして構成される。
第1モデルとしては、例えば、セキュリティ情報に含まれるデータの静的な特徴(例えばパターン)を学習可能なモデルが用いられる。例えば、第1モデルは、セキュリティ情報に含まれる、ある種のデータ(例えば、IPアドレス、ホスト名等)を畳み込むことで、類似するデータ(例えば、一部が異なるIPアドレス)を、同様の意味を有するデータとして扱えるよう変換することができる。本実施形態においては、第1モデルとして、隣接する中間層に含まれるユニット(ニューラルネットワークを構成するノード)のうち、特定のユニットの間が結合されるよう構成された畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)を用いる。
第2モデルとしては、あるセキュリティ事象に関するセキュリティ情報を取得する時系列的な過程を学習可能なモデルが用いられる。第2モデルは、例えば、セキュリティ情報を取得(検索)する順序を学習するよう構成されてもよく、あるセキュリティ情報が得られた状態から、他のセキュリティ情報が得られた状態への遷移の過程を学習するよう構成されてもよい。本実施形態においては、セキュリティ情報を取得する過程を学習可能な第2モデルとして、再帰型ニューラルネットワーク(RNN:Recurrent Neural Network)が用いられる。
以下、第1モデル(CNN)について説明する。CNNは、一般的には、1以上の畳み込み層を含むニューラルネットワークである。CNNは、畳み込み層に加え、プーリング層を含んでもよい。
畳み込み層は、一般的に、入力されたデータに何からの処理(フィルタ)を実行して、入力されたデータを変換したデータ(マップデータ)を生成するよう構成される。畳み込み層は、入力されたデータにおいてフィルタ処理が実行される位置を変更(スライド)しながら、入力されたデータ全体についてフィルタ処理を実行する。
図6に示す具体例を用いて説明する。図6の具体例の場合、入力データIは、”5×5”の行列として表すことができ、各フィルタ(フィルタA~フィルタN)は”2×2”の行列として表すことができる。なお、フィルタA~フィルタNは具体例の例示であり、フィルタの個数やサイズはこれに限定されない。
各フィルタは、入力データIの行列全体をスライドしながら、入力データIの行列の要素と、各フィルタの行列の要素との間で特定の演算を実行する。具体的には、例えば、入力データIの行列における”2×2”領域の各要素と、フィルタの各要素との積の和が、マップデータAの一つの値として計算される。
本実施形態においては、訓練データとしてセキュリティ情報が与えられる。具体的な訓練データの形式は後述するが、セキュリティ情報は、典型的には、テキスト(文字列)データとして与えられることがある。例えば、入力データが1次元データ(例えば文字列)である場合も、CNNは上記と同様にフィルタ処理を実行可能である。この場合、例えば、1次元データを適切なサイズで分割して並べることで、入力データが2次元データとして扱われてもよい。また、1次元データに対して、1次元のフィルタが適用されてもよい。
フィルタのサイズや、フィルタをスライドする幅(ストライド)は、適宜設定されてよい。本実施形態の場合、訓練データとして与えられるセキュリティ情報のサイズ、性質等に応じて、これらの値が適宜選択される。
例えば、畳み込み層において、あるデータのパターンを抽出可能なフィルタが形成された場合、畳み込み層における演算の結果、具体的な入力データから、特定のパターンの特徴を表すデータ(特徴データ)がマップデータとして得られる。特徴データは、特定のパターンに該当するデータの「意味」又は「カテゴリ」等を表すと考えることもできる。
概念的には、例えば、IPアドレスのパターンを抽出可能なフィルタが形成された場合、畳み込み層による演算により、入力データに含まれる具体的なIPアドレスを表す文字列が、IPアドレスのパターン(特徴)を表す特徴データに変換される。換言すると、入力データに含まれる個別具体的なIPアドレスの値(文字列)が、IPアドレスのパターン(静的な特徴)を表す特徴データに変換(汎化)されると考えられる。同様に、ある特定の文字列をパターンとして抽出可能なフィルタが形成された場合、入力データに含まれる特定の文字列が、その文字列のパターンを表す特徴データに変換(汎化)される。これにより、文字列としての冗長な情報が圧縮され、文字列の静的な特徴(例えばパターン)が、特徴データとして抽出されると考えられる。
また、上記したように、畳み込み層においては、入力データの全領域についてフィルタが適用される。畳み込み層における処理により、入力データに含まれるデータの位置や、個数等を事前に考慮することなく、入力データから特徴データを抽出することができる。
なお、畳み込み層におけるユニット間の結合パラメータは、訓練データを用いた学習により適切な値に調整されることから、適切な訓練データを用いた学習を実行することで、セキュリティ情報に含まれる各種パターンを抽出可能な第1モデルを形成することが可能である。
プーリング層は、畳み込み層の後に配置され、畳み込み層から出力されたマップデータに含まれる各領域(プーリング領域)について、その領域を表す代表としての値を抽出するよう構成される。CNNにおいては、一般的に、プーリング層を設けることにより、入力データの次元を削減することができる。また、プーリング層を設けることで、入力データの中で特定のパターンに該当するデータの位置がわずかに変化した場合であっても、その変化による影響を低減可能である。
例えば、入力データにIPアドレスを表す特徴データが含まれる場合を想定する。この場合、元のセキュリティ情報においてIPアドレスを表す文字列が含まれる位置が若干変化しても、上記のように構成されたプーリング層を用いることにより、IPアドレスを表す特徴データを抽出することができる。
上記のようなプーリング層の処理により、畳み込み層から出力されたマップデータに含まれる特徴的な値を保存しながら、データの次元を削減することができる。なお、プーリング層におけるユニット間の結合パラメータは、訓練データを用いた学習では変化しないように設定されてもよい。
本実施形態において、畳み込み層及びプーリング層の数、各層のユニット数、及びフィルタの構成等は、例えば、訓練データの性質、量等に応じて適宜調整可能である。
上記のように構成されたCNNによる第1モデルは、具体例として、以下のような処理を実現可能である。例えば、第1モデルにより、セキュリティ情報として入力されたIPアドレスをマスクし、同一組織のネットワークに含まれるIPアドレスを、同一の入力値として扱うことが可能となる。なお、組織ごとのネットマスクは、地域インターネット レジストリ(RIR:Regional Internet Registry)等から、IPアドレスの割当て情報を取得することで生成可能である。また、第1モデルにより、セキュリティ情報として入力されたホスト名から、サブドメインを除去することができる。これにより、例えば、単独のドメイン名を取得した攻撃者が、大量のホストネームを生成した場合でも、それらのホスト名を、同一の攻撃源を表すセキュリティ情報として扱うことが可能となる。また、類似バイナリに対して近似するハッシュ値(文字列等)を生成するハッシュアルゴリズムを用いることより、第1モデルは、類似したバイナリのハッシュ値を、同じ型(パターン)のセキュリティ情報として扱うことが可能である。なお、上記したハッシュアルゴリズムは特に限定されず、周知の技術を採用してよく、一例として、ssdeep、imphash(import hash)等が用いられてもよい。
上記のように構成されたCNNによる第1モデルを用いることで、本実施形態における学習部102は、セキュリティ情報に含まれるパターンを学習することが可能である。例えば、IPアドレス”192.168.0.1”と、”192.168.10.2”とは、異なるデータであるが、ともにクラスCのIPアドレスを表すデータである。第1モデルは、このようなデータを、例えば、”192.168.*”(”*”は何らかのデータ)という特徴を表す特徴データに変換することができる。また、第1モデルは、複数のセキュリティ情報に共通して含まれる特定の文字列(例えば、複数のセキュリティ情報に共通に含まれる文字列)を、その文字列を表す特徴データに変換することができる。
以下、図5に例示する第2モデル(RNN)について説明する。
RNNは、一般的に、帰還ループを有する中間層を少なくとも1層以上備えるニューラルネットワークである。RNNにおいて、帰還ループを有する中間層は、ある状態より前の状態における中間層からの出力を、ある状態における中間層への入力として提供することができる。これにより、RNNは、ある入力データに関する出力データを計算する際、過去に受けとった入力データの影響を反映することが可能である。
第2モデルは、後述する学習処理において、学習部102が訓練データを用いて情報収集処理を繰り返し実行する過程から、あるセキュリティ事象に関するセキュリティ情報を取得する過程を学習する。
例えば、訓練データに、あるセキュリティ事象に関して、端緒となったセキュリティ情報(例えば、マルウェアによる攻撃の兆候を示す通信データ)と、そのセキュリティ事象に関して有用であると判断されたセキュリティ情報(例えば、マルウェア制御サーバのIPアドレス)とが含まれることを想定する。
訓練データに含まれるセキュリティ情報は、典型的には、セキュリティ担当者が、端緒となったセキュリティ情報から、有用であると判断されたセキュリティ情報が得られるまで、各種情報源において情報収集処理を繰り返し実行することで取得されたと考えられる。即ち、セキュリティ担当者は、情報収集処理を実行する過程で時系列的に得られたセキュリティ情報を用いて、情報収集処理を繰り返し実行することで、最終的に有用なセキュリティ情報を取得したと考えられる。このようなセキュリティ情報を含む訓練データを用いた学習処理を実行することで、第2モデルは、端緒となったセキュリティ情報から、有用なセキュリティ情報を取得するための情報収集処理の実行過程(適切な情報収集処理の選択及び実行)を学習することができると考えられる。
本実施形態においては、第2モデルとして、例えば、長期短期記憶(LSTM:Long Short Term Memory)を採用したRNNが用いられてもよい。LSTMは、中間層のユニットとして、記憶セル、入力ゲート、出力ゲート及び忘却ゲートを有する記憶ユニットを用いる、RNNの一つの態様であり、周知技術により実現可能である。なお、本実施形態は、これには限定されず、他の形式のRNNを採用してもよい。
第1、第2モデルを用いて構成される分析モデルの入力層には、セキュリティ情報を表すデータが入力される。入力層のユニット数は、セキュリティ情報のサイズや性質に応じて適宜選択してよい。例えば、セキュリティ情報がテキストデータとして与えられる場合、入力層のユニット数は、そのテキストデータから抽出する文字数(一具体例として、1024文字等)を設定してもよい。
また、分析モデルの出力層からは、各クローラ101についての重みが出力される。出力層のユニット数は、クローラ101の数に応じて適切に選択されてよい。本実施形態においては、クローラ101の数がNである場合、出力層は2N(2のN乗)個のユニットにより構成されてもよい。N個のクローラ101から、0個以上N個以下のクローラ101を選択する組合せは2N個存在することから、出力層の各ユニットは、クローラ101及びその組合せのそれぞれについて、重みを出力することができる。例えば、クローラ101及びその組合せに識別子を付与し、その識別子ごとに、出力層の各ユニットが割り当てられてもよい。なお、出力層において、情報収集処理の終了(打ち切り)を表すクローラ101(終了処理クローラ)に割り当てられたユニットからの出力が最も大きい場合、後述する学習処理、あるいは学習済みの分析モデルを用いた分析(評価)処理における情報収集処理の繰り返しを終了してもよい。
本実施形態は上記限定されず、第1モデルとして、セキュリティ情報の静的な特徴を学習可能な他のモデルを採用してもよい。そのような他のモデルの一例として、例えば、全結合型のニューラルネットワークモデルが用いられてもよい。また、第2モデルとして、セキュリティ情報の取得に関する時系列的な特徴を学習可能な他のモデルが採用されてもよい。そのような他のモデルの一例として、例えば、条件付き確率場(CRF:conditional random field)が用いられてもよい。
[訓練データ]
以下、訓練データについて説明する。上記したように、本実施形態においては、あるセキュリティ事象に関する対策に有用なセキュリティ情報を含む訓練データが提供される。以下、説明の便宜上、訓練データが、テキストデータ(文字列データ)として提供されることを想定する。
本実施形態においては、適切な数の訓練データが予め用意される。訓練データの数は、適宜選択してよい。例えば、各種のキュリティ関係の企業、組織等が提供する情報から訓練データを作成することで、数千~100万件程度の訓練データを用意することができる。
訓練データには、あるセキュリティ事象に関する1以上のセキュリティ情報が含まれる。典型的には、訓練データには、あるセキュリティ事象に関して端緒となり得るセキュリティ情報(例えば、マルウェア攻撃の兆候を示す情報)と、そのセキュリティ事象に関する対策に有用であると判断されたセキュリティ情報とが含まれる。ある訓練データに含まれるセキュリティ情報を端緒として、情報収集処理を繰り返すことで、同じ訓練データに含まれる他のセキュリティ情報を取得することができれば、そのような情報収集処理の過程で有用なセキュリティ情報が得られたと考えられる。以下、訓練データに含まれる一つのセキュリティ情報を、「サンプル」と記載する場合がある。
サンプルには、セキュリティ情報を表す具体的なデータが含まれる。1つの具体的な形態として、あるサンプルは、セキュリティ情報の「型」を表すデータ(型データ)、セキュリティ情報の「意味」を表すデータ(意味データ)、及び、セキュリティ情報の値を表すデータ(値データ)、を含むよう構成されてもよい。
型データは、セキュリティ情報のカテゴリ、形式等を表すデータである。例えば、あるセキュリティ情報がIPアドレスである場合、その内容に応じて、型データには「IPv4アドレス」を表す識別子、「IPv6アドレス」を表す識別子等が設定されてよい。
意味データは、セキュリティ情報が示す意味を表すデータである。例えば、あるセキュリティ情報がIPアドレスである場合、その内容に応じて、意味データには「データの送信元」、「データの送信先」、「監視対象IPアドレス」等を表す識別子が設定されてもよい。
値データは、セキュリティ情報の具値的な値を示すデータである。例えば、あるセキュリティ情報がIPアドレスである場合、値データには、具体的なIPアドレスの値が設定されてもよい。
上記に限定されず、サンプルには他のデータが更に含まれてもよい。場合によっては、型データと意味データとの少なくとも一方が、サンプルに含まれていなくてもよい。
型データ及び意味データの分類としては、独自の基準に従った分類を採用してもよく、周知の分類を採用してもよい。例えば、型データの一例として、OASIS(Organization for the Advancement of Structured Information Standards)において検討されているSTIX(Structured Threat Information eXpression)/CybOX(Cyber Observable eXpression)において規定された「DatatypeEnum」型を採用してもよい。また、意味データの一例として、STIX/CybOXにおいて規定された語彙(Vocabularies)を採用してもよい。
訓練データを表現する形式は、特に限定されず、適切な形式を選択してよい。一つの具体例として、本実施形態における訓練データは、JSON(JavaScript(登録商標) Object Notation)形式を用いて表現される。なお、訓練データを表現する形式として、データを構造的に表現できる他の形式(例えば、XML(Extensible Markup Language))等が採用されてもよい。
[分析モデルの学習過程]
上記のように構成された分析モデルの学習について概要を説明する。
本実施形態における学習部102は、学習過程をグラフとして表現することが可能である。以下、学習過程を表すグラフを、学習グラフと記載する場合がある。
学習グラフの各ノードは、少なくとも1以上のセキュリティ情報を有する。後述する学習過程において、学習部102に入力として供給されるセキュリティ情報を含むノードを、入力ノードと記載する。また、入力ノードのセキュリティ情報について、学習部102により選択されたクローラ101が情報収集処理を実行することで取得した1以上のセキュリティ情報を含むノードを、出力ノードと記載する。出力ノードは、学習過程の次の段階における入力ノードとして、学習部102に入力される。また、ある訓練データに関する学習処理を開始する際に、学習部102に最初の入力として供給されるセキュリティ情報を含むノードを、初期ノードと記載する場合がある。入力ノードに含まれるセキュリティ情報を入力セキュリティ情報、出力ノードに含まれるセキュリティ情報を、出力セキュリティ情報と記載する場合がある。
以下、図7に示す説明図を参照して、本実施形態における学習グラフの概要を説明する。なお、図7は、学習グラフの例を概念的に示す説明図であり、本実施形態はこれには限定されない。
上記したように、訓練データとして、あるセキュリティ事象に関するセキュリティ情報が、学習部102に与えられる。学習部102は、例えば、与えられたセキュリティ情報を、図7に例示する初期ノードとして扱ってもよい。
学習部102は、分析モデルの学習過程において、ある入力ノードに含まれるセキュリティ情報を入力として、そのセキュリティ情報を用いた情報収集処理を実行するクローラ101を選択するための情報(クローラ101の重み)を出力する。
図7に示す具体例の場合、学習部102は、例えば、入力ノードに含まれるセキュリティ情報(例えば”A0”)を分析モデルに入力として与える。分析モデルは、与えられたセキュリティ情報に応じた、各クローラ101の重みを算出する。分析モデルが算出する出力(重み)に応じて、学習部102は、そのセキュリティ情報(”A0”)に関する情報収集処理を実行するクローラ101(例えば、”クローラA”)を選択する。
学習部102は、選択したクローラ101を用いて、情報源105において更に情報収集処理を実行し、新たなセキュリティ情報を取得する。図7の場合、学習部102が、”クローラA”を用いて情報収集処理を実行した結果、新たにセキュリティ情報として”B0”~”B2”が得られたことを示す。
学習部102は、上記処理を学習処理の終了条件が満たされるまで繰り返し実行する。図7の場合、例えば、学習部102が、セキュリティ情報”B0”に対して”クローラB”を選択して情報収集処理を実行し、セキュリティ情報”C0”が得られることを示す。同様に、学習部102が、セキュリティ情報”B1”、”B2”に対してそれぞれ”クローラC”、”クローラN”を選択し、これらによる情報収集処理の結果、セキュリティ情報”C1”~”C3”、”C(m-1)”、”Cm”が得られることを示す。
学習部102は、上記繰り返しの各段階において取得したセキュリティ情報に応じて、分析モデル(第1モデル及び第2モデル)におけるユニット間の結合パラメータを調整する。図7の場合、例えば、訓練データとして与えられたセキュリティ情報”A0”から、セキュリティ情報”C0”~”Cm”が得られるまでに取得した各セキュリティ情報に応じて、分析モデルのパラメータが調整される。
以下、分析モデルの学習方法として、強化学習の一つの手法である、Q学習(Q-Learning)の枠組みを用いる方法について説明する。
強化学習においては、一般的に、学習を実行する学習主体がある状態”s”において選択した行動”a”に対して報酬”r”が与えられる。学習主体は、報酬”r”に基づいて選択した行動”a”を評価することで、より適切な行動を選択するよう学習を実行する。
本実施形態においては、セキュリティ情報分析装置100(特には学習部102)が、学習主体に相当する。
本実施形態において、状態”s”は、学習グラフにおける入力ノード(特には、入力ノードに含まれるセキュリティ情報)を表す。より具体的には、状態”s”には、学習過程のあるタイミングにおける学習グラフ上の入力ノードの位置、内容(入力ノードのセキュリティ情報)、及び、そのタイミングにおいて選択可能なクローラ101等が含まれてもよい。
本実施形態において、行動”a”は、ある状態”s”における、クローラ101の選択に相当する。換言すると、行動”a”は、あるセキュリティ情報について、あるクローラ101を選択し、選択したクローラ101を用いて情報源105において情報収集処理を実行することに相当する。
本実施形態において、報酬”r”は、ある状態”s”(入力ノード)について、選択した行動”a”(クローラ101の選択及び情報収集処理の実行)により得られたセキュリティ情報の内容に応じて算出される。例えば、選択したクローラ101により、訓練データに含まれるセキュリティ情報(サンプル)のうち、初期ノードから入力ノードまでの間に取得されていないセキュリティ情報が出力ノードとして得られた場合、その行動に関して比較的大きい報酬が設定される。換言すると、本実施形態においては、ある一つの訓練データについて、その訓練データに含まれるセキュリティ情報が、初期ノードから出力ノードまでの間に取得された数に応じて、報酬が設定される。具体的には、ある一つの訓練データに含まれるセキュリティ情報のうち、初期ノードから出力ノードまでの間に取得されたセキュリティ情報の数が多い場合、報酬の値が大きくなる。また、ある一つの訓練データに含まれるセキュリティ情報のうち、初期ノードから出力ノードまでの間に取得されたセキュリティ情報の数が少ない場合、報酬の値が小さくなる。なお、初期ノードに含まれるセキュリティ情報は、初期ノードから出力ノードまでの間に取得された数に含まれてもよく、含まれなくてもよい。
簡略化した具体例を用いて説明する。仮に、”A”、”B”、”C”の3つのセキュリティ情報(サンプル)を含む、一つの訓練データが与えられ、初期ノードとして”A”を含むノードが設定されることを想定する。初期ノードのサンプル”A”に対して、あるクローラ101(仮にクローラXとする)を選択して情報収集処理を実行した結果として、セキュリティ情報”B”が得られた場合、入力ノードから出力ノードまでの間に、訓練データに含まれるセキュリティ情報が2つ取得される。これに対して、他のクローラ101(仮にクローラYとする)を選択した結果として、セキュリティ情報”D”が得られた場合、入力ノードから出力ノードまでの間に、訓練データに含まれるセキュリティ情報が1つ取得される。この具体例の場合、クローラXを選択する行動についてより大きい報酬が設定され、クローラYを選択する行動についてはより小さい報酬が設定される。なお、本実施形態は上記簡略化した具体例には限定されない。
本実施形態における訓練データは、あるセキュリティ事象について有用であると判定されたセキュリティ情報を含む。訓練データに含まれる一つのセキュリティ情報から出発して、訓練データに含まれる他のセキュリティ情報を取得可能なクローラ101に対して大きい報酬を設定することで、あるセキュリティ事象について有用なセキュリティ情報を取得するクローラ101が選択されやすくなる。例えば、上記のような報酬設定の下で、多様な訓練データを用いた学習処理を実行することにより、分析モデルは、訓練データに含まれないセキュリティ事象に関する一つのセキュリティ情報から、他の有用なセキュリティ情報を取得するクローラ101を適宜選択可能になると期待される。なお、本実施形態における報酬”r”の具体的な算出方法については後述する。
以下、Q学習の概要について説明する。あるタイミング”t”における状態を"s(t)”、行動を”a(t)”、報酬を”r(t)”と表すと、学習部102の学習過程において、以下のような状態、行動、報酬のセットが得られると考えられる。
ここで、”s(n)”は最終的な状態(訓練データに含まれる他のセキュリティ情報が得られた状態)を示す。
一般的に、強化学習の目的は、最終的に得られる累積報酬を最大化することである。あるタイミング”t”から、”t=n”までの累積報酬R(t)は、割引率”γ”を用いて、一般的に以下の式(1)ように表される。
ここで、”γ”は適宜設定可能な係数であり、一般的には0~1の間の値を適宜選択可能である。
Q学習においては、ある状態”s”において、行動”a”の重み(その行動を選択することの有用性)を表す指標を算出可能な評価関数(行動価値関数:action-value function)として、以下のような関数を導入する。即ち、一例として、式(2)のように、ある状態”s”において、行動”a”を実行した場合に得られる累積報酬の期待値Eを算出可能な関数Qが行動価値関数として用いられてもよい。
各状態において、選択可能な行動の中で、最も評価関数の出力が高い行動を採用し続けた場合の累積報酬の期待値は、式(3)(最適行動価値関数:Q関数)により算出可能である。
式(3)において、”π”は、行動”a”を選択する方策(policy)を表す。”Q*(s,a)”が最大になる行動を選択することで、最終的な累積報酬が最大化される。Q学習においては、各状態”s”において、選択可能な行動”a”の中で、最も行動価値関数の値が大きい行動を採用するように、学習が実行される。
一般的に、Bellman方程式から、ある環境”s”において、行動”a”を選択した場合に、報酬”r”が得られ、次の状態が”s’”になる場合、以下の関係式(式(4))が成立する。
これは、状態”s”において行動”a”を採用した場合の累積報酬が、行動”a”による報酬”r”と、次の状態”s’”における累積報酬の和であることを表す。これより、何らかの方法で、式(4)の性質を満たすQ関数が得られれば、ある状態”s”において、その関数からの出力が最大になる”s”を選択することで、累積報酬が最大となる行動を選択することができる。
一般的なQ学習においては、例えば状態”s”と行動”a”との組合せについて、テーブル関数Q(s,a)が作成され、式(5)によりQ(s,a)が更新される。式(5)において”α”は適宜設定可能な学習係数であり、典型的には、例えば、1未満の比較的小さな値(例えば、”0.1”等)が設定されてもよい。
状態”s”及びアクションの数が多い場合、全ての状態”s”について、関数Q(s、a)の値(Q値)を算出することは困難である。このような場合、例えば、ニューラルネットワークを用いて関数Q(s,a)を近似する方法が知られている(例えば、下記参考文献1)。
本実施形態においては、分析モデル(ニューラルネットワークモデル)を用いて、上記関数Q(s,a)を近似する。換言すると、本実施形態においては、分析モデルは、上記関数Q(s,a)を近似するように学習される。即ち分析モデルにおけるニューラルネットワークのパラメータを”θ”とすると、分析モデルは、式(6)のような関係を満たすQ(s,a;θ)を出力するよう学習される。
分析モデルは、学習過程において、式(7)で示される2乗誤差Lを最小化するよう、学習される。
即ち、ある状態”s”、行動”a”、その行動による報酬”r”、及び次の状態”s’”について、学習部102は、式(8)により教師信号”y”を算出し、分析モデルの出力Q(s,a,;θ)が、教師信号に近づくように分析モデルを構成する各ニューラルネットワークのパラメータを調整する。
分析モデルは、入力として、状態”s”(入力ノードに含まれるセキュリティ情報)を受け付け、クローラ101の選択(行動”a”)に関するQ値を算出する。即ち、Q値は、ある状態(セキュリティ情報)に対する、クローラ101の重みを表す値として用いられる。
なお、上記説明した、ニューラルネットワークを用いたQ学習の一般的な学習アルゴリズムとしては、例えば、下記参考文献1に記載された方法を採用してもよい。
[参考文献1]
Volodymyr Mnih, Koray Kavukcuoglu, David Silver, Alex Graves, Ioannis Antonoglou, Daan Wierstra, Martin A. Riedmiller, ”Playing Atari with Deep Reinforcement Learning”, [online], 2013年12月19日、CoRR (Computing Research Repositoly), [2017年1月9日検索]、インターネット<URL:http://arxiv.org/abs/1312.5602>.
以下、本実施形態における分析モデルの具体的な学習過程について説明する。以下、説明の便宜上、分析モデルの学習方法について具体例を用いて説明するが、本実施形態はこの具体例には限定されない。また、以下においては、信頼可能な企業や外部組織が作成したレポートから、セキュリティ担当者にとって有用であると判断した情報を抽出したデータを訓練データとする。訓練データの数は適切に選択してよく、本実施形態においては、例えば、数千件~100万件程度の訓練データを使用することができる。以下、訓練データの訓練データセットと記載する。
図8A,図8Bは、分析モデルの学習過程を説明するフローチャートである。
学習部102は、分析モデルを初期化する(ステップS801)。学習部102は、例えば、分析モデルを構成する第1モデル及び第2モデルについて、それぞれのニューラルネットワークのパラメータを適宜初期化する。1つの具体例として、学習部102は、各ニューラルネットワークのパラメータをランダムな値で初期化してもよい。また、1つの具体例として、学習部102は、分析モデルからの出力(即ち、Q値の推定値)の初期値が0(ゼロ)となるように、ニューラルネットワークのパラメータを初期化してもよい。
学習部102は、訓練データセットについて、以下の処理を繰り返し実行する。学習部102は、以下の処理を、規定の回数、繰り返し実行してもよい。実行回数は、特に限定されず、適宜選択されてよい。なお、学習部102は、全訓練データセットについて、以下の処理を繰り返し実行してもよい。
学習部102は、訓練データセットから、一つの訓練データを選択する(ステップS802)。学習部102は、訓練データをランダムに選択してもよい。
学習部102は、選択した訓練データに含まれるセキュリティ情報(サンプル)を選択する(ステップS803)。学習部102は、選択したサンプルを初期ノードとして設定する。初期ノードは、Q学習において、タイミング”t=0”の初期状態”s(0)”に相当する。初期ノードは、初期状態”s(0)”における入力ノードとして扱われる。
学習部102は、入力ノードを設定(選択)し、その入力ノードに含まれるセキュリティ情報に関する情報収集処理を実行するクローラ101を選択する(ステップS804)。ある訓練データを用いた学習を開始した際、学習部102は、初期ノードを入力ノードとして扱い、初期ノードに関する情報収集処理を実行するクローラ101を選択する。また、ある訓練データを用いた学習が進行している場合、学習部102は、以前のタイミングにおいて生成された出力ノードを、入力ノードとして設定してもよい。なお、学習部102によるクローラ101の選択は、Q学習における行動”a”の選択に相当する。
以下、クローラ101の選択について具体的に説明する。学習部102は、例えば、ある確率(”ε”)で、ランダムにクローラ101を選択し、確率(”1-ε”)で、分析モデルから出力されるQ値に基づいて、クローラ101を選択してもよい。Q値に基づいてクローラ101を選択する場合、学習部102は、例えば、分析モデルの出力層において、最も大きいQ値を出力するユニットが割り当てられたクローラ101を選択してもよい。そのような選択は、式(9)により表され得る。式(9)は、あるタイミング”t”において、状態”s”においてQ値が最も大きくなる行動”a”を選択することを表す。
学習の初期段階では、分析モデルのパラメータに適切な値に調整されていないことから、適切なQ値が出力されないことがあり、Q値を用いた場合に、必ずしも適切なクローラ101が選択されない場合がある。このため、学習の初期段階では、クローラ101をランダムに選択する確率”ε”に比較的大きな値が設定されてもよい。そして、学習の進行に応じて、徐々にその値が減らされてもよい。
学習部102は、選択したクローラ101を用いて、情報源105において、入力ノードに含まれるセキュリティ情報に関する情報収集処理を実行し、取得したセキュリティ情報を含む出力ノードを生成する(ステップS805)。選択されたクローラ101は、例えば、入力ノードに含まれるセキュリティ情報をキーワードとして、情報源105においてそのキーワードに関する検索処理を実行し、その結果を新たなセキュリティ情報として取得してもよい。学習部102は、クローラ101により情報源105から取得されたセキュリティ情報を含む出力ノードを生成する。出力ノードは、次のタイミングにおける入力ノード(即ち、次のタイミングにおける状態”s”)として扱われる。
学習部102は、ステップS804におけるクローラ101の選択及び情報収集処理に関する報酬を計算する(ステップS806)。学習部102は、一つの具体例として、以下のような方法を用いて報酬を計算してもよい。即ち、学習部102は、ステップS802において選択された一つの訓練データに含まれるセキュリティ情報のうち、初期ノードから、あるタイミングにおける出力ノードまでの各ノードに含まれないセキュリティ情報の総数に1を足した数の逆数を、報酬として算出する。この場合、報酬の最大値は”1”となる。
簡略化した具体例を用いて説明する。仮に、”A”、”B”、”C”の3つのセキュリティ情報(サンプル)を含む、一つの訓練データが与えられ、初期ノードとして”A”を含むノードが設定されることを想定する。初期ノードのサンプル”A”に対して、あるクローラ101(仮にクローラAとする)を選択して情報収集処理を実行した結果として、セキュリティ情報”B”が得られた場合、入力ノードから出力ノードまでの間に、訓練データに含まれるセキュリティ情報が2つ取得される。入力ノードから出力ノードまでの間に含まれないセキュリティ情報の総数は1(この場合は”C”のみ)であることから、報酬”r=1/(1+1)=1/2”と計算される。なお、本実施形態は上記簡略化した具体例には限定されない。
学習部102は、ステップS806において、既に得られているセキュリティ情報と同じ内容のセキュリティ情報が得られた場合、報酬として”-1”を設定してもよい。
学習部102は、終了状態を判定する(ステップS807)。1つの具体例として、学習部102は、ステップS805において得られた、ある入力ノードに関するセキュリティ情報が、初期ノードからその入力ノードまでの間のノードに既に含まれている場合、次の状態として終了状態を設定してよい。これにより、同じセキュリティ情報が繰り返し取得されることが防がれる。
また、学習部102は、ステップS806において得られた報酬”r”が”r=1”となった場合、次の状態として終了状態を設定してよい。ある一つの訓練データに含まれるセキュリティ情報が全て取得された場合に、報酬”r”が最大値(”r=1”)となっている。
また、学習部102は、ある一つの訓練データについて、クローラ101の選択及び情報収集処理を規定された回数繰り返し実行した場合、次の状態として終了状態を設定してもよい。これにより、ある訓練データについて、際限なく情報収集処理が実行されることを防ぐことができる。
また、学習部102は、ステップS805において生成した出力ノードに関する情報収集処理を実行可能なクローラ101が存在しない場合、次の状態として終了状態を設定してもよい。
学習部102は、ある状態”s”の次の状態が終了状態であると判定した場合、終了状態に強制的に遷移する特殊なクローラ101(終了処理クローラ)が選択されるよう、分析モデルの出力を調整してもよい。また、学習部102は、ある状態”s”の次の状態が終了状態であると判定した場合、終了状態に強制的に遷移する特殊なクローラ101が選択されるよう、報酬の値を設定してもよい。これにより、ある状態”s”において、重みが大きいクローラ101が終了処理クローラである場合、情報取得処理が終了される。
上記ステップS804乃至ステップS807の処理により、あるタイミング”t”における、状態”s(t)”(入力ノード)と、行動”a(t)”(クローラ101の選択)と、報酬”r(t)”と、次の状態”s(t+1)”(出力ノード)と、終了状態の判断結果とが得られる。以下、これらのデータのセットを、遷移データと記載する場合がある。学習部102は、ステップS804乃至S807において求めたこれらの遷移データを、Q学習用のデータとして記憶してもよい。
上記ステップS804乃至ステップS807の処理により、学習部102は、ある入力ノードから、出力ノードに至る学習グラフの一部を生成することができる。
学習部102は、Q学習における教師信号”y”を算出する(ステップS808)。1つの具体例として、学習部102は、ステップS804乃至S807において求めた遷移データ(あるタイミング”t”における状態”s(t)”(入力ノード)、行動”a(t)”(選択されたクローラ101)、報酬”r(t)”、及び次状態”s(t+1)”(出力ノード))から、式(10)を用いて教師信号を算出する。
なお、次の状態”s(t+1)”が終了状態である場合、既に報酬が決定されており、更なる行動を選択する必要がないことから、学習部102は、式(11)により教師信号を算出してもよい。
式(10)において、割引率”γ”は適宜定められてよく、典型的には0.9以上、1.0未満の値が用いられてよい。式(10)における”Q(s(t+1),a(t+1);θ)”は、あるタイミングにおける分析モデルに、状態”s(t+1)”(出力ノード)を入力として与えることで、算出可能である。なお、学習部102は、算出した教師信号を、遷移データに関連付けて記憶してもよい。
学習部102は、分析モデルのパラメータを学習する(ステップS809)。1つの具体例として、学習部102は、式(12)により表される教師信号と、分析モデルからの出力との誤差を、適切な勾配法を用いて最小化してもよい。
なお、勾配法を用いて誤差を最小化する具体的な方法は、特に限定されない。具体的な方法の一例として、例えば、上記参考文献1に記載された方法が用いられてもよい。ステップS809の処理により、分析モデルを構成する第1モデル及び第2モデルのパラメータが調整される。なお、CNN,RNNのパラメータ調整は、適切な方法(例えば誤差逆伝搬法等)を用いて実現可能であり、特に限定されない。
学習部102は、ステップS805乃至ステップS807の結果から、ステップS803において選択した訓練データに含まれるサンプルを用いた学習過程において、次の状態が終了状態であるか否かを判定する(ステップS810)。
次の状態が終了状態ではない場合(ステップS810においてNO)、学習部102は、あるタイミングにおける出力ノードを入力ノードとして扱い、更に情報収集処理を実行可能である。即ち、この場合、学習部102は、あるタイミングにおける出力ノードを、次のタイミングにおける入力ノードに設定し(ステップS811)、ステップS804から学習過程を続行してよい。
次の状態が終了状態である場合(ステップS810においてYES),学習部102は、ステップS802において選択した訓練データに、他のセキュリティ情報(サンプル)が含まれるか確認する(ステップ812)。
ステップS812においてYESの場合、学習部102は、ステップS802において選択した訓練データに含まれる他のセキュリティ情報を初期ノードとして設定し、ステップS803から学習過程を続行してよい。
ステップS812においてNOの場合、ステップS802において選択された訓練データに含まれる全てのセキュリティ情報(サンプル)について、既に学習過程が実行されている。この場合、学習部102は、ステップS802から学習過程を続行してよい。
上記説明した学習過程により、分析モデルは、ある訓練データに含まれるセキュリティ情報を入力として受けつけた際、情報収集処理を実行する過程で、同じ訓練データに含まれる他のセキュリティ情報を取得し得るクローラ101について、より大きな値を出力するよう学習される。
これにより、例えば、学習後の分析モデルを用いて、訓練データに含まれないセキュリティ事象に関するセキュリティ情報を始点として、クローラ101の選択及び情報収集処理の実行を繰り返すことで、そのセキュリティ情報に関する他の有用なセキュリティ情報を取得可能となることが期待される。
[学習過程の変形例]
以下、上記説明した学習部102における学習過程の変形例について説明する。以下の変形例の場合、上記説明したステップS802~ステップS811のうち、分析モデルのパラメータ調整に関する処理(ステップS808、S809)以外の処理が予め複数回実行される。これにより、学習部102は、Q学習に用いられる遷移データ(状態”s”、行動”a”、報酬”r”、次の状態”s’”)を予め複数生成して記憶する。学習部102は、例えば、分析モデルを用いずに、ランダムに行動(クローラ101の選択及び情報収集処理)を選択することで、遷移データを生成してもよい。上記のように事前に準備された遷移データを、初期遷移データと記載する場合がある。
学習部102は、初期遷移データを学習用遷移データとして記憶する。学習部が記憶する学習用遷移データの数は、特に限定されず、適宜選択してよい。
学習部102は、学習用遷移データを準備した後、上記説明したステップS801乃至ステップS811の学習過程を実行する。この際、学習部102は、ステップS804乃至S807において新たな遷移データを求めるたびに、その遷移データを学習用遷移データとして更に記憶してよい。学習用遷移データには上限が設けられてもよく、学習部102は、例えば、新たな遷移データが求まるたびに、古い遷移データを削除してもよい。
学習部102は、ステップS808、S809において、学習用遷移データから1以上の遷移データをランダムに選択して、選択した遷移データを用いて、分析モデルの学習を実行してもよい。学習部102は、例えば、複数の学習データの集合(ミニバッチ)を用いてニューラルネットワークを学習する一般的な手法を用いて、ステップS808及びS809における分析モデルの学習処理を実行してよい。
[具体例]
以下、図9~図10に示す簡略化した具体例を用いて、上記学習過程について説明する。
学習部102は、複数の訓練データセットから、ある訓練データ(仮に訓練データXと記載する)を選択する。図9に示す具体例の場合、訓練データXには3つのセキュリティ情報(hostname、ip-dst、md5)が含まれる。
学習部102は、訓練データXに含まれるセキュリティ情報(サンプル)のうち、一つを選択する。図9に例示する具体例の場合、”hostname”が選択される。選択されたセキュリティ情報が、初期ノードとして扱われる。
学習部102は、初期ノードを入力ノードとして選択し、その入力ノードに含まれるセキュリティ情報に関する情報収集処理を実行するクローラ101を選択する。この際、学習部102は、クローラ101をランダムに選択してもよい。また、学習部102は、入力ノードを適切な形式(例えばJSON形式)に変換して、このタイミングにおける分析モデルに入力し、分析モデルから出力さる値(重み)が最も大きいクローラ101を選択してもよい。図9の場合、DNSを用いて情報収集処理を実行するクローラ101(図9のクローラA)が選択される。クローラAは、DNSを用いて、入力ノードのホスト名(”aaa.bbb.ccc.org”)に対応するIPアドレス(”195.208.222.333”)を取得し、学習部102に提供する。学習部102は、情報収集処理の結果を用いて、出力ノードを生成する(図9のノード1)。
学習部102は、クローラAの選択及び情報収集処理に対する報酬を算出する。この場合、訓練データXに含まれるセキュリティ情報のうち、初期ノードから、出力ノード(ノード1)までの間に含まれないセキュリティ情報の総数は1(”md5”)である。よって、学習部102は、報酬”r”について、”r=1/(1+1)=1/2”と算出する。なお、図9の場合、学習部102は、ノード1の次の状態が終了状態ではないと判定する。
学習部102は、例えば、上記処理により得られた遷移データ(状態”s”(初期ノード)、行動”a”(クローラA)、報酬”r”(”r=1/2”)、次の状態”s’”(ノード1))を、学習用遷移データとして記憶してもよい。
学習部102は、ノード1を入力ノードとして、上記と同様の処理を実行する。図9の場合、クローラ101として、クローラBが選択される。クローラBは、例えば、マルウェア情報を提供する外部サイトにおいて、ノード1に含まれるIPアドレスを検索し、検索結果を取得する。図9の場合、検索結果として、マルウェアファイルのハッシュ値(例えば、MD5(Message Digest Algorithm 5)の値)が得られる。学習部102は、このような情報収集処理の結果を用いて、出力ノードを生成する(図9のノード2)。
学習部102は、クローラBの選択及び情報収集処理に対する報酬を算出する。この場合、訓練データXに含まれるセキュリティ情報のうち、初期ノードから、出力ノード(ノード2)までの間に含まれないセキュリティ情報の総数は0である。よって、学習部102は、報酬”r”について、”r=1/(0+1)=1”と算出する。また、報酬rが”r=1”を満たすことから、学習部102は、ノード2の次の状態が終了状態であると判定する。
学習部102は、例えば、上記処理により得られた遷移データ(状態”s”(ノード1)、行動”a”(クローラB)、報酬”r”(”r=1”)、次の状態”s’”(ノード2))を、学習用遷移データとして記憶してもよい。なお、この際、学習部102は、上記学習用遷移データを用いて、教師信号となる値を算出してもよい。また、この際、学習部102は、上記学習用遷移データを用いて、式(10)から教師信号となり得る値を算出し、遷移データに関連付けて記憶してもよい。
上記のような処理により、学習部102は、遷移データを生成することが可能である。また、この過程で、学習部102は、学習グラフを生成することが可能である。
以下、分析ノードのパラメータ更新(図8のステップS808、S809)について、図10に示す簡略化した具体例を用いて概要を説明する。図10の具体例の場合、あるタイミングにおける入力ノード(状態”s”)に、ホスト名(”aaa.bbb.ccc.ddd”)が設定されている遷移データを用いて分析モデルのパラメータが調整されることを想定する。
学習部102は、入力ノードに含まれるセキュリティ情報を適切な形式(例えばJSON形式)に変換し、分析モデルに入力する。図10に示す具体例の場合、JSON形式に変換されたセキュリティ情報(文字列)の各文字が、分析モデルにおける入力層の各ユニットに入力される。入力層のユニット数よりセキュリティ情報の文字列の方が長い(サイズが大きい)場合、セキュリティ情報の一部を切り捨ててもよい。
学習部102は、分析モデルの出力として、クローラ101の重みを表す値を得る。図9の場合、クローラ101(総数n個)について、それぞれ重みを表す値(q0~q(n-1))が得られる。
学習部102は、現状の分析モデルと、遷移データとを用いて、式(10)から教師信号を算出する(図10のQ0~Q(n-1))。なお、遷移データに関連付けて教師信号が記憶されている場合、学習部102は、記憶されているデータを用いてもよい。
学習部102は、教師信号と、分析モデルの出力との2乗誤差を算出し、誤差逆伝搬法(バックプロパゲーション)等を用いて、分析モデルを構成するニューラルネットワークのパラメータを更新する。
なお、図9に示す具体例においては、説明の便宜上、分析モデルに入力されるセキュリティ情報について、その型(”hostname”)と、値(”daaa.bbb.ccc.org”)とが表されているが、更に、セキュリティ情報の意味を表すデータが含まれてもよい。
[分析モデルを用いた分析処理]
以下、上記のように学習された分析モデルを用いて、セキュリティ情報評価装置200における評価部201が、あるセキュリティ情報に関するセキュリティ情報を分析する過程について説明する。
図11は、評価部201の動作を例示するフローチャートである。なお、以下の説明においては、セキュリティ情報評価装置200における分析モデル記憶部103に、学習済みの分析モデルが配置されていることを想定する。
評価部201は、例えば、セキュリティ情報供給部202から、新たに分析するセキュリティ情報を受けつけ、初期ノードを生成する(ステップS1101)。初期ノードは、最初の入力ノードとして扱われる。
評価部201は、入力ノードを設定し、入力ノードに含まれるセキュリティ情報を分析モデルに供給する(ステップS1102)。この際、評価部201は、セキュリティ情報を適切な形式に変換してもよい。分析モデルは、入力に応じて、各クローラ101について、重みを表す値を算出する。
評価部201は、分析モデルの出力の内、重みが最も大きいクローラ101を選択する(ステップS1103)。ステップS1103における処理は、上記学習過程において、入力された訓練データに応じてクローラ101を選択する処理(ステップS804)と類似する処理として実装可能である。
評価部201は、選択したクローラ101を用いて、入力ノードに含まれるセキュリティ情報に関する情報収集処理を実行することで取得した、新たなセキュリティ情報を含む出力ノードを生成する(ステップS1104)。この処理は、学習過程におけるステップS805と類似する処理として実装可能である。
評価部201は、出力ノードの次の状態が、終了状態であるか否かを判定する(ステップS1105)。
評価部201は、例えば、ステップS1101において受けつけたセキュリティ情報について、ステップS1102乃至S1104における処理を規定回数以上実行した場合、ステップS1104における出力ノードの次の状態を終了状態と判定してもよい。
また、評価部201は、例えば、分析モデルが算出する重みの内、終了状態へ遷移するクローラ101(終了処理クローラ)の重みが最も大きい場合、ステップS1104における出力ノードの次の状態を終了状態と判定してもよい。
評価部201は、出力ノードの次の状態が終了状態ではないと判定した場合(ステップS1106においてNO)、ステップS1104において生成された出力ノードを、新たな入力ノードとして設定し、ステップS1102から処理を続行する。これにより、ステップS1101において提供されたセキュリティ情報に応じて、情報収集処理が繰り返し実行される。
評価部201は、出力ノードの次の状態が終了状態であると判定した場合(ステップS1106においてYES)、処理を終了する。評価部201は、初期ノードから、最終的な出力ノードに至るまでに生成したノードを表す情報を、評価結果提供部203に提供してもよい。より具体的には、評価部201は、初期ノードから、最終的な出力ノードに至るまでに生成したノードを接続することで、例えば図12に例示するようなグラフ(評価グラフ)を生成し、評価結果提供部203に提供してもよい。なお、評価結果提供部203が、評価グラフを生成してもよい。
上記説明した本実施形態における、セキュリティ情報分析装置100によれば、上記したような訓練データを用いて学習した分析モデルを用いることで、例えば、訓練データに含まれないようなセキュリティ事象についても、有用なセキュリティ情報を収集することができる。その理由は、分析モデルが、あるセキュリティ事象に関するセキュリティ情報から、他の有用なセキュリティ情報を取得可能な情報収集処理(クローラ101)に対して、大きな重みを出力するよう学習されるからである。訓練データには、セキュリティ情報に関する有用性の判断結果(知見)が反映されていると考えられることから、分析モデルの出力には、セキュリティ情報に関する有用性の知見が反映されていると考えられる。
本実施形態においては、訓練データに含まれるあるセキュリティ情報から、同じ訓練データに含まれる他のセキュリティ情報を取得可能な情報収集処理(クローラ101)が選択されやすくなるように、分析モデルが学習される。これにより、あるセキュリティ事象に関して端緒となったセキュリティ情報から、他のセキュリティ情報を取得可能な情報収集処理が次々に選択されるようになる。結果として、分析モデルは、情報収集の過程を学習することが可能となる。
また、本実施形態においては、大量の訓練データを比較的容易に準備することが可能である。あるセキュリティ事象について、端緒となったセキュリティ情報と、有用性が判断されたセキュリティ情報とは、例えば、セキュリティに関連する企業、団体等が提供するレポート等に基づいて、比較的容易に準備することが可能だからである。
また、本実施形態においては、セキュリティ情報の静的な特徴を学習可能な第1モデルと、セキュリティ情報の取得過程(動的な特徴)を学習可能な第2モデルとを用いて、分析モデルが構成される。これにより、分析モデルは、セキュリティ情報に含まれるデータのパターンと、情報収集処理の過程とを学習することができる。
本実施形態におけるセキュリティ情報評価装置200によれば、例えば、新たなセキュリティ事象が発生し、当初は少数の情報しか得られない場合であっても、上記のように学習された分析モデルを用いることで、そのセキュリティ事象に関する有用な情報を収集することができる。また、セキュリティ情報評価装置200を用いることで、セキュリティ担当者等の知識及び経験等に依存することなく、有用なセキュリティ情報を収集することが可能となる。
また、本実施形態におけるセキュリティ情報評価装置200は、あるセキュリティ情報の評価結果を表す評価グラフを、ユーザに提示することができる。ユーザは、あるセキュリティ事象について、最終的に収集されたセキュリティ情報だけではなく、その収集過程を確認することで、収集されたセキュリティ情報の妥当性を検証することができる。
以上より、本実施形態によれば、あるセキュリティ事象に関する有用なセキュリティ情報を容易に取得することができる。
<第1実施形態の変形例>
以下、上記第1実施形態の変形例について説明する。本変形例の基本的な構成は上記第1実施形態と同様としてよく、情報収集部(クローラ)101、学習部102及び評価部201の機能の一部が拡張されている。
本実施形態におけるクローラ101は、更に、情報源105において、あるセキュリティ情報に関する情報収集処理を実行した際、その処理に要したコストを表す値(コスト値)を返すよう構成される。
情報源105に関するコスト値は、例えば、情報源105における情報収集処理に要する費用(有償又は無償)、情報収集処理に要する時間、情報収集処理に要する処理負荷、等に応じて適宜定められる。また、コスト値は、情報源105に固有の事情(例えば、情報収集処理を実行可能な回数、ある情報源105の使用頻度、情報源105との間の通信量等)に応じて定められてもよい。
複数の情報源105から類似した情報を取得可能である場合、一般的には、コスト値が小さい情報源を選択することが望ましいと考えられる。また、有用なセキュリティ情報を取得するためには、セキュリティ事象に関する分析(情報収集)の段階に応じた適切なコスト値の情報源105を選択することが望ましいと考えられる。例えば、分析の初期段階では、比較的コスト値が小さい情報源105が選択される一方、分析が実行された段階では、コスト値が高くても有用性が大きい情報を得られる可能性がある情報源105(例えば、有償サービス等)が選択されてもよい。
本変形例においては、クローラ101が出力するコスト値が、分析モデルの学習に反映される。これにより、本変形例における分析モデルは、コスト値も考慮して、各クローラ101の重みを表す値を算出することが可能である。
具体的な態様の一つとして、本実施形態における学習部102は、あるクローラ101の選択及び情報収集処理に関する報酬を算出する際(図8AにおけるステップS806)、クローラ101が返すコスト値を反映した値を算出する。学習部102は、例えば、クローラ101が返すコスト値に応じて、報酬を割り引いてもよい。学習部102は、例えば、コスト値が大きいほど、報酬が小さくなるように、報酬を割り引いてもよい。具体的な報酬の算出方法は特に限定されず、適宜選択してよい。例えば、学習部102は、コスト値を特定の値域に正規化し、正規化したコスト値を、上記ステップS806において算出した報酬値から減算してもよい。
上記したように、学習部102は、ある確率(”ε”)でランダムにクローラ101を選択するよう構成される場合がある。この場合、コスト値は比較的大きいものの、有用性が大きい情報を取得可能な(即ち、報酬が大きい)クローラ101がランダムに選択される可能性がある。これにより、学習部102は、例えば、ある状態において、比較的コスト値が大きいクローラ101に対して比較的大きな重みを算出するように、分析モデルを学習することができる。
本変形例における学習部102は、上記説明した強化学習の枠組みにおいて、コスト値を反映した報酬を用いて、分析モデルに関する学習処理を実行する。これにより、本変形例における分析モデルは、クローラ101について、情報取得処理に要するコスト(情報源105のコスト)を考慮して、重みを表す値を算出することが可能である。
また、本変形例における評価部201は、上記のように学習された分析モデルを用いることで、あるセキュリティ事象に関するセキュリティ情報を収集する際、コストを考慮してクローラ101を選択することができる。これにより、本変形例によれば、あるセキュリティ事象に関する有用なセキュリティ情報を、適正なコストで収集可能である。
<第2実施形態>
以下、本開示に係る技術を実現可能な基本的な実施形態である第2実施形態について説明する。
図13は、セキュリティ情報分析装置1300の機能的な構成を例示するブロック図である。セキュリティ情報分析装置1300は、セキュリティ情報収集部1301と、学習部1302とを含む。
セキュリティ情報収集部1301は、あるセキュリティ事象に関する情報を表すセキュリティ情報を、情報提供元から取得するよう構成される。セキュリティ情報分析装置1300は、1以上のセキュリティ情報収集部1301を含んでもよい。セキュリティ情報収集部1301は、例えば、上記第1実施形態におけるクローラ101と同様の機能を実現するよう構成されてもよい。
学習部1302は、セキュリティ事象に関するセキュリティ情報を入力として受けつけ、受けつけたセキュリティ情報に応じて1以上のセキュリティ情報収集部1301に関する重みを算出する分析モデルを作成するよう構成される。
学習部1302は、あるセキュリティ事象について予め収集された複数のセキュリティ情報を含む訓練データを用いて、ある1つの訓練データに含まれるセキュリティ情報に応じて、その訓練データに含まれる他のセキュリティ情報を情報提供元から取得することができるセキュリティ情報収集部1301の重みが大きくなるように、分析モデルを学習する。このような学習により、ある訓練データに含まれるセキュリティ情報について、同じ訓練データに含まれる他のセキュリティ情報を選択可能なセキュリティ情報収集部1301が選択されやすくなる。学習部1302は、例えば、上記第1実施形態における学習部102と同様の機能を実現するよう構成されてもよい。また、分析モデルは、上記第1実施形態における分析モデルと同様に構成されてもよい。
上記のような構成を有するセキュリティ情報分析装置1300は、セキュリティ情報分析装置100の基本的な実施形態であるとも考えられる。また、上記のように構成されたセキュリティ情報分析装置1300を使用することで、本開示に係るセキュリティ情報の分析方法を実行可能である。
例えば、訓練データが、あるセキュリティ事象について有用であると判定されたセキュリティ情報を含む場合を想定する。この場合、そのような訓練データにより学習された分析モデルを用いることで、例えば、あるセキュリティ事象に関する端緒となる情報から、そのセキュリティ事象に関する有用な情報を取得可能なセキュリティ情報収集部1301を選択することができると考えられる。よって、セキュリティ情報分析装置1300を用いることで、あるセキュリティ事象に関する有用なセキュリティ情報を容易に取得することができる。
図14は、セキュリティ情報評価装置1400の機能的な構成を例示するブロック図である。セキュリティ情報評価装置1400は、セキュリティ情報収集部1401と、評価部1402と、評価結果提供部1403とを含む。
セキュリティ情報収集部1401は、あるセキュリティ事象に関する情報を表すセキュリティ情報を、セキュリティ情報を提供可能な情報提供元から取得するよう構成される。セキュリティ情報収集部1401は、例えば、上記第1実施形態におけるクローラ101と同様の機能を実現するよう構成されてもよい。
評価部1402は、セキュリティ事象に関するセキュリティ情報を入力として受けつけるよう構成される。評価部1402は、入力として受けつけたセキュリティ情報に応じて1以上のセキュリティ情報収集部1401に関する重みを算出する分析モデルを用いて、以下の処理を実行するよう構成される。
即ち、評価部1402は、あるセキュリティ情報を分析モデルに入力することで算出された重みに応じてセキュリティ情報収集部1401を選択する処理と、選択されたセキュリティ情報収集部1401を用いて他のセキュリティ情報を取得する処理と、を繰り返し実行するよう構成される。これにより、評価部1402は、あるセキュリティ情報に関する他のセキュリティ情報を収集することができる。
評価結果提供部1403は、あるセキュリティ情報について評価部1402により収集された他のセキュリティ情報を含む評価結果を生成するよう構成される。また評価結果提供部1403は、あるセキュリティ情報から他のセキュリティ情報を収集する過程を表す情報を含む評価結果を生成するよう構成されてもよい。評価結果は、例えば、上記第1実施形態において例示した評価グラフとして表されてもよい。
例えば、あるセキュリティ事象について有用であると判定されたセキュリティ情報を含む訓練データを用いて、分析モデルが学習されている場合を想定する。この場合、その分析モデルを用いることで、評価部1402は、例えば、訓練データとは異なるセキュリティ事象に関する端緒となる情報から、そのセキュリティ事象に関する有用な情報を取得可能なセキュリティ情報収集部1401を選択することができると考えられる。よって、セキュリティ情報評価装置1400を用いることで、あるセキュリティ事象に関する有用なセキュリティ情報を容易に取得することができる。
<ハードウェア及びソフトウェア・プログラム(コンピュータ・プログラム)の構成>
以下、上記説明した各実施形態及び変形例を実現可能なハードウェア構成について説明する。
上記各実施形態において説明した各装置及びシステムは、1つ又は複数の専用のハードウェア装置により構成されてもよい。その場合、上記各図に示した各構成要素は、一部又は全部を統合したハードウェア(処理ロジックを実装した集積回路等)として実現してもよい。
例えば、各装置及びシステムをハードウェアにより実現する場合、各装置及びシステムの構成要素は、それぞれの機能を提供可能な集積回路(例えば、SoC(System on a Chip)等)として実装されてもよい。この場合、例えば、各装置及びシステムの構成要素が有するデータは、SoCとして統合されたRAM(Random Access Memory)領域やフラッシュメモリ領域に記憶されてもよい。
また、この場合、各装置及びシステムの構成要素を接続する通信回線としては、周知の通信バスを含む通信ネットワークを採用してもよい。また、各構成要素を接続する通信回線は、それぞれの構成要素間をピアツーピアで接続してもよい。各装置及びシステムを複数のハードウェア装置により構成する場合、それぞれのハードウェア装置の間は、適切な通信方法(有線、無線、またはそれらの組み合わせ)により通信可能に接続されていてもよい。
例えば、各装置及びシステムは、情報収集部(クローラ)101、1301、1401の機能を実現する処理回路(processing circuitry)及び通信回路、学習部102、1302の機能を実現する処理回路、分析モデル記憶部103を実現する記憶回路、及び、訓練データ供給部104の機能を実現する処理回路、等用いて実現されてよい。また、各装置及びシステムは、評価部201、1402の機能を実現する処理回路、セキュリティ情報供給部202の機能を実現可能な処理回路、及び、評価結果提供部203、1403の機能を実現可能な処理回路、等を用いて実現されてよい。なお、上記回路構成は一つの具体的態様であり、実装においては、様々なバリエーションが想定される。
また、上述した各装置及びシステムは、図15に例示するような汎用のハードウェア装置1500と、ハードウェア装置1500によって実行される各種ソフトウェア・プログラム(コンピュータ・プログラム)とによって構成されてもよい。この場合、各装置及びシステムは、1以上の適切な数のハードウェア装置1500及びソフトウェア・プログラムにより構成されてもよい。
図15における演算装置1501(プロセッサ)は、汎用のCPU(中央処理装置:Central Processing Unit)やマイクロプロセッサ等の演算処理装置である。演算装置1501は、例えば後述する不揮発性記憶装置1503に記憶された各種ソフトウェア・プログラムをメモリ1502に読み出し、そのソフトウェア・プログラムに従って処理を実行してもよい。この場合、上記各実施形態における各装置及びシステムの構成要素は、例えば、演算装置1501により実行されるソフトウェア・プログラムとして実現可能である。
例えば、各装置及びシステムは、情報収集部(クローラ)101、1301、1401の機能を実現するプログラム、学習部102、1302の機能を実現するプログラム、分析モデル記憶部103を実現するプログラム、及び、訓練データ供給部104の機能を実現するプログラム、等用いて実現されてよい。また、各装置及びシステムは、評価部201、1402の機能を実現するプログラム、セキュリティ情報供給部202の機能を実現可能なプログラム、及び、評価結果提供部203、1403の機能を実現可能なプログラム、等を用いて実現されてよい。なお、上記プログラム構成は一つの具体的態様であり、実装においては、様々なバリエーションが想定される。
メモリ1502は、演算装置1501から参照可能な、RAM等のメモリデバイスであり、ソフトウェア・プログラムや各種データ等を記憶する。なお、メモリ1502は、揮発性のメモリデバイスであってもよい。
不揮発性記憶装置1503は、例えば磁気ディスクドライブや、フラッシュメモリによる半導体記憶装置のような、不揮発性の記憶装置である。不揮発性記憶装置1503は、各種ソフトウェア・プログラムやデータ等を記憶可能である。上記各装置及びシステムにおいて、分析モデル記憶部103は、不揮発性記憶装置1503に分析モデルを記憶してもよい。
ドライブ装置1504は、例えば、後述する記録媒体1505に対するデータの読み込みや書き込みを処理する装置である。上記各装置及びシステムにおける訓練データ供給部104は、例えば、ドライブ装置1504を介して、後述する記録媒体1505に記憶された訓練データを読み込んでもよい。
記録媒体1505は、例えば光ディスク、光磁気ディスク、半導体フラッシュメモリ等、データを記録可能な記録媒体である。本開示において、記録媒体の種類及び記録方法(フォーマット)は、特に限定されず、適宜選択可能である。
ネットワークインタフェース1506は、通信ネットワークに接続するインタフェース装置であり、例えば有線及び無線のLAN(Local Area Network)接続用インタフェース装置等を採用してもよい。例えば、上記各装置及びシステムにおける情報収集部101(クローラ101)は、ネットワークインタフェース1506を介して、情報源105に通信可能に接続されてもよい。
入出力インタフェース1507は、外部装置との間の入出力を制御する装置である。外部装置は、例えば、ユーザからの入力を受けつけ可能な入力機器(例えば、キーボード、マウス、タッチパネル等)であってもよい。また、外部装置は、例えばユーザに対して各種出力を提示可能出力機器(例えば、モニタ画面、タッチパネル等)であってもよい。例えば、上記各装置及びシステムにおけるセキュリティ情報供給部202は、入出力インタフェース1507を介して、ユーザから新たなセキュリティ情報を受けつけてもよい。また、例えば、上記各装置及びシステムにおける評価結果提供部203は、入出力インタフェース1507を介して、ユーザに評価結果を提供してもよい。
上述した各実施形態を例に説明した本発明における各装置及びシステムは、例えば、図15に例示するハードウェア装置1500に対して、上記各実施形態において説明した機能を実現可能なソフトウェア・プログラムを供給することにより、実現されてもよい。より具体的には、例えば、ハードウェア装置1500に対して供給されたソフトウェア・プログラムを、演算装置1501が実行することによって、本発明が実現されてもよい。この場合、ハードウェア装置1500で稼働しているオペレーティングシステムや、データベース管理ソフト、ネットワークソフト等のミドルウェアなどが各処理の一部を実行してもよい。
上述した各実施形態において、上記各図(例えば、図1~図4、図13、図14)に示した各部は、上述したハードウェアにより実行されるソフトウェア・プログラムの機能(処理)単位である、ソフトウェアモジュールとして実現することができる。ただし、これらの図面に示した各ソフトウェアモジュールの区分けは、説明の便宜上の構成であり、実装に際しては、様々な構成が想定され得る。
例えば、上記各部をソフトウェアモジュールとして実現する場合、これらのソフトウェアモジュールは、不揮発性記憶装置1503に記憶されてもよい。そして、演算装置1501が、それぞれの処理を実行する際に、これらのソフトウェアモジュールをメモリ1502に読み出してもよい。
また、これらのソフトウェアモジュールは、共有メモリやプロセス間通信等の適宜の方法により、相互に各種データを伝達できるように構成されてもよい。このような構成により、これらのソフトウェアモジュールは、相互に通信可能に接続される。
更に、上記各ソフトウェア・プログラムは、記録媒体1505に記録されてもよい。この場合、上記各ソフトウェア・プログラムは、上記通信装置等の出荷段階、あるいは運用段階等において、適宜ドライブ装置1504を通じて不揮発性記憶装置1503に格納されるよう構成されてもよい。
なお、上記の場合において、上記各装置及びシステムへの各種ソフトウェア・プログラムの供給方法は、出荷前の製造段階、あるいは出荷後のメンテナンス段階等において、適当な治具(ツール)を利用してハードウェア装置1500内にインストールする方法を採用してもよい。また、各種ソフトウェア・プログラムの供給方法は、インターネット等の通信回線を介して外部からダウンロードする方法等のように、現在では一般的な手順を採用してもよい。
そして、このような場合において、本発明は、そのようなソフトウェア・プログラムを構成するコード、あるいはコードが記録されたところの、コンピュータ読み取り可能な記録媒体によって構成されると捉えることができる。この場合、記録媒体は、ハードウェア装置1500と独立した媒体に限らず、LANやインターネットなどにより伝送されたソフトウェア・プログラムをダウンロードして記憶又は一時記憶した記憶媒体を含む。
また、上述した各装置及びシステム、あるいは、当該各装置及びシステムの構成要素は、図15に例示するハードウェア装置1500を仮想化した仮想化環境と、仮想化環境において実行される各種ソフトウェア・プログラム(コンピュータ・プログラム)とによって構成されてもよい。この場合、図15に例示するハードウェア装置1500の構成要素は、仮想化環境における仮想デバイスとして提供される。なお、この場合も、図15に例示するハードウェア装置1500を物理的な装置として構成した場合と同様の構成にて、本発明を実現可能である。
以上、本発明を、上述した模範的な実施形態に適用した例として説明した。しかしながら、本発明の技術的範囲は、上述した各実施形態に記載した範囲には限定されない。当業者には、上記したような実施形態に対して多様な変更又は改良を加えることが可能であることは明らかである。そのような場合、変更又は改良を加えた新たな実施形態も、本発明の技術的範囲に含まれ得る。更に、上述した各実施形態、あるいは、係る変更又は改良を加えた新たな実施形態を組み合わせた実施形態も、本発明の技術的範囲に含まれ得る。そしてこのことは、請求の範囲に記載した事項から明らかである。
この出願は、2017年1月30日に出願された日本出願特願2017-013783を基礎とする優先権を主張し、その開示の全てをここに取り込む。