データサイエンティストの秋元です。
今回は通信データを時系列データとして扱う場合のGNN (Graph Neural Network) について紹介します。
異常通信検知×GNNの現在地
異常通信検知はIP通信のネットワークを対象として,サイバー攻撃や機器の故障などによる通信データの異常を検知するタスクです。
ほぼ生の通信データであるPCAPやある程度情報を集約したIPFIXといった形式の通信の系列データを入力として,通信量の不自然な増減や想定外のホストからの通信などを検出します。
異常通信検知の領域では、通信ネットワークに対する侵入検知やBotの検出に関してGNNが用いられてきました[1,2,3]。複数の通信機器で構成される通信ネットワークのアーキテクチャはノードとエッジの集合で定義されるグラフと非常に相性が良く,また通信に関する統計ベースの手法がメインだった従来の手法に比べて多くの情報を考慮できることから、ここ数年で多数の研究が発表されています。
ARISE analyticsでもKDDI総合研究所やトヨタ自動車と共同で異常通信検知×GNNに着目した研究開発を実施しており、国内の学会ではSCIS、国際会議ではCOMPSACに論文を発表しています[4,5]。
ARISEが取り組んでいる異常通信検知ではIoT関連の独特な通信データを対象にしており,ホストをノード、ホスト間の通信をエッジとするような既存研究の手法ではうまく表現できない通信特性をいかに分析するかが課題でした。そこで,Okui et al. (2023)[5]では、ネットワークアーキテクチャをそのままグラフに落とすのではなく、機能的な通信順序をグラフとして表現する新しいグラフ構成手法を提案しました。
IoT機器はスマホやPC等の汎用的なコンピュータとは異なり,特定の用途に特化したデバイスが多いため、通信パターンがある程度決まっているケースがあります。例えば,通信が必ず認証から始まり、特定のコマンドを取得した後動作を実行し動作結果を返却するなど,通信パターンは特定の機能に関する処理の系列で表現することが可能です。
Okui et al. (2023)[5]で提案した手法では、このような機能遷移をグラフとして表現し,サイバー攻撃や機器の故障によってこのグラフの形状が崩れた場合を異常として検出する手法を提案しています。
時系列を扱うための課題
GNNを用いた異常通信検知の多くは、特定の期間の通信を対象とした時間方向の変化を考慮しない研究です。グラフでは静的グラフと呼ばれます。Okui et al. (2023)[5]で提案したグラフ構成手法も静的グラフを対象としたものです。
しかし、GNN×異常通信検知のモデルをシステム化し社会実装しようと考えると,時間とともに変化するデータの取り扱いが必須になります。具体的には2つの課題に対応する必要があります。
コンセプトドリフトへの対応
一つ目は、コンセプトドリフトと呼ばれるデータの特性変化への対応です。IoT通信は特定の機能に特化していることが多いため、通信が発生する時間帯と発生しない時間帯の通信量の差が非常に大きくなります。
検知モデルを構築する場合には大量のデータが必要になるため、通信が多く発生している時間帯を切り取って学習・評価データとすることが多いのですが、現実では常に大量の通信が発生しているわけではないため,特定の状態に過学習したモデルとなってしまいます。
このように、データが発生する環境や前提条件が変わることによってデータの背後にある分布が変わってしまうことをコンセプトドリフトと呼びますが、GNN×異常通信検知のモデルを社会実装するためにはこの課題をクリアする必要があります。
グラフの密度の変動への対応
コンセプトドリフトとも関連しますが、通信が大量に発生している期間とそうでない期間をそれぞれグラフに変換すると、グラフの形状が非常に異なることがわかります。ここでは、グラフに含まれるノード・エッジの多寡をグラフの密度と呼びますが、通信が大量に発生している期間はグラフの密度が非常に高く、一方通信がほぼ発生しない期間ではグラフの密度が極端に低くなります。
GNNは適度な密度のグラフに対して威力を発揮するので、密度が高すぎても低すぎてもモデルの構築が困難になります。
したがって、こちらの課題では何らかの方法でGNNの入力となるグラフの密度を平準化することが求められます。
2つのDynamic Graph
解決手段を紹介する前に、動的なグラフ(Dynamic Graph)について紹介しておきます。
今回は、上記の2つの課題に対してDynamic Graphを導入するのですが、そのDynamic Graphには2つの種類が存在します。
Discrete Dynamic Graph
一つ目は、Discrete Graphと呼ばれる種類のDyamic Graphです。
日本語に訳すと離散的なグラフとなりますが、このグラフはDynamic Graphといわれて多くの人がイメージする形式ではないかと思います。Discrete Graphでは、Time Windowと呼ばれる特定の時間間隔ごとに通信データを区切って、それぞれのTime Windowをグラフに変換します。Timestampごとにグラフが1枚できるイメージですね。
したがって、全体としては、複数枚のグラフが時間順に並んでいるような形式のデータを構成します。
後述するContinuous Graphと比べた場合、時間軸上に離散的にグラフが並んでいるイメージからDiscrete Graphと呼ばれているのだと思われます。
Continuous Dynamic Graph
二つ目は、Continuous Graphと呼ばれます。
こちらは連続的なグラフという意味ですが、Discrete GraphのようにTime Windowごとにグラフを作成するのではなく、グラフの構成要素であるノードやエッジにTimestampを持たせます。
具体的に説明すると、通信が発生した順に新しくノードやエッジが作成されたり削除されたりするわけなのですが、グラフに対してノードやエッジが作成されたタイミングでグラフの要素にその時点のTimestampを付与します。
そのため、データ全体としてグラフは常に1枚で、グラフの構成要素がそれぞれTimestampを持ち時間とともに要素の数が増減します。
このように、Discrete Graphと比べて時間軸上にグラフが並ぶわけではなく、時間とともに連続的に(数学的な意味ではありませんが)グラフが変化する様子から Continuous Graphと呼ばれていると思われます。
解決手段
Akimoto et al. (2024)では、Continuous Graphを用いて前述の課題に対応する手法を提案しました。
具体的には、次の図に示す通りIPFIXレコードが到着するたびにレコードをノードに変換してグラフに追加していきいます。ノード、エッジにはTimestampがつくので、構築されたグラフはContinuous Graphとなります。
ただし、現在提案されているGNNモデルのほとんどはContinuous Graphをそのまま受け付けるようにはできておらず、Continuous Graphをグラフの列に変換する必要があります。
そこで、構築したContinuous Graphからスナップショットを切り出してグラフの列に変換することを考えます。
前述の課題を解決するために、各グラフに含まれるノード・エッジの数が同数になるようにしたいので、Continuous GraphにおいてTimestampを並べたときに、1枚のグラフに含まれるTimestampの数=グラフの要素数を固定することを考えました。
このTimestampの数をWindowと呼ぶことにすると、Window=3であれば1枚のスナップショットのグラフにはグラフの要素が3つ前後含まれることになります。
これでContinuous GraphをGNNモデルに入力することができるようになりました。
さて、この手法で前述の課題が解決されているのかどうかですが、グラフの密度の問題に関しては、1枚のスナップショットに含まれるグラフの要素数を固定することによりクリアされています。
コンセプトドリフトについては、今回時間枠ではなくWindowを固定していることから、通信量が少ない期間だけを切り取ったグラフは生成されにくくなります。また、通信量が多い期間であっても少ない期間であっても生成されるグラフの密度は同じ程度になるため、GNNとしては学習しやすくなっています。
ただし、グラフの密度が同じであることと、背後にあるデータの分布が同じであることはイコールではないので、コンセプトドリフトに関しては課題がある程度緩和されただけであり根本的な解決にはなっていません。
今回の手法でIoT通信のデータセットによる評価実験を実施したところ、Okui et al. (2023)に比べて検知精度が向上することがわかりました。まだまだ実用化に耐えられる精度ではありませんが、通信データを時系列として扱うための一歩にはなったと考えています。
残課題
今回の提案手法では、前述のとおりコンセプトドリフトに関しては問題を緩和したにとどまり、根本的な解決には至りませんでした。
また、今回はTimestampの数を固定している関係で、1枚のスナップショットに含まれるデータの期間が同じではありません。つまり、あるスナップショットのグラフは1秒間のデータを表していることもあれば1時間分のデータが含まれていることもあるということです.
ただ、これは見方を変えるとContinuous Graphをスナップショットの列に変換するにあたって、時間枠を固定するかグラフの密度を固定するかによって生成されるグラフの列の特性が変わるということを意味しています。GNNにおけるContinuous Graphの扱いに関してはまだまだ研究途上であり、このような時間枠とグラフの密度のトレードオフという興味深い現象も起こりうるようでした。
参考文献
[1] T. Bilot, N. E. Madhoun, K. A. Agha and A. Zouaoui, “Graph Neural Networks for Intrusion Detection: A Survey,” in IEEE Access, vol. 11, pp. 49114-49139, 2023
[2] F. Alizadeh and M. Khansari, “An Analysis of Botnet Detection Using Graph Neural Network,” 2023 13th International Conference on Computer and Knowledge Engineering (ICCKE), Mashhad, Iran, Islamic Republic of, 2023, pp. 491-495
[3] Alomari, D., Anis, F., Alabdullatif, M., & Aljamaan, H. (2023, June). A survey on botnets attack detection utilizing machine and deep learning models. In Proceedings of the 27th International Conference on Evaluation and Assessment in Software Engineering (pp. 493-498).
[4] Okui, N., Akimoto, Y., Kubota, A., & Yoshida, T. (2023). Graph Neural Networkを用いた異常通信検知におけるフローデータのまとまりを考慮したグラフ構成手法. SCIS.
[5] N. Okui, Y. Akimoto, A. Kubota and T. Yoshida, “A Graph Construction Method for Anomalous Traffic Detection with Graph Neural Networks Using Sets of Flow Data,” COMPSAC, 2023, pp. 1017-1018
[6] Akimoto, Y., Okui, N., Kubota, A., & Yoshida, T. (2024). フローデータの機能遷移に基づく Continuous Graph を用いた 異常通信検知手法. 人工知能学会全国大会.