Salting a password

パスワード ソルティングは、保存されているパスワード ハッシュにランダムな値を追加することで、パスワードのクラックをより困難にする手法です。

ただし、パスワードのソルティングとその利点を理解するには、Windows がパスワードを保存する方法と、その方法でパスワードを保存することに関連するいくつかのリスクを理解する必要があります。

パスワードハッシュと、セキュリティが不十分な場所

Windows 内でユーザー アカウントを作成する場合、オペレーティング システムは実際にはアカウントのパスワードを保存しません。そうしないと、悪意のあるソフトウェア、サイバー犯罪者、または不正な管理者がユーザーのパスワードを簡単に調べることができてしまいます。

代わりに、パスワードは保存される前にハッシュされます。つまり、数式を使用してパスワードを 16 進数の文字列に変換します。保存されるのは、パスワード自体ではなく、これらの文字列またはハッシュです。

ユーザーがシステムにログインしようとすると、ユーザー名とパスワードの入力を求められます。ユーザーがパスワードを入力すると、入力したパスワードは、保存されたパスワード ハッシュの作成に使用されたのと同じ式を使用してハッシュされます。

その時点で、ユーザーが入力したばかりのパスワードのハッシュが、保存されているパスワード ハッシュと比較されます。 2 つのハッシュが同一の場合、ユーザーは正しいパスワードを入力したので、システムへのログインが許可されます。

パスワードハッシュのワークフロー

パスワード ハッシュの問題は、攻撃者がユーザーのパスワードを簡単に見つけ出すことができることです。パスワードが長いと、ブルート フォース パスワード クラッキングが非現実的または不可能になる可能性があります。ただし、攻撃者は、ブルート フォース クラッキングを完全にスキップして、パスワード ハッシュをそのまま使用できます。

これが可能な理由は、Windows が各システムで一意のハッシュ アルゴリズムを使用しないためです。

少しの間、アカウントを作成し、そのアカウントのパスワードのハッシュを調べたとします。その後、まったく別のシステムで別のアカウントを作成し、以前と同じパスワードを使用した場合、2 つのアカウントのパスワード ハッシュは同じになります。

サイバー犯罪者はこれを知っており、パスワードとそれに対応するハッシュの膨大なデータベースを作成しています。これは、攻撃者がアカウントのパスワードをクラックしたい場合、パスワードのハッシュがパスワード データベースにリストされているかどうかを確認するだけでよいことを意味します。

ハッシュがデータベースに存在する場合、単純なテーブル ルックアップを使用して、ブルート フォース クラックの手間をかけずに、ハッシュに対応するパスワードを見つけることができます。

AD に保存されたパスワードのセキュリティを強化する

ここで、パスワード ソルティングの出番です。ソルトは、ユーザーのパスワードに追加される値です。これは、ユーザーの知らないうちにバックグラウンドで発生します。

ソルトを追加すると、パスワードのハッシュが変更されるため、パスワードを解読する方法としてテーブル ルックアップを使用することがはるかに困難になります。

適切に実装すると、ソルトはランダムになり、ユーザーごとに異なるソルトが使用されます。これは、組織内の 2 人のユーザーが同じパスワードを持っていても、それぞれに異なるソルトが使用されているため、パスワード ハッシュが互いに異なることを意味します。

パスワードソルティングの欠点

パスワード ソルトの使用は、組織内のユーザー アカウントを保護するための非常に効果的な方法です。それでも、パスワードのソルティングには少なくともいくつかの欠点があります。

  1. パスワードのソルティングは迅速ではありません

まず、ソルティング プロセスは計算集約的です。そのため、特にドメイン コントローラーが十分にプロビジョニングされていない場合や、多数のユーザーが同時にログオンしようとしている場合に、ソルティングによってユーザー認証プロセスが遅くなる可能性があります。

  1. パスワードソルティングは初心者向けのプロトコルではない

パスワード ソルティングのもう 1 つの欠点は、実装が難しいことです。 Windows オペレーティング システムには、ソルティング メカニズムがネイティブに含まれていません。 Microsoft によると、「NT ハッシュも LM ハッシュもソルト化されていません」。そのため、ソルティングにはサードパーティのソフトウェアを使用する必要があります。

パスワードソルティングの安全な代替手段

もちろん、パスワード ソルティングを使用しなくても、組織のパスワードを安全に保つことは可能です。たとえば、 Specops Password Policyには、ユーザーが脆弱なパスワードを使用するのを防ぐためのツールが含まれています。

これは、パスワードの複雑さの要件を強制することを意味するだけでなく (Windows だけを使用した場合に可能なことを超えて)、ユーザーが辞書攻撃を受けやすいパスワードを選択できないようにすることも意味します。

さらに重要なことに、Specops は、侵害されたことが知られている 30 億を超えるパスワードで構成されるデータベースを維持しています。

Specops パスワード ポリシーは、ユーザーのパスワードをこのデータベースと積極的に比較して、ユーザーが侵害されたパスワードを使用しているかどうかを確認し、必要に応じてパスワードの変更を強制します。無料試用版でいつでもActive Directory で Specops パスワード ポリシーを試すことができます。

テーブル ベースのルックアップ攻撃は、ユーザーのパスワード ハッシュがテーブルにリストされている場合にのみ有効です。 Specops パスワード ポリシーは、この種の攻撃に対して脆弱であることがわかっているパスワードをユーザーが使用できないようにするのに役立ちます。

その結果、パスワードのソルティングに匹敵するレベルの保護が実現しますが、ソルトを管理する手間がかかりません。

Specops Softwareによる後援および執筆