web-dev-qa-db-ja.com

パスワードを忘れるセキュリティの実装について

これについてあなたの提案が必要です。

モバイルアプリケーションと膨大な数のユーザーがいることを考慮してください。ユーザーエクスペリエンスの同意を得て、安全なパスワードリセット機能を実装したいと考えています。

仮定-ここでは、ハッカーが被害者の電話を盗んだと想定しているため、従来のパスワードリセットの実装は次のように機能しません。

  • 電話でパスワードリセットOTPを送信した場合、ハッカーはすでに被害者の電話を持っています。したがって、役に立たない。
  • パスワードリセットトークンを送信すると、ハッカーは被害者の電話を持っており、ほとんどの場合、電子メールIDがリンクされて電話で開かれます。したがって、役に立たない。

現在の実装-誰かがパスワードのリセットリクエストをリクエストした場合、24時間後に新しいパスワードを提供します。ユーザーの電話が盗まれ、ハッカーがパスワードのリセット要求を送信した場合、ハッカーが自分のアカウントから悪意のある活動を行わないように、ユーザーは24時間以内に私たちを報告できる必要があるようにこの時間枠を維持します。

問題-ユーザーの電話が盗まれ、ハッカーがパスワードのリセット要求を送信し、ユーザーが24時間以内に電話が盗まれたと報告していないことを事前に想定して、この実装を再構築する必要があります。ユーザーが正当であるかどうかを識別せずに、このタスクを達成し、それでもユーザーのアカウントが安全なままであることをどのように識別できますか?

ソリューションのカップル:

  • ユーザーにハードウェアトークン(RSAトークン、VASCOトークン)の提供を開始します。これにより、電話が盗まれた場合でも、リセットして新しいパスワードを使用するには、これらのトークンに物理的にアクセスしてログインする必要があります。 (問題-ユーザーに500000のハードウェアトークンを提供することは不可能です。
  • 信頼できる番号-登録時に、ユーザーはデータベースに保存されている2つの信頼できる番号を追加します。パスワードのリセットリクエストでは、これらの信頼できる番号に2つの別々のパスワードを提供し、ユーザーはそれらを組み合わせてアプリケーションにアクセスできます。 (問題-ユーザーエクスペリエンスがトリッキーで受け入れられなくなる)
  • 登録時に、4色から1色を選択するなど、いくつかのセキュリティ質問(誕生日、母親の旧姓などの従来の質問ではありません)を提供します。 5つの食べ物から1つを選択します。パスワードをリセットする間、ハッカーはこれらすべてを知らないので、答えるためにこれらの質問を提供します。 (問題-今登録して1年後にPINを忘れた場合、これらの回答を覚えていません。これらの回答を覚えているのは、登録中にそれらの回答のスクリーンショットを撮った場合であり、これもまた盗難電話の懸念事項です。 )
  • バックアップコード-登録時にGoogleとは異なりバックアップコードを提供します。ユーザーはパスワードをリセットするためにそれらを追加する必要があります。 (問題-ほとんどの場合、ユーザーはバックアップコードのスクリーンショットを撮るか、メモアプリケーションに保存します。これも盗まれた電話の懸念事項です)

これらとは別に、いくつかの堅固なソリューションを実装し、それでもユーザーエクスペリエンスをスムーズに保つためのその他の提案が必要です。

セキュリティとユーザーの複雑さは逆の命題であることに完全に同意します。防弾セキュリティを実装したい場合、ユーザーエクスペリエンスは悪くなります。しかし、私たちにできる方法があれば、コミュニティからの回答が欲しいです。

提案をいただければ幸いです。

3
FrOgY

私の提案は、巨額の人にお金を渡すことです:カスタム実装を捨てて、OAuthのようなものを使用して、ユーザーに google または facebook - StackExchange と同様!!

物事を同じに保つ必要がある場合:なぜパスワードのリセットは常にハッカーによるものだと思いますか?パスワードのリセットが発生する理由を測定しましたか?それらのほとんどは、ユーザーが単にパスワードを忘れていることが原因だと思います(つまり、あなたは悪い仮定から始めて、ほんの一部のユーザーしか保護せずに、大多数のユーザーのエクスペリエンスを低下させると思います)。

1
user15392

ハードウェアトークンは高価であり、多くの場合、高価なオプションです。ビジネス上の決定として、ユーザーにコストを負担するように依頼することができる場合があります(互換性のあるトークンのリストと初期化手順を提供します)。したがって、コスト面でもロジスティクス面でも実行可能なオプションになります。

信頼できる番号も誤りです(ユーザーは最近の連絡先情報を更新するのを忘れます)時々ユーザーに最近の番号を確認するように通知できます(Google/Twitter /他の人が行うようにポップアップします。「これはまだあなたのバックアップ番号ですか?」) 。プライマリ番号とセカンダリ番号/電子メールアドレスの両方でユーザーに通知するだけで、1つのデバイス/番号/電子メールアドレスをカバーできなくなるリスクをカバーできます。 alt-number/addressから確認を求めることは、効果的なセキュリティを実現するには障壁が大きすぎると思います。

セキュリティの質問、バックアップコード-自分で指摘した理由から、最も望ましくないものです。

ここで重要なのは、デバイスに保存される可能性が低い(したがって失われる)auth-factorを使用することです。これを特定するには、顧客との関係や顧客との関係を深く掘り下げる必要があります。たとえば、一部の銀行では、住所変更要求のために、物理的な住所証明文書を銀行に送信する必要があります。バックオフィスはこれを検証します。

3つの標準的な要素(あなたが知っていること、あなたが持っていること、そしてあなたが何であるか)のうち、最初の要素だけがこのシナリオで便利に思えます。静的な情報(生年月日など)や、簡単に入手できる情報(FBプロファイル上の何か)であってはなりません。

1つの可能性:先に進むために、最近のトランザクションのおおよその量(またはストア名)を尋ねます。または、最後の支払いが行われたとき。 app/BackEndが知っているようなもので、ユーザーはそれほど簡単に忘れることはありませんが、システムの外部ではありません。

1
Sas3

あなたの最善の策はあなたの選択肢3と4だと思います。

秘密の質問

私はセキュリティの質問の大ファンではありません。個人的に、私はこれらにどのような答えをしたかを覚えていません。あなたは当然、母親の旧姓と生年月日を簡単すぎると無視します。食べ物や色などから選ぶというあなたの提案は、一般的にそれほど悪い考えではありません。人々の好みは時間の経過とともにかなり安定しているため、今特定の食べ物を選んだ場合、彼らが選ぶ可能性が高いという研究があります。たとえ自分の選択を正確に覚えていなくても、2年間で同じ食品イメージが高くなります。このアイデアの問題は、5つのうち1つを選択すると、そのような質問を3つ連鎖させたとしても(125分の1、これは些細なことです-500000のクライアントがある場合)、画像をランダムに選択して成功する可能性が非常に高いことを知らない攻撃者に与えられることです。 、断固とした攻撃者がクライアントのアカウントの約5000に侵入する可能性があります)。そして、追加の質問があるたびに、正当なクライアントがそれらの1つに誤って答える可能性が高くなります。

