コラム「どこかおかしいよ、データマイニング!」麻生川 静男


【第18回】セキュリティとデータマイニングについて(その三:侵入検知)  


【第28回】データマイニング・夜話
(その十:子供の頃わくわくした事)


コラムTOPへ戻る

コンピュータシステムのセキュリティではシステムに不法侵入し、情報を盗んだり、システムを破壊したりするのを防止するためのシステム、つまり侵入検知システムが重要です。

侵入検知システムは、資源(ネットワーク、CPU、HD、メモリーなど)へのアクセスログをチェックします。最近のコンピュータには必ずと言って良いほどアクセスログを蓄積する仕組みが埋め込まれているはずです。従って侵入検知というのはこのアクセスログをどのように解析して侵入を予防するか、という方法論の話になります。

さて、侵入検知システムの歴史は結構古く、すでに20年前には根本的な仕組みが提案されています。特に次の論文はそのベースを確立した、非常に頻繁に引用される重要文献です。
  『An Intrusion-Detection Model』著者はDorothy Denning

今回はこの歴史的に重要な論文に沿って侵入検知システムの概要を説明しましょう。

アクセスログの中のデータ項目としては次のような項目が基本情報として考えられます。

Subject(主体者) --誰がデータアクセス、あるいはプログラム起動をしたか?正常ユーザー、あるいは不正侵入者。

Action(操作) --主体者が目的物に対してどのような行為をしたか。データを作成、参照、改変、削除、あるいはプログラムの実行など。

Object(操作対象物) --システムが操作されたもの。ファイル、実行コマンド、デバイス、プリンター(印刷)

Exception-Condition(操作違反) --アクセス、書き込み、改変、実行権限がないのに、そういう操作をしたか?

Resource-Usage(リソースの消費量) --通常コンピュータ業界でリソースと言うとCPUのランタイム(利用時間)、ディスクやメモリーの使用量やデバイス(プリンターなど)の使用量のことを言います。

Time-Stamp(操作の実行時刻) --操作が行われた時刻を記録します。侵入検知システムの場合、実際にはミリ秒単位のアクセスログがないとまともな解析が出来ないでしょう。

このようなアクセスログの基礎データを加工して、二次的な情報を生成する必要があります。例えば、Time-Stampのデータから、あるコマンドを起動し終了するまでの経過時間を算出します。つまりあるコマンドが何時に起動されたと同時に実行に要した経過時間が意味を持つことが多いからです。

二次加工データ項目としては次のような項目が考えられます。

Event-Counter(事象の発生回数) --ある一定期間に同じ動作が発生した回数をカウントします。例えば、1時間に何回ログインしたとか、一回のログインセッションの間に何回あるコマンドを実行した
とか、パスワードエラーを何回したとか。

Interval-Timer(事象の時間間隔) --ある行為を繰り返した時の時間間隔。例えばログインを何秒置き、あるいは何時間置きにしたか。

Resourse Measure(資源の消費量) --どのぐらいリソースを消費したか。例えば一日に何ページをプリントしたか、あるいはあるプログラムの一回の実行でCPUをどのぐらい消費したか、このデータは前述のResource-Usage(リソースの消費量)のフィールドを参照して算出します。

このような加工情報をベースにして、侵入を検知する手法・モデルを考えて見ましょう。

Operational Model(運用基準のチェック) --システム運用において予め設定した基準値をオーバーした場合は異常と判断します。例えば短期間の間にログインエラーを一定回数以上繰り返すといったケースです。

Mean and Standard Deviation Model(平均値と標準偏差) --平均と標準偏差でチェックする方法です。統計では信頼区間という概念が存在します。正常値であればこの範囲の数字を取るはずだとい
うものです。例えば、血圧値の最高、最低などです。規定の範囲を超えた場合は異常とみなします。

Multivariate Model(多変量解析) --変数同士の関係をチェックします。概念自体は、上記の平均値と標準偏差のチェックをする方法と同じですが、多変量(2個以上の変数)の場合互いの変数の相関係数が関係してきます。それによって信頼区間が変化します。(例えばマハラノビス距離 Mahalanobis distance)

