web-dev-qa-db-ja.com

2要素認証のバックアップコードを効果的に保存するためのベストプラクティス

2要素認証を提供する多くのWebサービスの場合、システムをセットアップすると、長さが約7〜10文字のバックアップコード(ワンタイムパッド)の短いリストが表示されます。これらは、デバイスの紛失、旅行など、2番目の認証要素にアクセスできない場合に使用することを目的としています。

個人のバックアップコードを持ち歩けるようにするためのいくつかの良い方法/アイデアは次のとおりです。

  1. 接続しているサービスを明確に特定しないため、他の人には「Google Acct:9824 24 312」が表示されません。
  2. たとえば、バックアップコードが記載されたノートカードを盗む人には、簡単には使用できません。
  3. 基本的な計算機よりも高度な手段がなくても、ユーザーは簡単に理解して使用できます(例として、デバイスがまったくない手段も考えられます)
6
0d0h0m0s

One-Time Pad メソッドを使用してコードを暗号化します。その後、キーを覚えている限り、ペンと紙で簡単に復号化できます。 2faコードの文字はほぼ統一されているため(すべての文字が各キーの位置に表示される可能性が高い)、覚えやすいフレーズなどの不統一なキーを使用できます。

コードの暗号化のボーナスは、コードの複数のコピー(スーツケースに1つ、ウォレットに1つ、パブリックURLに1つ)を持ち運び、紛失や盗難の心配がないことです。

これの1つの弱点は、ワンタイムパッドを使用してすべての2faバックアップコードを暗号化するために同じキーを使用し、コードの1つがブルートフォースになると、攻撃者がキーを取得してすべてのコードを復号化できることです。ブルートフォース攻撃を防ぐためにログインをレート制限することはアカウントプロバイダーの標準的な方法ですが、一部のアカウントプロバイダーは他のアカウントプロバイダーよりも保護が不十分な場合があり、すべてのアカウントプロバイダーが適切に保護されているとは限りません。 2faバックアップコードのセキュリティは、最も弱いアカウントプロバイダーと同じくらい良好です。したがって、アカウントごとに異なるキーを使用する必要があります。これは、この方法の主な利点の1つを無効にすることです。つまり、1つのキーを記憶するだけで済みます。

2FAコードの均一性について

ワンタイムパッド(OTP)を使用して文を暗号化する場合、頻度分析から保護するために、キーは niform である必要があります。しかし、一般的に、どちらかの平文またはキーは、均一である必要があります。 Google Authenticatorおよび他の2faプロバイダーは、SHA-1によって生成されたハッシュを使用して、2faコードを生成します。これは HOTP(RFC4226) および TOTP(RFC6238) の標準です。 SHA-1は完全に均一ではないかもしれませんが、 SHA-1はほぼ均一 であり、周波数分析を均一にするのに十分近いため、実行可能な攻撃ではありません。したがって、覚えやすいフレーズやセンテンスなどの自明ではないキーを使用して、2faコードを暗号化できます。

4
Justin J Stark

あなたの人にそれらを保存することは悪い考えです。

バックアップコードはバイパスパスワードです。 これらは基本的に、2FAで保護されたアカウントへのバックドアです。通常のアカウントパスワードよりも強力です。

これを念頭に置いて、それらをまったく保持するかどうかを検討する必要があります。結局のところ、バックアップコードが存在する場合、それらはアカウントのパスワードよりも価値が高くなります。これらのバックアップパスワードが存在しない場合、アカウントはより安全になります。これは、2FAが最初から存在する理由の正反対です。それらをファーストクラスのパスワードとして扱う必要があります。定期的なパスワードを書面で財布に入れていますか?

これらのコードがGMailアカウント、iCloudアカウント、またはAmazonアカウント用である可能性が非常に高いです。コードの対象となるサービスを指定する必要はありません。最も一般的で明白なものがテストされ、ほとんどの場合おそらく泥棒は正しいでしょう。これが言われていると、私はこれのためのベストプラクティスはないと思います。

バックアップコードにワンタイムパッドを使用することを勧める回答に(一部のみ)同意しません。これを行うには、パスワードと同じ数のキーを生成して記憶する必要があります。これは、パスワード自体を記憶することと同じです。キーが覚えやすいパスフレーズであるかどうかにかかわらず、覚えることができるのは非常に多く(通常、バックアップコードは10個単位で取得され、キーを書き留めることはできません) )。バックアップコードの書き留めを主張する場合は、このソリューションを検討してください。

ただし、私のアドバイスは、バックアップコードを「自分自身」に維持する必要がある場合は、サービスごとに1つ(または2つ)を学習し、残りを無効にすることを検討することです。書き留めないでください。

1
korrigan

私が持っていたアイデアの1つは、バックアップコードにある種の単純なプロセス(または暗号)を適用して、それらを不明瞭にし、プロセスを覚えておくことでデコードできるようにすることでした。おそらくROT13やxorのようなものです。その後、それらを名刺テンプレートに印刷し、連絡先情報として設定します。これはあいまいさを介してセキュリティに要約されますが、少なくとも部分的には問題を解決します。

1
0d0h0m0s

アメリカ大統領の核発射コードに使用されているような壊れやすい不透明なプラスチック容器に保管することをお勧めします。

そうすることで、コンテナを壊すことによってのみ使用でき、知らないうちにコードを複製したり使用したりすることが困難になります。

それらをどこから調達するかを考え出せれば。

0
Jeremy French