web-dev-qa-db-ja.com

パスワードの長さを増やしてもセキュリティが向上しない長さはありますか?

パスワードがハッシュ化およびソルト化されて保存され、ランダムな文字列であると仮定すると、パスワードの長さを追加してもセキュリティが向上しない点はありますか?

ハッシュの長さは一定であるため、可能なハッシュの数は有限です。したがって、非常に長い長さで、すべてのパスワードが短いパスワードと衝突する長さに達するまで、パスワードのハッシュが短いパスワードのハッシュと衝突する確率が上昇し始めると思います。

15
Peter

パスワードの強度は、パスワードが何であったかを示す尺度です。これがパスワードの仕組みです。パスワードは特定のユーザーが覚えているものですが、部外者には知られていません。 どのくらい不明ですか?それはトリッキーなポイントです。

7つのランダムな文字(大文字と小文字)と数字で構成されるパスワードを考えると、各記号はランダムに、均一に、そして互いに独立して選択されます。7 = 3521614606208可能なパスワードであり、それらはすべて同じ確率で選択されます。したがって、攻撃者にとって最善の戦略は、一致が見つかるまですべてを試すことです(順序が他よりも優れているわけではありません)。平均して、攻撃者は正しいパスワードに到達する前に、可能なパスワードの半分(この場合は1760807303104)のスペースを試します。

そのため、パスワードの強度は、それが何であるかによるものではなく、特にその長さによるものではありません。パスワードの長さとパスワードのセキュリティは直接関係ありません。パスワードを強力にするのは、そのランダム性;です。これは厳密には、パスワード自体ではなく、パスワード生成方法のプロパティです。セキュリティと長さの間接的な関係は、ランダム性を行使するためにいくらかの余地が必要であることです。非常に長いパスワードは必ずしも安全ではありませんが、非常に短いパスワードは必然的に安全ではありません。

さらに、ランダムに選択された要素(ランダムな文字、ランダムな単語...)を累積してパスワードを作成する場合、それらが互いに独立して選択されている限り、それらをさらに累積することによってランダム性が増加します(ランダム性は増えません)同じ単語を4回繰り返す場合)。その意味で、長さが強さを生み出すimpressionを持っているかもしれません。しかし、それは幻想です。 Randomnessは強さを生み出し、たまたまスペースが必要になります。

どれくらいのランダム性が必要ですか?攻撃者を阻止するのに十分です。攻撃者が1秒間に試行できるパスワードの数は、コンテキストの多くに依存します。パスワードがPINスマートカードのコード)の場合、攻撃者は3つのコードを試すことができ、それ以上はできません(3つの間違ったPINの後、カードは永続的にロックされます)。パスワードの試行ごとにWebサーバーに送信すると、サーバーのCPUパワーと構成に基づいて、サーバーが許容できる秒数のパスワードを試行できます。攻撃者がパスワードのハッシュを知っている場合、予算に基づいてできる限り多くを試すことができます(単純なハッシュ関数の場合、これはbillions/秒の範囲になります)。

コンテキストごとに、攻撃者が試行できるパスワードの数には制限があります。予算内で正しいパスワードをヒットする可能性が低すぎる場合、攻撃者はそれを「努力する価値がない」と見なし、あなたが勝ちます。この点よりランダムにする必要はありません。

ハッシュ関数は有限の長さを持っているので、別の制限もあり、それを超えるとパスワードのランダム性を増やすことは役に立たなくなりますが、はるかに遠いです。 それは衝突についてではなく、プレイメージについてです。その下に数字を入れましょう。予算が多く、単純なハッシュ関数に直面している現実的な攻撃者は、最大で約270 潜在的なパスワード。ここでは数ドル数百万ドルの予算と、かなり忍耐強い攻撃者(彼はそのパスワードに数週間を費やすことを受け入れます)について話しています。 正当な理由 には、この数値が技術の進歩によって無期限に上昇しない理由があります。ハッシュ関数がnビットの出力を持っていると考えてみましょう(例:n= 128 for MD5)。攻撃者の目標は、ハッシュされたときに特定のハッシュ値を生成するパスワードを見つけることです。彼は、最初に使用されたtheパスワードを必要とせず、一致するパスワードを必要とします。彼には2つの攻撃戦略があります。

  1. 彼は、人間のユーザーが考え出した「潜在的なパスワード」を試すことができます。
  2. 一致が見つかるまでランダムなパスワードを試すことができます。

戦略1のコストはP/2で、[〜#〜] p [〜#〜]は(多かれ少なかれ)ユーザーが選択した可能性のある潜在的なパスワードの数。 [〜#〜] p [〜#〜]が2を超える場合71 次に、それは攻撃者にとって高すぎる。

戦略2にはコストがあります2n-1nが71より大きい場合、攻撃者にとってそれは高すぎます。

MD5のような最も古く、最も基本的なハッシュ関数でさえ、戦略2を実行不可能にするのに十分な出力サイズがあります(MD2、MD4、MD5の出力サイズは128ビットです; SHA-1およびRIPEMD-160は160ビットを提供します; SHA-256 256ビット)。つまり、固定ハッシュ出力サイズは、70ビット程度以下の場合にのみセキュリティを制限できます。

パスワードのランダム性(「エントロピー」と呼ばれることが多い)の詳細については、 この答え を参照してください。パスワードハッシュを実行する正しい方法(特に、slowハッシュを実行し、ソルトを使用して並列攻撃を防ぐ)の詳細については、 その答え を参照してください。

17
Tom Leek

トムの優れた答えを少し拡張するには、ランダムな文字を想定した有用な長さのハードリミットは、結果のハッシュのサイズです(たとえば、128ビットは、大文字、小文字、数字、および基本的な記号を使用すると想定した場合、約21のランダムな文字です) 、および英語の文字のみ)。

ただし、実際のパスワードは、構築ニーモニックと、それを覚える人々の能力によってはるかに制限されています。トムが言ったように、本当に必要なのは128ビットのランダムエントロピー(128ビットハッシュを想定)です。これは、誰かが実際に覚えることができるほどのエントロピーを持つパスワードを生成するのに21文字をはるかに超える可能性があります。実際には、これほど多くのエントロピーを持つユーザーが記憶したパスワードはほとんどありません。

4
Nick