最近のファイアウオールは、パケットのヘッダー部分に含まれるIPアドレスやポート番号だけでなく、その奥のデータ部分に含まれる情報を見て処理する、いわゆる「DPI(Deep Packet Inspection)」と呼ばれる技術をうたう製品が多い。そうした数あるDPI技術の中で「わが社の方式が最も優れている」と胸を張るのが、米SonicWALLのボリス・ヤノフスキー氏だ。特許技術「RFDPI」の開発者であるヤノフスキー氏に、その仕組みなどを聞いた。

(聞き手は斉藤栄太郎=ITpro


米SonicWALL 副社長 ボリス・ヤノフスキー氏
米SonicWALL
セキュリティサービス&アプリケーション担当副社長
ボリス・ヤノフスキー氏

 米SonicWALLのボリス・ヤノフスキー氏は、同社に入社する以前に米NetManageの創設に携わった一人である。NetManageといえば、インターネットに古くからかかわる人なら知らぬ人はいない有名なTCP/IPプロトコルスイート「Cameleon」の開発元。同氏はそのCameleonのTCP/IPスタックのオリジナルコードを書いた主要開発者だったという。そんなヤノフスキー氏がSonicWALLで開発した「目からウロコ」の技術が「RFDPI(Reassembly-Free Deep Packet Inspection)である。

RFDPIとはひと言で表すとどんな技術なのか?

 RFDPIの「RF」とはReassembly-Free、すなわち再組み立て不要ということだ。つまり、RFDPIとはファイアウオールなどの中継機器においてセキュリティ検査などをする場合に、中継するパケットを(一時的にバッファに貯めて)装置内で組み立てる処理を必要としないということを意味している。

 逆に言えば、RFDPI以外のすべての競合DPI技術は、検査のために再組み立てを必要としている。巨大なファイルに不正なコードが入っているかどうかを検査しようとする場合、その巨大なファイルを構成するパケットをすべて受信し、再組み立てをした後、検査を実施している。

 この場合、検査して問題がないことが分かってからでなければ、通信を遮断したり、すべてのパケットを中継先に送り届けるといったアクションをとることができない。これでは高速にパケットを中継処理することが難しいうえ、中継機器に再組み立て用の巨大なバッファメモリーを確保する必要が生じる。

RFDPIではどのようにしてパケット単位で検査を実施しているのか?

 アイデア自体は非常にシンプルだ。ウイルスの検査を例に話そう。まず、検査で見つけたいウイルスのサンプルを用意する。これはどこのセキュリティベンダーも同じだ。次に、サンプルからウイルスの特徴を記した「シグネチャ」を生成する。

 ウイルスの検出にシグネチャを使うこと自体は珍しくないが、私が開発したRFDPIではここから先が少々違う。例えばウイルスのコード全体からハッシュをとるのではなく、ウイルスコードの中から特徴的な短いデータ(ビット列)をいくつか選び出し、これをシグネチャとして使う。

 ファイアウオールでは、パケットを受信したら、パケットのデータ部分にシグネチャのどこかとマッチする部分があるかどうかを調べていく。例えば「ABC」と「ABD」というシグネチャがあったとしたら、まずパケット中に「A」が含まれていないかどうかをチェックして、含まれていなければ通過させる。

 Aが含まれている場合、続いて「B」がないかをチェックする。Bが含まれていれば次は「C」または「D」の存在を確認するという具合になる。シグネチャが必要十分な長さを持っていれば、この方法でほぼ100パーセントの精度でウイルスを止められる。もちろん、いちいち再組み立てする必要はまったくない。