at posts/single.html

パスワードとハッシュ関数

yohgaki's blog - SHA1でハッシュ化したパスワードは危険になったを読んだ。

パスワードを平文で保存するのは論外で、MD5やSHA1でハッシュ化するのは当たり前です。しかし、SHA1を2000倍早くクラックする方法などが発見され「SHA1は脆弱だ」(ちなみにMD5はもっと危険)とされてからしばらく経ちます。アメリカ政府や大手企業はSHA1は使わない、としています。

備考:良いハッシュ関数の性質として不可逆性があります。例えば、パスワードを「abcd789oiuy」に設定した場合、SHA1ハッシュは「8bd7c6d4024410b312a89a9e13a9b0e8826cce31」になります。良いハッシュ関数はハッシュ値からパスワードが「abcd789ouiy」である事を推測できない性質を持っていなければなりません。

Saltを利用した場合、仮にパスワードデータが漏洩しても、Saltも知っていないと認証を行えるパスワードを推測・解析できないのでより安全になります。つまり、

$hashed_password = sha512($_POST['password'].'固定の秘密文字列');

等としてハッシュ化したパスワードデータの方がより安全です。当然ですがパスワードデータだけでは辞書攻撃もできなくなります。

でも、何が危険なのか、どうすればいいのかが、良く分からない。 なので、自分で調べてみることにする。

ハッシュ関数の性質

はてなダイアリーのキーワードを見ると、ハッシュ関数にもいろいろあるのが分かる。

関連する日記