パスワードとハッシュ関数
yohgaki's blog - SHA1でハッシュ化したパスワードは危険になったを読んだ。
パスワードを平文で保存するのは論外で、MD5やSHA1でハッシュ化するのは当たり前です。しかし、SHA1を2000倍早くクラックする方法などが発見され「SHA1は脆弱だ」(ちなみにMD5はもっと危険)とされてからしばらく経ちます。アメリカ政府や大手企業はSHA1は使わない、としています。
備考:良いハッシュ関数の性質として不可逆性があります。例えば、パスワードを「abcd789oiuy」に設定した場合、SHA1ハッシュは「8bd7c6d4024410b312a89a9e13a9b0e8826cce31」になります。良いハッシュ関数はハッシュ値からパスワードが「abcd789ouiy」である事を推測できない性質を持っていなければなりません。
Saltを利用した場合、仮にパスワードデータが漏洩しても、Saltも知っていないと認証を行えるパスワードを推測・解析できないのでより安全になります。つまり、
$hashed_password = sha512($_POST['password'].'固定の秘密文字列');
等としてハッシュ化したパスワードデータの方がより安全です。当然ですがパスワードデータだけでは辞書攻撃もできなくなります。
でも、何が危険なのか、どうすればいいのかが、良く分からない。 なので、自分で調べてみることにする。
ハッシュ関数の性質
はてなダイアリーのキーワードを見ると、ハッシュ関数にもいろいろあるのが分かる。