Поделиться через


Защита приложений одноранговых каналов

Как и другие привязки в WinFX, по умолчанию включена безопасность и NetPeerTcpBinding обеспечивает безопасность на основе транспорта и сообщений (или оба). В данном разделе обсуждаются два этих типа безопасности. Тип безопасности задается тегом режима безопасности в спецификации привязки (SecurityMode).

Безопасность на базе транспорта

Одноранговый канал поддерживает два типа учетных данных для проверки подлинности, обеспечивающие безопасность транспорта; оба типа требуют настройки свойства ClientCredentialSettings.Peer в связанной фабрике каналов ChannelFactory.

  • Пароль. Клиенты используют знание секретного пароля для проверки подлинности подключений. При использовании этого типа учетных данных ClientCredentialSettings.Peer.MeshPassword должен содержать действительный пароль и дополнительно экземпляр X509Certificate2.

  • Сертификат. Используется специальная проверка подлинности приложения. При использовании этого типа учетных данных необходимо использовать конкретную реализацию X509CertificateValidator в проверке подлинности ClientCredentialSettings.Peer.PeerAuthentication.

Безопасность на основе сообщения

Приложение может подписывать исходящие сообщения с помощью безопасности сообщений, чтобы все получатели могли проверить, что сообщение отправлено надежной стороной и защищено от подделки. В настоящее время одноранговый канал поддерживает только подпись сообщений с учетными данными X.509.

Рекомендации

  • В этом разделе приводятся рекомендации по защите приложений одноранговых каналов.

Включение безопасности приложений одноранговых каналов

Распределенность протоколов однорангового канала затрудняет принудительное использование членства в сетке, секретности и конфиденциальности в незащищенной сетке. Важно также не забыть обеспечить безопасность связи между клиентами и службой распознавателя. В протоколе PNRP используйте безопасные имена во избежание спуфинга и других распространенных атак. Защитите пользовательскую службу распознавателя, включив безопасность на подключении, используемом клиентами для связи со службой распознавателя, включая как безопасность на основе сообщений, так и на основе транспорта.

Используйте самую сильную модель безопасности

Например, если требуется отдельно идентифицировать каждого члена сетки, используйте модель проверки подлинности на основе сертификатов. Если это невозможно, используйте проверку подлинности на основе паролей, следуя текущим рекомендациям по их защите. Для защиты паролей необходимо обмениваться паролями только с доверенными сторонами, передавать пароли только в безопасной среде передачи, часто изменять пароли и обеспечивать надежность паролей (они должны состоять как минимум из восьми символов, включать хотя бы по одному символу из обоих регистров, цифру и специальный знак).

Никогда не принимайте самозаверяющие сертификаты

Никогда не принимайте учетные данные сертификата на основе имен субъекта. Обратите внимание, что любой может создать сертификат и выбрать имя, проверку которого вы осуществляете. Чтобы защититься от спуфинга, необходимо проверять сертификаты на основе учетных данных центра выдачи сертификата (доверенного издателя или корневого центра сертификации).

Используйте проверку подлинности сообщения

Используйте проверку подлинности сообщения, чтобы проверить, что сообщение было получено из надежного источника и не было подделано во время передачи. Без проверки подлинности сообщения злонамеренному клиенту легко подделать или заменить сообщения в сетке.

Примеры кода одноранговых каналов

Сценарии одноранговых каналов

См. также