パスワードハッシュはsaltと一緒にハッシュ化する

Security 12月 19, 2008
(Last Updated On: 2013年11月6日)

このタイトルにするとsaltとは、という議論をもう一回する事になるのかもしれませんが、最も近い用語はsaltだと思うので、saltを用語として使います。

随分前からパスワードハッシュはユーザが提供したパスワードと、システムが保持している秘密のランダム文字列と一緒にハッシュ化する方がより安全である、と言っていました。異論がある方もいらしたのですが、どうしてより安全となるのか、場合によっては比べ物にならないくらい安全になるのか、良く分かるビデオを見つけたので紹介します。


(音が大きいので注意!)

このビデオを見ると、SQLインジェクションでWebフォーラムのハッシュ化ユーザパスワードを盗み取り、レインボーテーブルを提供しているサイトを利用して「ランダム文字列のパスワード」を解析し、SQLインジェクション情報を提供していたセキュリティ関連フォーラムへの侵入も成功させてしまった事がわかります。

このビデオから理解するべき教訓は

– パスワードハッシュは秘密のランダム文字列を一緒にハッシュ化して保存する
– ランダム文字列でも6文字程度では平文と変らない(事もある)
– Webサイト毎に別のパスワードを利用する

です。

どれも随分前から機会がある度にこうすべき、と話していたことばかりです。
もし、実践されていないのであれば、出来る限り早く実践される事を強くお勧めします。

追記:
現在では(パスワード+salt)をハッシュ化するだけでは安全とは考えられていません。SHA2以上の強度を持つハッシュ関数で、複数回(数千から数十万)ハッシュ化する必要があります。

PHPの場合、password_hash関数が便利です。これを使っているとPHPが新しく強いハッシュ関数をサポートした場合、自動的にアップデートされます。(パスワード更新時)

投稿者: yohgaki