Аудіотехніка

Як підписати xml електронним підписом Як підписати документ електронним підписом. Як підписати документ Word за допомогою ЕЦП

На сьогоднішній день, коли майже весь документообіг стає безпаперовим, підписання документів за допомогою — звичайна справа.

У сфері державних закупівель електронним підписом підписують подані заявки. Це дає замовникам гарантію, що вони мають справу із реальними учасниками. Також контракти, які укладаються за підсумками держзакупівель, набувають чинності лише після візування за допомогою ЕЦП.

Також цифровий підпис необхідний у таких ситуаціях:

  1. Звітність контролюючих органів. Можна здати її в електронному вигляді таким службам, як ФНП, Росстат, ПФР та ФСС. Це значно спрощує передачу інформації та підвищує правильність: більшість сервісів пропонують автоматичну перевірку на помилки.
  2. Електронний документообіг (ЕДО). Одне з найпоширеніших застосувань, оскільки підписаний у такий спосіб лист відповідає паперовому з печаткою та візою. Дозволяє перейти на безпаперовий документообіг як усередині компанії, так і за її межами.
  3. Державні послуги Громадянин РФ може візувати заяви, що подаються, у відомства через портал держпослуг, брати участь у громадських ініціативах, користуватися особистим кабінетомна сайті ФНП, навіть оформляти кредит.
  4. Як докази можна використовувати рахунок-фактури, договори, офіційні листи, підписані електронно. Відповідно до АПК РФ, такий документ є аналогом паперового із власноручною візою.

Які бувають електронні підписи

ЕЦП — це «штамп», який дозволяє ідентифікувати її власника, а також упевнитися в цілісності підписаного документа. Типи ЕЦП та порядок їх оформлення затверджено. Він встановив, що підписи бувають трьох видів:

  1. Проста. Поширена для підписання листів або специфікацій, що підтверджується з використанням паролів, кодів та інших засобів, найчастіше використовується в системах корпоративного ЕДО.
  2. Посилена. Виходить у процесі криптографічної обробки інформації та використання закритого ключа. Дозволяє встановити хто підписав документ, а також факт внесення змін після підписання.
  3. Посилена. Аналогічна некваліфікованої, але для її створення та перевірки використовуються напрацювання криптозахисту, сертифіковані ФСБ РФ. Такі ЕП видаються лише акредитованими

Завізувати документ можна кількома способами. Розглянемо найпоширеніші.

Підписуємо за допомогою програмного комплексу «КриптоПРО CSP»

Як підписати електронним підписом документ Ворд(MS Word)

1. Відкриваємо потрібний файл, тиснемо в меню "Файл" - "Відомості" - "Додати електронний підпис (КРІПТО-ПРО)".

2. Вибираємо потрібну ЕП, додаємо коментар, якщо потрібно, і тиснемо "Підписати".

3. Якщо немає помилок, система показує вікно з успішним підписанням.

Якщо встановлено плагін КриптоПРО Office Signature

1. Відкриваємо потрібний файл, вибираємо "Файл", потім - "Додати цифровий підпис".

2. Аналогічно попередньому варіанту, вибираємо необхідну ЕП, додаємо, якщо потрібен, коментар і тиснемо «Підписати».

3. Якщо немає помилок, система показує повідомлення, що документ успішно підписано.

Як підписати електронним підписом документ PDF(Adobe Acrobat PDF)

1. Відкриваємо необхідний PDF-файл, натискаємо на панелі «Інструменти» та бачимо ярлик «Сертифікати». Вибираємо його.

2. Натискаємо на «Поставити цифровий підпис» і вибираємо область на файлі, де розміщуватиметься позначка про підписання.

4. Відкриється вікно із попереднім виглядом штампу. Якщо все правильно, то натискаємо «Підписати».

5. Система видасть сповіщення про успішне підписання. На цьому все.

Підписання програмним комплексом «КриптоАРМ»

При такому способі можна шифрувати всі сучасні формати, а також архіви.

Отже, розберемося, як підписати документ ЕЦПза допомогою "КриптоАРМ".

1. Відкриваємо програму «КриптоАРМ» і вибираємо перший пункт дій — «Підписати».

2. Уважно вивчаємо інструкцію Майстра створінь ЕП. Натискаємо "Далі".

3. Тиснемо на "Вибір файлу", переходимо до потрібного файлу, клацаємо по ньому і тиснемо "Далі".

4. Вибираємо файл, що підписується, натискаємо «Далі».

5. Бачимо вікно "Вихідний формат". Якщо немає обов'язкових вимог, кодування залишаємо як є. Можна зберегти у форматі ZIP (для відправки по e-mail) або вибрати місце збереження кінцевого результату. Тиснемо «Далі».

6. У «Параметрах» можна вибрати властивість, додати коментар, а також вибрати приєднану ЕП (приєднується до вихідний файл) або від'єднану (зберігається окремим файлом), а також додаткові параметриза бажанням. Коли все готово, тиснемо "Далі".

7. Тепер необхідно вибрати сертифікат, для цього тиснемо "Вибрати", вказуємо необхідний сертифікат і тиснемо "Далі".

8. На наступному етапі бачимо підсумкове вікно з коротким описомданих. Якщо наступного разу файли підписуватимуться в такому самому порядку, можна зберегти профіль. Тиснемо «Готово».

9. Якщо немає помилок, система видасть повідомлення про успішне підписання.

У даному розділі пропонується для завантаження програми XML Конвертер / XML Конструктор / XML Звіти / Просто Підписати / XML Контакт — Росреєстр.

Приклади формування електронних версій документів за допомогою програми XML Конструкторта їх друкованих аналогів за допомогою програми XML Звітиможна завантажити у розділі . Також пропонуємо подивитися розділ , в якому ви знайдете різні безкоштовні утиліти, бібліотеки та інше.

Програма XML Конвертернастроєна для перетворення XML-файлів/документів Росреєстру таких як кадастрові виписки, кадастрові плани території на інші, зручні для використання формати, такі як MIF/MID, DXF, CSV, TXT, HTML.

Програма XML Конструкторнастроєна на створення електронних версій у форматі XML, таких документів для кадастрової діяльності як межові плани, технічні плани, карта(план) та ін., а також повідомлень про заставу рухомого майна та повідомлень згідно із законом FATCA.

Програма XML Звітинастроєна на перетворення електронних документів для кадастрової діяльності, таких як межові плани, технічні плани, карта(план) у відповідні друковані (паперові) аналоги.

Програма Просто Підписатипризначена для створення та перевірки електронних цифрових підписів (ЕЦП).

Програма XML Контакт-Росреєстрпризначена взаємодії з веб-сервісом Росреєстру, тобто. створення заяв на постановку на кадастровий облік земельних ділянок та об'єктів нерухомості, запитів відомостей кадастру, отримання результатів за даними заявами та запитами.

Усі програми (крім Просто Підписати та XML Контакт-Росреєстр) мають демонстраційний режим тривалістю 30 днів, що дозволяє використовувати функціонал програм без обмежень. Після закінчення періоду дії демонстраційного режиму потрібно придбати повні версії програм, або припинити їх використання. Програма Просто Підписати є безкоштовною програмоюта не має обмежень у використанні. Програма XML Контакт-Росреєстр знаходиться на стадії бета-тестування і в даний час її використання безкоштовно.

ВАЖЛИВО! Для перетворення за допомогою програми XML Конвертерабо XML Конструктор XML файлів великого розміру потрібно завантажити та встановити зовнішній обробник запитів XQuery та перед перетворенням вказувати його у відповідному полі програми. В даний час підтримується два вільно розповсюджуваних обробники запитів AltovaXML 2010 (розробник www.altova.com) та Saxon-HE 9.5 (розробник www.saxonica.com). Завантажити їх можна з сайту виробника або з даного сайту за наведеними нижче посиланнями:

ВАЖЛИВО! Перед тим як розпочати роботу з програмами необхідно ознайомитися з інструкціями. Особливо це важливо для програми XML Конструктор, тому що перед роботою необхідно зрозуміти принцип роботи цієї програми. Інструкції знаходяться в тій же папці, що і виконавчий файл програми, тобто для XML Конструктора в папці "c: ProgramFiles XML CON XML Constructor XML Constructor-help.rtf". Викликати інструкцію можна через ярлик головного меню програм Windows, Т. е. для XML Конструктора «Пуск->Програми->XMLКонструктор->XML Конструктор - Інструкція». Для програми XML Конструктор інструкція також доступна за допомогою меню Довідка.

