Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
ІКТА
ЗІ
З В І Т
до лабораторної роботи №4
з дисципліни: «Захист програмного забезпечення»
на тему: «Дослідження методів захисту програмного забезпечення та їх реалізація»
Львів 2017
Мета роботи: дослідити основні методи захисту програмного забезпечення та навчитися їх реалізовувати.
Теоретичні відомості
Для захисту ПО використовується ряд методів:
Алгоритми заплутування – використовуються хаотичні переходи в різні частини коду, упровадження помилкових процедур – «пусток», не суміжних циклів, перекручування кількості реальних параметрів процедур ПО, розкид ділянок коду по різних областях ОЗУ і т.п.
Алгоритми мутації – створюються таблиці відповідності операндів – синонімів і заміна їх один на інший при кожному запуску програми за визначеною схемою або випадковим чином, випадкові зміни структури програми.
Алгоритми компресії даних – програма архівується, а потім розпаковуються в мірі виконання програми.
Алгоритми шифрування даних – програма шифрується, а потім розшифровуються в мірі виконання програми.
Обчислення складних математичних функцій у процесі роботи механізму захисту – елементи логіки захисту залежать від результату обчислення значення якої не будь математичної функції.
Методи ускладнення зворотної розробки – використовуються різні прийоми, спрямовані для запобігання зворотної розробки в пакетному режимі.
Методи ускладнення налагодження – використовуються різні прийоми, спрямовані на ускладнення налагодження програми.
Емуляція процесорів і операційних систем – створюється віртуальний процес - процес і/або операційна система (не обов'язково існуючі) і програма перекладач із системи команд IBM у систему команд створеного процесора або ОС, після такого перекладу ПО може виконуватися тільки за допомогою емулятора, що різко утрудняє дослідження алгоритму ПО.
Нестандартні методи роботи з апаратним забезпеченням – модулі системи захисти звертаються до апаратури ЕОМ, минаючи процедури ОС, і використовують маловідомі або не документовані її можливості.
У свою чергу, зловмисники так само застосовують ряд методів і засобів для порушення систем захисту. Ситуація протистояння розроблювачів і зловмисників постійно змінюється за рахунок комбінування уже відомих методів захисту і нападу, а так само за рахунок створення і використання нових методів.
За принципом функціонування СЗ можна підрозділити на наступні:
Пакувальники / шифратори
СЗ від несанкціонованого копіювання
СЗ від несанкціонованого доступу (НСД)
Переваги і недоліки основних систем захисту
Розглянемо переваги і недоліки основних систем захисту ПО виходячи з принципів їхнього функціонування.
Пакувальники, шифратори
Системи захисту від несанкціонованого копіювання
Системи захисту від несанкціонованого доступу
Парольні захисти
Системи «прив'язки» ПО
Програмно-апаратні засоби захисту ПО з використанням електронних ключів
Засоби захисту ПО з «ключовими дисками»
Лістинг роботи коду програми
Код програми SecSoft.cs:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace SecSoft
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
textBox1.PasswordChar = '*';
textBox2.Text = monthCalendar1.SelectionStart.ToString();
}
private void button1_Click_1(object sender, EventArgs e)
{
if (textBox1.Text == "2017")
{
groupBox1.Visible = false;
label2.Visible = true;
textBox2.Visible = true;
button2.Visible = true;
monthCalendar1.Visible = true;
}
else
MessageBox.Show("Вірний ключ!");
textBox1.Clear();
}
private void button2_Click(object sender, EventArgs e)
{
this.Close();
}
private void monthCalendar1_DateChanged_1(object sender, DateRangeEventArgs e)
{
textBox2.Text = monthCalendar1.SelectionStart.ToString();
}
}
}
Висновок
під час виконання лабораторної роботи було творено календар, який було захищено паролем – ключем. Програма виконана з використанням мови програмування C#.