【てぃーおーてぃーぴー】

TOTP(ワンタイムパスワード) とは?

💡 30秒ごとに変わる「使い捨て暗証番号」で本人確認を強化
📌 このページのポイント
TOTP(時間ベースワンタイムパスワード) クライアントとサーバーが同じコードを同時に生成する クライアント側 共有秘密鍵 現在時刻 HMAC-SHA1 TOTPアルゴリズム 482 039 サーバー側 共有秘密鍵 現在時刻 HMAC-SHA1 TOTPアルゴリズム 482 039 一致 = 認証成功 30秒ごとにコードが更新される 初回登録時に共有
TOTPの仕組み
ひよこ ひよこ

TOTPってどういう仕組み?

ペンギン先生 ペンギン先生

最初にサーバとアプリで共通の秘密鍵を共有しておくんだ。あとは現在時刻とその秘密鍵を使って、同じアルゴリズムで同じ6桁のコードを計算するよ。時刻が同じなら同じコードが出るから、サーバ側で検証できるんだ。

ひよこ ひよこ

SMSで届くコードとは違うの?

ペンギン先生 ペンギン先生

違うよ。SMSはネットワーク経由でコードが送られるから、傍受されるリスクがある。TOTPはアプリ内で計算するからネットワークを使わない分、安全性が高いんだ。だからSMSより TOTPアプリを使う方が推奨されているよ。

ひよこ ひよこ

スマホを無くしたらログインできなくなる?

ペンギン先生 ペンギン先生

そのリスクはあるね。だから設定時にバックアップコードを保存しておくことが超重要なんだ。また、複数のデバイスに設定したり、バックアップ対応のアプリを使ったりする対策もあるよ。

ひよこ ひよこ

30秒以内に入力しないとダメなの?

ペンギン先生 ペンギン先生

基本的にはそうだけど、サーバ側は前後1〜2個のコードも受け付けることが多いよ。時計のズレに対応するためだね。でもあまりモタモタすると無効になるから、表示されたらサッと入力するのがベストだよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「TOTP」って出てきたら「時間ベースで変わる使い捨てパスワードのことで、二要素認証に使うんだな」と思えればだいたいOK!
📖 おまけ:英語の意味
「Time-based One-Time Password」 = 時間ベースのワンタイムパスワード
💬 時刻と秘密鍵から計算するから、サーバとアプリで同じコードが出せるんだよ
← 用語集にもどる