Введение

Синтаксис XML для цифровых подписей. XML Signature (также называемый XMLDSig, XML DSig, XML Sig) определяет синтаксис XML для цифровых подписей и описан в рекомендациях W3C «Синтаксис и обработка XML-подписей». По функциональности он во многом схож с PKCS #7, но обладает большей расширяемостью и предназначен для подписи XML-документов. Он используется различными веб-технологиями, такими как SOAP, SAML и другие. Подписи XML могут использоваться для подписания данных – ресурсов любого типа, обычно XML-документов, но можно подписывать любой ресурс, доступный по URL. XML-подпись, используемая для подписания ресурса вне содержащего его XML-документа, называется отсоединенной подписью; если она используется для подписания части содержащего документа, она называется встроенной подписью; если она содержит подписанные данные внутри себя, она называется охватывающей подписью.

Валидация и вопросы безопасности

При проверке подлинности XML-подписи применяется процедура, называемая Core Validation. Валидация ссылок: Дайджест каждой ссылки проверяется путем извлечения соответствующего ресурса, применения к нему любых преобразований и последующего применения указанного метода дайджестирования. Результат сравнивается с записанным значением DigestValue; если они не совпадают, проверка не проходит. Валидация подписи: Элемент SignedInfo сериализуется с использованием метода канонизации, указанного в CanonicalizationMethod, ключевые данные извлекаются с помощью KeyInfo или другими способами, а подпись проверяется с использованием метода, указанного в SignatureMethod. Эта процедура устанавливает, действительно ли ресурсы были подписаны предполагаемой стороной. Однако, из-за расширяемости методов канонизации и преобразований, проверяющая сторона также должна убедиться, что то, что было фактически подписано или дайджестировано, действительно соответствует исходным данным, иными словами, что используемым алгоритмам можно доверять и они не изменяют смысл подписанных данных. Поскольку структуру подписанного документа можно изменить, что приводит к атакам типа "обертывание подписи", процесс проверки также должен охватывать структуру XML-документа. Подписанный элемент и элемент подписи должны выбираться с использованием абсолютного XPath-выражения, а не методов getElementByName. Также следует учитывать пригодность канонизации XML, в частности, в качестве фронтенда для подписи и шифрования данных XML из-за ее сложности, присущих требований к обработке и недостаточной производительности. Утверждается, что выполнение канонизации XML вызывает чрезмерную задержку, которую сложно преодолеть для транзакционных SOA-приложений, критичных к производительности. Эти вопросы рассматриваются в рабочей группе по безопасности XML. Без надлежащей политики и реализации использование XML Dsig в SOAP и WS-Security может привести к уязвимостям, таким как обертывание XML-подписи.