Markov Process Model(マルコフ過程モデル) --アクセスログファイルに記録されているプログラムの遷移状態をチェックします。ここでいうセッションの遷移とは、例えば、

ワードを開く==>文字を打つ==>ファイルを格納する

といった一連の動作を言います。ある状態から次の状態に遷移するのに、過去のログデータから統計的にはそれぞれ確率を計算することが出来ます。その状態があまりにもありえない(つまり、過去にそういった操作手順があまり記録されていない)ことばかりが続いていると異常と認める訳です。

Time Series Model(時系列変化) --ある事象が発生する順序やそれぞれの事象が発生する時間間隔をチェックします。

さて、これらの手法を使って正常か不正侵入かを判断できて、初めて正常アクセスおよび不正アクセスのプロファイルが蓄積できることになります。ここでいうプロファイルを蓄積するとは、それぞれ(正常・不正)のサンプルデータを蓄積することを言います。統計を使うにしろデータマイニングするにしろ、正常データと異常データのサンプルデータが数多く蓄積されている必要があります。

実際に異常データを集めるというのは、システムが誰かに不正侵入される(あるいは不正アクセスされる)必要があるのです。病気を治す薬を開発するためには実際にその病気にかかった患者がいないことには話にはならないのと同様です。

データ解析・データマイニングにおいて正常データと異常データのプロファイルが明らかに異なると思われるまで(統計用語ではこれを有意差がでるまで、と言います)サンプルデータを数多く集める必要があります。この反面ルールベースシステムでは、過去のデータを分析してアクセスパターンの特徴を法則(ルール化)にします。過去のAI(ルールベース)システムがそうであったように、実際の使用に耐えうるシステムを構築するためにはルールの数がかなり多くないといけません。大体1000〜10万件のルールがないと本物にはなりませんが、実行時間がかかりすぎて使い物にならないのがネックです。その上、次々と現れてくる、今までに考えもつかなかったような新手の侵入者には効果がありません。

さて、データマイニングの手法(例えばニューラルネットワーク)を使った侵入検知のシステムも方法論的に言えば、上記の統計モデルと大して異なりません。データ項目を決め、データの二次加工をし、正常データと異常データのプロファイルを収集し、それに基づいて判別モデルを作成する、という枠組みは変わりません。統計のモデルと異なり、遷移パターンをカテゴリー化して一つのデータ項目(指標)として使う、と言ったことも考えられます。

以上いろいろな手法を紹介しましたが、どの手法を採用すれば良いかという判断を下すときには次の諸点も考慮する必要があります。

Soundness of Approach(正答率の高さ) --侵入者を確実に捕捉できるだけでなく、間違った(False Positive)警報を出さないか、ということも実際の運用システムでは大切なことです。正常のユーザーがアクセスしているのに、侵入されたという警告を頻繁に出すような狼少年的なシステムはそのうち誰も相手にしてくれませんから。

Completeness of Approach(重大な不正侵入の検知) --単に全体の正答率が高いだけでなく、システム全体に重大な被害をもたらす侵入は確実に検知できないといけません。

Timeliness of Approach(検知のタイミング) --システムがたとえ侵入を検知できても、システムに損害が発生した後にやおら警報が出ても手遅れです。

Choice of Metrics, Statistical Models and Profiles(項目・モデルの選定) -- どのデータ項目を使うと最も高精度の検出が可能か?どのモデルがもっとも経済的か?つまり精度と手間(時間・金)のバランスの問題です。

System Design(全体システム構成) --不正侵入検知モデルをどのようにシステムに組み込むかという問題です。システム運用やシステム更新などにかかる物的、人的費用を勘案しないといけません。

Feedback(侵入検出から侵入防止へ) --侵入の警報を受け取ったら、その後どのように対処するか、という全体運用プランが出来ていますか?せっかく泥棒を見つけても捕まえないと意味がないですからね。

Social Implications(ユーザーメリット) --侵入検知システムの運用が会社にとって、またユーザーにメリットをもたらしますか?

侵入者が後を絶つことがない以上、侵入検知システムは日々検出精度を向上させるべく宿命づけられている、と言えます。
続く...

TOPへ


Copyright © 2006 Zetta Technology Inc. All rights reserved.