Googleが14年間G Suiteの一部パスワードを平文で保存

2019年5月23日

Googleは企業や団体向けのサービスである「G Suite」において、一部パスワードを14年間平文で保存していたことを明らかにしました。

Google Cloudのブログ上での発表

パスワードを平文で保存することはGoogleのポリシー違反となりますが、不正アクセスや悪用されたことはないという事です。

G Suite向けに提供していたツールにユーザの設定を行う機能があり、この中でパスワードをそのまま平文で保存していたということのようです。

尚、この機能は既に廃止されています。

パスワードの保存方法について

認証に使用するだけで元の文字列を知る必要のないパスワードについては、通常ハッシュ化してDB等に保存します。

ハッシュ値から元の文字列を得ることは出来ませんので、元のパスワード文字列の推測はとても困難になります。

例えばパスワードが「hogefugapassword」という文字列だったとします。

このパスワード文字列をsha256などハッシュ関数でハッシュ化すると以下のようになります。

hogefugapassword
 ↓ sha256でハッシュ化
5665d42d15514eee62c9d62845ec4308e4a98e51b6f8d069da9893df10663343

このハッシュ化して得られたハッシュ値「5665d42d15514eee62c9d62845ec4308e4a98e51b6f8d069da9893df10663343」をDB等に保存します。

認証はユーザの入力した文字列を同じハッシュ関数でハッシュ化してDBに保存されたハッシュ値と比較して行います。

ユーザが間違って「hogefuta」と入力したとします。

hogefuga
 ↓ sha256でハッシュ化
4cac15dfacf86b494af5f22ea6bdb24e1223bf2ef2d6718313a550ea290cda75
 ↑↓ DBに保存されたハッシュ値と比較
5665d42d15514eee62c9d62845ec4308e4a98e51b6f8d069da9893df10663343

DBに保存されているハッシュ値と異なるので入力されたパスワードは間違いということが分かります。

ハッシュ値被りの可能性もありますが確率的にかなりの低確率です。(MD5とかだとちょっとまずいかもしれませんが)

もちろんハッシュ値を得るためのハッシュ関数はsha256とは限りません。

システムの設計者によって他のハッシュ関数や様々なハッシュ関数の組み合わせを使用したりします。

この場合DB上のハッシュ値から元のパスワードの割り出しは困難ですので、ユーザがパスワードを忘れた場合の対処方法はパスワードをリセットして仮設定して、ログイン後再設定してもらうようなシステムになります。

元のパスワードの文字列を知らないといけないようなシステムはあまり多くはありませんが、その場合はパスワードを暗号化キーを用いて暗号化してDB等に保存します。

その場合、DBの暗号化されたパスワードと暗号化キー、暗号化方法がバレると元のパスワードが復元できてしまいますので情報の管理には注意が必要です。

まとめ

あのGoogleがG Suiteのサービス向けのツールでパスワードをハッシュ化して保存していなかったことは驚きです。

ネット上のサービスでも初心者が設計したシステムでは、設定したパスワードをそのまま保存しているものがそれなりにあると聞きます。

設定したパスワードをハッシュ化して保存しておき、認証で入力されたパスワードのハッシュ値と保存されている値を比較するだけですので、システムを設計する人はちゃんと対応しておきましょう。