オープンソースCMSでのパスワードのハッシュ化方法を調べてみた
ちょっと気になったので調べてみた。
調査結果
プロジェクト | 手法 | salt | ファイル | 関数、クラス、メソッド |
---|---|---|---|---|
WordPress 2.7.1 | blowfish、拡張DES、md5*1 | 乱数 | wp-includes/class-phpass.php | PasswordHash*2 |
MovableType 4.25 | crypt*3 | 乱数 | lib/MT/Author.pm | set_password |
Geeklog 1.4 | md5 | なし | system/lib-security.php | SEC_encryptPassword |
concrete 5.3.1 | md5 | 固定乱数*4 | concrete/models/user.php | User->encryptPassword |
habari 0.6 | sha1, sha, sha512, md5 | なし | system/classes/utils.php | Utils::crypt |
先行研究
そういう観点から、メジャーなPHPのオープンソースのパスワードハッシュ化の状況を調査してまとめてみた。
[PHP]オープンソースのパスワードハッシュ化状況調査 | ブログが続かないわけ
まとめ
[調査結果] 2007/11/06
プロジェクト | 手法 | salt | ファイル |
---|---|---|---|
osCommerce 2.2 MS1 日本語版 | MD5 | 変動乱数(2桁) | catalog/includes/functions/password_funcs.php |
ECCUBE 1.3.4 | SHA1 | 固定 (31eafcbd7a81d7b401a7fdc12bba047c02d1fae6) | data/conf/core.php |
OpenPNE 2.8.5 | MD5 | なし | webapp/lib/db/member.php |
XOOPS 2.0.17.1 | MD5 | なし | htdocs/kernel/member.php |
NetCommons1.1.2(xoopsベース) | MD5 | なし | html/kernel/member.php |
*1:phpassと言うライブラリを2.5から使用しているらしい。それまではsaltなしのmd5だったとのこと。#2394 (Passwords are stored in an insecure un-salted form) – WordPress Trac) ちなみにphpassのblowfish、拡張DESは使ってはいけないcryptで生成している。こういう風に標準DES以外のために使うのであればcryptを使うのは悪いことではない。特にPHP 5.3.0以降では標準DES、拡張DES、MD5、blowfishのすべてがPHPで独自実装されるようになり環境依存もなくなっている。
*2:wp-includes/pluggable.phpのwp_check_password、wp_hash_passwordから呼び出される
*3:perlのcrypt. "# FIXME: use something besides 'crypt'"というコメント付き
*4:初期設定時にランダム文字列生成