ピクブラ・ピクスクの流出事件の問題点と我々にできること

先程 pictBLand や pictSQUARE を運営する GMW が不正アクセスにより登録情報の流出が起きたという発表を行いました。

ログインメールアドレス、ログインパスワード、振込先口座情報、配送先住所情報が流出した可能性がある情報としていますが、データベースをクラックし、いわゆるところのダークウェブ(誤用)で情報を売ろうとしているハッカー(誤用)は電話番号や Twitter ID および API キー(ログイン連携のためのもの)なども含まれるとしています。犯罪者も信用第一なので(?)商品の情報に虚偽があると問題視されますから、間違いなくこれらも流出していると見てよいと思われます。

具体的にどのような脆弱性を突かれクラックされたかは情報がない(あるかもしれないけど私は観測できていない)のですが、それを抜きにしても流出したと見られる情報から様々な問題点が浮かび上がってきているので、私なりにまとめてみようと思います。

ピクブラ運営の情報管理の問題点

先に述べたハッカーの商品説明によると、利用者のパスワードは「ソルトなしの MD5」で保存されていたとされています。多少セキュリティに造詣がある方ならこれだけでヤバさが伝わると思われます。

まず、パスワードを管理することにおいて、最も危険なのは「平文保存」と呼ばれる方法です。平文とは「そのままの文」という意味で、パスワードをそのまま保存していることを意味します。データベースにパスワードが平文保存されている場合、今回のようにデータベースがクラックされたときパスワードがまるまる流出するので、絶対 NG とされています(とはいうものの定期的にパスワードの平文保存で問題が起こっています)。

パスワードを検証するのにそれを保存してはいけないとなるとどうすればいいんだ、とお考えの方も多いでしょう。通常、パスワードはハッシュ化された状態で保存するのが鉄則とされています。ここからはハッシュ化について説明します。

ハッシュ化にはハッシュ関数というものを使います。ここで関数とはある種の変換器のようなもので、ハッシュ関数は次のような特徴を持ちます。

  • 同じ変換前の内容で変換すると常に同じ結果になる。

  • 一方向にしか使えない。変換したものを戻せない(総当りするしかない)。

  • 変換前の内容がちょっとでも変わると変換後の内容はまるっきり違うものになってしまう。

たとえば、「あかりんご」という言葉をハッシュ関数にかけると、「べくづもへなこど」になるとします。この「べくづもへなこど」を「あかりんご」に変換する関数(逆関数)は単純なルールとしては存在しません。また、「あかりんご」ではなく「あおりんご」を変換すると「ゆふわぽげりべぼ」のように、「べくづもへなこど」とは似ても似つかないものになってしまいます。

ちなみに、よく勘違いされますが暗号化とハッシュ化は違います。暗号化は逆変換が可能です。よって暗号化では変換ルールがバレないようにすることが重要ですが、ハッシュ化ではその点に注意する必要はないため、多くのハッシュ関数は一般に公開されています。

パスワードにハッシュ化を使用する場合、パスワードそのものではなくハッシュ化したパスワードを保存します。たとえば、ユーザーが「あかりんご」というパスワードを使っている場合、「べくづもへなこど」がデータベースに保存されることになります。ユーザーがログインしようとした場合、入力した内容をハッシュ関数にかけてからデータベースの内容と比較します。ユーザーが正しく「あかりんご」と入力した場合、変換結果は「べくづもへなこど」になりますから、データベースの内容と一致しているのでログインに成功します。もし「あおりんご」と入力した場合は「ゆふわぽげりべぼ」になってしまうのでログインに失敗します。

データベースがクラックされ「べくづもへなこど」が流出してしまったとしても、それを直接入力してもさらに変換され「あみろこぼせとき」とかになるのでやはりログインに失敗します。

さて、話をもとに戻します。MD5 というのはハッシュ関数の一種であり、ピクブラ運営も流石に平文保存はしておらずハッシュ化した状態で保存していたことがわかります。

ではなにが問題だったのか。ひとつは MD5 という関数そのものです。MD5 はかなり古い関数であり、いくつかの脆弱性、つまり弱点が指摘されています。

もっとも有名な脆弱性としては「衝突」と呼ばれるものが挙げられます。「あかりんご」→「べくづもへなこど」という変換結果があったとして、「あかりんご」とは別の「こたつでみかん」を変換した結果、たまたま同じ「べくづもへなこど」というパターンが導き出された場合、「あかりんご」というパスワードで登録したログイン情報は「こたつでみかん」でも突破できることになります。幸いにも任意の変換後データからそれに一致する変換前データを導き出す方法(弱衝突耐性→原像攻撃)が見つかっているわけではありませんが、同じ変換後を持つ変換前データのペアを見つける(強衝突耐性→誕生日攻撃)ことは簡単であることがすでに示されており、技術の進歩により弱衝突耐性が突破されるのは時間の問題と見られています。そのため、すでに MD5 はセキュリティ用途では使ってはいけないとされており、日本でも政府推奨暗号リストからは外されています。ここから言えるのは MD5 を使っていることが直ちに問題になるわけではないが、MD5 を利用している時点でセキュリティ意識の低さを暗示しているということです。

