covert channel(その2)

先日(id:hcr:20050524)の続き.

Course Syllabus - 600.624 --- Spring 05のFeb. 17/18の分にある「IP covert timing channels: design and detection(pdf)」の論文を題材にした大学の授業のプレゼン資料(pdf)を読んだので,内容をまとめてみた.

概要

ここでは,Covert channelとは,「通信が許可されていない2者間での通信」と定義している.その通信は,許可されている行動に情報を隠すことで行なわれる.たとえば,IPヘッダの通常は無視される領域にデータを入れたり,先のHTの例のようにキャッシュにヒット/ミスヒットを制御することで,レイテンシの変化に意味を持たせたりする手段がある.

情報の隠し方は,大きくStorageベースTimingベースに分類される.Storageベースでは,IPヘッダのような領域に情報を埋めこむような方法を取る.たとえば,IPv4ヘッダの識別(Identificationl)とかオフセット,オプションなどの,あまり利用されていない領域を利用する方法がある.一方,Timingベースでは,情報を直接データに埋めるのではなく,イベントを行うタイミングで情報を伝える方法となる.たとえば,TCPパケットの送信間隔や,HTの例のキャッシュレイテンシや,HDDのヘッドアームの移動によるシーク時間の変化による方法などが該当する.

TimingベースでTCPパケットを利用した実装の例として,CBS Channelの詳細が紹介されている.CBS channelでは,一定の送信間隔にパケットが到達するかしないかで,1か0かが決定される.この方式では,ノイズ対策も考慮されており,具体的には,送信間隔の理論値は離散的になるはずなので,ノイズによって変化する送信(受信)間隔を計測することでノイズによる影響を補正するといった方法となっている.

CBS channelによる通信実験では,RTT(Round Trip time) 31.5msec 12hopsの環境(もとの論文の著者が属するPurdue univ.とGeorgetown univ.の間らしい)で,98%の正確さを目標とした場合,16bps(=1.6cps)という結果が示されている.(この帯域幅では,かなり限定的な使い方しかできないというのが個人的な感想)

また,covert channelによる通信を検出する手段として,パケット到着間隔を計測し,ε-Similarityという値を計算することで,それなりに発見することができることが示されている(ややこしいので詳細は元論文参照).送信側がその間隔にノイズを混入することで検出率を下げることもできるが,通信の帯域幅が低くなるというトレードオフがあるようだ.

その他の話

タイミングのいいことにSecurity Academy(http://www.cakeoff.net/)でid:wakatonoさんによる「Covert Channel 〜 偽装通信とその見破り方へのアプローチ」というテーマで勉強会があるらしい.覗いてみる?