web-dev-qa-db-ja.com

2つのTOTPクライアントを同時に登録して同じトークンを生成できますか?

私はnot Authyのようなシステムについて話していることに注意してください。ここでは、複数のデバイスでアカウントにログインして、それらの間でトークンを同期できます-私は、お互いの知識。

コンシューマーWebサイトの一般的な2要素認証セットアップフローを検討してください。

  1. ユーザーがログインし、「2FAのセットアップ」ページに移動します。
  2. サイトは2Dバーコードを生成してユーザーに表示します。
  3. ユーザーが2FAアプリでバーコードの写真を撮ると、トークンが生成されます。
  4. ユーザーはサイトにトークンを送信します。
  5. サイトはセットアップを検証/確定し、2FAが有効になります。

手順3で、2つの異なるデバイスがバーコードをスキャンした場合、同じシリーズのトークンの生成を開始しますか?もしそうなら、彼らは同じ初期値で始めるためにほぼ同時にバーコードをスキャンしなければならないでしょうか?

疑いを持たないユーザーの画面からバーコードをショルダーサーフィンするか、たとえばビデオ映像(おそらく防犯カメラやローカルニュースブロードキャストなど)にバーコードを表示し、それを使用して2FAトークンを複製できるかどうか知りたいです。ユーザーの知らないうちに。

3
smitelli

基本的にそうです。

使用されるアルゴリズムは、秘密鍵(バーコード形式で提供されることが多い)と正確な時刻に依存しています。これらの組み合わせに基づいて、サーバーが比較できる短いコードを提供します。

実際、サーバーまたはエンドユーザーのデバイスのどちらかがわずかに機能しなくなる可能性があるため、サーバーは通常、しばらくの間、前のコードと次のコードも受け入れます-これに対する許容度は、サービスのセキュリティに依存します。実装では、エンドユーザーが非常に正確なデバイスを持っていると想定します。セキュリティの低いデバイスでは、ユーザーがいつでも3つのトークンのいずれかを提供できる場合があります。

これをテストするには、1つのバーコードで複数のデバイスを設定します。同時にスキャンする必要さえありません。ただし、時計を同期させる必要があります。時計が少しずれている場合は、更新前にしばらくの間「古い」コードが表示されます。

3
Matthew