最近、新しいアカウントのパスワードを生成しました。最初の3文字は「aa1」でした。
他のすべての攻撃を使い果たした後、クラッカーはブルートフォースを開始します。彼らが「a」から始まると仮定すると、私のパスワード「aa1」は、「ba1」よりも速くクラックされ、「za1」よりも速く解読されます。
このパスワードは非常に長いため、この質問は実際的ではなく理論的です。 (もちろん、パスワードの長さが制限されていない限り...)私の想定は、総当たり攻撃とパスワードについて正しいですか?
それは、攻撃者がパスワードをブルートフォースでいかに正確に実行するかに依存するように思われます。しかし、私の意見では、結局それは問題ではないということです。
真面目な攻撃者は、妥当な時間内にそれを実行できることを知らない限り、aaaaaaaa
から99999999
まで、英数字の順序で最初から開始することは決してありません。それが1000年かかるとしたら、なぜcccccccc
に立ち寄らなければならないことを知って、なぜ彼らはその方法を使うべきなのでしょうか?しかし、攻撃者が妥当な時間内にすべての可能性を試すことができることを知っている場合は、パスワードが最初の組み合わせか最後の組み合わせかは関係ありません。 )。
ほとんどのパスワードは依然として脆弱で(たとえば、犬の名前に加えて、おそらく誕生日など)、攻撃者はパスワードを解読するために何年も時間を浪費するのが嫌いです。したがって、攻撃者が通常行うことは、辞書とパターンを使用することです。最初に次のようなパスワードを試します:pass123
、123pass
、john90
、john91
、John92
、JOHN93
、123456
、l1nux4dm1n
など。辞書やパターンでのすべての試行が失敗した場合、それらは先に進み、パスワードが本当にランダムに見えると想定する可能性があります。 all可能なパスワードを試すのにどれくらい時間がかかりますか?それが妥当な時間内に実行できる場合、それらはすべてを試す可能性があります(たとえば、aaaaaaaa
から99999999
へ)。それ以外の場合、攻撃者がすべてを試すことができないと想定している場合、ランダムな推測(ランダムな文字列、順序付けされていない)を使用してパスワードをブルートフォースにしようとする可能性があります:12hrisn589sjlf
、9f2jcvew85hdye
、otnwc739vhe82b
など。攻撃者が運が良ければ、遅かれ早かれパスワードを見つける可能性があります。ただし、パスワードが強すぎて、推測するのに何年もかかりすぎる場合は、別の攻撃(フィッシング、ショルダーサーフィン、キーロガーなど)をあきらめるか考えることをお勧めします。
エントロピーは本当に最大の関心事であり、エントロピーはパスワード生成プロセスのランダム性の量によって決まります。
例として18文字のパスワードを使用してみましょう。ここでは、英数字(62文字)のみを取り上げます。これは与える:
log2(62**18) = 107
ビットのエントロピー
常に最初の3文字をZに変換してブルートフォースを実行しにくくする場合は、パスワードから3つのランダムな文字を効果的に削除して、次のようにします。
log2(62**15) = 89
ビットのエントロピー
これは約1,000,000倍弱です。もちろん、どちらも 絶対に と 完全に をブルートフォースで実行することは不可能であるため、誰かがパスワードをブルートフォースで入力しようとしても、心配する必要はありません。
ただし、そのようなパスワードをブルートフォースで強制することはどれほど不可能かを強調する価値があります(私のリンクがあなたを説得しなかった場合に備えて)。 行MD5ハッシュリグ のトップは、1秒あたり2,000億のハッシュを試すことができます。非常に高速です(そのため、パスワードにMD5を使用することは想定されていません)。弱いパスワード(最初の3文字をz
で置き換えた場合)でも、7.6e26の可能な組み合わせがあります。 1秒あたり2,000億ハッシュでは、のみ120[〜#〜] million [〜#〜]パスワードがMD5でハッシュされた場合、すべてのパスワードの可能性を試すまでの年数。何も心配する必要はないと思います。
aa
の影響それで、誰かがあなたのパスワードを総当たりすることをより困難にするために、「より高い」文字から始める方が良いでしょうか?多分そうでないかもしれません。攻撃者が偶然アルファベットの最初から開始した場合、確かにあなたの攻撃は「より速く」クラックされます(まだこの存続期間ではありません)。ただし、強引に攻撃しようとする者がその特定の順序で活動するという保証はありません。その結果、aa
で始まるパスワードがよりクラッキングされやすいかどうかを推測することは不可能です。ただし、ランダムな長いパスワードを使用すると、ハッキングされる可能性は事実上ゼロになります。だから私はそれについて心配しません。パスワードに関しては 長さは王様 。
ケルチコフの原理はここで非常に当てはまると思います。これは、ある意味では、セキュリティの中核となる「テネット」です。ケルチコフの原理の背後にある考え方は、システムのセキュリティは1つだけの秘密/鍵に基づくべきであるということです。システムを安全に保つために必要な「パーツ」が多いほど、一部のパーツが漏洩し、セキュリティ違反が発生する可能性が高くなります。パスワードについて話すとき、「キー」が何であるかは非常に明確です。パスワードです。具体的には、長くランダムなもの。上記のように、必要なのはそれだけです。ランダムなパスワードの上にさらに「ルール」を追加することで、潜在的なヒントを与えて、あなたを標的とする攻撃者がパスワードを推測しやすくすることができます。
他のすべての攻撃を使い果たした後、クラッカーはブルートフォースを開始します。
誰が言ったのですか?
総当たり攻撃が実際に行われるシナリオは2つだけです。 1つは攻撃者がパスワードハッシュを持っている場合で、もう1つはログインを制御するソフトウェアを攻撃者が制御している場合です。完全に破損していないソフトウェアではそもそもブルートフォースを実行できないためです。
最も一般的なケースは、攻撃者がパスワードデータベースを持っていることです。彼はJohn the Ripperのようなクラッカーソフトウェアを使用します。 「aa」で始める前に、数百万の可能なパスワードをテストしました。ほとんどの場合、パスワードは「password」または「12345678」だったため、この時点で彼はすでに数千のアカウントをクラックしています。または-ダミーの「パスワード強度」チェッカーを満たすために-「Pass123!」。
彼はクラッカーが実際のブルートフォースステップにぶつかることを気にしないでしょう。そして、総当り攻撃が実際にaaから始まるかどうかは、実際にはわかりません。なぜなら、そうしない可能性が高いからです。
あなたの本当の問題は、どのパスワードを「悪い」と見なすかについて規則を作るとすぐに、実際に減らすことです検索スペース。結局のところ、パスワードポリシーは有害です。見て、JtRの作者は彼のwikiに それに関するページ さえ持っています。もちろん、あなたのCISOに彼の愚かなパスワードポリシーを採用するように説得した$$$コンサルタントは、そのページを読むことはなく、おそらくJtRがまだ存在することすら知りません。 :-)
したがって、「aa1」は「zz9」よりもそれほど安全ではありません。第一に、ブルートフォースが最後の武器であり、最初と2番目ではなく、ブルートフォースソフトウェアが実際にaではなくzで始まるという保証がないためです。もし私がそれを書いたとしても、私はaから始めません。たとえば、アルファベットをランダム化して使用します。私が人々がおそらくパスワードとして「aaaaaaaa」を避けていると思っているからです。
他の多くの答えは、「a」で始まるパスワードが他のどの開始文字よりも安全ではない理由に焦点を合わせています「a」から始まりますが、熟練した攻撃者はそうでない場合があります。これらの議論のため、熟練した攻撃からの最初の手紙は、他のものよりも安全性が劣ります。
ただし、単純な攻撃者に対しては、「a」で始まるパスワードは安全性がやや劣ると主張します。スキルと経験。
ただし、実際には、他の回答で述べたように、ランダムに生成された十分に長いパスワードが妥当な時間内にブルートフォースになり、文字 'a 'は検索スペースを絞り込むだけです。
ブルートフォース攻撃を想定すると、「a」で始まるパスワードはより弱い可能性があります。 「z」の使用が普及した場合、これは「a」と「z」に当てはまり、リスクの評価がより複雑になります。
他の人より先に試されるキャラクターを知っているとしましょう。その後、攻撃者は1/26
の検索スペース。解決策は、パスワードを長くするにすることです。 「a」で始まるときだけでなく、常に。
攻撃者はおそらくブルートフォース検索*の短いパスワードから始めるので、長い方がはるかに優れた保護になります。彼がそうしなくても、あなたのパスワードを取得する前に、彼はより多くのパスワードをテストする必要があります。
辞書攻撃または混合攻撃は、「b」を試行する前に「a」、「aa」、「aaaaaaaa」を試行する場合があります。これは攻撃者とあなたとの間の心のゲームなので、ランダムなパスフレーズを選択することが最善のアプローチであり、Wordリストにある可能性のあるパスフレーズを拒否することは合理的です(ただし、ランダムな長いパスワードがWordlistにある可能性は低いです)。
*
1〜8文字のパスワードをすべてテストする場合、「a」で始まる9文字のパスワードをすべてテストする場合の約2倍の時間で済みます。したがって、パスワードが短い可能性がある場合は、短いものから開始するのが妥当です。
既存の回答の多くは、単にaを回避するだけでは何も得られないこと、および実際に状況を悪化させる「修正」を適用することは非常に簡単であることをすでに示しています。
しかし、概念的には、攻撃者の作業方法を完全に無視することも間違っていると感じています。したがって、私はこのソリューションの方向性を提示します。これは理論的には機能するはずです(ただし、実際に適用するのは少し難しいかもしれません)。
攻撃者がパターンを攻撃する可能性が高いと脅威モデルで定義されている場合は、このパターンが発生する可能性を低くすることをお勧めします
例:
この場合、おそらく「a」を1%低くするのが良いでしょう。
あなたが本当の脅威を持っている(そして追跡している)場合、パスワードが解読される可能性をわずかに減らすことができるはずです。残念ながら、いつでもステータスを把握できる巨大な企業が必要であり、脅威モデルが変更されるたびにパスワードを再生成する必要があります。たとえば、先週の攻撃者はパターンを修正していることも知っているのためです。
つまり、概念的には正しいことを認識してください。ただし、適切に実装するのは実際的ではありません。
厳密に言うと、はい、クラッキングがブルートフォースに陥った場合、「a」で始まるパスワードが「z」で始まるパスワードよりも前にチェックされる可能性が高くなります。それは必ずしも真実ではありませんが、そうかもしれません。
パスワードエントロピーについて理解する重要なことは、それをwrtで計算する必要があるということです。攻撃者がwrtではなくパスワードをクラックするために使用する可能性が高いモデル。生成に使用したモデル。たとえば、完全にランダムな英数字のパスワードを生成し、 "passwordpassword123"を取得した場合、同じ長さの他のランダムパスワードと同じ "生成"エントロピーを持ちます。典型的な辞書攻撃を想定すると、非常に低い「クラッキング」エントロピーを持っているため、高い「生成」エントロピーは、それを適切なパスワードにするわけではありません。
このため、ランダムに生成されたパスワードを正確に破棄することは珍しくありません。破棄すると、使用可能なパスワードの数が減り(したがって、パスワードのセキュリティが低下します)、クラックが非常に簡単なパスワードの生成が回避されます。
それについて何かしたい場合、(パスワードの長さを増やすことを除いて)できることは、「a」で始まるパスワードを拒否することだけです。これで、可能なパスワードの1/26が削除され、攻撃者は平均パスワードを26/25倍速くクラックできます。
...そして今、最も弱いパスワードは「b」で始まります。これらを削除して「c」を新しい最も弱い最初の文字にしますか?これがどこに向かっているかがわかります。
他の回答はなぜそれが問題ではないのかよく説明していますが、特定のパスワードを回避してこれを修正しようとするのはばかげていることを指摘したいと思います。
ここで多くの良い答えに加えて、攻撃者がブルートフォース攻撃を使用している場合でも(優れたすべてのオプションを検討するとまれです)、優れたツールは逐次的なブルートフォースを実行しないことに注意する価値があります。
たとえば、John the Ripper(@Tomが前述)のブルートフォースモードは Incremental Mode と呼ばれ、キースペース全体をカバーしますが、周波数ベースのモデルを使用してキースペースをカバーしますシーケンシャルAZ攻撃よりもはるかに効率的な順序で。
私はまた、PasswordsProと呼ばれる古いツールを覚えています。これはシーケンシャルなブルートフォースを実行しますが、開始ではなく文字列の最後から開始しました(aaaa、aaab、aaacなど)。