Cyber Security Academy · レッスン

TOTPとHOTP

時間ベースのワンタイムパスワード

レッスン 2/413 ステップ

「TOTPとHOTP」はCoddyKit上の無料Cyber Security Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCyber Security Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cyber Security Academyコースには全4レッスンが含まれています。

ワンタイムパスワード

ワンタイムパスワード(OTP)とは、1回のログインまたは短い期間だけ有効なコードです。

これを生成する標準的なアルゴリズムには、HOTPとTOTPの2つがあります。

共有シークレット

どちらのアルゴリズムも、サーバーと認証アプリだけが知っている共有シークレットから始まります。

通常、セットアップ時にQRコードとして配布され、双方に保存されます。

HOTP:カウンターベース

HOTP(HMACベースのOTP)は、共有シークレットとカウンターをHMACで組み合わせ、その結果を短い数字コードに切り詰めます。

カウンターは、コードを生成するたびに1ずつ増加します。

HOTP = Truncate( HMAC-SHA1(secret, counter) )

TOTP:時間ベース

TOTP(時間ベースのOTP)は、カウンターとして現在時刻を固定長のステップで割った値を使うHOTPです(通常は30秒単位です)。

時間は常に進むため、手動のカウンターを追跡しなくても双方の状態を同期できます。

T = floor( (current_unix_time) / 30 )
TOTP = Truncate( HMAC-SHA1(secret, T) )

30秒のウィンドウ

TOTPコードは通常、30秒ごとに変わります。有効期間が短いため、盗まれたコードが使える時間を制限できます。

そのため、認証アプリにはカウントダウンバーが表示されます。

クロックスキューの許容範囲

端末の時計にはわずかなずれが生じます。有効なコードが拒否されないよう、サーバーは現在のウィンドウの前後1ステップにあるコードを受け入れます。

ウィンドウを広げすぎるとセキュリティが弱くなるため、狭く保ちます。

HOTPの同期

生成されたコードが使われないと、HOTPの状態がずれることがあります(端末ではカウンターが進みますが、サーバーでは進まないためです)。

サーバーは再同期のために小さな先読みウィンドウを許可しますが、大きなずれには手動での再同期が必要です。

otpauth URI

QRコードには、シークレットとパラメーターを記述したotpauth URIがエンコードされています。

otpauth://totp/Example:alice@example.com?secret=JBSWY3DPEHPK3PXP&issuer=Example&period=30

TOTPが主流になった理由

TOTPがHOTPよりはるかに一般的なのは、次の理由によります。

  • ずれたり再同期したりするカウンターが不要です。
  • コードが自然に期限切れになります。
  • オフラインで動作し、コードの生成にネットワークを必要としません。

長所と限界

TOTPはパスワードだけの場合に比べて大きな進歩ですが、依然としてフィッシングされやすいという問題があります。偽サイトによって、ユーザーが有効なコードを入力するよう誘導される可能性があるためです。

ハードウェアキーは、次のレッスンで扱うように、この攻撃に耐性があります。

バックアップと復旧

シークレットを保持している端末を失うと、アカウントから締め出される可能性があります。適切な対策は次のとおりです。

  • セットアップ時に発行されたリカバリーコードを保存します。
  • シークレットを安全にバックアップするか、2つ目の認証アプリを登録します。

クイックチェック

HOTPとTOTPの主な違いは何ですか?

振り返り

OTPアルゴリズムの仕組みについて学びました。

  • どちらも共有秘密とHMACを基盤としています。
  • HOTPはカウンターを使用し、TOTPは時間を使用します。
  • TOTPコードは約30秒で有効期限が切れますが、フィッシングには弱いままです。
  • リカバリーコードを保管しておきます。

次は、プッシュ承認とハードウェアキーについて見ていきます。

無料で開始

AI チューターと学ぶ Cyber Security Academy — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
76
レッスン
303

よくある質問

「TOTPとHOTP」レッスンは無料ですか?

はい。「TOTPとHOTP」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cyber Security Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cyber Security Academyコースには全4レッスンが含まれています。

「TOTPとHOTP」で何を学びますか?

時間ベースのワンタイムパスワード ブラウザで直接実行するハンズオンコードでCyber Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Cyber Security Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCyber Security Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「TOTPとHOTP」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCyber Security Academyレッスンでコードを書いて実行できますか?

はい。すべてのCyber Security Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 認証要素
  2. TOTPとHOTP
  3. プッシュ認証とハードウェアキー
  4. MFAバイパスのリスク
← Cyber Security Academyに戻る