IDとパスワードの組み合わせを試す

スポンサードサーチ

世界には、システムに対して不正なアクセスを行い、企業情報や個人情報を盗み取ったり、破壊行動を行う「クラッカー」と呼ばれる人達がいます。

こういった人達は、システムの脆弱性を突いて攻撃を仕掛けてきますが、そういったものの中にブルートフォースアタックというものがあります。

企業の社内システムやECサイトでは、管理者向けやユーザー向けに専用の管理画面が用意されていて、アカウントIDとパスワードでログインをして使うというのが一般的ですが、ブルートフォースアタックはこのログイン画面に対して行う攻撃方法の一つです。

ブルートフォースアタックは、brute forceという英語の意味である「強引な」とか「力ずく」の意味にそのままに、ユーザのアカウントIDとパスワードを解読するために、全てのパターンを試す攻撃方法です。

ただし、全パターンを試す力ずくの攻撃なので対策方法はあるのですが、システムによってはその対策が行われていないケースが存在します。

そこで、今回はこのブルートフォースアタックに対応していないと何が問題であり、防ぐための対策方法としてはどういったものがあるかについて見ていきます。

ブルートフォースアタックとは?

ブルートフォースアタックとは、総当たり攻撃とも呼ばれるように、ログイン画面などのアカウントIDとパスワードを入力する画面で、あらゆる文字の組み合わせを片っ端から試していくという単純な攻撃手法です。

例として、旅行バッグなどにつける数字4桁のダイヤル錠を想定してみましょう。

数字4桁のダイヤル錠
数字4桁のダイヤル錠

数字4桁のダイヤル錠の場合には、組み合わせは0000から9999までがあります。

そのため、組み合わせとしては「0〜9」の10桁の数値の4桁 → 104 →  10×10×10×10 = 10,000通りです。

これを全て一つづつダイヤルを動かしながら試していけば、必ず開錠ができます。

このように、鍵が開くまでに時間はかかりますが、総当たりで試していけば確実に正解に辿り着くことができてしまうのです。

システムでは一瞬で試す事ができる

ダイヤル錠を手動で開錠する場合にはかなり面倒ですが、システムの場合には自動化ができるので非常に簡単です。

攻撃に際しては、順番にアカウントIDとパスワードを試していくだけですので、あまり深い知識が無くても、攻撃用のプログラムを作れてしまいます。

IDとパスワードの組み合わせを試す
IDとパスワードの組み合わせを試す

そのため、上記の絵のように、アカウントIDとパスワードの組み合わせをシステムで自動的に試していけば、いずれログインができる組み合わせに到達してしまいます。

パスワードは複雑なものが望ましい

このようにブルートフォースアタックは、全ての組み合わせを試していくために、単純なアカウントIDとパスワードであれば、システムを使うとすぐに組み合わせが見つけられてしまいます。

独立行政法人情報処理推進機構(IPA)が2008年に発表したコンピュータウイルス・不正アクセスの届出状況[2008年9月分および第3四半期]についてにおいて、使用できる文字数と入力桁数によるパスワードの最大解読時間を以下のように発表しています。

使用する文字の種類4文字の場合6文字の場合8文字の場合10文字の場合
英字(大文字、小文字区別しない)約3秒約37分約17日約32年
英字(大文字、小文字区別)+数字約2分約5日約50年約20万年
英字(大文字、小文字区別有)+数字+記号約9分約54日約1千年約1千万年
※すべての組み合わせを試すために必要な時間を計算。記号は31文字使用できるものとした。使用パソコンOS:Windows Vista Business 32bit版、プロセッサ:Intel Core 2 Duo T7200 2.00GHz、メモリ:3GB

この表を見ると、2008年時点の古いPCでも4文字の英字(大文字、小文字区別有)+数字+記号の組み合わせだと約9分で解読できてしまっています。

今ではさらにPCのスペックが上がっている事を考えると、複雑なパスワードでない限りすぐに解読がされてしまう恐れがあるというのがわかります。

