私はマイクロソフトから入手可能なツールをテストしました here パスワードの強度をテストし、それらを評価します。 「今夜昼食をとる」などのパスワードの場合、ツールはその強さを「BEST」と評価し、「th1 $ .v4l」のようなパスワードは「中」と評価します。
パスワードの長さが本当に重要なのかと思います。この場合、最初のパスワードは彼らのツールに応じて優れていますが、本当に優れていますか?辞書の単語に基づいており、スペース以外に数字と他の文字の組み合わせはなく、クラックするのは非常に簡単です(ブルートフォースを考慮しない)。
そのツールは、実際の強度ではなく長さを優先していますか?
「ブルートフォースを考慮しない」-それがまさにこれらのツールが測定するものです。
明らかに、ソーシャルエンジニアリングを試したり、それがユーザーの最初のガールフレンドの犬の誕生日であるかどうかを調べたりすることはありません。攻撃者はそれを知っているかもしれませんが、これらのツールは知りません。
彼らが測定することは、ブルートフォーシングツールがそれを解読することの難しさです。生成方法の属性であるパスワードのエントロピーでさえも、ブルートフォーシングツールが正しいパスワードを見つけるのにかかる時間の推定にすぎません。
明らかに、エントロピーがこれに影響を与えますが、重要なのはtotalエントロピーのみであり、1文字あたりのエントロピーではありません。したがって、はい、各文字に多くの等確率オプションがあるとエントロピーが増加しますが、文字ごとのエントロピーを文字ごとに高くすることで、長さがパスワードを解読不可能にする上でさらに重要な役割を果たす可能性があります。カウント。これにより、はるかに高い合計エントロピーが得られます。
したがって、あなたの場合-はい、32文字の英数字のみのパスフレーズは、8文字の句読点パスワードよりもはるかに強力です。
ここで少し計算してみましょう(間違っている場合は修正してください):
標準のUSスタイルキーボードを想定した場合、85の印刷可能な文字があります(おそらくいくつかの文字を削ることができますが、今のところこれを使用できます):小文字+大文字+数字+標準の句読点+スペース。
これにより、1文字あたり最大6.3ビットの強度が付与されます。 8文字の長さのパスワードでは、最大50.4ビットの強度が得られます。
非常に強いことに注意してください...さらにいくつかの「特殊」文字を投入しても、それほどアップグレードすることはありません。
次に、32文字のアルファのみのパスフレーズについて...
小文字と大文字のみ(使用していなくても)とスペース(U + 32)を想定します。数字すら….
これにより、1文字あたり約5.8ビットの54文字が可能になります。 32文字の長さで、185ビット以上の強度です。 実質的により強い。そして、それは数字なしでも、通常「単純な」パスワード体系でも受け入れられます。
Bruce Schneierは、長く覚えやすいパスフレーズに切り替える方が、ランダムな奇妙に見える短いパスワードよりもはるかに安全であることについてよく話します。
これで理由がわかります。
パスフレーズは辞書の単語を使用しているため、ブルートフォースで攻撃する必要があるものよりも解読する方が簡単なのではないかと心配しています。
tl; dr:これは正当な理論上の心配ですが、現時点では実用的な問題ではありません。
「今夜、昼食をとる」は、最も一般的な5000の英語の単語を使用した5語句です。単純に、5000文字のアルファベットで5文字のパスワードを推測するのは同型であり、3x10 ^ 18の可能性があります。これは、大文字、小文字、数字、記号を使用した10文字のパスワードとほぼ同じです。
もちろん、十分に賢いクラッキングプログラムは、これをかなり減らすことができます。この文は標準的な英語の散文であり、 情報エントロピー率 が約 1文字あたり1ビット であるという厳しい規則に従います。つまり、フレーズには33ビットのエントロピーがあり、5つの印刷可能なASCII文字の完全にランダムなパスワードと同じくらい複雑になります。
それはそれほど複雑ではありません。
ただし、その複雑さの欠如を悪用するには、マルコフチェーンモデリングなどをGPGPU処理用のカーネルに最適化できる特殊な「英語パスフレーズクラッカー」が必要になります。私の知る限りでは、現時点ではそのようなことはまだ開発されていません。そのため、そのソフトウェアを作成するためのリソースを持つ誰かがあなたのパスフレーズを望んでいない限り、あなたは長い間安全でなければなりません。
エントロピーは奇妙なことです。
NIST Special Publication 800-63、Electronic Authentication Guideline パスワード強度を推定するためのncludesガイド:
エントロピーは、パスワードがユーザーによって選択されたか、ランダムに生成されたかによって大きく異なります。統計的には、ユーザーが選択したパスワードの最初の文字を推測するのは難しいですが、2番目の文字を推測する方が簡単で、3番目の文字を推測する方が簡単です。 NISTガイドラインでは、標準キーボードで使用可能な94文字を使用する場合、最初の文字に4ビットのエントロピーを提供しますが、次の7文字はそれぞれ2ビットのみとなります。
ランダムに選択されたパスワードはパターンを表示しないため、各文字は同じレベルのエントロピー(約6.6ビット)を持ちます。
つまり、ユーザーが選択した8文字のパスワードには18ビットのエントロピーがあり、同じ長さのランダムパスワードには約52.7ビットがあります。
つまり、私のパスワードの最初の3文字がわかると
畏敬の念
次に、s
である次の文字のオッズは*
であるよりもはるかに高くなります。
したがって、パスワード文字にany文字を使用できると言った場合、それは実際には当てはまりません。ほとんどの人は、強いパターンを持つ単語を使用し、暗黙的に次の文字の可能なセットを減らします-したがって、エントロピー(ランダム性)の低いパスワードを生成します。
「今夜、昼食をとる」が辞書の脆弱性である7つの単語のフレーズであるかどうかはわかりません。ここで、「th1 $ .v4l」は、文字が結合された2つのWordフレーズであり、文字の置換は、パスワードクラッカーが永遠に扱ってきたものです。
一部のパスワードテスターは、小さなルールベースを使用したcracklib + ajaxのようなテストを使用して、「this.val」パスワードを除外します。
reliabilityのパスワード強度チェッカーの問題は、一般にチェッカーのsecurityにも当てはまります。オンラインのパスワード強度メーターの急増を見るのは恐ろしいことです。インターネット上のサイトにパスワードを不必要に公開している!パスワードチェックのためのローカルアプリケーションでさえ悪質な場合があります。このサイトはJavaScriptを使用しており、インターネットを介してパスワードを送信しないと主張しているので、信頼できません。一部のパスワード強度テストサイトは確かにブラックハットによって運営されており、彼らはあなたについて収集できる他の情報と一緒に、それらを辞書に追加するだけです。他のサイトは、善意の人々によって運営されていますが、脆弱なサーバーやhttpsの欠如など、実装が悪い可能性があります。さらに、サイトを強制的に公開させる方法を持っている「当局」による攻撃に対して脆弱な人もいます。特定のIPアドレス範囲から送信されたパスワード。
このようなサイトを使用する人は、実際に使用する予定のパスワードを送信しないようにしてください。
長さはほぼ総当たり攻撃を防御しようとするときのすべてです。
基本的なパスワードクラッカーでも1337語のスタイルの置換が許可されているため、この例では、7ワードのパスフレーズを2ワードのパスフレーズと効果的に比較しています。
長いパスフレーズがある限り(ロングの正確な定義はニーズによって異なりますが、レインボーテーブル攻撃の確率を最小限にするために少なくとも13文字を超える必要があります)、攻撃者に他の形式の攻撃を試行させます。 、ソーシャルエンジニアリングなど。パスフレーズを書いた場所を見つける。猫の人質などを抱える.
理論的には、「パスワード強度メーター」は機能しません。ツールはパスワード生成プロセスの結果のみを確認しますが、パスワードの「強度」は実際にはプロセスのプロパティです。詳細は this answer を参照し、次に that answer を参照してください。
パスワード強度メーターアプリケーションで得られる最善の方法は、パスワードを解読するのにかかった時間です。つまり、攻撃者がまったく同じコードを実行し、あなたについて何も知らないと想定しています。これは実際には合理的な仮定ではありません。攻撃者があなたを攻撃するとき、それは特にあなたの後です。セキュリティのためにパスワードメーターに依存することは、すべての攻撃者が無能になることを祈るようなものです。それは一種の「信念の飛躍」です。
そのMicrosoftツールのJavascriptを見ると、辞書の単語のリストが限られているようです( jsファイル の264行目以降を参照してください)。パスフレーズがより高い評価を得ている理由を説明している可能性があります。たぶんそうすべきです。
私は個人的にお勧めします このパスワード強度テスター これは、パスワードを構成する要素の優れた内訳を示し、それをどのように改善できるかを教えてくれます。それはあなたのパスワードを「今夜昼食にしよう」と56%で評価し、2番目のパスワード「th1 $ .v4l」を74%と評価します。
ただし、このツールは単語リストをまったく使用しません。パスフレーズはすべて小文字であるためにマークダウンされていますが、「今夜は昼食を食べます!」 98%を取得します。 %ageレーティングがどれほど役立つかについて、独自の結論を引き出すことができます。
クラッキング時間チェックアウトにおける長さへの影響について この記事 。ただし、2009年に遡り、GPGPUベースのパスワードクラッカーは、500ドルのGPUを備えた単一のゲーム/ワークステーションPCで10 ^ 9 /秒(記事で「クラスF」の最高レベルの攻撃)を管理できるようになりました。カード。
最近新聞で漫画を見ました。それとも、コミックのオンラインデジタルコピーだったのかもしれません。
それはこの非常に議論を説明しました。そして、私はそれが作ったポイントをあなたに説明します:
「th1 $ .v4l」の場合のように、パスワードが短いからといって、簡単に推測できるわけではありません。しかし、パスワードが長いからといって、「今夜は昼食を食べます」のように、簡単に推測できるわけではありません。
問題は、深刻な人間のハッカーがそこに座ってパスワードを推測することはないということです。辞書の単語を使用する場合がありますが、それらの辞書にはすべての可能な文が含まれているわけではありません。その言葉だけ。
いいえ、ハッカーが行うこと(彼らがWORDSの典型的な辞書を使い果たしたとき)は、通常、コンピュータにあらゆる可能な組み合わせを体系的に実行させることです。最初から最後まで。彼らがこのパスを強制された場合、パスワードが短いほど悪いことになります。長いほど良いです。数字や記号があるかどうかに関係なく。数字と記号は、覚えている人間と推測している人間にとってのみ重要です。コンピュータにとって、それらは同じものです... 1と0のシーケンス...そして、それは違いを生みません。
自分でお願いします。長く、シンプルにしてください。短くて複雑な場合はハッカーの時間がかかる可能性がありますが、長くて単純な場合も同じことが言えます。問題は、覚えやすいパスワードまたは覚えにくいパスワードが必要かどうかです。
パスワードの強度は、一人で、またはパスワードの作成方法を他の人に伝えた場合にのみ推定できます。たとえば、50文字セットを使用するランダムパスワードジェネレーターを使用していて、パスワードが8文字である場合、私のパスワードは約3.9×10の1つになります。13 または245。中国語のピンインベースのパスワードを使用していて、私のパスワードが4ワードのフレーズである場合、 各ワードは可能な2,050の範囲外です の場合、私のパスワードは可能な1.8×10の1です。13。漢字の平均ピンインローマ字化は約3〜4文字で、「4ワード」のパスワードは約16文字になります。ただし、このピンインパスワードは、50の文字セットから生成される8文字のパスワードよりも脆弱です。
攻撃者が特定の人物によってパスワードがどのように生成されたか(たとえば、いくつかの安全でないサイトから盗まれたプレーンテキストのパスワードを調べることによって)を知っている場合、ブルートフォースの難易度を下げるために必要な知識を持っていますたくさん!キーボードで可能なすべての文字を使用していないことがわかっているため、不可能な組み合わせをなくして時間を節約できます。
次回パスワードを生成するときは、パスワードの生成に使用しているアルゴリズム/方法について考えてください。 Password Safe を使用して、72文字のセットから21文字のパスワードを生成します(+-=_@#$%^&<>/~\?abcdefghijkmnopqrstuvwxyzandABCDEFGHJKLMNPQRTUVWXY346789
)、約1.0×10になります39 可能な組み合わせまたは130ビットのセキュリティ。
さて、すべてのパスワード強度チェッカーツールは、ブルートフォースと辞書攻撃を使用してパスワードを見つけるのにかかる労力を検証します。
ここで両方のパスワードの結果を比較するようなものです。
「th1 $ .v4l」は
74%の強力なパスワード
「今夜お昼ご飯を食べに行きます」です
良いパスワード56%
このパスワードは、ブルートフォースを使用してクラックするのにかかる時間が短くなります。
ええと、パスワードの強度をその難易度またはクラックされる可能性として定義すると、ほぼ直観的には、パスワードの強度は覚えるのが難しいというよりも、長さの関数になります。
潜在的な攻撃者がパスワードについて何も知らず、ブルートフォースを使用してパスワードを解読することしかできない場合、次のように覚えやすい、長いパスワードを使用します。
「今夜は昼食をとる」
クラックするよりも時間がかかります
「th1 $ .v4l」
これは、パスワードを解読するために攻撃者が正しく推測する必要のある文字が多いためです。パスワードが長いほど、検索するための検索スペースが大きくなり、針(パスワード)を大きくする haystack で隠れるようになります。
パスワード強度チェッカーは、原則として、あまり信頼できません。彼らは過度に単純化した計算に依存する傾向があります。これは、攻撃者が文字の可能なすべての組み合わせを試してパスワードを推測することをだけ試行することを想定しています。この仮定は実際にはほとんどありません。
実際には、やる気のある攻撃者は、パスワードを推測するためのさまざまな方法を考え出すことができますが、その中には、パスワード強度チェッカーが検討するようにプログラムされていないものもあります。
たとえば、パスワード "!QAZXSW @#EDC"は、標準の英語キーボードで非常に単純なキーのパターンを押してパスワードを記述したことに気付くまで、かなりランダムに見える場合があります。キーボードレイアウトベースのパスワードを推測するように設計されたプログラムを使用する攻撃者は、そのようなパスワードを数分で簡単に解読する可能性があります。 (そして確かに、私はPwnedの Pwned Passwords Checker は、この正確なパスワードがすでに複数回使用され、解読されていることを示しています。)同様に、「今夜、昼食をとる」は、典型的な人には強いように見えるかもしれません。パスワード強度チェッカーですが、一般的な英語の文章を推測するように設計されたプログラムを使用する攻撃者によって簡単にクラックされる可能性があります。
are パスワード強度チェッカーがあり、この種のもので他より優れています( [〜#〜] zxcvbn [〜#〜] たとえば、上記で指定したキーボードパターンベースのパスワードを検出し、より現実的な強度推定を行います)が、最終的にはパスワード自体を分析するだけでは、パスワードの強度を常に特定できるとは限りません。使用しているパスワード強度チェッカーがパスワードの選択に使用した方法を推測できないからといって、攻撃者がパスワードを推測しようとしないと想定するのは安全ではありません。この仮定は「あいまいさによるセキュリティ」として知られており、情報セキュリティコミュニティで信頼することは悪い習慣だと考えられています。
代わりに何をすべきでしょうか?パスワードを選択します randomly 、できればサイコロのようなランダムなソースを使用して、自然な人間のバイアスによって弱めることはできません。このようにして、攻撃者がパスワードの生成方法を正確に知っていると仮定しても、パスワードを正しく推測する前に攻撃者が何回推測する必要があるかを簡単に計算できます。
Diceware は、パスワードを生成するこのような方法の良い例です。 4つのランダムなDiceware単語は7776になります4/ 2 =パスワードが選択された単語の exact リストを知っていても、攻撃者が推測できる平均は〜1.83兆兆回です。パスワードマネージャーによって生成されたパスワードは、同様の理由で強力です。
パスワードを安全に選択する方法の詳細については、パスワードエントロピーと計算方法の詳細を説明する「XKCD#936:短い複雑なパスワード、または長い辞書のパスフレーズ?」に Thomas Porninの回答 をお勧めします。ランダムに生成されたパスワードの強度。