2段階認証(2FA / TOTP)の仕組みと安全性
クラウド同期型認証アプリのリスクと、クライアント暗号化による究極のTOTP保護
この記事のポイント(要約)
- TOTP(RFC 6238)は「共有シークレットキー」と「30秒ごとのUNIX時間」からHMAC-SHA1で6桁の数値を計算する仕組み。
- クラウド同期型アプリは利便性が高い反面、アカウント侵害時に全2FAシークレットが一括で流出する単一障害点(SPOF)を抱える。
- KeepTempMailerはWebCrypto APIを活用し、TOTPシークレットをブラウザローカルでRSA/AES暗号化して安全に保持・生成します。
1. TOTP(時間同期型ワンタイムパスワード)の計算アルゴリズム
多くのWebサービスで採用されている「Google Authenticator」などの二要素認証(2FA)は、国際標準規格である **RFC 6238 (TOTP: Time-Based One-Time Password Algorithm)** に基づいて動作しています。
この仕組みでは、サーバーとクライアント(あなたの端末)の間でインターネット通信をリアルタイムに行う必要がありません。双方があらかじめ共有した「シークレットキー(Base32文字列)」と「現在のUNIXタイムスタンプ」だけを用いて、独立して同じ6桁のコードを算出します。
// TOTPコード算出の概念図
1. 時間ステップ T = Math.floor(UnixTimestamp / 30)
2. ハッシュ値 H = HMAC-SHA1(SecretKey, T)
3. ダイナミックトランケーション ➔ 6桁の整数 (例: 849201)
2. クラウド同期型2FAアプリが抱えるセキュリティリスク
近年、機種変更時の手軽さを重視して「クラウドバックアップ」を標準有効にした2FAアプリが増加しています。しかし、この便利さには重大なトレードオフが潜んでいます。
- クラウドIDの侵害による全滅リスク: メインのGoogleアカウントやApple IDが乗っ取られた場合、保管されていたすべてのサービスの2FAシークレットが攻撃者の手元に復元されてしまいます。
- 二要素(所持認証)の原則崩壊: パスワード(記憶認証)と2FA(所持認証)が同一のクラウドアカウントで紐づくことで、実質的に単一のアカウント侵害で両方の要素が突破される事態を招きます。
3. KeepTempMailerにおけるゼロ知識TOTPマネージャー機能
KeepTempMailerは、一時メールアドレスの受信機能だけでなく、アカウント運用に必要なパスワードと2FA(TOTP)の一元管理機能を統合しています。
完全ローカル暗号化によるTOTP生成の特徴
- QRコード画像読み込み対応: 設定用QRコード画像をドラッグ&ドロップまたはファイル選択するだけで、ブラウザ内で自動解析(`jsQR`)してシークレットを抽出。
- クライアントサイド暗号化: シークレットキーは端末内の秘密鍵で暗号化されてIndexedDBに保存され、平文で外部サーバーへ送信されることは一切ありません。
- 30秒カウントダウン表示: リアルタイムで現在有効な6桁コードと残り秒数を美しく可視化。ワンクリックでクリップボードにコピー可能です。
よくある質問(FAQ)
Q. 端末の時刻がズレていると2FAコードは通らなくなりますか?
はい。TOTPは現在時刻をベースに計算するため、スマートフォンの「時刻自動設定(NTP)」を有効にしておく必要があります。
Q. 別の端末にTOTPデータを引き継ぐことはできますか?
はい。KeepTempMailerの設定画面から「アカウントのエクスポート」を行うことで、暗号化されたバックアップファイルを安全に別端末へインポートできます。