web-dev-qa-db-ja.com

ランダムに生成されたパスワードの最適な長さは何ですか? (セキュリティと互換性)

一般に、オンラインサービスごとに一意のパスワードを使用し、ランダムパスワードジェネレーターを使用してパスワードを作成し、パスワードマネージャーを使用してそれらを保存することをお勧めします。

私はすべてのオンラインパスワードをこの手法で置き換え始めましたが、一部のサイトではパスワードの長さに関して一定のルールがあります。

残念ながら、ウェブサイトは許可された最大文字数を伝えるようにプログラムされておらず、パスワードフィールドにコピーされた場合はオーバーフローを削除するだけです。このため、パスワードとして保存されている文字数がわからなかったため、アカウントを再び制御するのに苦労しました。

ほとんどのサイト/バックエンドプログラムでおそらく機能し、ランダムに生成されたパスワードに対して比較的安全であると考えられる特定の文字数はありますか?

11
Prototype700

パスワードがnである場合、95文字のセット(ASCII印刷可能な文字からスペースを差し引いたもの)から等しい確率でランダムに描かれた文字)の場合、それぞれ文字は約6.6ビットのエントロピーを提供するので、n文字のランダムパスワードの強度は6.6×nです。

  • 10文字のパスワードでは、約66ビットの強度が得られます。
  • 12文字のパスワードでは、約79ビットの強度が得られます。
  • 14文字のパスワードでは、約92ビットの強度が得られます。
  • 20文字のパスワードでは、約132ビットの強度が得られます。

私の判断では、アプリケーションに応じてこれらの長さのいずれかを賢明に選択できます。たとえば、価値の低いオンラインサービスに66ビットのパスワードを使用する場合、パスワードは依然として、そのサービスを使用するほとんどすべての人よりも負荷が高くなります。ただし、独自のハードウェアで実行するソフトウェアで暗号化キーを取得するために使用されるパスワードについて話している場合は、より強力なものを検討する必要があります。


いくつかの追加の考えを追加するには、2種類の攻撃を検討することは価値があります。

  1. 登録したwebsite(または他のパスワードで保護されたサービス)を狙った攻撃。
  2. あなたが具体的にに対する攻撃。

シナリオ#1では、パスワードクラッカーは、計算能力をクラックに分割します可能な限り多くのユーザーのパスワード、ぶら下​​がっている果物を見つけることを期待して、非常に弱いパスワードを持つユーザー。このような攻撃からパスワードを守るには、64ビットから80ビットのパスワードで十分だと思います。

シナリオ#2では、攻撃者はすべての計算能力を、特にyourパスワードの解読に充てるつもりです。その場合、強力な敵might(またはそうでない可能性があります!)は66ビットのパスワードを解読できるため、19〜20文字まで(128文字に一致するように)正当化できます。ほとんどの暗号のビットセキュリティ強度)。

また、パスワードが十分に強力な場合は、#2攻撃者が別の脆弱性を調査することを意味します。他の場所に大きな穴がある場合でも、パスワードを不必要に強力にする必要はありません。

9
Luis Casillas

これまでの他の回答とは異なり、Webサイトごとに一意のランダムパスワードを生成する場合は、本当に長いパスワードはまったく必要ないことをお勧めします。

パスワードに対する脅威について考えてみましょう。サーバー側だけを見ていきます(つまり、PCでのキーストロークロギングマルウェアのようなことは考慮しません。パスワードの長さはそこではあまり役に立たないためです)。

したがって、基本的に、パスワードの長さが関係する攻撃は、2つのカテゴリに分類されます。オンライン総当りとオフライン総当り。

オンライン総当り攻撃では、攻撃者はWebサイトに対してパスワードを推測しようとするため、攻撃ごとに1つの要求を送信します。実際には、多くのサイトがいくつかの不正な要求の後にロックアウトしますが、これはそれらがそうではないと仮定しましょう

次に、攻撃者が1秒あたり1000回の推測を行えると仮定します。たとえば、大文字、小文字、数字を使用して8文字のランダムパスワードを選択した場合、62 ^ 8のオプションがあります。そのレートで、私たちは彼らがそれを推測する前に、宇宙の熱死について話している。

