サービスのパスワードデータベースがリークされるたびに心配する必要がある理由
「昨日、パスワードデータベースが盗まれました。昨日も含めて、Yahooのような声明がオンラインで定期的に見られます。しかし、私たちは本当にこれらの保証を額面どおりに取るべきです?
現実は、パスワードデータベースが危険にさらされているということです。 あります 企業がどのようにしてそれをスピンしようとしているかに関係なく、懸念です。しかし、会社のセキュリティ対策がどれほど悪くても、自分自身を絶縁するためにできることがいくつかあります。.
パスワードの保存方法
企業が理想的な世界でパスワードを保存する方法は次のとおりです。アカウントを作成してパスワードを入力します。パスワード自体を保存する代わりに、サービスはパスワードから「ハッシュ」を生成します。これは、元に戻すことができない独自の指紋です。たとえば、パスワード「password」は、「4jfh75to4sud7gh93247g…」のようなものになります。パスワードを入力してログインすると、サービスはそれからハッシュを生成し、ハッシュ値がデータベースに格納されている値と一致するかどうかを確認します。サービスがパスワード自体をディスクに保存することは決してありません。.
実際のパスワードを特定するために、データベースにアクセスする攻撃者は、一般的なパスワードのハッシュを事前に計算してから、それらがデータベースに存在するかどうかを確認する必要があります。攻撃者はこれをルックアップテーブル - パスワードと一致するハッシュの膨大なリスト - で行います。その後、ハッシュをデータベースと比較できます。たとえば、攻撃者は「password1」のハッシュを知ってから、データベース内のいずれかのアカウントがそのハッシュを使用しているかどうかを確認します。もしそうであれば、攻撃者は自分のパスワードが“ password1”であることを知っています。.
これを防ぐために、サービスはハッシュを「塩漬け」する必要があります。パスワード自体からハッシュを作成する代わりに、ハッシュする前にパスワードの先頭または末尾にランダムな文字列を追加します。つまり、ユーザーはパスワード「password」を入力し、サービスはsaltを追加し、「password35s2dg」のように見えるパスワードをハッシュします。これにより、各ユーザーアカウントにはそれぞれ固有のsaltが割り当てられます。データベース内のパスワードには異なるハッシュ値があります。複数のアカウントがパスワード「password1」を使用していても、塩の値が異なるため、ハッシュは異なります。これは、パスワードのハッシュを事前に計算しようとした攻撃者を敗北させるでしょう。データベース全体のすべてのユーザーアカウントに同時に適用されるハッシュを生成できるのではなく、各ユーザーアカウントとその固有のsaltに対して固有のハッシュを生成する必要があります。これにはもっと多くの計算時間とメモリが必要です。.
これが、サービスがしばしば心配しないように言う理由です。適切なセキュリティ手順を使用しているサービスは、彼らが塩味のパスワードハッシュを使用していたと言うべきです。単にパスワードが「ハッシュされている」と言っているだけであれば、それはもっと心配です。たとえば、LinkedInは自分のパスワードをハッシュしましたが、塩にはしていませんでした。そのため、2012年にLinkedInが650万個のハッシュされたパスワードを失ったのは大きな問題でした。.
不適切なパスワードの習慣
これは実装するのが最も難しいことではありませんが、多くのWebサイトはまだいろいろな方法でそれを台無しにすることをどうにかして:
- プレーンテキストでパスワードを保存するハッシュを気にするのではなく、最悪の犯罪者の中にはパスワードをプレーンテキスト形式でデータベースにダンプするだけの人もいるかもしれません。そのようなデータベースが危険にさらされると、パスワードは明らかに危険にさらされます。彼らがどれほど強くても構いません。.
- 塩を使わずにパスワードをハッシュする注:一部のサービスはパスワードをハッシュし、そこであきらめて、塩を使用しないことを選択することがあります。このようなパスワードデータベースはルックアップテーブルに対して非常に脆弱です。攻撃者は多くのパスワードのハッシュを生成し、それらがデータベースに存在するかどうかを確認する可能性があります。つまり、ソルトが使用されていない場合、アカウントごとに一度にこれを実行できます。.
- 塩を再利用する注:一部のサービスはsaltを使用することがありますが、すべてのユーザーアカウントパスワードに対して同じsaltを再利用することがあります。これは無意味です - すべてのユーザーに同じsaltが使用されている場合、同じパスワードを持つ2人のユーザーが同じハッシュを持つことになります.
- 短い塩を使う注:ほんの数桁の塩を使用すると、可能性のあるすべての塩を組み込んだルックアップテーブルを生成することが可能になります。たとえば、1桁の数字をソルトとして使用した場合、攻撃者はすべてのソルトを組み込んだハッシュのリストを簡単に生成する可能性があります。.
企業は必ずしもあなたに話の全体を伝えるわけではないので、たとえパスワードがハッシュされた(またはハッシュされて塩を加えられた)と言っても、ベストプラクティスを使用していない可能性があります。常に注意を怠る.
その他の懸念
ソルト値もパスワードデータベースに存在する可能性があります。これはそれほど悪いことではありません。各ユーザーに一意のsalt値が使用されている場合、攻撃者は大量のCPUパワーを消費してこれらすべてのパスワードを破壊する必要があります。.
実際には、非常に多くの人が明白なパスワードを使用しているため、多くのユーザーアカウントのパスワードを簡単に判断できます。たとえば、攻撃者が自分のハッシュを知っていて自分のsaltを知っている場合、最も一般的なパスワードを使用しているかどうかを簡単に確認できます。.
攻撃者があなたにそれを知らせ、あなたのパスワードを解読しようとするならば、彼らは彼らがおそらく彼らがする塩の価値を知っている限り、彼らはブルートフォースでそれをすることができます。パスワードデータベースへのローカルのオフラインアクセスにより、攻撃者は彼らが望むすべての総当たり攻撃を利用することができます。.
ユーザー名、電子メールアドレスなど、パスワードデータベースが盗まれた場合、他の個人データも漏洩する可能性があります。 Yahooの漏洩の場合、セキュリティに関する質問と回答も漏洩した。これは、誰もが知っているように、誰かのアカウントへのアクセスを盗むのを容易にする。.
助けて、私は何をすべきか?
パスワードデータベースが盗まれたときにサービスが何を言っても、すべてのサービスが完全に無能であると仮定し、それに応じて行動することが最善です。.
まず、複数のWebサイトでパスワードを再利用しないでください。各Webサイトに固有のパスワードを生成するパスワードマネージャを使用してください。攻撃者がサービスのパスワードが「43 ^ tSd%7uho2#3」であることを発見し、そのパスワードをその特定のWebサイトでしか使用していない場合、役に立ちません。どこでも同じパスワードを使用すると、他のアカウントにアクセスする可能性があります。これが、多くの人のアカウントが「ハッキング」されたことです。
サービスが危険にさらされた場合は、そこで使用するパスワードを必ず変更してください。他のサイトでもパスワードを再利用する場合は、パスワードを変更する必要があります。ただし、そもそもそれを行うべきではありません。.
攻撃者があなたのパスワードを知ったとしてもあなたを保護する二要素認証を使うことも検討すべきです。.
最も重要なことはパスワードを再利用しないことです。あなたのクレジットカード番号のように、データベースに他の重要なものが保存されていない限り、あなたがいたるところにユニークなパスワードを使っていても、危殆化したパスワードデータベースはあなたを傷つけません。.
Image Credit:FlickrのMarc Falardeau、ウィキメディア・コモンズ