タグ付けされた質問 「brute-force」

16
最善の分散ブルートフォース対策は何ですか?
最初に、少し背景:CodeIgniterのauth + authシステムを実装していることは秘密ではありません。今のところ(いわば)勝っています。しかし、私はかなり非自明な課題に遭遇しました(ほとんどの認証ライブラリが完全に見逃していることを1が、私はそれを適切に取り扱うことを主張):でインテリジェントに対処する方法を、可変ユーザ名ブルートフォース攻撃大規模分散します、。 私はいつものトリックをすべて知っています: IP /ホストごとの失敗した試行の数を制限し、攻撃者のアクセスを拒否する(例:Fail2Ban)- ボットネットがよりスマートに成長したため、これは機能しなくなりました 上記と、既知の「悪い」IP /ホスト(例:DenyHosts)のブラックリストを組み合わせる-これは、ボットネットが#1に落ちることに依存しており、ボットネットはますますそうではありません 従来の認証と組み合わされたIP /ホストホワイトリスト(動的IPユーザーではほとんど役に立たず、ほとんどのWebサイトではチャーンが高くなります) N分/時間内に失敗した試行の数にサイト全体の制限を設定し、その後のすべてのログイン試行を数分/時間の間スロットリング(一時停止)します(DoS攻撃によるボットネットの子の遊びになります)。 ログイン/パスワードオプションなしのすべてのユーザーに対する必須のデジタル署名(公開鍵証明書)またはRSAハードウェアトークン(確かなソリューションですが、閉鎖的で専用のサービスに対してのみ実用的です) 強化された超強力なパスワードスキーム(例:記号を含む25を超える意味のない文字-繰り返しますが、カジュアルなユーザーには非現実的です) そして最後に、CAPTCHA(ほとんどの場合機能する可能性がありますが、ユーザーにとっては迷惑であり、断固としたリソースのある攻撃者に対して事実上役に立たない) さて、これらは理論的に実行可能なアイデアにすぎません。サイトを広く開放するようなごみのアイデアはたくさんあります(たとえば、些細なDoS攻撃に)。私が欲しいのはもっと良いものです。そしてもっといいことには、 DoS攻撃やブルートフォース攻撃に対して安全(+)である必要があり、ややこっそりしたボットがレーダーの下で動作し続ける可能性がある新しい脆弱性を導入しない 自動化する必要があります。人間のオペレーターが各ログインを確認したり、不審なアクティビティを監視したりする必要がある場合、実際のシナリオでは機能しません 主流のWeb使用(つまり、プログラマー以外のユーザーが実行できる大量のチャーン、大量のオープンな登録)に適している必要があります。 それは、カジュアルなユーザーがイライラしたりイライラしたりする(そして潜在的にサイトを放棄する)までユーザーエクスペリエンスを妨げることはできません。 本当に安全な子猫でなければ、子猫を巻き込むことはできません。 (+)「安全」とは、妄想的なユーザーがパスワードを秘密に保つ能力と同じくらい安全であることを意味します だから-それを聞いてみましょう!どうしますか?私が言及しなかったベストプラクティスを知っていますか(そう言ってください)。私は自分のアイデアを持っていることを認めます(3と4のアイデアを組み合わせたものです)が、私は本当の専門家に自分を困らせる前に話させます;-)

10
ハッシュのためにソルトを隠す必要性
職場では、塩に関して2つの競合する理論があります。私が取り組んでいる製品は、ユーザー名や電話番号などを使用してハッシュをソルトします。基本的にユーザーごとに異なりますが、すぐに利用できます。他の製品はユーザーごとにランダムにソルトを生成し、ユーザーがパスワードを変更するたびに変更されます。ソルトはデータベースで暗号化されます。 私の質問は、2番目のアプローチが本当に必要かどうかです。純粋に理論的な観点からは、最初のアプローチよりも安全であることは理解できますが、実用性の観点からはどうでしょうか。現在、ユーザーを認証するには、ソルトを暗号化せずにログイン情報に適用する必要があります。 それについて考えた後、私はこのアプローチから実際のセキュリティの向上を見ることはありません。アカウントごとにソルトを変更すると、攻撃者が各アカウントのハッシュをすばやく特定する方法を知っていたとしても、ハッシュアルゴリズムをブルートフォースにしようとする試みが非常に困難になります。これは、パスワードが十分に強力であることを前提としています。(明らかに、すべてが2桁のパスワードのセットの正しいハッシュを見つけることは、8桁のパスワードの正しいハッシュを見つけるよりもはるかに簡単です)。私の論理が間違っていますか、それとも私が見逃しているものはありますか? 編集:わかりましたので、ここで、ソルトを暗号化するのは本当に難しいと思う理由です。(私が正しい軌道に乗っているかどうかはわかります)。 以下の説明では、パスワードは常に8文字、saltは5文字で、すべてのパスワードが小文字で構成されていると仮定します(計算を簡単にするためです)。 エントリごとに異なるソルトがあると、同じレインボーテーブルを使用できません(実際には、十分なサイズの1つがあれば実際には技術的に使用できますが、今のところは無視します)。これは私が理解していることから、ソルトの本当の鍵です。すべてのアカウントをクラックするには、それぞれについて話すために、車輪を再発明する必要があるためです。ハッシュを生成するために正しいソルトをパスワードに適用する方法を知っている場合、ソルトはハッシュされたフレーズの長さ/複雑さを実際に拡張するだけなので、そうします。したがって、ソルトとは何かを知っているので、パスワードとソルトを "知っている"ために生成する必要がある組み合わせの数を13 ^ 26から8 ^ 26に削減します。今ではそれが簡単になりますが、それでも本当に難しいです。 ソルトの暗号化に移ります。ソルトが暗号化されていることがわかっている場合は、最初にそれを解読しようとはしません(十分なレベルの暗号化があることを前提として)。無視します。それを解読する方法を理解する代わりに、前の例に戻って、13 ^ 26のすべてのキーを含むより大きなレインボーテーブルを生成します。ソルトを知らないと間違いなく私は遅くなりますが、ソルトの暗号化を最初に解読しようとするという記念すべき仕事が増えるとは思いません。だからそれだけの価値はないと思います。考え? 以下は、ブルートフォース攻撃を受けた場合のパスワードの保持期間を説明するリンクです。http: //www.lockdown.co.uk/?pg = combi
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.