web-dev-qa-db-ja.com

一定期間後に別のアカウントでパスワードが使用されているかどうかを明らかにするのは安全ではありませんか?

パスワードの再利用は、セキュリティのパンデミックと見なすことができます。これを修正する明白な方法は、パスワードマネージャーの使用を奨励することですが、実際には(比較的)少数のユーザーが使用しています。

私の考えは、ユーザーがサインアップまたはパスワードを変更したら、他のすべてのアカウントで同じパスワードをチェックするためのWebサイトを用意することです。見つかった場合、おそらく1日ほどの一定の遅延の後、サインアップまたはパスワードを変更したユーザーに、この事実を警告し、パスワードの変更を推奨する電子メールが送信されます。

システムリソースであるこれに関する差し迫った問題を想像できます。パスワードを安全にハッシュすることは高価であり、数千、場合によっては数百万のアカウントと比較するために単一のパスワードをハッシュすることは負担になります。もう1つの考えられる問題はスパムですが、これは電子メールの確認で非常に簡単に修正できると思います。

適切なパスワードの保存方法を想定し、システムリソースが問題ではないと想定した場合、これを行うことに関してセキュリティ上の懸念はありますか?

繰り返します:

  1. ユーザーがサインアップするか、パスワードを変更します。
  2. システムは、そのパスワードが他のアカウントで使用されているかどうかを確認します。この間、パスワードはメモリに保存されます。この間にシステムに障害が発生した場合、チェックはキャンセルされ、パスワードは一意であると見なされます。
  3. 再利用した場合、ユーザーは翌日、パスワードが他の場所で使用されていることをユーザーに通知し、ユーザーにパスワードの変更を勧めるメールを受け取ります。
3
Daffy

はい。この情報を明らかにすることは、セキュリティ違反と見なされます。サービスのセキュリティを意図的に弱めます。そして、タイミングはここでは問題ではありません。


同じパスワードを持つ2人のユーザーがセキュリティ問題を提起するのは避けなければならないというのは誤った前提です。そうではありません。

ただし、この事実を明らかにすることはセキュリティ上の問題であり、適切な salting を適用してパスワードをハッシュすることで軽減できます。これらの注意事項は、2人のユーザーが同じパスワードを使用することを隠すことを目的としています。

リスクを説明するために、このようなメールに何を書けばよいかを考えてください。

昨日登録したパスワードが実際にユーザーの1人が使用していることがわかりました。

パスワードクラッカー用の辞書を更新してください。そして、私たちと他の会社の漏らされたアカウントデータベースに対してそれを直ちにチェックすることを忘れないでください。

2
techraf

あなたは問題を誤解しています、それは人々が同じユーザー名、電子メールアドレス、または本名で複数のservicesで同じパスワードを使用するときです。これは、攻撃者が1つのサイトの電子メールアドレスとパスワードの組み合わせを取得すると、他のサイトでも同じ組み合わせを試すことができるために発生します。

攻撃者が2つのアカウントを関連付ける方法がないため、同じサービスの2人のユーザーが同じパスワードを持っている場合は問題ありません。データベースがリークされたとしても、パスワードは正しく保存されていれば、ソルトが異なり、認識できなくなります。

あなたの提案は多くの情報を提供します。たとえば、攻撃者は、共通のパスワードを使用して新しいアカウントを作成することにより、システムで使用されているパスワードを特定できます。パスワードが見つかると、攻撃者はそのパスワードを使用して、システム上の既存のアカウントにログインしようとする可能性があります。攻撃者がユーザー名の完全なリストを取得できる場合、これにより、攻撃者が少なくとも1つのユーザー名にアクセスできることが保証されます。この種の攻撃は、ログインの試行がさまざまなユーザーのアカウントにわたって行われるため、攻撃が困難になります。

@kasperdが述べたように、異なるユーザー間で重複するパスワードをチェックすることで識別される主なことは、2つの強力なパスワードが同じである確率が事実上ゼロであるため、弱いパスワードの使用です。脆弱なパスワードをチェックすることが目標である場合は、システムのセキュリティを弱めないように使用するためのより良い戦略があります。

したがって、あなたの提案は問題ではないものを修正しようとしてセキュリティを弱めます。通常、試行錯誤した真のパスワード戦略を使用することをお勧めします。

[より良い攻撃シナリオを提案してくれた@techrafに感謝します。]

2
Neil Smithline

また、ユーザーが使用しているパスワードを知らないこともベストプラクティスです。たとえば、MD5で暗号化されたパスワードは簡単に推測できます。すべてのユーザーが同じパスワードを持っている場合でも、データベースに表示されないようにする、より優れた暗号化方法を使用してください。

0
Frostbite