web-dev-qa-db-ja.com

2要素認証:送信されたテキストメッセージの有効期限

ログインコードを含む、ユーザーに送信されるテキストメッセージの有効期限を調査するように依頼されました。

この旅では、ユーザーはWebサイトで自分自身を識別し、一時的なパスコードを含むテキストメッセージを電話に送信するように求めます。彼らはこのパスコードをウェブサイトに入力してログインします。

私の質問:このテキストコードは、有効期限が切れるまでどのくらいの期間有効である必要がありますか?

5分? 20分?何かガイダンス?

2
colmcq

最も一般的な時間枠は5〜10分です。コードの目的に応じて、有効期限を変更できます。たとえば、確認コードはログインコードよりもアクティブになる傾向があります(Googleは30日間使用します)。良いガイドラインは、サービスの感度が高いほど、コードの有効期間が短くなることです。

実際にコードを入力するのに十分な時間をユーザーに与える必要がありますが、システムが別のコードを予期しているため、生成されたコードが無効になるのに十分な時間はありません。私の知る限り、複数のコードは通常、一定期間同時に有効です。これは、ユーザーの速度動作を正確に予測することが難しいためです。

ユーザーがコードを生成して実際に使用するまでの時間が長すぎるためにコードに不満がある場合は、コードの横にタイマーを表示して、コードを実行に移すことができます。これは人々がやらなければならない種類の「締め切り」があると感じているので、人々をやる気にさせる傾向があります。

Google adds an expiration timer to their codes Googleは、Google Authenticatorアプリのコードにタイマーを追加します。

3
Wendy Wojenka

これは、データセキュリティボードにとって良い質問です。

認証コードの有効期限は、現在必要なセキュリティのレベルに完全に依存し、ユーザーごとに異なります。期間は、セキュリティレベルにも依存します。セキュリティレベルを1、2、4、8、10などに設定すると、私の例の数値をセキュリティのレベルで割ることができます。

例:

レベル1-20分-通常どおり機能し、脅威は検出されませんでした。許可された新しいコードの要求。

レベル2-10分-脅威が検出され、違反の可能性があります。古いコードの期限切れ時に許可された新しいコードの要求。

レベル4-5分-潜在的なブルートフォース攻撃。古いコードの有効期限+必要な追加の待機時間(追加の5分など)に応じて許可された新しいコードの要求。

レベル8-2.5分-ブルートフォース攻撃が確認されました。攻撃が行われなくなるまで、ユーザーは新しいコードを要求できません。

レベル10-0分-アカウントがブロックされ、追加の支援が必要です。

注意してください、これは単なるドラフトの例であり、実際のシステムでは常に再設計して使用する必要があります。

同様のアプローチの例として、 http://store.steampowered.com/ 認証システムを調査できます。

2
Ivan Venediktov

アクセスコードはすべて使い捨てコードです。最も重要な問題は、これらのコードが使用後に有効にならないことです。 HOTPとTOTPの2つのアルゴリズムを使用できます。 HOTP(HMACベースのワンタイムパスワード)は、生成されたパスワードが使用されなくなるまで有効であることを意味します。 TOTP(時間ベースのワンタイムパスワード)は、生成されたパスワードが一時的なものであり、一定期間で期限切れになることを意味します。前のアルゴリズムに基づいて次のOTPを予測できるため、他のすべてのアルゴリズムの使用は信頼できないと見なされます。

OTPの有効期限は次のとおりです。

  • できるだけ短くしてください。
  • ユーザーにとって便利です(SMSを確認してOTPを入力するのに十分です)。

たとえば、ハードウェアトークンまたはソフトウェアトークンの場合、通常は30秒または60秒の有効期限が使用されます。

また、SMSがユーザーに配信されるまでには時間がかかるため、この時間を考慮する必要があります。

したがって、ユーザーに送信されるOTPの有効期限は多くの要因に依存し、実用的な方法で見つける必要があります。

1
Christian