0

ここに関連する質問をしました:

ASP.Net から Javascript に UserID を安全に渡す

ただし、より詳細な/具体的な質問があります。私にはサービスがあり、サービスを使用するアプリケーションがあります。これを保護するための計画は、いくつかの値、ノンス、および秘密鍵に基づいてハッシュを生成することです。私の唯一の問題は、ハッシュを検証するために、秘密鍵を除くすべての値と nonce を送信する必要があるように思われることです。これは私の設計上の欠陥ですか、それともこのようなことを行う方法ですか? 私はグーグルで検索しましたが、これがこれを行うための正しく安全な方法であるかどうかを確認できませんでした.

たとえば、値 1、2、および 3 を残りのサービスに渡す必要があるとします。そのため、ハッシュを生成するために電話番号、ナンス、および秘密鍵を使用します。ハッシュを再度生成するために必要になりますキー(ユーザーの電話番号に基づいて取得できます)を除く上記のすべてを渡します。

サービスを完全に攻撃にさらしている、適切に保護している、またはその中間ですか?

編集:スペルと文法の修正を行いました

EDIT 2: MVC 4 をフォーム認証で使用し、2 つのプロジェクト間で同一の Cookie 名を使用し、グローバルに適用された [Authorize] 属性を使用することにより、最終的に満足のいく解決策に到達しました

4

1 に答える 1

1

この計画には本質的に何の問題もありません。クライアントが送信した場合:

data . nonce . hash(data . nonce . shared-secret)

次に、サーバーは、クライアントから提供されたハッシュと一致することを確認してメッ​​セージを検証しますhash(data . nonce . shared-secret)。改ざんとリプレイの両方に対して安全です (もちろん、適切な暗号化ハッシュ アルゴリズムを使用していると仮定します)。

この設計では、2 つのクライアントが同じノンスを生成するリスクがなければ、クライアントは独自のノンスを生成することもできます。

ただし、盗聴者はあなたが送信したすべてのデータを見ることができます...したがって、そうしない非常に正当な理由がない限り、私は単に https を使用します (私が認識していない他の要件がない限り、これで十分です)。 .

于 2012-11-15T18:17:13.743 に答える