このサイト によると、Ashley Madisonははるかに安全なbcryptハッシュに加えて、MD5を使用してデータベースに保存された安全でないハッシュを保持していました。このグループは、MD5ハッシュを使用して、はるかに難しいbcryptハッシュを使用するのではなく、パスワードデータベースをすばやくクラックしました。
記事はこの簡単な手がかりを与えるだけです:
$ loginkey変数は自動ログインに使用されているようですが、さらに調査するために多くの時間を費やしませんでした。これはユーザーアカウントの作成時に生成され、ユーザーがユーザー名、パスワード、メールアドレスなどのアカウントの詳細を変更したときに再生成されました。
問題は、この$ loginkey変数の目的は何ですか? md5のようなはるかに高速なハッシュを他の場所でより簡単に使用している場合、意図的に遅いbcryptを使用しても意味がありません。明らかに、これはアシュリーマディソンの開発者側の大きな失策ですが、なぜこれを最初に配置したのか、そして(誰かが)にbcryptを使用することを知っていたので修正されなかった理由に興味がありますメインパスワードハッシュ。
おそらく、ユーザーがログインするためのトークン(つまり、「ログインを記憶する」)として。
ユーザーが記憶されたログイン機能を使用できるようにする場合は、暗号で保護された疑似乱数ジェネレーター(CSPRNG)を使用してトークンを生成する必要があります。次に、使用するトークンの有効期限を計算し、トークンと有効期限の両方をデータベースに保存します。ユーザーがログインすると(ログイン時にログインを記憶する必要があることを示すと)、トークンのプレーンテキストをCookieまたはローカルストレージの形式でマシンに保存します。次に、ログインが必要なページにアクセスしようとしたときに、ブラウザのCookieまたはローカルストレージでそのトークンを検索します。トークンがデータベースに保存したトークンと一致し、そのトークンの有効期限がまだ先の場合は、ユーザーがログインしていると見なしてください。ブラウザーとデータベースからトークンを削除し、新しいトークンを生成して保存するプロセスをもう一度繰り返します。
セキュリティを強化するために、データベースでは、トークン自体ではなく、トークンのハッシュを格納する必要があります。 CSPRNGを使用してトークンを生成している限り、高速ハッシュアルゴリズムを使用してトークンをハッシュできるはずです。
Ashley Madisonの開発者は、$ loginkeyを作成するためにCSPRNGを使用せず、代わりにランダムでない文字シーケンス(ユーザー名とパスワードのMD5ハッシュ)を使用したと思います。 $ loginkeyのハッシュ化されていない部分(この場合はパスワード)を特定します。
Ars Technicaでの報道はコメントで良い議論をしています。 http://arstechnica.com/security/2015/09/once-seen-as-bulletproof-11-million-ashley-madison-passwords-already-cracked/
いくつかの推測: