Открыть сервис

XML Encryption

XML Encryption — это спецификация и технология, разработанная Консорциумом Всемирной паутины (W3C), которая определяет процесс шифрования данных, представленных в формате XML (Extensible Markup Language), и их последующую передачу в зашифрованном виде в составе XML-документов. Стандарт позволяет шифровать как весь документ целиком, так и отдельные его элементы (например, конкретные теги или атрибуты), сохраняя структуру и читаемость остальной части документа. XML Encryption является частью семейства стандартов безопасности XML, наряду с XML Signature (цифровая подпись) и SAML (язык разметки для утверждений безопасности).

История

Разработка XML Encryption началась в 2000 году в рамках деятельности рабочей группы W3C по безопасности XML. Первая версия спецификации «XML Encryption Syntax and Processing» была опубликована в качестве рекомендации W3C 10 декабря 2002 года. Основной целью создания стандарта была необходимость обеспечить конфиденциальность данных при обмене XML-сообщениями в распределённых системах, таких как веб-сервисы, электронная коммерция и системы управления документами. В 2013 году вышла вторая версия спецификации (XML Encryption 1.1), которая уточнила алгоритмы шифрования и исправила уязвимости, выявленные в первой версии. Стандарт остаётся актуальным, хотя в современных реализациях часто вытесняется более новыми протоколами, такими как JSON Web Encryption (JWE) и Transport Layer Security (TLS).

Принцип работы

XML Encryption основан на симметричном и асимметричном шифровании. Процесс включает несколько этапов:

  1. Выбор данных для шифрования. Определяется, какой элемент или часть документа XML будет зашифрована. Это может быть весь документ, отдельный элемент (например, <data>...</data>) или его содержимое (текстовый узел).
  2. Генерация ключа. Создаётся случайный симметричный ключ (сеансовый ключ), который используется для шифрования данных.
  3. Шифрование данных. Симметричный ключ применяется к выбранным данным с использованием одного из алгоритмов (например, AES-128-CBC или AES-256-GCM).
  4. Шифрование ключа. Симметричный ключ шифруется асимметричным алгоритмом (например, RSA-OAEP) или с помощью другого симметричного ключа.
  5. Формирование зашифрованного документа. Результат шифрования вставляется в XML-документ в виде специального элемента <EncryptedData>, который содержит метаданные (алгоритм, ссылки на ключи) и зашифрованные данные.

Структура элемента <EncryptedData>

Элемент <EncryptedData> является основным контейнером для зашифрованных данных. Он включает следующие дочерние элементы:

  • <EncryptionMethod> — указывает алгоритм шифрования (например, http://www.w3.org/2001/04/xmlenc#aes128-cbc`).
  • <KeyInfo> — содержит информацию о ключе (может включать сертификат, имя ключа или зашифрованный ключ).
  • <CipherData> — содержит зашифрованные данные в виде base64-кодированной строки внутри элемента <CipherValue>.
  • <EncryptionProperties> — необязательный элемент для дополнительных свойств (например, дата шифрования).

Пример зашифрованного документа: ``xml <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">; <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/>; <KeyInfo> <EncryptedKey> <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p"/>; <CipherData> <CipherValue>Base64EncryptedKey</CipherValue> </CipherData> </EncryptedKey> </KeyInfo> <CipherData> <CipherValue>Base64EncryptedData</CipherValue> </CipherData> </EncryptedData> ``

Классификация

XML Encryption можно классифицировать по нескольким признакам:

По объёму шифрования

  • Шифрование всего документа — весь XML-документ преобразуется в зашифрованный вид, а его структура теряется. Применяется редко, так как затрудняет обработку.
  • Шифрование отдельных элементов — шифруются только определённые теги (например, <creditCard> или <password>), остальная часть документа остаётся читаемой. Это позволяет сохранять структуру и обрабатывать незашифрованные части.
  • Шифрование содержимого элемента — шифруется только текст внутри элемента, а сам элемент остаётся видимым. Например, <name>ЗашифрованныйТекст</name>.

По типу используемых алгоритмов

  • Симметричное шифрование — используется один ключ для шифрования и расшифровки. Поддерживаемые алгоритмы: AES (128, 192, 256 бит), Triple DES (3DES), Camellia.
  • Асимметричное шифрование — используется пара ключей (открытый и закрытый). Применяется для шифрования сеансового ключа. Поддерживаемые алгоритмы: RSA (с OAEP или PKCS#1 v1.5), Elliptic Curve Cryptography (ECC).
  • Гибридное шифрование — комбинация симметричного и асимметричного шифрования, как описано выше.

Применение

XML Encryption используется в различных областях, где требуется конфиденциальность данных при передаче через XML-протоколы:

  • Веб-сервисы (SOAP) — в протоколах WS-Security (веб-сервисы безопасности) для шифрования частей SOAP-сообщений, содержащих конфиденциальные данные (например, номера кредитных карт, логины и пароли).
  • Системы управления документами — для шифрования отдельных полей в XML-документах, таких как подписи, даты или личные данные.
  • Электронная коммерция — при обмене заказами и платежными данными между системами.
  • Системы единого входа (SSO) — в протоколах SAML для шифрования утверждений (assertions) и атрибутов пользователя.
  • Электронный документооборот — для защиты конфиденциальных частей документов, передаваемых между организациями.

Критика и ограничения

Несмотря на широкое распространение, XML Encryption имеет ряд недостатков:

  • Сложность реализации. Стандарт требует корректной обработки пространств имён, алгоритмов и форматов, что может привести к ошибкам в реализации.
  • Уязвимости. В 2011 году была обнаружена атака «Padding Oracle Attack» на режим шифрования CBC, используемый в XML Encryption. Это привело к выпуску версии 1.1, которая рекомендовала использовать более безопасные режимы (например, GCM).
  • Производительность. Шифрование и расшифровка XML-документов требует дополнительных вычислительных ресурсов, особенно при работе с большими объёмами данных.
  • Совместимость. Разные реализации XML Encryption могут по-разному интерпретировать спецификацию, что приводит к проблемам совместимости между системами.

Связь с другими стандартами

XML Encryption тесно связан с другими стандартами безопасности XML:

  • XML Signature — используется для цифровой подписи XML-документов. Часто применяется совместно с XML Encryption для обеспечения как конфиденциальности, так и целостности данных.
  • XML Key Management Specification (XKMS) — протокол для управления ключами шифрования, который может использоваться для обмена ключами в XML Encryption.
  • WS-Security — набор расширений для SOAP, который включает XML Encryption и XML Signature для защиты веб-сервисов.

Источники

  • W3C Recommendation «XML Encryption Syntax and Processing» (2002)
  • W3C Recommendation «XML Encryption 1.1» (2013)
  • Спецификация WS-Security (OASIS)
  • RFC 4051 — Additional XML Security Uniform Resource Identifiers (URIs)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →