4

あるシステムから別のシステムに、暗号化されたパスワード (ハッシュ パスワード) を移行できるシステムをセットアップしたいと考えています。どうすればいいですか?

2 か月後、10 倍優れた暗号化を発見し、現在のハッシュ関数は疑いもなく完全に脆弱であることが証明されました。ユーザーパスワードをあるタイプのハッシュから別のタイプ (より良いもの) に移行するにはどうすればよいでしょうか。

4

4 に答える 4

5

次の手法を使用して、あるメソッドから別のメソッドにゆっくりと移行できます。私はその品質を保証できませんので、塩の粒で受け取ってください(ダジャレは意図されていません)

たとえば、ユーザーを格納する次のテーブルについて考えてみます。

id    name    password    salt    hashmethod
--------------------------------------------
1     alice   ABC52...    ABD...  md5
2     bob     28DHF...    Z+d...  sha1
...

時代遅れのハッシュ メソッドがmd5であり、それをより安全なものに置き換えたい場合、次のsha1ようにします。

  • ユーザーがログインし、そのパスワードを新しいメソッド (sha1) とソルトでハッシュします。
    • a) 一致が見つかった場合 (対応するユーザー名とパスワード、およびメソッド sha1)、ユーザーはログに記録されます。
    • b) 一致が見つからない場合:
      • 1)古い方法 (md5) とソルト でハッシュします。
        • a) 一致が見つかった場合 (対応するユーザー名とパスワード、およびメソッド md5)、新しいメソッド (sha1) とソルトを使用してパスワードをハッシュし、それに応じてデータベースを更新します。ユーザーがログに記録されます。
        • b) 一致が見つからない場合資格情報は無効であり、ユーザーはログに記録されません。

この移行には時間がかかる場合があるため、迅速に移行するには、ユーザーにログインまたはパスワードの変更を求める電子メールを送信する必要があります。

それが役に立てば幸い。

于 2012-01-01T09:53:10.063 に答える
1

一般的には、できません。ハッシュからパスワードを復元することはできません。それがハッシュの要点です。元のハッシュ関数が壊れていてパスワードを回復できる場合は、それを行ってから新しい関数でハッシュすることもできます。

于 2012-01-01T09:39:27.783 に答える
1

一般的に、これを行う方法は次のとおりです。

1) 通常は RSA を使用して、公開鍵と秘密鍵のペアを生成します。

2) 秘密鍵を徹底的に保護します。オンラインで保存することは決してありません。(それを半分に分割し、それらを別の人に信頼することもできます。安全な秘密の共有を使用することもできます。トークンで保護することもできます。)

3) パスワードを保存すると、生成した公開鍵で暗号化されたコピーも保存されます。

4) 将来、平文パスワードの復元が必要になった場合は、秘密鍵を復元し、保存されているパスワードのコピーを解読します。

これは、その方法の技術的な説明であることに注意してください。安全に行う方法は複雑で、正確な状況によって異なります。たとえば、攻撃者が公開鍵を自分の公開鍵に置き換える脅威モデルを考慮する必要があります。

于 2012-01-01T09:48:58.070 に答える
0

これは、一方向ハッシュ方式を使用してパスワードを保存し、認証時にハッシュを比較するシステムにのみ適用されます。

システムのアップグレードが頻繁に必要な場合は、次のことを行います。

Taymon が指摘したように、ハッシュは 1 つの方法であり、ハッシュから元のプレーン テキストを取得する方法はありません。

ユーザー情報とパスワードを格納するデータベース テーブルに、Hashing Level 整数フィールドを含めます。これは、ユーザーが使用しているハッシュ方法を示します。

システムに新しいハッシュ方式が追加されると、最高のハッシュ レベルが増加します。

すでに2つのハッシュ方法があるとしましょう

1    MD5
2    SHA1
3    SHA256

新しいハッシュ方法を追加すると、次のSHA512ようになります

4    SHA512

ユーザーがサインインするたびに、システムは識別されたハッシュ レベルを使用して、ユーザーのパスワードがデータベース内のパスワードと同じかどうかを確認します。ここにはいくつかのケースがあります:

  • パスワードハッシュは一致するが、ユーザーのハッシュレベルがシステムが提供する最高のハッシュレベルではない場合、ユーザーの入力パスワード、つまり最高レベルのハッシュ方法を使用してプレーンテキストをハッシュし、ユーザーのハッシュレベルを設定します最高のハッシュレベルに。次に、ユーザーが認証されます。
  • パスワード ハッシュが一致し、ユーザーのハッシュ レベルが最高のハッシュ レベルである場合、ユーザーは認証されます。
  • パスワード ハッシュがまったく一致しない場合、ユーザーは拒否されます。

これは、システムのハッシュ レベルをアップグレードするたびに、ユーザーのパスワードが次の認証時に最高レベルにのみアップグレードされることを意味します。

于 2012-01-01T09:59:01.113 に答える