パスワードのsaltの構築方法
PHPでパスワードの登録でsaltを使用しようと考えているのですが、ネットで調べても自分の疑問に思っている事が出てきません。
パスワードにsaltという十分な長さ(40文字とか)の文字列を加え、それをmd5などでハッシュ化する・・・と言うことは分かりました。
しかしその実装方法が分かりません。
A.saltはランダム乱数でもいいし、セキュリティは低くなるが固定文字列でもいい。
B.saltは別ファイルに保管(一緒に保管と書いてあるのもありましたが)する。
、というような記事を見かけました。
で、自分はZendFrameworkのマニュアルに沿って考えたのですが、
データベーステーブルにpassword、saltカラムを作成する。
登録時、$_POST['ユーザの入力値']を(ハッシュ化する)passwordカラムに、saltはここでは単純にmt_rand(0,99)としてsaltカラムに登録、とした場合に認証時にはどのようにすればいいのでしょうか?
認証時にユーザの入力したパスワードとデータベースに格納したsaltを結合し、それをmd5()したものと、データベースに格納されているパスワードと同じく格納されたsaltを結合しそれをmd5()したものを比べる
・・・となるとパスワードさえ合って入ればいいので別にsaltは不要なような気がするのでこの実装法は間違っているのかなと思います。
そうではなく、登録時にユーザの入力したパスワードとデータベースに格納したsaltを結合し、それをmd5()したものをpasswordカラム又はsaltカラムに格納する・・・というのも正しいのかな?と思います。
データベースに侵入されればどちらもダメなので、何か別ファイルに保管するのかなとも思いましたが良く分かりません。
登録フォーム => ログインフォームにおいてのsaltの実装法を教えていただけないでしょうか?少し頭がぐちゃぐちゃになり、ちょっと文章がおかしい気もしますがすみません。
お礼
こんにちは。 お礼遅くなってしまってすみません。 紹介していただいたサイトで勉強させていただきました。 kerberosについてはちょっと詳しくなっかたな?という感じです。 問題の"ASPでウェブサイト上からログインする"はまだ解決できていませんが、、、。 アイディアが浮かんだのでプログラムを書いてみたんですが、動かない、、、。 もっといろいろ調べてみます! アドバイスありがとうございました!