レート制限とアカウントロックアウトによる防御
ブルートフォース攻撃を実際上困難にする、サーバー側およびプロトコルレベルの防御策を検討します。
「レート制限とアカウントロックアウトによる防御」はCoddyKit上の無料Cryptology Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCryptology Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cryptology Academyコースには全4レッスンが含まれています。
オンラインとオフラインの総当たり攻撃
オンライン総当たり攻撃では、ネットワーク経由で稼働中のシステムに対して認証を試みます。各試行には少なくとも1回の往復通信が必要で、通常は50~500ミリ秒かかるため、攻撃者が実行できる試行は多くても毎分数千回に限られます。これはオフラインでのハッシュクラックよりもはるかに遅い速度です。レート制限とアカウントロックアウトはこの制約を利用し、現実的な時間内ではオンライン総当たり攻撃を実質的に不可能にします。
N回のログイン失敗後のアカウントロック
オンライン総当たり攻撃に対する最も単純な防御策は、通常5~10回の連続したログイン失敗後にアカウントをロックすることです。アカウントは一定時間(15分)ロックすることも、管理者が手動で解除するまでロックすることもできます。ロックアウトにより、オンライン総当たり攻撃はパスワードを解読する攻撃から、アカウントの可用性を枯渇させる攻撃へと変わります。
ロックアウトによるサービス拒否のリスク
アカウントロックアウトは、サービス拒否(DoS)の脆弱性を生みます。攻撃者は有効なユーザー名を知っていれば、それぞれのアカウントに5回ずつログインを失敗させることで、すべてのアカウントをロックできます。これはロックアウトポリシーに固有のトレードオフです。DoSの影響を抑えるため、恒久的なロックアウトではなく、一時的なロックアウト(5分)を使用するシステムもあります。また、アカウントをロックせず、指数バックオフによって攻撃者の速度を落とし、DoSを可能にしないシステムもあります。
ボット抑止策としてのCAPTCHA
CAPTCHA(コンピューターと人間を区別する完全自動公開チューリングテスト)は、人間には簡単でも自動化されたボットには難しい、視覚または音声による課題の解決を要求します。Google reCAPTCHA v3は明示的な課題の代わりに行動分析を使用し、マウスの動き、操作のタイミング、閲覧履歴に基づいてリスクスコアを割り当てます。CAPTCHAはアカウントをロックすることなく、自動化された総当たり攻撃を大幅に遅らせます。
ログイン失敗に対する指数バックオフ
指数バックオフは、失敗するたびにログイン試行の間隔を延ばします。最初の失敗後は1秒、2回目の失敗後は2秒、3回目の失敗後は4秒という具合です。10回失敗すると、待ち時間は17分を超えます。これにより、アカウントを完全にロックせずに総当たり攻撃を極めて遅くできます。サービス拒否のリスクを避けながら、自動化された攻撃を抑止できます。
IPベースのレート制限
IPベースのレート制限は、単位時間あたりの失敗回数がしきい値を超えたIPアドレスからのログイン試行をブロックまたはチャレンジします。あるIPから1分間に50回のログイン失敗が送信された場合、そのIPからの以後の試行を1時間ブロックします。数千の異なるIPアドレスを持つボットネットを利用する分散攻撃は、IP単位の単純な制限を回避できます。そのため、複数のシグナルを横断して試行速度を検知する、より高度な仕組みが必要になります。
総当たり攻撃を阻止するTOTP
時間ベースのワンタイムパスワード(TOTP。Google Authenticatorなどのアプリで使用されます)は、30秒間有効な6桁のコードを生成します。攻撃者が正しいパスワードを総当たりで見つけても、現在のTOTPコードも必要になります。6桁のコードには100万通りしかなく、有効時間も30秒間であるため、TOTPを総当たりできる実際の時間枠はごく短くなります。MFAにより、パスワード総当たりは実行可能な攻撃ベクトルではなくなります。
bcryptのコスト係数によるハッシュ計算の遅延
bcryptは、コスト係数を設定できるパスワードハッシュ関数です。コスト10では、bcryptによる1つのパスワードのハッシュ化に約100ミリ秒かかります。コスト12では約400ミリ秒かかります。つまり、オフラインでbcryptのハッシュをクラックする攻撃者は、GPU上で毎秒数百個程度のパスワードしか試せません。一方、MD5では毎秒数十億個を試行できます。ハードウェアの性能向上に応じてコスト係数を増やすことで、クラックの難易度を一定に保てます。
Argon2のメモリハード性
Argon2は2015年にPassword Hashing Competitionで優勝し、現在、新しいシステムに推奨されている方式です。その重要な特性はメモリハード性です。計算に設定可能な量のRAM(通常は64MB~1GB)を必要とします。これにより、GPUやASICによる高速化を防げます。これらのデバイスはメモリ帯域幅に制約があるためです。GPUでbcryptの計算を何千件も並列実行できる攻撃者でも、メモリの制約によりArgon2は数件しか並列実行できません。
クレデンシャルスタッフィングに対するWAFルール
Web Application Firewallは、ログイン失敗トラフィックのパターンを特定することで、クレデンシャルスタッフィングを検出できます。具体的には、単一のIPからの大量の試行、一般的なユーザー名リストを使った試行、ログイン試行元の地理的分布の異常、自動化ツールに一致する時間パターンなどです。WAFルールは、疑わしいトラフィックがアプリケーションに到達する前に、ブロック、チャレンジ、または速度の低下を行えます。最新のWAFは、既知のボットネットのIP範囲に関する脅威インテリジェンスフィードと統合されています。
既知の漏えいパスワードに対するHIBP API
Have I Been Pwned APIをパスワード変更フローに統合すると、既知の漏えいデータベースに存在するパスワードをユーザーが設定するのを防げます。このAPIはk-匿名性を使用します。SHA-1ハッシュの先頭5文字の16進数だけを送信するため、ユーザーのプライバシーを保護しながら、8億5,000万件の既知の漏えいパスワードとの照合が可能です。登録時に漏えいしたパスワードをブロックすることで、クレデンシャルスタッフィングの脆弱性を大幅に減らせます。
アカウントロックアウト
アカウントを恒久的にロックする厳格なアカウントロックアウトポリシーによって生じる、主なセキュリティリスクは何ですか?
レート制限とアカウントロックアウト:重要なポイント
オンライン総当たり攻撃はネットワーク遅延によって制限されるため、レート制限とロックアウトはこの制約を利用します。アカウントロックアウトは総当たり攻撃を阻止しますが、サービス拒否攻撃を可能にします。指数バックオフとCAPTCHAは、両方のリスクを軽減します。IPベースのレート制限は、単一の送信元からの攻撃を検出します。TOTP MFAは、パスワード総当たり攻撃を事実上阻止します。bcryptとArgon2は、オフラインでのハッシュクラックを遅らせます。HIBP APIは、登録時に既知の漏えいパスワードをブロックします。
よくある質問
「レート制限とアカウントロックアウトによる防御」レッスンは無料ですか?
はい。「レート制限とアカウントロックアウトによる防御」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cryptology Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cryptology Academyコースには全4レッスンが含まれています。
「レート制限とアカウントロックアウトによる防御」で何を学びますか?
ブルートフォース攻撃を実際上困難にする、サーバー側およびプロトコルレベルの防御策を検討します。 ブラウザで直接実行するハンズオンコードでCryptology Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cryptology Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCryptology Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「レート制限とアカウントロックアウトによる防御」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCryptology Academyレッスンでコードを書いて実行できますか?
はい。すべてのCryptology Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ブルートフォース攻撃の仕組み
- 辞書攻撃とレインボーテーブル
- 暗号鍵の長さが重要な理由
- レート制限とアカウントロックアウトによる防御