アカウント名:
パスワード:
電話番号は桁数が11桁の数字に固定されているので、DBが漏れた場合はマイナンバーと同様に可能な全パターンをハッシュして持っておくことで簡単に照合可能だとか叩かれてたな。
さすがに塩ぐらい振っているのではないか?
このしくみの場合、塩があったら照合できなくね?(照合できないというか、照合するためのコストが登録数で線形に増加するというか…)
0. 登録時には、自分しか知らないソルトとアルゴリズムと回数でハッシュ化して保存1. 入力を生で受け取って2. 自分しか知らないソルトとアルゴリズムと回数でハッシュ化して、生の値は捨てる3. ハッシュ同士を照合する
UNIXログインにしろなんにしろ、ハッシュパスワードの類はこのフローで照合されます。何か問題がありますか?検索のためのハッシュ(ややこしい)はハッシュ化後の値を使って生成すれば照合コストも問題ないのでは。
教えてエロいひと。# エロいんだろう!?
ソルトはユーザーごとに変えます。パスワード照合するときは、そのユーザーのソルトを持ってきてハッシュを適用します。
なんでそうするかというと、「自分しか知らない」をあてにしたくないからです。「自分しか知らない」をあてにしていいのなら、ハッシュデータベースだって自分しか知らないんだから、それがばれることは考えなくていいってことになりますよね。それはばれちゃったけど「自分しか知らないソルト」とか、「自分しか知らないアルゴリズム」はばれてないという条件でセキュリティを考えるのはちょっと変で、「仮に全部ばれたとしてもパスワードを知ることは困難」という方式が望ましいわけです。
照合するユーザーがあらかじめわかっていれば、対応するソルトはわかっているのでハッシュ値はすぐに計算できますが、沢山登録されている中から、特定の値からハッシュ化されたものを取り出したいというときは、エントリごとにソルトが違うので毎回ハッシュを計算しなおす必要があります。それが、親コメントで言っている「照合するためのコストが登録数で線形に増加する」です。そうすることで、「仮に全部ばれたとしてもパスワードを知ることは困難」を実現しようとしているわけです。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
海軍に入るくらいなら海賊になった方がいい -- Steven Paul Jobs
いくらハッシュしても電話番号空間は狭いという話 (スコア:2, すばらしい洞察)
電話番号は桁数が11桁の数字に固定されているので、DBが漏れた場合はマイナンバーと同様に可能な全パターンをハッシュして持っておくことで簡単に照合可能だとか叩かれてたな。
Re: (スコア:0)
さすがに塩ぐらい振っているのではないか?
Re: (スコア:1)
このしくみの場合、塩があったら照合できなくね?
(照合できないというか、照合するためのコストが登録数で線形に増加するというか…)
# mishimaは本田透先生を熱烈に応援しています
Re: (スコア:0)
0. 登録時には、自分しか知らないソルトとアルゴリズムと回数でハッシュ化して保存
1. 入力を生で受け取って
2. 自分しか知らないソルトとアルゴリズムと回数でハッシュ化して、生の値は捨てる
3. ハッシュ同士を照合する
UNIXログインにしろなんにしろ、ハッシュパスワードの類はこのフローで照合されます。
何か問題がありますか?
検索のためのハッシュ(ややこしい)はハッシュ化後の値を使って生成すれば照合コストも問題ないのでは。
教えてエロいひと。
# エロいんだろう!?
Re:いくらハッシュしても電話番号空間は狭いという話 (スコア:0)
ソルトはユーザーごとに変えます。パスワード照合するときは、そのユーザーのソルトを持ってきてハッシュを適用します。
なんでそうするかというと、「自分しか知らない」をあてにしたくないからです。「自分しか知らない」をあてにしていいのなら、ハッシュデータベースだって自分しか知らないんだから、それがばれることは考えなくていいってことになりますよね。それはばれちゃったけど「自分しか知らないソルト」とか、「自分しか知らないアルゴリズム」はばれてないという条件でセキュリティを考えるのはちょっと変で、「仮に全部ばれたとしてもパスワードを知ることは困難」という方式が望ましいわけです。
照合するユーザーがあらかじめわかっていれば、対応するソルトはわかっているのでハッシュ値はすぐに計算できますが、沢山登録されている中から、特定の値からハッシュ化されたものを取り出したいというときは、エントリごとにソルトが違うので毎回ハッシュを計算しなおす必要があります。それが、親コメントで言っている「照合するためのコストが登録数で線形に増加する」です。そうすることで、「仮に全部ばれたとしてもパスワードを知ることは困難」を実現しようとしているわけです。