保护对等通道应用程序

与其他 WinFX 下的绑定一样,NetPeerTcpBinding 默认启用了安全功能,并提供传输安全和消息安全(或两者同时)选项。 本主题讨论这两种类型的安全性。 安全类型由绑定规范(SecurityMode)中的安全模式标记指定。

基于传输的安全

对等通道支持两种类型的用于保护传输安全的身份验证凭据,这两种类型都要求设置关联 ClientCredentialSettings.Peer 上的 ChannelFactory 属性:

  • 密码。 客户端使用机密密码的知识对连接进行身份验证。 使用此凭据类型时,ClientCredentialSettings.Peer.MeshPassword 必须携带有效的密码,并且 X509Certificate2 实例是可选的。

  • 证书。 使用特定的应用程序身份验证。 使用此凭据类型时,必须在X509CertificateValidator中使用ClientCredentialSettings.Peer.PeerAuthentication的具体实现。

基于消息的安全

应用程序可以使用消息安全性对传出消息进行签名,以便所有接收方都可以验证消息是否由受信任的方发送,并且消息未被篡改。 目前,对等通道仅支持 X.509 凭据消息签名。

最佳做法

  • 本部分讨论保护对等通道应用程序的最佳做法。

通过对等通道应用程序实现安全性

由于对等通道协议的分布式性质,很难在不安全的网格中强制实施网格成员身份、机密性和隐私。 请务必记住,确保客户端与解析程序服务之间的通信安全。 在对等名称解析协议(PNRP)下,使用安全名称以避免欺骗和其他常见攻击。 通过在客户端用来联系解析程序服务的连接上启用安全(包括基于消息的安全和基于传输的安全),可以保护自定义解析程序服务的安全。

使用最强大的安全模型

例如,如果需要单独标识网格的每个成员,请使用基于证书的身份验证模型。 如果无法实现,请遵循当前建议使用基于密码的身份验证来保护它们。 这包括仅与受信任的方共享密码、使用安全介质传输密码、频繁更改密码以及确保密码强(至少八个字符长),包括两种情况下至少一个字母、数字和特殊字符。

从不接受 Self-Signed 证书

绝对不要接受基于主题名称的证书凭据。 请注意,任何人都可以创建证书,任何人都可以选择要验证的名称。 为了避免欺骗的可能性,请根据颁发机构凭据(受信任的颁发者或根证书颁发机构)验证证书。

使用消息身份验证

使用消息身份验证来验证消息是否源自受信任的源,并且传输过程中没有人篡改该消息。 如果没有消息身份验证,恶意客户端很容易欺骗或篡改网格中的消息。

对等通道代码示例

对等通道方案

另请参阅