これで誰かが「攻撃者がボットネットを推測してボットネットを見つけたら、はるかに速く進むことができる」と言うことができます。これを実用的に実行するのに十分速くする前に、ほとんどすべてのサイトでDoSを実行することをお勧めします。

パスワードの長さとの関連性が高いので、オフラインでブルートフォースについて話しましょう。ここで、攻撃者はすでにパスワードハッシュのコピーを取得しているため、そのサイトのセキュリティがかなり徹底的に侵害されている可能性があります。ここでは、サイトがそれらがpwnされたことに気づき、パスワードをリセットするように、パスワードを十分長く持続させたいという主張をすることができます。

サイトがパスワードをどのように保存しているかに大きく依存するため、正確にどれくらい長いかは、ちょっとトリッキーです。無塩MD5を使用している場合、高い作業係数のbcryptを使用している場合よりも大きな違いがあります。

ただし、これらすべてにおいて考慮すべき1つは影響です。このパスワードがクラックされることの影響は何ですか。すべてのサイトに一意のランダム値を使用した場合、影響はかなり限定される可能性があります。価値の高いサイトはすべて2FAを使用している希望なので、パスワードだけでは攻撃者が遠くに来て、価値の低いサイトに到達することはありません。妥協の結果?

これらすべての分析は実際にはあなたの質問に答えるものではありませんが、経験則として、大文字、小文字、数字で10〜12文字を使用していて、パスワードが本当にランダムである(重要なビットです)場合は、 「a)元気である可能性が高く、b)サイトの制限で問題が発生する可能性が低い。

パスワードの解読に関するこの記事 10文字の大文字、小文字、数字のパスワードでは、「スーパーコンピュータまたはボットネット」が解読されるまでに83日かかります。あなたが自問しなければならないのは、攻撃者がそのコストを投資して、ハッシュを取得するためにターゲットサイトのセキュリティをすでに侵害している単一のパスワードを解読する可能性があるということです...

4
Rory McCune

私の個人的なアドホックな使用とテストから、上/下/数字といくつかの厳選されたスペシャル(括弧を含まない@#$ ._)を使用した20のランダムな文字が素敵な組み合わせであることがわかりました。

  • 適切な長さ-静かに切り捨てられる可能性が低い(20を超えると、より多くのサイトが、見たとおりに静かに切り捨てを開始するか、「長すぎる」として拒否されます-20は以前は大きすぎますこの目的ですが、この数年で状況は変わりました)
  • 非常に優れたキースペースサイズ((26 + 26 + 10 + 5)^ 20 = 3.32x10 ^ 36)-確かに overkill 近い将来からの国民国家のタイムトラベラーにとっても、ほとんどカバーすることを意図手に負えないほど長くなることなく、ほぼすべての人のためのすべての潜在的な脅威モデル(ムーアの法則と国レベルのリソースの考慮を含む)
  • 最も単純でレガシーな複雑さの要件を満たします(少なくとも1つの特殊文字を必要とすることを含む)
  • 多くの「non-complexity」要件(禁止文字)に適合

言い換えれば、これはほとんどの脅威モデルとユースケースに適合すると私が思うアプローチです。

この主張を裏付ける正式なデータは、何年にもわたって自分でログインして実験した以外にありませんが、それは私の考えです。時間の経過とともにスペシャルのリストをいじくり回さなければならないかもしれませんが、あなたはアイデアを得ます。

編集してサンプルのコマンドラインを追加します。

echo $(tr -d -c 'A-Za-z0-9@#$._' </dev/urandom | head -c 20)
2
Royce Williams

残念なことに、許容されるパスワードの基準や、Webサイト間の類似点はありません。開発者は、セキュリティに役立つと思われるあらゆる制限を課し、他の開発者は、外部の(しかし完全に恣意的な)ルールに基づいて制限を課します。これは、14文字のパスワードがスイートスポットに到達したことがわかった場合でも、他の互換性のないルールに対処する必要があることを意味します。それらは互いに互換性がありません。一部のサイトでは、SQLインジェクション攻撃を回避するために、ごく少数の特殊文字のみを許可(またはまったく許可しない)しています。幅広い文字セットがセキュリティを向上させると誤って考えるため、別の特殊文字が必要なものもあります。

最善の策は、ジェネレーターを構成可能にし、各サイトをルールの独立したソースとして表示することです。

1
John Deters