This is an archive of past FreeBSD releases; it's part of the FreeBSD Documentation Archive.
最初に、暗号に使われている情報理論について考えます。
暗号化されたデータは、一様に分布している。つまり、 各情報源シンボルは最大のエントロピーを持っている。
通常、未処理のデータや圧縮されていないデータは冗長である。 つまり、各情報源シンボルのエントロピーは最大ではない。
ネットワークインターフェイスを入出力するデータのエントロピーを測定できると仮定すると、 「暗号化されていないデータ」と「暗号化されたデータ」の両者に、 違いを見ることができるはずです。 このことは、パケットのルーティングが行なわれる場合の一番外側の IP ヘッダなど、 データの一部が ``暗号化モード'' で暗号化されなかったとしても成立します。
Ueli Maurer 氏の ``Universal Statistical Test for Random Bit Generators'' (MUST) は、サンプルデータのエントロピーを高速に測定します。 これには圧縮と良く似たアルゴリズムが使われています。 文末に示すのは、 一つのファイル中で連続するデータ (最大 0.25 メガバイト) を測定するコードです。
さて次に、上記に加えてネットワーク上の生データを捕捉するための手段も必要になります。 それを実現するプログラムに、tcpdump(1) と呼ばれるものがあります。 ただし、tcpdump を使うには、 カーネルコンフィグレーションファイルにおいて Berkeley Packet Filter インターフェイスが有効化されていなければなりません。
次のコマンド:
tcpdump -c 4000 -s 10000 -w dumpfile.bin
は、4000 個の生パケットを捕捉し、dumpfile.bin に記録します。 この例のでは 10,000 バイト以下のパケットのみ記録されます。