Что такое канонизация в xml-подписи? - PullRequest
2 голосов
/ 03 апреля 2012

Что такое тег канонизации, который используется в xml-подписях.Он присутствует в элементе <signed info>.Я просмотрел различные документы по сети.Но все они слишком абстрактны для меня, чтобы понять.Было бы полезно, если бы кто-нибудь мог объяснить, что должно содержаться в теге канонизации и как его использовать?
У меня также есть сомнения в элементе <signature value>.Что содержит подпись?

1 Ответ

7 голосов
/ 03 апреля 2012

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

-> Ключевое слово: Целостность :

Проблема:

XML предлагает несколько допустимых способов структурировать одни и те же (входные) данные, например:

  1. <a>1</a><!--comment--> <b></b>
  2. <a>1</a><b/>

Это делает невозможным создание определяемого хэша подписи, что необходимо для работающей проверки подписи. Например, хэш MD5 в обоих приведенных выше XML-примерах может привести к полному разному хешу результатов, хотя оба примера предоставляют одинаковые действительные данные в XML-форме (они семантически идентичны).

Решение: Вот где начинается канонизация XML (c14n): Сообщение форматируется (канонизируется) отправляющей стороной (клиентом), а также после приема на стороне получателя (сервера), так что хэш не изменяется для тех же данных (на уровне XML).

Полагаю, вам просто любопытно на этот счет, потому что обычно вам не следует об этом заботиться, так как libs (XMLDSig-libs, WS-Security-libs, ..) занимаются этим за кулисами.

По второму вопросу: Элемент SignatureValue содержит результат подписи в кодировке Base64 элемента SignedInfo.

...