МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
Кафедра ЗІ
Практична робота № 4
Захист програмного забезпечення та програмні методи захисту інформації
з навчальної дисципліни: “ Захист програмного забезпечення та програмні методи захисту інформації ”
Львів – 2013
Мета роботи: дослідити методи ЗПЗ та їх реалізацію.
Короткі теоретичні відомості
Системи захисту ПЗ широко поширені й перебувають у постійному розвитку, завдяки розширенню ринку ПЗ й телекомунікаційних технологій. Необхідність використання систем захисту (СЗ) ПЗ обумовлена рядом проблем, серед яких варто виділити: незаконне використання алгоритмів, що є інтелектуальною власністю автора, при написанні аналогів продукту (промислове шпигунство); несанкціоноване використання ПЗ (крадіжка й копіювання); несанкціонована модифікація ПЗ з метою впровадження програмних зловживань; незаконне поширення й збут ПЗ (піратство).
Існуючі системи захисту програмного забезпечення можна класифікувати по ряду ознак, серед яких можна виділити метод установки, використовувані механізми захисту й принцип функціонування.
Системи захисту ПЗ по методу установки можна підрозділити на системи, установлювані на скомпільовані модулі ПЗ; системи, що вбудовують у вихідний код ПЗ до компіляції; і комбіновані.
Системи першого типу найбільш зручні для виробника ПЗ, тому що легко можна захистити вже повністю готове й протестоване ПЗ (звичайно процес установки захисту максимально автоматизований і зводиться до вказівки імені файлу, що захищає, і натисканню "Enter"), а тому й найбільш популярні. У той же час стійкість цих систем досить низка (залежно від принципу дії СЗ), тому що для обходу захисту досить визначити крапку завершення роботи "конверта" захисту й передачі керування захищеній програмі, а потім примусово неї зберегти в незахищеному виді.
Системи другого типу незручні для виробника ПЗ, тому що виникає необхідність навчати персонал роботі із програмним інтерфейсом (API) системи захисту з витікаючими звідси грошовими й тимчасовими витратами. Крім того, ускладнюється процес тестування ПЗ й знижується його надійність, тому що крім самого ПЗ помилки може містити API системи захисту або процедури, його що використають. Але такі системи є більше стійкими до атак, тому що тут зникає чітка границя між системою захисту і як таким ПЗ.
По використовуваних механізмах захисту СЗ можна класифікувати на: системи, що використовують складні логічні механізми; системи, що використовують шифрування захисту ПЗ; і комбіновані системи.
Системи першого типу використовують різні методи й прийоми, орієнтовані на утруднення дизасемблювання, налагодження й аналізу алгоритму СЗ і ПЗ. Цей тип СЗ найменш стійкий до атак, тому що для подолання захисту досить проаналізувати логічні процедури перевірки й належним чином їх модифікувати.
Більше стійкими є системи другого типу. Для дезактивації таких захистів необхідне визначення ключа дешифрації ПЗ.
Самими стійкими до атак є комбіновані системи.
Для захисту ПЗ використовується ряд методів, таких як:
Алгоритми заплутування - використаються хаотичні переходи в різні частини коду, впровадження помилкових процедур - "пустишок", холості цикли, перекручування кількості реальних параметрів процедур ПЗ, розкид ділянок коду по різних областях ОЗУ й т.п.
Алгоритми мутації - створюються таблиці відповідності операндів - синонімів і заміна їх один на одного при кожному запуску програми за певною схемою або випадковим образом, випадкові зміни структури програми.
Алгоритми компресії даних - програма запаковується, а потім розпаковується в міру виконання.
Алгоритми шифрування даних - програма шифрується, а потім розшифровується в міру виконання.
Обчислення складних математичних виразів у процесі відпрацьовування механізму захисту - елементи логіки захисту залежать від результату обчислення значення якої-небудь формули або групи формул.
Методи утруднення дизасемблювання - використовуються різні прийоми, спрямовані на запобігання дизасемблювання в пакетному режимі.
Методи утруднення налагодження - використовуються різні прийоми, спрямовані на ускладнення налагодження програми.
Емуляція процесорів і операційних систем - створюється віртуальний процесор і/або операційна система (не обов'язково реально існуючі) і програма-перекладач із системи команд IBM у систему команд створеного процесора або ОС, після такого перекладу ПЗ може виконуватися тільки за допомогою емулятора, що різко утрудняє дослідження алгоритму ПЗ.
Нестандартні методи роботи з апаратним забезпеченням - модулі системи захисти звертаються до апаратур ЕОМ, минаючи процедури операційної системи, і використовують маловідомі або недокументовані її можливості.
За принципом функціонування СЗ можна поділити на:
пакувальники/шифратори;
СЗ від несанкціонованого копіювання;
СЗ від несанкціонованого доступу (НСД).
Завдання
Розроблення програмного забезпечення (ПЗ) у якому реалізовано метод захисту від НСД та розповсюдження :
Розробити календар*
розробити калькулятор*
Розробити годинник *
*які мають працювати у demo режимі до моменту введення ліцензійного ключа.
Текст програми
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
string login, password;
login = textBox1.Text;
password = textBox2.Text;
const string correct_login = "Admin";
const string correct_password = "a8_fD@y$2";
if ((login == correct_login) && (password == correct_password))
{
MessageBox.Show("Успішна авторизація", "Successful registration", MessageBoxButtons.OK, MessageBoxIcon.Information);
Close();
}
else
MessageBox.Show("Неправильний логін або пароль, попробуйте ще раз", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
Результат роботи програми
Висновок
Системи захисту ПЗ широко поширені й перебувають у постійному розвитку, завдяки розширенню ринку ПЗ й телекомунікаційних технологій. Необхідність використання систем захисту (СЗ) ПЗ обумовлена рядом проблем, серед яких варто виділити: незаконне використання алгоритмів, що є інтелектуальною власністю автора, при написанні аналогів продукту (промислове шпигунство); несанкціоноване використання ПЗ (крадіжка й копіювання); несанкціонована модифікація ПЗ з метою впровадження програмних зловживань; незаконне поширення й збут ПЗ (піратство).
Існуючі системи захисту програмного забезпечення можна класифікувати по ряду ознак, серед яких можна виділити метод установки, використовувані механізми захисту й принцип функціонування.
Системи захисту ПЗ по методуустановки можна підрозділити на системи, установлювані на скомпільовані модулі ПЗ; системи, що вбудовують у вихідний код ПЗ до компіляції; і комбіновані.
Системи першого типу найбільш зручні для виробника ПЗ, тому що легко можна захистити вже повністюготове й протестованеПЗ (звичайно процес установкизахисту максимально автоматизований і зводиться до вказівкиімені файлу, що захищає, і натисканню "Enter"), а тому й найбільш популярні. У той же час стійкість цих систем досить низка (залежно від принципу дії СЗ), тому що для обходу захисту досить визначитикрапку завершення роботи "конверта" захисту й передачі керування захищеній програмі, а потім примусово неї зберегти в незахищеному виді.
Системи другого типу незручні для виробника ПЗ, тому що виникає необхідність навчати персонал роботі із програмним інтерфейсом (API) системи захисту звитікаючими звідси грошовими й тимчасовими витратами. Крім того, ускладнюється процес тестування ПЗ й знижується його надійність, тому що крім самого ПЗ помилки може містити API системи захисту або процедури, його що використають. Але такі системи єбільше стійкими до атак, тому що тут зникає чітка границя між системою захисту і як такимПЗ.
По використовуваних механізмах захисту СЗ можна класифікувати на: системи, що використовують складні логічні механізми; системи, що використовують шифрування захистуПЗ; і комбіновані системи.
Системи першого типу використовують різні методи й прийоми, орієнтовані на утруднення дизасемблювання, налагодження й аналізу алгоритму СЗ і ПЗ. Цей тип СЗ найменш стійкий до атак, тому що для подолання захисту досить проаналізувати логічні процедури перевірки й належним чином їх модифікувати.
Більше стійкими є системи другого типу. Для дезактивації таких захистів необхідне визначення ключадешифраціїПЗ.