Методи захисту програмного забезпечення

© Руслан Шевчук. Методи та засоби захисту програмного забезпечення. Тема 4.

Тема 4. Методи захисту програмного забезпечення.

  1.  Мотиви захисту програмного забезпечення.
  2.  Реєстраційні коди.
  3.  Апаратні ключі.
  4.  Навісні захисти (протектори).
  5.  Захист від несанкціоновано копіювання.
  6.  Стеганографічний захист даних.
  7.  Криптографічний захист програмного забезпечення.

1. Мотиви захисту програмного забезпечення

Під мотивами захисту ПЗ розуміється «зміст захисту ПЗ» або «від чого захищають ПЗ».

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

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

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

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

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

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

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

2. Реєстраційні коди.

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

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

При введені одержаного реєстраційного коду спрацьовує механізм захисту ПЗ, який перевіряє вірність введеного коду. При цьому можливість обчислювати вірні коди повинна завжди залишатися тільки в руках розробника. Для того, щоб супротивник, виправивши декілька байт, не зміг заставити ПЗ працювати так, як ніби він був коректно зареєстрований чи активований, необхідно частину програмного коду або даних, доступ до яких дозволений тільки легальним користувачам зашифрувати стійким алгоритмом, а ключ шифрування обчислювати, використовуючи реєстраційний код. Тоді без знання реєстраційного коду отримати повноцінну версію програми не вдасться. Подібну функціональність забезпечують, програми ASProtect (ASPack Software) і EXECryptor (SoftCompIete Development).

Визначимо декілька критеріїв, по яких можна порівнювати властивості різних методів генерації і перевірки кодів:

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

Всі методи перевірки правильності кодів можна, умовно, розділити на три категорії:

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

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

Алгоритмічні методи перевірки реєстраційного коду, що базуються на складному математичному завданні, не потребують приховування деталей реалізації. Їх особливість в тому, що для генерації коду і перевірки його правильності використовуються два різних алгоритми і отримання алгоритму генерації  з  алгоритму  перевірки  є  математичним  завданням, що не має на теперішній час ефективного рішення. Найчастіше для цих цілей використовуються криптографічні алгоритми з відкритим ключем. Проте у асиметричної криптографії є одна особливість: розмір блоку, над яким проводяться операції, досить великій. Так, для RSA-1024 розмір блоку (а значить, і мінімальний розмір реєстраційного коду) складає 128 байт. А щоб двійкові дані можна було ввести з клавіатури, їх кодують, наприклад, алгоритмом MIME64, який збільшує розмір блоку на третину. Тобто довжина кодового рядка складе як мінімум 172 символи. Очевидно, що ввести без помилок безглузду послідовність такої довжини, що складається з букв, цифр і розділових знаків, майже неможливо. Це робить дану схему неприйнятною для реєстрації, наприклад, по телефону або факсу. Сьогодні проводяться спроби створити стійку систему реєстрації, що використовує короткі коди і базується  на складному математичному завданні. Так, компанія SoftComplete Development в своєму продукті HardKey System версії 2.0 (квітень 2002) використовувала алгоритм, для зламу якого треба було багато разів обчислити дискретний логарифм, що є складним завданням. У будь-якому випадку, при правильній реалізації алгоритмічні методи, що базуються на математично складному завданні, не дозволяють зламнику, що знає один правильний реєстраційний код, генерувати нові коди. Однак єдиний спосіб заблокувати вкрадений код полягає в тому, щоб занести цей код в так званий "чорний список". І очевидно, що обхід блокування вимагає не рішення математичної задачі, а виправлення логічної умови. Тобто при бажанні зламник може отримати повністю працездатну версію розшифрованої програми, маючи тільки заблокований код.

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

У кожного з описаних методів перевірки правильності кодів є свої переваги і недоліки.

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

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

Табличні методи дають можливість повністю блокувати зламані реєстраційні коди, однак не дозволяють прив'язувати код до імені користувача. Крім того, якщо число користувачів дуже велике, таблиці можуть займати великий об'єм.

3. Апаратні ключі.