また、「運転免許証番号の下4桁」や「お気に入りの本のISBN番号」など、多くの可能性を開くセキュリティの質問があり、その答えは安定しています。これが開く可能性の数に応じて、ユーザーにそれらの2つまたは3つに答えさせる必要もあります(運転免許証番号の最後の4桁は10000の可能性しか開きません。つまり、500000のクライアントでは、50の彼らのアカウントは、たとえ攻撃者がクライアントごとに1回だけ試みたとしても、断固とした攻撃者によって侵害されます。

バックアップコード

これをQRコードとして提供し、印刷してどこかに提出することができます。理想的には、クライアントの住所がある場合は、これを通常のメールで送信できます。これは、ハードウェアセキュリティデバイスよりもはるかに安価です(ただし、手紙を郵送するためのコストはかかります)。

郵便パスワードの回復

実際、クライアントの住所が実際にある場合、通常のメールでパスワードを回復することができます。

電話の所持を伴うソリューションを無視しないでください

クライアントの電話を盗む攻撃者が、電話に関連するセットアップした回復システムに自動的にアクセスできると想定しています。これは理論的にはほとんど真実かもしれませんが、実際には、主に誰かのデジタルIDにアクセスするために電話が盗まれるわけではありません。ほとんどの場合、電話泥棒は電話にあるデータに興味がないでしょう(おそらく画像ギャラリーを見ることは別として)。したがって、電話の所有をリカバリシステムの一部にすると、ほとんどのクライアントのセキュリティが向上します。

1
Out of Band

ここで1つのことを実行できます。アプリケーションでログインするたびに、そのアプリケーションをゲストユーザーとしてのみ(フルアクセスではなく)サーフィンできます。すべての更新を確認できます。すべての新しい通知オファーなどを確認できますさて、トランザクションを実行したい場合OR送金したいOR財布にお金を入れてくださいOR =私の詳細を変更したいので、まず、自分のアカウントでログインする必要があります。OTP番号を生成した後、セキュリティの質問(サインアップ時に使用されます)に回答する必要があります。 3方向のセキュリティです。移行が完了すると、自動的にログアウトされます。

再び同じプロセスが続きます。

0
V1Ru5