Безопасность и Internet - статьи

       

Проверка цифровой подписи XML


Процедура проверки проста и логически может быть выведена из методики формирования цифровой подписи XML, рассмотренной выше. Она распадается на три этапа.

Во-первых, необходимо канонизировать элемент SignedInfo. Напомним, что элемент CanonicalizationMethod устанавливает алгоритм канонизации. Поэтому следует воспользоваться этой канонической формой элемента SignedInfo для оставшейся части процесса проверки.

Во-вторых, необходимо проконтролировать целостность сообщения, проверив дайджест, который находится в элементе Reference, сформированном ранее, на шаге 2. При проверке дайджеста нужно располагать информацией, которая включает:

  • Данные, по которым построен дайджест. Следует разыменовывать атрибут Reference элемента, чтобы получить эти данные.
  • Любые трансформации, которые могут применяться к этим данным до запуска алгоритма профиля. В элементе Transforms содержится эта информация. Прежде чем получать дайджест данных, необходимо применить к ним те же трансформации.
  • Алгоритм дайджеста. Эта информация находится в значении атрибута Algorithm элемента DigestMethod. Необходимо применить этот дайджест сообщения и проверить, не отличается ли значение дайджеста от той, что содержится в элементе DigestValue.
  • Если проверка дайджеста приводит к отрицательному результату, то процесс проверки заканчивается и считается неудовлетворительным.

    Если выясняется, что с величиной профиля все в порядке, наступает очередь третьего этапа - проверки подписи. Для проверки подписи необходим ключ подписавшей стороны (открытый или общий секретный). Информацию о ключе можно получить из элемента KeyInfo, если он присутствует (или если приложению уже известна такая информация). Как только ключ, используемый при проверке подписи, известен, нужно прочитать метод подписи, который применялся при создании этой подписи. Атрибут Algorithm элемента SignatureMethod содержит эту информацию. После чего следует воспользоваться канонической формой элемента SignedInfo и ключом, чтобы подтвердить величину подписи.


    При реализации спецификации " Цифровая подпись XML" можно создавать заголовки SOAP для генерации подписанных SOAP-сообщений. Брандмауэр XML, находящийся на стороне получателя, обрабатывает этот заголовок SOAP, чтобы проверить подписи прежде чем переслать запрос на SOAP-сервер. Данный процесс представлен на рисунке 1. Задача обеспечения безопасности может быть достигнуты следующим образом:

  • Можно проверить, что полученное SOAP-сообщение было действительно отправлено известным отправителем.


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


  • Таким образом, касаясь нашего примера, можно быть уверенным, что запрос о резервировании по специальной цене со скидкой был оправлен действительно партнером, и что эти данные не были изменены, пока они передавались. Тем не менее, возможно ситуация, когда данные, передаваемые по Интернет, могут быть просмотрены хакерами. Рассмотрим, как эта проблема может быть решена с помощью спецификации "Шифрование XML".


    Содержание раздела