春木屋 このページをアンテナに追加 RSSフィード

01-13-13

[]パスワードハッシュmd5を使うのは小学生までだよねー


おおよそのUNIX-likeシステムでは、パスワードファイルMD5ハッシュされるのが一般的だ(った)。

しかし、MD51996年脆弱性が見つかって以来、あまり推奨される方式ではなくなっている。

Wikipediaで調べてみても「パソコンレベルで、数10分程度で、同一ハッシュ値の非ユニークデータ列を生成できる実装が広まっている」などと恐ろしい事が書かれている。

つまり暗号化されていてもMD5ハッシュだと総あたりで易々と破られてしまうということになる。

こういった情勢のもと、多くのシステムでは、パスワードファイルハッシュ方法を変えたり、または自由に変えられるようになっているので、もしお前らがUNIX-likeシステム管理しているなら、いますぐ確認しろ


じゃあ何に変えたらいいの→SHA-2かBlowfishおすすめ


代替ハッシュ方法としては、Blowfish, SHA-2などが挙げられ、強度としてはBlowfishの方が高いようだが、そのアルゴリズムがNIST(アメリカ国立標準技術研究所)の承認をまだ受けてない事から、SHA-2を選択するケースが多い。

そのシステムがどのハッシュを採っているかは、ハッシュ文字列先頭から判断できる。


$1$: MD5

$2?$: Blowfish. ?はaかyかx.

$5$: SHA-2(SHA-256)

$6$: SHA-2(SHA-512)


FreeBSD 9.1-RELEASEはsha512(SHA-2)がデフォルト。手元にLinuxがないので確認できないのだが、UbuntuはまだMD5のよう。


しかしFreeBSDCVSを見ると2012年の7/15に変わっている。9系列で言えば9.1-RELEASEからデフォルトが変更されているようだ。

なお、9.1-RELEASEだから安心と思ったあなた。もしあなたが9.0以前から使い続けているなら注意が必要だ。これについては後述。



FreeBSDハッシュ方法を変えるには


FreeBSDでは/etc/login.confで制御する。

以下の行を書き換えればOK。

        :passwd_format=sha512:\

md5ならmd5, SHA-2ならsha512, Blowfishならblfである。

書き換えた後、以下のコマンドlogin.conf.dbを作り直すこと。

cap_mkdb /etc/login.conf


パスワードを再設定しないと新ハッシュになりません!


注意。上記設定をしたあと、もう一回パスワード設定しないと反映されません。

なんと不親切な、と思ったけど、よく考えたらそらそうだ。

もし自動的に変更しようとしたら、たとえばmd5ハッシュされた文字列を、いったん元に戻す必要がある。

元に戻させないようにわざわざハッシュしているんだから、自動でできるわけがない。


だから面倒でも、passwordコマンドを叩いて再設定すること。

同じパスワードであっても構わないが、まあ今回の作業の性質を考えると、このタイミングでパスワード変えた方がいいと思う。



9.0以前から使い続けていた人は注意

ということで、もしあなたFreeBSDが9.1で、デフォルトハッシュがSHA-2になっていたとしても、9.0以前にパスワード設定してそのままなら、ハッシュmd5のままである。

実際に俺のマシンは9.0で新規インストールし、ついこの間9.1にアップグレードした。

$ uname -a
FreeBSD sylph 9.1-RELEASE FreeBSD 9.1-RELEASE #0 r243825: Tue Dec  4 09:23:10 UTC 2012     root@farrell.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC  amd64
$ grep passwd /etc/login.conf|grep -v "^#"
	:passwd_format=sha512:\

とまあこの通り、SHA-2になっている。しかし以下のログで示すように、先頭が$1$になっておりMD5ハッシュであることを示している。

cap_mkdbしても同じ。(なおハッシュの核心部分はさすがにマスクしている)

$ sudo grep harukiya /etc/master.passwd 
パスワード:
harukiya:$1$xxxxxxxx:1001:1001::0:0::/home/harukiya:/usr/local/bin/bash
$ sudo cap_mkdb /etc/login.conf
$ sudo grep doe /etc/master.passwd 
harukiya:$1$xxxxxxx:1001:1001::0:0::/home/harukiya:/usr/local/bin/bash

で、passwdコマンドパスワードを設定してやると、めでたく先頭が$6$に変化した。

(なおここではマスクしているが、実際にやってみるとハッシュmd5に比べて長くなっていることが分かる)

$ passwd
Changing local password for harukiya
Old Password:
New Password:
Retype New Password:
$ sudo grep harukiya /etc/master.passwd 
harukiya:$6$xxxxxxxxxx:1001:1001::0:0::/home/harukiya:/usr/local/bin/bash

このままでもいいけど、せっかくだからblowfishに変更。/etc/login.confでsha512をblfへ。

        :passwd_format=blf:\

めでたくハッシュ先頭が$2a$に。

$ sudo cap_mkdb /etc/login.conf
$ passwd
Changing local password for harukiya
Old Password:
New Password:
Retype New Password:
$ sudo grep harukiya /etc/master.passwd 
harukiya:$2a$xxxxxxxxxx:1001:1001::0:0::/home/harukiya:/usr/local/bin/bash

もちろん、このあとrootパスワードも設定しました。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/flageo/20130113/p1
リンク元