FreeBSD の IPsec 機能を独立検証するには
Prev |  | Next

# 2. 解決方法

最初に、暗号に使われている情報理論について考えます。

1. 暗号化されたデータは、一様に分布している。つまり、 各情報源シンボルは最大のエントロピーを持っている。

2. 通常、未処理のデータや圧縮されていないデータは冗長である。 つまり、各情報源シンボルのエントロピーは最大ではない。

ネットワークインターフェイスを入出力するデータのエントロピーを測定できると仮定すると、 「暗号化されていないデータ」と「暗号化されたデータ」の両者に、 違いを見ることができるはずです。 このことは、パケットのルーティングが行なわれる場合の一番外側の IP ヘッダなど、 データの一部が “暗号化モード” で暗号化されなかったとしても成立します。

## 2.1. MUST

Ueli Maurer 氏の “Universal Statistical Test for Random Bit Generators” (MUST) は、サンプルデータのエントロピーを高速に測定します。 これには圧縮と良く似たアルゴリズムが使われています。 文末に示すのは、 一つのファイル中で連続するデータ (最大 0.25 メガバイト) を測定するコードです。

## 2.2. Tcpdump

さて次に、上記に加えてネットワーク上の生データを捕捉するための手段も必要になります。 それを実現するプログラムに、tcpdump(1) と呼ばれるものがあります。 ただし、tcpdump を使うには、 カーネルコンフィグレーションファイルにおいて Berkeley Packet Filter インターフェイスが有効化されていなければなりません。

次のコマンド:

    tcpdump -c 4000 -s 10000 -w dumpfile.bin

は、4000 個の生パケットを捕捉し、`dumpfile.bin` に記録します。 この例のでは 10,000 バイト以下のパケットのみ記録されます。

Prev | Home | Next
FreeBSD の IPsec 機能を独立検証するには |  | 実験