ハッシュ/暗号

TOTP Generator/Verifier

時間ベースのワンタイムパスワード(TOTP、RFC 6238) — シークレットから現在のコードを生成し、時刻のずれを許容しつつ入力されたコードを検証。

------


                    

TOTP (Time-based One-Time Password, RFC 6238) is a two-factor authentication algorithm that generates a one-time code from a secret and the current time. It's exactly what runs under the hood in Google Authenticator, Authy, and similar apps.

How to use it

Common uses

Things to keep in mind

A TOTP code is only valid for a short window (usually 30 seconds) — that time limit is the main protection, not the secret alone.

Code accuracy depends directly on the device's clock being synced; a noticeable clock drift is the most common cause of rejected 2FA codes.

このツールに関する記事: TOTP:認証アプリのワンタイムコードはどう機能するか

よくある質問

生成したコードがすぐに期限切れになるのはなぜですか?

TOTPコードは時間ベースです — デフォルトでは現在のUnix時間と共有シークレットから計算され、30秒ごとに切り替わります。この短いウィンドウが、漏洩したコードが有効なままである時間を制限します。

デバイスの時計がずれているとどうなりますか?

TOTPは両者が現在時刻についておおよそ一致していることに依存します。ほとんどの認証アプリとサーバーは小さな時刻のずれ(通常1タイムステップ)を許容しますが、それ以上のずれがあると有効なコードが拒否されます。

ここでコードを生成する際、秘密鍵はどこかに送信されますか?

いいえ。TOTPコードはブラウザ内で完全に計算されます — 秘密鍵はデバイスから外に出ることはありません。

TOTPはフィッシングから守ってくれますか?

完全には守れません。被害者が偽サイトにパスワードと現在のTOTPコードを入力すると、攻撃者はそのコードがまだ有効なうちに両方の値を本物のサイトで即座に使うことができます。このようなリアルタイムの攻撃から守れるのは、FIDO2/WebAuthn規格のハードウェアキーだけです。

なぜサーバーは現在の時間間隔だけでなく、直前の時間間隔も受け入れるのですか?

これは、電話でコードが生成されてからサーバーがそれを受け取り検証するまでのわずかなネットワーク遅延を補うためです。この許容がなければ、数秒程度の通常の遅延で正当なコードが拒否されてしまうことがあります。

記事: ハッシュ/暗号

Hash Generator:MD5、SHA-1、SHA-256はどう違うのか

MD5が今もファイルの整合性検証に使われるが、パスワードには使われない理由。

Checksum Verifier:ファイルが壊れていないか確認する方法

一致するチェックサムがファイルの整合性を確認する一方、誰が作成したかは確認しない理由。

HMAC:鍵付きハッシュが通常のハッシュとどう違うか

通常のSHA-256がメッセージの改ざんから保護しない理由と、HMACがそれを可能にする理由。

Bcrypt:パスワードが速くではなく遅くハッシュ化される理由

速いSHA-256がパスワードに向かない理由と、遅いbcryptが適切な選択である理由。

UUID:ほとんど重複しない識別子はどう生成されるか

UUID v4が数百万台のマシンで独立して、衝突リスクなしに生成できる理由。

パスワード生成ツール:パスワードを本当に強くするものは何か

辞書の単語からなる長いパスワードが、記号や数字を含む短いパスワードより強い理由。

AES:共通鍵暗号の仕組み

AESで同じ鍵がデータの暗号化と復号の両方に使われる理由と、それが公開鍵暗号とどう違うか。

Argon2:このアルゴリズムがパスワードハッシュコンペティションで優勝した理由

Argon2が古いパスワードハッシュ化アルゴリズムよりGPUを使った攻撃に対してどう優れた防御を行うか。

Scrypt:このアルゴリズムがなぜこれほど多くのメモリを必要とするか

scryptがASICデバイスでのクラッキングを困難にするために意図的に大量のメモリを要求する理由。

PBKDF2:最も古い鍵ストレッチング標準

PBKDF2の推奨反復回数が毎年増え続ける理由。

X.509:SSL証明書の中身は何か

緑色の錠前を表示する前に、ブラウザがサイトの証明書で正確に何をチェックしているか。

PGP:公開鍵と秘密鍵による暗号化の仕組み

PGPの公開鍵は自由に共有できるが、秘密鍵は決して共有してはいけない理由。