パスワードは定期的に変更すべき

利用する機器/サービスごとに異なるアカウント・パスワードを使用することや、十分な長さと複雑さを持ったパスワードを採用することは当然であるのだが、しかし、ここまで頑張っても、最終的にはパスワードを定期的に変更せざるをえない。

問題は「『定期的』がどれくらいの周期なのか?」である。

ムーアの法則を拡大解釈すると、コンピュータのCPUの性能は18ヶ月で2倍になる。仮に、ムーアの法則に基づくCPU性能の向上によって「力任せにパスワードを解読するのに必要な時間」が18ヶ月で半分になると仮定すると、18ヶ月ごとにパスワードの長さを1bit長くすることで、パスワード解読に必要な時間が元に戻ることになる。

パスワードにはASCIIの範囲の文字が使われることが多い。仮に1文字が8bitであるならば、12年ごとにパスワードの長さを1文字増やす必要がある。

実際には、この手のパスワードネタはWebサービス絡みの話が多く、その場合はUTF-8が使われるのが大半であるはずだ。なので、1文字を8bitではなく7bitで考えるとして*1、計算すると10.5年。

まあつまり、だいたい10年ぐらいを目処に、元のパスワードよりも1文字長いパスワードに変更する方がよい、ということになる。

問題は、

「力任せにパスワードを解読するのに必要な時間」が18ヶ月で半分になると仮定

――という仮定が正しいか否か、だ。

単純にコンピュータの内部構造を考えただけでも、CPU以外にバスやメモリの速度のように力任せなパスワード解読に関係しそうな部分があるし、クラスタリングGPGPUのようにCPU性能の向上以外にもコンピュータの性能を向上させる仕組みがある。技術革新だってあるだろう。

とはいえ、単純に考えるなら、コンピュータ性能の向上に合わせてパスワードを長くしていく必要がある。(十分に複雑なパスワードを使用しているという前提で)何らかの要因でオフラインでの解読が可能となってしまうケースまで想定すると、こういう結論になる気がする。

(ハッシュが流出した場合は、また扱いが別だよね?)

しかし、10文字のパスワードなら頑張って耐えられるが、16文字は個人的にもう無理だし、Webサービスでは外部アカウント(GoogleFacebookあたり)連携で覚えるべきアカウント/パスワードの組を減らせる余地があるものの、手元のPCやその他デバイスでは個別にパスワードを設定するしかないのが現状な訳で(=パスワード多すぎ)、いい加減そろそろ2段階認証を含めて今までとは別の仕組みでの認証を考えるべきなのは周知の事実だろう。でも生態認証は……「手元の自分の端末で使う」レベルならまだしも、Webサービス(≒個人的に行動ターゲティングや何やらで広義の個人情報で儲ける体質の業界だと思ってる)とかではイヤだなぁ。

*1:UTF-8のうち、1byteで符号化される文字では、MSBが必ず0であるため。