This is an archive of past FreeBSD releases; it's part of the FreeBSD Documentation Archive.

解決方法

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 バイト以下のパケットのみ記録されます。