近年ではサイバー攻撃が増加していることもあり「パスワードを平文で保存するのは危険だ」という話をよく耳にしますが、具体的にどのように危険なのか分からない方も多いと思います。
平文での保存とは「パスワードを暗号化せずそのまま保存してしまう」ことで、もし平文のパスワードが漏洩してしまうと大きな被害を生んでしまいます。本記事ではパスワードを平文で保存することのリスクについて解説を行っていくので、ぜひ参考にしてください。
見出し
そもそもパスワードの平文って何?
では、そもそもパスワードの「平文(ひらぶん)」とはどういう状態を指すのでしょうか?
まずはパスワードの平文がどういうものなのかについて解説を行っていきます。
平文とは「暗号化されていない文字列」を指す
平文とは、簡単に言うと「暗号化されていない状態の文字列」を指します。そのためパスワードの平文保存というのは「パスワードが暗号化されていない状態で保存されている」ことを意味します。
例えばとある「システムA」にログインするパスワードが「ABCDE」だったとしたら、
となります。そのため、平文と暗号化の違いとしては、元のパスワードが推測可能かどうかということですね。
パスワードを平文で保存するのは非常に危険
パスワードを平文で保存することの詳しいリスクについては後述しますが、セキュリティ上パスワードを平文で保存することにはデメリットしかないです。
ただ、平文で保存するほうが運用が簡単であったり、平文を暗号化してデータに保存する処理を作るのに手間がかかる等、色々な理由でパスワードが平文保存されている場合もあります。
先述したとおりパスワードの平文保存はセキュリティ上リスクしかないですが、古いシステムだと「改修にコストがかかる」などの理由で放置されることもあります。
パスワードを平文で保存するリスク
パスワードを平文(暗号化せずそのまま保存)で保存することには、さまざまなリスクが伴います。
以下で、平文保存によるリスクを詳しく説明していきます。
リスク① 攻撃者にデータベースに侵入された場合、パスワードが筒抜けになる
もし外部の攻撃者がシステムに侵入してデータベースにアクセスした場合、平文で保存されたパスワードはそのまま漏れてしまうリスクがあります。
対して、パスワードを暗号化した状態で保存している場合、攻撃者がデータベースに侵入できても暗号化されているパスワードの元の文字列は分かりません。
そのため、もし第三者にパスワードを窃取された場合のリスクを考慮すると、パスワードは平文ではなく暗号化された状態で保存すべきです。
暗号化された状態だとパスワードが盗まれても絶対安全という訳ではないですが、平文で保存していると100%パスワードがバレてしまいます。
リスク② 内部の人間がパスワードを閲覧できてしまう
上記でお伝えした「データベースを閲覧できればユーザーのパスワードが分かる」問題については、外部からのサーバー攻撃があった場合に限りません。
他にも、データベースにアクセスできる権限を持つ内部の人物(管理者や開発者など)にもパスワードが見られてしまうというリスクがあります。
特に近年、内部の社員が無断で顧客情報を持ち出すなどの情報漏えい事件もニュースでたびたび話題になっています。
パスワードを暗号化していれば内部の人間が見ても元のパスワードは分かりませんが、もしパスワードを平文で保存してると内部犯による情報持ち出しの標的になってしまう可能性があります。
パスワードを暗号化した状態で保存していれば、内部の人間でも元のパスワードが分からないので安全です。
リスク③ パスワードが知られた場合、第三者がシステムにログインできてしまう
こちらは上記2点のリスクと繋がりますが、上記のように平文で保存しているパスワードが流出してしまった場合、第三者が不正にシステムにログインできてしまうリスクが生まれます。
暗号化しているパスワードの場合、仮に第三者に知られてしまっても平文に戻すことができなければ使えませんが、パスワードを平文で保存していると、そのままシステムやサービスにログインできてしまいます。
また、こうして正規の手続きでログインして情報を抜き取ったり変更した場合は不正に情報を取得・改ざんされたことに気付きにくく、不正ログインが発覚した時には既に手遅れだったということも多いです。
窃取したパスワードで不正ログインを行う場合、平文のパスワードが分からなければアクセスは出来ません。暗号化された状態のパスワードなら元のパスワードが分からないため、平文で保存するよりも安全になります。
リスク④ 同じパスワードを使い回している他のシステムにもアクセス出来てしまう
パスワードが流出してしまった場合のもう一つの問題点として、ユーザーが同じパスワードを他のシステムでも使いまわしている場合、流出したパスワードで他のシステムにもログインできてしまうというものがあります。
実際に同じパスワードを複数のシステム・サービスで使いまわしをしているユーザーは少なくありませんが、例えば1つのパスワードを10個のシステムに登録している場合、1つのシステムからパスワードが流出するだけで10つすべてのシステムのパスワードが漏洩してしまうこととなってしまいます。
暗号化されているパスワードであれば元のパスワードが分からないためこうした問題になるリスクを抑えられますが、平文でパスワードを保存している場合は即座にパスワードが流出してしまいます。
実際にパスワードを複数のサービスで使いまわしているユーザーは多くいます。
平文で保存したパスワードが流出すると連鎖的に他のサービスでも不正ログインの被害が広がるため、絶対に暗号化した状態で保存するべきです。
【実例】平文で保存していたパスワードが流出した事件
では、ここからは実際に「平文で保存していたパスワードが流出してしまった事例」を紹介します。
もし平文で保存しているパスワードが流出してしまった場合、被害範囲の計算やユーザーへの連絡など、その後の対応に非常に多くのコストがかかってしまいます。
下記では平文のパスワードが流出した実例を紹介するので、平文のパスワードが漏洩したらどのくらいの被害が出るのか見ていきましょう。
事例① 宅ふぁいる便(ファイル転送サービス)
平文で保存されているパスワードが流出した事件のうち規模が最大級なのが、2019年に起きた「宅ふぁいる便パスワード漏洩事件」です。
初めて名前を聞く方のために説明をしますが、宅ふぁいる便は株式会社オージス総研が運営していたファイル転送サービスです。宅ふぁいる便はインターネットで大容量のファイルを相手に送りたいときなどに便利なサービスで、メールなどでは送れない容量のファイルも相手に送信することが出来るため、個人・企業問わずさまざまなユーザーに利用されていました。
こちらのサービスの漏洩事件では、過去最大級の480万件の個人情報の漏えい&パスワードを平文で保存していたという2点で非常に注目されました。単純に漏洩したデータが多いのもさることながら、漏洩したパスワードが平文で保存していたため、他のシステムでパスワードを使いまわしていたユーザーにも多くの影響を与えました。
なお、宅ふぁいる便については情報漏えいが起こった2019年1月から対応のためサービスを一時停止し、そのまま翌年の2020年3月にサービスを停止しました。
事例② バイオフィリア(ペットフード製造会社)
こちらは記事執筆時で比較的最近発生したパスワードの流出事件です。ペットフードの製造を行うベンチャー企業の株式会社バイオフィリアでは、2024年5月にサイバー攻撃が原因で約20万件分の個人情報の漏えい事件が起きました(そのうちパスワードまで漏洩したのは34,726件)。
近年はサイバー攻撃の活発化の影響もあり、パスワードを平文で保存することのリスクについては多くのメディアで取り上げられていますが、それでもいまだに平文でパスワードを保存しているケースは無くなりません。
なお、この事件では平文のパスワードが流出したため、流出元の会社からユーザーに対して「同じパスワードを使いまわしている他のサービスでパスワードを変更するように」との連絡が行われています。
平文で保存しているパスワードが流出した場合、上記のように同じパスワードを使いまわしている他のサービスにも不正ログインが行われる可能性があります。
パスワードはどのように保存するべきなのか?
ここまででパスワードを平文で保存することのリスクについて解説を行ってきました。では、パスワードを保存するときはどのような形式で保管をすればいいのでしょうか?
原則ハッシュ化を行う
パスワードを保存する際には原則ハッシュ化を行うべきです。ハッシュ化では元のパスワードの文字列を使用して「ハッシュ値」を生成する仕組みで、生成したハッシュ値を平文のパスワードの代わりにデータベースへ保存します。
そのため、パスワードをハッシュ化して保存する場合、原則として平文のパスワードはデータベースに保存しません。この方法で生成されたハッシュ値から元のパスワードを推測数ることは非常に困難なので、もしハッシュ値が漏洩しても元のパスワードがバレるリスクは低いです。
さらにセキュリティを高くする場合、ハッシュ化を行う際にソルトやペッパーと呼ばれる追加の文字列を入れてハッシュ値を生成することで、同じパスワードでも異なるハッシュ値を生成し、より安全性を高めることが可能です。
ハッシュ化と暗号化の違い
似たような意味の言葉として「ハッシュ化」と「暗号化」がありますが、ここからは両者の違いについても説明を行っておきます。
ハッシュ化は「元のデータを一方向的に変換する」方法のため、ハッシュ化で変換してパスワードを元の文字列に戻すことは不可能です。
対して暗号化は「元のデータを暗号化して保存し、復号できるようにする」方法のため、暗号化したパスワードは仕組みさえ分かっていれば元のパスワードに戻すことが可能です。
そのため、よりセキュリティに優れているのはハッシュ化の方です。暗号化自体もパスワードを平文で保存するよりセキュリティは高いですが、ハッシュ化に比べれば暗号化のセキュリティは弱いと言わざるを得ません。
まとめ:パスワードの平文保存のリスクを理解しよう
この記事では「パスワードを平文で保存することのリスク」について解説を行っていきましたが、なぜパスワードはハッシュ化された状態で保存するべきなのかご理解いただきましたでしょうか?
もし平文のパスワードが流出してしまうと「実際に使用しているパスワードがバレてしまうためシステムへの不正ログインのリスクが高まる」や「パスワードを使いまわしている他のサービスでも不正ログインのリスクが発生する」などのなどの問題があります。
そのため、パスワードを保存するときは平文ではなくハッシュ化を行って、保存しているデータを第三者に見られた場合でも元のパスワードを推測できないようにすることが大切です。