歴史を変えたパスワード流出事件 - Yahoo 30 億件から学ぶ教訓

この記事は約 12 分で読めます

過去 20 年間で、数十億件ものパスワードが大規模なデータ侵害によって流出しました。これらの事件は企業のデータ管理のあり方を根本から変え、私たちのパスワードセキュリティに対する意識を一変させました。本記事では、歴史に残る 5 つの流出事件を振り返り、それぞれの技術的な失敗を掘り下げ、今日から実践できる教訓をまとめます。

結論 - パスワード流出事件が教えてくれること

5 つの事件に共通するのは、「パスワードの保存方法が甘かった」という一点です。平文保存、ソルトなしのハッシュ、不適切な暗号化モード - いずれも当時の技術水準でも避けられたミスでした。ユーザー側の教訓はシンプルです。パスワードの使い回しをやめ、サービスごとに固有の強力なパスワードを設定すること。そして二段階認証を有効にすること。この 2 つだけで、流出事件の被害を大幅に軽減できます。

Yahoo (2013-2014 年) - 30 億アカウント流出と買収額 35 億ドル減額

史上最大のパスワード流出事件は Yahoo で起きました。2013 年の攻撃では全 30 億アカウントが影響を受け、2014 年の別の攻撃でも 5 億件が流出しています。驚くべきは、2013 年の侵害が公表されたのが 2016 年だったこと。3 年間も気づかれなかったのです。Yahoo はパスワードを bcrypt でハッシュ化していましたが、一部のアカウントでは古い MD5 ハッシュが残っていました。この事件の裏話として有名なのが、Verizon による買収への影響です。当初 48 億ドルだった買収額は、流出発覚後に 44.8 億ドルへと 3.5 億ドルも減額されました。パスワード管理の不備が、文字どおり数百億円の損失を生んだのです。

LinkedIn (2012 年) - ソルトなし SHA-1 の衝撃

2012 年、650 万件の LinkedIn パスワードハッシュがロシアのハッキングフォーラムに投稿されました。衝撃だったのはその保存方法です。LinkedIn はパスワードをソルトなしの SHA-1 でハッシュ化していました。ソルトがないと、同じパスワードは同じハッシュ値になるため、レインボーテーブルで簡単に解読できてしまいます。話はさらに暗い展開を迎えます。2016 年、完全なデータセット - 1 億 1,700 万件の認証情報 - がダークウェブの闇市場に約 2,200 ドル相当のビットコインで出品されたのです。流出から 4 年経っても、盗まれたデータは換金され続けていました。この事件は「なぜソルト付きハッシュ (理想的には bcrypt や Argon2) が必須なのか」を示す教科書的な事例になりました。流出した認証情報がどう流通するかはパスワードがダークウェブに流出する仕組みも参照してください。

Adobe (2013 年) - クロスワードパズルのように解読された暗号化

Adobe の流出事件は 1 億 5,300 万件という規模もさることながら、その技術的な失敗が特に興味深い事例です。Adobe はパスワードをハッシュ化するのではなく、3DES という暗号化方式の ECB (Electronic Codebook) モードで暗号化していました。ECB モードの致命的な欠点は、同じ平文が常に同じ暗号文になること。つまり「123456」というパスワードを使っている全ユーザーの暗号文が同一になるのです。セキュリティ研究者たちは、暗号文の出現頻度とパスワードヒント (これも平文で保存されていた) を組み合わせ、まるでクロスワードパズルを解くようにパスワードを特定していきました。実際に XKCD というウェブコミックがこの状況を風刺し、大きな話題になりました。

Collection #1 と RockYou - 流出データの集約と平文保存の衝撃

2019 年 1 月、セキュリティ研究者の Troy Hunt が発見した Collection #1 は、数千件の個別の流出事件から集約された 7 億 7,300 万件のメールアドレスと 2,100 万件のユニークなパスワードを含む巨大なデータセットでした。単独のハッキングではなく「寄せ集め」であり、パスワードの使い回しがいかに危険かを浮き彫りにしました。小さなフォーラムと銀行で同じパスワードを使っていれば、Collection #1 がその点と点をつないでしまうのです。さらに遡ると、2009 年の RockYou の流出事件では 3,200 万件のパスワードが完全な平文で保存されていたことが発覚しました。ハッシュ化も暗号化も一切なし。皮肉なことに、このデータセットはセキュリティ研究のゴールドスタンダードになりました。「rockyou.txt」というワードリストは Kali Linux などのペネトレーションテストツールに同梱され、世界中でパスワード強度のテストに使われています。ある企業のセキュリティ上の失敗が、業界全体のベンチマークになったのです。

5 つの事件から得られる技術的教訓

これらの事件を並べると、パスワード保存のベストプラクティスが浮かび上がります。まず、パスワードは絶対に平文で保存してはいけません (RockYou の教訓)。次に、ハッシュ化する際は必ずソルトを付与すること (LinkedIn の教訓)。そして、暗号化を使う場合は ECB モードを避け、CBC や GCM などの安全なモードを選択すること (Adobe の教訓)。現在のベストプラクティスは bcrypt、scrypt、Argon2 といった「遅い」ハッシュ関数を使うことです。これらは意図的に計算コストを高くすることで、ブルートフォース攻撃を非現実的にします。

パスワードセキュリティの基礎をさらに深く理解するには、情報セキュリティの関連書籍 (Amazon)も参考になります。

自分のメールアドレスが流出しているか確認する方法

「自分は大丈夫」と思っていませんか? Have I Been Pwned (HIBP) は、先ほど登場した Troy Hunt が運営する無料サービスで、メールアドレスを入力するだけで過去の流出事件に含まれているかを確認できます。2024 年時点で 140 億件以上の流出アカウントが登録されており、多くの人が驚くほど自分のアドレスがヒットします。もし流出が確認されたら、該当サービスのパスワードを即座に変更し、同じパスワードを使い回している他のサービスも全て変更してください。流出後の具体的な対応手順は、データ侵害発生時の対応ガイドを参照してください。

今すぐできる 3 つのアクション

  1. Have I Been Pwned で自分のメールアドレスを確認する。流出が見つかったら、そのパスワードを即座に変更し、使い回しをやめる。使い回しがなぜ危険かはクレデンシャルスタッフィング攻撃の防御法を参照
  2. パスつく.com で全アカウントに固有の強力なパスワードを生成する。16 文字以上で高いエントロピーを目指す。ベストプラクティスは安全なパスワードの作り方ガイドを参照
  3. 重要なアカウントに二段階認証を設定する。パスワードが流出しても、第二の認証要素が不正アクセスをブロックする

よくある質問

過去最大のパスワード流出事件は何ですか?
2013 年の Yahoo の流出事件で、全 30 億アカウントが影響を受けました。この事件は 2016 年まで公表されず、Verizon による買収額が 3.5 億ドル減額される原因にもなりました。
自分のパスワードが流出しているか確認する方法はありますか?
Have I Been Pwned (haveibeenpwned.com) にメールアドレスを入力すると、過去の流出事件に含まれているか無料で確認できます。流出が見つかったら、該当サービスと同じパスワードを使っている全サービスのパスワードを変更してください。
パスワードの「ソルト」とは何ですか?なぜ重要なのですか?
ソルトとは、パスワードをハッシュ化する前に付加するランダムな文字列です。ソルトがないと同じパスワードは同じハッシュ値になり、レインボーテーブル攻撃で一括解読されます。LinkedIn の流出事件はソルトなしの危険性を示す代表例です。

関連用語