2012-03-28 7 views
0

私はこの記事をhttp://codahale.com/how-to-safely-store-a-password/から読みました。塩を使うことはGPUブルートフォース攻撃に対しても安全ではないと言われています。私はハックしてパスワードを数週間で解読したくないので...もっと読むと解決策はbcryptでしたが、私はphpass classを実装したくありません。私はSHA-512が好きです。hash_hmac()のような関数に、どのように "丸め"ますか?

しかし、GPU攻撃を遅くするためにsha-512にラウンドを追加することができます...どのように行うことができますか?ラウンドは反復を意味しますか?

sha512を遅くするためにラウンドを追加するにはどうすればよいですか?

+0

あなたは本当にSHA512があなた自身でアプリケーションのために十分安全ではないと思いますか? –

+0

@webartoデータベースが盗まれた場合、ハイエンドGPU/CUDAでSHA-512をクラックさせる可能性がありますか? – user121235

+0

だから、あなたはbcryptが優れたソリューションだが、SHA-512が好きなので使用したくないと思ったので、SHA-512をbcryptのように動作させる助けが必要なのですか? –

答えて

0

私が見つけたパスワードを保存するための最も安全な方法の一つは以下の通りです:

<?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スクリプトを一緒に入手すれば、パスワードをハッキングすることしかできません。どのような場合でも、ハッカーがあなたのスクリプトを持っていれば、パスワードをハッシュするために使用するスキームを知っているので、データベースにあるパスワードをハックすることができます。

0

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

「独自の」パスワード保護機能を使用しないことをお勧めします。代わりにPHPassのようなもっとよく研究され、検証されたソリューションを使用してください。

password hashing and creationのセキュリティの意味を説明しているサイトもあります。

関連する問題