こちらの記事では、辞書攻撃(Dictionary attack)について解説します。辞書攻撃は、主にWebサービスやシステムのログイン機能で扱われる、パスワードを特定するために行われるサイバー攻撃の一種です。
辞書攻撃とは何か
辞書攻撃とは、パスワードに用いられやすい文字列や数値列をあらかじめ「辞書」として用意しておき、その辞書を使用してパスワードを特定する手法のことで、Dictionary attackなどとも表現されます。用意した辞書の内容を順番に試していくことで、パスワードの特定を目的に攻撃が行われます。
ここで言う辞書とは、普通の英和辞典などではなく、パスワードの候補として利用されがちな単語を辞書として作成し、データ化しておいたもののことを言います。辞書攻撃は、パスワードが単純で予測可能な場合に非常に効果的な攻撃手法であり、サイバーセキュリティに対する脅威の一つです。
攻撃は自動化ツールを使用して行われる
辞書攻撃は、多くの場合、自動化ツールを使用して行われます。ツールの代表的なものとしては、Hydraが挙げられます。このツールを使用し、攻撃者は作成した辞書を元に、順番に一つずつパスワードの特定を試みます。このようなツールがあれば、ある程度専門的な知識がない状態でも攻撃することが可能なため、比較的難易度が低いと言えるでしょう。
インフラ学習サイトのEnvaderでは、Liuxの基礎やデータベースの基礎を学ぶだけではなく、ブルートフォース攻撃を行うためのツールの一つとしてご紹介したHydraを用いて、ブルートフォース攻撃や辞書攻撃などを仮想的に体験することができる環境をご提供しています。
https://envader.plus/course/3/scenario/1040
パスワードを狙った攻撃には複数の種類がある
辞書攻撃の他にも、ブルートフォース攻撃やリバースブルートフォース攻撃、パスワードスプレー攻撃など、パスワードを狙った攻撃は複数存在します。中でもブルートフォース攻撃は総当たり攻撃とも呼ばれ、広く知られた攻撃手法です。
ブルートフォース攻撃については以下の記事で解説しています。
https://envader.plus/article/67
辞書攻撃とブルートフォース攻撃の違いとは
辞書攻撃とブルートフォース攻撃は、どちらもログイン機能に対する攻撃手法ですが、攻撃の方法には若干の違いがあります。その違いと特徴は以下のとおりです。
辞書攻撃の特徴
辞書攻撃は、利用者が使いそうなパスワードを辞書化しておくため、ブルートフォース攻撃に比べてパスワードの特定にかかる時間を削減することができると言われています。特に、passwordやzxcvbn(キーボードの配列)など単純なパスワードを使用している場合、比較的容易にパスワードが特定されてしまう可能性があります。
ブルートフォース攻撃の特徴
一方、ブルートフォース攻撃は総当たり攻撃とも呼ばれ、辞書攻撃に比べて、力技なイメージがあります。いつかはパスワードを特定できる可能性があるものの、長く複雑なパスワードに対しては特定に時間がかかってしまいます。
全ての文字の組み合わせを試行しパスワードを特定しようとするため、パスワードの長さや複雑さが高い場合、攻撃に必要な時間が膨大になり特定が困難になります。
以上の点を踏まえると、辞書攻撃は事前に準備をしておき計画的に攻撃を進めるタイプ、ブルートフォース攻撃は無造作に攻撃を進めるタイプと言えます。
辞書攻撃への対策方法
辞書攻撃への対策方法は、私たちユーザーが行うべきものと、システム側で行うものの2つに分けられます。以下に、ユーザー側とシステム側で考えられる対策方法をご紹介します。
ユーザー側の対策
-
パスフレーズを使用し、複雑でも覚えやすいパスワードを作成する。(passwordなど、単純なパスワードを使用しない。)
NISC(内閣サイバーセキュリティセンター)が作成したインターネットの安全・安心ハンドブックでは、安全なパスワードの作成には複雑さと長さが大切とされています。
具体的には、英大文字小文字+数字+記号で10桁以上が複雑で長いパスワードとされています。ただ、自身でこのパスワードを作成する場合、考えることや覚えることが非常に難しいでしょう。この場合に効果を発揮するのがパスフレーズの利用です。
パスフレーズとは文字列を使ったパスワードのことで、NISCのインターネットの安全・安心ハンドブックでは以下のような例があります。
このように、自分の私生活で行なっていることなどを言語化することで、自分だけが知り得る情報を覚えやすくパスフレーズ化することができます。
注意点として、有名な歌詞、映画や本のフレーズは推測されやすいため使用しない方が良いでしょう。
-
1Passwordなどのパスワード管理アプリを使用する
パスワード管理アプリを利用することで、ユーザー側のパスワード管理を簡単かつ安全に行うことができます。
1PasswordやKeeperなど多くのパスワード管理アプリがあり、無料で使えるものや月額、年額料金が発生するものがあります。登録できるパスワードの上限や対応するデバイス、OSに違いがあるため、利用する際には注意が必要です。
-
パスワードの使い回しはしない
同じパスワードを、複数のWebサイトやアプリケーションで使い回していた場合、そのパスワードが特定されてしまえば被害は拡大してしまいます。特にGoogleやAmazonなどのパスワードが特定されてしまえば、その被害は非常に大きなものになる可能性があります。
システム側の対策
-
一定回数以上のパスワード認証失敗時のアカウントロック
辞書攻撃は、用意した辞書を使用し順番にパスワードの特定を試みます。そこで、キャッシュカードのように3回間違えたらアカウントをロックしてしまうなど、試行上限を決めてしまうことが有効です。
こうすることで、短く単純なパスワードでなければ特定される可能性は非常に低くなります。ただ、何回まで試行回数を許容するかという判断は、そのサービスやアプリケーションの使いやすさなどにも関わってくるためよく検討する必要があるでしょう。
-
多要素認証(MFA)の導入
多要素認証(Multi-Fuctor Authentication)とは、パスワードだけではなく、他にも何かを使ってアカウントにアクセスする方法のことです。具体的には、認証の3要素である知識情報、生体情報、所持情報のうち、いずれか2つ以上の要素を使用して行う認証のことを指します。
多要素認証を用いることで、パスワードだけではなく別の情報も必要になるため、より安全にアカウントを守ることができるようになります。
認証に関する記事は次のリンクで解説しています。
まとめ
辞書攻撃は、パスワードに用いられやすい文字列や数値列をあらかじめ「辞書」として用意しておき、その辞書を使用してパスワードを特定する手法のことです。現状、パスワードを必要とするサービスやアプリケーションが多くなり、覚えておくことが非常に困難な状況にあることは確かです。
そのため、複雑なパスワードよりも、より覚えやすい単純なパスワードを設定しがちになりますが、ブルートフォース攻撃や辞書攻撃などによりパスワードを特定されてしまう危険性が高まっているのも事実です。
今後パスワードを設定する際には一度立ち止まり、本当にこのパスワードで良いのか?を考える必要がありそうです。
エンベーダー編集部
エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。
関連記事
2020.02.25
完全未経験からエンジニアを目指す爆速勉強法
USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
- キャリア・学習法
- エンジニア
2024.01.27
OAuthとは? デジタル認可の基本をわかりやすく解説
ユーザーの同意に基づいて、安全かつ効率的に異なるアプリケーション間でユーザー情報の共有を可能にする「認可プロトコル」です。よく認証プロトコルと間違われますが、働きを見れば認可の仕組みであることが理解できます。
- サイバーセキュリティ
2022.11.18
【初心者解説】ホワイトハッカーとは?仕事内容や資格を解説
こちらの記事では、ホワイトハッカーになるための資格や年収について解説します。
- サイバーセキュリティ
2023.03.09
サイバー攻撃の被害を最小限に!情報セキュリティの基礎知識と攻撃手法について
こちらの記事では、情報セキュリティについての基礎知識、サイバー攻撃の主な種類について解説します。
- サイバーセキュリティ