メニュー

2012年6月7日

パスワードを解読されないように保存するために

LinkedInでパスワードが流出したとのこと。
http://itpro.nikkeibp.co.jp/article/NEWS/20120607/400824/

パスワードは単純にSHA1でハッシュ化されただけのようです。

この状態では元のパスワードは比較的容易に推測が可能です。
レインボーテーブル、辞書攻撃、総当りなど。

やはりサイトごとに違うパスワードを使うのが利用者として必要ですね。

さて、Web開発者はユーザのパスワードを安全に管理する必要があります。
漏洩させないのはもちろんですが、元パスワードの推測は困難にしましょう。

そういうわけで、パスワードをソルトとともにストレッチするライブラリ(ただの関数ですが)をGitHubに公開しました。

https://github.com/najeira/hashpass


いまのところ、PythonとPHPとGoの3言語を用意しています。

やっていることはコード読んで確認できますが、以下の様なことをやります。

  • 乱数によりソルトを生成する
  • パスワードとソルトを結合した文字列をハッシュ化
  • このハッシュ化を一定回数(デフォルト1000回 ) 繰り返す
  • ハッシュ方式、ソルト、ハッシュ化された値を連結して返す


# この方式でいいよね……?