私はパスワードをハッシュするためにこのコードを使用しています:SHA512と一緒に使用する場合、phpのhmacのキーを作成するのにどれくらいの時間が必要ですか?
hash_hmac('sha512', $password . $salt, $hmac_key);
は、キーのための十分な4096ビットですか?
ありがとうございました!
私はパスワードをハッシュするためにこのコードを使用しています:SHA512と一緒に使用する場合、phpのhmacのキーを作成するのにどれくらいの時間が必要ですか?
hash_hmac('sha512', $password . $salt, $hmac_key);
は、キーのための十分な4096ビットですか?
ありがとうございました!
パスワードハッシングについては、確かに。ちょうど十分な塩で十分でしょう。
ここでは、使用するハッシュの目的は何かを理解する必要があります。あなたはパスワードをハッシュしているので、もし誰かがこれらのハッシュを持っていれば、元のパスワードを推論することはできません。ブルートフォースとレインボーテーブルによる攻撃はあまり効果的ではないように、我々は塩を使用します。同じパスワードを使用する2人のユーザーが異なるハッシュを持つように、各パスワードごとに塩をユニークにします。 HMACは、ここでは塩のように行動する以外は何も追加しません。
メッセージ/ファイルのデジタル署名としてハッシュ関数を使用する場合(例:php.net uses it one their downloads page)、HMACは関連しています。 HMACキーを使用すると、このキーを知っている人だけがハッシュされたコンテンツの真正性を確認できるようになり(php.netのダウンロードとは対照的に、誰もがダウンロードしたファイルのmd5を確認できる)、同じものを生成するメッセージを偽装するのを難しくするハッシュ(あなたがキーを知って、どのハッシュをターゲットにするか知る必要があります)
私はあなたが塩について何を言っているのか分かりません。私が塩を十分長く作る限り、それはいいですか? –
@pythonscript:私は私の答えで少し話題を広げた – Mchl
助けてくれてありがとう、今、私は暗号化されて保存されているすべての別個のユーザーのために(/ dev/urandomを介して)ランダムな塩を生成します。これは、比較のためにパスワードを入れたときに使用されます。 HMACはここにセキュリティを追加するものではないので、パスワードをハッシュする必要があるたびにキーを取得するオーバーヘッドを自分自身で節約するために、おそらくそれを忘れてしまいます。 もう一度ありがとうございます! –