ブルートフォース攻撃 (総当たり攻撃) は、
受かる 知識を、 仕事の 手の 動きに変える
情報セキュリティマネジメント試験では、
- 3 つの
手口の 違いは、 何を 1 つに 決めて、 何を 次々に変えるか - アカウントの
ロックは、 1 つの ID への 総当たりを ほとんど 進まなくする。 リスト型と リバース型には 効きにくい - 試せる
回数を 絞ったうえで、 パスワードの 長さと 文字の 種類で 組み合わせの 数を増やす
過去問で確かめる
ここでは
過去問 1 パスワードリスト攻撃の手口
パスワードリスト攻撃の手口に該当するものはどれか。
出典:平成28年度 春期 情報セキュリティマネジメント試験 午前 問26(問題冊子の PDF)
過去問 2 リバースブルートフォース攻撃
リバースブルートフォース攻撃に該当するものはどれか。
出典:令和元年度 秋期 情報セキュリティマネジメント試験 午前 問19(問題冊子の PDF)
過去問 3 使い回しを狙う攻撃の名前
特定のサービスやシステムから流出した認証情報を攻撃者が用いて,認証情報を複数のサービスやシステムで使い回している利用者のアカウントへのログインを試みる攻撃はどれか。
出典:平成31年度 春期 情報セキュリティマネジメント試験 午前 問16(問題冊子の PDF)
過去問 4 暗号解読のブルートフォース攻撃
暗号解読の手法のうち,ブルートフォース攻撃はどれか。
出典:平成30年度 春期 情報セキュリティマネジメント試験 午前 問27(問題冊子の PDF)
ほかに 出る 手口の名前
上の 3 つの
- 辞書攻撃。
辞書の 単語や、 よく 使われる パスワードを、 パスワードとして 順に 試す。 全部の 組み合わせを 試すより 数が ずっと 少なくて 済むので、 覚えやすい 単語の パスワードが 先に 当たる。 過去問 1 のアがこれ - ハイブリッド攻撃。
辞書の 単語に、 数字や 記号を 足した 形を 試す。 単語の あとに 年や 「!」を 付けただけの パスワードが 弱いのはこのため - レインボーテーブル攻撃。
漏れた ハッシュ値から 元の パスワードを、 前もって 作った 対応表で 探す。 ログインを 試す攻撃ではないので、 ロックは 効かない。 守りは、 保存する ときに パスワードごとに 違う 値 (ソルト) を 足し、 計算に 時間の かかる ハッシュ関数を 使う こと (OWASP Password Storage Cheat Sheet)。 過去問 3 の エの 「レインボー攻撃」は、 この 手口を指す
ロックは 何を しているのか
同じ ID で
何回で
止め方にも
ロックを 直接問う過去問
ロックの
過去問 5 ロックが最もよく効く攻撃
Web サーバの認証において,同じ利用者 ID に対してパスワードの誤りがあらかじめ定められた回数連続して発生した場合に,その利用者 ID を自動的に一定期間利用停止にするセキュリティ対策を行った。この対策によって,最も防御の効果が期待できる攻撃はどれか。
出典:平成29年度 春期 ITパスポート試験 問81(問題冊子の PDF)
過去問 6 ID を止める守りが効く攻撃
情報システムに対する攻撃のうち,ある ID に対して所定の回数を超えてパスワードの入力を間違えたとき,当該 ID の使用を停止させることが有効な防衛手段となるものはどれか。
出典:平成28年度 秋期 ITパスポート試験 問83(問題冊子の PDF)
演習 1 ログインの 記録から、 止める 利用者を出す
あなたはfindLocks を
- 同じ
利用者の 失敗が 5 回続いたら、 5 回目の 失敗の 時刻から 15 分、 その 利用者の ログインを止める - 解ける
時刻は、 止まった 時刻の 15 分後。 その 時刻ちょうどから、 また 受け付ける - 止まっている
間の 試みは 受け付けないので、 成功でも 失敗でも数えない - 成功したら、
その 利用者の 失敗の 数は 0 に 戻る。 止めた ときも 0 に 戻し、 解けたら 0 から数える - 記録は
時刻の 順に 並んでいる。 1 件は { user, ok, at }で、atは"09:05"の形 - 返すのは
{ user, lockedAt, unlockAt }の並びで、 止まった順。 欄は この順に書く
時刻をtoMinutes と、toHHMM は、
lockout.js
// "09:05" のような時刻を、0 時からの分 (545) にする
function toMinutes(hhmm) {
const [h, m] = hhmm.split(":").map(Number);
return h * 60 + m;
}
// 0 時からの分 (545) を、"09:05" の形に戻す
function toHHMM(minutes) {
const h = String(Math.floor(minutes / 60)).padStart(2, "0");
const m = String(minutes % 60).padStart(2, "0");
return `${h}:${m}`;
}
// logs は時刻の順に並んだログインの記録。1 件は { user, ok, at }
// 止まった利用者を { user, lockedAt, unlockAt } の形で、止まった順に返す
function findLocks(logs) {
const locks = [];
// ここに書く
return locks;
}
できているか0 / 5押すと、5 つのテストに掛けた結果をここに出します。書いた物はどこにも送りません
5 回続けて失敗すると、15 分止まる 途中で成功したら、失敗は 0 から数え直す 別の利用者の失敗は、別に数える 止まっている間の試みは数えない 解ける時刻ちょうどから受け付け、また 5 回で止まる
ロックだけでは足りない
パスワードリスト攻撃は、
守る
- パスワードの
ほかに もう 1 つの 要素で 確かめる 多要素認証を 入れる。 OWASP は、 リスト型や パスワードスプレーを 含む 多くの 攻撃に 対して、 多要素認証が 飛び抜けて 良い 守りだとしています (Credential Stuffing Prevention Cheat Sheet) - よく
ある パスワードと、 過去に 漏れた ことが 知られている パスワードを、 登録の 時点で 断る。 利用者には 使い回さないでもらう - 何回か
失敗した あとに、 人の 操作かを 確かめる 問い (CAPTCHA) を 出す。 機械で 解かれる 物も あるので、 ほかの 守りに 重ねる 1 枚として使う - ログインの
失敗を 全部 記録し、 見直す。 1 つの ID の 失敗だけを 数える 見張りは、 パスワードスプレーを見逃す
2 つ目から 4 つ目は、
演習 2 パスワードの 決まりを、 組み合わせの 数で比べる
パスワードの
下の
▶ 実行ボタンを押すと結果がここに表示されます
コードを動かして、表を作っています
表の
- 長さを 1 字増やすと、
組み合わせの 数に 文字の 種類の 数が 掛かる (英小文字なら 26 倍)。 表でも、 英大小と 数字の 8 字より、 英小文字だけの 12 字の ほうが 組み合わせが多い - 表の
時間は 全部を 試し終えるまでの 時間で、 当たるまでの 時間は 運しだい。 平均すると、 その 半分ほどで当たる - 表の
数は、 文字を でたらめに 選んだ ときの話。 人が 決めた パスワードは、 よく ある 単語や 並びから 先に 試されるので、 ずっと 早く 当たることがある。 上の 「登録の時点で断る」が 要るのはこのため - この
計算は、 ロックで 試せる 回数を 絞った 場合の 話。 保存してある パスワードの ハッシュ値が 漏れると、 攻撃者は 手元の 計算機で 回数の 制限なく 試せる。 だから ロックが あっても、 長さは要る
仕事で
演習 1 のtriesPerHour を 20 に
受かったあとの道
試験に
- 情報セキュリティマネジメント試験の
過去問と解説。 ほかの 回と 分野の 問題を、 同じ形で解けます - 検知の
決まりの設計。 1 つの ID の 失敗だけを 数える 見張りが パスワードスプレーを 見逃す例を、 手元で 直すレッスンです。 演習 1 の 続きに あたります - 記録の設計。
ログインの 成功と 失敗を、 何を どう 残すかを 決める レッスンです - Node.js 認証・本番運用。
認証と 認可を 作り、 本番で 動かすまでを 学ぶコースです - Web セキュリティ入門。
HTTP、 Cookie と セッションから、 攻撃の 入り口の 探し方までを 学ぶコースです - 情報処理安全確保支援士試験。
セキュリティの 専門家の 国家試験で、 次に 受ける 試験の候補です
資格を
