採用サイトはこちら>

DPIの仕組み ~初級編~

はじめに

弊社で取り扱っているSandvine社のActiveLogicは、いわゆる「DPI」と呼ばれる機能をもっています。
では、DPIとは何か?について本記事では触れていきたいと思います。

DPIの定義

DPIは「Deep Packet Inspection」の略称で、直訳すると「深いパケット検査」となります。

では、何に対して「深い」のでしょうか。

これは簡単にいうと検査対象のプロトコルレイヤの広さ(深さ)、になります。DPIに対して浅くパケット検査を行うことをSPI(Shallow Packet Inspection)と呼ぶこともあります。

一般的にSPIはOSI参照モデルで定義されるレイヤ4(トランスポート層:TCPやUDP)までが検査対象とされています。これに対してDPIは最上位のレイヤ7(アプリケーション層)まで検査できるものが主流です。

DPIの仕組み

例えば、HTTP通信は標準でTCPの80番ポートを利用します。

「HTTP標準ポート80番」というのは、IANA(Internet Assigned Numbers Authority)という組織がアプリケーション(プロトコル)ごとにポート番号の割り当てを管理しており、HTTP通信用に割り当てられたポートが「80番」となっています。

SPIはこのポート番号の割り当てに基づき、「着信ポートがTCPの80番」であることを根拠としてHTTP通信が行われていると判断します。DPIはTCPのペイロード(HTTPヘッダやボディ)までを参照しHTTP通信かどうか判断します。

図1の場合はSPI、DPIともにHTTP通信であると判定されます。

図1:標準的なHTTP通信の場合

しかし厄介なのは、このIANAがアプリケーションへ割り当てるポート番号は、「割り当てられているポート番号しか使えない」あるいは「割り当てられているアプリケーションしか使えない」という制約がありません(IANAは割り当て外利用を「SHOULD NOT(原則禁止)」と定義しています)。

図2のように別のアプリケーションがTCPの80番ポートを使っていたとしてもSPIでは「着信ポートがTCPの80番」を根拠とするため、HTTP通信と判定されてしまいます。
またTCPの80番ポート以外のポートでHTTP通信を行っていたとしてもSPIではHTTPと判定することができません。

図2の場合、ペイロードまで参照するDPIでは「HTTP通信ではない」と判断されます。

図2:TCPの80番ポートでHTTPではない何かを通信している場合

このようにDPIはアプリケーションレベルのプロトコルまで識別可能な分析機能があり、SPIより正確な判定が可能です。その反面SPIと比べて多くの計算機リソースを必要とします。

また、アプリケーションレベルのプロトコルは多数存在するうえ、日々変化してゆくため外部のデータベース(シグネチャ)へ識別方法を保持することで変化に追従できるよう実装されるケースが多いようです。

DPIの応用

DPIはActiveLogicのように帯域制御やトラフィック可視化に利用されるだけではなく、IDS(Intrusion Detection System)等のセキュリティアプライアンスで攻撃検知にも活用されるほか、SDN分野でもトラフィックのルーティングに利用されています。

次回は、DPIの動作原理について実例を交えてご紹介します!