Digital Inspiration: A Technology Blog on Software and Web Applications

WebアプリケーションやWebサービスへの依存度が高くなるほど、セキュリティが気になってくる。こうしたサービスは最初に入力するパスワードが守りになっており、パスワードがバレてしまえば、それでおしまいだ。本来なら、長く、他人には推測されにくく、自分だけが覚えられるパスワードを使う必要がある。しかし、面倒になってくるとどうしても簡単で覚えやすいパスワードを使ってしまう。実はそのパスワードはとても弱いものかもしれない。

Digital InspirationにおいてTest your Password Strength Onlineのタイトルのもと、そうした場合に利用できるシンプルなサービスHow Secure is my Passwordが紹介されている。パスワードを入力するフィールドが用意されており、そこに入力されたパスワードを総当り攻撃で破るまでどれくらいの時間がかかるかを教えてくれるサービスだ。試しにいくつかパスワードを入力したら次のような結果が得られた。

How Secure Is My Password? 実行例 : 123456 - よく知られているパスワード500に入っている。すぐに破られる

How Secure Is My Password? 実行例 : qwerty - よく知られているパスワード500に入っている。すぐに破られる

How Secure Is My Password? 実行例 : iloveyou - よく知られているパスワード500に入っている。すぐに破られる

How Secure Is My Password? 実行例 : IfUVx/e54o9vc - 見つかるまで6億3,300万年かかる

総当り攻撃の計算はシンプルなもの。ベースとなる文字集合の数にパスワードの長さのべき乗をとって、その総数をチェックするのにどの程度の計算時間がかかるかを計算している。また、辞書攻撃も同時に実施しており、よく知られたパスワードはその旨が表示される仕組みになっている。123456、qwerty、iloveyouなどはよく知られたパスワードであるため、その旨が表示されている。乱数生成プログラムを使って出力したパスワードIfUVx/e54o9vcは単純計算で6億年かかるそうだ。

チェックはブラウザで動作するJavaScriptコードで実施されており、入力したパスワードが回収されることはない。心配な場合にはページを読み込んだあとでオフラインモードで実行するか、JavaScriptコードをダウンロードしてきてコードをチェックしたのち、ネットワークと切り離した環境で実施してみるといい。

How Secure Is My Password? 実行例 : w4MmjC1 - 4日で見つかる

How Secure Is My Password? 実行例 : Br1sbr.tmnB1klabelgod - 見つかるまで138×10の21乗年かかる

他人に推測されにくく、自分だけが覚えやすく、かつ長いパスワードを作るというのは難しい作業だ。こうした場合には、自分だけが知っている、または創作した文章から、自分の中で決めた区切りで文字を抜き出してパスワードを作るという方法が利用できる。たとえば「わたしは毎日マイコミジャーナルをチェックしています」から「Watashiha Mainiti MJwo Checkshite Imasu」と区切って「WMMJCI」、これに数字っぽい部分を追加したり置き換えたり、大文字小文字を入れ替えて「w4MmjC1」にする、といった具合だ。この文字列だと4日程度で推測できるそうだ。

もうちょっと長いパスワードを作ってみる。たとえば「ビールといえば一番絞り。たまに黒ラベルもいいよね」から「Br1sbr.tmnB1klabelgod」といった具合にする。これだと138×10の21乗年だそうだ。How Secure is my Passwordのチェックは簡単なものでしかなく、このように簡単な指針で総当り攻撃の時間が決まるわけではないが、自身に注意を喚起する意味で面白い。なお、ここに掲載した文字列はパブリックに公開されているため、パスワードとしては使わない方がいい。