0

この記事http://codahale.com/how-to-safely-store-a-password/を読みましたが、ソルトを使用することはGPUブルートフォース攻撃に対しても安全ではないと書かれています。ハッキングされてパスワードが数週間で復号化されるのは嫌です...それで、もう少し読んで、解決策はbcrypt実装したくないということでしたphpass class。私はSHA-512が好きです。

ただし、sha-512にラウンドを追加してGPU攻撃を遅くすることができれば、どうすればよいでしょうか。ラウンドは反復を意味しますか?

sha512を遅くするためにどのようにラウンドを追加しますか?

4

2 に答える 2

0

SHA512のラウンドを増やすことは、同じハッシュ関数ですでにハッシュされた値を反復処理することを意味しません。これにより、実際に与えられたセキュリティが低下する可能性があります。最初のハッシュの後、新しい「パスワード」の文字セットが減少するためです。部分的に、理由を説明しているsecurity.stackexchangeのこのリンクを参照してください。

「自分で」パスワード保護機能を使用しないことをお勧めします。代わりに、 PHPassなどのはるかによく研究され精査されたソリューションを使用してください。

彼らのサイトには、パスワードのハッシュと作成のセキュリティへの影響を説明する非常によく書かれた詳細な記事もあります。

于 2012-03-28T17:42:29.203 に答える
0

私が見つけたパスワードを保存するための最も安全な方法の1つは、次のとおりです。

<?php    
function createPasswordSalt($saltLength = 20) {
    return substr(md5(uniqid(rand(), true)), 0, $saltLength);
}

function createPasswordHash($password, $salt = null, $staticKey = null) {
    if ($staticKey === null) {
        $staticKey = "Some passphrase that will be only in your php script";
    }

    if ($salt === null) {
        $salt = self::createPasswordSalt(); 
    }       

    return hash_hmac('sha512', $password . $salt, $staticKey);

}

そして、私はデータベースのパスワードとハッシュに保存します...

そこで、ここでは複数のセキュリティレイヤーを使用しました。そして、彼があなたのデータベースとphpスクリプトを一緒にした場合にのみ、あなたのパスワードをハックすることができます。いずれにせよ、ハッカーがあなたのスクリプトを持っている場合、彼はあなたがパスワードをハッシュするために使用するスキームを知っているので、あなたがデータベースに持っているどんなパスワードもハッキングすることができます。

于 2012-03-28T17:53:49.657 に答える