-1

終わりのない問題に直面しています パスワードをDBに保存する方法は? . 私が最近読んだ限りでは、以前は安全と見なされていたアルゴリズムのうち、安全でないとマークされていたものがいくつかありました。そのため、安全でなくなったリソースについて説明している最新のリソースを見つけるのに苦労しています。

私は 2 つまたは 3 つのアルゴリズムを組み合わせることを考えていましたが、当時は安全ではないと考えられていたことを覚えています。つまり、ハッシュが攻撃にさらされます。考えていた組み合わせは以下のようなものでした。

data_h1 = sha256(sha1(data_salt).sha1([username|email]).sha1(data_peper))
data_h2 = sha256(sha1(data_salt).sha1(user_entered_password).sha1(data_pepper))

hmac(
sha512,
data,
sha512(general_salt.data_h1.data_h2.general_pepper)
);

data_saltとdata_pepperはアプリケーションにハードコードされた定数ですが、同様にハードコードされた定数であるgeneral_salt と general_pepper とは異なります。[username|email]は、*user_entered_pa​​ssword* (doh!) と同様に、登録時およびログイン時にユーザーによって提供される値です。

  1. これにより、何らかの形でセキュリティが損なわれますか? (いいえの場合は次に進みます)
  2. 生成の過程で進行するハッシュオマニアによる大きなボトルネックはありますか? (次に進む)
  3. 上記のアプローチに関する推奨事項はありますか?

私の質問は PHP に関するものですが、皆さんが何を推奨し、コメントが一般的にどうなるかを確認するのは良いことです。これは非常に一般的なタスクであり、多くの人はまだ MD5 または SHA1 (またはさらに良いことに、プレーンテキストで保存します)。

4

2 に答える 2