情報セキュリティの脅威はすぐそこに

Twitterのパスワード、変えるべきですか?そのままでもいいですか?

Twitterが3.3億人の全ユーザに対してパスワード変更の検討を依頼するという、ドキッとするけど少し不思議なアナウンスがされました。
先月、パスワードを定期的に変更すべきではないという話題があったばかりですが、このアナウンスの詳細とその背景を見ると、ユーザ側にしてもシステム提供側にしても「パスワードはどのように管理されるべきか」が見えてくるので、少し掘り下げてみたいと思います。

そもそもTwitterではユーザのパスワードがbcryptというアルゴリズムでハッシュ化されて保存しているとしています。
細かい解説は省きますが、bcryptはパスワードの保存によく使われる一方向ハッシュの方式で、力技で解読するのは膨大な時間がかかると言われています。そしてパスワードを入力した際に、同じ方式で入力された文字列のハッシュ値を算出し、保存されているパスワードのハッシュ値と一致すれば、正規のユーザによってパスワードが入力されたと判断する、というのが一般的な方式です。

今回のTwitterのアナウンスによると、ハッシュ化前の平文のパスワードが内部のログに記録されていた不具合が発覚したとされています。
プログラムを作る人だと「あるある」だと思うかもしれませんが、プログラミングやデバッグ時に、入力された文字列が正しくプログラムに渡っているかなどを確認するために一時的にログに出力していたという状況と思われます。
本来であればこのような確認のための処理はせめて単体テストの段階までにして、結合テストやましてや本番環境にリリースする際には省いておかなければなりませんが、誤って一定期間本番環境として動いていたということでしょう。その間、ユーザが入力したパスワードが平文のまま保存されてしまっていたため、ユーザに対して変更を検討するようにアナウンスがされたというのがあらましです。

さて、ここで押さえておきたいのは、平文のパスワードが保存されてしまっていたのはTwitterの内部的なログで、これが外部に流出したり、ましてや悪用されたわけではないということです。
しかも内部のログということで、このパスワードを見ることができた人物もTwitterのサーバを管理する一部の人物に限られるという状況と思われます。
Twitterでは該当のログをすでに削除しており、外部流出したわけでもないということから「パスワード変更の検討を依頼する」というやや遠回しなアナウンスになっています。

ユーザ視点から見ると自分のパスワードが第三者に見られた可能性があるということには変わりませんが、あくまでTwitterの内部に限られた話で、Twitterとしてはそのログは削除しており、事実の公表をしたので、パスワードを変更するかどうかはユーザの判断に委ねるという回りくどい状況ではあります。Twitterを全面的に信用するのであれば変更をする必要はないのかもしれませんが、ここまで言われると変更をした方がいいのかなとも思えます。
とはいえ前回の話ではありませんが、「パスワードが第三者に見られた可能性があり、定期変更以外で変更を強いられる状況」であると言えるかもしれません。

むしろTwitterを信用するという意味では、正直に事態を公表したことそのものを評価すべきかもしれません。そしてもう一つ、システム運用などの面から思い出しておきたいことは、
「本来はどのような状況であってもユーザが入力したパスワードそのものがシステム管理者にすら知られてしまうような仕組みはあってはならない」
ということです。
未だにユーザビリティなどのためなどと言って、平文のパスワードがそのまま教えられる仕組みがありますが、本来はそのような仕組みこそ信用ならないという事実をこのTwitterのアナウンスは垣間見せているのではないかと思います。