2016-08-26 20 views
2

したがって、Bcryptにはパスワードの長さの制限があります。私はこれに関する多くのページを読んだ。私が理解できないことの1つは、ほとんどのサイトがこれをバイパスする方法です。Bcrypt長いパスワード

私が気づいたほとんどのサイトには、最大のパスワードの長さがありません。たぶん私はこれについて完全に間違っていますが、それは私が気づいたことです。 Bcryptはこのタイプのものの中で最も人気のあるライブラリのようです。

これらのサイトはすべてユーザーに警告していないだけで、Bcryptはパスワードを最大文字数に制限してユーザーに警告しません。あるいは、彼らはより長いパスワードを可能にするためにいくつかの特殊な手法を行っていますか?

私はこれを最もうまく実装する方法を理解しようとしています。私は最大文字制限がないことを愛するだろう。しかし、同時に私はユーザーと直接話をしたいと思っています.Bcryptがパスワードを切っているのであれば、ユーザーはそれについて知っておくべきです。

実際にこの制限をどのように処理するかについてのご意見はありますか?

+1

bcryptの最大長はどこでしたか? – Sylwit

+1

@Sylwitさて、私はそれを示すためのテストを行った。 Node.jsでは、たとえば100文字のパスワードで登録してから、最初の75文字を入力するだけでログインしようとします。これは有効なパスワードとして返されます。また、http://security.stackexchange.com/questions/39849/does-bcrypt-have-a-maximum-password-length –

+0

知らなかった。だからsha512パスワードは、bcryptは?あなたは72文字以下になりますか? – Sylwit

答えて

2

最初に実行したSHA-512では問題ありません。

NIST SP 800-63-3ドラフト文書「デジタル認証ガイドライン」によれば、パスワードは少なくとも64文字を受け入れ(使用する)必要があります。

実際にはNISTはSHA-1、SHA-2ファミリ、SHA-3ファミリのいずれかでPBKDFを使用することを推奨していますが、SHA1の場合でも本質的に衝突はなく、パスワードに問題がなくてもハッシュ。鍵は、攻撃者を減速させる反復回数です。

@ilkkachuの解答をリンクの解答で読んでください。

+0

Bcryptに渡す前にSHA-512などの行を実行するだけでBcryptの反復回数が十分に高いことを確認してから、基本的に認証のためのまともな戦略ですか? –

+0

SHA-512のSHA-256は適度に良いハッシュでなければなりません。 – zaph

+0

これを設計する際には、私が考えるべき他の主要なヒントはありますか?私は今私の元の質問からトピックを外していることを知っていますが、私が知っておくべき他の重要なヒントや事柄はありませんか? –

0

質問が既に回答されている場合でも、私は二つのことを指摘したいと思いますが:

  1. パスワードの長さユーザーがは制限すべきではない入力することができ、それが正しいのです。 BCryptは72文字以上のパスワードでは問題ありませんが、パスワードをこの長さに切り詰めるだけです。したがって、任意の長さのパスワードを受け入れるか、BCryptに直接渡すか、Zaphsの回答からスキームを使用してください。
  2. ハッシュする72文字のパスワードは、以上で、非常に安全な側にある以上です。 20文字のパスワードであっても、現実的には強引に強制することはできません。

    72文字のパスワードは、1E129の組み合わせ(特殊文字なし)を許可します。非常に速いハッシュは100ギガ/秒で計算できます。この最悪の場合でも、約1E110年の試合が必要です。それは約100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000倍の宇宙です!

異なるハッシュアルゴリズムを組み合わせるときに注意してください:

正しく入力されたパスワードが長い72文字を超える場合、これは、エントロピーを増やすことができます(めったにケースでない)とパスワードがある場合に行われた場合ランダムなものではない(誰かがこのような長いパスワードを気にしているとは思わない)。多くのifs。あなたは、あなたが安全でないハッシュにつながることができ\0文字、上でつまずく可能性がSHA-512のバイナリ出力を使用する場合は

  1. 、このarticleを参照してください。

    は落とし穴があります。

  2. SHAのhex/base64表現を使用する場合は、72箇所の可能な文字を制限します。
+0

パスワードを72文字に切り捨てるのが最善の方法ではないようです。 SHAや何らかのタイプのハッシュを最初に通過させるようなものは、最善の解決策のようです。 –

+0

だから、Bcryptに72文字の後でそれをカットさせるのが最善の方法です。ちょっとバカなんだよ。そこに良い方法があることを願っています。 –

+0

@CharlieFish - あなたがやっていることを正確に知っていない限り、私はこれが最良の選択だと思います。実際、これは決して問題にはなりません。 – martinstoeckli

関連する問題