オリンピックに向けて政府がサマータイム導入を検討というニュースでIT業界がザワついています。まだ導入が決定したわけではありませんが、来年から導入という話も出ていて「どう考えても開発が間に合わない」という声から「死人が出る」という声まで出ています。そこで実際にどんな問題が起きるか考えてみたのですが、例えば電車や飛行機などの交通系のシステムは予約から運行システムまで対応が膨大になりそうです。そんな中、ふと「一部のWEBサービスやシステムにログイン・アクセスできなくなるのでは…」と思い付いたので、今回はその懸念について書きます。
- 例えば二段階認証ログインができなくなるかもしれない
- なぜGoogle Authenticatorの確認コードが失敗するのか
- Google Authenticator以外にもログインやアクセスが失敗する可能性
- まとめ
例えば二段階認証ログインができなくなるかもしれない
サマータイム導入で一部のWEBサービスにログインできなくなるような気がしてきました。その理由は二段階認証が機能しなくなるためです。
二段階認証とは
二段階認証とはIDとパスワードに加えて更に1つ認証行為を行う手法のことを言います。2018年現在は二段階認証は主に下記のものが大半かと思います。
- SNSでワンタイムパスワードが送信される
- アプリで表示されている確認コードを入力する
サマータイム導入で機能しなくなる可能性があるのは後者のアプリで表示されている確認コードを入力する方法です。この方法は時間ベースのワンタイムパスワード(TOTP)と呼ばれているそうです。
時間ベースのワンタイムパスワード(TOTP)とは
具体的なアプリ名を言うとGoogle Authenticatorで使用されている方式です。Google AuthenticatorはSNSや仮想通貨取引所など様々なWEBサービスにおいて二段階認証として採用されています。このGoogle Authenticatorの確認コードがサマータイム導入によって失敗するようになってしまう可能性があります。
なぜGoogle Authenticatorの確認コードが失敗するのか
Google Authenticatorの仕組み
失敗する理由を理解するためにはGoogle Authenticatorの仕組みを知る必要があります。上図はザックリですが、端的に言うとGoogle Authenticator(一般的な時間ベースのワンタイムパスワード)の確認コードは現在時刻とシークレットキーから生成されます。そして、Google AuthenticatorとWEBサービスがそれぞれ計算してログイン時にWEBサービスが自分で計算した確認コードと入力された確認コードを比較します。同じだった場合はログインを許可するわけです。
確認コードが一致するには現在時刻が一致しなければならない
さてここで重要なのは、私たちの手元にあるGoogle Authenticatorが計算に使う時刻と、WEBサービスのサーバーの時刻が一致していなければシークレットキーが同一でも確認コードが一致しないということです。つまり、サマータイム導入でどちらか一方が対応を誤ったり怠ったりすればログインは失敗することになります。実際にiPhoneの日時がズレているとGoogle Authenticatorの確認コードは全部失敗するようになります。
仮にサマータイムが導入されればGoogle Authenticatorを開発しているGoogleや主なWEBサービスは対応してくれると思いますが、日本法人がないWEBサービスは「え?知らんがな」となってログインできなくなる可能性は否定できないですね。
Google Authenticator以外にもログインやアクセスが失敗する可能性
セッショントークンが発行とともに無効になる
これは実際に開発している製品で起こったことなのですが、AWS S3へのアクセスが全部失敗しているお客さんがいました。調べてみると、お客さんのWindowsの時刻が数時間ズレていました。このせいでS3への一時的なアクセスを許可するセッショントークンが発行と同時に期限切れになっていました…。時刻を正確に合わせることで解決しましたが、サマータイムの場合はこのようなケースが業界業種を問わずに色んなところで問題を引き起こすのではないでしょうか。
まとめ
二段階認証やWEBサービスへのアクセスができなくなる可能性がある
- 現在時刻を計算につかう時間ベースのワンタイムパスワードが機能停止
- 制限時間を持つセッショントークンが発行と同時に無効になる
最近はセキュリティに現在時刻がよく利用されているので、停止してしまうシステムは出てきても不思議ではありません。
サマータイム導入でシステムが動かなくなる可能性は大いにある
炎上している記事ですが、「電源をバチっと切って時刻を合わせるだけでOK」というのがいかに浅はかな考えであるかがお分かりになったかと思います。困ったことに、自分がサマータイムに対応しても第三者が対応を誤ったり怠るだけでシステムが停止するわけです。日本法人がないWEBサービスで来年まで対応しないケースは結構出てくるでしょうね…。