PPT

q
q
情報セキュリティ
第8回:2006年6月9日(金)
q
q
本日学ぶこと

鍵の利用と管理
q
q
q

鍵の分類,鍵の管理
乱数
公開鍵基盤(PKI)
レポート課題2は,PPTとPDFで掲示します.
2
本日の授業で学ぶ語句






鍵,セッション鍵,マスタ鍵,CEK,KEK,鍵の生成・配送・更
新・保存・暗号化・破棄
乱数,無作為性・予測不可能性・再現不可能性,擬似乱数,
真の乱数,乱数生成器,種,内部状態
(公開鍵)証明書,認証局(CA),公開鍵基盤(PKI),リポジト
リ,CRL,階層になった証明書,ルートCA,
鍵は平文と同じ価値を持つ.
擬似乱数生成器には最初に種を与える.
PKIではCAによる(連鎖した)証明書が,鍵の正当性を保証
する.
3
計算機の生成する乱数

線形合同法
q
q

メルセンヌ・ツイスタ(Mersenne Twister)
q
q

古典的なアルゴリズム.randやrandom関数でも利用
予測可能.周期が小さく,質が悪い
1990年代に開発されたアルゴリズム.フリー利用可
予測可能.周期が219937-1と大きい
/dev/random
q
q
q
UNIXの特殊ファイル
環境ノイズをもとに生成し,再現不可能
多ビット乱数を生成するには不向き
4
第2回レポート課題

次のいずれかの課題を実施すること
q
q

配点は10点
q
q

課題2a(調査課題)
課題2b(プログラミング課題)
両方を提出した人は,別個に採点して,高いほうをとる(ボーナ
スはつけない).
個別の照会には応じない.
提出方法
q
q
メール:Subjectを「情報セキュリティレポート2a」または「情報セ
キュリティレポート2b」として,[email protected].
jpへ送信する.期限は「Fri, 23 Jun 2006 09:00:00 +0900」
紙は,第1回レポートと同じ要領で,6月23日の授業開始時
(9:10~9:15)に提出すること.
5
課題2a(1)

課題:日常生活におけるman-in-the-middle攻撃の実例を
3つ挙げよ.

提出要領
q
q
q
実例一つを1ページとして,本文は3ページとすること.
各ページの余白は5行以内とすること.(余白が多ければ減点)
1ページ目の上部に,「情報セキュリティレポート2a」,学籍番
号・氏名・提出年月日を記載すること.
6
課題2a(2)

レポート作成の注意点
q
q
q
q

対象は計算機に関するものでも,そうでなくてもよい.
man-in-the-middle攻撃の性質を理解した上で,その構図が成
り立つ例を見つけること.
「事例の説明」と「考察(なぜそれがman-in-the-middle攻撃の
実例なのか)」は,段落を分けて説明すること.
事例ごとに参考文献をつけること.
加点について
q
他の提出者が書いていない事例を取り上げていれば,
10点を超えない範囲で加点する.
7
課題2b(1)

課題:以下の仕様の一方向ハッシュ関数md5sに対して,衝
突を見つけよ.

md5sの仕様
q
q
q
入力:任意長のビット列b_in,出力ビット数p
出力:pビットのビット列b_out
アルゴリズム:
 Step 1. ビット列b_inに対するMD5のハッシュ値(128ビット)
を求め,b_tmpとする.
 Step 2. 1≦i≦pの各iに対して,次の処理を行う:
b_tmpの第iビット,第i+pビット,第i+p*2ビット,…の排他的
論理和を求め,それをb_outの第iビットの値とする.
 Step 3. b_outを出力して終了する.
8
課題2b(2)

解答要領
q
q
q
q
q
出力ビット数p=1,2,...,16のそれぞれに対して,衝突を求めよ.
衝突する二つのメッセージはともにp+1ビットとすること.
解だけでなく,プログラム作成の方針(400字程度)を記載し,
ソースファイルを添付すること.
プログラムの出力には,衝突する二つのビット列の2進表現と,
そのハッシュ値を含んでいること.
実行環境(CPUの種類と速度,RAM容量,OSの種類,コンパ
イラの種類とバージョン)と実行時間を明記すること.
 プログラムに出力させるのでも,レポートに記載するのでも
よい.
 例:PentiumM 2.0GHz,1GB RAM,Gentoo Linux,GCC
3.3.6の環境で,p=16に対する衝突を発見するのに0.130秒
を要した.
9
課題2b(3)

プログラムファイル
q
q
q
6階演習室でLinuxでログインし,端末を立ち上げ,
「~takehiko/secu2006/report2b/md5s_test」を実行すれば,
いくつかのビット列とそのハッシュ値が表示される.
 「~takehiko/secu2006/report2b/md5s_test 01000000」と
「echo -n ‘@’ | md5sum」の出力を比較すると,
同じハッシュ値になることが確認できる.
コンパイル方法は,makeを自習し,同じディレクトリのMakefile
を参照すること.
これらのファイルをベースとするなら,適切に動作する
md5s_breaker.cを作って提出するだけでよい.
 「cp –a ~takehiko/secu2006/report2b ~」などを実行して,
自分の管理下にファイルをコピーしておくこと.
10
課題2b(4)

その他の留意点
q
q
q
q
q
md5sの仕様を理解すれば,C以外の言語で実装してもよい.
出力ビット数pをもっと大きくしてもよい(出題者は,総当たり法
をp=30まで試している).
衝突を求めるための手法は,総当たり法でも,MD5に対する既
存の衝突をp+1ビットの入力に適用するのでもよい.
乱数を使用する場合,再現可能(何回実行しても同じ出力)で
あること.現在時刻やプロセスIDなどを種としてはならない.
演習室で長時間計算をさせたまま,部屋を離れないこと.
11