パスワードの作り方、総当たり攻撃、文字の種類と文字数(桁数)について考える。
私はTwitterなどのアカウントを乗っ取られたことはなく、他のサービスでも今まで他人に使われたことはない(と思っているだけかもしれない)が、各サイトで使っているパスワードを再考していたとき、たまたまTwitterで話題のレイバンの広告が表示されるスパムを見かけた。 これは、Twitterのアカウントが何者かによって使われ(乗っ取られ)投稿されるスパムで、レイバンと関係のないサイトへ誘導される。 どんなに強固なパスワードを考えても、どこからかパスワードが漏れてしまうと意味がなく、パスワードの使い回しが一番危険なのかもしれないが、久しぶりにパスワードについて考えた。
安全とされるパスワードは、基本的に総当たり攻撃(ブルートフォースアタック)を想定していて、それに強いパスワードを指している。 総当たり攻撃というのは、例えば数字4桁のパスワードの場合、0000、0001、0002、・・・、9997、9998、9999と全ての組み合わせを試せばいずれ当たるだろというもの。 つまりパスワードは、桁数が多く、文字の種類が豊富なほど良いということになる。 数字は0~9の10種類しかないが、英字はa~zまで26種類あり、さらに大文字のA~Zもある。 またパスワードには !"#$%&'()=-^~\|@`[{;+:*]},<.>/?_ などの記号も使える場合がある。 パスワードはこれら全て混ぜて作るのが理想的とされる。
いろいろな種類の文字や記号を混ぜると覚えにくいので良くないという意見もあるが、覚えられるならその方が良い。 それに、文字列の区切りとして大文字や記号を入れた方が覚えやすい場合もある。
いくつかのサイトで試したが、Google、Yahoo!Japan、Amazon、Twitter、Facebook といった大きいサイトはパスワードに記号も使えるが、ヨドバシカメラ、ビックカメラの通販サイトなど、記号が使えないサイトも結構ある。
下表は、使用する文字の種類と各桁数における総当たりに必要な試行回数を記した。 例えば数字(0~9)の4桁は、0000から9999まで1万通りの組み合わせしかない。 サイトでパスワードを決める際、安全性の目安が表示されるサイトがあるが、概ね数字、英字(大小)、記号(使用可能な場合)を組み合わせて10桁程度で「安全」と表示される。 例えば、英字(大小あり)+数字+記号31文字の10桁のパスワードを総当りする場合、48,398,230,717,929,300,000(約4839京)ものパターンが存在する。
使用する文字の種類 | 使用可能文字数 | 4桁 | 6桁 | 8桁 | 10桁 |
数字(0~9) | 10 | 10,000 | 1,000,000 | 100,000,000 | 10,000,000,000 |
英字(小文字a~zのみ) | 26 | 456,976 | 308,915,776 | 208,827,064,576 | 141,167,095,653,376 |
英字(小文字a~zのみ)+数字 | 36 | 1,679,616 | 2,176,782,336 | 2,821,109,907,456 | 3,656,158,440,062,980 |
英字(大小あり)+数字 | 62 | 14,776,336 | 56,800,235,584 | 218,340,105,584,896 | 839,299,365,868,340,000 |
英字(大小あり)+数字+記号31文字 | 93 | 74,805,201 | 646,990,183,449 | 5,595,818,096,650,400 | 48,398,230,717,929,300,000 |
英字(大小あり)+数字+記号32文字 | 94 | 78,074,896 | 689,869,781,056 | 6,095,689,385,410,820 | 53,861,511,409,490,000,000 |
英字(大小あり)+数字+記号34文字 | 96 | 84,934,656 | 782,757,789,696 | 7,213,895,789,838,340 | 66,483,263,599,150,100,000 |
総当り攻撃はコンピュータの性能が良いほど速く試行でき、コンピュータの進化により総当りに要する時間は短縮されつつある。 総当り攻撃にどのくらい時間がかかるか実験している人もいる。 ただ、サーバに対して何億何兆という総当り攻撃を行った場合、きちんと管理されているサーバであればそれに気づいて対処するだろう。 総当りの試行回数が少なすぎるパスワードや推測されやすいパスワードでない限り、無駄に試行回数が多いパスワードを作るのはあまり意味がないのかもしれない。 強固なパスワードを設定したにも関わらずアカウントが乗っ取られた場合、きちんと管理されていないサーバであったり、ローカルのパソコンなどからパスワードが漏れた可能性がある。 つまりパスワードの使いまわしを避けたり、信頼性の低いソフトウェアのインストールを避けることが大切。