web-dev-qa-db-ja.com

総当たり攻撃に耐性のあるセキュリティ対策はありますか?

私は特に暗号化について話しているのではなく、全体としてセキュリティについて話している。仮説的な時間の間に仮説的な量のリソースに対抗できるデータやシステムを保護するために導入できるセキュリティ対策はありますか?

私は答えはノーだと思いますが、私はセキュリティの専門家ではないので、これを人々に大声で話す前に再確認したいと思いました。

指摘する必要があります。何かを実装する必要があるので、私はこれを求めていません。それは怠惰な好奇心です。ここでは、仮説を扱っても問題ないことにも触れておきます。関連があれば、量子コンピューティングのようなものを方程式に取り入れてもかまいません。

8
gargantuan

One-Time PadShamir's Secret Sharing は、暗号アルゴリズムの2つの例であり、いくつかの秘密の値が含まれていますが、無制限の攻撃者に対してもブルートフォースの影響を受けません。コンピューティング能力。その主要な機能は「キーの冗長性の欠如」です。「不良」キーを除外する方法はありません。これは、OTPが暗号化されたデータと同じ長さの秘密鍵を必要とするという事実と、Shamirの秘密共有では、「共有」の合計サイズが共有データよりもさらに長いことを示しています。

確率論的に言えば、単一のブロックを暗号化し、それよりも大きいキーを使用する限り、AES暗号化から同じプロパティを取得します(たとえば、単一の128ビットデータ要素の暗号化にはAES-256)。アイデアは、与えられた暗号文に対して、any平文が(given[〜#〜] c [〜 #〜]および[〜#〜] p [〜#〜]、かなりの数のキー[〜#〜] k [〜#〜]このようにAESK(P)= C)。したがって、攻撃者は、キースペース全体を探索しても、「正しい」平文を選択できません。もちろん、同じキーを他のものに再利用すると、AESで別の128ビットブロックを暗号化したとしても、攻撃者はキーを除外するために必要なすべての冗長性が得られ、ブルートフォースが再び実行可能になります(コンピューターがより大きい仮想攻撃者の場合)銀河よりもです)。

ブルートフォースに抵抗するアルゴリズムは、非常に長いキーが必要なため、適用範囲が限られています。実際には、地球ベースのテクノロジーを使用する攻撃者に対して、ブルートフォース攻撃は「十分に長い」キーを使用して阻止されます。攻撃者が実行するのに十分な計算能力を必要とする場合があると考えている場合2「基本演算」の場合、少なくともnビットのキーを使用します。量子コンピューターを恐れる場合は、2nビットを使用します(対称暗号化やハッシュなどの対称的なものについては、量子コンピューターは理論的にはサイズの鍵空間を探索する可能性があります[〜#〜] n [〜#〜]努力してsqrt(N)ですが、それよりも優れているため、2倍の大きいキーを使用するだけで十分です)。伝統的にn = 80を設定しますが、テクノロジーの可用性の一定の進歩により、説得力を保ちたい場合は、その値を少し上げるように強制され始めています。大きなセキュリティマージン。 2の累乗はgoodなので、n = 128、しかし、全体としての人類の実際の制限(すべての人間が協力してその目標のために働くありそうなSFシナリオでは)は、90から100の間のどこかと推定できます。

非対称アルゴリズム(非対称暗号化、署名...)は、「総当たり」よりもはるかに優れた既知の攻撃があるという点ではるかに弱く、量子コンピュータは、ほとんどの場合、攻撃を簡単にします。しかし、これはブルートフォースではなくなったため、質問の対象外です。

20
Thomas Pornin

SOの質問から私の答えをコピーします:
はい、もちろんあります。

ブルートフォース攻撃は、2つのことを実行できます。ある種のシークレット(パスワード、暗号化キーなど)を「推測」すること、および圧倒的なリソース(つまり、フラッディング、サービス拒否-DoS)です。

他の形の攻撃を防ぐことを目的とした対策は、ブルートフォースとは無関係です。

たとえば、SQLインジェクションから保護するための標準的な推奨事項:入力検証、ストアドプロシージャ(またはパラメーター化されたクエリ)、コマンド/パラメーターオブジェクトなど。ここで何をブルートフォースにしようと思いますか?コードが正しく記述されていれば、推測する「秘密」はありません。

ここで、「ブルートフォース攻撃を防ぐ方法は?」と質問された場合、答えは攻撃者がブルートフォース攻撃を試みていることに依存します。パスワード/ログイン画面の総当たり攻撃について話していると仮定すると、強力なパスワードポリシー(難しくするため)、アカウントロックアウト(総当たり攻撃のレートを制限するため)、スロットル(再び試行レートを制限するため)などのオプションがあります。 。

7
AviD

答えは1つ-それほど面白くない-「はい、たくさんあります」

1つの注意点:耐性を定義する

私の見解では、ブルートフォース攻撃を検知して軽減するのに十分な時間がかかる防御策を講じることができれば、その攻撃への抵抗に成功したということです。

従来のセキュリティの世界では、これには徹底的な防御が必要です。特定のレイヤーで予想される最悪の場合の攻撃にかかる時間を計算します。検出プロセスがその期間内に検出される場合は、それに対して何かを行うことができます。

攻撃を遅くできますか?モバイルデバイスのパスコードに対するブルートフォース攻撃を試みるときに、デバイスが非常に遅いアルゴリズムを使用している場合は、攻撃を遅らせます。これが役立つかどうかは、次の手順によって異なります。モバイルデバイスを無効にするプロセスがある場合は、数時間で十分な遅延になる可能性があります。

抵抗することによって「決して壊れない」という意味の場合、私の答えはNoになるはずです:-)

5
Rory Alsop

さて、総当たり攻撃は本質的に確率計算に帰着します。計算の特定の変数を制御して、攻撃が成功する可能性を減らすことができます。最大試行回数(アカウントロックアウト)、検索スペースのサイズ(パスワードの複雑さ)など。ただし、最終的には、他の変数(時間)に対する理論的な完全な制御(質問で述べたとおり)が与えられた場合、確率は最終的に1に戻ります。実世界では、はい、ブルートフォース攻撃の実用性を低下させるための非常に効果的な方法がいくつかありますが、理論的には、リモートでの統計的な可能性は無視できるほどであり、悪用は成功します。

上記は、認証システムのリモート総当たり攻撃に固有のものであることが意図されています。

3
TobyS

ログイン画面やパスワードハッシュを強引に強制することについて話しているのですか?

ログイン画面について話している場合は、10回試行した後にアカウントを無効にするように設定できます。 10回試行しても、正しいパスワードでさえロック解除されません。

彼らがパスワードハッシュを持っている場合、彼らはあなたがそれに対して望むだけ多くのリソースを投げることができます。 AmazonのコンピューティングエンジンであるAWSが$ 100であったとしても、サイトで購入するよりもはるかに多くのコンピューター時間を購入できます。

このようなことは、既存のテクノロジーで計算するには宇宙の時代よりも長くかかると人々は言う。未来のテクノロジーが私たちの無知を笑わせると信じています。量子コンピュータは現在非常に制限されており、ほとんどは数ビットしかなく、おそらくハイエンドでは20〜30ビットです。それが完成し、ゲームのチェンジャーとなるビットを1000にできる場合。その後、さらに多くのゲームチェンジャーが登場するでしょう。

0
cybernard