2FAコードが無効?時計のずれなどの原因と直し方
昨日は正しかった認証コードが今日は失敗する?原因は時計のずれが最有力。2FAコードが拒否される理由と、原因ごとの直し方を解説します。
無効な 2FA コードエラーの本当の意味
認証アプリの6桁のコードを入力して送信すると、拒否される。苛立たしい——しかしエラーは具体的なことを伝えている: 送信した瞬間、アプリが生成したコードがサーバーが期待するコードと一致しなかったということだ。
認証アプリは TOTP を使う。共有シークレットと現在時刻から30秒ごとに新しいコードを生成する標準規格だ。両者——アプリとサーバー——が同じ計算を実行する。コードが一致すればログインできる。
拒否は、その30秒の窓で次のいずれかが起きたことを意味する:
- アプリとサーバーが異なるコードを計算した。通常は時計のずれが原因。
- 間違ったコード、または直前に期限切れになったコードを入力した。
朗報: コード自体が壊れていることはほとんどない。アプリ内の共有シークレットは劣化も破損もしない。不一致の大半はタイミングの問題か入力ミスであり、原因箇所が分かれば数分で解消できる。
クロックずれ:最も多い原因
TOTPコードはランダムではありません。認証アプリは秘密鍵と現在時刻を組み合わせてコードを生成し、サーバーも同じ計算を行います。ログイン時に両者が通信することはなく、互いの時計が一致していると信頼しているだけです。
一致しない場合、典型的なフラストレーションが発生します。コードは正しく見えるのに、サーバーに拒否されるのです。30〜60秒のずれでも、コードが許容窓の外に出てしまうことがあります。特に、1タイムステップ分の猶予しか許さないサービスでは顕著です。
時計がずれる理由は地味です。スマートフォンの時計は「自動時刻同期」という設定に依存しており、これがオフになっていたり、静かに失敗したり、タイムゾーンをまたぐ移動後に遅れたりします。また、一部のデバイスは内部の水晶発振器がわずかに速くまたは遅く動作するだけで、数週間かけて小さな誤差が蓄積します。
見分け方
- コードがあるデバイスでは成功し、別のデバイスでは失敗する。
- 特定のサービスでのみコードが失敗する。
- スマートフォンの時計が明らかにずれている、またはタイムゾーンが間違っている。
一つでも当てはまれば、原因はほぼ間違いなくクロックずれです。
お使いのデバイスの時刻同期を修正する
認証アプリはデバイスの時計をもとにコードを生成します。時計が1分でも進んでいたり遅れていたりすると、すべてのコードが失敗します。
スマートフォン
Android: 設定 > システム > 日付と時刻。「日付と時刻の自動設定」と「タイムゾーンの自動設定」をオンにします。これらがオフだった場合は、スマートフォンを再起動してください。
iPhone/iPad: 設定 > 一般 > 日付と時刻。「自動設定」を有効にします。タイムゾーンの検出には、位置情報サービスをオンにする必要がある場合があります。
認証アプリ
Google Authenticator (Android): 三点メニューをタップ > 設定 > 「コードの時刻修正」 > 「今すぐ同期」。以降に生成されるコードはサーバーと一致するはずです。
iOS: Google Authenticator には個別の同期オプションがありません。システム時計に依存するため、上記の iPhone の修正方法で対応できます。
Microsoft Authenticator: 手動同期は存在しません。スマートフォンの時計を修正すれば十分です。
パソコン
デスクトップでログインの承認やコードの入力を行う場合に必要です:
Windows: 設定 > 時刻と言語 > 日付と時刻。「時刻を自動的に設定する」を有効にして、「今すぐ同期」を選択します。
macOS: システム設定 > 一般 > 日付と時刻。「日付と時刻を自動的に設定」を有効にします。
同期後もコードが拒否されますか?時計のずれが原因ではありませんでした。次の項目に進んでください。
コードが拒否されるその他のよくある原因
時計が同期済みでもコードが拒否される場合は、アプリを疑う前に次の4点を確認してください。
入力中にコードの有効期限が切れた
TOTPコードは30秒ごとに更新されます。残り数秒で入力を始めると、送信する前にコードの有効期限が切れます。まずカウントダウンリングを確認し、ほぼ空なら急がず次のコードを待ちましょう。
間違ったアカウントを選んでいる
認証アプリは多くのアカウントのコードを保持しており、名前が似ていることもあります。サイトが「Work Email 2」を求めているのに「Work Email」のコードでは失敗します。特に新規追加直後は、アカウントラベルをよく確認してください。
バックアップコードとTOTPコードの違い
バックアップコードはセットアップ時に作成される長い使い切りの回復コードで、30秒ごとには更新されません。6桁のフィールドに貼り付けても必ず失敗します。バックアップコードは日常のサインイン用ではなく、「アプリにアクセスできない」場合のために取っておきましょう。
コピペミス
メッセージやメモ、スクリーンショットからコピーしたコードには、見えない空白・改行・余分な数字が混入することがあります。ログイン欄によっては自動で除去されることもあれば、コード全体が拒否されることもあります。手入力すれば防げます。
認証エントリの再同期または再追加
時刻同期の修正でも解決せず、コードが失敗し続ける場合、保存されたエントリ自体が古いか破損している可能性があります。削除して再追加すれば、アプリに新しい共有シークレットが与えられます。
削除する前の確認
フォールバックなしで認証エントリを削除しないでください。まず以下のうち少なくとも1つがあることを確認してください:
- リカバリーコードを安全な場所に保存している
- 同じアカウントのコードが機能する別デバイスがある
- SMS、メール、ハードウェアキーなど、別の有効な認証要素がある
新規セットアップが途中で失敗した場合、再アクセスにはこれらのいずれかが必要になります。
エントリの再追加
- サービスにサインインし、セキュリティまたは二要素認証の設定を開きます。
- 古いアプリベースの2FA方式を削除または無効化します。
- 認証アプリを再セットアップするオプションを選択します。サービスが新しいQRコードを生成します。
- アプリで古いエントリを削除し、新しいコードをスキャンします。
- セットアップ画面を閉じる前に、新しく生成されたコードを検証します。
一部のアプリにはエントリごとの時刻修正オプションもあります — 全面削除に頼る前にアプリの設定を確認してください。
問題がこちら側にない場合
コードが正しくても、失敗の原因が別の場所にあることがあります。
サーバー側の問題
サービスはコードをサーバー側の時計と記録と照合して検証します。プロバイダーに時刻同期の問題や障害が発生していると、正しいコードでも拒否されます。ローカル側で何を変えても解決しません。プロバイダーのステータスページを確認し、数分待ってから、新しく生成したコードを1つ試してください。
アカウントのロックアウト
誤ったコードを繰り返し入力すると、一時的なロックアウトが発生することがよくあります。多くのサービスは、数回の失敗後、一定期間はそれ以上の試行をブロックします。しかも、余計な入力を1回するたびにタイマーがリセットされることがあります。入力をやめ、ロックアウトが解除されるのを待ち、その後で新しく生成されたコードを1回だけ入力してください。
電話番号の変更またはデバイスの復元
電話番号を変更した場合や、バックアップからデバイスを復元した場合は、保存されているエントリーがサーバーの期待するものと一致しなくなっている可能性があります。SMSコードは古い番号に届き、復元された認証アプリのエントリーは古いシークレットからコードを生成してしまうことがあります。リカバリーコードまたはプロバイダーのアカウント復旧フローでサインインし、その後、現在使用中のデバイスまたは番号で2FAを再登録してください。
トラブルシューティングチェックリストと予防
コードが拒否された場合は、以下の確認を順番に行ってください:
- 時刻同期を確認。 デバイスの時計を信頼できる時刻ソースと比較してください。1分のずれでもTOTPコードが無効になることがあります。
- 正しいエントリを確認。 認証アプリでは保存されたアカウントが似て見えます。コードがログイン先のサイトと一致しているか確認してください。
- 新しいコードを使用。 コードは30秒ごとに期限切れになります。古いコードを再試行せず、新しいものを待ちましょう。
- バックアップコードを試す。 コードが何度も失敗する場合は、保存済みのバックアップコードでログインすれば、落ち着いて認証アプリのエントリを修正できます。
今後の問題を防ぐには
- 認証アプリが動作するすべてのデバイスで自動時刻同期を有効にし、時計のずれを再発させないようにしましょう。
- バックアップコードは必要になる前に、印刷するか安全な場所にオフラインで保管してください。
- SMSよりもアプリベースの2FAやハードウェアキーを優先してください。これらは携帯電波に依存せず、傍受もはるかに困難です。
2FAの失敗のほとんどは、時刻のずれかエントリの間違いに起因します。この2つを修正し、バックアップを手元に置いておけば、拒否されることはまれになります。
このガイドを共有
ブログの最新記事
2FAセキュリティチェックリスト:今日からアカウントを守る12のステップ
2FAの設定、パスワードの管理、回復オプションを網羅する実践的なセキュリティチェックリスト。今日から実践できる12の具体的なステップで、アカウントを乗っ取りから守りましょう。
続きを読む2FAの歴史:ハードウェアトークンからパスキーまで
クリップ式ハードウェアトークンやSMSコードから、今日のフィッシング耐性のあるパスキーへ。二要素認証がどのように進化し、なぜ各段階が起きたのかを解説します。
続きを読む