Одним із сучасних методів захисту ПЗ є використання апаратних ключів, які поставляються разом з ліцензійним ПЗ і виконуються функцію його захисту від несанкціонованого використання. Апаратні ключі виконуються у більшості випадків у вигляді флеш пристрою та підключаються до одного з портів ПК. При запуску ПЗ із методом захисту на основі апаратних ключів відбувається звернення ПЗ до порту з ключем та виконується ряд запитів до ключа, який функціонує на базі певного алгоритму. Сьогодні відомо багато алгоритмів на основі яких працюють апаратні ключі.

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

  •  Ключі з пам'яттю – один з найпростіших типів ключів. Ключі з пам'яттю мають певне число комірок пам’яті, з яких дозволено зчитування. У деякі з цих комірок також може проводитися запис. Зазвичай в комірках пам’яті недоступних для запису, зберігається унікальний ідентифікатор ключа. Ключі з пам'яттю не здатні протистояти емуляції. Достатньо один раз прочитати всю пам'ять і зберегти її в емуляторі. Після цього правильно емулювати відповіді на всі запити до ключа не складе великих труднощів. Таким чином, апаратні ключі з пам'яттю в заданих умовах не здатні дати ніяких переваг в порівнянні з чисто програмними системами.
  •  Ключі з невідомим алгоритмом. Багато сучасних апаратних ключів містять секретну функцію перетворення даних, на якій і ґрунтується секретність ключа. Іноді програмістові надається можливість вибрати константи, перетворення, що є параметрами, але сам алгоритм залишається невідомим. Перевірка наявності ключа повинна виконуватися таким самим чином. При розробці захисту програміст робить декілька запитів до алгоритму і запам'ятовує отримані відповіді. Ці відповіді в якійсь формі кодуються в програмі. Під час виконання програма повторює ті ж запити і порівнює отримані відповіді із збереженими значеннями. Якщо виявляється неспівпадання, значить, програма отримує відповідь не від оригінального ключа. Ця схема має один істотний недолік. Оскільки захищена програма має кінцевий розмір, тому і кількість правильних відповідей, які вона може зберігати є обмеженою. А це означає, що існує можливість побудови табличного емулятора, який знатиме правильні відповіді на всі запити, результат яких може перевірити програма.
  •  Ключі з таймером. Деякі виробники апаратних ключів пропонують моделі, що мають вбудований таймер. Але для того, щоб таймер міг працювати в той час, коли ключ не підключений до комп'ютера, необхідне вбудоване джерело живлення. Середній час роботи батареї, що живить таймер, складає 4 роки, і після її розрядки ключ перестане правильно функціонувати. Можливо, саме із-за порівняно короткого часу життя ключі з таймером застосовуються досить рідко. Прикладом таких ключів є ключі HASP Time, що надають можливість дізнаватися поточний час, встановлений на вбудованому в ключ годиннику. І захищена програма може використовувати ключ для того, щоб відстежити закінчення тестового періоду. Але очевидно, що емулятор дозволяє повертати будь-які покази таймера, тобто апаратна частина ніяк не підвищує стійкість захисту.
  •  Ключі з відомим алгоритмом. У деяких ключах програмістові, що реалізовує захист, надається можливість вибрати з безлічі можливих перетворень даних, що реалізовуються ключем, одне конкретне перетворення. При цьому програміст знає всі деталі вибраного перетворення і може повторити зворотне перетворення в чисто програмній системі. Наприклад, апаратний ключ реалізує симетричний алгоритм шифрування, а програміст має можливість вибирати використовуваний ключ шифрування. Зрозуміло, ні в кого не повинно бути можливості прочитати значення ключа-шифрування з апаратного ключа. У такій схемі програма може передавати дані на вхід апаратного ключа і отримувати у відповідь результат шифрування на вибраному ключі. Але тут виникає дилема. Якщо в програмі відсутній ключ шифрування, то повернені дані можна перевіряти тільки табличним способом, а значить, в обмеженому об'ємі. Фактично маємо апаратний ключ з невідомим програмі алгоритмом. Якщо ж ключ шифрування відомий програмі, то можна перевірити правильність обробки будь-якого об'єму даних, але при цьому існує можливість витягання ключа шифрування і побудови емулятора. А якщо така можливість існує, супротивник обов'язково спробує нею скористатися.
  •  Ключі з програмованим алгоритмом. Дуже цікавим рішенням з погляду стійкості захисту є апаратні ключі, в яких може бути реалізований довільний алгоритм. Складність алгоритму обмежується тільки об'ємом пам'яті і системою команд ключа. В цьому випадку для захисту програми важлива частина обчислень переноситься в ключ, і у супротивника не буде можливості запротоколювати правильні відповіді на всі запити або відновити алгоритм по функції перевірки. Адже перевірка, як така, може взагалі не виконуватися — результати, повернені ключем, є проміжними величинами в обчисленні якоїсь складної функції, а значення, що подаються на вхід, залежать не від програми, а від оброблюваних даних.

