Зміст
ВСТУП 2
1 АНАЛІЗ СУЧАСНИХ НАВЧАЛЬНИХ СИСТЕМ 3
1.1 Основна інформація про навчальні системи 3
1.2 Автоматизовані навчальні системи 4
1.3 Автоматизована система керування технологічним процесом 5
1.4 Система автоматизованого проектування і розрахунку 6
2 ВИБІР СЕРЕДОВИЩА РОЗРОБКИ І МОВИ ПРОГРАМУВАННЯ 7
2.1 Аналіз сучасних середовищ розробки і мов програмування 7
2.2 Характеристика середовища С++ 12
3 ОСНОВНА КРИПТОГРАФІЧНА ІНФОРМАЦІЯ 15
3.1 Базові поняття криптографії 15
3.2 Методи шифрування 17
3.3 Шифри, використані в навчальній системі 18
4 СТРУКТУРА НАВЧАЛЬНОЇ СИСТЕМИ «КРИПТОГРАФІЯ» 24
4.1 Алгоритм роботи навчальної системи «Криптографія» 24
4.2 Інтерфейс і лістинг програми 26
ВИСНОВКИ 40
ПЕРЕЛІК ПОСИЛАНЬ 41
ВСТУП
Проблеми безпеки інформації за останні роки набули виключної актуальності, при цьому забезпечення захисту інформації приймає комплексний характер. Серед різних методів захисту інформації (технічних, правових, організаційних та інших) найважливіше місце займають криптографічні методи. За останні кілька десятирічь криптологія сформувалася у самостійну наукову дисципліну, що має свою специфіку постановок задач та методів їхнього дослідження. Знання основних понять криптології і володіння криптографічними методами захисту інформації за сучасних умов вкрай необхідні будь-якому фахівцю, що займається створенням систем захисту інформації.
Питаннями захисту інформації шляхом її перетворювання займається криптологія. Криптологія поділяється на два напрямки – криптографію і криптоаналіз. Криптографія – це наука і мистецтво створення шифрів, криптоаналіз – наука і мистецтво зламування цих шифрів. У доповнення до вивчення методів криптографії завжди треба вивчати методи криптоаналізу. Це необхідно для того, щоб оцінити уразливість криптографічних систем. Вивчення криптоаналізу допомагає покращувати методи криптографії.
Постійне збільшення об’єму важливої інформації та обмеженість навчального часу зумовлюють необхідність збільшення інтенсивності навчання, розробки та впровадження нетрадиційних технологій, що базуються на використанні обчислювальної техніки з застосуванням усього різноманіття та комплексності активних методів навчання. Розвиток інформаційних технологій надав нову, унікальну можливість проведення занять з впровадженням автоматизованих навчальних систем.
Навчальна система – це проблемно-орієнтований програмно-апаратний комп’ютерний комплекс, створений для навчання людини або групи людей безпосередньо в автоматичному режимі або спільно з викладачем.
Завданням дипломного проекту є розробка навчальної системи, яка зможе продемонструвати студентам можливості забезпечення захисту даних від несанкціонованого доступу використовуючи криптографічні методи.
Метою дипломного проекту є розробка програми для шифрування і дешифрування тексту за допомогою криптографічних алгоритмів. Для цього я використав шифри Цезаря, Плейфера, Віженера і Хілла.
1 АНАЛІЗ СУЧАСНИХ НАВЧАЛЬНИХ СИСТЕМ
1.1 Основна інформація про навчальні системи
Інформаційний вибух другої половини ХХ століття породив безліч проблем, найважливішою з яких є проблема навчання. Особливої уваги заслуговують питання, пов'язані з автоматизацією процесу навчання, оскільки "ручні методи" без використання технічних засобів давно вичерпали свої можливості. Найбільш доступною формою автоматизації навчального процесу є застосування ЕОМ, тобто використання машинного часу для навчання та обробки результатів контрольного опитування знань учнів.
На сьогодні створено безліч навчальних систем, які значною мірою відрізняються одна від одної. Найбільшого поширення на сьогодні набули системи, які забезпечують безпосередню взаємодію з учнем. Для того, щоб можна було дати оцінку конкретній навчальній системі слід провести якнайбільш загальну класифікацію систем та програмних засобів, на яких вони базуються. За принципами взаємодії програмних навчальних засобів і студента ці програмні засоби можна розділити на:
навчальні середовища, де студент має певну мету, а система допомагає йому у досягненні цієї мети;
навчальні програми, які демонструють навчальні матеріали з подальшим контролем їх засвоєння.
Жорсткої межі між навчальними середовищами і програмами немає. Єдина відмінність, що залишається – відсутність контролю засвоєння матеріалу в навчальних середовищах і наявність його в навчальних програмах. За функційним призначенням прийнято ділити комп'ютерні навчальні засоби, що входять у ту чи іншу навчальну систему на:
електронні (або комп'ютерні) підручники. Забезпечують можливість самостійно освоїти навчальний курс чи його розділ;
лабораторні практикуми. Дозволяють автоматизувати виконання лабораторних робіт за допомогою віртуалізації лабораторної установки чи організації віддаленого доступу до реальної установки;
тренажери. Служать для відпрацювання і закріплення навиків вирішення задач;
контролюючі програми. Призначені для перевірки якості знань студентів;
інструментальні системи. Це програмні комплекси, призначені для створення програм навчального призначення;
довідники, бази даних навчального призначення. Забезпечують зберігання і подачу слухачу різноманітної навчальних матеріалів довідкового характеру.
Також слід виділити два основні класи навчальних систем:
автоматизовані навчальні системи (АНС);
окремі програми, пакети програм і елементи автоматизованих систем (АСК ТП, САПР і ін.).
1.2 Автоматизовані навчальні системи
Автоматизовані навчальні системи (АНС) – це комплекси науково-методичної, навчальної та організаційної підтримки процесу навчання, що проводиться на базі комп'ютерних (інформаційних) технологій. З позицій сучасної дидактики введення інформаційного середовища і програмного забезпечення відкрило величезну кількість нових можливостей у всіх областях процесу навчання. Комп'ютерні технології являють собою принципово нові засоби навчання. За рахунок своєї швидкодії і великих резервів пам'яті вони дозволяють реалізовувати різноманітні середовища для програмованого і проблемного навчання, будувати різні варіанти діалогових режимів навчання, коли відповідь учня реально впливає на хід подальшого навчання.
Внаслідок цього сучасний педагогам необхідно освоювати нові освітні підходи, що спираються на засоби і методи індивідуального комп'ютерного навчання. У загальному випадку педагог отримує доступ до комп'ютерних засобів, інформаційного середовища та програмних продуктів, які призначені для забезпечення викладацької діяльності. Всі ці засоби утворюють комплекси АНС.
У рамках АНС на сьогоднішній день вирішуються завдання навчання, які можна об’єднати у дві групи. У першу групу відносять завдання перевірки рівня знань, умінь і навичок студентів до і після навчання, їх індивідуальних здібностей, нахилів та мотивацій. Для таких перевірок зазвичай використовують відповідні системи психологічних тестів та екзаменаційних питань. До цієї ж групи належать завдання перевірки показників працездатності учнів, які здійснюються шляхом реєстрації таких психофізіологічних показників, як рівень уваги, швидкість реакції і т.д.
Друга група завдань пов'язана з реєстрацією і статичним аналізом показників засвоєння навчального матеріалу: заклад індивідуальних розділів для кожного учня, визначення часу розв'язання задач, загального числа помилок і т.д. До цієї ж групи логічно віднести рішення задач управління навчальною діяльністю. Наприклад, завдань щодо зміни темпу подачі навчального матеріалу або порядку пред'явлення студенту нових блоків навчальної інформації в залежності від часу рішення, типу та кількості помилок. Таким чином, ця група завдань підтримує та реалізовує основні елементи програмованого навчання.
1.3 Автоматизована система керування технологічним процесом
Автоматизована система керування технологічним процесом (АСК ТП) (англ. process control system або industrial control system; ICS) — це автоматизований комплекс у вигляді системи програмних і технічних засобів, призначений для вироблення та реалізації керувальної дії на технологічний об'єкт керування згідно з прийнятими критеріями керування. Під АСК ТП зазвичай розуміється комплексне рішення, що забезпечує автоматизацію основних технологічних операцій на виробництві в цілому або якійсь його частині, що випускає відносно завершений продукт.
АСК ТП характеризується єдністю і взаємодією трьох основних складових, до яких відносяться:
об'єкт керування — технологічні процеси з агрегатами, апаратами, установками, засобами забезпечення матеріальних потоків, що з'єднують все устаткування та ін.;
технічні засоби — обробки інформації автоматичним обладнанням на базі мікропроцесорної техніки;
оперативний персонал — оператори-технологи, диспетчери, експлуатаційний персонал та ін.
Усі АСК ТП діляться на три глобальні класи:
SCADA (англ. Supervisory Control And Data Acquisition) — диспетчерське управління і збір даних. Основна задача системи — контроль і моніторинг об'єктів за участю диспетчера. У вузькому сенсі під SCADA розуміється програмний пакет візуалізації технологічного процесу. У широкому розумінні — це клас автоматизованих систем, які керують технологічним процесом;
DCS (англ. Distributed Control System) — розподілена система керування (РСК). Це система керування технологічним процесом, для якої характерна побудова розподіленої системи вводу/виводу та децентралізованою обробкою даних. DCS застосовуються переважно для керування неперервними і гібридними технологічними процесами. У першу чергу це стосується процесів, що тривають місяцями і навіть роками, зупинка яких, навіть на короткочасний період, може привести до псування продукції, що виготовляється, поломки технологічного устаткування або нещасних випадків;
PLC (англ. Programmable Logic Controller) — програмований логічний контролер (ПЛК). У вузькому розумінні це — апаратний модуль для реалізації алгоритмів автоматизованого керування з використанням логічних операцій, таймерів, і (в деяких моделях) неперервне регулювання відповідно до заданого закону. У широкому сенсі під PLC розуміється клас систем. Хоча PLC може керувати компонентами системи, що використовуються в SCADA і DCS системах, вони часто є основним компонентом у структурах невеликих систем управління у багатьох галузях виробництва.
1.4 Система автоматизованого проектування і розрахунку
Система автоматизованого проектування (САП) — автоматизована система, розроблена для автоматизації технологічного процесу проектування виробу, результатом якого є комплект проектно-конструкторської документації, достатньої для виготовлення та подальшої експлуатації об'єкта проектування. Реалізується на базі спеціального програмного забезпечення, автоматизованих баз даних і широкого набору периферійних пристроїв.
Система автоматизованого проектування і розрахунку (САПР) — комп'ютерна система обробки інформації, що призначена для автоматизованого проектування, розроблення і виготовлення кінцевого продукту, а також оформлення конструкторської та/або технологічної документації. САПР включає такі технології:
технологія автоматизованого проектування (англ. Computer-aided design, CAD);
технологія автоматизованого виробництва (англ. Computer-aided manufacturing, CAM);
CAE (англ. Computer-aided engineering) — технологія автоматизованої розробки;
CALS (англ. Continuous Acquisition and Life cycle Support) — постійна інформаційна підтримка постачання і життєвого циклу.
САПР виконує такі функції:
конструкторська – розрахунок і проектування повного комплекту конструкторської документації;
технологічна – розрахунок і проектування технологічних схем, технологічного оснащення, транспорту;
архітектурно-будівельн – розрахунок і проектування металевих і залізобетонних конструкцій;
санітарно-технічні систем – розрахунок і проектування теплопостачання, опалення і вентиляції виробничих і адміністративних корпусів, а також водопостачання і каналізації;
електротехнічних систем – розрахунок і проектування електропостачання, електросилового устаткування, світлотехнічної частини проектів і телемеханізації електропостачання;
гідротехнічний споруджень – розрахунок і проектування напірного і безнапірного гідротранспорту відвальних хвостів, стійкості укосів хвостосховищ;
системи автоматизації – розрахунок і проектування схем зовнішніх з'єднань, електричних і трубних проводок щитів автоматики;
кошторисна – складання локальних і зведених кошторисів, відомостей матеріалів, специфікацій, комплектація обладнання.
2 ВИБІР СЕРЕДОВИЩА РОЗРОБКИ І МОВИ ПРОГРАМУВАННЯ
2.1 Аналіз сучасних середовищ розробки і мов програмування
Мова програмування – це знакова система для опису алгоритмів програми, яка орієнтована на конкретних виконавців (насамперед ЕОМ).
Знакова система складається з трьох компонентів:
правила, що описують синтаксис;
правила, що задають семантику синтаксично правильних конструкцій;
правила, що формують прагматику синтаксично правильних конструкцій.
Є багато класифікацій мов програмування, але наукова теорія поки що відсутня. Основні три класифікації склалися історично:
за функціональною ознакою:
універсальні мови (в них можна промоделювати практично будь-який алгоритм);
спеціалізовані мови (орієнтовані на певні класи задач);
за предметною орієнтацією. Мови програмування для розв’язання певного класу задач, наприклад, задач символьної обробки (Lisp, Cobol) або для обробки флеш-кліпів (АctionScript) і т.п.
за рівнем абстракції:
мови низького рівня (машинно-залежні);
мови високого рівня (орієнтовані на користувача до певної міри);
Pascal, C, Fortran і т.п.
Як окремий клас слід виділити мови програмування баз даних (БД), призначені для маніпуляції великими централізованими масивами даних і отримання з них інформації. Більшість таких мов (Access, FoxPro, 4GL та ін.) мають розвинені процедурні елементи. Фактичним стандартом стала мова запитів до БД SQL.
Інтегроване середовище розробки (англ. Integrated development environment або integrated debugging environment IDE) – це система програмних засобів, яка використовується для розробки програмного забезпечення (ПЗ). Середовище розробки включає в себе:
текстовий редактор;
компілятор і / або інтерпретатор;
засоби автоматизації збирання;
відлагоджувач.
IDE іноді містить також засоби для інтеграції з системами керування версіями і різноманітні інструменти для спрощення конструювання графічного інтерфейсу користувача. Багато сучасних середовищ розробки також включають браузер класів, інспектор об'єктів і діаграму ієрархії класів – для використання при об'єктно-орієнтованій розробці ПЗ. Хоча й існують IDE, розраховані для декількох мов програмування (Eclipse, NetBeans, Embarcadero RAD Studio, Qt Creator або Microsoft Visual Studio), але зазвичай в IDE використовується лише одна певна мова програмування (Visual Basic, Delphi, Dev-C++).
Окремий випадок IDE – це середовища візуальної розробки, які включають в себе можливість візуального редагування інтерфейсу програми. Рейтинг кращих середовищ розробки для C / C++ від G2 Crowd зображено на рис. 2.1.
/
Рисунок 2.1 - Рейтинг кращих середовищ розробки для C / C++ від G2 Crowd
(https://itvdn.com/ru/blog/article/cplspls-top7)
Інтегровані середовища розробки були створені для максимізації продуктивності програміста завдяки тісно пов'язаними компонентами з простими для користувача інтерфейсами. Це дозволить розробнику зменшити кількість дій для перемикання різних режимів, що характерно для дискретних програм розробки. Але IDE є складним програмним комплексом, тому лише після тривалого процесу навчання середовище розробки зможе якісного прискорити процес розробки ПЗ.
Інтегроване середовище розробки зазвичай представляє з себе єдину програму, в якій проводиться вся розробка. Вона зазвичай містить багато функцій для створення, зміни, компілювання, розгортання і налагодження програмного забезпечення. Мета IDE полягає в тому, щоб абстрагувати користувача від конфігурації, необхідної щоб об'єднати утиліти командного рядка в одному модулі. Це дозволяє зменшити час, потрібний для вивчення мови, і підвищити продуктивність розробника.
Більшість сучасних інтегрованих середовищ розробки є графічними, хоч і використовувалися ще до того, як з'явилися системи управління вікнами (які реалізовані в Microsoft Windows або X11 для *nix-систем). Вони були засновані на тексті, використовуючи функціональні клавіші або гарячі клавіші, щоб виконати різні завдання (наприклад, Turbo Pascal). Використання IDE для розробки ПЗ є прямою протилежністю підходу, в якому використовуються незв'язані інструменти, такі як текстовий редактор, компілятор і т.п.
Geany – це вільне середовище розробки програмного забезпечення, написане з використанням бібліотеки GTK2. Доступне для наступних операційних систем: BSD, Linux, Mac OS X, Solaris і Windows. Geany поширюється згідно GNU General Public License. Geany не включає до свого складу компілятор. Замість цього використовується GNU Compiler Collection (або будь-який інший компілятор) для створення виконуваного коду. Логотип середовища розробки програмного забезпечення Geany зображено на рис. 2.2.
/
Рисунок 2.2 - Логотип Geany
(https://ru.wikipedia.org/wiki/Geany)
Microsoft Visual Studio – це лінійка продуктів компанії Microsoft, що включають ряд інструментальних засобів, в тому числі інтегроване середовище розробки програмного забезпечення. Дані продукти дозволяють розробляти як консольні додатки, так і додатки з графічним інтерфейсом, в тому числі з підтримкою технології Windows Forms, а також веб-сайти, веб-додатки, веб-служби як в рідному, так і в керованому кодах для всіх платформ, які підтримують Microsoft Windows, Windows Mobile, Windows CE, .NET Framework, .NET Compact Framework і Microsoft Silverlight. Visual Studio включає в себе редактор вихідного коду з підтримкою технології IntelliSense і можливістю найпростішого рефакторінга коду. Вбудований відлагоджувач може працювати як відлагоджувач рівня вихідного коду, так і як відлагоджувач машинного рівня. Серед решти вбудованих інструментів є редактор форм для спрощення створення графічного інтерфейсу додатку, веб-редактор, дизайнер класів і дизайнер схеми бази даних. Visual Studio дозволяє створювати і підключати сторонні додатки (плагіни) для збільшення функціональності практично на кожному рівні, починаючи додаванням підтримки систем контролю версій вихідного коду, додаванням нових наборів інструментів і закінчуючи інструментами для інших аспектів циклу розробки ПЗ. Логотип середовища розробки програмного забезпечення Microsoft Visual Studio зображено на рис. 2.3.
/
Рисунок 2.3 – Логотип Microsoft Visual Studio
(https://ru.wikipedia.org/wiki/Microsoft_Visual_Studio)
MonoDevelop – це вільне середовище розробки, призначене для створення додатків на C#, Java, Boo, Nemerle, Visual Basic .NET, Vala, CIL, C і C ++. Також планується підтримка Oxygene з боку Embarcadero Technologies. Спочатку це був порт SharpDevelop на Mono / GTK +, але з тих пір проект далеко відійшов від початкового стану. MonoDevelop є частиною проекту Mono. Логотип середовища розробки програмного забезпечення MonoDevelop зображено на рис. 2.4.
/
Рисунок 2.4 – Логотип MonoDevelop
(https://ru.wikipedia.org/wiki/MonoDevelop)
SharpDevelop – це вільне середовище розробки на C #, Visual Basic .NET, Boo, IronPython, IronRuby, F #, C++. Зазвичай використовується тими, кому не хоче користуватися Visual Studio .NET. Існує також форк на Mono / Gtk + - MonoDevelop. SharpDevelop 2.0 надає інтегрований відлагоджувач, який використовує власні бібліотеки і взаємодіє з виконавчим середовищем .NET через COM Interop. Хоча SharpDevelop 2.0 (як і VS2005) використовує файли проекту в форматі MSBuild, він як і раніше може використовувати компілятори від .NET Framework 1.0 і 1.1, а також від Mono. Логотип середовища розробки програмного забезпечення SharpDevelop зображено на рис. 2.5.
/
Рисунок 2.5 – Логотип SharpDevelop
(https://ru.wikipedia.org/wiki/SharpDevelop)
C++ Builder Community Edition - це повнофункціональне інтегроване середовище розробки, яке призначене для створення додатків для iOS, Android, Windows і macOS з використанням єдиної бази коду C++ (обмежена ліцензія на використання в комерційних цілях). C++ Builder Community Edition безкоштовно розповсюджується всередині спільноти і включає в себе редактор коду, потужні інструменти для налагодження, вбудовану функцію доступу до популярних локальних баз, що містить живі дані, прямо під час розробки, можливості Bluetooth і IoT, а також засіб розробки візуальних інтерфейсів користувача, яке підтримує досконале до рівня пікселів стилістичне оформлення для конкретної платформи. Логотип C++ Builder зображено на рис. 2.6.
/
Рисунок 2.6 – Логотип C++ Builder
(https://www.iesoft.ru/products/embarcadero/c-builder-professional/)
2.2 Характеристика середовища С++
C++ Builder — це програмний продукт, інструмент швидкої розробки додатків (RAD), інтегроване середовище розробки (IDE) і система, яка використовується програмістами для розробки програмного забезпечення на мові програмування C++.
Спочатку розроблявся компанією Borland Software, а потім її підрозділом CodeGear, який на сьогоднішній день належить компанії Embarcadero Technologies. C++ Builder спочатку створювався тільки для платформи Microsoft Windows. Але більш пізні версії, які містять крос-платформову компонентну бібліотеку Borland, підтримують і Windows, і Linux.
В 2003 році Borland випустила C++BuilderX (CBX), написаний за допомогою тієї ж інфраструктури, що і JBuilder, який при цьому був мало схожим на C++ Builder або Delphi. Цей продукт призначався для розробки великих програм для великих компаній, але комерційно успішним не став. В кінці 2004 року Borland оголосила, що продовжить розвиток класичного C++ Builder і об'єднає його з середовищем розробки Delphi, таким чином, припинивши розробку C++ BuilderX. Приблизно через рік після цього оголошення, Borland випустила Borland Developer Studio 2006, який включав у себе Borland C++Builder 2006, що надавав покращене керування конфігурацією та зневадженням. Borland Developer Studio 2006 — єдиний повноцінний комплект, який містив Delphi, C++ Builder та C# Builder.
В 2007 році CodeGear випустила C++Builder 2007, в якому реалізувала повну підтримку API Microsoft Windows Vista, збільшила повноту відповідності стандарту ANSI C++, збільшила швидкість компіляції і збірки до 500 %, включила підтримку MSBuild, архітектур баз даних DBX4 і «VCL для Web», які підтримують AJAX. Підтримка API Microsoft Windows Vista включила в себе додатки, з самого початку оформлені в стилі Vista, і природну підтримку VCL для Aero та Vista Desktop. CodeGear RAD Studio 2007 містить C++ Builder 2007 і Delphi. Також в 2007 році CodeGear «воскресила» марку «Turbo» і випустила дві «Turbo» версії C++ Builder: Turbo C++ Professional і Turbo C++ Explorer (безкоштовний), які базуються на Borland C++ Builder 2006.
В кінці 2008 року компанія CodeGear випустила нову версію RAD Studio, в яку увійшли Delphi 2009 і C++ Builder 2009. В 2009 році у складі RAD Studio вийшов C++ Builder 2010.
Раніше повідомлялося, що наступна версія, CodeGear C++ Builder (кодове ім'я «Commodore»), буде мати підтримку x86-64 і можливість створювати машинний x86-64 код. Однак у 2010 році в складі RAD Studio XE включена версія C++ Builder XE без цієї функціональності.
C++ Builder об'єднує в собі комплекс об'єктних бібліотек (STL, VCL, CLX, MFC та ін.), компілятор, відлагоджувач, редактор коду та багато інших компонентів. Більшість компонентів, розроблених в Delphi, можна використовувати і в C++ Builder без модифікації, але зворотнє твердження не вірне.
Система містить Бібліотеку з понад 100 повторно використовуваних візуальних компонентів, які перетягуються мишею на форму і відразу стають елементами керування прототипу вашої програми. Крім відомих елементів управління Windows (кнопки, лінійки прокрутки, поля редагування, прості і комбіновані списки і т.д.), бібліотека містить нові компоненти підтримки діалогів, обслуговування баз даних і багато інших.
Після розміщення компонентів на формі інспектор об'єктів допоможе встановлювати їх властивості і наказувати подіям коди обробки. Проект буде будуватися поступово, на тлі вироблених вами змін у властивостях, подіях і функціях використовуваних елементів. Добре продумано поділ і редагування програмного модуля за двома його частинами: інтерфейсної і кодової.
Версія C++ Builder в RAD Studio поставляється з VCL – відзначеним нагородами фреймворком для створення високопродуктивних native-додатків для Windows і потужною платформою FireMonkey (FMX) для кроссплатформенних призначених для користувача інтерфейсів. Крім вбудованих компонентів VCL і FireMonkey доступний широкий асортимент інструментів і компонентів, пропонованих спільнотами Delphi і C ++ Builder.
Отже, головними для мене причинами обрати саме C++ BUILDER були:
швидкий і зручний для розробки простих програм VCL фреймворк;
досвід роботи в цьому IDE під час навчання;
можливість використовувати C++ Builder Community Edition, яка безкоштовно поширюється для розробників-фрілансерів, молодих компаній, студентів і некомерційних організацій.
При створенні програми я враховував наступні аспекти:
по-перше, хороший захист інформації обходиться дорого. Тоді як поганий захист нікому не потрібен, бо наявність хоча б однієї "дірки" означає повну марність всього захисту в цілому (принцип суцільного захисту). Тому перш ніж вирішувати питання про захист інформації, слід вирішити, чи варта вона того. Чи здатний можливий збиток від розголошення або втрати інформації перевищити витрати на її захист? З цією ж метою треба максимально звузити коло інформації, що захищається, щоб не витрачати зайвих грошей і часу;
по-друге, перш ніж захищати інформацію, не зайве визначити перелік ймовірних загроз, оскільки від всього на світі все одно захиститися неможливо. Можливий варіант, коли необхідно уберегти дані від несанкціонованого доступу ззовні, наприклад, з Інтернету. Можливо, однак, що чужих хакерів ваші дані зовсім не цікавлять, і слід захищати інформацію тільки від власних співробітників. Можливо також, що викрадення або розголошення вашої інформації нікому не зашкодить, але ось її підміна може завдати вам шкоди. У всіх трьох випадках методи захисту будуть сильно відрізнятися;
по-третє, при плануванні схеми захисту інформації велике значення має не тільки її об'єктивна надійність, але і ставлення до захисту інших людей. У деяких випадках достатньо, щоб ви самі були впевнені в достатній надійності захисту. А в інших – це потрібно довести іншим людям (наприклад, замовникам), які часто не розуміються у відповідних питаннях.
3 ОСНОВНА КРИПТОГРАФІЧНА ІНФОРМАЦІЯ
3.1 Базові поняття криптографії
Інформація – це відомості про осіб, факти, предмети, події, явища і процеси, незалежно від форми їх уявлення.
Захист інформації – це сукупність методів і засобів, що забезпечують цілісність, конфіденційність і доступність даних за умов впливу на них загроз природного або штучного характеру, реалізація яких може призвести до завдання шкоди користувачам і власникам інформації.
Інформаційною безпекою називають заходи для захисту інформації від неавторизованого доступу, руйнування, модифікації, розкриття і затримок у доступі. Інформаційна безпека гарантує досягнення таких цілей:
конфіденційність критичної інформації;
цілісність інформації і пов’язаних з нею процесів (створення, введення, обробки, виведення);
доступність до інформації у разі потреби;
облік усіх процесів, пов’язаних з інформацією.
Деякі технології із захисту системи і забезпечення обліку всіх подій вбудовані в самий комп’ютер, інші – в програми. Деякі виконуються людьми і є реалізацією вказівок, що містяться у відповідних керівних документах.
Автоматизована система (АС) – це організаційно-технічна система, що об'єднує фізичне середовище, обчислювальну систему, персонал і оброблювану інформацію.
Загроза – це потенційно можлива дія, процес, подія або явище, яке може привести до нанесення збитку інтересам певної фізичної чи юридичної особи. Реалізацією загрози є порушення роботи АС. За природою виникнення загрози поділяються на природні та штучні.
Природні загрози – це загрози, викликані дією на АС об'єктивних фізичних процесів або стихійних природних явищ, які не залежать від людини. До таких відносяться: стихійні лиха, опади, радіоактивне випромінювання, магнітні бурі тощо, а також загрози опосередковано технічного характеру, пов'язані з надійністю технічних засобів обробки інформації і підсистем забезпечення роботи АС.
Штучні загрози – це загрози, що викликані діяльністю людини. Вони поділяються на:
ненавмисні – загрози, пов'язані з випадковими діями людей, через незнання, цікавість, халатність, але без злого наміру;
навмисні – дії людини, що здійснюються умисне для того, щоб нанести власникові АС збитки, отримати власну вигоду тощо.
Загрози інформаційної безпеки можуть бути класифіковані за аспектом інформаційної безпеки, на який вони спрямовані:
загрози доступності (здійснення дій, які унеможливлюють чи ускладнюють доступ до ресурсів інформаційної системи). Порушення доступності являє собою створення умов, при яких доступ до послуги або інформації або заблокований, або можливий за час, який не забезпечить виконання тих чи інших бізнес-цілей;
загрози цілісності (неправомірна зміна даних інформаційної системи). Загрози порушення цілісності пов'язані з імовірністю модифікації тієї чи іншої інформації, що зберігається в інформаційній системі. Порушення цілісності може бути викликано різними чинниками — від умисних дій персоналу до виходу з ладу обладнання;
загрози конфіденційності (неправомірний доступ до даних інформаційної системи сторонніх суб'єктів). Загроза порушення конфіденційності являє собою отримання доступу до деякої інформації обмеженого доступу сторонніми суб’єктами. У зв'язку з загрозою порушення конфіденційності, використовується термін «витік».
Криптологія — це наука, яка включає криптографію та криптоаналіз.
Криптографія — це наука про математичні методи забезпечення конфіденційності і автентичності інформації. Вона розвинулась з практичної потреби передавати важливі відомості найнадійнішим методом. Для математичного аналізу криптографія використовує інструментарій абстрактної алгебри.
Криптоаналіз — це наука, про математичні методи порушення конфіденційності і цілісності інформації без знання ключа. Займається оцінкою сильних і слабких сторін методів шифрування, а також розробкою методів, які дозволяють зламувати криптосистеми.
Криптографічний захист інформації — це вид захисту інформації, що реалізується за допомогою перетворень інформації з використанням спеціальних даних (ключових даних) з метою приховування (або відновлення) змісту інформації, підтвердження її справжності, цілісності, авторства тощо.
Ключ — це секретний параметр (в ідеалі, відомий лише двом сторонам) для окремого контексту під час передачі повідомлення. Ключі мають велику важливість, оскільки без змінних ключей алгоритми шифрування легко зламуються і непридатні для використання в більшості випадків. Історично склалось так, що шифри часто використовувалися для шифрування та дешифрування, без виконання додаткових процедур, таких як аутенифікація або перевірка цілісності.
Дослідження характеристик мов, що мають будь-яке відношення до криптології, таких як частоти появи певних літер, комбінацій літер, загальні шаблони, тощо, називається криптолінгвістикою.
Тривалий час під криптографією розумілось лише шифрування — процес перетворення звичайного повідомлення (відкритого тексту) в незрозумілий набір символів (шифротекст). Дешифрування — це обернений процес відтворення інформації із шифротексту. Шифром називається пара алгоритмів шифрування/дешифрування.
До нашого часу, криптографія займалася виключно забезпеченням конфіденційності повідомлень — шифруванням на стороні вілправника і дешифруванням на стороні одержувача, роблячи повідомлення неможливим для прочитання для зловмисника, який перехопив або підслухав його без знання секретного ключа, необхідного для дешифровки повідомлення. В останні десятиліття сфера застосування криптографії розширилася і включає не лише таємну передачу повідомлень, але і методи перевірки цілісності повідомлень, ідентифікування відправника/одержувача (аутентифікація), цифрові підписи, інтерактивні підтвердження, технології безпечного спілкування тощо.
Для сучасної криптографії характерне використання відкритих алгоритмів шифрування, що припускають використання обчислювальних технологій. Відомо чимало перевірених алгоритмів шифрування, які при використанні ключа необхідної довжини і коректної реалізації алгоритму, роблять шифрований текст недоступним для криптоаналізу.
3.2 Методи шифрування
В основу методів криптографії покладено модель, що передбачає можливість несанкціонованого доступу до інформації, яка передається каналами зв’язку. Згідно з цією моделлю перед відправленням повідомлення перетворюється у шифротекст за допомогою функції шифрування. Крім вихідного повідомлення, або відкритого тексту, параметром цієї функції є деяке число, що називається ключем шифрування. При одному і тому повідомленні різним значенням ключа відповідають різні шифротексти. Для того, щоб від шифротексту перейти до відкритого тексту на приймальному боці застосовується функція дешифрування. Таким чином, для того, щоб отримати відкритий текст треба знати ключ.
До сучасних методів шифрування пред'являється ряд жорстких вимог:
таємність ключа повинна забезпечувати таку криптостійкість шифру, щоб єдиним способом розкрити шифротекст (при відомому алгоритмі) було тільки повний перебір усіх можливих параметрів ключа. Не повинно бути простих і легко встановлюваних залежностей між ключами (або їх параметрами), які послідовно використовуються в процесі шифрування. Час для дешифрування повідомлення, що визначається числом операцій, має виходити за межі можливостей сучасних комп'ютерів;
шифротекст не повинен значно перевищувати за об’ємом вихідну інформацію. Помилки, що можуть виникнути при шифруванні, не повинні призводити до спотворень і втрати інформації. Трудомісткість шифрування не повинна бути занадто великою, а її вартість повинна співвідноситися з цінністю інформації.
За типом ключів методи шифрування поділяють на шифрування з симетричним і несиметричним ключем. За способом перетворення виділяють:
методи підстановки (заміни), полягають в заміні за певним правилом символів вихідної інформації, записаних в одному алфавіті, символами з іншого алфавіту;
методи перестановки, коли символи відкритого тексту переставляються за певним алгоритмом всередині шифруемого блоку символів;
аналітичні методи шифрування, засновані на використанні аналітичних перетворень матричної алгебри;
адитивні методи шифрування (гамування), в яких використовується послідовне підсумовування цифрових кодів (символів) вихідної інформації з деякою спеціальною послідовністю кодів, яка називається гамою;
комбіноване використання методів. На практиці найбільшого поширення набули наступні комбінації: перестановка + гамування; підстановка + перестановка; підстановка + гамування; гамування + гамування.
3.3 Шифри, використані в навчальній системі
Шифр Цезаря – це симетричний алгоритм шифрування методом підстановки. Використовувався римським імператором Юлієм Цезарем для приватного листування.
Принцип дії полягає в тому, щоб циклічно зсунути алфавіт, а ключем виступає кількість літер, на які робиться зсув, як це зображено на рис. 3.1.
/
Рисунок 3.1 – Принцип дії шифру Цезаря
(https://ru.wikipedia.org/wiki/%D0%A8%D0%B8%D1%84%D1%80_%D0%A6%D0%B5%D0%B7%D0%B0%D1%80%D1%8F)
Якщо зіставити кожному символу алфавіту його порядковий номер (нумеруючи з 0), то шифрування і дешифрування можна виразити формулами:
S = ( V + K ) mod N
V = ( S – K ) mod N,
де V — символ відкритого тексту, S — символ шифрованого тексту, N — потужність алфавіту, а K — ключ.
Шифр Цезаря має дуже мало ключів — на одиницю менше, ніж літер в абетці. Тому перебрати усі ключі не складає особливої роботи. Дешифрування з одним з ключів швидко дасть вірний відкритий текст.
Шифр Цезаря, як і будь-який моноалфавітний шифр, вразливий до частотного криптоаналізу. Навіть легше зламати його простим перебором, бо кількість можливих ключів зовсім невелика — для українського алфавіту всього тридцять два варіанти. Метод Цезаря не надає майже ніякого криптографічного захисту, але він ліг в основу більш складних алгоритмів (наприклад шифру Віженера).
Частотний криптоаналіз може зламати шифр Цезаря як і звичайний підстановочний шифр, у зв'язку з тим, що частота появи кожної літери в шифртексті не відрізняється від частоти у відкритому тексті. Якщо припустити, що частота появи літер у відкритому тексті приблизно відповідає середньостатистичній відносній частоті появи літер в текстах мови, на якій написано повідомлення, тоді ключ знаходиться зіставленням перших декількох літер, що трапляються найчастіше у відкритому та зашифрованому текстах.
Шифр Плейфера або квадрат Плейфера – це ручна симетрична техніка шифрування, в якій вперше використана заміна біграм. Винайдена в 1854 році Чарльзом Уитстоном, але названа ім'ям Лорда Лайона Плейфера, який впровадив даний шифр в державні служби Великобританії. Шифр передбачає шифрування пар символів (біграм) замість одиночних символів, як у шифрі підстановки або навіть більш складних системах шифрування. Таким чином, шифр Плейфера більш стійкий до злому в порівнянні з шифром простої заміни, так як частотний криптоаналіз утруднений. Він може бути проведений, але не для 32 можливих символів (український алфавіт), а для 32х32 = 1024 можливих біграм. Аналіз частоти біграм можливий, але є значно більш важким і вимагає набагато більшого обсягу зашифрованого тексту.
Для латинського алфавіту шифр Плейфера використовує таблицю 5х5 (для кириличного алфавіту необхідно збільшити розмір таблиці до 4х8), що містить ключове слово або фразу. Щоб створити таблицю і використовувати шифр досить запам'ятати ключове слово і чотири простих правила. Щоб скласти ключову таблицю, в першу чергу потрібно заповнити порожні клітинки таблиці літерами ключового слова (не записуючи повторювані символи), потім заповнити комірки таблиці, що залишилися, символами алфавіту, які не зустрічаються в ключовому слові, по порядку (в англійських текстах або опускається символ "Q", або "I" і "J" об'єднуються в одну комірку, щоб зменшити алфавіт). Ключове слово може бути записано по спіралі з лівого верхнього кута до центру, або у верхньому