何らかの基準で分類されたデータセットに含まれる数値を予想するとき、それが馴染みのあるデータであれば、各数値の大きさについてだいたいの見当がつくでしょう。たとえば都市の面積であれば、25~250平方キロメートルくらいが一般的です。ここでもし、「自分が住んでいる都市の面積は2万平方キロメートルだ」と誰かが言ったら、それは嘘だと思うはずです。実際、それは偽の証言です。同様に、大規模なデータセットに含まれる各数値の最上位の桁は、そのデータセットが正当に生成されたものであるか人為的に操作されたものであるかを判断する1つの材料になります。
このブログでは、Splunkでベンフォードの法則を使って、特定のデータセットに含まれる数値の最上位の桁の期待分布を求め、それをベースラインとして不正行為を検出する方法をご紹介します。この検出手法は実際によく使われています。
Splunkで不正検出の開発に携わる私たちは、同僚のJeffrey Walzerの指摘で、ベンフォードの法則とそれを利用した金融サービスでの不正検出に関するユースケースの有用性に気づきました。
ベンフォードの法則について簡単に説明すると、川の長さ(任意の測定単位を使用)や野球の成績など、自然界に存在する大規模データセットに含まれる各数値の最上位の桁の分布は一様ではないという法則です。1から9までの数字の出現確率はいずれも11.1% (1/9ずつ)のように思えますが、実際にはそうではありません。最上位の桁が1、2、または3である確率は、8または9である確率よりも高いのです。100年ほど前にフランク・ベンフォードがこの法則を発見し、何種類かの統計を使ってその正しさを証明しました。この法則は10進法以外の数値にも適用できます。
また、この法則を使って、データセットに含まれる各数値の2桁目や3桁目を予測することもできます。この法則に従うと、最上位の桁の期待分布は次のようになります(Wikipediaの記事から引用)。
最上位の桁の数字 | ベンフォードの法則に従った期待分布 |
---|---|
1 | 30.1% |
2 | 17.6% |
3 | 12.5% |
4 | 9.7% |
5 | 7.9% |
6 | 6.7% |
7 | 5.8% |
8 | 5.1% |
9 | 4.6% |
ベンフォードの法則は、金融犯罪の兆候を検出するために役立ちます。正常時の取引で最上位の桁の自然分布がこの法則に従うのであれば、分布がそれとは大きくかけ離れていた場合、数値が人為的に操作された可能性があると仮定できるためです。
たとえば米国では、1万ドルを超える取引について必ず金融機関がIRSに報告する必要があります。ここで、同じ銀行を利用する複数の人が8,000~9,999ドルの取引を繰り返し行っていた場合、IRSに報告されるのを避けようとしている可能性があります。これらの取引額の最上位の桁が8や9に大きく偏り、その銀行の母集団の正常な分布と異なっている場合、人為的に操作されていると疑われます。ただし、これらの取引を行っている人々が積立をしていて、当該の範囲の金額を他の金融機関に定期的に振り込んでいる場合もあるため、誤検知である可能性もあります。ベンフォードの法則が物理法則ではないのはそのためです。この法則はあくまで、期待分布に基づく確率を示すものです。
現行のデータにSplunkコマンドを適用する前に、過去数カ月、できれば数年間分のデータを使って、取引の最上位の桁に関する分布パターンのベースラインを求めます。
Splunkのevalコマンドを使って任意の文字列の最初の文字を取得し、topコマンドを使ってそのフィールドでの出現確率を算出できます。convertコマンドを使えば取得した文字を数値に変換できますが、今回の目的で変換する必要は特にありません。サンプルのデータセットを使ってこの方法を試した結果を以下に示します。
ご覧のとおり、この分布では大きい数字の出現確率が高いだけでなく、1の場合の結果がまったくありません。サンプルサイズが小さいのもたしかですが、それより重要なのは、このデータセットが間違いなく人為的に操作されている点です。このデータセットは、Splunkを使って数字の出現確率を求める方法を示すために私が作成したものなので、もちろん不正行為によるものではありませんが、いずれにしても出現確率を簡単に追跡できることがおわかりいただけるでしょう。
このATM取引の例では、小さい数字の出現確率が高く、ベンフォードの法則に近いことがわかります。ここで使用したデータセットは人為的な決済のサンプルよりもサイズがやや大きく、数値のランダムさは実際のデータにより近くなっています。
以上のことから、ベンフォードの法則を信じるかどうかに関係なく(この法則は数学的に証明されているため、常に前提として考慮するのが妥当でしょう)、Splunkで取引の分布を定期的に調べて数字の出現確率を割り出せば、予期される行動のベースラインを確立できることをおわかりいただけたと思います。出現確率がベースラインから急に離れ、その明確な理由が見当たらない場合は、不正行為が発生して、データに何らかの人為的操作が行われている可能性があります。
ベンフォードの法則と独自のベースラインのどちらを利用する場合でも、リスクスコアに反映させれば不正検出の忠実度が向上します。
このブログはこちらの英語ブログの翻訳、中里 美奈子によるレビューです。
Splunkプラットフォームは、データを行動へとつなげる際に立ちはだかる障壁を取り除いて、オブザーバビリティチーム、IT運用チーム、セキュリティチームの能力を引き出し、組織のセキュリティ、レジリエンス(回復力)、イノベーションを強化します。
Splunkは、2003年に設立され、世界の21の地域で事業を展開し、7,500人以上の従業員が働くグローバル企業です。取得した特許数は1,020を超え、あらゆる環境間でデータを共有できるオープンで拡張性の高いプラットフォームを提供しています。Splunkプラットフォームを使用すれば、組織内のすべてのサービス間通信やビジネスプロセスをエンドツーエンドで可視化し、コンテキストに基づいて状況を把握できます。Splunkなら、強力なデータ基盤の構築が可能です。