また、所詮パスワードに利用できるパターン数は限られていますから、単純に総当たりすることでも突破される可能性があります。実際には、総当たりよりは複雑な方法ですが、「レインボーテーブル攻撃」という方法がハッシュ化されたパスワードに対する攻撃手法として定番化しています。詳細な解説は省きますが、レインボーテーブル攻撃ではハッシュ化された内容に一致する原文を探索する効率的な表が提供されています。こういったものを利用すると、ハッシュ化されていても比較的短時間で突破されてしまいます。

こういった攻撃を防ぐために利用されているのが「ソルト」というもので、ユーザーごとに異なる文字列をくっつけてからハッシュ化する方法です。これによってレインボーテーブル攻撃によるパスワード解読の効率を大幅に低下させることができます。また、ハッシュ化したものをさらにハッシュ化する…ということを何千回も繰り返す「ストレッチング」という筋肉解決手法も総当たり攻撃やレインボーテーブル攻撃に対して有用であるとされ、セキュリティ案件ではもはやこれらは「当然やるべき」こととされています。令和最新版新常識

しかし、先述した通りピクブラ運営はソルトを使っていなかったようです。ストレッチングについては言及がありませんが、ハッカー自身が半数のパスワードをすでに解読済みなあたりを見るとストレッチングをしていた可能性も低いでしょう。

今後の我々にできること

さて、ピクブラ運営をあげつらって悦に浸るだけではなにも解決しません。これを教訓とするとして我々にできることは何でしょうか。

パスワードを変えよう・使い回さないようにしよう

まずは運営も言っている通り、もしも同じパスワードを使用しているサービスが他にもある場合、いますぐ変更することです。今回のハッカーはユーザー層について造詣が深いようで、「ピクブラやピクスクを使ってるユーザーはいわゆるオタクが多いので pixiv とかも同じパスワードでログインできる可能性が高い」というアドバイスまで親切に商品説明に書かれています。おいは恥ずかしか。そのサービスがよりセキュリティ意識が高かったとしても、パスワードの原文がバレている可能性が高い以上、原文を入力されたらログインが成功してしまうのは当然のことです。そのサービスが対応しているなら 2 要素認証も有効化しておきましょう。

また、今後はパスワードの使いまわしをしないことが重要です。そうは言ってもみんながパスワードの使い回しをしてしまうのは人間の記憶容量に限界があるからです。そこを解決する方法を提示しなければ「使い回しをするな」は単なる理想論です。

解決策の一つはパスワードマネージャを使うことです。パスワードマネージャにはブラウザに付属しているものや単体のソフトになっているものもあります。無料のものも有料のものも、オンラインのものもオフラインのものもあります。無論、パスワードマネージャだってクラックされてしまえば一巻の終わりですが、彼らは一応セキュリティの専門家を名乗っている人間なので、なにかあればピクブラ運営とは比にならない信用問題になるわけで、他人のギロチンを担保に安心を買うことができます。

あるいはいっそのことパスワードを記憶しないという逆転の発想もあります。「は?」と思ったでしょうが意外とこれが効果的です。多くのサービスではパスワードを忘れたとき用にパスワードリセットを行うことができます。パスワードリセットの案内は多くは登録時のメールアドレスに届き、新しいパスワードを再設定できます。つまり、「各サービスのパスワードを覚えておく」という仕事を「メールサーバーにログインできること」に転嫁することができます。メールサーバーを自由に覗かれる状態になると一発アウトですが、一応こういった対処法もあります。

その他にもある程度覚えやすいが推測することは難しいようなパスワードの生成法がいくつか提案されています。個人的には「ホントか?」と思う手法もあるので具体例は各自調べていただくとして、各人が納得できる方法を取っていただければと思います。

あと元も子もない話なんですけど、パスワードってこんな感じで現代には正直欠陥まみれのシステムですし物理キー(所持認証)や指紋・顔認識(生体認証)とかで電子署名できるようなシステム(パスキーとか)がとっとと流行って欲しいです。

パスワードの決め方に注意しよう

使い回しをしない以外にも、そもそものパスワードの決め方を見直すべきかもしれません。半数のユーザーのパスワードが解読されているそうですが、実際のところ総当りやレインボーテーブル攻撃でこれらのパスワードを見つけたのでしょうか? それ以外にも辞書攻撃が行われている可能性が高いと見ています。

