2011-08-07 24 views
7

に変換したいのですが、助けを求めています。 私は約2500人のユーザーを持つウェブサイトを持っています。 パスワードにSHA1暗号化を使用して構築しました。 私はSHA1が安全でないことを読んだので、塩でSHA256と言うように変更したいと思います。SHA1からSHA256へのウェブサイトのパスワード暗号化を

誰もこのように移行する方法についてアドバイスをしていますか? 私はパスワードを解読して再ハッシュすることができますが、できることは表示されない場合は素晴らしいでしょう。ただ明確にする

THXアダム

答えて

11

このついて行くの通常の方法はこれです:

  1. はSHA256ハッシュを収容するために、より大きなハッシュ化されたパスワードの列を作成し、最初はNULLに塩田を設定し「塩」列
  2. を追加NULLの塩がsha1を意味し、NULLでないことを意味するようにパスワードチェックコードを調整します。sha256
  3. sha1-useが正常にログインしたら、saltを使用してsha256にパスワードを再ハッシュし、データベースを更新します。

時間の経過とともに、ユーザーは自分自身でsha256に移行します。唯一の問題は、非常に散発的にしかログインしないか、まったくログインしないユーザーだけです。これらのために、通知電子メールを送信したり、X日前にログインしなければアカウントを閉鎖することを脅かす可能性があります(実際の理由はありません...)

7

、SHAは、(一般に)一方通行の通りであるハッシュアルゴリズムです。ハッシュを解読することはできません。ハッシュは、パスワードを認証するための強さの一種です。あなたは塩漬けのハッシュに移動して正しい道を歩いています。ここで私はそれをやるでしょう。

パスワードを取得する唯一の方法は、ユーザーが自分でパスワードを入力できるようにすることです。ユーザーがサイトにアクセスしてログインすると、パスワードが1つずつ更新されます。あなたの認証方法では、今やっているハッシュを実行し、それを既存のフィールドのものと比較します(ここでは新しいものはありません)。一致すると仮定して、SHA256を使用してsalt/re-hashを実行し、データベースのパスワードフィールドを更新します。必要に応じて、更新されたユーザーを追跡するユーザーテーブルを少し残してください。

私は多くの仮定をしていますが、これは過去のハッシュアルゴリズムのダンスをどのように解決したかです。がんばろう!

1

Iパスワードハッシュを再度SHA1からSHA256にマイグレーションして、ユーザーがサイトを再訪問してパスワードを再ハッシュするのを待つことなく、もう一度提案することをお勧めします。変更は一回のパスワードハッシュ移行であり、ログオン検証機能に変更されます。

パスワードのハッシュが機能を使用して生成されていると仮定します - :

ハッシュパスワード+塩を[SHA1]>ハッシュ-SHA1

SHA256に移行するには、次のアルゴリズムを使用してパスワードハッシュを変換することができます-sha1 + salt [Sha256] - > Hash-sha256(塩は入力の複雑さを増やすために使用されます)

sha256関数の許容値に応じて、Hash-sha1をbase64印刷可能なascii用。ログオン検証機能については、パスワードは次のアルゴリズムを使用してハッシュされなければならない

パスワード+塩[SHA1] - >ハッシュ-SHA1 +塩[SHA 256] - >ハッシュSHA256

欠点は、2回ハッシュされて(CPU時間を使用する)、マイグレーションとセキュリティーを簡素化します。

+0

私は[Kerckhoffsの原則](https://en.wikipedia.org/wiki/Kerckhoffs%27s_principle)は、これが悪い考えである理由、すなわち「あいまいさを通したセキュリティ」に当てはまると思います。基本パスワードは引き続きSHA1として格納されます。このようなことをするつもりなら、HMACはおそらく意味をなさないでしょう。 –

0

SHA256に切り替えることで、ウェブサイトをより安全にすることはほとんどありません。

SHA1およびSH512がメッセージがを消化している、彼らはパスワードハッシュ(またはキー派生)の機能であることを意味し決してました。 (メッセージダイジェストは、HMAC-SHA1を使用するPBKDF2のように、KDFのビルディングブロックとして使用できます)。

辞書攻撃と虹の表を防御する必要があります。

現在のところ、(NISTの認可を受けた)パスワードハッシュまたはキー導出機能の唯一の標準はPBKDF2です。標準を使用する必要がない場合、bcryptと新しいscryptがより良い選択肢になります。ウィキペディアはすべての3つの機能のためのページがあります。

https://crackstation.net/hashing-security.htmのページには、パスワードセキュリティの広範な議論が含まれています。

これは、tdhammersは移行の処理方法に関するアドバイスを提供しています。

関連する問題