うまく説明できるかわからないけどしてみる。あと、誤っていたら誰かからどんどんツッコミが入ることも期待している。
まず、目的は「ハッシュ化されたパスワードとSaltを別々の場所に保存すること」とする。
が、たとえばPHPのハッシュ化関数だと、出力される文字列は「123ABCDEF」のようになる。ここで「123」がSalt、「ABCDEF」がハッシュ化されたパスワードになる。つまりSaltとハッシュ化されたパスワードが、連結された一つの文字列として出力される。
目的を満たすためにはこれを「123」と「ABCDEF」に分ける必要がある。ところが、「123」というSaltの「3文字の長さの文字列」というのは、ハッシュアルゴリズムなどによって変わってくる。必ずしも3文字とは限らない。したがって、ハッシュアルゴリズムを気軽に変えることができず、柔軟な対応ができない。
すなわち、最初の目的である「ハッシュ化されたパスワードとSaltを別々の場所に保存すること」ということが適切な方針ではないし、ハッシュ化関数はそれを期待していない、ということ。
だと思うのだけどどうだろうか。
ここ http://b.hatena.ne.jp/entry/s/jiraffe.co.jp/news/2019/01/31/1321/ のブコメを見ていると、「Saltも漏れたのかよpgr」ってコメントが多いんだけど、Saltって一緒に保存するんじゃないの? $2y$10$aPd...
パスワードとは別の場所に保存しとくとか、ユーザーIDをハッシュ化したものにするとか、やり方は色々ありそうだ。
いやいや、例えばPHPのpassword_hash()の結果を分割して保存しないでしょ。 文字数区切りで分割保存したとしたら、ハッシュ化アルゴリズム変わったときに区切り文字数の部分も変更しなき...
すまない、なんの話をしてるのかよく分からん。 文字数区切りで分割保存したとしたら 取り敢えずこれはどういうこっちゃ?
うまく説明できるかわからないけどしてみる。あと、誤っていたら誰かからどんどんツッコミが入ることも期待している。 まず、目的は「ハッシュ化されたパスワードとSaltを別々の場...
横だけど勉強になったわ ぐぐったらSaltは一緒に入れとくもんで、もともと時間稼ぎ程度の役割しかないものだからSaltとは別に平文+Saltに対して「外部のSalt」とでも言うべき役割を果た...
言いたかったことが伝わっていてうれしい。 「Saltとハッシュ化されたパスワード(つまりハッシュ)は一緒に保存しておくこと」が今現在においてはベターな方法で、したがって「ハ...
概ね横増田と同じような内容を調べて同じような感想になったので、そこら辺は省くね。 ただ、password_hash は内部的に bcrypt を使っていて、 bcryptはパスワードとSaltを . (ドット)で区切っ...
saltはレインボーテーブル攻撃に対応するためだから、saltを別に保存する必要ないわな。