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


Защита сообщений с использованием средств обеспечения безопасности транспорта

В этом разделе рассматривается механизм безопасности транспорта очереди сообщений MSMQ, который может быть использован для защиты сообщений, отправленных в очередь.

ms789030.note(ru-ru,VS.100).gifПримечание
Перед прочтением этого раздела рекомендуется прочитать Основные понятия безопасности.

Следующая иллюстрация представляет концептуальную модель взаимодействия с использованием очередей Windows Communication Foundation (WCF). Для объяснения принципов безопасности транспорта используется следующая терминология и рисунки.

Схема находящихся в очереди приложений

При передаче сообщений из очереди с использованием WCF с NetMsmqBinding сообщение WCF прикрепляется к телу сообщения MSMQ. Механизм безопасности транспорта защищает целиком сообщение MSMQ (заголовок или свойства и тело сообщения MSMQ). Поскольку сообщение WCF является основной частью сообщения MSMQ, оно также защищается механизмом безопасности транспорта.

Ключевое понятие в основе безопасности транспорта заключается в том, что клиент обязан удовлетворять требованиям безопасности, чтобы получить сообщение в целевую очередь. В этом заключается отличие от безопасности сообщения, в котором сообщение защищается для приложения, которое получает сообщение.

Безопасность транспорта с использованием NetMsmqBinding и MsmqIntegrationBinding влияет на то, как защищаются сообщения MSMQ во время передачи между очередью передачи и целевой очередью, которые подразумеваются безопасными.

  • Подписывание сообщения обеспечивает защиту от подделки.

  • Шифрование сообщения обеспечивает защиту от просмотра или подделки. Это рекомендуется, но не является обязательным.

  • Диспетчер целевой очереди определяет отправителя сообщения для предотвращения подделки.

В MSMQ, независимо от проверки подлинности, целевая очередь содержит список управления доступом (ACL) для проверки, имеет ли клиент разрешение посылать сообщение в целевую очередь. У принимающего приложения также проверяется право принимать сообщения от целевой очереди.

Свойства безопасности транспорта WCF MSMQ.

MSMQ использует безопасность Windows для проверки подлинности. Используются идентификатор безопасности Windows (SID) для идентификации клиента и служба каталогов Active Directory в качестве центра сертификации при проверке подлинности клиента. Требуется установить MSMQ с интеграцией Active Directory. Поскольку для идентификации клиента используется идентификатор безопасности домена Windows SID, этот вариант обеспечения безопасности имеет смысл, если клиент и служба являются частью одного домена Windows.

MSMQ также предоставляет возможность прикрепить сертификат к сообщению, даже если он не зарегистрирован в Active Directory. В этом случае он обеспечивает проверку подписи сообщения с использованием прикрепленного сертификата.

WCF предоставляет оба варианта в качестве механизма безопасности транспорта MSMQ, что является ключевой основой механизма безопасности транспорта.

По умолчанию безопасность транспорта включена.

С учетом этих основ, следующие разделы дают представление о свойствах безопасности транспорта совместно с NetMsmqBinding и MsmqIntegrationBinding.

Режим проверки подлинности MSMQ

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

Если безопасность транспорта включена, значение по умолчанию — WindowsDomain.

Режим проверки подлинности домена Windows

Выбор использования безопасности Windows требует интеграции с Active Directory. Режим безопасности транспорта по умолчанию – WindowsDomain. Когда это установлено, канал WCF прикрепляет Windows SID к сообщению MSMQ и использует свой внутренний сертификат, полученный от Active Directory. MSMQ использует этот внутренний сертификат для защиты сообщения. Диспетчер принимающей очереди использует Active Directory для поиска и нахождения соответствующего сертификата для проверки подлинности клиента, а также проверки соответствия SID клиенту. Если сертификат прикреплен к сообщению, выполняется этап проверки подлинности, даже если целевая очередь не отмечена как требующая проверки подлинности. В режиме проверки подлинности WindowsDomain происходит внутреннее создание сертификата, в режиме проверки подлинности Certificate происходит внешнее создание сертификата.

