web-dev-qa-db-ja.com

総当たりアルゴリズムについて

私はブルートフォースの手法と可能な防止方法について調べてきましたが、明確な答えを見つけることができなかった問題が1つあります。

私が理解しているように、4つの数字を持つパスワードに対する「単純な」総当たり攻撃は、0000で始まり、次に0001、0002などになります。

理論的には、0000が1秒(単純にするため)にかかり、0001が2秒かかると仮定できます。その後、9999は9999秒かかりますか?

これに基づいて、たとえば、あなたのPINコードを9999に設定した場合、1111よりもクラックするのに9倍時間がかかるように見えますか?

もちろん、これは単純化しすぎた例ですが、英数字のパスワードに記号を付けて話している場合、理論的には、最も安全なパスワードは最高の数字、最高の文字、最高の組み合わせASCII =シンボルの値?

質問が理解可能であり、誰かがこの問題について私にいくつかの光を当てることができることを願っています。

15
akseli

実際のブルートフォースアルゴリズムでは、パスワードの生成に使用された方法が考慮されます。

  • パスワードがランダムに生成された場合。総当たりアルゴリズムも真にランダムであると想定する必要があります。あなたはそれが何であるかを知りません、あなたは1つのパスワードが他よりも見つけるのが速いと主張することができません、あなたは平均してパスワードが利用可能なプールの半分をチェックすることによって発見されるだろうと言うことができます。

  • 脆弱性のある乱数ジェネレータを使用して生成されたことがわかっているパスワード(一部の数字は可能性が高く、一部は不可能)の場合、攻撃者はブルートフォースアルゴリズムを適宜変更します。

  • パスワードが人間が選択したものであることがわかっている場合(生成アルゴリズムの弱点の一種)、攻撃者はこのような弱点に適用可能な方法を使用します。一般的な単語、置換、繰り返し、傾向、順序の逆転、既知の方法、ヒント、トリック、パディングなど.

    それは人間の心対人間の心のコンテストです。シーケンシャルチェックは統計的に最も効果が低く、対戦相手が最も効果が低い方法を使用するという仮定に基づいて、特定のパスワード強度について結論を導き出すことは誤りです。

    人為的に生成されたパスワードの脆弱性を攻撃するには、社会学を使用する場合があります(一部のパスワード方式は、それぞれの母集団で他の方法よりもクールに見えます)。別の攻撃者が統計を使用する可能性があります(漏えいしたパスワードを数百万個取り、分析し、適用します)。さらに別の人は、メカニズムを検討するかもしれません(特定のデバイスで入力するのが簡単なキーとキーの組み合わせが最初にテストされます)。

4桁の数値の例では、1999で推測を開始し、1900までテストしてから2000-2016をテストします。確かに9978よりずっと前に6853(PCキーボードで入力するのは本当に不便)と、2つのずっと前に5683(よく知られている "愛")をチェックします。知らされた人はより効果的な方法を使用するかもしれません(はい、これは例です-質問で使用されたものです-例を争うためではなく、一般的な結論を出すためにそれを使用してください)。

32
techraf