0

WCFでユーザー名メッセージセキュリティを使用しようとしています。トランスポートクレデンシャルタイプのNone/Anonymousを使用すると、明確なセキュリティリスクが発生するかどうかを調べようとしています。

私の懸念は、バイナリデータがWS-trust仕様(TLSネゴシエーション)を使用してトンネリングされる最初の交換にあります。共有セキュリティコンテキストが確立される前に、このユーザー名とパスワードの認証の試みはネットワークスニファの影響を受けやすくなりますか?

どんな考えでも歓迎します。

ありがとう。

<security mode="Message">
   <transport clientCredentialType="None" />
   <message clientCredentialType="UserName" negotiateServiceCredential="true" algorithmSuite="Default" establishSecurityContext="true" />
</security>
4

3 に答える 3

3

WS-Security の仕様によると、UserName トークンには、暗号化されていないユーザー名とパスワードの両方を含めることができます。これにより、この情報が平文で暗号化されずにネットワーク上で転送されることがわかります。バイナリ形式は抑止力にはなりません。これは一般に「隠蔽によるセキュリティ」と呼ばれ、セキュリティ対策ではありません。

偶然にも、少し前に Scott Hanselman の記事を読んでいたときに、このような情報に出くわしました。あなたが抱えている問題を暗示しています。 http://www.hanselman.com/blog/BreakingAllTheRulesWithWCF.aspx

この機能を有効にする場合は、トランスポート レベルのセキュリティをここで有効にする必要があります。

WS-Security UsernameToken に関する OASIS ドキュメントは次のとおりです。いくつかのシナリオが許可されているようですが、WCF がデフォルトでどのシナリオを使用するのかはわかりません: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile -1.0.pdf

興味がある場合は、メッセージのログ記録を有効にして、メッセージを調べて送信内容を確認してください。メッセージ ロギングを有効にする

于 2009-07-27T16:51:26.607 に答える
2

ここでさらに調査を行いました。基本的に、パスワード ダイジェスト (デフォルト) を使用すれば、ネットワークを傍受している誰かにパスワードが公開されるリスクはありません。メッセージ本文自体の機密性を気にしない場合は、トランスポート セキュリティは必要ありません。

これはここで説明されています: http://msdn.microsoft.com/en-us/library/ms977327.aspx

簡単に言えば:

  1. パスワード ダイジェストは、クライアントが正しいパスワードを知っていることを検証するために使用されます。パスワードは送信されません。ハッシュのみが計算されます。

  2. リプレイ攻撃は、ナンスとタイム ウィンドウを使用することで防止されます。サーバーは、指定された時間枠のナンスを記憶し、そのナンスを持つメッセージが 1 つだけ受け入れられるようにします。すべてに署名すれば安全です。

于 2009-07-25T12:56:59.837 に答える
0

はい、そうです。データはネットワーク上で暗号化されないため、資格情報は見たい人に公開されます。

このようにやりたいと思う特別な理由はありますか?私はそれをお勧めしません。

于 2009-07-24T19:19:39.580 に答える