暗号学 において、総当たり攻撃または全鍵探索とは、攻撃者が多数の可能な鍵またはパスワードを送信し、最終的に正しく推測することを期待する暗号解読攻撃である。この戦略は、理論的には情報理論的に安全でないあらゆる形式の暗号化を破るために使用できる。[ 1 ]しかし、適切に設計された暗号システムでは、鍵を正しく推測できる可能性は無視できるほど低い。
パスワードを解読する場合、この方法は短いパスワードをすべてチェックするのに非常に高速ですが、長いパスワードの場合は、総当たり検索に時間がかかりすぎるため、辞書攻撃などの他の方法が使用されます。長いパスワード、パスフレーズ、キーは可能な値が多く、文字の多様性により、短いものよりも指数関数的に解読が難しくなります。[ 2 ]
総当たり攻撃は、鍵拡張技術を実装することで効果を低下させることができます。鍵拡張技術は、攻撃者が暗号が解読されたことを認識しにくくしたり、攻撃者が各推測をテストするためにより多くの作業を行うようにしたりします。暗号化システムの強度を測る指標の1つは、攻撃者が理論上、総当たり攻撃を成功させるのにどれくらいの時間がかかるかです。[ 3 ]
総当たり攻撃は、すべての候補を列挙してそれぞれをチェックするという一般的な問題解決手法である総当たり探索の応用です。総当たり攻撃を表す言葉として「ハンマリング」が使われることがあり[ 4 ]、対策として「アンチハンマリング」が使われることもあります[ 5 ] 。
ブルートフォース攻撃は、パスワードを構成する可能性のあるすべての組み合わせを計算し、それが正しいパスワードかどうかをテストすることによって機能します。パスワードの長さが長くなるにつれて、正しいパスワードを見つけるのにかかる平均時間は指数関数的に増加します。[ 6 ]

総当たり攻撃に必要なリソースは、鍵のサイズが大きくなるにつれて線形ではなく指数関数的に増加します。米国輸出規制では、従来、鍵の長さは56ビットの対称鍵(例:データ暗号化標準)に制限されていましたが、現在ではこれらの制限は撤廃されているため、最新の対称鍵アルゴリズムでは、計算能力の高い128~256ビットの鍵が一般的に使用されています。
128 ビットの対称鍵は総当たり攻撃に対して計算的に安全であるという物理的な議論があります。物理法則によって示されるランダウアー限界は、計算で消去されるビットごとにkT · ln 2の計算を実行するのに必要なエネルギーの下限を設定します。ここで、 Tは計算デバイスの温度 (ケルビン) 、kはボルツマン定数、 2 の自然対数は約 0.693 (0.6931471805599453) です。不可逆的な計算デバイスは、原理的にもこれより少ないエネルギーを使用することはできません。[ 7 ]したがって、128 ビットの対称鍵の可能な値を単純にめくる (実際にチェックするための計算は無視する) には、理論的には、従来のプロセッサで2 128 − 1 ビットのめくりが必要になります。 計算が室温付近(約300 K)で行われると仮定すると、フォン・ノイマン・ランダウアー限界を適用して必要なエネルギーを約10¹⁸ジュールと推定できます。これは、1年間で30ギガワットの電力を消費することに相当します。これは、30× 10⁹ W×365×24×3600 s = 9.46× 10¹⁷ J、または262.7 TWh(世界の年間エネルギー生産量の約0.1%)に相当します。実際の計算全体(各キーをチェックして解が見つかったかどうかを確認する)では、この量の何倍ものエネルギーを消費します。さらに、これは単にキー空間を巡回するためのエネルギー要件であり、各ビットを反転するのにかかる実際の時間は考慮されていません。この時間は明らかに0より大きい値です(ブレマーマン限界を参照)。
しかし、この議論は、レジスタ値が従来のセット操作とクリア操作によって変更されることを前提としており、これらの操作は必然的にエントロピーを生成します。計算ハードウェアは、この理論的な障害に遭遇しないように設計できることが示されています(可逆計算を参照)。ただし、そのようなコンピュータが実際に構築された例は知られていません。

