More Related Content
Similar to いまさら聞けないパスワードの取り扱い方 (20)
More from Hiroshi Tokumaru (20)
いまさら聞けないパスワードの取り扱い方
- 4. SMBCダイレクトはアカウント回復に手間をかけることで対応?
4Copyright © 2013 HASH Consulting Corp.
http://www.smbc.co.jp/kojin/otetsuduki/anshou/saihakko/index.html
• SMBCはアカウントロック後のアカウント回復を書面あるいは電話とする
ことで、オンラインのパスワード攻撃に対策していると考えられる。
• 自動的にアカウント回復するサービスの場合は、パスワードの要件を厳し
くすることで、オンラインパスワード試行に対抗した方がよい
• twitterの場合は6文字以上、任意のASCII文字
• 英数字に限る場合は 8 文字以上を要求した方がよい
• オフライン攻撃を考慮すると、英数字記号の12文字以上が最低要件と考
える…が難しい場合はストレッチング等で防御力を高める(後述)
• パスワードの「最大長」はハッシュ値での保存を考えると上限を制限する
根拠はないが、Amazonのように maxlength=128くらいでよいのでは?
- 11. どうして暗号化ではなくてハッシュなの?
• 暗号化の場合、鍵の管理が難しい
• アプリケーションは鍵を使わなければならないが、攻撃者には鍵を見せ
たくない
• PSNの事件では、権限昇格されたことになっているので、暗号鍵も盗まれ
ていると想定せざるを得ない
• ハッシュだと鍵を使わないので、鍵管理のわずらわしさがない
• パスワードをサイト管理者にも知られたくないというニーズも
– 暗号化されたパスワードだと、サイト管理者やヘルプデスク担当者がパスワ
ードを知り得るのが嫌だ
– ヘルプデスクに見せないようにするには、サポート用画面の機能次第で可
– 管理者の悪事は総合的な対策が必要で、パスワードの問題だけではない
• PCI-DSS2.0 8.4項には「8.4 強力な暗号化を使用して、すべてのシステムコ
ンポーネントでの伝送および保存中のすべてのパスワードを読み取り不
能にする」とあり、ハッシュを求めてはいない
11Copyright © 2013 HASH Consulting Corp.
- 12. ハッシュで保存されたパスワードは本当に安全なの?
• 一般的に、(暗号論的)ハッシュ値から平文を「復元する」ことはできない
– 「password」のMD5ハッシュ: 5f4dcc3b5aa765d61d8327deb882cf99
• しかし、パスワードの場合は特別な事情がある
• 例:4桁の暗証番号をハッシュ値で保存している場合
– 全ての可能性は1万通りしかないのだから、総当たりで確認すれば、平文の
暗証番号はすぐに判明する
• 原理は8桁パスワードでも同じ
• ハッシュ保存の場合、アルゴリズムは攻撃者が知っている前提で安全な
設計とする
– 平文パスワード以外は、すべて「ばれている」想定を置く
• 攻撃者にとって未知であることが保証された情報があれば、それを鍵とし
て暗号化すればよい。現実にはそのような保証がないから暗号化を用い
ない
12Copyright © 2013 HASH Consulting Corp.
- 14. 総当たり攻撃・辞書攻撃
• オフライン型のパスワードクラックツールが該当
– John the Ripperなど
• さまざまなパスワードの「候補」からハッシュ値を求めて照合する
• 「辞書」の内容としては、よく使われるパスワードの他、ユーザIDそのもの
(Joeアカウント)、組織名なども含める
14Copyright © 2013 HASH Consulting Corp.
総当たり攻撃のイメージ 辞書攻撃のイメージ
aaaaaa
aaaaab
aaaaac
aaaaad
aaaaae
...
password
123456
qwerty
pokemon
root
...
- 15. 総当たり攻撃って遅いんでしょ
• そうでもない
• ハッシュ関数は高速性が求められる
– 電子署名などの用途では、高速であるほどよい
– DVD-ROMイメージ全体のハッシュ値を求めたりする
• パスワード保護の目的では、高速性は要らない
– むしろ、平文解読も「高速」になってしまう
• こういう記事も
15Copyright © 2013 HASH Consulting Corp.http://slashdot.jp/security/article.pl?sid=11/06/06/0023219 より引用
- 17. テスト1:"password" (続き)
パスワード人気ランキングで常に上位にいる「password」という文字列をMD5でハッシュ化した
「5f4dcc3b5aa765d61d8327deb882cf99」を解読してみました。文字種の指定はデフォルトの英小文字としました。
f:id:sen-u:20110629085027p:image
c:¥> ighashgpu.exe -h:5f4dcc3b5aa765d61d8327deb882cf99 -t:md5 -c:s -max:8
(略)
Found 1 CAL device(s)
Starting brute-force attack, Charset Len = 26, Min passlen = 4, Max passlen = 8
Charset (unicode -> 0) [abcdefghijklmnopqrstuvwxyz]
Charset in HEX: 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a
Starting from [aaaa]
Hash type: MD5, Hash: 5f4dcc3b5aa765d61d8327deb882cf99
Device #0: [Juniper] 860.00 Mhz 800 SP
Hardware monitoring enabled, threshold temperature is 90°C.
CURPWD: umggwqur DONE: 87.12% ETA: 14s CURSPD: 1842.9M
Found password: [password], HEX: 70 61 73 73 77 6f 72 64
Processed 190 350 098 432 passwords in 1m 34s.
Thus, 2 034 328 660 password(s) per second in average.
1分34秒であっさりと解読できてしまいました。1秒で約20億回も試行してるんですね。
17Copyright © 2013 HASH Consulting Corp.
- 23. Saltってなに?
• ソルト(Salt)とは、ハッシュの元データ(パスワード)に追加する文字列
• 見かけのパスワードの長さを長くする →レインボーテーブル対策
• ユーザ毎にソルトを変えることで、パスワードが同じでも、異なるハッシュ
値が得られる
– ソルトがない場合、パスワードの組み合わせ回数分ですむが、ソルトがある
と、×ユーザ数 に試行回数が増える
– LinkedInの場合は、試行回数が 650万倍に !
• ソルトの要件
– ある程度の長さを確保すること
– ユーザ毎に異なるものにすること
• ソルトには乱数を用いることが多いが、乱数が必須というわけではない
(暗号論的に安全な乱数である必要はもちろんない)
• ソルトは秘密情報ではない。ソルトは、通常ハッシュ値と一緒に保存する
23Copyright © 2013 HASH Consulting Corp.
- 25. パスワードをハッシュで保存する場合の課題
• 「パスワードリマインダ」が実装できない
– 「秘密の質問」に答えるとパスワードを教えてくれるアレ
– パスワードリセットで代替
• ハッシュの形式(アルゴリズム、ソルト、ストレッチ回数)の変更
– 生パスワードが分からないのでハッシュの方式変更がバッチ処理ではできな
い
– ユーザの認証成功の際にはパスワードが分かるので、その際に方式を変更
すると良い
– 緊急を要する場合は、現在パスワードを無効にして、パスワードリセットで
– ハッシュ値あるいは別フィールドに「方式番号」をもっておく
– PHP5.5のpassword_hash関数が便利 (ソルト・ストレッチング内蔵)
$1$d641fdabf96912$4b3c3e95dfab179ebfef220172f58171
25Copyright © 2013 HASH Consulting Corp.
方式番号 ソルト ハッシュ値
- 28. まとめ
• パスワードの器の要件
– 12文字以上(できれば、もっと)のパスワードが入力できること
• パスワードの中身の要件
– パスワードの中身はユーザの責任
– しかし、「悪いパスワード」のチェックも必要になりつつある
• パスワードの入力画面
– 「パスワードを見せる」という新しい考えかた
• 認証エラーメッセージ
– 基本は「IDまたはパスワードが違います」
• パスワードの保存方法
– 最低ライン: ソルト付きハッシュ
– できれば:ソルト付きハッシュ × ストレッチング
• 定期的なパスワード変更をしないですむ安全なパスワード保存を
28Copyright © 2013 HASH Consulting Corp.