2012-04-06

GPGPU時代のハッシュアルゴリズム

Coding Horror: Speed Hashing
xkcd: Password Strength

GPGPUが一般的になった現代では、従来のハッシュアルゴリズムは十分な強度ではないというお話。一般人が五百ドル程度で購入できるハイエンドグラフィックカードは、現在のハイエンドCPUより150倍も高速にハッシュ計算ができる。しかも、GPGPUで高速に計算できるということは、並列性が高いということを意味する。つまり、GPUを増やせば容易にスケールするので、さらに危ない。

もはや、MD5やSHA-1、SHA-2の時代は終わった。これからの開発者は、GPGPUに対しても十分な強度を持つ、容易に並列化できないハッシュアルゴリズムを採用しなければならない。

ユーザーは、長いパスワードを使わなければならない。現時点でのJeff Atwoodのおすすめは、12文字以上である。1(xY%08などという、人間にとって覚えにくい、辞書にも載っていないパスワードは、もはやなんの役にも立たない。なぜならば、たった一枚の家庭用グラフィックカードは、USキーボードに刻印されている文字の組み合わせならば、二時間弱で7文字を総当りできるからである。

したがって、2012年現在、パスワードは12文字以上(長ければ長いほどよい)にすべきである。記号や数字を含めるよりも、辞書に乗っている単語を避けるよりも、単純な長さが重要になってくるのだ。たとえ単語が辞書に載っていたとしても、組み合わせて長くしたほうが、人間にとって覚えにくいパスワードよりよほどいい。何故ならば、もはや本当の敵は人間ではなく、SIMD演算に特化したコンピューターだからだ。このような長いパスワードを、メモに残さずに覚えるためには、パスフレーズというテクニックを使うとよい。つまり、パスワードを単語とするのではなく、文章にするのだ。たとえラテンアルファベット小文字しか使っていなくても、20文字のパスワードの方が、記号や数字だらけの10文字のパスワードより安全である。

No comments: