Protegendo aplicativos de canal ponto a ponto
Como outras ligações no WinFX, NetPeerTcpBinding
tem segurança habilitada por padrão e oferece segurança baseada em transporte e mensagem (ou ambas). Este tópico discute esses dois tipos de segurança. O tipo de segurança é especificado pela marca de modo de segurança na especificação de vinculação (SecurityMode
).
Segurança baseada no transporte
O Peer Channel suporta dois tipos de credenciais de autenticação para proteger o transporte, ambos exigindo a ClientCredentialSettings.Peer
definição da propriedade no associado ChannelFactory
:
Palavra-passe. Os clientes usam o conhecimento de uma senha secreta para autenticar conexões. Quando esse tipo de credencial é usado, deve ter uma senha válida e, opcionalmente,
ClientCredentialSettings.Peer.MeshPassword
umaX509Certificate2
instância.Certificado. A autenticação específica do aplicativo é usada. Quando esse tipo de credencial é usado, você deve usar uma implementação concreta de X509CertificateValidator in
ClientCredentialSettings.Peer.PeerAuthentication
.
Segurança baseada em mensagens
Usando a segurança de mensagens, um aplicativo pode assinar mensagens de saída para que todas as partes recetoras possam verificar se a mensagem foi enviada por uma parte confiável e se a mensagem não foi adulterada. Atualmente, o Peer Channel suporta apenas a assinatura de mensagens de credenciais X.509.
Melhores práticas
- Esta seção discute as práticas recomendadas para proteger aplicativos de canal de mesmo nível.
Habilite a segurança com aplicativos de canal ponto a ponto
Devido à natureza distribuída dos protocolos Peer Channel, é difícil impor a associação de malha, confidencialidade e privacidade em uma malha não segura. Também é importante lembrar de proteger a comunicação entre os clientes e o serviço de resolução. Em PNRP (Peer Name Resolution Protocol), use nomes seguros para evitar falsificação e outros ataques comuns. Proteja um serviço de resolução personalizado ativando a segurança na conexão que os clientes usam para entrar em contato com o serviço de resolvedor, incluindo segurança baseada em mensagem e transporte.
Use o modelo de segurança mais forte possível
Por exemplo, se cada membro da malha precisar ser identificado individualmente, use o modelo de autenticação baseado em certificado. Se isso não for possível, use a autenticação baseada em senha seguindo as recomendações atuais para mantê-los seguros. Isso inclui compartilhar senhas apenas com partes confiáveis, transmitir senhas usando um meio seguro, alterar senhas com frequência e garantir que as senhas sejam fortes (pelo menos oito caracteres, inclua pelo menos uma letra de ambos os casos, um dígito e um caractere especial).
Nunca aceite certificados autoassinados
Nunca aceite uma credencial de certificado com base em nomes de assunto. Observe que qualquer pessoa pode criar um certificado e qualquer pessoa pode escolher um nome que você está validando. Para evitar a possibilidade de falsificação, valide certificados com base nas credenciais da autoridade emissora (um emissor confiável ou uma autoridade de certificação raiz).
Usar autenticação de mensagem
Use a autenticação de mensagem para verificar se uma mensagem se originou de uma fonte confiável e se ninguém adulterou a mensagem durante a transmissão. Sem autenticação de mensagens, é fácil para um cliente mal-intencionado falsificar ou adulterar mensagens na malha.
Exemplos de código de canal de mesmo nível
Cenários de canal de mesmo nível