Підписати xml файл цифровим підписом. Як підписати документ електронним підписом

У даному розділі пропонується для завантаження програми 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 Конструктор інструкція також доступна за допомогою меню Довідка.

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

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

І так, розглянемо як і якими програмними засобамиможна підписати документ або XML файл електронно-цифровим підписом. Однією з програм є ГІС "Панорама" - "Карта-2011" версії 11.10.4. Підпис документів працює навіть у незареєстрованій версії. Порядок підпису документів, файлів Список програм, що дозволяють підписати документи, XML файли, ЕЦП (електронно-цифровим підписом) для обміну даними з порталом державних послуг Федеральної службидержавної реєстрації, кадастру та картографії, Росреєстр, через інтернет ЕЦП наступний: запускаєте "Карта-2011", або "Карта-міні", натискаєте "F12" викликавши меню запуску додатків. У вікні, що з'явилося, вибираємо завдання електронні документи, далі Формування електронного цифрового підпису

Файл підпису: вибираєте файл який потрібно підписати, та й відповідно в сертифікаті необхідний сертифікат. Ось і всі ваш документ або XML файл підписаний ЕЦП. Якщо хочете перевірити вже існуючий підпис, файл для підпису вибирайте файл підпису (файл з розширенням «sig»). Офіційний сайт ГІС « ».

Друга програма для підпису документів, XML файлів це - Криптолайн. Безкоштовна, повністю функціональна, дозволяє підписувати, шифрувати документи, а також перевіряти ЕЦП. завантажити цю програмуВи можете з офіційного сайту або завантажити за прямим посиланням зі сторінки даного сайту. Робота з програмою дуже проста і зручна. Вибираєте і додаєте файли, які потрібно підписати, далі, вибираєте сертифікат, яким потрібно підписати документи, файли XML і підписуєте документи. Будьте уважні – сертифікат для підпису вибирайте лише один! Інакше документи будуть підписані рівно стільки сертифікатів, скільки ви додасте в програму. Інструкція по роботі міститься в архіві програми. Для підпису здачі в Росреєстр я наведу приклад нижче.

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

Для підпису всіх файлів відразу їх потрібно все виділити - Shift + права кнопка мишки або Shift + стрілка вниз. Потім натискаємо «Підписати», у вікні або додаємо сертифікат, або залишаємо той що був обраний раніше, або ж змінюємо на інший. Ще раз на пам'ятаю, що для здачі в Росреєстр в цьому вікні не повинно бути більше одного сертифіката! Також виставляємо всі налаштування як зазначено на малюнку:

Підписуємо. Після підписання у Вас у списку додадуться файли з розширенням "sigO". Це є підпис файлу. Залишилося тільки вивантажити файли підписів або всі файли (на Ваш розсуд). Виділяєте те, що хочете вивантажити, в даному випадку три файли підпису і тиснете «Вивантажити». Ось начебто і все. Але як у кожного безкоштовного сируЄ маленький нюанс. Росреєстр лається на розширення файлів «sigO», тому потрібно в провіднику або в будь-якому файловому менеджеріперейменувати розширення з "sigO" на "sig".

Підпис даної програми не були перевірені сайтом Росреєстру. Перевірку підпису було проведено програмними продуктамиякі взаємодіють із порталом державних послуг Федеральної служби державної реєстрації, кадастру та картографії. Усі три програми, якими перевірявся підпис виконаний цією програмою, видали позитивний результат. Перевірку було проведено вказаними тут програмами, ГІС «Панорама», Крипто АРМ та програмою Полігон-Межовий план. Також підпис було перевірено онлайн сервісомперевірки автентичності електронно-цифрового підпису на сайті.

Ще одна програма для підпису документів та XML файлів - . Завантажити можна із офіційного сайту програми. Сама програма досить функціональна та приваблива, вартість не велика, всього 1200 рублів за 1 робоче місце. Існує тех. підтримка та також розгорнута допомога. Найбільш повну та актуальну інформацію можна отримати на . Також читайте про ЕЦП у замітці

Шляхетна мета покращує діяльність в ім'я цієї мети.К. Лібкнехт

У статті описується, як підписати документи (pdf, word, excel, xml, архів) за допомогою ЕЦП. Розглянемо яке програмне забезпечення необхідно, щоб підписати документи за допомогою ЕЦП, їх плюси та мінуси.

Як підписати файл за допомогою ЕЦП

Є дві програми, за допомогою яких можна підписати файл за допомогою ЕЦП:

  1. ViPNet CryptoFile;
  2. КриптоАРМ.

ViPNet CryptoFile

