ほとんどのウェブサイトが16文字に制限されている理由は何ですか?
パスワードが長いほど、誰かがそれを解読するのが難しくなると思いましたか?
ハッシュの衝突と関係がありますか?
CWE-521:Weak Password Requirements を遵守する場合。その場合、すべてのパスワードには、最小および最大のパスワード長が必要です。
パスワードのサイズを制限する理由は2つあります。 1つは、大量のデータをハッシュすると、サーバーに代わって大量のリソースが消費される可能性があり、サービス拒否の標的になりやすいからです。特に、サーバーがPBKDF2などのキーストレッチを使用している場合。
その他の問題は、ハッシュ 長さ拡張攻撃 またはMD5に対するプレフィックス攻撃です。ただし、bcryptやsha-256など、壊れていないハッシュ関数を使用している場合、これはパスワードの問題にはなりません。
IMHO 16バイトは小さすぎます。 bcryptには72文字の組み込みキャップがあり、これはおそらく重いハッシュ関数に適したサイズです。これらの関数で使用されるキーストレッチは、 アルゴリズム的複雑性攻撃 またはACAの可能性を生み出します。
ほとんどのウェブサイトが16文字に制限されている理由は何ですか?
任意の実装制限。
たぶん、彼らは17オクテットのバッファ(16 ASCII/1オクテット文字+終端NUL)のみを割り当てたいと思っています。
たぶん彼らは、パスワードを理解していないため、16文字を超えるパスワードを使用しても役に立たないか、ばかげていると考えています。
パスワードが長いほど、誰かがそれを解読するのが難しくなると思いましたか?
確かに。 16個のランダムな独立したアルファベット文字と均一な分布を持つパスワードは、十分なエントロピーを持っています。しかし、人間は、一様に分布した16個のランダムな独立したアルファベット文字をランダムに選択するのが得意ではなく、このような無意味な文字シーケンスを覚えるのが非常に悪いなので、覚えることができるが、エントロピーの少ないパスワードを選択します文字ごと。
重要なのは、文字ごとのエントロピーではなく、合計エントロピーのみです。たとえば、ランダムな辞書の単語のシーケンスは、Word-die(Word-die:辞書でランダムなページを開く)で生成されます。など)は、文字ダイで取得した一連の文字より覚えやすいです。
そのようなパスワードは、純粋にランダムな文字シーケンスよりも長くなりますが、同等のエントロピーの場合、覚えやすくなります。または、必要に応じて、同等の精神的記憶の努力に対して、より多くのエントロピーが得られます。
適切な強度のために、辞書の単語で作られたこれらのパスワードは、おそらく16文字以上になります。
つまり、この制限は愚かですです。
ハッシュの衝突と関係がありますか?
番号。
短いパスワードとの衝突に関する正式な保証はありませんが、ハッシュ衝突の実際的な影響はありません。