md5 でファイルの身元チェック

ネットワーク経由でファイルを拾って来ることがよくありますが、 そのファイルにトロイの木馬が仕掛けられていないとも限りません。 トロイの木馬とは、そのファイルを展開したとたん (もしくはソースならコンパイルした実行ファイルが) あなたのシステムに悪さをするようにしくんでおくことです。 そうならないように、ftp 経由で拾って来るファイルの 身元保証をするのが md5 です。


簡単な説明

まあ、いろいろと難しい話はあるようですが、ここでは 「ファイルの内容に応じて与えられる、ファイルの背番号」 のようなものだと思って貰えれば結構です (というか、著者自身それ以上難しいことはよくわかってません)。 ただし、本物の背番号は番号から本人が割り出せてしまいますが、 md5 の背番号からはファイルの中身が割り出せません。

ファイルの名前ではなく、内容に応じて、というところがミソで、 もしファイルの内容が改竄されていたら背番号がかわるので 「おまえ何者だ?!」となるという寸法です。

わずかな改竄も見逃さないようにするため、 ファイルのわずかな変化に対しても背番号は大きく変わるようになっています。

例:Ports における MD5

例えば ports だと /usr/ports/xxx/yyy/files/md5 に 必要なファイルの「正しい背番号」が書き込まれていますので、 これと拾って来たファイルの背番号が違っていたら トロイの木馬かもしれない、と警戒しなければなりません。

MD5 で背番号を調べる

手でファイルの「背番号」を調べるには、 ファイルにコマンド md5 をかけてやります。 md5 はデフォルトで /sbin/md5 として入っています。

% cat test1
test
% cat test2
test2
% cat test3
test
% /sbin/md5 test1
MD5 (test1) = d8e8fca2dc0f896fd7cb4cb0031ba249
% /sbin/md5 test2
MD5 (test2) = 126a8a51b9d1bbd07fddc65819a542c3
% /sbin/md5 test3
MD5 (test3) = d8e8fca2dc0f896fd7cb4cb0031ba249

test1 と test2 とでわずかな違いが生む背番号の違いを、 test1 と test3 とで同じ内容のファイルは同じ背番号を持つことを 見ました。


FreeBSD の部屋


Apr. 1, 2000