問題タブ [dictionary-attack]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
security - なぜ塩は辞書攻撃を「不可能」にするのですか?
更新:ソルトとは何か、レインボーテーブルとは何か、辞書攻撃とは何か、ソルトの目的とは何かを尋ねているのではないことに注意してください。私は質問しています:ユーザーがソルトとハッシュを知っている場合、パスワードを計算するのは非常に簡単ではありませんか?
私はプロセスを理解しており、いくつかのプロジェクトで自分で実装しています。
保存するデータベース:
私が見たソルティングのすべての実装は、パスワードの最後または最初にソルトを追加します。
したがって、彼のソルト(ha ha)の価値があるハッカーからの辞書攻撃は、上記の一般的な組み合わせで保存されているソルトに対して各キーワードを実行するだけです。
確かに、上記の実装は、根本的な問題を実際に解決することなく、ハッカーに別のステップを追加するだけですか?この問題を回避するための代替手段はありますか、それとも私は問題を誤解していますか?
私が考えることができる唯一のことは、ソルトとパスワードをランダムなパターンで組み合わせたり、ハッシュプロセスに他のユーザーフィールドを追加したりする秘密のブレンドアルゴリズムを使用することです。つまり、ハッカーはデータベースとコードにアクセスして、レースを行う必要があります。実りあることを証明するための辞書攻撃のためにそれらを。(コメントで指摘されているように、更新します。ハッカーがすべての情報にアクセスできると想定するのが最善であるため、これはおそらく最善ではありません)。
ハッカーがパスワードとハッシュのリストを使用してユーザーデータベースをハッキングすることを提案する方法の例を挙げましょう。
ハッキングされたデータベースのデータ:
一般的なパスワード辞書:
ユーザーレコードごとに、共通のパスワードをループしてハッシュします。
これが私の主張をよりよく示していることを願っています。
10,000個の一般的なパスワードと10,000個のユーザーレコードがある場合、できるだけ多くのユーザーパスワードを検出するには、1億回のハッシュを計算する必要があります。数時間かかる場合がありますが、実際には問題ではありません。
クラッキング理論に関する最新情報
私たちは破損したウェブホストであり、SHA1ハッシュとソルトのデータベースにアクセスし、それらをブレンドするためのアルゴリズムを持っていると想定します。データベースには10,000のユーザーレコードがあります。
このサイトは、GPUを使用して1秒あたり2,300,000,000のSHA1ハッシュを計算できると主張しています。(実際の状況ではおそらく遅くなりますが、今のところはその引用された図を使用します)。
(((95 ^ 4)/ 2300000000)/ 2)* 10000=177秒
最大長が4文字の95個の印刷可能なASCII文字の全範囲を、計算速度(可変)で割った値を2で割った値(パスワードを検出するための平均時間が平均して50%の順列を必要とすると仮定)の場合、10,000ユーザーは、長さが4未満のすべてのユーザーのパスワードを計算するのに177秒かかります。
リアリズムのために少し調整してみましょう。
(((36 ^ 7)/ 1000000000)/ 2)* 10000=2日
大文字と小文字を区別せず、パスワードの長さが7文字未満で、英数字のみを使用すると、10,000ユーザーレコードを解決するのに4日かかります。また、オーバーヘッドと非理想的な状況を反映するために、アルゴリズムの速度を半分にしました。
これは線形ブルートフォース攻撃であることを認識することが重要です。すべての計算は互いに独立しているため、複数のシステムで解決するのに最適なタスクです。(つまり、実行時間の半分になる異なる端から攻撃を実行する2台のコンピューターを簡単にセットアップできます)。
このタスクをより計算コストの高いものにするために、パスワードを1,000回再帰的にハッシュする場合を考えると、次のようになります。
(((36 ^ 7)/ 1 000 000 000)/ 2)*1000秒=10.8839117時間
これは、 1人のユーザーの引用符で囲まれた数値から半分以下の速度で実行される最大7文字の英数字を表します。
1,000回の再帰的なハッシュは、包括的攻撃を効果的にブロックしますが、ユーザーデータに対する標的型攻撃は依然として脆弱です。
spring-security - Spring security 2.0.3 & 辞書攻撃
私はSpring Security 2.0.3を実行しており、単純な辞書攻撃ブロックを実装する必要があります。埋め込みは非常に簡単で、userstatusのプロパティとブロックされた値を追加します。最後のログイン以降の試行。問題は、Spring Security を介して適切なページにリダイレクトする方法、またはさらに良い方法
で login.jsp にリダイレクトし、いくつかのセッション マーカーを介して入力をブロックする方法です (これはもちろん JS ブロックですが、それでも必要です)。Spring Security の UserDetailService インターフェイスは、loadByUserName を定義します。独自の BadCredentialsException 拡張機能をスローできるようにするメソッドですが、ExceptionTranslationFilter ではそれを利用できません。Spring でそれを行う組み込みの方法はありますか、それとも何かをハックする必要がありますか? ありがとう
passwords - 複数単語のパスワードに対する辞書攻撃
さらに別のパスワードの質問、私は恐れています...
パスワードの強さなどを読んでいますが、ご列席の皆様がお答えいただければ、パスワードに対する辞書攻撃について質問があります。
私が読んでいるドキュメントからわかる限り、パスワードハッシュを単語リストから生成されたハッシュと比較し、o-0、1-1 e-3置換、およびケーシングが変更されます。
ここで、間違っている場合は訂正してください。単語の前にソルトを付けると、パスワードが複雑になり、辞書攻撃が成功する可能性がはるかに低くなります。
さらに、乱数と句読点が散在する長いリストからランダムに選択された2つの単語で構成されるパスワードを作成する場合、人間が比較的覚えやすい強力なパスワードを使用する必要がありますか、それともここでぎこちない話をしていますか?
たとえば、私のパスワードジェネレータは、「14Simplified%^ Cheese96」のパスワードを作成します。これは、「sl&TcReq!/ U9K6%-SN$8Ca」よりも覚えやすいということに同意する必要があります。
これで、私が見つけてアクセスしたすべてのパスワード強度チェッカーで、両方のパスワードが「強い」、「非常に強い」、またはMicrosoftチェッカーの場合は「最高」と評価されますが、最初のパスワードはどれだけ優れているかそれが2つの単語に基づいているとすると?
security - Salt+password ハッシュを DB に保存し、パスワード攻撃から保護する
私の理解を助けてください。また、SSL や DH 鍵交換について話しているわけではありません。ソルトはDBに保存され、攻撃者が実際のDB自体を手に入れた場合に備えて、ユーザーの元のパスワード(レインボーテーブル)を保護するための秘密です。次に、ブルート/辞書ベースの攻撃からどのように保護しますか. 繰り返しますが、間違ったリクエストをログに記録し、多くの悪いリクエストの IP を拒否することは知られています。ここでは暗号化について話しています。パスワードは user1 と同じであるため、攻撃者は他の Web サイトからパスワードを取得しました。ソルトはここでどのように保護しますか。そうではないと思いますが、そのような攻撃を阻止するために利用できる最善のソリューションは何ですか。クレジットカード番号+ CVVのようにデータが本当に重要であると仮定します(CVVを保存しないことは知っていますが、それは問題ではありません)。
編集: ところで、私は愚かなアイデアを思いつきました。それは、辞書攻撃を阻止するための既知の方法のようです。この質問をもっと読む:高コストの暗号化ですが、低コストの復号化
ブルート/辞書/ソーシャルエンジニアリングパスワード攻撃から保護するために、ここでいくつかの他の方法について議論できるかもしれません
cryptography - 辞書攻撃を使用して UNIX ですべてのユーザーのパスワードを見つけるのに予想される時間は?
私は、UNIX パスワード アルゴリズムの設計者が 12 ビットのソルトを使用して UNIX ハッシュ関数 (DES) の E テーブルを変更したことを読んでいました。2^(24) ユーザーのシステムがあるとしますか?
それはユーザー辞書攻撃に対して可能ですか? もしそうなら、それはどのくらいかかりますか?年??
私はコンピューターのセキュリティについて本当に初心者です
申し訳ありませんが編集:コードに応じて、1分あたりのバイト数を想定する必要があると思う単位時間がわかりませんか?
私が尋ねている理由は、質問の1つが次のように述べているプロジェクトのためです:「2 ^ 24ユーザーのシステムを考えてください。各ユーザーに一様ランダム分布からソルトが割り当てられ、誰でもパスワードハッシュとソルトを読み取ることができると仮定しますユーザー。」辞書攻撃を使用してすべてのユーザーのパスワードを見つけるのに予想される時間は?」
どうもありがとう
python - Python - 特定の長さの指定された文字から単語リストを生成する方法
辞書攻撃を実行したいので、そのために単語リストが必要です。特定の長さ (または最小長から最大長までの単語の長さ) の指定された文字から単語リストを生成する方法は? itertools.combinations_with_replacements
とを試しitertools.permutations
ましたが、役に立ちません。返すべき単語リストがすべて揃っているわけではありません。どんな助けでも大歓迎です。ありがとうございました。
python - ファイル内のすべての単語の XOR を実行する方法
標準辞書のすべての単語を変換したい (例: unix マシンの /usr/share/dict/words ) 整数と、辞書内の 2 つの単語ごとに XOR を検索し (もちろん、それらを整数に変換した後)、おそらくそれを保存します。新しいファイルで。
私はPythonが初めてで、ファイルサイズが大きいため、プログラムが時々ハングします。
python - Python xmpp ブルート フォース スクリプトが機能しない
xmpppy を使用して (非常に) 単純な python scrip を作成し、xmpp(jabber) アカウント ブルート フォーサーを作成しようとしましたが、実行しようとすると次のようになります。
line 5 print "Syntax: xsend JID text" SyntaxError: 無効な構文。
私が間違っていることはありますか?
javascript - 辞書攻撃中に試行が成功したかどうかを確認する
私は辞書攻撃を実行しなければならないプロジェクトを行っています。ログインページが投稿するページ(members.phpなど)に投稿するスクリプトを実行しています。正しいユーザー名とパスワードが入力された後にサーバー側で起こることは、Cookie が設定されることだけです。Cookie には、ユーザー名とパスワードの sha 値の値があります。(はい、ソース コードにアクセスできます)。
誰かがログインするたびに Cookie の値を取得し、それをサーバーのテキスト ファイルに保存するように、members.php にスクリプトをハード コードしました。したがって、誰がログインに成功したかを追跡できます。
次のスクリプトを members.php に投稿して、ロジックが機能するかどうかを確認しようとしています。
どうやらうまくいきません。パスワードとユーザー名としてのジャスミンが正しいことを知っています(ここではuser_name [0]とpass_word [0])。それでも、members.php にハード コードされた私のスクリプトは、成功したログイン試行をキャプチャしません。
私もそれを壊そうとしました
各提出後。これも機能しません。ログイン試行が成功したかどうかを確認する別の方法は考えられません。
どんな助けでも大歓迎です。ありがとう!