ms789030.note(ru-ru,VS.100).gifПримечание
При создании очереди можно указать, что очередь является очередью с проверкой подлинности и требует проверки подлинности клиента, посылающего сообщения в очередь. Это запрещает прием очередью сообщений, не прошедших проверку подлинности.

Прикрепленный к сообщению идентификатор SID также используется для проверки списка ACL целевой очереди, чтобы убедиться в полномочиях клиента отправлять сообщения в очередь.

Режим проверки подлинности сертификата

При выборе режима проверки подлинности сертификата не требуется интеграция с Active Directory. В некоторых случаях, например, когда MSMQ установлена в режиме рабочей группы (без интеграции с Active Directory) или при использовании протокола надежного обмена сообщениями SOAP (SRMP) для передачи сообщений в очередь, работает только Certificate.

При передаче сообщения WCF с Certificate канал WCF не прикрепляет идентификатор Windows SID к сообщению MSMQ. Таким образом, список ACL целевой очереди должен предоставить пользователю Anonymous доступ для передачи в очередь. Диспетчер принимающей очереди проверяет, было ли подписано сообщение MSMQ сертификатом, но не проверяет его подлинность.

Сертификат с утверждениями и удостоверяющими сведениями заполняется в ServiceSecurityContext транспортным каналом очередей WCF. Служба может использовать эту информацию для выполнения собственной проверки подлинности отправителя.

Уровень защиты MSMQ

Уровень защиты определяет, как защищать сообщение MSMQ для предотвращения его подделки. Это задается в свойстве MsmqProtectionLevel. Значение по умолчанию — Sign.

Уровень защиты "Подписать"

Сообщение MSMQ подписывается с использованием созданного внутреннего сертификата, если используется режим проверки подлинности WindowsDomain, или с использованием внешнего созданного сертификата, если используется режим проверки подлинности Certificate.

Уровень защиты "Подписать и зашифровать"

Сообщение MSMQ подписывается с использованием созданного внутреннего сертификата, если используется режим проверки подлинности WindowsDomain, или с использованием внешнего созданного сертификата, если используется режим проверки подлинности Certificate.

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

ms789030.note(ru-ru,VS.100).gifПримечание
Чтобы зашифровать сообщение, требуется доступ к Active Directory (свойству UseActiveDirectory класса NetMsmqBinding должно быть присвоено логическое значение true), и может использоваться как с Certificate, так и WindowsDomain.

Уровень защиты "Отсутствует"

Это используется, когда свойству MsmqProtectionLevel присвоено None. Это не является допустимым значением для любых других режимов проверки подлинности.

ms789030.note(ru-ru,VS.100).gifПримечание
Если сообщение MSMQ подписано, MSMQ проверяет, подписано ли сообщение прикрепленным сертификатом (внутренним или внешним) независимо от состояния очереди (то есть, является очередь очередью с проверкой подлинности или нет).

Алгоритм шифрования MSMQ

Алгоритм шифрования задает алгоритм, используемый в сети для шифрования сообщения MSMQ. Это свойство используется, только если для свойства MsmqProtectionLevel установлено значение EncryptAndSign.

Поддерживаемые алгоритмы: RC4Stream и AES. Значение по умолчанию — RC4Stream.

Алгоритм AES можно использовать, только если отправитель установил MSMQ 4.0. Кроме того, целевая очередь также должна быть размещена на MSMQ 4.0.

Алгоритм хэширования MSMQ

Алгоритм хэширования задает алгоритм, который используется для создания цифровой подписи сообщения MSMQ. Диспетчер принимающей очереди использует тот же алгоритм для проверки подлинности сообщения MSMQ. Это свойство используется, только если для свойства MsmqProtectionLevel установлено значение Sign или EncryptAndSign.

Поддерживаются алгоритмы: MD5, SHA1, SHA256 и SHA512. По умолчанию используется SHA1.

См. также

Другие ресурсы

Message Queuing
Основные понятия безопасности
Защита служб и клиентов