使ってはいけないパスワード

ハッカー集団アノニマスがアップルのサーバーへの侵入に成功し、警告を表明しています。
リンク先にもあるように、20数個のユーザーアカウントとパスワードのハッシュ値らしきものが発表されてしまったわけですが、この「ハッシュ値」というのはパスワードそのものではなく、パスワードを何らかの方法で暗号化したものであり、ハッシュ値から本来のパスワードを類推するのはコンピュータを使っても非常に困難である、というのが特徴です。
そのためか、アノニマスさんも「Not being so serious,」と言っているわけですが、簡単すぎるパスワードを使用している場合は、そうは言っていられません。

なぜなら、パスワードを有効に暗号化(ハッシュ化)する方法として有効であるとされる方法は数種類しか存在せず、その方法は公開されているからです。

ハッシュ値がパスワードの代わりに保存されている

ハッシュ化とは大雑把には

  1. ある文字列(種)からは、必ずある特定の文字列(ハッシュ値)が得られる
  2. ハッシュ値からもとの種を類推するのは不可能であるか非常に困難である

という暗号技術です。

ハッシュ化の方法は非常に高度な数学的技術を必要とするため、一部のスペシャルな学者さんの脳でないと発明できません。しかも、その方法が有効である事を証明するためには、論文として発表し、世界の天才たちに検証してもらうしか方法がないのです。
そのため、ハッシュ化の技術は公開されていて、世界中のプログラマーが(自分で検証する事は不可能でも)自由に利用する事ができます。

試しに、「0000」という超簡単なパスワードを「SHA1」という方法でハッシュ化すると、「9cf96ce8e6a93bd0c165799d9a0e6bb79beb1fb9」という文字列が得られます。
学者さんの智慧のおかげで、この「ハッシュ化された文字列」からもとの「0000」という文字列を割り出す事は、ほとんど不可能です。

セキュアなログインシステムでは、この「0000」というパスワードの代わりに、ハッシュ化された文字列「9cf96ce8e6a93bd0c165799d9a0e6bb79beb1fb9」の方を保存しておきます。「0000」という本来のパスワードは忘れ去ってしまって、どこにも保存しないようにしておきます。そうすれば、万が一今回のようにパスワードのデータが取り出されたとしても、「9cf96ce8e6a93bd0c165799d9a0e6bb79beb1fb9」から本来のパスワードである「0000」を計算で割り出される心配はありません。
本物のユーザーが「0000」というパスワードでログインしてきたときには、もう一度その場で「0000」をハッシュ化します。そこで得られた「9cf96ce8e6a93bd0c165799d9a0e6bb79beb1fb9」が、保存してある「9cf96ce8e6a93bd0c165799d9a0e6bb79beb1fb9」と同じであれば、ユーザーは正しいパスワードを入力したと判断する事ができます。
さらにセキュアにするために、もうひと工夫もふた工夫もすることができるのですが、古くからのシステムではまあ、こんな感じです。

とすると、ハッシュ化されたパスワードが流出しても問題ないのでは?と思いますが、簡単すぎるパスワードを使っている場合には、そうではないのです。

アホパスワードがハッシュ化しても安全でない理由

すでに書いたように、ハッシュ値からもとのパスワードを復元するのは非常に困難です。
でも、もしあなたがどこかのシステムに侵入したとして、ユーザーのパスワードに「9cf96ce8e6a93bd0c165799d9a0e6bb79beb1fb9」と見覚えのある文字列が保存されているのを見たら、「あ、この人のパスワードって0000じゃん」と見破ることができてしまいます。
だったら、「0000」とか「1234」とか「aaaa」とか、思いつく限りのパスワードのハッシュ値を先に調べておけば、全部は無理でもたまたま調査済みのハッシュ値と同じものにたまたまぶちあたるかも知れません。そうなれば、パスワードはバレバレというわけです。

そしてこの「思いつく限りのパスワードのハッシュ値」は、パスワードを狙うクラッカーなら誰でも考えつくだけでなく、隠すことのできない、むしろセキュリティーの向上のために衆知されるべき情報として公開されてすらいるのです。

検索してみる

試しに、アノニマスによって公開されてしまったパスワードのひとつ、「5DDF97914AE903CD933CFA428E6582A214E66339」をググってみましょう。
検索のポイントは、

5DDF97914AE903CD933CFA428E6582A214E66339 -apple

といった具合に、「apple」というキーワードを含むページを避けて検索する事です。

この記事の執筆時では、hashash.in というサイトの中のページがトップに表示されました。
なんだかすごい勢いでハッシュ値が並んでいますが、さらにページ内を検索してみると、「*5DDF97914AE903CD933CFA428E6582A214E66339」がある単語のある方式でのハッシュ値である、ということが示されています。
そのほかに、このサイトではなんと2千4百万ものパスワードのハッシュ値が公開されています。このページだけを見ても、ちょっとしたところで使ってしまいそうなパスワードがいくつか見つかるのではないでしょうか。

このように、ちょっと検索するだけでハッシュ値からパスワードを探す事すらできてしまうのです。悪い奴らがどれだけのデータを蓄積しているかは考えたくもないですね。

安全なパスワードを使う

ユーザー情報の漏洩のニュースは後を絶ちませんが、その際に自分のアカウントが悪用されてしまうかどうかは、どれだけ安全なパスワードを使っているかにかかっていると言っても過言ではありません。
たまにパスワードを暗号化すらせずに「平文」で保存しているシステムが問題になりますが、今のご時世では「あり得ない」級の大問題です。
悪用の被害に遭えば、もちろんその加害者や、あるいはシステムの提供者に責任を問う事ができるかもしれませんが、そのために失う時間や苦労を考えれば、被害は未然に防ぐのが得策です。
パスワードを安全にするには、悪い人が「思いつく限り」に含まれないパスワードを使うしかありません。
いろいろな所で紹介されてはいますが、「思いつく限り」に含まれやすいのは

  • 簡単な数字の繰り返しまたは順列(例: 1111, 54321)
  • 簡単なアルファベットの繰り返しや順列(例: zzzzz, abc)
  • (とくに英語の)辞書に載っている単語や名前(例: alice, blue)
  • 短い
  • 上記の組み合わせ(例: abc123, john1980, mypassword)

といったところでしょうか。

アルファベットの大文字、小文字、数字、記号をランダムに組み合わせて、システムが許す限り長いパスワードを設定するのが理想ですが、その結果パスワードを付箋紙に書いて貼り出すことになっては元も子もありません。
パスワードを決めるのに有効な方法は、「覚えられるパスワード」ではなく、「思い出せるパスワード」 を考える事です。
パスワードを覚えておく必要はありません。「自分のストーリー」を「自分のルール」で打ち込んでいけば良いのです。例えば

  • ストーリー → 札幌のヒロシおじさんの犬、カワイイ
  • ルール → 地名は大文字で子音だけ(札幌→SPPR)
  • ルール → 名前に含まれるiは1、oは0に置き換える(ヒロシおじ→h1r0sh10j1)
  • ルール → 犬はあえて業界用語で(犬→ヌーイー→nu-i-)
  • ルール → カワイイはアスキーアート。ただし後半は除く(カワイイ→ #^_^# → #^_ )

つなげると「SPPRh1r0sh10j1nu-i-#^_」となりました。
こんなパスワード、絶対に覚えられそうにありませんが、ストーリーをもとにルールを思い出せば再現可能ですし、なにより他人には絶対に想像もつかないパスワードだと思いませんか?

ちなみに、マイクロソフトが公開しているパスワードの強度テストでは、BESTをいただきました。

おためしあれ。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です