2011/05/28 雨でサッカー中止. 明日のサッカーも中止. 明日早朝はチャンピオンズリーグ決勝を生で見よう.

1社面白そうな求人があったのでエージェントを介さずに応募した.

CakePHP Authコンポーネントでパスワード・ハッシュをストレッチングするには? - ScriptWorks.JPをみて, 長期利用するシステム(普通は長期利用を考えるだろう)ではパスワード保存方式を変更可能にすべきとTwitterにコメントした. 理由は, ハッシュアルゴリズムが安全でなくなったりストレッチ回数が不十分になるかもしれないからだ. 少し面倒だが難しいことではない.l Unixのパスワード保存とほぼ同様のことをする.

以下メモ.

  • 前提
    • ハッシュアルゴリズム+Salt+Stretchingでパスワードを保存するとする
      • 徳丸本方式ではSaltは保存しなくてよい.
  • 方法
    • 全体
      • 利用するパスワード保存法(ハッシュアルゴリズム+Salt+Stretching)の組合せを管理する. 番号を振り定数を定義すればよい
    • パスワード情報の保持(DB)
      • パスワード保存法の番号, Salt, ハッシュ化された情報を保持する. Unixのように連結しても別々のカラムでもよい. Saltとハッシュ化された情報の想定される最大サイズが格納できるようにする. 現状だとそれぞれ 512bit でよい. Base64などして保持する場合はそれも考慮すること.
    • パスワード保存
      • 現在採用しているパスワード保存法に基づいた処理をしパスワード情報を保存する
    • パスワード照合
      • DBに保存してあるパスワード保存法の番号に合わせた処理をし, ハッシュ化された情報同士の照合を行なう
    • パスワード保存方式の追加
      • DB側の変更は必要ない
      • 以下の順で(先に保存部をやると照合できない場合が発生)
      • パスワード照合部に新しい保存法の処理を追加
      • パスワード保存部を新しい保存法に置き換え