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



         

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


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

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

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

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

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




    Содержание  Назад  Вперед