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

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

Примечание.

Перед чтением этой статьи рекомендуется прочитать основные понятия безопасности.

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

Queued Application Diagram

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

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

Безопасность транспорта с использованием 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 к сообщению MSMQ и использует его внутренний сертификат, полученный из Active Directory. MSMQ использует этот внутренний сертификат для защиты сообщения. Диспетчер принимающей очереди использует Active Directory для поиска и нахождения соответствующего сертификата для проверки подлинности клиента, а также проверки соответствия SID клиенту. Если сертификат прикреплен к сообщению, выполняется этап проверки подлинности, даже если целевая очередь не отмечена как требующая проверки подлинности. В режиме проверки подлинности WindowsDomain происходит внутреннее создание сертификата, в режиме проверки подлинности Certificate происходит внешнее создание сертификата.

Примечание.

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание.

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

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

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

Примечание.

Если сообщение 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.

Из-за проблем с конфликтом с MD5/SHA1 корпорация Майкрософт рекомендует SHA256 или лучше.

См. также