CommentOut

【セキュリティの話】ブルートフォースアタックとは? 【セキュリティの話】ブルートフォースアタックとは?

【セキュリティの話】ブルートフォースアタックとは?

公開日:  最終更新日:

セキュリティの話って後回しにしがちですけど、実は最初の設計時から考慮しておかないといけないことです。
なので、少しずつセキュリティの話をしていこうと思います。

ブルートフォースアタックとか何か

ブルートフォースアタックってご存じでしょうか?
『ブルートフォース(力づく)』なんて言うとわかりにくいですが、『総当たり攻撃』というとどういう物かなんとなく想像できるんじゃないでしょうか?

これはユーザーのID・パスワードやネットワークのポート番号なんかを総当たりで試していって、ログインやセキュリティホールを見つけようとするアプローチです。
ログをチェックすると、数字やアルファベットを一つ一つ舐めるように当てていくので、以前働いていた現場ではブルートフォースアタックを『ペロペロされてる』と言ってました。

このブルートフォースアタックは昔からある手法で、システムに関わったことがない人でも、南京錠を1桁ずつ回して、解除しようとしたことあるんじゃないでしょうか?
あれも正に南京錠へのブルートフォースアタックです。

ブルートフォースアタックの困る所は、特別な技術が必要なわけではないという点です。
複雑なシステムの隙を見つけるタイプの攻撃ではなく、ただ順番にパスワードを入力していくだけですから、実行されるための技術的ハードルが低く、いつ行われてもおかしくないという点です。

ブルートフォースアタックにかかる時間

さて、上記の南京錠の例でもわかると思いますが、人がやっているとブルートフォースアタックは非常に時間がかかります。
では、プログラムがブルートフォースアタックを行うとどれくらい時間がかかるのでしょうか?
一般には『大文字・小文字・数字・記号を含む8桁以上を推奨』とか言われていますが、実際にどれくらいかかるのでしょうか?

以下のサイトで実際にパスワードを入力してチェックすることが可能です。
https://howsecureismypassword.net/

以下、実際に入力してみた数値です。

組み合わせ6桁8桁10桁12桁
大文字・小文字400ミリ秒22分1か月300年
大文字・小文字・数字1秒1時間7か月2,000年
大文字・小文字・数字・記号5秒8時間5年34,000年

8桁では、記号入りでも1日かからないということがわかります。
10桁なければ、大切なデータを守ることができません。
そして、コンピュータの性能は年々向上していきますから、これよりも早まる可能性が高いわけです。

また、これはパスワードだけを解析する場合なので、システム内の表示IDや表示名と、ログインに必要なIDを切り分けることで、IDの解析も必要になるので、さらに安全性は増します。

サーバーやSQLなどにおいては管理者IDがadminやrootで固定している場合、パスワードが最後の砦ですから、やはり10桁は必要でしょうね。

ブルートフォースアタックの対策

では、ブルートフォースアタックは防げないのでしょうか?
防ぐ方法はあります。

10桁以上のパスワードを設定する

まず、前提として、10桁以上のパスワードを設定しましょう。
10桁以上のパスワードであれば、上記表を見ると1か月はかかります。
1か月間も1か所にブルートフォースアタックをし続けるというのは考えにくいですし、1か月もあればセキュリティ担当者の目に触れて、アクセス元のIPアドレスをブロックすることができるでしょう。

パスワードの間違えても良い上限回数を設定しておく

銀行系のシステムにはよくありますが、数回パスワード入力を間違えると、事務所などに電話して本人確認後に解除してもらわないといけないやつです。
あれはブルートフォースアタック対策になっているんです。

または、数回パスワード入力を間違えると、1時間ほどロックがかかり、ロックが解除されるまでパスワード入力を受け付けなくなるシステムです。

このような仕組みになっていれば、総当たりでペロペロしても、途中で止められてしまうので、ブルートフォースアタックを止めることが出来ます。
また、1時間入力を受け付けなくなる物も、例えば3回間違えると1時間止まる場合、解析時間を大幅に伸ばすことができ、実質パスワードの桁数が増えたような効果が得られます。

二段階認証を導入する

最近増えてきましたが、もしパスワードを特定されてしまったとしても、メールやSMS、電話などで一時的なパスワードを送信し、それを入力しないと先に進めない仕組みです。

この仕組みを導入していると、ログインパスワードを解析できたとしても、第3者では2段階目のパスワードを入手できませんから、突破できなくなります。
また、この2段階認証システムの強みは2段階目のパスワードは固定ではなく、随時システムから自動生成される物ですから、この2段階目は総当たりでは突破できません。

ブルートフォースアタックされるとサーバー自体にも負荷がかかりますから、パスワードの誤入力によるロックや二段階認証を導入していることを明記しておくとブルートフォースアタックを事前に抑止することができるでしょう。

宣伝
WordPressサイトのテンプレート編集やトラブル対応、バグ修正、簡単なJavascriptの作成(カルーセルやバリデーション等)など、小規模なスポット対応を受け付けております。
もしお困りごとがありましたら、お問い合わせフォームよりご相談ください。

この記事を書いた人

uilou

uilou

プログラマー

基本的に、自分自身の備忘録のつもりでブログを書いています。 自分と同じ所で詰まった人の助けになれば良いかなと思います。 システムのリファクタリングを得意としており、バックエンド、フロントエンド、アプリケーション、SQLなど幅広い知識と経験があります。 広いだけでなく、知識をもっと深堀りしていきたいですね。