他のUnixも同様
ハッシュの値をかきまぜる「お塩」.
ハッシュ化するだけでは, 同じパスワードを利用する人が複数いると 同じパスワード情報が生成される
ユーザごとに異なる必要がある
- ランダムである必要はない
同時に多数のパスワード情報の解析をできなくする
saltのサイズ
- 伝統的なunix: 12bit
- 現在のGNU/Linux: 96bit
- CRYPTOGRAPHY ENGINEERING の推奨: ハッシュ の出力サイズと同じ
PHP風の言語で記述
どちらも ハッシュを何度も利用している(stretch)
stretchの効果をはかるために, PHPのmcrypt拡張でSHA-256を繰り返し呼ぶコードで計測
Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz で 1秒に 約50万回計算できた.
文字数 | 総パスワード数 |
---|---|
n | 64^n |
3 | 26万 |
4 | 1677万 |
5 | 10億 |
6 | 687億 |
7 | 4兆 |
8 | 281兆 |
1CPU(8コア)のPCでパスワード解析する場合を考察
パスワードはハッシュ化して保存
メリット
- 鍵管理が不要
- 生パスワードを復元できない
デメリット
- 弱いパスワードが記録された情報だけで破れる
常識(?)通りにハッシュ化したあとで暗号化
saltの一部を固定の鍵とする?
単純に鍵と平文を文字列連結をしたものをハッシュ するMACは期待通りの強度がないという論文
hash(key || salt || password) 的なものはやめたほうがよさそう
方式 | 弱パスワードの保護 | 生パスワード復元 | 鍵管理 |
---|---|---|---|
ハッシュ | stretchで対応 | 不可能 | 不必要 |
暗号 | 可能 | 可能 | 必要 |
ハッシュ+暗号 | 可能 | 不可能 | 必要 |
鍵付きハッシュ | 可能 | 不可能 | 必要 |
man 3 crypt
Manpage of CRYPT
CRYPTOGRAPHY ENGINEERING
ISBN-13: 978-0470474242
認証技術 パスワードから公開鍵まで
ISBN-13: 978-4274065163