フィッシングやスパムのようなメールの脅威を検知する、一番簡単な方法とは?テクニカルヘッダーやその他の間接的なマーカーから判断することは可能ですが、メール本文を忘れるわけにはいきません。メールの文面こそ最初に解析すべき、との意見もあるでしょう。結局のところ、メール受信者の心に訴え行動を操るのに使われるのは、メールの本文ですから。ところが、話はそれほど単純ではないのです。過去にはシグネチャー分析で対処できましたが、今では機械学習アルゴリズムを使って文章を解析する必要があります。メールを正しく分類できるように機械学習モデルを訓練するとなると、膨大な量のメールを学習させる必要がありますが、プライバシー上の理由から、必ずしも現実的ではありません。この問題に対する解決策を、当社は見出しました。
シグネチャー解析がもはや有効でない理由
10年前、メール本文のみに基づいて迷惑メールを大量に検知するのは比較的容易でした。同じテンプレートが使い回されていたので、スパムメール(そしてフィッシングメール)の内容はどれもほぼ同じようなものだったのです。翻って現在では、メール送信活動の効率を上げようとサイバー犯罪者は常に工夫を凝らし、さまざまな餌を仕掛けています。ビデオゲームの新タイトル、新しいテレビシリーズ、スマートフォンの新機種といった情報をネタに使ってみたり、政治ニュースや緊急事態までも利用したり(例えばCOVID-19関連のフィッシングやスパムは多数あります)。このように話題が多岐にわたるため、検知のプロセスは複雑化しています。さらに、メールフィルターをかいくぐることを目的に、同時期に大量送信するメールの本文にバリエーションを持たせてある場合もあります。
シグネチャーベースの検知手段は、当然ながら現在も使用されていますが、検知できるか否かは、基本的に、迷惑メールまたは有害メールとして分類済みのテキストに遭遇するかどうかにかかっています。本文に変更を加えられてしまうと検知できないため、先手を打って対応することはできません。この問題に対処する唯一の方法は、機械学習を用いることです。
学習に伴う問題
近年、機械学習の手法は多くの問題の解決において成果を示しています。大量のデータを解析して学習することで、機械学習モデルは決定を下し、流れていく情報の中に重要な共通の特徴を見つけることができるようになります。当社では、メールのテクニカルヘッダーを使って学習させたニューラルネットワークをDMARCと併用して、メールに潜む脅威を検知しています。メール本文についても同じことができないものでしょうか?
先に述べたとおり、機械学習モデルには膨大な量のデータが必要です。そこで大量のメールを学習させるのですが、悪意あるメールだけでなく、正当なメールも学習させる必要があります。これが正当なメールなのだという情報がないと、攻撃と正当なメールとを区別できません。当社では、あらゆる種類の迷惑メール(シグネチャーの作成にも使います)を捕まえるため、メール用トラップを多数用意していますが、学習用に正当なメールを入手する方がずっと面倒です。
一般的には、サーバー上でデータを収集して集中的に学習します。ところが、メール本文となると別の問題が出てきます。メールにはプライバシーに関わる情報が含まれる可能性があるため、そのままの形で保存・処理するわけにはいきません。では、どうしたら十分な量の正当なメールを入手できるのでしょうか?
連合学習
当社はこの問題を、連合学習の手法で解決します。正当なメールを集約する必要をなくし、分散した形で機械学習モデルに学習させるのです。学習はクライアントのメールサーバー上で直接行い、中央サーバーはメール本文ではなく機械学習モデルが学習したウェイト(重み)のみを受信します。中央サーバーでは、アルゴリズムがそのデータを学習後のモデルと組み合わせます。これを当社からクライアントのソリューションへと送り返し、機械学習モデルは再びメールストリームの解析を始めます。
以上は仕組みの大まかなところです。学習後のモデルは、本物のメールを扱う前に、追加の学習を数回行います。つまり、メールサーバーでは、学習モードのモデルと本格稼働モードのモデルの2つが同時に動作します。中央サーバーとの間を数回行き来した後に、追加学習済みのモデルが本稼動モデルに取って代わります。
モデルの重みから特定のメールの文面を復元することは不可能です。こうして、処理中のプライバシーは確保されます。それでいて、本物のメールで学習させることで検知モデルの品質を格段に向上させることができます。
この手法は現在スパムメールにてテスト段階にあり、良好な結果を示しています。いずれはフィッシングやBEC(ビジネスメール詐欺)といった脅威の検知も助けるようになる予定です。