逆に、パスワードの文字数が10文字以上で、英字と数字、記号をランダムに組み合わせると約1千万年というあまりにも膨大な時間がかかるため、現実問題としてこれはパスワードが解読ができないのと同様です。

独立行政法人情報処理推進機構(IPA)では、ちょこっとプラスパスワードというページで安全なパスワードについて、以下のように規定しています。

  • 最低でも8文字以上の文字数で構成されている。
  • パスワードの中に数字や、「@」、「%」、「”」などの記号も混ぜている。
  • パスワード内のアルファベットに大文字と小文字の両方を入れている。
  • サービスごとに違うパスワードを設定している。

システム側で対応する

パスワードを複雑なものにすることでパスワードの解読自体は難しくなりますが、ユーザー自身がパスワードの対策をしていなくても、クラッカーから攻撃されても主要なシステムへの侵入が困難であるようにシステム自体を構築することも重要です。

そのためには、以下のような対応が考えられます。

  • パスワードの試行回数を制限する
  • 多要素認証と組みあわせる
  • reCAPTCHAを使う
  • アクセス元を制限する
  • ログインURLを変更する

パスワードの入力回数を制限する

パスワードの入力回数を制限するというのは、複数回パスワードを間違えるなど、ログインができない入力が続いた場合に、数分間アカウントを停止するなどを行うものです。

上で見てきたように、ブルートフォースアタックは時間をかければどんなパスワードでも理論上解読ができてしまいます。

しかし、3回連続でログインに失敗したら該当のアカウントIDでは5分間ログインできなくする、という対応を行うことにより、ログインを試行する作業がさらに大幅な時間がかかることになるので、ブルートフォースアタック対策として効果的です。

多要素認証と組みあわせる

パスワードをどんなに複雑なものに設定をしていたとしても、そのパスワードを複数のサイトで使いまわしていると、他のサービスでパスワード流出事故があると、そのパスワードを使ってハッキングが行われてしまう可能性があります。

そこで、二つ以上の認証を組み合わせることでハッキングされる可能性を減らすのが多要素認証です。

多要素認証とは、認証を2つ以上の要素によって行うものを指しています。

多要素認証の中でも、2つの要素を使う認証のことを二要素認証と呼びますが、これに似た言葉として二段階認証と呼ばれる認証方式もあります。

要素とは知識要素、所持要素、生体要素の3つを指しています。

1.知識要素

知識要素としては、IDやパスワード、PINコード、秘密の質問など、本人が知っている情報を使うものです。

クレジットカードのセキュリティコード
クレジットカードのセキュリティコード

クレジットカードの決済は、カード番号、利用期限、名前に加えてセキュリティコードを入れないと決済できませんが、セキュリティコードは固定のものであるため、知られてしまうと自由に決済がされてしまいます。

また、以前は「秘密の質問」という、母親の旧姓、飼っているペットの名前、生まれた場所といった、一般的には本人しか知りえない質問に回答する二段階認証も流行ってましたが、これも最初のログインで使うID・パスワードと同じ知識要素のみの1要素なので、二要素認証ではなく二段階認証となり、使われることは推奨されません。

このように、知識要素のみの認証はセキュリティレベルとしては弱いものになってしまいます。

2.所有要素

所有要素としては、スマートフォンを使ったSMS認証やアプリ認証、ICカード、ワンタイムパスワードを生成する端末など、本人が持っているものに付随する情報を使うもので、ネット銀行の振込に使われるトークンや、Google認証で発行される認証コードが代表的なものです。

ワンタイムパスワード
ワンタイムパスワード

SMS認証やアプリ認証の場合、利用する度に有効時間のある認証コードが本人が持っている端末に対して発行される二要素認証であるため、セキュリティレベルは高くなり、導入されているサービスも増えてきています。

3.生体要素

生体要素としては、顔や指紋、虹彩(目の膜)、声紋、静脈といった、本人の身体的な情報を使うもので、iPhoneの顔認証によるパスワードロックが代表的なものです。

