simpleauthドライバのsaltの有効性と可変への移行について考えた事をメモ

config/auth.php内で指定できる、saltがパスワードのプレフィックスのsaltとして使用されている。このsaltの固定指定はセキュリティとしては問題とあがっている。saltが固定ということは、解析する場合にも一つ解析されるとすべてのパスワードが解析できてしまうことになる。ブルートフォース攻撃といわれるもので、総当たり解析ツールを使用することでsaltの長さにもよるが、簡単に解析できる。
※saltがある程度長いと解析に時間がかかる。固定でも可変でもある程度の複雑さがあり文字数が必要そう。

return array(
	'driver' => 'BaseAuth',
	'verify_multiple_logins' => false,
	'salt' => 'test', // 固定指定。ある程度複雑な指定が有効
);

そう考えると、可変指定に変更した場合にも調べることができそうなので、ならばsimpleauthの仕様通り固定のままでいくこともセキュリティ的にみてもありなのではないか思う。ならパスワードを平文でもいいとはさすがに思わない。

simplauthではAuthパッケージ内のメソッドを使用してBase64エンコードになっている

base64_encode($this->hasher()->pbkdf2($password, Config::get('auth.salt'), 10000, 32));

※折角テーブルにタイムスタンプやユーザ名などユニークな値をもっているため、付加したらもうすこしセキュリティとしていいのではないか

単純に可変にした場合にもセキュリティ面ではあまり有効ではないが可変にする方法を考える

saltをユーザ毎に持たせることが必要になり、さらにこの場合のsaltはテーブル内に格納する訳にはいかないため、サーバ上のリソース(テキストファイルなど)にユーザキーと共に格納することが必要。

その他おすすめの備忘録

Tagged with:
 

コメントを残す