4. Навісні захисти (протектори).

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

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

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

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

 

5. Захист від несанкціонованого копіювання

При захисті ПЗ від несанкціонованого копіювання використовуються методи, що дозволяю реалізовувати в ПЗ функції прив’язки процесу виконання коду програми до ПК на яких дана програма виконується. Інстальована програма для захисту від копіювання при кожному запуску повинна виконувати наступні дії:

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

До основних методів захисту від копіювання можна віднести:

  •  криптографічний метод. Для цього методі інсталятор програми повинен виконувати: 1. аналіз програмно-апаратного середовище ПК, на якому він сталюється програма та формувати на основі цього аналізу еталонні характеристики середовища виконання програми; 2. проводити запис криптографічних перетворень еталонних характеристик програмно-апаратного середовище ПК на жорсткий диск.
  •  метод прив’язки до ідентифікатора. Зміст даного методу заклечається в тому, що на жорсткий диск при інсталяції захищеної від копіювання програми формується унікальний ідентифікатор, який звіряється при кожному запуску програми. При відсутності чи неспівпадінні цього ідентифікатора програма блокує своє виконання.
  •  метод маніпуляції з кодом програми. Є два способи реалізації даного методу: 1. включення в тіло програми пустих модулів, на які імітується передача керування; 2. зміна початку захищеної програми таким чином, щоб стандартний дизасемблер не зміг її правильно дизасемблювати.   

6. Стеганографічний захист даних.

Стеганографія (від грецького “тайнопис”) має багатовікову історію. Мета стеганографії – приховати сам факт існування повідомлення. Такі приховані повідомлення можуть включатися в різноманітні зовнішні “невинні” дані і передаватися разом з ними без будь-якої підозри збоку.

Базові принципи комп’ютерної стеганографії такі:

  1.  Захист має ґрунтуватися на припущенні, що зловмисник має повне уявлення про стеганографічну систему та деталі її реалізації. Єдиною інформацією, яка залишається невідомою потенційному зловмиснику, є ключ, за допомогою якого лише його власник може встановити факт присутності та зміст прихованого повідомлення.
  2.  Якщо зловмисник якимось чином дізнається про факт існування прихованого повідомлення, це не повинно дозволити йому довести цей факт третій особі і тим більше виявити подібні повідомлення в інших даних доти, поки ключ зберігається в таємниці.
  3.  Потенційний зловмисник повинен бути позбавлений будь-яких технічних та інших переваг у розпізнаванні або розкритті змісту таємного повідомлення.

Розглянемо кілька методів приховування повідомлень у цифрових сигнатурах та інших добре визначених, але малоінформативних компонентах цифрового зв’язку, які сьогодні є вже досить поширеними.

Приховування даних у цифрових комунікаціях. Левова частка комп’ютерної інформації “шумить” (наявність помилок у даних, завад та інших випадкових сигналів у каналах зв’язку). Шум є практично в будь-якому масиві результатів вимірювань, графічному образі, звуковому файлі тощо. Практичні алгоритми стеганографії якраз і засновані на ідеї заміни за певними законами шумових компонент інформації початковим текстом. Називатимемо таку інформацію, що “шумить” і призначена для приховування таємних повідомлень, контейнером, а біти, що “шумлять”, – бітами контейнера. Біти контейнера, замінені бітами приховуваного повідомлення, дістали назву прихованих бітів. Дані контейнера мають бути досить “шумними”, щоб невеликі зміни в їх безладді не могли стати помітними. Такий метод відомий як сурогатна стеганографія.

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

