ブルートフォース攻撃

読み:ぶるーとふぉーすこうげき / 英語表記:brute force attack

パスワードや暗号の鍵として考えられる組み合わせを、すべて順番に試して、正解を見つけ出す攻撃。総当たり攻撃ともいう。

イマシルちゃんの解説

4桁の数字のダイヤル錠なら、0000から9999まで、1万通りを全部試せば必ず開くよね。

ブルートフォース攻撃は、この「全部試す」作戦なんだ。
とても単純だけど、時間さえかければいつかは必ず当たっちゃう。
だから、パスワードを長くして、試す組み合わせの数をうんと増やすことが大事なんだよ!

より深い解説

定義

ブルートフォース攻撃(総当たり攻撃)は、パスワードや暗号鍵の候補を、可能な組み合わせのすべてにわたって順に試す攻撃である。理論上は必ず成功するため、防御側は、試行にかかる時間を現実的でないほど長くすることで対抗する。

組み合わせの数

試す必要がある組み合わせの数は、「使える文字の種類」の「長さ」乗である。

組み合わせの数 = (文字の種類)^(長さ)
使える文字種類8文字の組み合わせの数
数字1010^8 = 1億
英小文字2626^8 ≒ 2,088億
英大小文字+数字6262^8 ≒ 218兆

文字の種類を増やすより、長さを増やすほうが、組み合わせの数は大きく増える。

オンライン攻撃とオフライン攻撃

種類内容主な対策
オンライン攻撃ログイン画面などに、実際にパスワードを入力して試す試行回数の制限、アカウントロック、多要素認証
オフライン攻撃盗んだパスワードのハッシュ値に対して、手元のコンピュータで試すソルトと、計算に時間のかかるハッシュ関数(bcrypt、Argon2など)の使用

オフライン攻撃では、サーバ側の回数制限が効かず、GPUなどで高速に試せる。パスワードをハッシュ化して保存する際は、ソルト(利用者ごとのランダムな値)を加え、あえて計算に時間がかかる方式を使う。

派生した攻撃

攻撃内容
辞書攻撃すべての組み合わせではなく、辞書の単語やよく使われるパスワードだけを試す
リバースブルートフォース攻撃パスワードを固定し、利用者IDのほうを変えて試す
パスワードスプレー攻撃少数のよく使われるパスワードを、多数のアカウントに、時間を空けて試す
パスワードリスト攻撃流出したIDとパスワードの組をそのまま試す

アカウントロックの注意点

一定回数ログインに失敗したアカウントを使えなくするアカウントロックは、ブルートフォース攻撃に有効である。ただし、次の点に注意が必要である。

そのため、ロックの時間を一定時間で解除する、IPアドレス単位で制限する、多要素認証と組み合わせる、といった工夫が行われる。

実際の試験ではここに出る!

この用語が出てくる記事

↑