4

私は、ユーザーが Web サイトで作成したアカウントを使用してデバイスにログインする必要があるシステムに取り組んでいます。認証は HTTPS 経由で行われるため、問題はありません。デバイスで実行されているアプリケーションでは、アカウントにリンクされたクレジット カードを使用したアプリ内購入が可能であるため、ログイン資格情報が十分に安全であり、ブルート フォースによる攻撃が困難であることが重要です。唯一の問題は、ユーザーが使用するデバイスのユーザー入力機能 (基本的には矢印キーと選択ボタン) が制限されていることです。

この場合、一般的なユーザー名/パスワードは入力するのが面倒で、矢印キーで操作できるオンスクリーン キーボードの開発も必要になる場合があります。ユーザーは、簡単に解読できる単純なパスワードを作成することになる可能性があります。ただし、一度ログインすると、ユーザーはバックグラウンドでアクセス トークンを使用するため、パスワードを何度も入力する必要はありません。

最初のステップは、ユーザーが自分のユーザー名または ID 番号を入力する必要があることです。数字を使用すると、入力しやすくなりますが、推測しやすくなります。この分野での提案も歓迎します。

次は「パスワード」を入力する工程。ここに私が持っているいくつかのアイデアがありますが、私は暗号化の専門家ではないので、セキュリティのレベルを測定する方法がわかりません.

  • ユーザーは最初にデバイスを登録する必要があります。これは、セキュリティを強化するために必要な手順かもしれません。デバイスは、サーバーに送信され、アカウントと共に保存されるキーを生成します。今後の認証要求を実行するときに、キーが必要になります。ユーザーは、デバイスを承認するために Web サイトにログインする必要があります。デバイスにはいかなる種類の識別子もありません。そのため、すぐにログインしない限り、それが自分のデバイスなのか、他の誰かがあなたになりすまそうとしているのかわからないでしょう。ある種の追加の識別子を作成できると便利です。おそらく短いコード、フレーズ、または画像が表示されるので、登録しようとしたのと同じデバイスであることを知ることができます.

  • テキストパスワードを入力するのは難しすぎるかもしれないので、デバイスが登録されている限り、アプリ内購入を確認するときに4桁のパスコードを使用できるかもしれません. いずれにせよ、デバイスの他のユーザーがあなたの許可なくあなたのアカウントを使用するのを防ぐために、これは良いことかもしれません. ただし、パスコードの入力を監視されている場合は、その目的にはあまり適していません。

  • デバイスを登録する必要がない場合は、テキスト パスワードでログインする代わりに、オプションとして画像やフレーズがユーザーに提示され、アカウントに一致する画像やフレーズの適切な組み合わせを選択する必要があります。

これまでのところ、これですべてです。あなたの考えは何ですか?アプリ内購入が関係している場合、簡単で安全なログインを作成するにはどうすればよいですか?

4

1 に答える 1

1

私は、限られたユーザー入力機能のシナリオを扱ってきました。アプリが実行されているプラ​​ットフォームについて説明してください。プラットフォームのセキュリティ モデルに従ってソリューションを適合させるのに役立ちます。

更新: デバイスごとのマルチユーザー シナリオを検討していないことを願っています。したがって、デバイスごとに 1 人のユーザーがいると想定しています。2 番目の仮定は、デバイスがいくつかの API を介してアクセスできる一意のシリアル番号を持っている可能性があり、シリアル番号がサーバーに事前に登録されていることです。初期段階で、ユーザーはデバイス選択ボタンからランダム キーを生成し、アプリはキー生成の成功を確認して、おそらくシリアル番号を表示します (ユーザーは、後で構成するためにシリアル番号を登録する必要がある場合があります)。バックグラウンドで、アプリは新しいキーとそのシリアル番号をサーバーに送信します。サーバーは、データベース エントリのランダム キーを使用してシリアル番号を更新します。デバイスは、それ以上のキー生成をブロックするか、最終的に専用ユーザーで構成されるまで許可することができます。また、デバイスはローカル データベース/ファイル内のランダム キーを使用してシリアル番号を保持します。次に、ユーザーは Web インターフェイスを介して自分のアカウントにログインし、デバイスを構成します。ログインしたユーザーの場合、サーバーは利用可能なデバイスのリストを提示し、ユーザーは自分に属する特定のデバイスを選択し、4 桁の PIN コードを設定できます。サーバーは次のことを実行します。

  1. ユーザー アカウント、シリアル番号、ランダム キー (デバイスが最初に送信したもの) をリンクします。
  2. トークンを生成する
  3. パスワードベースの鍵派生アルゴリズム (PBKDF2) を使用して、PIN コードとソルトとしてのランダム鍵を使用して鍵を生成します。
  4. ステップ 3 で得られた鍵を使用してトークンを暗号化する
  5. データベースのユーザー行を暗号トークンで更新します。

ユーザーは、デバイス選択ボタンを使用して暗号トークンを同期できます。アプリのロックを解除するには、ユーザーは単純な数字画面から PIN コードを入力する必要があります。アプリは PIN コードとランダム キー (最初に保持されている) を使用して、PBKDF2 キーを生成し、トークンを復号化します。PBKDF2 はブルート フォースを少し遅くするのに役立ちますが、時間ベースまたは試行ベースのロックアウトを強制することもできます。たとえば、いくつかの証跡の後、アプリはユーザーの資格情報を削除し、ユーザーに最初から構成するように強制できます。

于 2013-08-15T18:03:41.210 に答える