Добавить в цитаты Настройки чтения

Страница 202 из 372

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

Time То Reach Queue

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

Acknowledge

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

Admin Queue

Здесь можно задать так называемую административную очередь, в которую MSMQ будет направлять уведомления, тип которых задан в свойстве Acknowledge.

Arrived Time

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

Journal

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

Priority

Приоритет сообщения учитывается при его маршрутизации и при размещении в очереди.

Response Queue

Здесь можно указать имя очереди на стороне отправителя, в которую он хотел бы получить ответ от получателя сообщения (если, конечно, получатель пожелает отправить ответ).

Message ID

Данный идентификатор формируется автоматически. Получатель сообщения, желающий послать ответ, может указать этот идентификатор в свойстве Correlation ID, связывая тем самым ответ с полученным сообщением.

Correlation ID

При отправке ответа на полученное сообщение здесь следует указать значение свойства Message ID полученного сообщения.

Ряд свойств, приписываемых сообщению, связан с аутентификацией и шифрованием сообщений. Эти вопросы излагаются далее без упоминания имен соответствующих свойств. Предварительно стоить заметить, что эти же вопросы решаются системой безопасности СОМ+, но только для случая синхронных вызовов, т. к. вся система аутентификации, основанная на Kerberos или NT LAN Manager, основана на синхронной коммуникации клиента и сервера. Технология асинхронных компонент требует использования новой системы аутентификации.

Аутентификация позволяет получателю сообщения быть уверенным в том, что данное сообщение послано именно данным отправителем и в процессе передачи в сообщение не были внесены никакие искажения (целостность сообщения). Шифрование сообщения (его тела — Body) позволяет защитить передаваемую информацию от несанкционированного просмотра.

Аутентификация выполняется по запросу отправителя. Соответствующее требование задается в свойстве Auth Level, где определяется и тип электронной подписи, которую следует использовать при аутентификации в зависимости от типа сообщения.

Что делает MSMQ на стороне отправителя при запросе:

♦ Получает сертификат от приложения-отправителя

В простейшем случае, когда сообщение пересылается в рамках одного Windows 2000 домена, используется так называемый внутренний сертификат, включающий SID отправителя и его публичный ключ. Если сообщение пересылается за пределы одного домена, используется так называемый внешний сертификат, содержащий специфичную для конкретного способа аутентификации информацию. В этом случае аутентификация выполняется самим приложением-получателем, а не менеджером очереди назначения, как это происходит при использовании внутреннего сертификата. Далее мы не будем рассматривать этот случай.





Сертификат прикрепляется к сообщению и используется менеджером очереди назначения при аутентификации полученного сообщения. До использования сертификата он должен быть зарегистрирован его владельцем в Active Directory данного домена.

♦ Получает личный ключ отправителя

Этот ключ, конечно, не будет отправляться в сообщении. Он будет использоваться при генерации цифровой подписи, которой будет подписано отправляемое сообщение.

♦ Вычисляет хешированное значение сообщения

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

♦ Формирует цифровую подпись для данного сообщения

Ранее полученное хешированное значение шифруется личным ключом отправителя.

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

Что делает менеджер очереди назначения по получении сообщения:

♦ Вычисляет хешированное значение определенных полей полученного сообщения Используется указанный в этом же сообщении алгоритм,

♦ Извлекает публичный ключ из сертификата, полученного с сообщением, о

♦ Расшифровывает цифровую подпись

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

♦ Сравнивает хешированные значения отправленного и полученного сообщений:

• Хешированные значения равны

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

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

Проблема решается проверкой владельца сертификата в Active Directory. Злоумышленник не может зарегистрировать свой публичный ключ под чужим SID. Это позволяет менеджеру очереди назначения сравнить SID владельца сертификата и SID, включенный в сообщение. Если они совпадают, то аутентификация прошла успешно. В противном случае сообщение уничтожается и отправителю высылается соответствующее уведомление (если он об этом просил).

• Хешированные значения различны

Сообщение уничтожается и отправителю посылается соответствующее уведомление (при наличие его просьбы)

♦ Если сообщение еще не уничтожено, проверяется право отправителя на включение сообщения в данную очередь

При формировании очереди ей приписывается свой ACL — Access Control List. Если известен SID отправителя, то выполняется просмотр списка ACL до тех пор, пока не выяснится, что данный отправитель имеет или не имеет право на включение сообщения в данную очередь. Если SID отправителя не задан, то сообщение будет включено в очередь только при отсутствии каких-либо ограничений на эту операцию в ACL.

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

По запросу отправителя выполняется шифрование тела сообщения. Информация об использованном алгоритме содержится в специальном свойстве сообщения. На стороне отправителя шифровку выполняет либо MSMQ, либо приложение-отправитель. На стороне получателя расшифровку выполняет менеджер очереди назначения, и в очередь сообщение включается уже в расшифрованном виде.