2

多くのサードパーティ サービスにアクセスするために使用されるデスクトップおよびモバイル アプリケーションがあります。これらのサービスには、潜在的に機密性の高い情報 (認証トークン、場合によってはプレーンテキストのユーザー名/パスワードなど) が含まれています。

複数のコンピューターやデバイス間で設定を同期するサービスを提供したいと考えています。つまり、私たちが提供するサービスにサインインすると、サインインしているすべての場所でその情報が同期されます。

サードパーティのアプリケーションに平文パスワードの使用を強制的に停止させる方法はありません。

私たちが検討したいくつかのアプローチがあります。

  1. パスワードや認証トークンを送信しないでください。

    ユーザーが新しいデバイスにサインインするときは、サードパーティ サービスごとにデバイスを再入力/認証する必要があります。

    利点: 安全で、パスワードやトークンが侵害されるリスクがありません。
    短所:ユーザーにとって難しい。

  2. クライアント証明書またはハードウェア トークンを使用して機密情報を暗号化します。

    ユーザーがサインインする場合、証明書/ハードウェア トークンを提供します。

    利点: 非常に安全です。
    短所: 参入障壁が大きく、非営利アプリの実装は困難または不可能です。

  3. ユーザーが提供するパスワードを使用して機密情報を暗号化する

    ユーザーが新しいデバイスにサインインすると、パスワードの入力を求められます。
    パスワードが正しくない場合は、他のすべてのデバイスを再入力/認証する必要があります。

    利点: ユーザーが強力なパスワードを提供する場合、安全です。
    欠点: ユーザーがパスワードをリセットした場合、すべてのサードパーティ アプリケーションに対してデバイスを再認証する必要があります。

  4. サーバー上の機密情報を暗号化します。

    利点: ユーザーにとって使いやすい。
    欠点: 設定テーブルを取得する人にとっては、平文よりもわずかに多くの作業しか必要ありません。

  5. 何も暗号化する必要はありません。(平文ストレージ)

    利点: ユーザーにとって使いやすい。
    欠点: DB を取得して、すべてのユーザーのパスワード/認証トークンを簡単に取得できます。

私の質問は、まだ検討していないより良いアプローチはありますか?

4

1 に答える 1

0

OK、これは多面的な質問です。情報がインターネットを介して送信されるときと、サーバー上にあるときの両方のセキュリティを考慮する必要があります。

ケース 1 に関しては、もちろん、パスワードが漏洩する危険を冒さないことは良いことですが、作成したアプリケーションはユーザーにとって便利であることを意図しています。正しく行われれば、情報は公開されるリスクなしに安全に渡すことができます。ただし、暗号化を正しく実装することは、軽視すべき偉業ではありません。実際、独自の暗号化を実装するべきではないと私が言うときは、正しく使用するように注意して、実績のある既存の暗号化ライブラリを使用してください。

箇条書き 2 については、暗号化を自分で実装するべきではないというあなたの意見は正しいですが、公開鍵と秘密鍵を生成し、それらを使用して情報を保護するためのプログラムやライブラリは数多くあります。

データベースに保存されている情報は、100% 暗号化する必要があります。十分な時間/動機があれば、すべてのサーバーは安全ではありません。ただし、暗号化された情報は、適切な情報がないと計算上解読できない可能性があります。

于 2012-01-17T18:09:16.460 に答える