Предмет:
Тип роботи:
Дипломна робота
К-сть сторінок:
66
Мова:
Українська
реалізують "Цифровий підпис XML". Наприклад, ідентифікатор ключа в Лістінгу 5 (MyKeyIdentifier) може ідентифікувати загальний секретний ключ (симетричний ключ), яким вже обмінювалися туроператор і готель.
Лістінг 5
<?xml version=”1.0”?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV=”http://schemas.xmlsoap.org/soap/envelope/”
xmlns:ds=”http://www.w3.org/2000/09/xmldsig#”>
<SOAP-ENV:Header>
<ds:Signature>
<ds:SignedInfo>
<ds:CanonicalizationMethod
Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod
Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<ds:Reference URI="#GetSpecialDiscountedBookingForPartners">
<ds:Transforms>
<ds:Transform
Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod
Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<ds:DigestValue>
BIUddkjKKo2...
</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>
halHJghyf765....
</ds:SignatureValue>
<ds:KeyInfo>
<ds:KeyName>MyKeyIdentifier</ds:KeyName>
</ds:KeyInfo>
</ds:Signature>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<s:GetSpecialDiscountedBookingForPartners
xmlns:s=“http://www.MyHotel.com/partnerservice/”
ID="GetSpecialDiscountedBookingForPartners">
<!--Parameters passed with the method call-->
</s:GetSpecialDiscountedBookingForPartners>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Крім того, елемент KeyInfo - необов'язковий: його можна як включати, так і не включати в підпис. Цей елемент є необов'язковим, тому що під час підписання, можливо, може не знадобитися включати інформацію про ключ у файл із цифровим підписом XML. Елемент KeyInfo може також використовуватися при шифруванні XML, про що буде розказано в наступному розділі.
Ці чотири кроки - проста демонстрація застосування специфікації "Цифровий підпис XML". Лістінг 5 - повне SOAP-повідомлення, що у своєму заголовку несе дані про цілісність повідомлення і користувальницької автентифікації.
Розглянемо, як обробляється заголовок повідомлення, представленого в Лістінге 5, на стороні Web-сервісу організації.
3.2.1 Перевірка цифрового підпису XML
Процедура перевірки проста і логічно може бути виведена з методики формування цифрового підпису XML, розглянутої вище. Вона розпадається на три етапи.
По-перше, необхідно канонізувати елемент SignedInfo. Нагадаємо, що елемент CanonicalizationMethod встановлює алгоритм канонізації. Тому варто скористатися цією канонічною формою елемента SignedInfo для частини процесу, що залишилася, перевірки.
По-друге, необхідно проконтролювати цілісність повідомлення, перевіривши дайджест, що знаходиться в елементі Reference, сформованому раніше, на кроці 2. При перевірці дайджесту потрібно мати інформацію, що включає:
1.Дані, по яких побудований дайджест. Випливає, що розіменовувати атрибут Reference елемента, щоб одержати ці дані.
2.Будь-які трансформації, що можуть застосовуватися до цих даних до запуску алгоритму профілю. В елементі Transforms утримується ця інформація. Перш ніж одержувати дайджест даних, необхідно застосувати до них ті ж трансформації.
3.Алгоритм дайджесту. Ця інформація знаходиться в значенні атрибута Algorithm елемента DigestMethod. Необхідно застосувати цей дайджест повідомлення і перевірити, чи не відрізняється значення дайджесту від тієї, що утримується в елементі DigestValue.
Якщо перевірка дайджесту приводить до негативного результату, то процес перевірки закінчується і вважається незадовільним.
Якщо з'ясовується, що з величиною профілю усі в порядку, настає черга третього етапу - перевірки підпису. Для перевірки підпису необхідний ключ сторони, що підписала, (відкритий або загальний секретний). Інформацію про ключ можна одержати з елемента KeyInfo, якщо він присутній (або якщо додаткові уже відомий така інформація). Як тільки ключ, використовуваний при перевірці підпису, відомий, потрібно прочитати метод підпису, що застосовувався при створенні цього підпису. Атрибут Algorithm елемента SignatureMethod містить цю інформацію. Після чого варто скористатися канонічною формою елемента SignedInfo і ключем, щоб підтвердити величину підпису.
При реалізації специфікації "Цифровий підпис XML" можна створювати заголовки SOAP для генерації підписаних SOAP-повідомлень. Брандмауер XML, що знаходиться на стороні одержувача, обробляє цей заголовок SOAP, щоб перевірити підпису перш ніж переслати запит на SOAP-сервер. Задача забезпечення безпеки може бути досягнуті в такий спосіб:
Можна перевірити, що отримане SOAP-повідомлення було дійсно відправлене відомим відправником.
Можна перевірити, що отримані дані не