2012-03-05 13 views
0

私は何千ものmd5暗号化パスワードを持つデータベースを持っており、sha256に移行する必要があります。古いパスワードにmd5アクセス権を保持し、新しいパスワードをsha256暗号化にすることでこれを行う最も安全な方法は何ですか?ありがとう。md5からsha256への移行方法

+2

あなたがいる間に、PBKDF2と塩に移行したいかもしれません。パスワードの代わりにsaltとPBKDF2の結果を格納する必要があります。 SHA-256(これは安全なハッシュであり、暗号化のタイプではありません)は、まだレインボーテーブルなどに受け入れられています。 –

+0

興味深い!塩を含むPBKDF2のvbscript(クラシックasp)ベースの実装はありますか? – afazolo

+0

Googleの助けを借りて、各ユーザーのためにランダムに生成された文字列を塩として使用できることを学びました。ユーザーが入力したパスワードが有効かどうかを確認するには、saltに指定されたパスワードを組み合わせてハッシュを取り、それをデータベースに格納されているハッシュと比較します。私の質問です:塩はmd5暗号化された文字列にすることができますか? – afazolo

答えて

5

sha256の新しい列を作成する代わりに、両方の列に既存の列を使用することもできます。 sha256ハッシュはmd5ハッシュよりもはるかに長いので、ハッシュの長さを調べることでハッシュアルゴリズムを検出できます。

+0

私もそれを考えました。ちょうど安全性に疑問がありました。 – afazolo

1

sha256ハッシュの新しい列を追加します。そうすれば、ログイン時にnullの新しい列をチェックして、平文パスワードにアクセスできるときに新しいハッシュを保存することができます。

2

可能であれば、PBKDF2またはbcryptを使用してください。プレーンSHA-2は速すぎます。

var hash = SHA256(SHA256(salt)+password) 
for(int i=0; i<10000; i++) 
    hash = SHA256(hash); 
return hash; 

は、すべてのユーザーが持っている必要があることを忘れないでください:あなたがそれらのいずれかを使用することができない場合は

、あなたは少なくとも数千倍のカップルは、パスワード推測攻撃を遅くするSHA-256を繰り返す必要がありますこれは通常、パスワードハッシュと一緒に保存されます。アプリケーションごとの塩では不十分です。


アップグレードの場合、古いハッシュを新しい関数の入力として使用します。そうすることで、ユーザーがログインすることなく、既存のハッシュがアップグレードのセキュリティ向上の大部分を得ることができます。古いMD5ハッシュを保持しないでください。

その後、各ユーザーの最初のログイン時に、ハッシュをMD5を使用しないクリーンな新しいハッシュにアップグレードします。

+0

ハッシュが与えられても、MD5でもそのハッシュを生成する対応する文字列を見つけるのはまだ難しいです。ハッシュは、入力に新しい文字を追加することによって機会が急速に減少する逆ルックアップテーブルまたはブルートフォースを使用して通常クラックされるため、パスワードに長いランダムな塩を連結するだけで十分です。 – Calmarius

関連する問題