パスワードにストレッチングは必要か。

ECナビさんのBlogを発端とした、パスワードの暗号強度を高めるためにストレッチングは行うべきかという専門家の方のつぶやきのまとめ。途中からパスワードの定期変更は不要なのかについても派生していっていますが、一緒にまとめました。
8
CARTA Engineers @carta_engineers

Blog更新しました。 Rails(Web)アプリケーションのセキュリティ(パスワードハッシュstretch編) http://tech.ecnavi.co.jp/archives/2971611.html

2011-04-21 11:10:38
徳丸 浩 @ockeghem

ストレッチングについては徳丸本のP327に説明していますが、あまり詳しくはありません。背景の説明は多いです。徳丸本でもstretchingの回数は千回を目安にしています。 #wasbook / ECナビ エンジニアブログ : Rails… http://htn.to/xkRYB2

2011-04-21 13:33:10
徳丸 浩 @ockeghem

まぁ、stretchingそのものはハッシュを繰り返すだけだから詳しく説明しようがないか。なぜ必要かが重要

2011-04-21 13:47:24
tomokisanaki @tomoki0sanaki

認証処理が重たくなりますね。 QT @ockeghem stretchingそのものはハッシュを繰り返すだけ・・・

2011-04-21 14:18:27
徳丸 浩 @ockeghem

@tomoki0sanaki 処理が重くなることは、stretchingの本質ので仕方ないですね。攻撃者にとって重く、正規処理には軽いという方法があればよいのですが、それは無理ということで

2011-04-21 15:51:54
tomokisanaki @tomoki0sanaki

SALT だけでいいんじゃないですか? ストレッチを+1回するなら、SALTを+1文字長くした方が効率的だと思います。 QT @ockeghem 攻撃者にとって重く、正規処理には軽い・・・

2011-04-21 16:07:18
shs_kz @s_hskz

いつか論議が始まるといいなぁと期待してました。SALT vs ストレッチ

2011-04-21 16:09:34
徳丸 浩 @ockeghem

rootなどの管理者パスワードは「定期的に」変更するのではなく、担当者の異動や退職のタイミングで変更すべき。それが難しい場合の次善の方法が定期的変更 / 「7年間同じ管理者パスワードだった」銀行システムに大非難:趙 章恩「Korea o… http://htn.to/gGQo1W

2011-04-21 16:15:57
徳丸 浩 @ockeghem

@tomoki0sanaki saltが攻撃者に分かるという前提で総当たり攻撃や辞書攻撃に対する耐性を高めることがstretchingの目的です。saltを一文字増やしても総当たりのコストはあまり変わりません

2011-04-21 16:19:51
徳丸 浩 @ockeghem

vsというか、両方必要ですね RT @s_hskz: いつか論議が始まるといいなぁと期待してました。SALT vs ストレッチ

2011-04-21 16:25:13
shs_kz @s_hskz

@ockeghem そうでしたね。ご教示ありがとうございます。 @tomoki0sanaki さんとの直接的な対話が始まるとどこに違いがあるかわかりやすいかなーと常日頃から思っていました。

2011-04-21 16:35:26
tomokisanaki @tomoki0sanaki

なるほど、そこに違いがありますね。 QT @ockeghem saltが攻撃者に分かるという前提で・・・

2011-04-21 18:36:15
tomokisanaki @tomoki0sanaki

SALTばれてる前提でも、SALT があるだけで、RainbowCrack はかなり厳しくなる。

2011-04-21 18:39:51
tomokisanaki @tomoki0sanaki

例えば、8文字のRainbowTableを作っても、SALT2文字だと、6文字のパスワード解析までしかできないようなもの。SALT256文字とかは鬼だな。

2011-04-21 18:41:20
tomokisanaki @tomoki0sanaki

さらに、256文字以上のRainbowTable は現実的ではない。・・・というか、8とか、9文字のRainbowTable が現実的ではない。

2011-04-21 18:42:16
tomokisanaki @tomoki0sanaki

あ、文字種は、英大小文字/数字/記号もたくさん。だと、8文字とか9文字のRainbowTableは非現実的。

2011-04-21 18:43:10
tomokisanaki @tomoki0sanaki

3DES の中間一致攻撃の考え方が、ストレッチに対しても適用できるような気がする。

2011-04-21 18:46:21
tomokisanaki @tomoki0sanaki

中間一致攻撃を考慮すると、3DES の有効ビット数は、58bit(56+1+1)程度。繰り返すことで、1ビットしか増えない。

2011-04-21 18:47:28
tomokisanaki @tomoki0sanaki

ストレッチの耐性が、"線形" 程度にか変化しないということが気に入らない。

2011-04-21 18:49:45
徳丸 浩 @ockeghem

@tomoki0sanaki それは、ハッシュ値、ソルト、ハッシュの計算方法が全部既知という前提で、かつ総当たりというローテクな方法に対抗するためには仕方ないですよ。何か秘密情報を使っていいという前提なら簡単ですけどね

2011-04-21 18:59:05
@alexielseraphin

担当者が10年以上在籍しているようなケースはどうですか? RT @ockeghem rootなどの管理者パスワードは「定期的に」変更するのではなく、担当者の異動や退職のタイミングで変更すべき。それが難しい場合の次善の方法が定期的変更… http://htn.to/gGQo1W

2011-04-21 21:14:06
tomokisanaki @tomoki0sanaki

パスワードファイルの漏洩の事前対策として、ストレッチならば、「パスワードの定期変更」もパスワードファイルの漏洩時には効果あるんだけどな。

2011-04-21 22:00:00
徳丸 浩 @ockeghem

@alexielseraphin 担当者が一人で10年以上担当し続けるという状況は考えにくいですが、その場合は変更しなくてもよいのでは? ただ、一人であまりに長期間担当すると、他の問題が出てきそうですね

2011-04-21 22:00:29
tomokisanaki @tomoki0sanaki

だって、SQL Injection とかでパスワードハッシュが漏洩したりしたら、「速やかにパスワード変えてください」ってアナウンスがあるわけだし・・・

2011-04-21 22:00:54
tomokisanaki @tomoki0sanaki

ローカルパスワードクラックに成功したけど、その時には既にパスワードが変更されてました。って事になればよい。

2011-04-21 22:01:40