データの改竄を防ぐ仕組み
2002/9/12
データ改竄
ファイルや通信データの中身を第三者が
不当に書き換える事
正当な受信者以外の第三者が不正にネットワークにアクセス
し、送信者のメッセージの内容を改変して受信者に送付
送信者 受信者
改竄
1.通信路のセキュリティの強化
2.データ改竄の検知
–チェックサム
–ハッシュ関数
改竄への対策
チェックサム
•誤り発見用の数値(もしくはその集まり)
–データを適当なブロックに分割し、それぞれの文字
コードを合計
例:データを16バイトずつ16行のマトリックス状に並べ、各行文字
コードの和の最下位1バイトを右端に、各列文字コードの和の最下
位1バイトを下端に記入してチェックサムを作成
eeeeeeeeeeeeeeee
eeeeeeeeeeeeeeee
eeeeeeeeeeeeeeee
eeeeeeeeeeeeeeee
:
eeeeeeeeeeeeeeee
50
50
50
50
:
50
00
505050
:
50505050
256個の“e”(ASCII文字コードで0x65)の
文字により構成されるデータのチェックサム
16行
16列
チェックサムによるデータ改竄の検知
•あらかじめ送信データのチェックサムの値
を送っておく
eaeeeeeeeeeeeeee
eeeeeeeeeeeeeeee
eeeeeeeeeeeeeeee
eeeeeeeeeeeeeeee
:
eeeeeeeeeeeeeeee
504C5050505050505050505050505050
eeeeeeeeeeeeeeee
eeeeeeeeeeeeeeee
eeeeeeeeeeeeeeee
eeeeeeeeeeeeeeee
:
eeeeeeeeeeeeeeee
4c
50
50
50
:
50
fc
50
50
50
50
:
50
50
50505050505050505050505050505050
1行2列目のデータが“a”(ASCII文字コードで0x61)に文字化け
比
較
エラー
チェックサムの穴
•巧妙なデータ操作により、チェックサムをす
り抜ける事が可能
eeeeeeeeeeeeeeee
eeeeeeeeeeeeeeee
eeeeeeeeeeeeeeee
eeeeeeeeeeeeeeee
:
eeeeeeeeeeeeeeee
50
50
50
50
:
50
00
eaeeeeeeeeeeeeee
eeeeeeeeeeeeeeee
eeeeeeeeeeeeeeee
eeeeeeeeeeeeeeee
:
eeeeeeeeeeeeeeee
4c
50
50
50
:
50
fc
eaeeeeeeeeeeeeie
eeeeeeeeeeeeeeee
eeeeeeeeeeeeeeee
eeeeeeeeeeeeeeee
:
eieeeeeeeeeeeeee
50
50
50
50
:
54
08
eaeeeeeeeeeeeeie
eeeeeeeeeeeeeeee
eeeeeeeeeeeeeeee
eeeeeeeeeeeeeeee
:
eieeeeeeeeeeeeae
50
50
50
50
:
50
50
504C505050505050505050505050505050505050505050505050505050505050
50505050505050505050505050505050
50505050505050505050505050505450
ハッシュ関数
•任意長のメッセージを一定長のデータ(ハッ
シュ値)に変換する関数
•衝突回避性:MとM’が異なるならh(M)≠h(M’)
•一方向性:h(M)からMの復元が不可能
→メッセージ改竄の検出が可能
MD5(Message Digest 5)
SHA(Secure Hash Algorithm)
改竄検知(MD5)
MD5( Message Digest 5 )とは
•1991年に提案された
–RFC1321で公開
•RFC(Request For Comment)
–TCP/IPコミュニティにおける各種標準仕様を規定する
ドキュメント類の総称
•一方向ハッシュ関数
–メッセージから固定長(128bit)のハッシュ値を返す
–ハッシュ値から元のメッセージを求めることは不可能
–同じハッシュ値を返すメッセージを生成することは
困難
•128ビットハッシュ関数の出力は2の128乗、10進数だと39桁
となりとても大きい数となるため
% md5 –s AA
MD5 (“AA”) = 3b98e2dffc6cb06a89dcb0d5c60a0206
MD5の応用(1)
•ファイルの改竄を検知
–ファイルのMD5を保存しておけば
MD5の値が変わっていれば、ファイルが
変更されたことがわかる
•FreeBSDのportsでも使用
–例えば、
% cat /usr/ports/shells/tcsh/distinfo
MD5 (tcsh-6.10.tar.gz) = f459c423074d85dfaa55439eb908a053
–ファイルが改竄されていないかを確認
–ホームページにファイルのMD5の出力値を
記述してある場合もある
MD5の応用(2)
•PEM(Privacy Enhanced Mail)
–インターネットセキュリティーを施した電子メールの
規格
–RFC1421-1424で公開
•PGP (Pretty Good Privacy)
–暗号化電子メールプログラムの一つ
–電子署名、メッセージの暗号化/復号の機能
•APOP
–時間(に関する値)、サーバ名、パスワードからなる
文字列にMD5を適用
–MD5の出力値を比較して認証
今日の実習(1)
•文字列のMD5の出力を調べる
–md5 –s “aaaa”
–md5 –s “aaab”
–md5 –s “aaa”
など
•全てのMD5の出力値がまったく違うことを
確認
今日の実習(2)
1. /usr/ports/xxxx/yyyy/…(例. /usr/ports/x11-
wm/fvwm2-i18n)で make fetch を行い、ファイルをダ
ウンロード
2. このときダウンロードされたファイルは、
/usr/ports/distfile に保存されています
3. ダウンロードしたファイルのMD5の出力値と、
usr/ports/xxxx/yyyy/…/distinfo に記載されている値
が一致するかどうかを調べる