辞書攻撃は簡単に言えば一般に存在する単語やパターン性のある文字列(qazwsxedcみたいな。なぜこれがパターン性がある文字列なのかは読者への宿題とします。ヒント: スマホだと不利かも)を組み合わせて試していく方法です。辞書攻撃では完全にランダムに決められたパスワードを解読することはできませんが、たとえば「appleorange12345」みたいなパスワードだったら総当たりなんかするよりもよっぽど早い時間でパターンを見つけることができることは想像できるかと思います。一時期は辞書攻撃対策に「a」のかわりに「@」を使うなどの文字の置き換えが流行りましたが、ぶっちゃけこの程度の置換だったら試すべきパターンはほとんど増えないので効果はあまりないです。辞書攻撃に弱いパスワードも避けたほうがいいでしょう。

利用中のサービスのセキュリティ意識が高いかどうか考えてみよう

加えて、セキュリティ意識が低そうなサービスの利用はちょっとよく考えるべきという教訓もあります。上で MD5 を使ってるあたりちょいヤバいみたいな話をしました。実際のところハッシュ関数を公開しているサービスはまずないですが(警備の位置を公開している城みたいなものですし)、いろいろなサービスを利用しているとそれ以外でもちょいちょい「ちょっと意識低いかも?」という「臭い」を感じることがあります。

上の方で一番アカンパスワード管理として「平文保存」の話をしましたが、この平文保存を行っていることを暗示する事例として「パスワードを忘れてしまったので再発行処理を行ったら、リセットではなくパスワード自体がメールで送られてきた」という笑い話があります。何度も述べている通りハッシュ化されたパスワードを戻すのは至難の業なので、パスワードそのものが送られてきているということはまず間違いなくパスワードが平文保存されています(ハッシュ化ではない暗号化で保存されており、復号して送られている可能性もないではないですが、パスワード自体を覚えておく必要があるパスワードマネージャサービスでもない限りあまり使われることはないでしょう)。

また、当たり前の話ですがパスワードはパターン数が多いほど総当たりに強いという特性があります。なので利用できる文字数が長ければ長いほど、利用できる文字種が多ければ多いほど、流出時のリスクが低下します(現代では文字種よりも文字数の方が有効という説が支配的です)。逆に、8文字くらいしか入力できない場合、ハッシュ化されていても 1 日程度で総当りが完了してしまうことが知られています。というわけでパスワードに利用できる文字数が少なすぎる、文字種が少なすぎる場合、そのサービスは少し警戒したほうがいいと考えられます。

他にも、セキュリティ知識のアップデートがされていないという案件も散見されます。たとえば、かつては定期的なパスワード変更が有効とされていました。しかし現代では、サービス提供側が利用者に対し定期的なパスワードの変更を強要することで新しいパスワードを考えるのに疲れ、パターン化された単純なパスワードを利用することが常態化してしまうなど、むしろセキュリティリスクになるというのが基本的な考え方です。総務省もパスワードの定期変更は不要、場合によっては悪影響と発表しており、いわゆる「お役所仕事」でさえ意識の切り替えが行われています。一方でいまだにパスワードの定期変更を要求するサービスもあります(個人的には銀行や投資信託などの金融系に多い気がします。パッと見はいかにもセキュリティ意識高いっぽくてアピールに有効だからでしょうか…?)。この手合は残念ながら時代遅れと評価せざるを得ません。先に述べた「文字の置き換えはあまり意味がない」とか、あとは「『秘密の質問』はその他の本人確認手法と組み合わせないとむしろ『パターン性のある(= 突破しやすい)パスワード』として振る舞ってしまう」というようにユーザーの側も知識のアップデートをしつつ、身の回りのサービスに気を配ってみましょう。

パスワード以外にもやるべきことたち

ここまではパスワードに焦点を当てた文章でしたが、その他の情報も流出していることを忘れてはいけません。

電話番号や住所を簡単に変えることはできませんが、流出しているかもしれないことを意識して行動しましょう。あなたの SMS には今まで以上に詐欺目的のスパムが回ってくるかもしれません。URL には最新の注意を。あなたの住所に身に覚えのない商品が送りつけられ、あとでトラブルになるかもしれません。開封前に考えてみましょう。

ログイン情報として連携された(元)Twitter 情報も流出しています。アプリ連携はいますぐ切りましょう。すでに怪しげな投稿がされていないか確認してみましょう。

振込先口座情報も流出しています。怪しい取引が記録されていないか確認を怠らないようにしましょう。とくに身に覚えのない振込は引き落とさないようにしましょう。詐欺などに利用された場合口座凍結がありえます。

とりあえずここまで、あとで思いついたら書き足すかもしれません。これに懲りずよいインターネットライフを。

この記事が気に入ったらサポートをしてみませんか?