За допомогою цієї програми можна підписати будь-який файл, наприклад: doc, xls, jpg, xml, txt, підписати декларацію ЕЦП, архів. Після підписання файл буде закінчений.sig

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

Мінуси:при підписанні можна додати лише один електронний підпис;

Підписати документ ЕЦП можна правою кнопкоюмиші на файлі вибрати меню ViPNet CryptoFile -> Підписати.

КриптоАРМ

Мінуси:платне програмне забезпечення;

Плюси:можна додати багато ЕЦП підписів під час підписування файлу.

Підписати документ ЕЦП можна правою кнопкою миші на файлі вибрати в меню КриптоАРМ -> Підписати.

Як підписати pdf за допомогою ЕЦП

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

Для того щоб підписати pdf документ за допомогою ЕЦП, необхідно ПЗ.

Плюси:Електронний підпис видно у документі.

Мінуси:Вартість програми (90 днів безкоштовно.)

також, необхідно щоб було встановлено Acrobat Reader DC або Adobe Acrobat Pro.

Перш ніж вставити електронний підпис у документі pdf, необхідно налаштувати Acrobat Reader DC для роботи з програмою КриптоПро PDF, для цього в Acrobat Reader DC натискаємо Ctrl+K або заходимо в меню Редагування -> Установки, в категоріях вибираємо Підписи -> де «Створення та оформлення» натискаємо Детальніше див. малюнок:

У «Методі підписання за замовчуванням» вибираємо КриптоПро PDF як на малюнку:

Підписуємо документ pdfз ЕЦП

Відкриваємо документ pdf -> у правій панелі натискаємо на заповнити та підписати

У верхній панелі програми Acrobat Reader натискаємо на «Заповнити та підписати» -> «Додаткові інструменти»

Необхідно вибрати інструмент Сертифікати для додавання до панелі.

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

Виберіть сертифікат -> ОК -> Підписати.

Цифровий підпис у pdf виглядає таким чином:



Наш документ pdf підписаний, у такий же спосіб можна поставити кілька підписів в одному файлі pdf.

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

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

Для того, щоб підписати документ Wordза допомогою ЕЦП нам потрібна програма КриптоПро Office Signature.

— платне програмне забезпечення, що служить для підписання документів Wort, Excel.

Після встановлення можна відразу приступити до підписання документів Word ЕЦП, для цього відкриваємо документ Word який необхідно підписати з ЕЦП -> меню Ставка -> в блоці Текст натиснути на Рядок підпису та вибрати Рядок підпису (КРИПТО-ПРО).

Припустимо, що необхідно вставити два електронні підписи в документ Word, для цього робимо двічі операцію, показану вище, без підписання. Оскільки після підписання одним підписом документ стане не редагованим. Тому вставляємо два поля для електронного підпису.

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

Підписаний ЕЦП документ word виглядає так:


Як підписати документ Excel за допомогою ЕЦП

Не буду повторюватися, для того щоб підписати документ Excel за допомогою ЕЦП, необхідно зробити все те ж саме, що і для Word см, трохи вище.

Увага: Якщо Вам необхідно підписати документ excelз видимою частиною підпису в документі, читайте інструкцію далі «Як підписати документ Word за допомогою ЕЦП» , якщо Вам необхідно підписати документ Excel і відправити наприклад в податкову, то Вам підійде інструкція на початку сторінки «Як підписати файл за допомогою ЕЦП».

Як підписати договір за допомогою ЕЦП

Залежно в якому форматі створено договір, прочитайте статтю Як підписати документ Word або PDF.

Як підписати довіреність за допомогою ЕЦП

Прочитайте вище статтю та виберіть потрібний варіант як підписати довіреність за допомогою ЕЦП.

Запитання:

Чи дозволяється редагування файлу підписаного ЕЦП

— Ні, після підписання файл відредагувати не вийде, наприклад, якщо спробувати відредагувати текст підписаний у Wordі, то всі підписи видаляються.

Як виглядає документ, підписаний ЕЦП

— Усе залежить, яким методом ви підписували документ. Якщо підписували документ як інструкції на початку, файл буде з розширення.sig. Також файл та ЕЦП може бути окремим файломЦе залежить від методу підписання файлу.

Якщо ж ви підписували документ pdf, word чи excel за допомогою спеціальних програм, то відрізнити їх неможливо. Необхідно відкрити документ і вже всередині переконатися, чи є підпис чи ні.

На одному з проектів, що йдуть в даний час, вирішувалося завдання підписання (накладання ЕП - електронного підпису) 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().

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

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/
  • Федеральний закон «Про електронний цифровий підпис»


Завантаження...
Top