ML, або мова розмітки, що розширюється (eXtensible Markup Language), в даний час стає стандартним способом транспортування інформації в Web (і не тільки). Більше того, з'являються нові та нові надбудови, в яких застосовується синтаксис XML (XML-додатки). Наприклад, до таких відноситься спрощений протокол доступу до об'єктів SOAP (Simple Object Access Protocol), в якому XML виступає як універсальний засіб представлення параметрів виклику віддалених процедур RPC (Remote Procedure Call). Іншим прикладом надбудови є оболонка опису ресурсів RDF (Resource Description Framework). Можна заглянути на сайт консорціуму World Wide Web (W3C), який розробляє стандарти в цій галузі (http://www.w3.org/), і переконатися, що мові XML дійсно приділяється особлива увага.

Нагадаємо, що основним призначенням XML є опис структури та семантики документа. Основною перевагою XML, порівняно з іншими форматами електронних документів, є те, що в ньому опис зовнішнього подання документа відокремлений від структури документа та його змісту. XML є гнучкою мовою, яку можна використовувати для різних цілей, при цьому він здатний забезпечити взаємодію з багатьма системами та базами даних. Таким чином, вже сьогодні XML використовується в багатьох інформаційних системахяк основний формат обміну даними. Більш того, потужний крок назустріч XML зробили виробники систем керування базами даних. Наприклад, Oracle випустила утиліту XSU (XML-SQL Utility), яка є надбудовою над JDBC, що дозволяє зберігати XML-дані в базі даних і витягувати їх звідти (http://otn.oracle.com/tech/xml/xdk_java/content .html). XSU є ієрархією Java-класів, призначену для трансформації даних з таблиць і уявлень (views) об'єктно-реляційної бази даних у формат XML, вставки даних з XML-документів у таблиці та подання та інших корисних операцій.

Потреба захисту XML-документів

ML - потужний засіб, що часто застосовується для обміну даними через Інтернет. Але, на жаль, саме собою воно не забезпечує необхідний захист даних, які «перевозить». Іншими словами, існують серйозні проблеми безпеки при застосуванні формату XML (як, втім, і під час використання інших форматів).

XML може бути легко використаний для передачі повідомлень-транзакцій між банком і банкоматом, конфіденційних або напівконфіденційних відомостей про фізичних осіб, відомостей про електронні угоди або просто для передачі закритих документів у цьому форматі. Але при цьому потрібно забезпечити захист інформації від мимовільних чи навмисних спотворень як з боку користувачів інформаційних систем, так і під час передачі каналами зв'язку. Захист має бути заснований на виконанні наступних функцій:

  • аутентифікації сторін, що взаємодіють;
  • підтвердження справжності та цілісності інформації;
  • криптографічному закритті переданих даних.

Для забезпечення зазначеного захисту інформації доцільно застосовувати методи електронного цифрового підпису (ЕЦП) та шифрування даних. Причому, як правило, ЕЦП забезпечує аутентифікацію, підтвердження справжності та цілісності, а закриття даних досягається шифруванням.

Загальні відомості про електронний цифровий підпис

ЕЦП та можливість її підробки

Електронний цифровий підпис - це дані, що додаються до вихідного блоку інформації (документу), отримані в результаті його криптографічного перетворення (залежного від секретного ключа та вихідного блоку інформації або документа). ЕЦП забезпечує цілісність повідомлень (документів) з гарантованою ідентифікацією її автора (особи, яка підписала документ), що передаються найчастіше незахищеними телекомунікаційними каналами загального користування.

Перевірка електронного цифрового підпису блоку інформації проводиться шляхом криптографічного перетворення ЕЦП за допомогою відповідного секретного ключа відкритого ключа, що брало участь у процесі встановлення ЕЦП.

Неможливість підробки електронного цифрового підпису досягається за допомогою дуже великого обсягу математичних обчислень (наприклад, неможливість підробки підпису може бути обумовлена ​​складністю розв'язання задачі дискретного логарифмування в полі з р елементів схема підпису Ель-Гамаля). Проставлення підпису під документом не змінює самого документа, а лише дає можливість перевірити справжність та авторство отриманої інформації (тобто в сам документ або окремо від нього додається блок даних ЕЦП цього документа).

Центр сертифікації

Вище ми згадували терміни «секретний ключ» та «відкритий ключ». Звідки взялися ці ключі? Їх формує центр сертифікації деяка структура (організація), яка займається управлінням сертифікатами. Сертифікат відкритого/закритого ключа є такою сукупністю даних:

  • ім'я суб'єкта або об'єкта системи, що однозначно ідентифікує його в системі;
  • відкритий/закритий ключ суб'єкта чи об'єкта системи;
  • додаткові атрибути, які визначаються вимогами використання сертифіката в системі;
  • електронний цифровий підпис видавця (центру сертифікації), що засвідчує сукупність цих даних.

Таким чином, наприклад, сертифікат закритого ключа містить закритий ключ і додаткові відомості до нього.

Кожному зареєстрованому користувачу інформаційної системи сертифікаційний центр (СЦ) формує два сертифікати - сертифікат закритого ключа та сертифікат відкритого ключа. При цьому перший СЦ видає особисто в руки зареєстрованому користувачеві (наприклад, на дискеті) і нікому іншому це і є «підпис». Другий сертифікат - відкритий - СЦ публікує в загальнодоступному сховищі, щоб будь-який зацікавлений міг легко його знайти.

Формування та перевірка ЕЦП

Відправник інформації за допомогою секретного ключа та заздалегідь обраного за домовленістю між абонентами асиметричного алгоритму (алгоритму ЕЦП) шифрує передану інформацію, представлену в цифровому вигляді, і таким чином отримує цифровий підпис даних. Далі відправник інформації з відкритого каналу зв'язку посилає незашифровану інформацію та отриманий вищеописаним способом цифровий підпис одержувачу.

Отримувач повідомлення за допомогою відкритого ключа (який загальнодоступний) та обраного за домовленістю між абонентами алгоритму ЕЦП розсекречує цифровий підпис. Далі він порівнює прийняту ним незашифровану інформацію та інформацію, отриману під час розшифрування цифрового підпису. Якщо цифровий підпис не був підроблений і відкрита інформація, що передається, не спотворена, то ці дві інформації повинні повністю збігтися. Якщо підпис підроблено, то прийнята відкрита інформація та інформація, отримана при дешифруванні, істотно відрізнятимуться (рис. 1).

Хеш-функції

У вищеописаній схемі взаємодії відправника та одержувача не вистачає однієї операції. Вона пов'язані з етапом шифрування даних, у яких формується ЭЦП. Якщо просто так генерувати ЕЦП, то вона вийде (залежно від алгоритму), як правило, приблизно такої ж довжини, як і вихідний блок даних, і нам доведеться передавати по мережі повідомлення подвійної довжини. Звичайно, це негативно вплинуло б на весь процес роботи системи. Тому перед генерацією ЕЦП вихідні дані обробляються за допомогою хеш-функції, і таким чином підпис стає компактним. Звичайно, для отримання вірного результату одержувач повинен виконати таке ж перетворення з блоком даних, що приймається.

Хеш-функція, що використовується, повинна вміти перетворювати повідомлення будь-якої довжини в бінарну послідовність фіксованої довжини. Крім того, вона повинна задовольняти такі вимоги:

  • повідомлення після застосування хеш-функції має залежати від кожного біта вихідного повідомлення та від порядку їхнього прямування;
  • за хешованою версією повідомлення не можна жодними способами відновити саме повідомлення.

Загальні відомості про шифрування

Шифрування даних та його відмінність від ЕЦП

Шифрування інформації - взаємно-однозначне математичне (криптографічне) перетворення, що залежить від ключа (секретний параметр перетворення), яке ставить у відповідність блоку відкритої інформації, представленої в деякому цифровому кодуванні, блок шифрованої інформації, також представленої в цифровому кодуванні. Шифрування поєднує два процеси: зашифрування та розшифрування інформації (рис. 2).

Принципова відмінність методів ЕЦП і шифрування (ми зараз розглядаємо асиметричні алгоритми, в яких для шифрування та розшифрування застосовуються різні, але пов'язані між собою математично ключі) полягає в тому, що при шифруванні використовується відкритий ключ одержувача, а при розшифровці ¦ закритий, тоді як в алгоритм ЕЦП для підписання деякого повідомлення потрібен секретний ключ автора, а для перевірки ЕЦПвідкритий ключ автора повідомлення.

Злом

Теоретично будь-який алгоритм шифрування з використанням ключа може бути розкритий методом перебору всіх значень ключа. Якщо ключ підбирається, потрібна потужність комп'ютера зростає експонентно зі збільшенням довжини ключа. Ключ довжиною 32 біт вимагає 232 (близько 109) кроків. Таке завдання під силу будь-якому дилетанту і вирішується домашньому комп'ютері. Системи з 40-бітним ключем (наприклад, експортний американський варіант алгоритму RC4) вимагають 240 кроків такі комп'ютерні потужності є в більшості невеликих компаній. Системи з 56-бітними ключами (DES) вимагають для відкриття помітних зусиль, однак вони можуть бути легко розкриті за допомогою спеціальної апаратури. Вартість такої апаратури значна, але доступна для мафії, великих компаній та урядів. Ключі довжиною 64 біт зараз, можливо, можуть бути розкриті великими державами, а вже в найближчі кілька років будуть доступні для розкриття злочинних організацій, великих компаній і невеликих держав. Ключі завдовжки 80 біт можуть стати вразливими у майбутньому. Ключі довжиною 128 біт в найближчому майбутньому, ймовірно, залишаться недоступними для розтину методом перебору. Можна використовувати і довші ключі.

Однак довжина ключа – це ще не все. Багато шифри можна розкрити, не перебираючи всіх можливих комбінацій, а застосовуючи спеціальний алгоритм (наприклад, з поліноміальною складністю). Взагалі дуже важко придумати шифр, який не можна було б розкрити за допомогою іншого способу, більш ефективного, ніж перебір.

Зверніть увагу, що ступінь надійності криптографічної системи визначається її слабкою ланкою. Не можна не брати до уваги жодного аспекту розробки системи від вибору алгоритму до політики використання та розповсюдження ключів.

Електронний цифровий підпис XML-документів

Ті, хто працює з XML, вже давно зрозуміли важливість механізму контролю над даними, що передаються і представленими в XML. Основні вимоги, що пред'являються до даних, що передаються, - автентифікація взаємодіючих сторін і підтвердження справжності та цілісності інформації в XML-документі. Такі завдання вирішує ЕЦП документів XML.

Специфікації на ЕЦП XML від W3C

Консорціум W3C розробляє зараз специфікацію «XML» Signature Syntax and Processing («Синтаксис та обробка підпису XML») та інші пов'язані з цим документи. Поки що вона має статус рекомендації (http://www.w3.org/TR/xmldsig-core/). Цей документ передбачає підпис як всього документа XML, так і його частини. Для взаємооднозначності процесу підписання XML визначається поняття канонічного представлення даних XML. Наприклад, у XML-документі теги, що стоять на тому самому рівні в дереві ієрархії, можуть перемішуватися між собою, створюючи таким чином неоднозначність для процесу підписання. Канонічне представлення XML – це своєрідне сортування (а точніше, приведення до найпростішого вигляду), яке не допускає таких вольностей. Методи та правила канонізації XML описуються в окремому документі «Canonical XML» (http://www.w3.org/TR/xml-c14n), який також має статус рекомендації. Інші пов'язані з підписанням документа XML доступні за адресою: http://www.w3.org/Signature/ .

Тег ¦ підпис XML

Рекомендація «XML | Signature Syntax and Processing» визначає, що підпис та інформація про нього повинні міститися в тезі що має такі частини (в основному вони потрібні для верифікації підпису):

  • метод канонізації (CanonicalizationMethod) визначає конкретний набір правил для спрощення та структурування екземпляра XML до підписання. Ці відомості забезпечують належний вид даних, що підписуються, щоб алгоритм перевірки дав позитивний результат, якщо змістовні дані не були змінені;
  • Метод підпису (SignatureMethod) визначає алгоритм підпису дайджесту повідомлення. Дайджест повідомлення - це унікальний символьний рядок фіксованого розміру, він є результатом обробки даних за допомогою односторонньої хеш-функції, що задається методом дайджесту;
  • метод дайджесту (DigestMethod) алгоритм складання дайджесту повідомлення, що підписується за допомогою заданого методу підпису. Завдання певного методу дайджесту гарантує обробку даних одним і тим самим способом;
  • значення дайджеста (DigestValue) - власне дайджест повідомлення, тобто рядок фіксованої довжини, що видається в результаті обробки даних за допомогою алгоритму дайджесту. Такий рядок є унікальним і незворотним: його практично неможливо отримати з іншого вмісту, як і неможливо відтворити по ньому вихідні дані. Це як би відбиток пальців для даних, що підписуються; позитивний результат порівняння значень дайджесту гарантує цілісність вмісту;
  • безпосередньо підпис (SignatureValue) - це дані, які отримують після обробки методом підпису;
  • інформація про відкритий ключ (KeyInfo) - ключ для верифікації ЕЦП. Точніше, не ключ, а сертифікат, тому що в ньому, крім самого ключа, може бути вказано ім'я власника та алгоритм ЕЦП.

Природно, що це не вичерпна інформація про те, що може міститись у тезі . Ось найпростіший прикладтакого підпису (листинг 1).

Формування ЕЦП XML

Слід зазначити деякі відмінності процесу підписання XML класичного. Справа в тому, що підписання екземпляра XML починається з канонізації, тобто зі спрощення структури даних. Як уже було сказано, ця процедура необхідна для того, щоб для одного і того ж документа XML, представленого по-різному, можна було коректно верифікувати ЕЦП. Це означає, що перед підписанням необхідно всі документи XML привести до єдиної канонічної форми. Подальші дії аналогічні до стандартного процесу додавання цифрового підпису: для даних створюється значення дайджеста за допомогою заданого методу, потім це значення підписується закритим ключем автора документа.

Перевірка ЕЦП XML

Для перевірки підпису потрібно виконати два кроки: перевірку самого підпису та перевірку значення дайджесту.

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

Шифрування XML-документів

Специфікації W3C про шифрування XML

Перейдемо до шифрування, яке дозволяє нам закрити (тобто перетворити на такий вигляд, при якому буде незрозумілий зміст) передані дані та відновити їх на стороні, що приймає. У консорціумі W3C створено робочу групу (http://www.w3.org/Encryption/2001/), яка спеціально займається питаннями шифрування XML-даних. Специфікація XML Encryption Syntax and Processing (Синтаксис і обробка шифрування XML) сьогодні отримала статус рекомендації і доступна за адресою: http://www.w3.org/TR/xmlenc-core/.

Тег

  • Метод шифрування (EncryptionMethod) визначає алгоритм шифрування даних. Якщо цей тег відсутній, то алгоритм шифрування повинен бути відомий стороні, що приймає, інакше розшифровка повідомлення неможлива;
  • шифровані дані (CipherData) - власне зашифровані дані або посилання на їхнє розташування. Різноманітність типів даних і методів їхньої логічної організації, що підлягають шифруванню, практично нічим не обмежена;
  • інформація про ключі (KeyInfo) ¨ відомості про ключі, за допомогою яких виконуються шифрування і відповідно дешифрування. Вони можуть зберігатися в іншому місці та замінюватись в екземплярі XML на посилання URL;
  • інша інформація (наприклад, про передбачуваних одержувачів).

Приклад тега представлений на лістингу 2 .

Процес зашифрування та дешифрування

Шифрування даних XMLпровадиться традиційними методами криптографії з відкритими ключами. Спочатку шифруються самі дані, як правило, за допомогою випадково формованого секретного ключа, який потім теж кодується за допомогою відкритого ключа передбачуваного одержувача. Ця інформація упаковується так, щоб отримати секретний ключ і розшифрувати дані міг тільки вказаний одержувач. Для дешифрування секретного ключа використовується прихований ключ, а потім відбувається дешифрування даних за допомогою знайденого секретного ключа.

Реалізація захисту XML-документів

Ми розглянули загальні принципи роботи електронного цифрового підпису та специфікації, які виробив консорціум W3C у цій галузі. Все це добре, але якщо справді є потреба в реалізації описаних схем захисту XML-даних?

Вже сьогодні, незважаючи на те, що стандарти W3C з'явилися зовсім недавно, деякі компанії оголосили про випуск своїх пакетів (бібліотек класів), що реалізують і ЕЦП, і шифрування. Розглянемо можливості деяких із них.

XML Security Suite (IBM)

Цей пакет, який базується на мові програмування Java, доступний за адресою http://www.alphaworks.ibm.com/tech/xmlsecuritysuite . XML Security Suite є засобом, що забезпечує такі елементи безпеки, як цифровий підпис, шифрування та керування доступом для документів XML. З його допомогою можна досягти більших успіхів, ніж використовуючи можливості протоколів безпеки транспортного рівня (наприклад, Secure Sockets Layer, SSL).

Цей пакет реалізує три технології:

  • ЕЦП заснована на специфікації "XML | Signature Syntax and Processing" від W3C і IETF (і на специфікації "Canonical XML");
  • шифрування реалізовано на основі специфікації «XML Encryption Syntax and Processing» від W3C;
  • керування доступом для документів XML (XML Access Control Language).

XML Security Suite - це один з найкращих сучасних засобів для захисту XML-документів. Крім самого архіву (JAR) з бібліотекою класів, воно включає докладну документацію та приклади, що дозволяють швидко зорієнтуватися в ієрархії класів.

XML Security (Apache)

Захист даних на основі XML

Мова розмітки заяв системи безпеки (SAML)

Напрямок, відмінний від захисту XML-даних, але тісно з ним пов'язаний, це покращення безпеки і захищеності систем (протоколів) на базі XML. У цьому випадку за допомогою XML захищаються інші документи/системи/програми. В даний час комітет безпеки Організації з розвитку стандартів структурування інформації (OASIS) займається розробкою мови розмітки заяв системи безпеки (SEML).

Федеральний закон «Про електронний цифровий підпис»

Цілі

Давайте трохи відвернемося від законодавців в області Web і розглянемо Федеральний закон «Про електронний цифровий підпис», який був затверджений Президентом РФ 10 січня 2002 (http://www.internet-law.ru/intlaw/laws/ecp.htm). Ухвалення цього закону забезпечило правові умови використання електронного цифрового підпису в електронних документах, за дотримання яких електронний цифровий підпис в електронному документі визнається рівнозначним власноручним підписом у документі на паперовому носії. Отже, закладено основи створення юридично значимого електронного документообігу.

Умови рівнозначності ЕЦП та звичайного підпису

Закон визначає основні поняття, що використовуються в процедурі ЕЦП, такі як сертифікат, відкритий і закритий ключі, підтвердження справжності електронного цифрового підпису (ми їх розглядали раніше) та ін. Далі закон визначає умови, за яких електронний цифровий підпис в електронному документі рівнозначний підпису в документі на паперовому носії. Це означає в першу чергу те, що сертифікат ключа підпису, що відноситься до цього електронного цифрового підпису, не втратив чинності на момент перевірки або підписання електронного документа. Крім того, має бути підтверджена автентифікація електронного цифрового підпису та те, що ЕЦП використовується відповідно до відомостей, зазначених у сертифікаті ключа підпису.

Сертифікати та посвідчувальні центри

Закон докладно визначає, з чого складається сертифікат ключа підпису (унікальний реєстраційний номер, ПІБ власника, відкритий ключ ЕЦП, найменування та місцезнаходження посвідчувального центру та ін.); строки та порядок зберігання сертифіката в центрі, що засвідчує. Так, термін зберігання сертифіката ключа підпису у формі електронного документа у центрі, що засвідчує, визначається договором між засвідчувальним центром і власником сертифіката ключа підпису. Що стосується зберігання, то воно визначається законодавством Російської Федерації про архіви та архівну справу.

Окрема глава закону присвячена центрам, що засвідчують. Сам процес вироблення та перевірки ЕЦП може проходити і без участі центрів, що засвідчують, якщо це підтверджено договором сторін. Однак в інформаційних системах загального користування та в багатьох корпоративних інформаційних системах застосування ЕЦП без функціонування центрів, що засвідчують, неможливо, оскільки це призведе до досить простих механізмів підробки підпису.

Закриті (таємні) ключі

Свої функції ЕЦП може виконати лише за наявності у підписувача деякої інформації, недоступної стороннім людям. Ця інформація аналогічна ключу під час шифрування і тому отримала назву «закритий ключ електронного цифрового підпису» (раніше використовувався аналогічний термін «секретний ключ»). Необхідно зберігати в таємниці як закритий ключ, так і ключ шифрування, оскільки знання закритого ключа підпису відповідає чистому аркушу паперу з підписом власника закритого ключа, на якому зловмисник може написати будь-який текст, який буде приписаний справжньому власнику закритого ключа. Ст. 12 закону прямо вказує на обов'язок власника сертифіката ключа підпису зберігати в таємниці закритий ключ та негайно вимагати зупинення дії сертифіката ключа підпису за наявності підстав вважати, що таємниця закритого ключа підпису порушена.

Ст. 5 Закону встановлює порядок створення закритих ключів підпису саме з урахуванням суворого дотримання таємниці їхнього створення. На цю обставину вказує і ст. 9 Закону, що стосується діяльності центрів, що посвідчують. У корпоративних інформаційних структурах питання виготовлення та розсилки закритих ключів ЕЦП може вирішуватися власними методами, проте при цьому користувач ЕЦП повинен усвідомлювати можливі наслідки такої організації функціонування ЕЦП. Цілком можливі випадки, коли як закритий ключ використовуватиметься якась закономірна послідовність, як це буває при використанні системи паролів.

Вітчизняні стандарти на алгоритми ЕЦП

Схема Ель-Гамалю

У 1994 році був прийнятий перший вітчизняний стандарт в галузі ЕЦП ГОСТ Р34.10 94 «Інформаційна технологія. Криптографічний захист інформації. Процедури вироблення та перевірки електронного цифрового підпису на базі асиметричного криптографічного алгоритму». Він визначає процедури роботи з ЕЦП з урахуванням схеми Эль-Гамаля. Неможливість підробки підпису обумовлена ​​складністю розв'язання задачі дискретного логарифмування в полі з р елементів або складністю заданого великому простим числом р і числам a, b з інтервалу від 2 до р-1 визначення числа х, яке виконується порівнянням:

Ax== bmodp.

Однак математики не стоять на місці, і останнім часом досягнуто великого прогресу в розвитку методів вирішення задачі дискретного логарифмування в полі з р елементів. Нещодавно було створено так званий метод решіт числового поля. З його допомогою можна зламати ЕЦП, сформовану вищезгаданим методом (принаймні у разі 512-бітного модуля р).

Одне з найпростіших розв'язків цієї проблеми – збільшення довжини модуля р. Але, на жаль, при збільшенні погіршуються експлуатаційні властивості алгоритму, оскільки збільшуються довжина відкритого ключа та час вироблення та перевірки підпису.

Еліптична крива

Російські вчені зрештою дійшли висновку, що можна трохи ускладнити схему Ель-Гамалю і таким чином без додаткових обчислювальних витрат у багато тисяч разів збільшити складність підробки ЕЦП. Новий варіант схеми Ель-Гамалю використовує апарат еліптичних кривих над кінцевим полем з елементів, які визначаються як безліч пар чисел (х,у) (кожне з них лежить в інтервалі від 0 до p-1), що задовольняють порівнянню (числа а і b фіксовані та відповідають деяким додатковим умовам):

Y2 == x3 + ax + bmodp.

Інші ресурси

  • Інформація про Oracle XML-SQL Utility http://otn.oracle.com/tech/xml/xdk_java/content.html
  • Специфікації SAML: http://www.oasis-open.org/committees/security/
  • Специфікація XKMS http://www.w3.org/TR/xkms/
  • Федеральний закон «Про електронний цифровий підпис»

На одному з проектів, що йдуть в даний час, вирішувалося завдання підписання (накладання ЕП - електронного підпису) XML документів, а саме SOAP-пакетів. Рекомендованим форматом був OASIS Standard 200401 з профілем X.509 Certificate Token Profile. Ці документи описують застосування створеного www-консорціумом (W3C) формату електронних підписів XML(XMLDSig - XML ​​Digital Signature) у SOAP-повідомленнях. XML-підписи, як і інші види ЕП, підтримують автентифікацію, цілісність даних та невід'ємність підписання даних.

Відзначу кілька особливостей формату XMLDSig:

1. Об'єктом підписання може бути не весь XML-документ, лише його частина, тобто. певний вузол. Згідно з OASIS Standard 200401 об'єктом, що підписується, є тіло (вузол Body) SOAP-повідомлення.

2. Різні частини документа XML можуть бути підписані кількома виконавцями.

3. XML-підпис може знаходитися на різних рівнях по відношенню до об'єкта, що підписується:

  • у структурі підпису може бути URI(Уніфікований ідентифікатор ресурсу);
  • XML-підпис може знаходитися на одному рівні з вузлом, що підписується;
  • XML-підпис може знаходитися всередині вузла, що підписується;
  • Вузол, що підписується, може знаходитися всередині структури XML-підпису.

4. Для перевірки дійсності ЕП потрібний доступ до об'єкта підписання.

Структура SOAP-коверта

У загальному випадку повідомлення складається із заголовка та тіла: Headerі Body. Headerмістить метадані, а Bodyдані. XML-підпис міститься у вузол Header.

Криптографічні алгоритми та канонікалізація.

Для вирішення завдання було використано ГОСТ Р 34.11-94- російський криптографічний стандарт обчислення хеш-функції та ГОСТ Р 34.10-2001- Стандарт електронного підпису.

В силу гнучкості правил складання XML, та сама структура документа і та сама частина інформації можуть бути представлені різними XML-документами. Розглянемо два документи:

З логічного погляду вони рівнозначні, тобто мають однакову XML-схему. Але XML-файли цих листингів не містять одну і ту ж послідовність символів, що спричинить різні результати, наприклад, при отриманні значення хеша.

Щоб уникнути подібних різночитань, були прийняті суворі правила форматування та вимоги до змісту XML-повідомлень. Процес приведення XML-документів до уніфікованого (канонічного) виду називають канонікалізацією(англ. Canonicalization). Прикладами правил може бути застосування певної схеми кодування (UTF-8), нормалізація значень атрибутів, використання подвійних лапок для значень атрибутів, певний порядок атрибутів та об'яв просторів імен та ін. Канонікалізація XML буває декількох видів, які відрізняються складом правил. Докладніше про процес канонікалізації можна прочитати в офіційній специфікації W3C (російськомовні статті на цю тему можна знайти і )

Бібліотека SIRCrypt

Для реалізації підписання XML в DIRECTUM була написана COM-бібліотека, всередині якої описано 3 класи: Hasher, Signerі XMLCanonicalizerдля отримання хеша, значення ЕП та канонікалізації XML-документів відповідно.

Для функціонування бібліотеки потрібно Crypto PRO CSP(тестувалась на версії Crypto PRO CSP 3.6.6497 KC2) та .NET(Мінімально 2.0).

Реєстрація бібліотеки виконується виконанням наступної команди:

> regasm.exe "шлях до dll" /codebase /tlb

Об'єкт Hasher для обчислення хешу за ГОСТ

Містить поля Content (тип "рядок") та HashValueAsBase64 (тип "рядок"), а також метод для обчислення значення хеш-функції Hash(). Для обчислення необхідно означити Content , викликати метод Hash(), в результаті якого в полі HashValueAsBase64 запишеться значення хеш-функції Base64.

Об'єкт Signer для отримання значення ЕП за ГОСТ

Містить поля Content (тип "рядок"), ContainerName (тип "рядок"), CertificateAsPEM (тип "рядок"), BESignatureValueAsBase64 (тип "рядок"), метод Sign(). Після ініціалізації об'єкта необхідно означити Content (Дані для підписання), ContainerName (ім'я контейнера закритого ключа сертифіката), викликати метод Sign(). Після чого у полі CertificateAsPEM потрапить відповідний закритому ключу сертифікат у Base64, а поле BESignatureValueAsBase64 значення підпису у вигляді Base64-рядка.

Об'єкт XMLCanonicalizer для канонікалізації XML

Містить поля XMLContent (тип "рядок"), CanonicalXML (тип "рядок"), метод C14NExc(). Для отримання канонічної форми XML потрібно означити XMLContent , викликати C14NExc()отримати результат з поля CanonicalXML .

Структура XML-підпису

Створення підпису виглядає так: спочатку формується основа soap-пакету, вузли Headerі Body. Bodyзаповнюється даними та додається атрибут wsu:ID="Body"- Ідентифікатор даних, що підписуються.

Заповнення структури Securityвідбувається у такому порядку:

  1. Береться значення хеш-функції від вузла Body у канонічному вигляді та поміщається у вузол DigestValue.
  2. Вузол SignedInfoнаводиться до канонічного вигляду, підписується ЕП. Результат у форматі Base64-рядка потрапляє у вузол SignatureValue.
  3. Відкритий ключ сертифіката, яким було виконано підписання міститься у вузол BinarySecurityTokenу форматі рядка Base64.

Для того, щоб перевірити сформовану таким чином ЕП необхідно зробити всі дії у зворотному порядку, а саме:

  1. отримати канонічну форму елемента SignedInfo.
  2. З використанням результату попереднього кроку перевірити, чи дійсно значення ЕП із вузла SignatureValueза допомогою відкритого ключа сертифіката. На цьому етапі перевіряється лише коректність ЕП, що гарантує незмінність даних.
  3. Якщо перевірку дійсності ЕП пройдено успішно, порівнюється хеш з вузла DigestValueта хеш від вузла з даними. Якщо вони нерівні, підписані дані змінені і вся ЕП недійсна.

Приклад використання

Пакет розробки та бібліотека

Приклади підписання XML на ISBL (сценарій): dev.zip (5,95 Кб)

Для постійного використання код, що виконує типове підписання готового конверта SOAP, винесено в функцію SignSOAP().

Для підписання використовується сертифікат із особистого сховища сертифікатів поточного користувача.

Відповідно до закону 218-ФЗ «Про державну реєстрацію нерухомості» електронні XML-документи та відскановані образи документів необхідно підписувати посиленим кваліфікованим електронним підписом. Усі програми серії «Полігон», «Полігон Про» та програма «Підпис Про» підписують саме таким підписом.

Для підписання:

    Отримайте ключ підпису(сертифікат) в центрі, що засвідчує. Список акредитованих центрів, що посвідчують, опублікований на сайті Росреєстру (Список центрів, що засвідчують). Отримати сертифікат можна в нашому центрі, що засвідчує, ТОВ «Програмний центр» .

    Разом із підписом придбайте та встановіть на комп'ютер програму КриптоПро CSP (Вона містить необхідні російські стандарти підпису), яку також можна придбати в нашому центрі ТОВ «Програмний центр».

Інші програми для підпису не потрібні: КриптоАРМ (можливості КриптоАРМ щодо підпису аналогічні можливостям програм серії «Полігон», «Полігон Про» та програми «Підпис Про»).

Програмні модулі платформи "Полігон Про"

Підписати електронний документ у програмі «Полігон Про»

Щоб підписати XML-файл, виконайте таке:

  • Сформуйте електронний документ без помилок.


Підписати XML-файл можна відразу у вікні « Перегляд XML», для цього на панелі інструментів натисніть кнопку – "Підписати XML-файл".

  • Після натискання з'явиться вікно зі списком встановлених сертифікатів. Виберіть потрібний та натисніть "ОК".

  • Програма виконає підписання основного документа та видасть повідомлення про успішне виконання.

У тій самій папці, що й підписаний файл, буде сформовано файл підпису з тим самим ім'ям, з розширенням * .sig.

Підписати групу файлів у програмі "Полігон Про"

У програмі можна підписати групу файлів одночасно. Для цього виконайте таке:

  • На стрічці програмного модуля на вкладці «Головна»натисніть і з підменю виберіть . Відкриється вікно з вибором файлів проекту (за замовчуванням усі файли проекту вибрано).
  • Якщо у списку присутні файли, які не потрібно підписувати, зніміть з них галочки.

  • Натисніть кнопку «Підписати». Відкриється вікно зі списком встановлених сертифікатів. Виберіть потрібний та натисніть "ОК".
  • Програма виконає підписання всіх документів та видасть повідомлення про успішне виконання.

    Якщо виникають помилки під час підписання, буде виведено протокол перевірки із попередженнями та/або помилками. Для коректного підписання потрібно виправити помилки.

    Підписати файл у програмних модулях платформи «Полігон Про»

    У програмі є можливість підписати будь-який файл.

      Відкриється вікно зі списком встановлених сертифікатів. Виберіть потрібний та натисніть « ОК».

    • Програма виконає підписання документів та видасть повідомлення про успішне виконання.

    У тій же папці, що й підписаний файл, буде сформовано файл підпису з тим самим ім'ям, з розширенням *.sig.

    Перевірити електронний підпис у програмі «Полігон Про»

    Якщо Ви отримали підписаний файл ззовні і хотіли б перевірити, чи не був він змінений, або просто перевірити правильність сформованого підпису файлу, виконайте такі дії:

    • На стрічці програмного модуля у вкладці « Головна» у підменю кнопки « Підписати все» натисніть на кнопку « Перевірити…».

    • Виберіть файл, який містить підпис (з розширенням *.sig), який потрібно перевірити, або підписаний файл.

    Якщо ці два файли знаходяться в різних папках, програма видасть вікно з попередженням. Натисніть кнопку « Повторення» та вибрати вихідний файл.

    • Відкриється протокол з інформацією, чи правильно було підписано документ, ким і коли.

    Програма «Підпис Про»

    Для зручної взаємодії з Посвідчувальним центром, управління цифровими сертифікатами та закритими ключамиЕП, а також для підписання різних файлів електронним підписом було розроблено програму .

    Як підписати файл електронно-цифровим підписом?

    Ця інструкціяє зразковою, конкретні кроки можуть залежати від встановленого на вашому комп'ютері програмного забезпечення. Частина інструкції виконана у лютому 2012 року, проте в наших програмах передбачена зручніша можливість підписання файлів електронних документів посиленим кваліфікованим електронним підписом.

    Для підпису файлів електронних документів: межовий план, мапа план, технічний планелектронним підписом необхідно переконатися у наявності встановлених програм:

      криптопровайдер «КріптоПро CSP»;

      «Крипто АРМ» ця програма потрібна лише тоді, коли у Вас не використовуються програми серії "Полігон", ця програма в частині підписання ідентична програмам серії "Полігон", тому вона не потрібна; для підписання файлів програмами серії "Полігон" дивіться попередню сторінку інструкції; підписувати можна як програмами серії "Полігон", так і програмою КриптоАРМ, якщо Ви вважаєте, що це буде зручніше, ніж використовувати можливості програм серії "Полігон";

    Кожен файл (XML, скан друкованого документа та файли додатків) необхідно підписати, оскільки орган кадастрового обліку приймає лише кілька файлів: оригінальний файл і файл підписи до нього. Щоб підписати файл необхідно вибрати його у вікні провідника та натиснути правою кнопкоюмиші (ПКМ), з'явиться контекстне менюв ньому слід вибрати пункт «КриптоАРМ», а потім « Підписати…».



    Потім переконатися у правильності імені файлу



    Важливо! встановити перемикач у положення « DER-кодування», папку для вихідних файлів вказати на свій розсуд. Натиснути кнопку « Далі». У наступному вікні призначити параметри підпису


    У цьому вікні найважливішим є вказати галочку. Зберегти підпис в окремому файлі». Натисніть кнопку « Далі». У наступному вікні натисніть кнопку « Вибрати»


    відкриється вікно вибору сертифіката


    у ньому виберіть сертифікат Вашого ключа (дивіться ім'я власника). Після вибору натисніть кнопку « ОК» та « Далі». В останньому вікні перед підписанням документа натисніть кнопку « Готово».

    Важливо! Для кожного файлу необхідно зробити файл підпису, тому що приймається лише пара: оригінальний файл (xml або інший) + підпис до нього (sig-файл).