web-dev-qa-db-ja.com

バックアップコードは2FAを役に立たないものにしますか?

サーバー側とクライアント側の両方のWebアプリケーションに2FAを実装しようとしています。誰もが知っているように、H/TOTPは私が何かを所有していることを証明することを目的としています。たとえば、携帯電話にインストールされた認証アプリを使用して、OTPを生成します。

私が所有している「何か」が何であるかわからないので、私の最初の質問は、これが私の「何か」私の電話ですか、それとも、OTP生成用のソルトですか?アプリが私の電話にインストールされていますか?(saltである場合、所有することは知っていることと同じではありません。私とsaltの間のアルゴリズムで多少複雑になりますか?)

アプリをインストールした携帯電話にアクセスできなくなるリスクがあるため、多くのサイトでバックアップコードのダウンロードを求められます。これらのコードは、最初の要素のパスワードと同様に、パスワードマネージャーに保存する必要があります。通常、ユーザー名とパスワードを入力した後、OTPプロセスをバイパスし、別のフローでバックアップコードを入力することができます。

私の2番目の質問は:私の主張は、このように2番目の要素が私が知っている何か、バックアップコードに削減され、したがって最初の要素を単に拡張しているということは正しいですか?(したがってレンダリング2FA全体がほとんど役に立たず、知っておく必要がある2番目の情報を追加することでセキュリティを少しだけ向上させながら、より多くのパスワードを管理する不便さを増やします。

5
scola

回復コードの存在は2FAを役に立たなくしますか?

No、いくつかの理由による。

まず、回復コードの使用は非常にうるさいです。回復コードを使用することは、TOTPでパスワードを使用することと同じではないため、回復コードを「単に最初の要素の拡張」と見なしてはなりません。そのため、攻撃者が回復コードを使用して、電話番号を攻撃者が制御するものに変更した場合、さまざまな通知(電子メール、アプリの通知など)を確実に受け取ることができます。また、攻撃者が回復コードをクラックしたとすぐにサポートに連絡した場合、おそらくアクセスが復元される可能性が高くなります。

次に、回復コードをパスワードと同じ場所に保存しないことをお勧めします。 Keepassデータベースにパスワードを保存することをお勧めします。ただし、リカバリー・コードをそこに保管してはなりません。私はそれらを1枚の紙に書いて、それを他の重要なドキュメント(できれば金庫など)と同じフォルダに貼り付けることをお勧めします。このようにして、Keepassデータベースにアクセスし、そのデータベースのパスワードを解読できる攻撃者は、パスワードと回復コードの両方にアクセスできません。

このように、回復コードを盗むために、攻撃者はそれを推測するか(Lining Everybody Frays Overpay Swinger Boogeyman Rise Anvil Pastel Quakingのような回復コードでは不可能であるべきです)、または家にアクセスする必要があります(その時点で、 GitHubアカウントはおそらくセカンダリです)。

5
MechMK1

バックアップコードは回復メカニズムであり、MechMK1がパスワードと同じ場所にそれらを保存しないことについて述べたことの2つ目です。また、自宅の引き出しにさまざまな「重要な」紙を入れて印刷して保管しています。

そのため、Webサイトがガイダンスを提供していない場合でも(理想的には、多くの場合は提供していない)、それを使用する方法、長期間保存することを意図している方法は、それを見ることができないことを意味します「私が知っていること[etc]」の観点からのみ。それを超えています。

0
sitaram

説明する問題のため、パスワードとバックアップコードの両方をパスワードマネージャーに保存しないでください。分けて保管することをお勧めします。たとえば、金庫のUSBドライブや、個人のドキュメント内に保存されている紙のシートは、リカバリコードに適した場所です。次に、攻撃者はあなたの家にもアクセスできる必要があります。

0