パスワードとか保存する際の話

最近はAnonymousのお陰で情報漏洩のニュースがかなり賑わってますね。

プログラマー初心者の方々にはほんと気をつけてもらいたい所ですが、
パスワードとかをDBに生で保存するのはほんとやめましょう。

パスワードの保存の際に一番よく使われる手法はデータのハッシュ化です。

最近でも「パスワードを保存する際はMD5SHA-1を使ってハッシュ化しよう」という記事をよく見かけますが、
MD5SHA-1も今では危険なので出来れば避けましょう。

ではどの様な方式を利用すれば良いのか

現在ではSHA-2を使ってハッシュ化しておけば安全です。
SHA-2の詳細については自分で調べて下さい。

PHPでSHA-2を用いて、ハッシュ化するには下記のようにhash関数を使えば実装が可能です。

<?php
// SHA-256を用いてのハッシュ化
echo hash('SHA256', 'パスワード');

// SHA-384を用いてのハッシュ化
echo hash('SHA384', 'パスワード');

// SHA-512を用いてのハッシュ化
echo hash('SHA512', 'パスワード');
?>

利用可能なハッシュ方式についてはphpinfoを確認してみて下さい。
下記のようにhash項目に利用したい手法が記述されていればhash関数でその手法を用いてのハッシュ化が可能になります。


SALTを利用する

また、更に強度なハッシュを生成したい場合はmhashを用いてハッシュ化を行いましょう。
mhashを用いるとSALTを利用してのハッシュ化が可能になります。

mhash関数によるSALTを用いてのハッシュ化は下記のようなコードになります。

<?php
// SHA-224を用いてのハッシュ化
echo bin2hex(mhash(MHASH_SHA224, 'パスワード', 'SALT'));

// SHA-256を用いてのハッシュ化
echo bin2hex(mhash(MHASH_SHA256, 'パスワード', 'SALT'));

// SHA-384を用いてのハッシュ化
echo bin2hex(mhash(MHASH_SHA384, 'パスワード', 'SALT'));

// SHA-512を用いてのハッシュ化
echo bin2hex(mhash(MHASH_SHA512, 'パスワード', 'SALT'));
?>

いつまでも安全というわけではないということを認識しよう

パスワードなどの保存方法だけではないですが、セキュリティ関連については常に新しい情報を得ることが大切です。
SHA-2も今はまだ攻撃された例は見つかっていませんが、いつかは破られるかもしれないので、日々セキュリティ関連のニュースは目を通すようにしましょう。