HackerNews

なぜbcryptはパスワードハッシュに対して安全でない可能性があるのか?

Why Bcrypt Can Be Unsafe for Password Hashing?

https://blog.enamya.me/posts/bcrypt-limitation


bcryptはパスワードハッシュに広く使われているアルゴリズムですが、最初の72バイトのみを処理するという制限があります。この制限は、Blowfish暗号に基づいているために引き継がれています。長さが72バイトを超えるパスワードは、最初の72バイト以降が無視されてしまいます。特に、非ASCII文字を含むパスワードは、UTF-8エンコーディングにより、より早くこの制限に達する可能性があります。この制約を回避するためには、Argon2など別のアルゴリズムの使用や、まずSHA-256やSHA-512でハッシュを生成してからbcryptを使用する方法があります。Pythonのbcryptパッケージはバージョン5.0.0以降、72バイトを超えるパスワードに対しエラーを返すようになりました。他のプログラミング言語やライブラリでも異なる対応がされており、特に2024年にはOktaがこの制限によりセキュリティインシデントを起こしました。一般的なパスワードには依然として利用できますが、将来に備えて他の選択肢を検討する必要があります。