あなたの重要なパスワードはなぜ盗まれるか?そしてどうすればいいのかを考える。

一年に何回かはパスワード漏洩がニュースになっている。

それはなぜだろうか?

また、セキュリティを勉強した人であれば、非可逆暗号などを利用してサービス運営会社がパスワードを保管しているはずなのになんで盗まれるか疑問を持った人も多いだろう。

辞書ベースの単語を使用

パスワードは、その言葉を入れるとログインが出来るものである。

一番いいパスワードは乱数で生成したパスワードを利用することであるが残念ながら、普通の人間にとってはなかなか覚えることが難しい。

そこでどうしても辞書に載っているような単語を入力してしまいがちである。

もちろんそのような危険を防ぐために二要素認証があるが、コストがかかるのですべてのサービスで使用されることはない。

結論から言うと盗まれやすいパスワードは簡単に類推できるパスワードであると断言できる。

  • 誕生日などの日付
  • 辞書に載った単語と数字の組み合わせ

どうしてもこのように安易にパスワードを設定しそうだがそのようなパスワードは簡単に攻撃者にから割り当てることが可能になるだろう。

内部的な犯行による可能性

ニュースを賑わすような事件では、かなり多くのパスワードが盗まれたりしている。これらの犯行は残念ながら内部的な犯行が多い。

外部からの攻撃がないとは言わないが、ファイアーウォールやIPSなどの検知システムが複数あるのでそもそも攻撃が難しい。また大規模なサイトほどサーバーが複数あり、パスワード情報が入っているサーバーを割り当てるだけでも時間がかかる。

そのため大規模なパスワード漏洩の事件のほとんどは内部的な犯行であると考えることが自然であろう。そのような反抗をするものは何が理由でそうするかは分からないが、そのようなことは再度起こる可能性があることは簡単に想像ができる。

非可逆暗号によるパスワードの保護は?

たとえばパスワードを保護するためにハッシュとかソルトといった手法について聞いたことがあるだろう。

それらの手法は昔計算機の処理能力が小さかった時代で考えられたものでありどのような手法を考えて作ったかがわかればパスワードを割り出すことができる。

ハッシュ化など非可逆化された情報から元のパスワードを知るには一昔前であれば時間がかかったのでそれなりの効果があると思われていたが今はパソコンでも十分に高速になり、たくさんの元パスワードを生成した上で非可逆化のロジックを実行して盗んだデータと比較すれば元のパスワードがわかる。このとき攻撃者は元になる辞書データと数字の組み合わせで計算して難読化を行うが、元になるパスワードはむやみやたらに想定すると時間がかかるので人間が設定するであろう辞書などにのっている言葉と数字を組み合わせることで生成を行う。そのようにすることであとはパソコンで計算させるだけである程度のパスワードは解読できるわけである。

exampleMD5
パスワードをmd5でハッシュ値した例、この元データからハッシュ値を計算して、盗んだデータと比較して元のパスワードを解析する。

攻撃するサイトにユーザー登録したあとで、非可逆化された情報をベースにすると解読も捗る可能性がよりいっそう高くなる。よく使用されると思われるパスワードを登録すれば、それと同じ値を持つものは同じパスワードを使っていると推測できるし、非可逆化の方法についてもわかる手がかりになる可能性が高くなる。

ここで言いたいポイントはサイト側で対策を練ってもパスワードが盗まれる可能性が0ではないと考えられるということだ。

つまりパスワード漏洩の被害に会いたくなければ利用しているサイトからパスワードは盗まれる可能性があることは意識しておいたほうがいいと考える。

盗んだパスワードをベースに他のサイトを攻撃

パスワードが盗まれた場合、盗まれたサイトが攻撃されることが考えられるが、その場合の対策は最悪の場合サイトのサービスを止めれば被害は最小限に抑えることが可能になる。

たちが悪いのは盗んだパスワードをもとに違う会社が運営しているサービスを攻撃することだ。

