gawker mediaのにのまえにならないようにパスワードを保存する方法
gawker mediaがハックされて惨憺たることになっている。ユーザのパスワードが数万(?)と漏れて、同じパスワードを使い回しているユーザの別サービス(ツイッターやメール)まで覗かれるハメに。どうしてこうなったかには色々あるんだろうど、一番マズかったのは弱いパスワードの暗号化の仕方だ。
そこで、Codaさんからアプリケーション開発者へのアドバイス:
bcryptを使え、bcryptを使え、bcryptを使え、bcryptを使え、、、
http://codahale.com/how-to-safely-store-a-password/
MD5, SHA1, SHA256, SHA512, SHA-3などは使わないこれらはデータの整合性チェック用の高速ハッシュアルゴリズム。高速はデータチェックにはいいが、パスワードを隠すにはよくない。
今時のpcは毎秒330メガのmd5を計算できる。6文字の[a-z0-9]のパスワードのハッシュは40秒で全て試せる。
20万円とちょっとの時間をかければcudaでマイスーパーコンピュータが組める。これなら毎秒7億のパスワードのハッシュを計算できる。
Saltを使っても無駄。手で収穫したオーガニックヒマラヤピンク塩を使っても駄目。速いハッシュアルゴリズムを使っていることに変わりはないから。
bcryptはwork factorという計算の負荷(遅さ)を調整するパラメタを持つ。したがって、ムーアの法則についていくことができる。
work factor=12だと「yaaa」をハッシュするのに0.3秒。同じ環境でmd5だと1マイクロセカンド。10の5乗の違いだ。これだと、40秒毎にパスワードをクラックするのが12年になる。
結論: パスワードにはbcryptを使う。肝に銘じておこう。