iPhoneなどの顔認証
iPhoneなどの顔認証

所有要素の認証の場合、最悪端末やワンタイムパスワードを生成する端末が奪われてしまうと認証されてしまう可能性もありますが、生体認証の場合には本人以外が認証を行う事は不可能に近い物があり、セキュリティレベルとしては高くなりますが、生体認証を行うための機器や認証を行うシステムが必要となるため、導入コストが高くなる点がデメリットとなります。

Google reCAPTCHAを使う

Google reCAPTCHAとは、Googleが無料で提供している閲覧者とWebページとのやり取り(閲覧者のページ内での行動)などに基づいてスコアを算出し、botなどのシステムと人間を判別するためのサービスです。

何らかのWebサービスにログインする際に、「私はロボットではありません」と表示がされたり、信号機や横断歩道の画像を選択させられたりした経験はないでしょうか。

reCAPTCHA
reCAPTCHA

こういった表示を行っているのがGoogle reCAPTCHAです。

ブルートフォースアタックのように意味不明な文字列の入力が何度も繰り返されるのは、大抵の場合プログラムによって自動的に行われています。

こういった行動に対して、Google reCAPTCHAは疑わしいアクセスに対して人間でないと判別ができない画像選択画像などを出す事で人間だけに絞ることをしてくれますので、ブルートフォースアタックに対する対策として大変有効です。

アクセス元を制限する

自社の基幹システムに対するアクセスは、基本的には特定のユーザーだけに限定ができるはずです。

日本の企業の場合だと、管理画面を使うのに海外からのアクセスは不要でしょう。

また、社内からしかアクセスする事がないのであれば、会社の固定IPだけに限定することもできるでしょう。

特に個人情報や機密情報にアクセスできるシステムの場合には、アクセス元を限定してそもそもアクセス自体ができないようにする事は大変重要です。

ログインURLを変更する

同様に、一般ユーザーが使わないようなシステムで、外部からアクセスして欲しくない管理画面のURLを以下のように想定しやすいものにするのは望ましくありません。

  • /login/
  • /admin/
  • /cms/
  • /management/
  • /user/

こういったURLにするのは避けましょう。

オープンソースCMSのWordPressの場合、ディレクトリ直下にインストールした管理画面のURLはデフォルトのままだと以下の形でアクセスができます。

  • https://ドメイン/wp-admin
  • https://ドメイン/wp-login.php

これは、逆に言うと悪意のあるクラッカーがアクセスするには大変便利な情報です。

これに対しては、WPS Hide LoginSiteGuard WP PluginのようにログインURLを変更できるPlugin(プラグイン)などで、管理画面へのアクセスURLをわからなくする事はクラッキング対策として有効です。

現状のシステムで対策が行われているか確認をする

見てきたように、ブルートフォースアタックへの対応方法はいくつも存在し、簡単に対応できるものも数多くあります。

出来れば複数の対策を組み合わせるのが望ましいですが、まずは現状のシステムで対策が行われているのかを確認し、もし対策が行われていない場合には早急に対応を行う事が必要です。

ITのことで、お困りではありませんか?

ITは、コンサルティングからプロジェクトを全体を見据えて実施しなければ上手くいきません。
リソース・シェアリングは、ITのコンシェルジュとして、クライアントにとっての最適解をご提案するコンサルティングから構築・運用・解析までをワンストップで対応できるITコンサルティング会社です。
ITに関してお困りのことがあればお気軽にご相談ください。

ITプロジェクトで最適解を探すなら
御社にとって最適なWebサイト構築をするなら
失敗しないWebシステム開発をするなら
WordPressを活用したいなら
ECサイトを構築したいなら
越境ECサイトを構築したいなら
企業間取引向けECサイトを構築したいなら
マーケットプレス型ECサイトを構築したいなら
課題や事例から最適解を探すなら
リソース・シェアリングの実績
お問合せ

スポンサードサーチ