TOTP(時刻ベースワンタイムパスワード)とは
30秒ごとに変わる6桁コードで認証する仕組み
TOTPとは
TOTP(Time-based One-Time Password)は、現在時刻を使って30秒ごとに変わる6桁のワンタイムパスワードを生成する認証方式だよ。Google AuthenticatorやAuthyで見たことがある人も多いんじゃないかな。
仕組み
TOTPの計算はシンプルだよ。
- 登録時にサービスと端末で「共有シークレット(秘密鍵)」を交換する(QRコードスキャンがこれ)
- 認証時に
HOTP(シークレット, floor(現在時刻 / 30))を計算 - 結果の6桁を入力する
サービス側も同じ計算をして、一致すれば認証成功。鍵を共有しているだけで、ネットワーク通信なしに認証できるんだ。
なぜ30秒なの?
時刻のずれ(クロックスキュー)に対応しながら、もし覗き見されても即座に使えないようにするバランスとして30秒が標準になってるよ。多くの実装では前後1タイム(±30秒)まで許容してる。
セキュリティの注意点
TOTPはフィッシングサイトでリアルタイムに盗まれる「リアルタイムフィッシング」に対しては弱い面がある。攻撃者が偽サイトと本物サイトの間に立って30秒以内に転送すれば突破できてしまうんだ。そういう意味ではパスキーやWebAuthnのほうが強力だけど、TOTPも何もないよりはるかに安全だよ。
バックアップコードも保存しよう
デバイスを失くしたときのために、設定時に表示されるバックアップコードは安全な場所に保管しておこう。パスワードマネージャーに保存するのがおすすめだよ。
作ったパスワードは頭で覚えるのではなく、マネージャーに任せると安全です。 編集部がふだん使っているサービスをご紹介します。
洗練されたUI・Watchtower侵害通知・旅行モード搭載。Apple製品ユーザーに特に人気の老舗マネージャー。
オープンソースで透明性が高く、無料プランでも基本機能をフルに使える。セルフホストも可能。
SOC2 Type2認証取得済み。BreachWatch によるダークウェブ監視と法人向け管理コンソールが強力。
NordVPN 系列の老舗。XChaCha20 暗号化・データ漏洩スキャナ・パスワードヘルスを内蔵。日本語UI対応。
スイス拠点・Proton Mail 系列。E2E 暗号化・メールエイリアス・2FA を1つに統合。プライバシー重視派に。