この場合ユーザーは複数のパスワードを覚えることが難しいのでいつも利用しているパスワードを複数のサイトで使っているからだ。

対応策は?

パスワードを漏洩しないように工夫が必要なのはサービス提供者はもちろんのことだがそのパスワードを利用しているユーザーがパスワードを漏洩される可能性があると感じ対応策を考え実行することしかないと考える。

サービス提供者はハッシュとかソルトのような技術を複数回使ったり、それぞれのタスクに対して設計者と運用者を変えればそのようなリスクは減るだろう。また、弊社でも提供しているHSMを利用した認証システム(e2ee)であればさらにそのようなリスクは減るだろう。

一番の問題はそれらの対策をするとそれなりにコストがかかるということである。そのサービスをユーザーが利用することでそれなりに収益が上がるサービスであれば問題ない。しかしながら現実的にはすべてのサービスがそのようなコストをかけれるわけではない。

また繰り返しになるがそのような工夫をしていてもパスワードが盗まれる可能性は0になるわけではないと考えたほうがいいだろう。

パスワード漏洩の被害を防ぐにはユーザー側の管理が必要

身も蓋もない話になるがユーザーがしっかりとパスワードを管理していればパスワード漏洩があっても被害を最小化することが可能になる。

ここまでのパスワード漏洩の原因は大まかにいうと二つあると考えられる。

  • 辞書に載っている言葉をベースにパスワードを組み立てる。
  • 同じパスワードを複数のサイトで使用する。

これらに対しての望ましい対策方法としては

  • 辞書に載っている単語は絶対に使わない。できればランダムに生成したものを使う。
  • サイトごとに異なるパスワードを利用する。

ただしこれらを実現するには人間がすべて覚えていなければならないのでそれを運用するのは難しい。

現在、いろいろなベンダーから個人向け、エンタープライズ向けでさまざまなパスワード管理製品が出ている。

ブラウザーであればサイトごとにパスワードを覚えさせる機能は一般的になるのでさほど重要でないサイトの場合はそのような製品を利用すればよい。

ただし、この場合利用している機器が盗まれたりするとすべてのパスワードが盗まれる可能性もあるので本当に重要なパスワードはそのような製品を使わないことが望ましいかもしれない。

弊社が扱っている製品であれば、エンタープライズ向けシングルサインオン製品としてAccessMatrix™ Universal Sign-On (USO)がある。この製品は管理者がエンドユーザーごとに利用できるアプリが設定できるのでたとえ機器が盗まれた場合でも管理者のほうで使用を制限できるのがコンシューマ向け製品とは一番ちがうところである。

パスワード管理としてはパスワードの入力だけでなくパスワード変更の画面にも対応し、ユーザーの代わりにランダムなパスワードを自動的に生成して入力する機能も備えているので安心してエンドユーザーはログイン失敗やパスワードの変更によるパスワード忘れを恐れる必要がなくなる。

パスワード管理は結局ユーザー側がちゃんと対策することが必要

いろいろ長々と書いてきたが、パスワードは常に盗まれる可能性があるのでユーザーとしてはそのリスクは常に意識するべきであると考える。

またすべてのサイトで厳密にパスワード管理をすることは現実的には難しいと思うが、クレジットカードを登録しているサイトやインターネットバンキングまたはオンラインゲーム等不正アクセスがあると被害にあうような製品についてはぜひちゃんと管理をするようにしたい。

またサイトによっては二要素認証など取り入れているところもあるのでぜひとも積極的に検討するももいいと思う。

また企業の管理者であればシングルサインオンやIDプロビジョニングのような製品を検討して頂くのもいいと思う。

関連リンク

サイト側の対策

サーバー攻撃からパスワードを守る E2EE(End to End Encryption) | アイディネットワークス株式会社

エンタープライズでのシングルサインオン

エンタープライズシングルサインオン AccessMatrix™ Universal Sign-On (USO) 概要 | アイディネットワークス株式会社