Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Технічні рішення щодо захисту web-серверів.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
624.13 Кб
Скачать

5.9. Шифрування xml

Специфікація шифрування XML задовольняє вимогам конфіденційності XML-повідомлень. Ця специфікація дозволяє реалізувати наступну функціональність:

  • шифрування цілого XML-файла;

  • шифрування будь-якого окремого елементу XML-файла;

  • шифрування тільки змісту XML-файла;

  • шифрування даних, відмінних від XML (наприклад, малюнка JPG);

  • шифрування вже зашифрованого елементу (“супер шифрування”).

5.9.1. Шифрування цілого xml-файла

Лістинг 6 - це приклад шифрування цілого XML-файла. При цьому початковий XML-документ не показаний, оскільки він не потрібний, оскільки шифрування XML-файла своїм результатом має таку ж XML-структуру - за винятком зашифрованої величини, ув’язненої в елементі CipherValue.

Лістинг 6

<?xml version='1.0'?> <EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" MimeType="text/xml"> <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/> <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:KeyName>MyKeyIdentifier</ds:KeyName> </ds:KeyInfo> <CipherData> <CipherValue>B457V645B45........</CipherValue> </CipherData> </EncryptedData>

Кореневий елемент EncryptedData несе зашифровані дані разом з такою необхідною інформацією, як алгоритм, використовуваний для шифрування. Цей елемент містить оголошення простору імен шифрування XML (http://www.w3.org/2001/04/xmlenc#) і атрибут MimeType, значення якого рівне text/xml. По цьому атрибуту одержувач цього зашифрованого XML-файла може зрозуміти, що XML-файл був зашифрований, щоб створити структуру EncryptedData.

Перший нащадок кореневого елементу - елемент EncryptionMethod. Цей елемент містить атрибут Algorithm, який визначає алгоритм, використаний при шифруванні. Його значення рівне http://www.w3.org/2001/04/xmlenc#3des-cbc, що визначає алгоритм потрійної DES (Data Encryption Standard, Стандарт шифрування даних).

Елемент ds:KeyInfo той же самий, що і той, який використовувався при застосуванні специфікації “Цифровий підпис XML”. Необхідно відзначити, що цей елемент був запозичений з простору імен цифрового підпису XML.

Елемент EncryptedData містить ще один дочірній елемент - CipherData, у якого у свою чергу є дочірній елемент CipherValue. Цей елемент CipherValue несе зашифрований зміст (зашифровану версію XML-документа). Таким чином, результатом шифрування XML-файла є зміст елементу CipherValue.

5.9.2. Шифрування окремого елементу

Як було сказано вище, структура EncryptedData несе зашифровані дані разом з необхідною інформацією. У основі шифрування одиночного елементу XML-файла лежить аналогічний підхід. Лістинг 7, в якому зашифрований елемент GetSpecialDiscountedBookingForPartners з Лістингу 1 отриманий простій заміною елементом EncryptedData.

Лістинг 7

<?xml version=”1.0”?> <SOAP-ENV:Envelope xmlns:SOAP-ENV=”http://schemas.xmlsoap.org/soap/envelope/”> <SOAP-ENV:Body> <xenc:EncryptedData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Element"> <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/> <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <ds:KeyName>MyKeyIdentifier</ds:KeyName> </ds:KeyInfo> <xenc:CipherData> <xenc:CipherValue>B457V645B45........</xenc:CipherValue> </xenc:CipherData> </xenc:EncryptedData> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

Порівняємо елемент EncryptedData з Лістингу 6 з елементом EncryptedData з Лістингу 7. Неважко побачити, що є одна відмінність: замість атрибуту MimeType Лістингу 6 в Лістингу 7 з'явився атрибут Type. Значення цього атрибуту рівне http:///www.w3.org/2001/04/xmlenc#Element, що означає, що зашифрований XML-элемент.

Таким чином, при шифруванні елементу XML-файла слід використовувати ідентифікатор http:///www.w3.org/2001/04/xmlenc#Element як значення атрибуту Type. В цьому випадку одержувач зашифрованого XML-файла знатиме, що зашифровані дані повинні інтерпретуватися як XML-елемент в розшифрованій простій текстовій формі.