WinFX の他のバインディングと同様に、 NetPeerTcpBinding
では既定でセキュリティが有効になっており、トランスポート ベースとメッセージ ベースの両方のセキュリティ (またはその両方) が提供されます。 このトピックでは、これら 2 種類のセキュリティについて説明します。 セキュリティの種類は、バインディング仕様 (SecurityMode
) のセキュリティ モード タグによって指定されます。
トランスポート ベースのセキュリティ
ピア チャネルでは、トランスポートをセキュリティで保護するための 2 種類の認証資格情報がサポートされています。どちらの場合も、関連付けられているClientCredentialSettings.Peer
で ChannelFactory
プロパティを設定する必要があります。
パスワード。 クライアントは、シークレット パスワードの知識を使用して接続を認証します。 この資格情報の種類を使用する場合、
ClientCredentialSettings.Peer.MeshPassword
は有効なパスワードと必要に応じてX509Certificate2
インスタンスを使用する必要があります。証明書。 特定のアプリケーション認証が使用されます。 この資格情報の種類を使用する場合は、X509CertificateValidatorで
ClientCredentialSettings.Peer.PeerAuthentication
の具体的な実装を使用する必要があります。
メッセージ ベース セキュリティ
メッセージ セキュリティを使用すると、アプリケーションは送信メッセージに署名し、すべての受信側が信頼できるパーティによってメッセージが送信され、メッセージが改ざんされていないことを確認できます。 現在、ピア チャネルでは X.509 資格情報メッセージ署名のみがサポートされています。
ベスト プラクティス
- このセクションでは、ピア チャネル アプリケーションをセキュリティで保護するためのベスト プラクティスについて説明します。
ピア チャネル アプリケーションでセキュリティを有効にする
ピア チャネル プロトコルの分散特性により、セキュリティで保護されていないメッシュでメッシュ メンバーシップ、機密性、プライバシーを適用することは困難です。 また、クライアントとリゾルバー サービス間の通信をセキュリティで保護することも重要です。 ピア名前解決プロトコル (PNRP) で、セキュリティで保護された名前を使用して、スプーフィングやその他の一般的な攻撃を回避します。 メッセージベースとトランスポートベースのセキュリティの両方を含め、リゾルバー サービスへの接続に使用する接続クライアントのセキュリティを有効にすることで、カスタム リゾルバー サービスをセキュリティで保護します。
可能な限り強力なセキュリティ モデルを使用する
たとえば、メッシュの各メンバーを個別に識別する必要がある場合は、証明書ベースの認証モデルを使用します。 それが不可能な場合は、現在の推奨事項に従ってパスワードベースの認証を使用して、セキュリティを維持します。 これには、信頼できるパーティとのパスワードの共有、セキュリティで保護されたメディアを使用したパスワードの送信、パスワードの頻繁な変更、パスワードの強度の確保 (少なくとも 8 文字、両方のケースからの少なくとも 1 文字、数字、特殊文字が含まれます) が含まれます。
Self-Signed 証明書を受け入れない
サブジェクト名に基づいて証明書の資格情報を受け入れないでください。 証明書は誰でも作成でき、誰でも検証する名前を選択できることに注意してください。 スプーフィングの可能性を回避するには、発行元の証明機関の資格情報 (信頼された発行者またはルート証明機関) に基づいて証明書を検証します。
メッセージ認証を使用する
メッセージ認証を使用して、メッセージが信頼できるソースから送信されたこと、および転送中にメッセージが改ざんされていないことを確認します。 メッセージ認証を使用しないと、悪意のあるクライアントがメッシュ内のメッセージをスプーフィングまたは改ざんしやすくなります。