web-dev-qa-db-ja.com

二要素認証のバックアップにワンタイムコードを使用する理由

2要素認証を使用するWebアプリケーションを構築しています。

回復機能を実装しているときに、ほとんどの企業(Apple、Facebook、Githubなど)が、ユーザーの資格情報と共にサーバーに送信する7〜10文字の長さの1回限りのコードである、最大15個のバックアップコードのセットを提供していることがわかります。アカウント復旧プロセスの一環として。

私はこの習慣を理解していません。なぜワンタイムコードが必要なのですか? 1つの複数使用のバックアップコードを用意する方が簡単ではないでしょうか。

8
Nino Filiu

SMSまたは電子メールOTPのようなものと比較して、これらの1回限りの使用を行うほど強力なケースはないと思いますが、同じ議論が適用されます。

コードを紙に印刷したとしましょう。次に、回復プロセス中に、回復コードが次のすべてのノードを通過します。

  • 平文:コンピュータのキーボード、OS、ブラウザ
  • HTTPSで暗号化:ブラウザー->サーバーのTLSエンドポイント(例:CloudFront)
  • 平文:TLSエンドポイント->ネットワーク機器->アプリケーションサーバー
  • 平文:アプリケーションサーバー<-> db <->その他の内部コンポーネント。

重要なのは、HTTPSを使用しても、回復プロセスの一環としてメモリ内(またはログ内)にコードを含むノードがたくさんあるということです。コードが多目的である場合、それらのノードのすべてが正直でマルウェアに感染していないことを信頼する必要があります。コードが1回限りの使用の場合は、一度使用すると、ログに記録されるかどうかは問題ではありません。

それは堅実な議論ではありませんが、私が思いつくことができる最高のものです。

11
Mike Ounsworth