ハッシュ化されたパスワードをDBMSに格納する方法を自由に決めたとします。このような計画に明らかな弱点はありますか?ハッシュ値のパスワードハッシング、ソルト、およびストレージ
DBMSに格納されているハッシュ値を作成するには、取る:
- 塩の一部としてDBMSサーバーインスタンスに固有の値、
- とユーザー名の第二部として、塩、
- そして、実際のパスワードとの塩の連結を作成し、
- そして、SHA-256アルゴリズムを使用して文字列全体をハッシュ、
- そしてDBMSに結果を格納。
これは、衝突を起こしたい人は、それぞれのユーザー名と各DBMSサーバーインスタンスに対して個別に作業を行う必要があることを意味します。私は実際のハッシュメカニズムを幾分柔軟にして、新しいNIST標準ハッシュアルゴリズム(SHA-3)の使用を可能にする予定です。
「DBMSサーバーインスタンスに固有の値」は秘密にする必要はありませんが、秘密に漏らされることはありません。この目的は、別のDBMSサーバー・インスタンスで同じパスワードを使用する場合、記録されたハッシュが異なることを保証することです。同様に、ユーザー名は秘密ではなく、適切なパスワードだけです。
パスワードを最初に持ち、ユーザー名と '一意の値'秒、または3つのデータソースの他の順列を持つことに利点はありますか?または、文字列のインターリーブはどうですか?
上記の情報と同様にランダムな塩分(パスワードごと)を追加(記録)する必要がありますか? (利点:ユーザーはパスワードを再利用することができますが、おそらくデータベースに記録された別のハッシュを取得することがあります)欠点:塩が記録されなければならないという欠点をはるかに上回っていると思われます。
ありますSO関連の質問のかなり多く - このリストは包括的になることはほとんどありません:
- Encrypting/Hashing plain text passwords in database
- Secure hash and salt for PHP passwords
- The necessity of hiding the salt for a hash
- Clients-side MD5 hash with time salt
- Simple password encryption
- は
Salt generation and Open Source software
ランダムな部分は、予測攻撃を防ぐことが重要です。 – Jacco
http:// stackoverflowを追加できます。com/questions/1645161/salt-generation-and-open-source-software/1645190#1645190を記事リストに追加 – Jacco
さらにhttp://dba.stackexchange.com/questions/7492/password-hashes-fixed-length- [dba.se]サイトへのリードインとしてバイナリフィールドまたはシングルストリングフィールド – jcolebrand