Захист програмного забезпечення - Программирование, компьютеры и кибернетика курсовая работа

Захист програмного забезпечення - Программирование, компьютеры и кибернетика курсовая работа



































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


посмотреть текст работы


скачать работу можно здесь


полная информация о работе


весь список подобных работ


Нужна помощь с учёбой? Наши эксперты готовы помочь!
Нажимая на кнопку, вы соглашаетесь с
политикой обработки персональных данных

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
хто потенційно може здійснити практичне впровадження програмних дефектів деструктивного впливу в програмний код?
які можливі мотиви дій суб'єкта, що здійснює розробку таких дефектів?
як можна ідентифікувати наявність програмного дефекту?
як можна відрізнити навмисний програмний дефект від програмної помилки?
які найбільш імовірні наслідки активізації деструктивних програмних засобів при експлуатації комп'ютерних систем?
При відповіді на перше питання слід зазначити, що це - безпосередні розроблювачі алгоритмів і програм для комп'ютерних систем. Вони добре знайомі з технологією розробки програмних засобів, мають досвід розробки алгоритмів і програм для конкретних прикладних систем і уявляють особливості експлуатації й цільового застосування розроблювальної комп'ютерної системи (КС). Крім того, при експлуатації програмних комплексів можливий наступний алгоритм внесення програмного дефекту: дизасемблювання програмного коду, одержання вихідного тексту, привнесення в нього деструктивної програми, повторна компіляція, корегування ідентифікаційних ознак програми (у зв'язку з необхідністю одержання програми «схожої» на оригінал). Таким чином, маніпуляції подібного роду можуть зробити сторонні висококласні програмісти, що мають досвід розробки й налагодження програм на асемблерному рівні.
Як припущення при відповіді на друге питання слід зазначити, що алгоритмічні й програмні закладки можуть бути реалізовані в складі програмного компонента внаслідок наступних факторів:
у результаті ініціативних злочинних дій безпосередніх розроблювачів алгоритмів і програм;
у результаті штатної діяльності спеціальних служб й організацій, а також окремих зловмисників;
у результаті застосування інструментальних засобів проектування ПО, що несуть шкідливу властивість автоматичної генерації деструктивних програмних засобів.
Для опису мотивів злочинних дій при розробці програмних компонентів необхідно створити психологічний «портрет» зловмисника, що вимагає проведення спеціальних досліджень психологів і кримінологів в області психології програмування. Однак деякі мотиви очевидні вже зараз:
нестійкий психологічний стан алгоритмістів і програмістів, обумовлений складністю взаємин у колективі, перспективою втратити роботу, різким зниженням рівня добробуту, відсутністю впевненості в завтрашньому дні й т.п., у результаті чого може виникнути, а згодом бути реалізована, думка помсти;
незадоволеність особистих амбіцій безпосереднього розроблювача алгоритму або програми, що вважає себе невизнаним талантом, у результаті чого може з'явитися прагнення довести й показати кому-небудь (у тому числі й самому собі) таким чином свої високі інтелектуальні можливості;
перспектива виїзду за кордон на постійне місце проживання (перспектива переходу в іншу організацію) з надією одержати винагороду за відомості про програмну закладку й механізм її активізації, а також можливість таким способом заблокувати застосування певного класу програмних засобів по обраному місцю проживання (місцю роботи);
потенційна можливість одержати винагороду за усунення виниклої при випробуваннях або експлуатації системи «програмної відмови» і т.п.
Крім того, необхідно мати на увазі, що в конструюванні шкідливої програми, так чи інакше, є присутнім притягальний творчий початок, що саме по собі може стати метою. При цьому сам «творець» може слабко представляти всі можливі результати й наслідки застосування своєї «конструкції», або взагалі не замислюватися про їх.
Таким чином, правомірно стверджувати, що шкідливі програми, на відміну від широко застосовуваних електронних закладок, є більш витонченими об'єктами, що володіють більшою скритністю й ефективністю застосування.
Дотепер ми розглядали захист програмного забезпечення від руйнуючих програмних засобів. Однак застосування зловмисником тільки цих деструктивних засобів, не вичерпує всього кола проблем, пов'язаних із проблематикою забезпечення безпеки програм. Існує широкий спектр загроз, віднесених до несанкціонованого копіювання, незаконному одержанню, поширенню й використанню програмних продуктів.
«Програмне піратство» є, у зв'язку з великими матеріальними втратами, однією з основних проблем для фірм-розробників, так чи інакше, пов'язаних зі створенням і реалізацією програмного забезпечення. Програмні пірати купують або «беруть на прокат» необхідне програмне забезпечення й, якщо в ньому немає відповідного захисту, вони можуть скопіювати програми й використати їх без відповідної оплати (реєстрації, підтвердження ліцензійних угод, авторських прав і т.п.) за своїм розсудом. Таким чином, питання захисту ПЗ від несанкціонованого копіювання, поширення й використання є одним з найбільш важливих у комп'ютерній практиці. Всі відомі методи захисту ПЗ від несанкціонованого копіювання й поширення відносяться до організаційно-правових й інженерно-технічних методів. При рішенні зазначених завдань захисту сьогодні практично повністю відсутні теоретичні підстави. Зокрема, немає чіткого визначення проблеми й визначення того, що повинно бути її задовільним рішенням.
Завдання захисту програм від несанкціонованого копіювання, полягає в забезпеченні неможливості знаходження ефективного методу створення копій програм, у той час як завдання захисту програм від несанкціонованого поширення полягає в забезпеченні того факту, що тільки виробник ПЗ зміг би довести в суді, що саме він розробив це ПЗ.
При відповіді на питання про несанкціоноване копіювання програм необхідно відповісти на наступні питання:
що може зробити зловмисник («пірат») у ході спроб вивчення програми?
що є істотними знаннями про програму?
Для того щоб відповісти на вищезгадані питання необхідно розглядати найбільш зловмисне поводження зловмисника. Тобто необхідно розглядати сценарій найгіршого випадку, коли передбачається, що зловмисник може виконувати перетворену програму на довільних даних за своїм розсудом і може модифікувати дані, що циркулюють в обчислювальній системі, довільним чином.
Програмне забезпечення є однією з базових складових сучасних ІКС.
Розглянемо застосування до ПЗ моделі порушника, яка визначена в НД ТЗІ 1.1-002-99. Відповідно до рівнів можливостей, що надаються потенційним порушникам штатними засобами КС, можна виділити чотири групи умов щодо порушення безпеки ПЗ:
перший рівень визначає найнижчий рівень можливостей впливу на ПЗ - можливість взаємодії з ПЗ тільки через інтерфейси, що надаються ним (наприклад -- доступ до вебсерверу, програмні інтерфейси, інтерфейси користувача);
другий рівень визначається можливістю дослідження ПЗ в рамках повноважень (прав відповідно до авторизації), що надані користувачу, в тому числі створення і запуску необхідних додаткових програм;
третій рівень визначається створенням користувачем всіх необхідних умов для дослідження ПЗ, в тому числі шляхом впливу на базове програмне забезпечення системи, на склад і конфігурацію її устаткування;
четвертий рівень визначається всім обсягом можливостей осіб, що здійснюють проектування, реалізацію і модернізацію ПЗ, аж до включення до складу ПЗ власних програм з новими функціями обробки інформації.
Відповідно до такої класифікації можливими типовими ситуаціями, що потребують захисту ПЗ є:
злам ПЗ засобами АРМ, які надані користувачу;
злам ПЗ наявними та додатковими засобами АРМ;
створення найбільш зручного програмного (або програмно-апаратного) середовища для зламу ПЗ;
внесення в ПЗ таких властивостей, які сприяють зниженню його рівня захищеності.
Під час створення захищених автоматизованих систем, як правило розглядаються порушники першого та другого рівнів (або організаційно-технічними мірами створюють умови існування тільки таких порушників). Оскільки для зламу програмного забезпечення порушник прагне створити найбільш вигідні умови функціонування програми, як правило він може бути віднесений до порушників третього, в окремих випадках четвертого рівня.
Визначена вище різниця в умовах функціонування програмних засобів в складі захищених автоматизованих систем (в тому числі програмної складової їх КЗЗ) та окремих програмних засобів відображається в підходах до створення їх систем захисту, особливостях вибору методів та механізмів захисту.
Відмітимо також відмінність захисту ПЗ від захисту АС: З одного боку власник АС є зацікавленим в захисті її ресурсів, в тому числі і її ПЗ. З іншої точки зору, якщо використання нелегального ("зламаного") ПЗ дозволяє надавати АС додаткову функціональність і не призводить до появи суттєвих ризиків її функціонування, власник не завжди може надавати необхідної уваги всім аспектам захисту (в тому числі забезпеченню "ліцензійної чистоти") ПЗ.
Тому завдання захисту ПЗ доцільно розглядати в двох основних аспектах:
-- захист програмної складової даної автоматизованої системи;
-- захист окремої програми (прав, що пов'язані з нею) як об'єкту продаж або розповсюдження.
В рамках другого аспекту до основних цілей порушення безпеки ПЗ можна віднести:
незаконне використання ПЗ (всього ПЗ або його частини);
незаконне використання ідей, що реалізовані в ПЗ (алгоритмів, програмних інтерфейсів, інтерфейсів взаємодії з користувачем, інших технічних рішень);
Досягнення зазначених вище цілей пов'язане з реалізацією стосовно ПЗ наступних основних загроз:
несанкціоноване виконання програми або частини програмного коду;
несанкціонований доступ до програмного коду, в т.ч. з метою вивчення реалізованих в ньому алгоритмів, зміни або підміни програмного коду;
несанкціоноване копіювання програм.
Протидія визначеним вище загрозам безпеці ПЗ здійснюється з використанням таких груп методів захисту ПЗ:
1) технічні (в тому числі голографічні);
організаційні(наприклад порядок постачання та використання);
правові (наприклад, шляхом визначення законів, кодексів, інструкцій).
Наприклад до групи технічних методів захисту ПЗ можуть бути віднесені:
перевірка і забезпечення цілісності ПЗ;
забезпечення стійкості до цілеспрямованих і випадкових дестабілізуючих впливів;
ідентифікація користувача та/або середовища виконання;
захист від відновлення та/або вивчення вихідного програмного коду та алгоритмів функціонування ПЗ.
2. Методи захисту ПЗ від несанкціонованого доступу до програмного коду
Першою і, мабуть, найбільш легко виконуваною обфускацією є символьна обфускація. Обфускатори, які використовують символьну обфускацію називаються обфускаторамі першого покоління.
Символьна обфускація включає в себе обфускацію імен класів, назв методів, параметрів і т. п. Дані обфускатори застосовують такі методи:
· Перейменування методів, змінних і т.д. в набір безглуздих символів Наприклад: метод класу GetPassword(), після обфускаціі буде мати ім'я KJHS92DSLKaf(). Проте існує одна проблема - багато декомпіляторів, зустрічаючи на своєму шляху подібного роду імена замінюють їх на більш читабельні (method_1, method_2), тим самим зводячи всю роботу обфускатора нанівець.
· Перейменуванняв коротші імена. Проходячи по всіх класах, методах, параметрах, обфускатори замінюють імена на їх порядкові номери. Наприклад, метод - GetConnectionString(), після обфускаціїназивається 0(). Подібні обфускатори можна також використовувати як оптимізуючі компілятори. Також подібне рішення добре тим, що існує ймовірність того, що одне і те ж ім'я буде використано для іменування класу, методів класу (наприклад відрізняються тільки типом повертається значення). Це дозволить також заблокувати роботу окремих дизассемблерів.
· Використання для імен змінних нечитабельних символів. Частина обфускаторов вставляють в імена нечитабельні символи, наприклад символи японської мови. Не всі декомпілятори адекватно обробляють такі символи. Деякі замінюють імена з такими символами на більш зрозумілі, деякі проставляють замість незрозумілих символів їх код, деякі просто відмовляються працювати з даними символами.
· Використання ключових слів мов програмування. Цей вид символьної обфускаціі дозволить захиститися від самих примітивних декомпіляторов, які, побачивши в якості імені зарезервоване слово вважають, що файл не правильний і відмовляються з ним працювати.
· Використання імен, які змінюють зміст. Цей тип обфускації використовує психологічний чинник. Припустимо, був клас SecurityInformation з методом GetInformation, а став Car, з методом Wash. Звичайно, це може заплутати голову недосвідченому зломщикові, але процесу декомпіляції ніяк не зашкодить.
До більш складних обфускаторів, що дають більше гарантій, що Ваш код не зможуть зрозуміти зловмисники, відносяться обфускатори другого порядку. Вони застосовують методи обфускаціі даних і графа потоку керування.
Обфускація даних складається з таких методів, як:
· Зміна місця розташування даних - об'єднання декількох сутностей в одну або навпаки поділ однієї сутності на кілька. Наприклад: два рядки можуть бути об'єднані в масив рядків.
· Кодуючі перетворення. Деякі дані кодуються і в процесі виконання або завантаження програми декодуються.
· Заміна статичних членів на виклики методів. Деякі статичні члени замінюються на виклики методів.
· Додавання невикористовуваних даних. На основі невикористовуваних даних надалі формують помилкові умови.
· Зміна способу зберігання даних. Деякі відкриті члени робляться закритими і навпаки.
· Виконання фіналізації (finalization). Для певних полів і методів класу може бути виконана фіналізація (Finalization), тобто дані можуть бути захищені від перевизначення у класах нащадків, створених від класу, якому належить даний член. Даний процес зменшує час виконання програми.
Найбільш складною в плані реалізації, але найбільш стійкою до спроб злому є обфускація графа потоку керування. На сьогоднішній день існує лише кілька подібних обфускаторів. Обфускатори даного типу застосовують наступні методи:
· Перетворення обчислень. Даний метод полягає у вставці в алгоритми помилкових умов. 
· Видалення або додавання абстракцій коду. Видалення абстракцій коду дозволяє крім рішення задачі обфускаціі також оптимізувати роботу програми. Наприклад: обфускатор може замінити виклик який-небудь функції безпосередньо тілом функції, або навпаки одну функцію замінити на кілька маленьких функцій.
· Перемішування випадковим чином лінійних ділянок.
3. Захист від дослідження ПЗ створеного за допомогою технології .NET
· Обфускація коду програми. Цей метод є найбільш простим і поширеним.
· Компіляція збірки у машинний (native)код при його встановленні на комп'ютер користувача. Зокрема, це можна виконати з допомогою утиліти ngen, яка поставляється у комплекті із .NETFramework.Але, цей метод може призвести до деяких непередбачуваних наслідків, наприклад, при встановленні нової версії .NETFramework, програма, встановлена таким чином, може припинити працювати.
· Використання оптимізуючих компіляторів.
· Розроблення критичних частин програмного коду на ManagedC++, що дещо ускладнить процес декомпіляції.
· Розроблення критичних частин програмного коду на С++, з компіляцією його в машинний (native)код у формі динамічних бібліотек (dll) та їх подальше використання в програмі на .NETFramework. Для захисту коду отриманої dll можна використовувати ті ж самі методи, що й для звичайних програм.
· Виконання і зберігання критичних модулів програми на зовнішньому носії (наприклад, електронний ключ) чи в мережі (наприклад, інтернет), що унеможливлює доступ користувача до програмного коду цього модуля. Недоліком цього методу є необхідність використання деякого апаратного засобу або наявність підключення до мережі.
В курсовій роботі були розглянуті проблеми захисту програмного забезпечення, засоби і методи унеможливлення несанкціонованого дослідження програмного коду. Також була розглянута технологія .NETFramework, та проблеми захисту ПЗ створеного на її основі. Технологія .NETFramework дає розробникам багато зручних і корисних засобів, які дозволяють швидко створювати і розповсюджувати (за рахунок незалежності від апаратної платформи і використання MSIL) якісні програмні продукти. Але вона має суттєвий недолік - програми на її основі дуже легко піддаються дослідженню за допомогою декомпіляторів, таких як .NETReflector, роботу якого було розглянуто в курсовій роботі. Найбільш простим і найменш трудомістким способом захисту таких програм, є використання обфускаторів. Нажаль, на даний час, не існує безкоштовних обфускаторів .NET коду, які забезпечують достатньо високий рівень захисту. Проте існує досить багато платних обфускаторів, які використовують одночасно і символьну обфускацію, і заплутування програмного коду і заплутування потоку управління. Зокрема всі ці функції має DotfuscatorProfessionalEdition безкоштовна версія якого постачається разом із середою розроблення VisualStudio.
Причини незаконного використання програмного забезпечення. Дослідження збитку, нанесеного комп'ютерним піратством. Ризик роботи з нелегальним програмним забезпеченням і гідності ліцензійних програм. Види захисту прав виробників програмного забезпечення. реферат [60,8 K], добавлен 01.06.2010
Класифікація програмного забезпечення, системне та прикладне забезпечення, інструментальні системи. Програмна складова комп'ютерної системи, опис алгоритмів розв'язання певної задачі. Класифікація операційних систем, основні групи прикладних програм. презентация [945,0 K], добавлен 01.04.2013
Теоретичні відомості щодо головних принципів локалізації програмного забезпечення, основні технологічні способи його здійснення. Труднощі, пов`язані з цим процесом. Перекладацький аналіз україномовної локалізації програм XnView і VSO Image Resizer. дипломная работа [1,0 M], добавлен 16.07.2013
Аналіз методів емпіричної інженерії програмного забезпечення. Призначення та властивості програмного забезпечення та метрик проектів Openproj-1.4-src, TalendOpen Studio 3.2.1 та Рlazma-source 0.1.8, їх статистичний, кореляційний та регресійний аналіз. курсовая работа [2,7 M], добавлен 12.12.2010
Розробка компонентів програмного забезпечення системи збору даних про хід технологічного процесу. Опис програмного забезпечення: сервера, що приймає дані про хід технологічного процесу, КОМ для його імітування, робочої станції для відображення даних. курсовая работа [1,3 M], добавлен 20.11.2010
Класифікація об'єктно-орієнтованих мов програмування. Розробка алгоритмічного та програмного забезпечення комп'ютерної системи управління процесом випалювання будівельних матеріалів. Тестування програмного забезпечення, оцінка його ефективності. курсовая работа [1,6 M], добавлен 25.04.2015
Проблеми процесу тестування програмного забезпечення. Розробка алгоритму автоматичної генерації тестів і тестового набору для ручного виконання. Побудова тестів для системи "Банкомат" і для баг-трекінгової системи, представленої графом із циклами. дипломная работа [1,2 M], добавлен 26.02.2014
Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д. PPT, PPTX и PDF-файлы представлены только в архивах. Рекомендуем скачать работу .

© 2000 — 2021



Захист програмного забезпечення курсовая работа. Программирование, компьютеры и кибернетика.
Сочинение Егэ Война Вспоминается Мне
Сочинение Описание Моя Комната 6 Класс Урок
Реферат: Философия свободы 3
Легитимность Как Категория Господства Реферат
Реферат по теме Информация, неопределенность и риск в экономике
Курсовая На Тему Социальная Защита
Реферат: Внешнеторговая деятельность фирмы
Қазақ Халқының Киім Киюдегі Талғамы Эссе
Прочти Сочинение И Рассмотри План
Экономическое Учение Адама Смита Реферат
Меншиков Историческое Сочинение
Требования К Сочинению Егэ
Топливно Энергетический Комплекс России Реферат
Написать Сочинение Памятный День 6 Класс
Реферат по теме "Запад" и "Восток" в институциональном подходе к цивилизации
Курсовая работа по теме Топливно-энергетический комплекс России
Трудовое Право Ес Реферат
Реферат по теме Информация, информатика, представление информации
Дипломная работа по теме Особенности гражданско-правового положения отдельных видов акционерных обществ
Курсовая работа по теме Організація транспортних перевезень
Развитие познавательных процессов в различных образовательных технологиях - Педагогика творческая работа
Латинский язык как неизменный язык медицины - Иностранные языки и языкознание реферат
Виконання тематичної композиції молодшими школярами - Педагогика реферат


Report Page