web-dev-qa-db-ja.com

パスワードのハッシュ化/暗号化はどのように実行されますか?

私は、DrupalでBlowfish cryptを使用するかどうか、または使用できるかどうかを尋ねるプロジェクトに質問をしています。

8でパスワードハッシュを実行するクラスはPhpassHashedPasswordで、 https://www.openwall.com/phpass/ に基づいています。そのサイトでは、それは述べています:

現時点で、新しいプロジェクトがPHP 5.5+を必要とする余裕がある場合)、phpassの代わりにPHPのネイティブpassword_hash()/ password_verify()APIを使用してください。この新しいAPIも発生しますphpassで使用されるCRYPT_BLOWFISHおよびCRYPT_EXT_DESハッシュをサポートしますが、残念ながら、phpassポータブルハッシュ(PHPのすべてのバージョンで移植可能)はサポートしていません)。

それは状態に続きます:

Phpassでサポートされる推奨(最も安全な)ハッシュ方法は、OpenBSDスタイルのBlowfishベースのbcryptであり、これもパブリックドメインのcrypt_blowfishパッケージ(Cアプリケーション用)でサポートされ、PHP CRYPT_BLOWFISHとして知られています) 、MD5ベースのソルト化された可変反復回数パスワードハッシュへのフォールバックがphpass自体に実装されています(ポータブルハッシュとも呼ばれます)(0.4までのphpassバージョンには、既知のBSDIスタイルの拡張DESベースのハッシュへの中間フォールバックも含まれていました) in PHP as CRYPT_EXT_DESですが、このタイプの既存のハッシュに対する認証を除いて、これは削除されています。)

Drupal 8でクラスを確認する場合、password_hashまたはpassword_verifyを使用しません。また、sha512をアルゴとして使用しているようです。 bcryptまたはBlowfishまたはCRYPT_BLOWFISHが使用されていると、どこにも見つかりません。

私はBlowfishスタイルのパスワードのサポートに関して この問題 を見つけましたが、それらを作成するためのものではありませんでした。 Blowfishスタイルのパスワードを使用して現在のユーザーベースをインポートする場合、このパッチが必要になると思います。

これを行うためにBlowfishを使用する独自のクラスを実装するのは難しいでしょうか? Drupalこれを行うことで何か影響がありますか?バージョン8がSHA-512を使用することにしたのはなぜですか?このプロジェクトはPHP 7.2 PHP 5.x BC/reasons/etc。

潜在的に関連: https://stackoverflow.com/questions/16014282/why-crypt-blowfish-in-php-is-considered-better-when-it-produces-shorter-hashes

5
Kevin

Drupal 8がPHPass/sha-512を使用するのはなぜですか?

  • PHPassは、元々Drupal 7で実装されていましたが、当時他の実装で使用されていたsha-512の代わりにmd5を使用するためのカスタムコードがあり、移植されました。 Drupal 8。
  • Drupal 8は、元々、PHPの古いバージョンをサポートしていましたが、パスワード機能が利用できず、composerを使用して既存のポリフィルを採用していませんでした。
  • Drupal 7。

代わりにBlowfishを使用するのは難しいでしょうか?

そのためのモジュールがあります-リンクした問題で述べたように PHP Password モジュールはコアサービスをレガシーハッシュを理解するものに置き換えますが、可能な場合はそれらをbcryptにアップグレードします。

2
gapple