2013年6月14日

21世紀のパスワード事情

ヒント

Facebookのヘルプページでも、企業の利用規約でも、「… for dummies」(猿でもわかる)シリーズの一節でも、コンピューターセキュリティに関するインストラクションのほぼすべてで、常に強力なパスワードを使用することが強く推奨されています。時間が経つにつれてこのアドバイスは標準的なものになりましたが、「良い」パスワードという概念自体は絶え間なく移り変わっています。パスワードを考えるときに90年代のアドバイスを思い起こすことには、もはや何の意味もありません。そこで、強力で信頼できるパスワードを作るにはどうすればいいか、もう一度考えてみることにしましょう。

21世紀のパスワード-title

なぜこんな無意味なことが必要なのか?

アルファベット、数字、特殊文字を組み合わせたパスワードは、以前から広く使われてきました。パスワードが主にコンピューターアカウントやローカルの文書、アーカイブを保護するために使用されていた頃からです。しかし、暗号化されていたとしても、犯罪者に物理的にアクセスされる恐れがあり、正しい「キー」が見つかるまでパスワードを入力し続けられてしまうというリスクが生じます。この手口は総当たり攻撃と呼ばれるもので、短いパスワードには大きな効果がありました。パスワードに多様な文字を使って長くすればするほど、パスワードの文字を徹底的に調べ上げるのに必要な時間が長くなります。4~5文字のパスワードだと、ほんの数秒で犯罪者に破られてしまいますが、1文字増やすだけで、必要な時間が10倍になります。同じことが、アルファベット、記号、数字の組み合わせにも当てはまります。こうした文字を含めることで、総当たり攻撃によってパスワードが破られる可能性を大きく低下させることができるのです。

もちろん問題点もあります。パスワードに1つの単語だけを使う場合、長くて珍しい単語であったとしても、簡単に見つけられてしまいます。辞書に載っている単語をすべて試せばいいだけなのですから。この世界にある単語はあまり多くありません。パスワードに数字を1つ足すだけで、複雑さが大きく増します。だからこそ、エキスパートは、英数字や他の文字を組み合わせて使うように勧めているのです。もっとも、推測するのも難しくなりますが、覚えるのも大変になります。

パスワードに1つの単語だけを使う場合、長くて珍しい単語であったとしても、簡単に見つけられてしまいます。

現在は複雑な状況です。多くのオンラインサービスが、総当たり攻撃のあらゆる可能性を排除していますが、一部のケースでは現在も可能となっています。さらに、感染したコンピューターで構成されるボットネットによって、ハッカーが巨大な処理能力を手に入れ、パスワードのクラッキングの高速化に使用されることもあります。

新時代の現実

今では非常に多くの人が何十ものWebサービスを利用しており、そのサービス1つ1つがパスワードを求めています。1つのパスワードだけを使い続けるのは危険です。1つのサイトのパスワードを盗んでしまえば、そのユーザーのオンライン生活全体に侵入する道が開かれてしまうからです。とはいっても、よほど賢い人でない限り、「Xp89$ABG-faw?6」のような一意の文字列の組み合わせを、訪問するサイトすべてについて暗記することはできません。安全性と利便性を両立するパスワードを選ぶにはどうすればいいのでしょうか?

完ぺきなパスワードの作り方

大原則として、現在重要なことですが、パスワードは長くしなければなりません。いくつか文字を足してもいいですが、意味不明なパスワードにする必要はありません。簡単に覚えられるわかりやすいフレーズを使って、単純な辞書攻撃を防ぐために、いくつか変更を加えましょう。たとえば、「ThereIsNothingEitherGood0Bad」(良いも悪いもない)なら意味が分かりますよね?意味のない文字列よりも、コードフレーズにちょっと付け足したものの方が、ずっと簡単に覚えられます。しかし、注意が必要なのは、シェイクスピアなどの古典はあまりコードフレーズに向かないということです。覚えやすい自分自身のフレーズを考え出す方がいいでしょう。また、1つのフレーズは1つのサービスだけに使ってください。

フレーズの長さと複雑さを選ぶときに、覚えておいてほしいことがあります。それは、保護されるデータの価値、パスワードを入力すると思われる頻度、モバイルデバイスでの入力が必要となる可能性です。こうした要素は、パスワードに加える変更の複雑さに影響します。たとえば「EitherGood0Bad」(良いか悪いか)というパスワードは、無料の音楽サービスには最適ですが、メインのメールボックスやオンラインバンキングサービス向けには、「There1sNothingEitherGood0BadButThinkingMakes1tSo1603」(良いも悪いも本人の考え次第)といったものを考え出した方がいいでしょう。繰り返しますが、さまざまなコードフレーズに基づいて、サービスによって異なるパスワードを使い分けなければなりません。

これによって別の問題が生じます。一部のサービスはパスワードの長さに制限を設けているのです。そのようなサービスは使わない方がいいでしょう。

注意:
ラテンアルファベット、数字、特殊文字を使って10文字のパスワードを作る場合、総当たり攻撃に使われる組み合わせの数は2.8×1018になります。よく使われる英単語を4つだけ入れたパスワードだと、1.6×1017 種類となり、それほど少なくはありません。単語を5つ含めると、組み合わせの種類を簡単に3.2×1021に増やせます。一般的な単語の方が、覚えられない無意味な言葉よりも効率的であることがわかります。

現代の手法

コードフレーズは、でたらめに組み合わせた文字よりもはるかに使いやすいものですが、それでも各パスワードを一意のものにすることが重要です。ある特別な調査で、平均的なインターネットユーザーは5つの異なるアカウントを持っていることがわかりました。各アカウントに独自のパスワードを設定する必要があります。ユーザーの記憶力を簡単にテストできますね。さらに、一部のユーザーは5つよりもずっと多くのアカウントを持っています。こうなると、どんな頭脳でも難しくなってきます。このようなケースのために専用のアプリケーションカテゴリが発明されました。パスワードストレージと呼ばれるものです。こうした種類のモジュールはKaspersky PURE(日本では未発売)にもあります。このモジュールには、考えられるすべてのWebサイト、リソース、その他のユーザーアカウント情報のデータベースが含まれています。このテーブルは強力なアルゴリズムで入念に暗号化されているため、所有者は、そのテーブルにアクセスするための非常に強力なパスワードを1つ考えるだけで済みます。そのパスワードさえしっかり覚えておけば、後のことはコンピューターが面倒を見てくれるのです。