Ще один варіант – моделювання характеристик шуму контейнера. Наслідувана функція має бути побудована так, щоб не тільки кодувати приховувані повідомлення, а й дотримуватися моделі початкового шуму. У граничному випадку ціле повідомлення може конструюватися згідно з моделлю шуму. Подібний підхід можна назвати конструюючою стеганографією. Така стратегія має ряд недоліків: її проблематично з’єднати з сильним алгоритмом шифрування, а моделювання шуму – заняття не з легких. Більше того, реальні зразки, створенні на основі цієї моделі, іноді можуть навіть сприяти виявленню

таємного повідомлення замість того, щоб збільшувати його безпеку.

7. Криптографічний захист програмного забезпечення

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

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

До переліку симетричних блокових шифрів входять: ГОСТ28147-89, DES, IDEA та інші. Ці алгоритми використовують невеликий набір базових операцій: додавання (віднімання) за заданим модулем частини блоку із ключем, множення за модулем, зсув на задану кількість біт, перестановка біт, заміна частин блоку у відповідності із таблицею чи функцією. Алгоритм перетворення даних складається із декількох раундів, кількість яких строго визначена для конкретного алгоритму, у кожному з яких виконуються перелічені операції. Також у перетворенні даних бере участь ключ чи його елементи, обчислені за відповідним алгоритмом. Розмір вхідного блоку складає, як правило, 64 біт, розмір ключа змінюється від 56 до 256 біт.

Асиметричні алгоритми шифрування RSA, DSA, ГОСТ Р34.10-94 використовують такі базові операції: множення, додавання, піднесення до степеня за модулем. Як особливість цього класу алгоритмів необхідно зазначити виконання перелічених операцій над числами із розрядною сіткою порядку 160 – 2048 біт.

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

 Математичні схеми, що використовуються в алгоритмах та реалізують електронний цифровий підпис, ґрунтуються на однонаправлених функціях. На практиці, як правило, в схемах ЕЦП замість документа х розглядають його хеш-функцію h(х), яка володіє рядом спеціальних властивостей, найважливіша з яких – відсутність “колізій” (тобто практична неможливість створення двох різних документів з однаковим значенням хеш-функції). Найбільш відомі математичні схеми ЕЦП такі: RSA (R.L.Rivest, A.Shamir,L.Adleman), OSS (H.Ong, C.P.Schnorr, A.Shamir), Ель-Гамаля (T.ElGamal), Рабіна (M.Rabin), Окамото-Сараісі (T.Okamoto, A.Shiraishi), Мацумото-Імаі (T.Matsumoto,H.Imai).

 

← Предыдущая
Страница 1
Следующая →

Файл

tema4.doc

tema4.doc
Размер: 107.5 Кб

.

Пожаловаться на материал

Методи та засоби захисту програмного забезпечення Мотиви захисту програмного забезпечення. Реєстраційні коди. Апаратні ключі. Навісні захисти (протектори). Захист від несанкціоновано копіювання. Стеганографічний захист даних. Криптографічний захист програмного забезпечення.

У нас самая большая информационная база в рунете, поэтому Вы всегда можете найти походите запросы

Искать ещё по теме...

Похожие материалы:

Вопросы ГАК для студентов 6 курса очного отделения специальности «Дизайн»

Проблемы роста недоверия граждан к институтам государственной власти

Реферат На тему «Проблемы роста недоверия граждан к институтам государственной власти». Недоверие к власти в Украине. Западная теория и российская специфика. Доверие к власти и корпоративный подход

Повышение функциональности традиционных кисломолочных продуктов

Качество кисломолочных продуктов, как и других продуктов питания, характеризуется совокупностью свойств, обусловливающих ее пригодность для удовлетворения определенных потребностей в соответствии с назначением.

Пособие для подготовки к ОГЭ по русскому языку

Организация здравоохранения и общественное здоровье (ОЗиЗО)

Сохранить?

Пропустить...

Введите код

Ok