ブルートフォース攻撃を阻止する方法とは
あなたのメールアドレスや、クラウドサービスで利用しているIDなどを誰か別な人が入手した場合、「ブルートフォース攻撃」と呼ばれる攻撃を受け、自身が保有する各サービスのアカウントがハッキングされる恐れがあります。
「メールアドレスや、アカウントIDが流出したとしても、パスワードが流出しないのであれば、問題ないのではないか」と思う方も多いかと思いますが、このパスワード認証を力づくで突破しようとするのがブルートフォース攻撃の特徴です。以下でご説明いたします。
ブルートフォース攻撃とは
英語で「ブルートフォース(Brute Force)」というと、「暴力」「腕力」といった意味の他に「(あまり考えずに)力任せに物事に取り組む」といった意味があります。ブルートフォース攻撃はこの意味から来ています。つまり、攻撃を行う側のマシンのリソースを全て使って、パスワードを総当たりすることで解読しようとする手法です。
マシンの高性能化、ブルートフォース攻撃を行うツールの低価格化(無料もしくは数百ドル程度で入手可能)、そしてコストのかかる物理マシンを大量に準備せずともクラウドでマシンリソースを安価に借りられるようになったことから、ブルートフォース攻撃は「あまりに効率が悪い攻撃方法」ではなく、「安価かつ自動化できる攻撃方法」へと変わりました。
なお「ブルートフォース攻撃を行う」、といっても、現実問題として「本当に総当たりをしている」わけではありません。例えば、「最初に00000000というパスワードを試して、その次に00000001というパスワードを試して、次に、、、」というように、1から順に試すことは実際には行われていません。マシンのリソース使用を最小化し、最小の時間でパスワードを破ることができるよう、もっとスマートな方法で攻撃を行っています。
オンラインコミュニティ推奨「攻撃を阻止する方法」
情報セキュリティ関連のオンラインコミュニティ「Open Web Application Security Project [OWASP]」は、ブルートフォース攻撃の脅威からどのようにしてシステム、アカウント、ユーザー情報を守ればよいかについて詳しく解説を行っています。
まず、ブルートフォース攻撃がどのような攻撃手法を用いているか理解する必要があります。実際には1から順番に総当たりをしているのではなく、「最も可能性が高いパスワード順に自動で攻撃を行う」という手法を用いています。
例えば、英大文字、英小文字、数字、記号の全てを使うパスワードの組み合わせは、8桁の場合だと数千兆パターンにも上ります。もちろん、この数千兆パターンを1つずつ試していけば、いつかは解読することができます。しかし、この方法ではあまりに時間がかかりすぎます。よって、ブルートフォース攻撃を行うハッカーは、流出したパスワードを分析して、できるだけ確度の高いパスワードを当てていくことで、短時間での解析を目指していることを知っておきましょう。
では、サイトやサービスをどのように守るかですが、いくつかの手法が推奨されています。
1.複数回パスワード入力を失敗したらアカウントをロックする
例えば、「5回」などと回数を決め、これ以上パスワード入力を失敗したらアカウントがロックされ、メールなどの認証を経て新しいパスワードを強制的に再設定される、という手法です。この手法は、ユーザーにとってもデメリットが少なく、かつ攻撃をかなり高い確率で防ぐことができるため、最も推奨されています。
なお、同一のIPから攻撃を受けている場合は「アカウントをロックする」のではなく、「攻撃を行っているIPをロックアウトする」という方法もありますが、この場合は利用者が多いIPの場合、他のユーザーへの影響が大きいことを考慮する必要があります。
2.アカウントに対する未知のデバイス・ブラウザ・IPからのアクセスを拒否する
普段利用していないデバイスからのアクセスや、ブラウザのクッキー情報を保持しないアクセス、または普段とは異なるIPからのアクセスの場合は、原則アクセスを拒否することも防御策となります。
会社に据え置きにしている端末からしかアクセスされないサービスであれば問題ありませんが、外出が多く未知のデバイスやIPからアクセスする可能性があるユーザー(営業担当者など)の場合は、正当なアクセスも拒否してしまう場合があるため、導入には注意が必要です。
3.パスワード入力が失敗したら、時間をおかないと再試行できなくする(遅延)
短時間で非常に多い回数の攻撃を受け付けないようにするため、1度パスワード入力が失敗した場合、数十秒、または数分経過しないと再度のパスワード入力が行えなくするという防御策もあります。この方法は、シングルスレッドでの攻撃には有効ですが、複数のスレッドから同時にパスワード認証しようとした場合は有効性が低下することに留意しておくべきでしょう。
4.パスワード入力が失敗した場合、再試行以外のアクションを要求する
「パスワードが一致しません。再度入力してください」というメッセージとともに、パスワードウィンドウが継続して表示されている。これが一般的なパスワード入力失敗画面です。しかし、これでは繰り返し攻撃してくださいと言わんばかりです。よって、再度の攻撃を防ぐために、パスワード入力が失敗した後に別な画面を出したり、別な認証を要求することも有効です。
例えば、アカウント作成時にに入力した「秘密の質問」を表示して入力を要求したり、画面上のパズルを突破しないとパスワード再入力画面に戻れないといったものです。
5.CAPTCHAの利用
よく、パスワード入力画面やメッセージ送信画面などに「私はロボットではありません」というチェックボックスをが表示されるのを見たことがある方は多いと思います。これは、ひたすらパスワードを繰り返し入力しようとする攻撃に対して、画面上でマウスをクリックさせるというひと手間を入れさせることで、攻撃を手を緩めさせようとするものです(一般的にはCAPTCHAと呼ばれています)。
自社サイトだけでなく、従業員をどう守る?
上記ご覧頂き、自社のサイトやサービスをブルートフォース攻撃から防衛する方法はご理解いただけたかと思います。次に考えるべきは、自社の従業員のIDやパスワードをどのように守るかというものです。最近では、様々なクラウドサービスを利用して業務を遂行している場合も多いため、従業員のID・パスワードがブルートフォース攻撃により盗まれ、クラウドサービス上に保管されている情報が流出する危険もあります。
こうした危険を防ぐためには、クラウド型のIDパスワード管理サービス (IDaaS: Identity as a Sercices) を活用することが推奨されています。「複雑なパスワードを多数覚えてもらうことは無理」という現実的な見地に立ち、「1つの複雑なパスワードでIDaaSにログインし、そこから多種多様なクラウドサービスにログインしてもらう」というものとなります。
弊社が提供するIDaaS「トラスト・ログイン」もそうした製品の一つです。ほとんどのIDaaSサービスは原則有償で、無料の範囲が極端に狭いのに対して、トラスト・ログインは「アプリ数無制限」「ユーザー数無制限」で無料で利用できることから、導入企業が急増しています。ぜひ一度お試しいただき、自社のサイトやサービスに加えて、クラウドサービスを利用する従業員を守る取り組みを始めてみてください。