パスワードとシステムアクセス
不正なシステムアクセス
ユーザーパスワードと認証ポリシーは、承認されていないユーザーがアプリケーションで収集される重要なデータや機密データにアクセスすることを防ぎます。 ハッカー(システムやデータに不正アクセスしようとする悪意あるユーザー)は、脆弱なパスワードや緩いポリシーを見つけて悪用するために、さまざまな手法を使用します。 ユーザーのパスワードを推測する行為をクラックと言います。
ハッカーはブルートフォース攻撃により、推測を繰り返して、ユーザーのパスワードをクラックし、ログインを成功させます。 ブルートフォース攻撃によって、アクセス権を取得するまで、考えられるすべての文字の組み合わせを1つずつ試します。
ハッカーは辞書攻撃により、推測の成功率を高めるため、辞書(既知のパスワードや推測されるパスワードを含む単語リスト)を利用します。 ハッカーは、以下のようにして、辞書にエントリーを追加します。
- 「password」のような、よく使用される単語を見つける。
- 組織のWebサイトをスパイダリング(探索)して、標語や設立年など、組織内でよく使用される単語を見つける。
- 別のサイトのハッキングを成功させて既知のパスワードを入手する。
多くの場合、セキュリティ対策として、パスワードはハッシングというプロセスによって変換された形式で保存されます。 ハッシングでは、アルゴリズムを使用して、ハッシュと呼ばれる数値をテキスト文字列から生成します。 たとえば、「password」
というパスワードは5f4dcc3b5aa765d61d8327deb882cf99
というハッシュに変換されます。
ハッシュは元の形式に復号化できないので、ハッシングはパスワードの保護に役立ちます。 代わりに、「password」などのテキスト文字列がハッシングされ、有効なテキスト文字列を元にしていることがわかっている、以前に生成されたハッシュと比較されます。 たとえば、ユーザーがパスワードを設定すると、そのパスワードはハッシングされた形式で保存されます。 その後、ユーザーがログインしようとすると、送信したパスワードがハッシングされ、その値が、保存されているハッシュと比較されます。 ハッシュが一致すれば、パスワードは有効であるとみなされ、ユーザーのログインが許可されます。
ハッシングされたパスワードをクラックするため、ハッカーはレインボーテーブル攻撃を利用します。 レインボーテーブル攻撃では、ハッカーは、考えられるパスワードとハッシュのリストを含むルックアップテーブルを作成し、それぞれのハッシュをハッシングされたパスワードのリストと比較します。 ハッシュが一致した場合、ルックアップテーブルに基いてパスワードを特定します。
次の問題に答えて、理解度をチェックしましょう。
パスワードのセキュリティ
多くの場合、セキュリティ侵害は、脆弱なパスワードをハッカーがクラックし、機密データやシステムにアクセスされることによって発生します。 パスワードは、次のいずれかの条件に該当する場合は脆弱であると考えられます。
- 長さが8文字未満である。
- 英字のみなど、1種類の文字のみで構成されている。
- 「password」のような、よく使用される語句である。
- 111やabcdef(アルファベットの最初の6文字)など、繰り返し文字や単純な文字の並びが含まれている。
- aの代わりに@、oの代わりに0など、よく使用される代替文字が含まれている。
パスワードが十分に強ければ、ハッカーがパスワードのクラッキングを成功させる前にあきらめる可能性があります。 パスワードの強さは、長さ、複雑さ、予測しやすさという3つの要素によって決まります。
長さ
パスワードを長くすると、考えられる組み合わせの数が増えます。 文字列について考えられる組み合わせの最大数は、xn です。ここで、x は使用できる文字の数、n は文字列の文字の数です。 パスワードの長さが4文字だとして、小文字(a~z)のみを含む場合、考えられる文字の組み合わせは264(つまり、456,976組)です。 パスワードの長さを8文字にすると、考えられる組み合わせの数が268(つまり、208,827,064,576組)に増えます。
複雑さ
使用できる文字の種類を増やせば、組み合わせの数も増えます。 そのため、多くのセキュリティポリシーでは、大文字(A~Z)と小文字、数字(0~9)、特殊文字(ピリオド、カンマ、疑問符、算術演算子など)を使用することを要求しています。 パスワードの長さが8文字で、文字a~zとA~Z、数字0~9、30の特殊文字(` ~ ! @ # $ % ^ & * ( ) _ + - = [ ] | \ : " ; ' < > ? , . /)を使用できる場合、考えられる組み合わせの数は (26 + 26 + 10 + 30)8(つまり、5,132,188,731,375,616組)に増えます。
予測しやすさ
ハッカーは、多くの場合、パスワードをクラックするときに、passwordなど、よく使用されるパスワードの辞書を利用します。 こうした辞書には、aの代わりに@、sの代わりに$など、よく使用される代替文字のバリエーションも含まれていることが多いです。 たとえば、「p@$$word」というパスワードは安全そうに見えますが、よく使用される代替文字が含まれているため、予測しやすいものと考えられます。
代わりに、「my eagle swims in chicken soup」など、一般的でない語句を使用してください。 レインボーテーブル攻撃への対策として、語句全体をハッシングする必要があります。これにより、パスワードのクラック成功率が低くなります。 その他の手法としては、よく使用される代替文字ではなく、大文字と小文字を不規則に組み合わせた文字をパスワードに含めたり、スペースの代わりに特殊文字を使用したりするものもあります。
次の問題に答えて、理解度をチェックしましょう。