政府のASICソリューションの後継となる商用製品が利用可能になったことで、カスタム ハードウェア攻撃とも呼ばれるようになったが、2 つの新興技術が特定の暗号に対する総当たり攻撃でその能力を証明している。1 つは最新のグラフィックス処理ユニット(GPU) 技術[ 8 ]、もう 1 つはフィールド プログラマブル ゲート アレイ(FPGA) 技術である。GPU は広く利用可能で価格性能比に優れているという利点があり、FPGA は暗号化操作あたりのエネルギー効率に優れているという利点がある。どちらの技術も並列処理の利点を総当たり攻撃に持ち込もうとしている。GPU の場合は数百、FPGA の場合は数千の処理ユニットがあり、従来のプロセッサよりもパスワードの解読にずっと適している。たとえば、2022 年に 8 台のNvidia RTX 4090 GPU をリンクしてHashcatソフトウェアを使用してパスワードの強度をテストしたところ、2000 億個の 8 文字のNTLMパスワードの組み合わせを 48 分で試すことができたという結果が出た。[ 9 ] [ 10 ]
暗号解析分野のさまざまな出版物では、今日の FPGA 技術のエネルギー効率が証明されています。たとえば、COPACOBANA FPGA クラスタコンピュータは、単一の PC (600 W) と同じエネルギーを消費しますが、特定のアルゴリズムでは 2,500 台の PC と同等の性能を発揮します。多くの企業が、単一の FPGA PCI Expressカードから専用の FPGA コンピュータまで、ハードウェアベースの FPGA 暗号解析ソリューションを提供しています。WPAおよびWPA2暗号化は、従来の CPU [ 11 ] [ 12 ]と比較してワークロードを 50 分の 1 に、FPGA の場合は数百分の 1 に削減することで、総当たり攻撃に成功しています。

高度暗号化標準(AES) では 256 ビット鍵の使用が許可されています。総当たり攻撃で 256 ビット対称鍵を解読するには、128 ビット鍵の場合よりも2 128倍の計算能力が必要です。2019 年の最速スーパーコンピュータの 1 つは 100ペタ FLOPSの速度を持ち、理論的には 1 秒あたり 100 兆 (10 14 ) 個の AES 鍵をチェックできます(1 回のチェックで 1000 回の演算を想定)。しかし、それでも256 ビット鍵空間を使い果たすには3.67 × 10 55年かかります。 [ 13 ]
総当たり攻撃の基本的な前提は、鍵生成に完全な鍵空間が使用されたことであり、これは効果的な乱数生成器に依存し、アルゴリズムやその実装に欠陥がないことです。たとえば、当初は総当たり攻撃で解読不可能と考えられていた多くのシステムが、擬似乱数生成器のエントロピー不足のために、検索対象の鍵空間が当初考えられていたよりもはるかに小さいことが判明したため、解読されました。これには、NetscapeのSecure Sockets Layer (SSL) の実装 ( 1995 年にIan GoldbergとDavid Wagnerによって解読されました) や、2008 年に欠陥が発見されたDebian / Ubuntu版OpenSSLが含まれます。[ 14 ] [ 15 ]同様に実装されたエントロピー不足が、 Enigma のコードの解読につながりました。[ 16 ] [ 17 ]
認証情報の再利用とは、以前の総当たり攻撃で収集したユーザー名とパスワードの組み合わせを再利用するというハッキング手法です。認証情報の再利用の特殊な形態としてパスザハッシュがあり、これはソルト処理されていないハッシュ化された認証情報を盗み出し、総当たり攻撃をせずに再利用するものです。[ 18 ]
特定の種類の暗号化は、その数学的特性により、総当たり攻撃では破ることができません。その一例として、ワンタイムパッド暗号があります。これは、すべての平文ビットに、真にランダムなキービットのシーケンスから対応するキーが割り当てられているものです。140文字のワンタイムパッドエンコードされた文字列を総当たり攻撃すると、最終的には正解を含むすべての140文字の文字列が明らかになりますが、与えられたすべての答えのうち、どれが正解であるかを知る方法はありません。Venonaプロジェクトで行われたように、このようなシステムを破るには、一般的に純粋な暗号技術ではなく、キーパッドが真にランダムでない、キーパッドが傍受される、オペレーターがミスをするなど、実装上のミスに依存します。[ 19 ]
攻撃者が暗号化されたデータにアクセスできたオフライン攻撃の場合、発見や妨害のリスクなしに鍵の組み合わせを試すことができます。オンライン攻撃の場合、データベース管理者やディレクトリ管理者は、パスワードの試行回数を制限する、連続する試行の間に時間遅延を設ける、回答の複雑さを増やす(CAPTCHA の回答を要求する、多要素認証を使用するなど)、ログイン試行が失敗した後にアカウントをロックアウトするなどの対策を講じることができます。[ 20 ] Web サイト管理者は、特定の IP アドレスがサイト上の任意のアカウントに対して、あらかじめ決められた回数以上のパスワード試行を試みないようにすることができます。[ 21 ]さらに、MITRE D3FEND フレームワークは、ネットワーク トラフィックのフィルタリング、おとり認証情報の展開、認証キャッシュの無効化などの戦略を実装することにより、ブルートフォース攻撃から防御するための構造化された推奨事項を提供します。[ 22 ]
逆ブルートフォース攻撃(パスワードスプレーとも呼ばれる)では、単一の(通常は一般的な)パスワードが複数のユーザー名または暗号化されたファイルに対してテストされます。[ 23 ]このプロセスは、選択された少数のパスワードに対して繰り返される場合があります。このような戦略では、攻撃者は特定のユーザーを標的にしていません。