Please use this identifier to cite or link to this item:
https://er.chdtu.edu.ua/handle/ChSTU/6869| Title: | Реалізація підсистеми криптографічного захисту інформаційних ресурсів на базі алгоритму AES |
| Authors: | Панаско, Олена Миколаївна Гоцуц, Олексій Дмитрович |
| Keywords: | криптоалгоритми;криптоалгоритм AES;математичні основи;раундове перетворення;ключовий розклад;інтерфейс користувача |
| Issue Date: | 2023 |
| Abstract: | "Метою роботи є створення підсистеми криптографічного захисту інформаційних ресурсів. Завдання: досліджено природу симетричних шифрів, їх переваги та недоліки; проаналізовано відомі криптоалгоритми; розроблено програмний код програми на мові програмування Python; проведено тестування програми; обрано платформу та оптимальні засоби для розробки. " |
| URI: | https://er.chdtu.edu.ua/handle/ChSTU/6869 |
| Appears in Collections: | 125 Кібербезпека та захист інформації (Безпека інформаційних і комунікаційних систем) |
Files in This Item:
| File | Description | Size | Format | |
|---|---|---|---|---|
| Б_125_Гоцуц_Панаско.pdf Restricted Access | 2.87 MB | Adobe PDF | View/Open Request a copy |
Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.
Extracted text
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ
ФАКУЛЬТЕТ ЕЛЕКТРОННИХ ТЕХНОЛОГІЙ,
АВТОТРАНСПОРТУ ТА МАШИНОБУДУВАННЯ
КАФЕДРА РОБОТОТЕХНІЧНИХ І ТЕЛЕКОМУНІКАЦІЙНИХ СИСТЕМ
ТА КІБЕРБЕЗПЕКИ
До захисту допущено
завідувач кафедри РТСК
д.т.н., професор
_______________ В.В. Палагін
"_____" _____________ 2023 року
Пояснювальна записка
до дипломного роботи
бакалавра
(освітньо-кваліфікаційний рівень)
на тему Реалізація підсистеми криптографічного захисту інформаційних
ресурсів на базі алгоритму AES
Виконав: студент 4 курсу, групи БІ-91+ск
Спеціальності 125 – «Кібербезпека»,
(шифр і назва спеціальності)
освітньої програми «Безпека інформаційних і
комунікаційних систем»
(назва освітньої програми)
Гоцуц О.Д.
(прізвище та ініціали)
Керівник Панаско О.М.
(прізвище та ініціали)
Рецензент
(прізвище та ініціали)
Черкаси – 2023 року
Форма № Н-9.01
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ
Факультет електронних технологій, автотранспорту та машинобудування
Кафедра робототехнічних і телекомунікаційних систем та кібербезпеки
Освітньо-кваліфікаційний рівень бакалавр
Спеціальність 125 – Кібербезпека
Освітня програма – Безпека інформаційних і комунікаційних систем
ЗАТВЕРДЖУЮ
Завідувач кафедри В.В. Палагін
“_____” ___________________ 2023 року
ЗАВДАННЯ
НА ВИПУСКНУ РОБОТУ СТУДЕНТУ
Гоцуцу Олексію Дмитровичу
(прізвище, ім’я, по батькові)
1. Тема проекту (роботи) Реалізація підсистеми криптографічного захисту
інформаційних ресурсів на базі алгоритму AES
керівник проекту (роботи) Панаско Олена Миколаївна
(прізвище, ім’я, по батькові, науковий ступінь, вчене звання)
затверджені наказом вищого навчального закладу від «28» 02 2023 року № 45/04
2. Термін здачі студентом закінченої роботи «05» 06 2023 року_________
3. Вихідні дані до роботи: Провести огляд та оцінку криптографічних систем в
контексті захисту інформації. Дослідити криптоалгоритм AES, структуру,
математичні основи, раундове перетворення, ключовий розклад, розшифрування та
режими виконання симетричного блокового шифрування даних. Реалізувати підсистему
криптографічного захисту інформаційних ресурсів на базі алгоритму AES.
4. Зміст розрахунково-пояснювальної записки (перелік питань, що їх належить розробити)
Вступ; Теоретичні основи криптографічних систем в контексті захисту інформації;
Структура математичні основи, раундове перетворення, ключовий розклад,
розшифрування та режими виконання симетричного блокового шифрування даних;
Реалізація підсистеми криптографічного захисту інформаційних ресурсівна базі
алгоритму AES; Охорона праці; Висновки; Список використаних джерел.
5. Перелік графічного матеріалу (з точним зазначенням обов’язкових креслень, плакатів):
Мета та актуальність дослідження, Переваги та недоліки AES шифрування;
Характеристики криптоалгоритму AES в контексті довжини ключа; Схема роботи
алгоритму; Аналіз чинників, що впливають на швидкодію алгоритму; Проектування
інтерфейсу; Структура модуля aes.py; Тестування швидкодії програми.
.
6. Консультанти з проекту (роботи) із зазначенням розділів проекту, що їх стосуються
Підпис, дата
Прізвище, ініціали та посада
Розділ завдання завдання
консультанта
видав прийняв
7. Дата видачі завдання 28 лютого 2023 року
КАЛЕНДАРНИЙ ПЛАН
Строк виконання
№ Назва етапів дипломного
етапів проекту Примітка
з/п проекту (роботи)
(роботи)
1. П ошук і аналіз інформації по заданій темі 28.02.2023-
10.03.2023
2. Н аписання 1-го розділу: Теоретичні основи 11.03.2023-
виявлення фішингових веб-сайтів 25.03.2023
3. Н аписання 2-го розділу: Методи та моделі 26.03.2023-
машинного навчання для виявлення фішингу 10.04.2023
4. Н аписання 3-го розділу: Розробка та реалізація 11.04.2023-
системи автоматичного виявлення фішингових 09.05.2023
сайтів
5. Н аписання вступу і висновків, складання 10.05.2023-
списку літератури 19.05.2023
6. О формлення пояснювальної записки 20.05.2023-
29.05.2023
7. О формлення плакатів презентації 30.05.2023-
05.06.2023
Студент Гоцуц О.Д.
( підпис ) (прізвище та ініціали)
Керівник проекту (роботи) Панаско О.М.
( підпис ) (прізвище та ініціали)
ЗМІСТ
ВСТУП .............................................................................................................................. 6
1 ОГЛЯД ТА ОЦІНКА КРИПТОГРАФІЧНИХ СИСТЕМ В КОНТЕКСТІ
ЗАХИСТУ ІНФОРМАЦІЇ ............................................................................................... 8
1.1 Сфера застосування та актуальність симетричних шифірів .............................. 8
1.2 Побудова та аналіз сучасних методів симетричного шифрування ................. 13
1.2.1 DES .................................................................................................................. 13
1.2.2 AES .................................................................................................................. 17
1.2.3 Blowfish ........................................................................................................... 20
1.3 Сфери застосування симетричних криптоалгоритмів ...................................... 22
2 КРИПТОАЛГОРИТМ AES. СТРУКТУРА, МАТЕМАТИЧНІ ОСНОВИ,
РАУНДОВЕ ПЕРЕТВОРЕННЯ, КЛЮЧОВИЙ РОЗКЛАД, РОЗШИФРУВАННЯ
ТА РЕЖИМИ ВИКОНАННЯ СИМЕТРИЧНОГО БЛОКОВОГО ШИФРУВАННЯ
ДАНИХ. .......................................................................................................................... 24
2.1 Основні характеристики криптоалгоритму AES .............................................. 24
2.2 Представлення даних в криптоалгоритмі АЕS ................................................. 25
2.3 Загальна структура AES ...................................................................................... 27
2.4 Математичні основи криптоалгоритму AES ..................................................... 28
2.5 Раундове перетворення в AES ............................................................................ 29
2.6 Ключовий розклад в AES .................................................................................... 33
2.7 Розшифрування в алгоритмі AES ....................................................................... 34
2.8 Режими виконання симетричного блокового шифрування ............................. 35
3 РЕАЛІЗАЦІЯ ПІДСИСТЕМИ КРИПТОГРАФІЧНОГО ЗАХИСТУ
ІНФОРМАЦІЙНИХ РЕСУРСІВ НА БАЗІ ФЛГОРИТМУ AES ............................... 45
3.1 Обґрунтування вибору програмного середовища розробки ........................... 45
3.2 Опис концепції програмної реалізація AES шифрування ............................... 46
3.3 Реалізація інтерфейсу користувача .................................................................... 57
3.4 Тестування ............................................................................................................ 70
3.5 Шивидкодія програми ......................................................................................... 72
ЧДТУ.22.21090.005 ПЗ
Зм. А рк. № докум. Підпис Дата
Розроб. Гоцуц О.Д.
Реалізація підсистеми Літ. Аркуш Аркушів
Перевір. Панаско О.М. криптографічного захисту 4 89
інформаційних ресурсів на базі
Н.Контрол. Байрак А.В. алгоритму AES ЧДТУ, БІ-91+ск
Затвердж.
Палагін В.В.
4 ОХОРОНА ПРАЦІ ..................................................................................................... 76
4.1 Аналіз небезпек та шкідливостей, що впливають на системних
адміністраторів ........................................................................................................... 76
4.2 Модернізація системи загального штучного освітлення ................................. 83
ВИСНОВКИ ................................................................................................................... 88
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ ..................................................................... 89
Лист
ЧДТУ.22.21090.005 ПЗ 5
Зм Арк №Докум. Підп Дат
ВСТУП
У сучасному цифровому світі захист даних стає дедалі важливішим
питанням. З поширенням технологій та інтернету люди постійно створюють
особисті дані та обмінюються ними, які можуть бути зібрані третіми особами та
використані з різною метою.
Зокрема, до особистих даних належить будь-яка інформація, яка може бути
використана для ідентифікації особи, наприклад, ім'я, адреса, номер телефону,
адреса електронної пошти, номер соціального страхування та фінансова
інформація. Ця інформація може бути зібрана різними способами, зокрема під час
онлайн-діяльності, взаємодії в соціальних мережах та офлайн-транзакцій.
Питання захисту персональних даних виникають тому, що люди часто не
можуть контролювати те, як їхні персональні дані збираються, використовуються
або передаються третім особам. Це може мати низку негативних наслідків,
включно з крадіжкою особистих даних, шахрайством і вторгненням у приватне
життя.
Для розв'язання цієї проблеми в багатьох країнах було ухвалено закони та
нормативні акти, спрямовані на захист персональних даних громадян. Наприклад,
у Європейському союзі 2018 року було запроваджено Загальний регламент із
захисту даних (GDPR) для посилення захисту даних і прав на недоторканність
приватного життя. Постанова вимагає, щоб організації отримували явну згоду від
фізичних осіб перед збором і використанням їхніх персональних даних, і
передбачає, що фізичні особи мають право на доступ до своїх персональних даних
і контроль над ними.
Аналогічним чином, у США 2020 року було ухвалено Закон Каліфорнії про
захист приватного життя споживачів (CCPA), щоб дати людям більше контролю
над своїми особистими даними. Згідно з цим законом, люди мають право знати, які
персональні дані про них збирають, і можуть вимагати, щоб їхню інформацію
видалили або не продавали третім особам.
Лист
ЧДТУ.22.21090.005 ПЗ 6
Зм Арк №Докум. Підп Дат
Незважаючи на ці ініціативи у сфері конфіденційності, все ще існує безліч
проблем, що перешкоджають дотриманню прав приватних осіб на
конфіденційність. Наприклад, багато організацій продовжують збирати особисті
дані без згоди людей, і людям буває важко зрозуміти, які дані про них збираються
і як вони використовуються. [1]
Для розв'язання цих проблем важливо, щоб люди знали про свої права на
недоторканність приватного життя і робили кроки щодо захисту своїх
персональних даних. Це охоплює обережність під час передачі особистих даних в
Інтернеті, використання налаштувань конфіденційності на платформах соціальних
мереж і використання надійних паролів і шифрування для захисту конфіденційної
інформації.
Загалом, захист персональних даних - це важливе питання, що зачіпає людей
у всьому світі. Спільними зусиллями щодо зміцнення законів і нормативних актів
про захист приватного життя та вжиття запобіжних заходів для захисту
персональних даних ми можемо забезпечити дотримання прав людей на приватне
життя в сучасний цифровий вік.[2]
Метою дипломною роботи є створення підсистеми криптографічного
захисту інформаційних ресурсів.
Завданням дипломної роботи є:
− дослідження предметної області розробляємої системи;
− аналіз відомих алгоритмів, їх позитивних рис та недоліків;
− вибір платформи для розробки програмного продукту;
− розробка програмного коду програми, тестування.
Лист
ЧДТУ.22.21090.005 ПЗ 7
Зм Арк №Докум. Підп Дат
1 ОГЛЯД ТА ОЦІНКА КРИПТОГРАФІЧНИХ СИСТЕМ В КОНТЕКСТІ
ЗАХИСТУ ІНФОРМАЦІЇ
1.1 Сфера застосування та актуальність симетричних шифірів
Симетричні шифри є фундаментальним компонентом сучасних систем
шифрування і, як такі, мають дуже широку сферу застосування. Вони
використовуються для захисту даних як при зберіганні, так і при передачі, і
відіграють життєво важливу роль у забезпеченні конфіденційності та цілісності
конфіденційної інформації. Види шифрування інформації наведено на рисунку 1.1.
Рисунок 1.1 – Види шифрування інформації.
Лист
ЧДТУ.22.21090.005 ПЗ 8
Зм Арк №Докум. Підп Дат
Переваги та недоліки симетричного шифрування.
Переваги:
Швидкість і ефективність. Симетричне шифрування є швидшим і
ефективнішим, ніж асиметричне шифрування, оскільки воно використовує той
самий ключ для шифрування та дешифрування. Це робить його ідеальним
рішенням для додатків у реальному часі, таких як онлайн-ігри та відеоконференції.
Універсальність. Симетричне шифрування можна використовувати в
широкому діапазоні додатків, від захисту особистих даних до захисту мережевого
зв’язку.
Сумісність. Симетричне шифрування можна легко застосувати на різних
пристроях, що робить його сумісним з багатьма платформами та програмами.
Безпека. Симетричне шифрування є безпечним методом шифрування даних,
коли ключ зберігається в секреті, а алгоритм шифрування надійний. Він забезпечує
високий рівень конфіденційності та гарантує, що лише призначений одержувач
може отримати доступ до даних і розшифрувати їх.
Економічно. Оскільки симетричне шифрування використовує лише один
ключ, воно економічніше, ніж асиметричне шифрування, для якого потрібні два
ключі.
Недоліки:
Розподіл ключів. Основним недоліком симетричного шифрування є те, що
той самий ключ використовується для шифрування та дешифрування, а це означає,
що ключ має бути безпечно розподілений між відправником і одержувачем. Якщо
ключ потрапить у чужі руки, дані можна легко розшифрувати.
Керування ключами. Керування симетричним ключем може бути складним
завданням, оскільки вимагає безпечного зберігання, резервного копіювання та
розповсюдження. Ключ також слід регулярно змінювати, щоб забезпечити безпеку
зашифрованих даних.
Обмежена масштабованість. симетричне шифрування не масштабується, і
той самий ключ не можна використовувати для шифрування даних для кількох
Лист
ЧДТУ.22.21090.005 ПЗ 9
Зм Арк №Докум. Підп Дат
одержувачів. Це робить його непридатним для програм, які вимагають обміну
даними з кількома сторонами.
Вразливість до атак грубої сили. симетричне шифрування вразливе до атак
грубої сили, коли зловмисник пробує всі можливі комбінації ключа, доки не знайде
правильну. Цей ризик можна зменшити, використовуючи довший ключ і
надійніший алгоритм шифрування.
Відсутність автентичності. симетричне шифрування не забезпечує
цілісності чи автентичності даних, що означає, що зловмисник може змінити
зашифровані дані без відома одержувача.[14]
Однією з найважливіших переваг симетричних шифрів є їхня швидкість та
ефективність. Оскільки вони використовують один і той же ключ для шифрування
і дешифрування, вони набагато швидші, ніж асиметричні шифри, які
використовують різні ключі для цих операцій. Ця швидкість робить симетричні
шифри дуже придатними для додатків, які вимагають високого рівня шифрування,
наприклад, для захисту каналів зв'язку і шифрування великих обсягів даних. [4]
Схема симетричного шифрування наведена на рисунку 1.2.
Рисунок 1.2 – Схема симетричного шифрування
Однак симетрична криптографія також має деякі обмеження. Одним з
головних обмежень є необхідність безпечного розповсюдження секретного ключа
Лист
ЧДТУ.22.21090.005 ПЗ 10
Зм Арк №Докум. Підп Дат
серед усіх сторін, що беруть участь у комунікації. Якщо ключ скомпрометований,
зловмисник може легко використати його для розшифрування всіх зашифрованих
даних. Це завдання особливо складне в ситуаціях, коли багато сторін повинні
спілкуватися безпечно, наприклад, у великих мережевих середовищах.[3]
Рисунок 1.3 – Схема асиметричного шифрування
Асиметрична криптографія (рис. 1.3), з іншого боку, також відома як
криптографія з відкритим ключем, використовує два різні ключі, один для
шифрування, а інший для розшифрування. Цей метод забезпечує вищий рівень
безпеки, оскільки немає необхідності використовувати один і той самий секретний
ключ. Замість цього кожна сторона має відкритий і закритий ключі, причому
відкритий ключ може вільно розповсюджуватися. Однак асиметрична
криптографія працює повільніше, ніж симетрична, тому вона не підходить для
додатків, які вимагають швидкого шифрування.
Ще однією важливою перевагою асиметричної криптографії є більша
свобода в управлінні ключами. У симетричній криптографії, якщо секретний ключ
змінюється, новий ключ повинен бути розповсюджений серед усіх сторін, що
беруть участь у спілкуванні. З асиметричною криптографією кожному
користувачеві потрібно лише створити нову пару ключів і розповсюдити новий
Лист
ЧДТУ.22.21090.005 ПЗ 11
Зм Арк №Докум. Підп Дат
відкритий ключ за потреби. Це полегшує управління великими системами
шифрування з великою кількістю учасників.
Таким чином, симетрична криптографія є ключовим компонентом сучасних
систем шифрування, забезпечуючи швидке та ефективне шифрування, придатне
для широкого спектру застосувань. Асиметрична криптографія забезпечує більшу
безпеку і гнучкість в управлінні ключами, але є повільнішою і менш ефективною,
ніж симетрична криптографія. Вибір між цими двома підходами залежить від
конкретних потреб програми.
Крім того, як симетричне, так і асиметричне шифрування мають свої
переваги і недоліки і часто використовуються разом в гібридних системах
шифрування, щоб використовувати обидва підходи. Такі гібридні системи
шифрування використовують симетричне шифрування для шифрування даних і
асиметричне шифрування для шифрування симетричного ключа, який
використовується для шифрування. Такий підхід дозволяє уникнути проблеми
розподілу симетричного ключа шифрування, забезпечуючи при цьому швидкість і
ефективність симетричного шифрування.[5]
Слід зазначити, що алгоритми симетричного шифрування, як і інші
алгоритми шифрування, вразливі до атак кваліфікованих зловмисників, які мають
доступ до критичних обчислювальних ресурсів. Тому вкрай важливо
використовувати сильні та надійні алгоритми симетричного шифрування, які не
піддаються атакам.
Прикладами широко використовуваних алгоритмів симетричного
шифрування є Advanced Encryption Standard (AES), Data Encryption Standard (DES)
та Blowfish. [15]
Таким чином, симетрична криптографія відіграє важливу роль у сучасних
системах шифрування, забезпечуючи швидке та ефективне шифрування, що є
необхідним для захисту конфіденційних даних у різних сферах. Асиметрична
криптографія, пропонуючи більшу безпеку і гнучкість, часто є повільнішою і менш
ефективною. Тому вибір між цими двома підходами залежить від конкретних
Лист
ЧДТУ.22.21090.005 ПЗ 12
Зм Арк №Докум. Підп Дат
потреб конкретної програми, а гібридні схеми шифрування часто
використовуються для отримання переваг обох підходів.
1.2 Побудова та аналіз сучасних методів симетричного шифрування
Симетричні алгоритми шифрування можна розділити на алгоритми
потокового шифрування і алгоритми блокового шифрування. Потокові алгоритми
шифрування обробляють текст повідомлення послідовно. Блокові алгоритми
обробляють повідомлення за допомогою блоків фіксованого розміру. Довжина
блоку в принципі становить 64 біти, але алгоритм AES використовує 128-розрядні
блоки.
Симетричні алгоритми шифрування не завжди використовуються ізольовано.
Сучасні криптографічні системи використовують комбінацію симетричних і
асиметричних алгоритмів, щоб отримати переваги обох систем. До таких систем
відносяться SSL, PGP і GPG. Асиметричні алгоритми використовуються для
розподілу ключів для більш швидких симетричних алгоритмів.
Існує кілька схем симетричного шифрування, кожна з яких має свої переваги
і недоліки. Найпоширеніші симетричні схеми шифрування включають DES (Data
Encryption Standard), AES (Advanced Encryption Standard) і Blowfish. Кожна з цих
схем шифрування відрізняється розміром ключа, розміром блоку та алгоритмом
шифрування, що впливає на безпеку та ефективність шифрування.
1.2.1 DES
Алгоритм шифрування DES (Data Encryption Standard) – один з
найпоширеніших і найвідоміших алгоритмів шифрування,що використовується
для захисту конфіденційної інформації. DES був створений у 1970-х роках у
співпраці з Національним інститутом стандартів США із араз замінений більш
безпечним стандартом AES(Advanced Encryption Standard). Загальна схема процесу
шифрування криптоалгоритму DES наведена на рисунку 1.4.
Лист
ЧДТУ.22.21090.005 ПЗ 13
Зм Арк №Докум. Підп Дат
Рисунок 1.4 – Загальна схема процеcу шифрування DES
DES використовується для шифрування і дешифрування даних в галузях, де
необхідно захищати конфіденційну інформацію, таких як банківська справа,
торгівля, телекомунікації та управління системами.
DES працює за принципом блочного шифру, де відкритий текст розбивається
на 64-розрядні блоки. Кожен блок шифрується окремо за допомогою 56-бітного
ключа. Цей ключ усікається до 64 біт і використовується для модифікації блоку в
процесі шифрування. Шифрування блоку виконується за 16 ітерацій, кожна з яких
передбачає перестановку і заміну бітів у блоці даних.
Ось покроковий алгоритм DES шифрування:
1. Генерація ключів
− Генерація ключів починається з 64-бітного ключа, який потім
стискається до 56 біт шляхом видалення кожної 8-ї біта (також відомої як біти
парності).
− Потім ключ розбивається на дві половини 28 біт кожна.
− Кожна половина зсувається вліво на один або два біти відповідно до
заздалегідь визначеного розкладу зсуву в залежності від поточного раунду.
Лист
ЧДТУ.22.21090.005 ПЗ 14
Зм Арк №Докум. Підп Дат
− Потім дві половини ключа поєднуються разом і стискуються до 48 біт
за допомогою таблиці стиснення.
2. Початкова перестановка
− Кожен 64-бітовий блок даних, який має бути зашифрований,
переставляється початковою перестановкою відповідно до заздалегідь визначеної
таблиці перестановок. Таблиця перестановок наведена на рисунку 1.5.
Рисунок 1.5 – Таблиця перестановок
− Результатом є блок даних, що складається з двох половинок по 32 біт
кожна.
3. Раунди шифрування
− Кожен блок даних відбувається через 16 раундів шифрування. У
кожному раунді відбувається таке:
− Права половина блоку даних розширюється до 48 біт шляхом
застосування таблиці розширення.
− Розширена права половина поєднується з одним з 16 підключів,
згенерованих на етапі генерації ключів, шляхом застосування операції XOR.
− Результат XOR розбивається на 6-бітні блоки, кожен з яких
проходить через таблицю заміни S-Box (рис. 1.6), де кожен блок замінюється на 4-
бітний блок, що відповідає індексу таблиці.
− Чотири 4-бітові блоки об'єднуються разом і переставляються за
допомогою заздалегідь визначеної таблиці перестановок.
− Отриманий результат XOR-іється з лівою половиною блоку
даних.
Лист
ЧДТУ.22.21090.005 ПЗ 15
Зм Арк №Докум. Підп Дат
− Ліва та права половини блоку даних змінюються місцями для
використання у наступному раунді.
Рисунок 1.6 – Таблиця S-боксів
4. Фінальна перестановка
− Після 16 раундів шифрування ліва та права половини блоку даних
об'єднуються разом і проходять через фінальну перестановку, яка є зворотною
початковою перестановкою.
5. Результат
− Результатом шифрування є зашифрований 64-бітний блок даних.
Лист
ЧДТУ.22.21090.005 ПЗ 16
Зм Арк №Докум. Підп Дат
На момент створення, DES був досить безпечним алгоритмом, але з часом
були виявлені вразливості в атаках з використанням спеціалізованого обладнання
та шкідливого програмного забезпечення. В результаті був розроблений більш
безпечний стандарт AES, який зараз використовується для шифрування
конфіденційної інформації. Однак DES все ще використовується в деяких
застарілих системах, тому важливо знати про його принципи роботи та вразливості.
Однією з вразливостей DES є те, що довжина ключав56бітробить його
вразливим до атаки грубого підбору ключа: хочаDES має стійку структуру
шифрування, зловмисник намагатиметься підібрати ключ, перебираючи всі
можливі комбінації, що вимагає значних обчислювальних потужностей.
Другою вразливістю DES є можливість атаки на зв'язок між блоками даних,
якщо зловмисник може перехопити і модифікувати дані під час передачі. Ця
вразливість відома як “атака з відкритим текстом” (known-plaintext attack).
Третя вразливість полягає в тому, що DES може піддаватися атакам типу
"зловмисник посередині", які дозволяють зловмиснику перехоплювати і
модифікувати дані між двома партнерами, що спілкуються.
Тим не менш, DES залишається важливим алгоритмом шифрування в деяких
галузях, які використовують стандарти на основі DES, таких як банківська справа і
торгівля. Наприклад, стандарт Triple DES використовує три ключі по 56 біт кожен,
що значно підвищує захищеність ключа від атак грубої сили.
1.2.2 AES
Одним з найпоширеніших алгоритмів симетричного шифрування на
сьогоднішній день є Advanced Encryption Standard (AES). Цей алгоритм
щонайменше в шість разів швидший за потрійний DES.
DES довелося замінити, оскільки розмір ключа був занадто малий. Зі
збільшенням обчислювальних потужностей він став вразливим до атак вичерпного
перебору ключів.
Потрійний DES був розроблений для подолання цього недоліку, але виявився
повільним.
Лист
ЧДТУ.22.21090.005 ПЗ 17
Зм Арк №Докум. Підп Дат
Особливості AES шифрування:
− Безпека: AES вважається одним з найбільш безпечних
криптографічних алгоритмів. Він є стандартом для захисту конфіденційної
інформації, який використовується у багатьох системах.
− Швидкодія: AES шифрування забезпечує швидку обробку даних
порівняно з іншими криптографічними алгоритмами, що дозволяє його
використовувати у вимогливих за швидкістю системах.
− Ефективність: AES може працювати з ключами різної довжини, що
дозволяє його використовувати для шифрування даних різних розмірів.
− Легкість використання: AES шифрування є досить легким у
використанні і налагодженні, що дозволяє його використовувати у різних галузях.
− Гнучкість: AES може працювати з різними режимами шифрування,
такими як ECB, CBC, CFB, OFB і CTR. Кожен з них має свої переваги та недоліки
і може використовуватися в залежності від потреб користувача.
− Криптографічна міцність: AES вважається криптографічно міцним
алгоритмом, який важко піддаватися злому, навіть з використанням сучасних
обчислювальних систем.
− Відкритий стандарт: AES є відкритим стандартом, що дозволяє його
використання в різних системах та пристроях без необхідності використання
патентних прав.
AES базується на "мережі підстановки-заміни". Вона складається з ряду
пов'язаних функцій, деякі з яких замінюють вхідні дані на певні вихідні
(підстановка), а інші перерозподіляють біти (переупорядкування).
Цікаво, що AES виконує всі обчислення в байтах, а не в бітах. Іншими
словами, AES розглядає 128 біт блоку звичайного тексту як 16 байт. Ці 16 байт
розташовуються в чотири стовпці і чотири рядки і обробляються як таблиця.
На відміну від DES, кількість раундів в AES варіюється і залежить від
довжини ключа; AES використовує 10 раундів для 128-бітових ключів, 12 раундів
для 192-бітових ключів і 14 раундів для 256-бітових ключів. Для кожного з цих
Лист
ЧДТУ.22.21090.005 ПЗ 18
Зм Арк №Докум. Підп Дат
раундів використовується окремий 128-бітний ключ, який обчислюється з
оригінального ключа AES.
Покроковий алгоритм AES шифрування:
1. Вихідні дані
− 128-бітний блок даних, який потрібно зашифрувати.
− Ключ шифрування, який є 128, 192 або 256 біт.
2.Початковий стан
− Початковий блок даних ініціалізує початковий стан AES.
− Початковий стан є матрицею 4x4 байтів, яка називається "стан".
3.Раунди
− AES має кілька раундів шифрування, кожен із яких застосовує різні
перетворення до стану.
− Кількість раундів залежить від довжини ключа: 10 раундів для 128-
бітного ключа, 12 раундів для 192-бітного ключа та 14 раундів для 256-бітного
ключа.
− Кожен раунд складається з наступних кроків:
a. SubBytes - обробляє кожен байт стану незалежно і виконує
нелінійну заміну байтів з використанням S-боксу. Ця операція забезпечує
нелінійність алгоритму шифрування. Побудова S-боксу складається з двох
кроків. Спочатку отримується обернене число в полі Галуа (28). Потім над
кожним байтом b S-боксу виконуються наступна операція:
′
= ⊕ (+4) 8 ⊕ (+5) 8 ⊕ (+6) 8 ⊕ (+7) 8 ⊕
b. ShiftRows - оперує з рядками таблиці State. При цьому
перетворенні рядки таблиці State циклічно зсуваються на r байт у
горизонтальному напрямку, в залежності від номера рядка.
c. Для нульового рядка r = 0, для першого - r = 1 і т.д. Результатом
є те, що кожен стовпець у вихідному стані після застосування ShiftRows
складається з байтів кожного стовпця початкового стану. Схема зсуву рядків
в алгоритмі Rijndael для 128-бітових і 192-бітових рядків однакова, але 256-
Лист
ЧДТУ.22.21090.005 ПЗ 19
Зм Арк №Докум. Підп Дат
бітний блок відрізняється від попереднього випадку, оскільки рядки 2, 3 і 4
зсуваються на 1, 3 і 4 байти відповідно.
d. MixColumns - У процедурі MixColumns, чотири байти кожної
колонки State змішуються за зворотної лінійної трансформації. MixColumns
опрацьовує стан по стовпчикам, трактуючи кожен з них як поліном
четвертого порядку. Над цими поліномами виконується множення в GF(28)
по модулю x4 + 1 на фіксований многочлен c(x) = 3 x3+x2+x+2. Разом з
ShiftRows, MixColumns вносить дифузію в шифр.
e. AddRoundKey - RoundKey кожного раунду об'єднується з State.
RoundKey для кожного раунду отримується з CipherKey за допомогою
процедури KeyExpansion. Кожен RoundKey має той самий розмір, що і State.
Ця процедура виконує побітове XOR кожного байта State і кожного байта
RoundKey. На практиці це просте побайтове XOR байтів ключа і байтів
таблиці State.
− Після останнього раунду виконується лише SubBytes, ShiftRows та
AddRoundKey.
4.Результат
− Результатом шифрування є зашифрований 128-бітний блок даних.
1.2.3 Blowfish
Blowfish - це блоковий шифр, розроблений Брюсом Шнайером на основі
мереж Фейстеля, який шифрує дані, розділені на блоки по 8 байт. Алгоритм
складається з двох частин: генерації ключа і шифрування даних. Під час генерації
ключа, оригінальний ключ довільної довжини до 56 байт (448 біт) перетворюється
в декілька наборів ключів загальною довжиною 4168 байт.[6]
Blowfish має 16 циклів. Кожен цикл складається з залежного від ключа
перетворення, залежної від ключа заміни та обробленої інформації. Всі операції є
адитивними за модулем 2 (XOR) і 32-бітним арифметичним додаванням слів.
Єдиними додатковими операціями є чотири індексовані таблиці для перетворення
даних, які використовуються в кожному циклі.
Лист
ЧДТУ.22.21090.005 ПЗ 20
Зм Арк №Докум. Підп Дат
Підключі
Blowfish використовує велику кількість підключів. Вони мають бути
заздалегідь обчислені перед початком шифрування чи дешифрування даних. Безліч
P складається з 18 підключів, кожен з яких має довжину в 32 біти: P1, P2, ..., P18.
Крім того, наявні чотири 32-бітові підстановочні матриці (S-box) з 256 входами:
− S1 ={S1.0 ,S1.1,…,S1.255};
− S2 ={S2.0 , S2.1,…, S2.255;
− S3 ={S3.0 , S3.1,…, S3.255};
− S4 ={S4.0 , S4.1,…, S4.255}.
Шифрування та дешифрування
Blowfish має 16 циклів (Рис. 1.2.9). Вхідний блок X складається із 64 біт. Цей
блок ділиться на дві половини XL, XR по 32 біти в кожній. Потім для i від 1 до 16
виконуються такі перетворення: XL = XL XOR Pi , XR = F(XL) XOR XR , після чого
XL та XR змінюються місцями. Схема алгоритму Blowfish наведена на рисунку 1.7.
Рисунок 1.7 – Схема алгоритму Blowfish
Лист
ЧДТУ.22.21090.005 ПЗ 21
Зм Арк №Докум. Підп Дат
Після шістнадцятого циклу XL і X R знову змінюються місцями і виконується
останнє перетворення: XR = XR XOR P17, XL = XL XOR P18.
Нарешті, XL і XR об'єднуються для того, щоб отримати зашифроване
повідомлення. Функція F виглядає наступним чином: XL розділяється на чотири
рівні восьмибітні частини: a, b, c, і d. Після чого виконується наступна функція:
F (XL) = ((((S1.a + S2.b) mod 232) XOR S3.c) + S ) mod 232
4.d . Дешифрування виконується
так само, як і шифрування, тільки множина підключів P1, P2, ..., P18
використовуються у зворотному порядку.
1.3 Сфери застосування симетричних криптоалгоритмів
Симетричні шифри широко використовуються в різних сферах для захисту
конфіденційних даних.[7] Ось деякі загальні сфери застосування симетричних
шифрів:
− Безпека зв’язку: симетричні шифри відіграють вирішальну роль у
захисті каналів зв’язку. Вони використовуються для шифрування даних, що
передаються через мережі, такі як Інтернет, гарантуючи, що лише авторизовані
одержувачі можуть розшифрувати інформацію та отримати доступ до неї;
− шифрування файлів і дисків: симетричні шифри використовуються для
шифрування файлів і цілих дисків, забезпечуючи захист від несанкціонованого
доступу до конфіденційних даних, що зберігаються на комп’ютерах, ноутбуках,
зовнішніх дисках або інших носіях інформації;
− безпека бази даних: симетричні шифри використовуються для
шифрування конфіденційних даних, що зберігаються в базах даних. Завдяки
шифруванню даних, навіть якщо база даних скомпрометована, зашифрована
інформація залишається нечитабельною без ключа дешифрування;
− віртуальні приватні мережі (VPN): VPN використовують симетричні
шифри для шифрування трафіку даних між віддаленими користувачами та
приватними мережами. Це забезпечує конфіденційність і цілісність даних, що
передаються через публічні мережі, дозволяючи безпечний віддалений доступ до
корпоративних ресурсів;
Лист
ЧДТУ.22.21090.005 ПЗ 22
Зм Арк №Докум. Підп Дат
− рівень захищених сокетів (SSL) і захист транспортного рівня (TLS):
симетричні шифри використовуються в протоколах SSL і TLS, які забезпечують
безпечний зв’язок між веб-браузерами та серверами. Вони використовуються для
шифрування даних, якими обмінюються під час онлайн-транзакцій, облікових
даних для входу та іншої конфіденційної інформації;
− бездротовий зв’язок: симетричні шифри використовуються для захисту
протоколів бездротового зв’язку, таких як WPA2 (Wi-Fi Protected Access II) для
захисту мереж Wi-Fi. Вони шифрують дані, що передаються бездротовим
способом, запобігаючи несанкціонованому перехопленню та доступу;
− захищені програми обміну повідомленнями: багато програм обміну
повідомленнями використовують симетричні шифри для шифрування миттєвих
повідомлень, голосових дзвінків і відеодзвінків. Це забезпечує приватність і
конфіденційність повідомлень, якими обмінюються користувачі;
− військові та урядові програми: симетричні шифри широко
використовувалися військовими та державними організаціями для захисту
секретної інформації, конфіденційних комунікацій і стратегічних даних;
− фінансові системи: симетричні шифри застосовуються у фінансових
системах для захисту транзакцій, включаючи онлайн-банкінг, платіжні шлюзи та
електронні перекази коштів. Шифрування допомагає захистити фінансові дані від
несанкціонованого доступу та забезпечує безпеку фінансових операцій;
− IoT (Інтернет речей): із зростанням поширення пристроїв IoT для
шифрування даних, що передаються між підключеними пристроями та шлюзами
IoT, використовуються симетричні шифри. Це допомагає підтримувати
конфіденційність і безпеку комунікацій IoT.
Варто зазначити, що розвиток асиметричного шифрування (криптографії з
відкритим ключем) призвів до широкого використання гібридних систем
шифрування, де симетричні шифри використовуються в поєднанні з
асиметричними шифрами для підвищення безпеки та ефективності.
Лист
ЧДТУ.22.21090.005 ПЗ 23
Зм Арк №Докум. Підп Дат
2 КРИПТОАЛГОРИТМ AES. СТРУКТУРА, МАТЕМАТИЧНІ ОСНОВИ,
РАУНДОВЕ ПЕРЕТВОРЕННЯ, КЛЮЧОВИЙ РОЗКЛАД, РОЗШИФРУВАННЯ
ТА РЕЖИМИ ВИКОНАННЯ СИМЕТРИЧНОГО БЛОКОВОГО ШИФРУВАННЯ
ДАНИХ.
2.1 Основні характеристики криптоалгоритму AES
AES розшифровується як Advanced Encryption Standard. Після того, як
Національний інститут стандартів і технологій США (NIST) запустив проект з
розробки AES в 1997 році, був проведений міжнародний конкурс, який проходив у
три етапи. Новий стандарт повинен був відповідати наступним вимогам:
− бути не менш стійким, ніж 3DES;
− мати більшу швидкість шифрування, ніж 3DES;
− мати прозору структуру;
− мати ефективну реалізацію на платформі Pentium Pro;
− мати ефективну апаратну реалізацію.
Перемогу в конкурсі здобули Йоан Реймен та Вінсент з Бельгії. Реймен
переміг з алгоритмом RIJNDAEL (від ініціалів автора - Рейн-Даля). Стандарт набув
чинності у 2002 році.
AES - це не шифр Фейстеля, заснований на новому принципі транспозиційної
мережі. В його основі лежить нова архітектура SQUARE. Вона має такі
характеристики:
− блок, що шифрується, представлений двовимірним масивом байт,
− весь блок даних шифрується за один раунд (байт-орієнтована
структура),
− криптографічні перетворення виконуються над кожним байтом, а
також над рядками і стовпчиками масиву.
Це дозволяє поширювати дані одразу в двох напрямках - по рядках і
стовпцях.
Лист
ЧДТУ.22.21090.005 ПЗ 24
Зм Арк №Докум. Підп Дат
Загальні характеристики AES
− AES шифрує і розшифровує 128-бітові блоки даних,
− AES дозволяє використовувати три типи ключів: 128 192-бітові або
256-бітові (в залежності від довжини ключа, версії шифрування називаються AES-
128, AES-192 і AES-256),
− кількість раундів шифрування залежить від розміру ключа:
− 128-бітний - 10 раундів,
− 192 біт - 12 раундів,
− 256 біт - 14 раундів.
− всі раунди є рівними, крім останнього.
2.2 Представлення даних в криптоалгоритмі АЕS
Ключовим елементом, що використовується в алгоритмі AES, є байт, який
являє собою послідовність з 8 біт, що обробляється як єдине ціле. Щоб сформувати
байт, 128 біт блоку відкритого тексту, блоку зашифрованого тексту і ключа
шифрування діляться на групи по 8 біт і організовуються для створення загальної
послідовності байтів.
Задавати значення байта зручно у шістнадцятковій системі числення. Для
цього байти розбиваються на дві групи по чотири біти, причому верхня група бітів
байта є першим символом у шістнадцятковій системі, а нижня група бітів - другим
символом.
Вхідними даними для операції шифрування є 16-байтовий масив in0,
in1,...in15. Перед початком шифрування байти цих масивів послідовно
розміщуються у стовпцях масиву InputBlock (зверху вниз). В алгоритмі операції
виконуються над масивом байт, який називається масивом станів або просто state.
Кінцеве значення масиву станів OutputBlock є виходом алгоритму і перетворюється
на байти шифрування out0, out1, ..., out15. Аналогічно до стовпців матриці InputKey
потрапляють 16 байт криптографічного ключа k0, k1, ..., k15. Розмірність усіх
матриць - 4*4 (рис. 2.1). Схематично це представлення даних виглядає наступним
чином:
Лист
ЧДТУ.22.21090.005 ПЗ 25
Зм Арк №Докум. Підп Дат
Позначимо:
− in0, in1,…, in15 – 16 байт блоку відкритого тексту,
− k0, k1,…, k15 – 16 байт ключа шифру,
− out0, out1, ..., out15 – 16 байт блоку шифротексту.
Рисунок 2.1 – Представлення даних в криптоалгоритмі AES
Чотири байти в кожному стовпці матриці станів або ключа можна
інтерпретувати як одне 32-х бітове слово. Тому матриця станів – це масив з 4 слів
w0, w1, w2, w3, де w0 = S0,0 S1,0 S2,0 S3,0; w1 = S0,1 S1,1 S2,1 S3,1; w2 = S0,2 S1,2 S2,2 S3,2; w3
= S0,3 S1,3 S2,3 S3,3.
Матриця, що надходить на вхід кожного раунду називається матрицею
InputState, а на виході раунду утворюється матриця OutputState. Вочевидь, що у
вході першого раунду InputState=InputBlock , але на виході останнього раунду
OutputState= OutputBlock.
Лист
ЧДТУ.22.21090.005 ПЗ 26
Зм Арк №Докум. Підп Дат
2.3 Загальна структура AES
У версії алгоритму AES-128 використовується ключ шифрування, який
складається з 128 бітів, поділених на 16 байтів: k0, k1, ..., k15. Ключ записується як
матриця InputKey (рис. 2.2), де кожен стовпець матриці утворює слово w0, w1, w2,
w3, де w0 = k0 k1 k2 k3, w1 = k4 k5 k6 k7 і т.д..
Рисунок 2.2 – Матриця InputKey
Спеціальний алгоритм перетворює ці слова на послідовність з 44 слів по 32
біта кожне. Кожні чотири слова цієї послідовності використовуються як раундовий
ключ на кожному раунді шифрування (рис. 2.3).
Рисунок 2.3 – Ключовий розклад
Лист
ЧДТУ.22.21090.005 ПЗ 27
Зм Арк №Докум. Підп Дат
Перед першим раундом виконується операція AddRoundKey, яка здійснює
підсумовування модуля 2 з початковим ключем шифру. Процес шифрування
складається з чотирьох різних перетворень, що виконуються у кожному раунді:
SubBytes, ShiftRows, MixColumns та AddRoundKey. Пояснення:
− SubBytes - це побайтова підстановка, яка використовує фіксовану
таблицю замін S-боксу.
− ShiftRows - це побайтове зсув рядків матриці State на різну кількість
байт.
− MixColumns – це перемішування байтів у стовпцях матриці State.
− AddRoundKey - це операція XOR, яка складає раундовий ключ із
поточним станом матриці.
Останній раунд дещо відрізняється від попередніх, тому що не задіє функцію
MixColumns.
При дешифруванні виконуються зворотні операції у кожному раунді:
InvShiftRows, InvSubBytes, AddRoundKey та InvMixColumns. Порядок виконання
операцій при шифруванні та дешифруванні різний, і причини цього стануть
зрозумілими після більш детального розгляду кожного перетворення.
2.4 Математичні основи криптоалгоритму AES
Операції у полі GF(28) є одним із ключових елементів алгоритму шифрування
AES. Для забезпечення безпеки даних, AES використовує кінцеве поле Галуа
GF(28), побудоване як розширення поля GF(2) = {0,1} за модулем багаточлена, що
не приводиться m(x) = x8+x4+x3+x+1. У цьому полі налічується 256 багаточленів,
що забезпечує можливість представлення двійкових чисел як бітових багаточленів.
Операції складання байт у полі GF(28) можуть бути виконані декількома
способами. Один з них – уявити байти у вигляді бітових багаточленів і скласти їх
за правилом підсумовування багаточленів з наступним приведенням коефіцієнтів
суми за модулем 2 (операція XOR). Також можна підсумовувати відповідні біти в
байтах або скласти байти в шістнадцятковій системі обчислення.
Лист
ЧДТУ.22.21090.005 ПЗ 28
Зм Арк №Докум. Підп Дат
Для множення байт у полі GF(28) використовується уявлення їх
многочленами і перемноження за правилами алгебри. Отриманий добуток
необхідно привести за модулем многочлена x8+x4+x3+x+1 (результат приведення
дорівнює залишку від поділу добутку на m(x)).
У полі GF(28) для будь-якого ненульового бітового багаточлена b(x) існує
зворотний елемент b-1(x), який може бути знайдений за допомогою розширеного
алгоритму Евкліда.
Багаточлени третього ступеня з коефіцієнтами поля GF(28) представляються
у вигляді a(x) = a x3
3 +a2x
2+a1x+a0, де в ролі коефіцієнтів задіяні байти замість біт. У
стандарті AES при множенні багаточленів виду a(x)=a3x
3+a x2
2 +a1x+a0
використовується приведення за модулем багаточлена x4+1.
Завдяки використанню кінцевого поля GF(28) в алгоритмі шифрування AES,
дані можуть бути зашифровані та захищені від несанкціонованого доступу.
2.5 Раундове перетворення в AES
Розглянемо детальніше процедуру перетворення раунду шифрування,
починаючи з операції SubBytes (рис. 2.4). Ця операція здійснює нелінійну заміну
байтів у матриці State, де кожен байт замінюється незалежно від інших. Щоб
виконати заміну, кожен вхідний байт проходить два перетворення:
− інвертування елемента у полі GF(28), що є оборотною операцією,
− застосування афінного перетворення, яке включає множення
інвертованого байта на многочлен a(x) = x4 + x3+x2+x+1 та додавання з
многочленом b(x) = x6+ x5+x+ 1 у полі F2[x]/x8 +1.
Важливо, що а-1(x) = x6+x3+x, а a-1(x)b(x) = x2+1. Таким чином, операція
SubBytes може бути записана у матричній формі, де вхідні біти позначаються x, а
вихідні – y. Якщо вхідний байт є нульовим, то результатом заміни буде число y=b.
Лист
ЧДТУ.22.21090.005 ПЗ 29
Зм Арк №Докум. Підп Дат
Рисунок 2.4 – Процедура SubBytes у матричній формі
Процес заміни байтів ілюструється таблицею підстановки, яка називається S-
боксом (рис. 2.5) у шістнадцятковій системі.
Рисунок 2.5 – Таблиця підстановки S-box
Це перетворення нелінійно через інверсію x-1, яке оборотність пов'язані з
оборотністю матриці. S-бокс, створений на основі цієї операції, дозволяє
забезпечити додатковий захист даних у процесі шифрування.
Лист
ЧДТУ.22.21090.005 ПЗ 30
Зм Арк №Докум. Підп Дат
Операція ShiftRows (рис. 2.6), яка застосовується у процесі шифрування
даних. Ця операція виконується над матрицею State, яка є блоком даних, що
підлягає зашифруванню. [10]
У межах операції кожен рядок матриці зсувається циклічно вправо на певну
кількість байт. При цьому перший рядок матриці залишається незмінним, а
елементи нижніх трьох рядків зсуваються відповідно на 1, 2 та 3 байти. Це
призводить до перестановки елементів матриці всередині рядків, при цьому в
кожному рядку порядок прямування елементів змінюється, але не змінюється їх
кількість та значення.
Рисунок 2.6 – Операція ShiftRows
Важливо, що операція ShiftRows є оборотною, тобто її можна легко скасувати
та відновити вихідний стан матриці State. Це забезпечує збереження даних при їх
розшифровці.
Операція MixColumns (рис. 2.7) є процес перемішування байтів в стовпцях
матриці State, де кожен стовпець представляється як многочлен над полем GF(28).
Для виконання цієї операції кожен стовпець множиться на фіксований багаточлен
c(x) = c x3
3 + c x2
2 + cx+c0 = {03}x3 + {01}x2 + {01}x + {02} модулю многочлена x4 +1.
Важливо відзначити, що многочлен c(x) взаємно простий з многочленом x4+1
над полем GF(2), що дозволяє існувати зворотному багаточлену c-1(x)(mod x4+1) і
матриці оборотної для виконання зворотної операції MixColumns.
Лист
ЧДТУ.22.21090.005 ПЗ 31
Зм Арк №Докум. Підп Дат
Рисунок 2.7 – Операція MixColumns
Операція AddRoundKey (рис. 2.8) виконує операцію побітового додавання
елементів матриці State з елементами розширеного ключа W[4r+1], де r - номер
поточного раунду. Під час шифрування перше додавання ключа раунду
відбувається до операції SubBytes, після якої виконуються операції ShiftRows та
MixColumns.
Рисунок 2.8 – Операція AddRoundKey
Як показано на рисунку 2.9, два раунди забезпечують повне розсіювання та
перемішування інформації. Досягається це за рахунок використання функцій
ShiftRows та MixColumns.
Лист
ЧДТУ.22.21090.005 ПЗ 32
Зм Арк №Докум. Підп Дат
Рисунок 2.9 – Властивості розсіювання та перемішування інформації в ході
шифрування криптоалгоритмом AES
Операція SubBytes підвищує стійкість до атак диференційного
криптоаналізу, а операція AddRoundKey забезпечує необхідну випадковість для
шифрування.
2.6 Ключовий розклад в AES
Раундові ключі використовуються для зашифрування даних за допомогою
ключа шифру K. Ключі генеруються із K за допомогою процедури розширення
ключа, яка створює масив раундових ключів. Кожен раундовий ключ складається з
4 чотирибайтових слів, загальна довжина всіх ключів дорівнює 128 біт. З масиву
вибирається потрібний раундовий ключ.
Для генерації ключів використовують рівняння, яке визначає слова
наступного раундового ключа на основі попереднього. Для першого раунду перші
чотири слова збігаються із ключем шифру, а решта 40 слів вибираються по 4 слова
для кожного раунду.
Лист
ЧДТУ.22.21090.005 ПЗ 33
Зм Арк №Докум. Підп Дат
Перше слово в кожному раундовому ключі обчислюється за допомогою
функції g, яка включає циклічний зсув, заміну байтів і підсумовування з постійною
раундовою Rcon[i]. Це допомагає уникнути симетрії, яка може призвести до
слабких ключів.
Алгоритм розширення ключа наведено на рисунку 2.10.
Рисунок 2.10 – Алгоритм розширення ключа
2.7 Розшифрування в алгоритмі AES
Для розшифрування шифротексту використовується послідовність
перетворень, що дешифрують, які є зворотними до шифруючих. Перед першим
раундом дешифрування застосовується операція AddRoundKey, яка додає чотири
останні слова розширеного ключа до шифротексту. Потім виконується 10 раундів
дешифрування, кожен із яких складається з наступних операцій:
1. Операція InvShiftRows, яка циклічно зрушує байти в останніх трьох рядках
матриці State на різне число байт у зворотному порядку до операції ShiftRows.
Перший рядок залишається нерухомим, а нижні три рядки зсуваються вправо на 1,
2 і 3 байти відповідно.
Лист
ЧДТУ.22.21090.005 ПЗ 34
Зм Арк №Докум. Підп Дат
2.Операція InvSubBytes, яка замінює байти матриці State на нові значення за
допомогою зворотної заміни інвертованого S-боксу.
3. Операція InvMixColumns, яка є зворотною операцією MixColumns. Вона
множить кожен стовпець матриці State на фіксований многочлен c^-1(x) по модулю
многочлена х4 + 1.
4. Операція AddRoundKey, яка є зворотною сама до себе, тому що полягає
лише у підсумовуванні за mod 2.
Останній раунд дешифрування не містить операції InvMixColumns. Важливо,
що порядок виконання операцій дешифрування відрізняється від порядку операцій
шифрування. Однак завдяки комутативності операцій SubBytes і ShiftRows і
лінійності операцій перемішування в стовпці MixColumns і InvMixColumns, можна
побудувати іншу еквівалентну процедуру дешифрування, де послідовність
операцій залишається тією самою із заміною на зворотні. Також можна змінити
порядок виконання операцій AddRoundKey та InvMixColumns, замінивши слова в
раундових ключах за допомогою процедури InvMixColumns (не чіпаючи перші та
останні чотири слова).
2.8 Режими виконання симетричного блокового шифрування
Симетричне блокове шифрування - це метод шифрування, в якому та сама
ключова інформація використовується як для шифрування, так і для
розшифрування повідомлень.
Для забезпечення безпеки та конфіденційності передаваної інформації,
симетричні блокові шифри використовуються для перетворення зрозумілого
тексту в незрозумілий формат (шифрограму) за допомогою спеціальних
алгоритмів. Дані перетворюються в блоки фіксованої довжини, кожен блок
шифрується і дешифрується з використанням одного ключа.
У симетричного блокового шифрування існує кілька режимів виконання, які
визначають, як шифр буде застосовуватися до блоків повідомлень. [12]
Лист
ЧДТУ.22.21090.005 ПЗ 35
Зм Арк №Докум. Підп Дат
Основні режими виконання включають:
− ECB (Electronic Codebook).
ECB (Electronic Codebook) – це один із режимів симетричного блокового
шифрування, де відкритий текст розбивається на блоки однакового розміру, які
потім шифруються окремо за допомогою одного і того ж ключа. Кожен блок
відкритого тексту відповідає одному блоку шифротексту, що дозволяє легко
відновити вихідний текст з шифротексту.
Процес шифрування в режимі ECB складається з наступних кроків:
1. Розбиття повідомлення на блоки однакового розміру: відкритий текст
розбивається на блоки фіксованого розміру, наприклад, на 64 біта або на 128 біт.
2. Шифрування кожного блоку відкритого тексту: кожен блок відкритого
тексту шифрується окремо за допомогою блочної криптографії, наприклад, за
допомогою шифрування AES. Ключ для шифрування кожного блоку однаковий,
що дозволяє легко відновити вихідний текст з шифротексту.
3. Формування шифротексту: кожен з шифротекстів має таку ж довжину,
як і відповідний блок відкритого тексту. Шифротексти об'єднуються у
послідовність, що і утворює шифрований текст.
ECB режим має кілька переваг, серед яких можна відзначити простоту
реалізації, можливість легко паралелізувати процес шифрування, що дозволяє
прискорити процес обробки великих обсягів даних. Проте цей режим має серйозні
недоліки, що роблять його непридатним для застосування в сучасних системах
шифрування.
Одним з найбільших недоліків ECB є те, що цей режим не забезпечує
конфіденційність.
Однаковий блок відкритого тексту завжди буде шифруватися в один і той же
шифротекст, незалежно від його місця в повідомленні. Це може призвести до
зведення з відкритого тексту шаблонів, що дозволяє атакувачам здійснювати аналіз
шифротекстів та відновлювати вихідний текст.
Лист
ЧДТУ.22.21090.005 ПЗ 36
Зм Арк №Докум. Підп Дат
Крім того, ECB не забезпечує інтегритет повідомлення та аутентифікації
даних, що може призвести до можливості внесення змін в повідомлення без знання
ключа шифрування.
Наприклад, якщо відомо, що відкритий текст складається з двох блоків:
"Transfer 1000$ to account A" та "Transfer 2000$ to account B", то атакувач може
відновити вихідний текст з шифротексту, дізнатися номера рахунків та суми
переказу, навіть якщо не знає ключа шифрування.
У зв'язку з цим ECB режим застосовується дуже рідко і тільки в тих випадках,
коли конфіденційність даних не є критично важливою, а швидкість та простота
реалізації є пріоритетними.
− CBC (Cipher Block Chaining).
Режим шифрування CBC (Cipher Block Chaining) є одним з найбільш
поширених та надійних режимів блокового шифрування. У цьому режимі, перед
шифруванням кожен блок відкритого тексту використовується для XOR з
попереднім блоком шифротексту. Це дозволяє забезпечити надійний захист від
атак типу "зведення до шаблону", що можуть виникнути в режимі ECB (Electronic
Codebook).
Алгоритм шифрування CBC працює наступним чином:
1. розбиваємо відкритий текст на блоки однакового розміру, наприклад,
по 64 біти,
2. генеруємо випадковий вектор ініціалізації (IV) довжиною, яка
співпадає з розміром блоку шифрування, наприклад, 64 біти,
3. перший блок відкритого тексту XOR-имо з IV,
4. отриманий результат шифруємо за допомогою блокового шифру,
наприклад, AES,
5. отриманий шифротекст переходить до наступного блоку та
використовується для XOR з наступним блоком відкритого тексту,
6. отриманий результат шифрується знову за допомогою блокового
шифру,
Лист
ЧДТУ.22.21090.005 ПЗ 37
Зм Арк №Докум. Підп Дат
7. процес шифрування повторюється для кожного блоку відкритого
тексту,
8. останній блок шифрутексту стає вектором ініціалізації наступного
повідомлення.
Для розшифрування повідомлення виконуємо наступні кроки:
1. розбиваємо шифротекст на блоки однакового розміру, який співпадає
з розміром блоку шифрування, наприклад, 64 біти,
2. шифрутекст розшифровується за допомогою блокового шифру,
3. отриманий результат XOR-имо з попереднім шифрованим блоком або
вектором ініціалізації (IV),
4. отриманий результат стає відкритим текстом,
5. процес розшифрування повторюється для кожного блоку
шифрутексту.
При використанні режиму CBC, важливо, щоб вектор ініціалізації був
випадковим та унікальним для кожного повідомлення. Якщо вектор ініціалізації
використовується двічі для різних повідомлень, це може призвести до витоку
інформації про вміст повідомлень.
Іншою проблемою, пов'язаною з режимом CBC, є потреба у відокремленій
передачі вектора ініціалізації разом із шифрованим повідомленням, оскільки він
потрібен для розшифрування повідомлення. Якщо зловмисник зможе перехопити
вектор ініціалізації та шифрований текст, він зможе розшифрувати повідомлення.
Незважаючи на ці проблеми, режим CBC вважається дуже надійним та
широко використовується в багатьох застосуваннях, включаючи захист
електронної пошти, зберігання файлів, передачу даних через мережу та інші.
− OFB (Output Feedback).
Режим Output Feedback (OFB) – це один з режимів блокового шифрування,
який дозволяє створювати потоковий шифр з блокового шифру. У режимі OFB
блоковий шифр використовується для створення випадкового потоку даних, який
потім використовується для шифрування відкритого тексту.
Лист
ЧДТУ.22.21090.005 ПЗ 38
Зм Арк №Докум. Підп Дат
Процес шифрування у режимі OFB складається з наступних кроків:
1. створюється випадковий вектор ініціалізації, який має таку ж довжину,
як і блок шифрування,
2. вектор ініціалізації шифрується за допомогою блокового шифру,
3. отримане значення використовується для шифрування відкритого
тексту за допомогою операції XOR,
4. результат XOR стає випадковим потоком даних,
5. випадковий потік даних використовується для шифрування відкритого
тексту за допомогою операції XOR,
6. отримане значення дешифрується за допомогою блокового шифру,
7. отриманий результат стає відкритим текстом,
8. процес повторюється для кожного наступного блоку відкритого тексту.
Один з головних переваг режиму OFB полягає в тому, що він не потребує
розподілу вектора ініціалізації разом із шифрованим текстом. Це означає, що
режим OFB може бути використаний для шифрування даних у режимі потоку без
необхідності передачі блоків даних. Також режим OFB має добру властивість
самосинхронізації, що дозволяє зберігати синхронізацію між шифрувальником та
розшифрувальником, навіть якщо деякі біти випадкового потоку даних були
втрачені чи пошкоджені під час передачі.
− CFB (Cipher Feedback).
Режим Cipher Feedback (CFB) – це один з режимів блокового шифрування,
який дозволяє створювати потоковий шифр з блокового шифру. У режимі CFB
блоковий шифр використовується для створення випадкового потоку даних, який
потім використовується для шифрування відкритого тексту.
Процес шифрування у режимі CFB складається з наступних кроків:
1. створюється вектор ініціалізації, який має таку ж довжину, як і блок
шифрування,
2. вектор ініціалізації шифрується за допомогою блокового шифру,
Лист
ЧДТУ.22.21090.005 ПЗ 39
Зм Арк №Докум. Підп Дат
3. отримане значення використовується для шифрування першого блоку
відкритого тексту за допомогою операції XOR,
4. отримане значення перетворюється на випадковий потік даних,
5. випадковий потік даних використовується для шифрування наступного
блоку відкритого тексту за допомогою операції XOR,
6. отриманий результат дешифрується за допомогою блокового шифру,
7. отриманий результат стає відкритим текстом,
8. процес повторюється для кожного наступного блоку відкритого тексту.
У режимі CFB блоковий шифр використовується для створення випадкового
потоку даних, який потім використовується для шифрування відкритого тексту.
Цей потік даних може бути використаний для шифрування великої кількості даних
у режимі потоку без необхідності передачі блоків даних.
Один з переваг режиму CFB полягає в тому, що він дозволяє шифрувати
будь-який розмір даних, навіть якщо вони не є кратними блоку шифрування. Режим
CFB також має властивість самосинхронізації, що означає, що якщо при передачі
даних відбувається помилка, то наступні блоки будуть дешифровані правильно,
тому що вони синхронізовані з випадковим потоком даних.
Проте режим CFB також має свої недоліки. Наприклад, він не є стійким до
атак з обрізанням, коли злоумисник відомий більш ніж половиною шифрованого
тексту. Також може виникнути проблема з блокуванням при передачі даних через
ненадійний канал зв'язку, оскільки помилки можуть розповсюджуватися на кілька
блоків даних.
У підсумку, режим CFB – це режим блокового шифрування, який дозволяє
створювати потоковий шифр з блокового шифру. Він має свої переваги та недоліки
і використовується для шифрування даних у режимі потоку з невеликою кількістю
блоків даних.
Лист
ЧДТУ.22.21090.005 ПЗ 40
Зм Арк №Докум. Підп Дат
− CTR (Counter).
Симетричне блокове шифрування - це процес заміни зрозумілого тексту на
шифротекст з використанням секретного ключа. Симетричні шифри можуть
використовувати різні режими виконання для захисту конфіденційності та
цілісності даних, таких як режим CTR (лічильник).
Режим шифрування CTR використовує блочний шифр та лічильник для
створення потокового шифру. Лічильник – це послідовність значень, яка
починається з ініціалізаційного значення та збільшується на один при кожному
шифруванні наступного блоку даних.
Основна ідея застосування режиму CTR полягає в тому, що він перетворює
блочний шифр у потоковий шифр, дозволяючи використовувати його для
шифрування будь-якої довжини даних.
Алгоритм шифрування CTR можна описати наступним чином:
1. ініціалізація: вибрати випадковий ненульовий вектор ініціалізації (IV),
розмір якого дорівнює розміру блоку шифру (зазвичай 128 біт).
2. лічильник: створити лічильник, який починається з IV, та збільшується
на один при кожному шифруванні наступного блоку даних.
3. шифрування: для кожного блоку даних зберігається лічильник, який
потім шифрується з використанням блочного шифру. Отримані шифровані блоки
даних об'єднуються для створення потокового шифру.
Щоб розшифрувати дані, необхідно повторити процес шифрування,
використовуючи ті ж самі значення лічильника та ініціалізаційного вектора.
Один з переваг режиму CTR полягає в тому, що він дозволяє паралельну
обробку даних, оскільки кожен блок даних можна шифрувати незалежно від інших.
Крім того, режим CTR не вимагає збереження стану між блоками даних, тому його
можна легко використовувати в різних середовищах.
Однак, режим CTR не забезпечує аутентифікацію даних, тобто він не
гарантує, що отриманий шифротекст відповідає вихідним даним. Це може
призвести до можливості атак на цілісність даних, де зловмисник може змінювати
Лист
ЧДТУ.22.21090.005 ПЗ 41
Зм Арк №Докум. Підп Дат
шифровані дані, не розкриваючи при цьому секретний ключ. Тому, для захисту
цілісності даних рекомендується використовувати режим аутентифікованого
шифрування, такий як GCM (Galois/Counter Mode).
Іншою проблемою, пов'язаною з режимом CTR, є можливість повторного
використання лічильника. Якщо зловмисник зможе змінити лічильник, то він
зможе змінити шифрування, що використовує цей лічильник, або відновити ключ
шифрування. Тому, рекомендується використовувати випадковий ініціалізаційний
вектор та унікальний лічильник для кожного повідомлення.
Наприкінці, варто зазначити, що режим CTR є одним з найбільш широко
використовуваних режимів шифрування в сучасних криптографічних протоколах,
таких як TLS та IPSec. Він є ефективним та надійним режимом, що дозволяє
забезпечувати конфіденційність даних, якщо його використовують відповідно до
рекомендацій та належним чином настроюють його параметри, щоб уникнути
можливих атак та зловживань.
Для використання режиму CTR необхідно вибрати криптографічний
алгоритм шифрування, наприклад, AES (Advanced Encryption Standard). Згідно з
принципом роботи режиму CTR, для шифрування кожного блоку даних потрібно
використовувати лічильник, який інкрементується для кожного блоку. Лічильник
може бути випадковим або побудованим на основі криптографічного геш-функції.
Перед початком шифрування потрібно визначити значення лічильника та
випадкового ініціалізаційного вектора (IV).
Випадковий ініціалізаційний вектор можна генерувати за допомогою
генератора псевдовипадкових чисел (PRNG), який повинен мати достатньо високу
ентропію. IV має бути унікальним для кожного повідомлення або для кожного
використання шифрувального ключа. Це необхідно, щоб запобігти повторному
використанню лічильника та захистити від атак з використанням збівів.
Щоб зашифрувати блок даних, потрібно обчислити значення лічильника,
зашифрувати його за допомогою криптографічного алгоритму та використати
отриманий шифротекст як ключ для шифрування блоку даних. Оскільки режим
Лист
ЧДТУ.22.21090.005 ПЗ 42
Зм Арк №Докум. Підп Дат
CTR є самопроголошеним, то його можна легко використовувати для
дешифрування даних: необхідно лише зашифрувати лічильник, який
використовувався для шифрування, та використати його шифротекст як ключ для
дешифрування блоку даних.
При використанні режиму CTR потрібно враховувати кілька аспектів. Перш
за все, лічильник повинен бу ти достатньо великим, щоб уникнути повторень
значень. Наприклад, якщо блок даних має розмір 128 біт, то лічильник може мати
розмір 64 біти або більше. Якщо лічильник не буде достатньо великим, то може
статися так, що його значення повториться, і це може призвести до викриття
шифрувального ключа.
Крім того, важливо, щоб лічильник був випадковим і не повторювався для
різних повідомлень. Якщо лічильник повториться для різних повідомлень, то може
статися так, що два різних повідомлення будуть зашифровані за допомогою одного
і того ж лічильника, і це може призвести до викриття шифрувального ключа.
Другим важливим аспектом є безпека випадкового ініціалізаційного вектора.
Якщо випадковий ініціалізаційний вектор не буде випадковим або буде
використаний повторно, то може статися так, що шифротекст буде вразливим до
атаки з використанням збівів. Якщо атакуючий зможе знайти два шифротексти, які
були зашифровані за допомогою одного і того ж вектора і лічильника, то він зможе
відновити значення лічильника та дешифрувати інші повідомлення, які були
зашифровані за допомогою того ж самого лічильника.
Третім аспектом є використання правильного криптографічного алгоритму.
Шифрувальний алгоритм повинен бути безпечним та ефективним. Наприклад, для
шифрування можна використовувати AES з розміром ключа 128 біт або більше.
Крім того, алгоритм повинен бути реалізований правильно, щоб уникнути
можливих атак, таких як атака з використанням підстановки або а атака на падіння.
Четвертим аспектом є безпека ключа. Ключ повинен бути достатньо
випадковим і безпечним, щоб уникнути атак з використанням перебору ключа.
Ключ повинен бути довжиною не менше 128 біт. Крім того, ключ повинен бути
Лист
ЧДТУ.22.21090.005 ПЗ 43
Зм Арк №Докум. Підп Дат
збережений в безпечному місці і не повинен бути доступний для незаконних
користувачів.
Отже, CTR-режим є одним з найбільш ефективних і безпечних режимів
шифрування блоків. Він забезпечує конфіденційність та цілісність даних, а також
забезпечує відмінну продуктивність, що дозволяє його використовувати в багатьох
різних ситуаціях. Однак, як і з будь-яким криптографічним алгоритмом, важливо
дотримуватися кращих практик з використання цього режиму шифрування, щоб
уникнути можливих атак і викриття ключа.
Лист
ЧДТУ.22.21090.005 ПЗ 44
Зм Арк №Докум. Підп Дат
3 РЕАЛІЗАЦІЯ ПІДСИСТЕМИ КРИПТОГРАФІЧНОГО ЗАХИСТУ
ІНФОРМАЦІЙНИХ РЕСУРСІВ НА БАЗІ ФЛГОРИТМУ AES
3.1 Обґрунтування вибору програмного середовища розробки
Для написання програми була обрана одна з найпопулярніших мов
програмування на сьогоднішній день – Python. Python – це високорівнева мова
програмування, яка заснована на принципі "читабельності коду". Вона має простий
та легкий для вивчення синтаксис, що робить її ідеальною для початківців. Python
широко використовується в наукових дослідженнях, обробці даних, машинному
навчанні, веб-розробці та багатьох інших областях.[9]
Одна з головних переваг Python – це його здатність ефективно працювати з
великими обсягами даних. Python має багато бібліотек та інструментів для роботи
з даними, що дозволяє програмістам швидко та ефективно аналізувати великі
обсяги інформації. Також, Python має простий та зручний для роботи з консолью,
що робить його універсальним інструментом для розробки скриптів та
автоматизації різноманітних задач.
Ще одна з переваг Python – це велика кількість доступних бібліотек та
фреймворків для різноманітних задач. Наприклад, бібліотека NumPy дозволяє
працювати з числовими даними, бібліотека Pandas – з табличними даними,
бібліотека Matplotlib – з візуалізацією даних та багато інших. Також Python має
велику кількість фреймворків для веб-розробки, таких як Django та Flask, що
значно спрощують процес розробки веб-додатків.
При написанні програми були використані такі бібліотеки:
− Tkinter. Бібліотека Tkinter є однією з найпопулярніших бібліотек
графічного інтерфейсу користувача (GUI) для мови програмування Python. Вона
входить до складу стандартної бібліотеки Python і надає можливість створювати
вікна, кнопки, текстові поля, список, меню, радіокнопки, чекбокси та інші елементи
інтерфейсу.[11]
Лист
ЧДТУ.22.21090.005 ПЗ 45
Зм Арк №Докум. Підп Дат
− NumPy. NumPy – це бібліотека для мови програмування Python, яка
дозволяє працювати з багатовимірними масивами даних і математичними
функціями, що діють на цих масивах. NumPy був розроблений для того, щоб
забезпечити ефективну обробку даних для наукових, інженерних і технічних
дисциплін.[18]
− Numba. Numba – це бібліотека для мови програмування Python, яка
дозволяє збільшити швидкість виконання коду шляхом компіляції його в
машинний код. Numba зазвичай використовується для оптимізації обчислювально-
інтенсивних ділянок коду, зокрема для обробки масивів даних та математичних
обчислень.
3.2 Опис концепції програмної реалізація AES шифрування
В результаті проведення аналізу алгоритму методу AES, а також можливих
для застосування в рамках побудови програмної реалізації криптографічного
алгоритму AES структур та конструкцій даних мови Python, було зроблено
висновок про доцільність використання наведених нижче окремих засобів та
структур мови Python.
Слід зазначити, що оскільки алгоритм оперує ланцюгом послідовних
операцій з обробки сукупності числових елементів, актуальним постало питання
вибору найбільш доцільної альтернативи серед структур та елементів даних, що
потенційно можуть застосовуватися для формування програмної реалізації
підсистеми захисту. Одним з таких представників є варіант подання інформації у
вигляді списків. Іншим варіантом виступає практика реалізації на основі bytearray
мови Python. В першому варіанті для моделювання необхідних структур слід
застосовувати вкладені списки. Елементами списків виступають окремі масиви, що
знаходяться в оперативній пам’яті. Якщо необхідно реалізувати список чисел
розміром 16 (4х4) чисел, то вони будуть знаходитись лінійно в послідовних
комірках оперативної пам’яті, обумовлюючи при цьому відповідну конкретній
ситуації ефективність та швидкодію роботи системи. Як буде продемонтровано в
Лист
ЧДТУ.22.21090.005 ПЗ 46
Зм Арк №Докум. Підп Дат
роботі далі, цей варіант реалізації забезпечив відносно низьку ефективність
реалізації з точки зору швидкодії роботи програмного додатку.
Це вимагає проведення пошуку інших можливостей, щоб пришвидшити
роботу алгоритму з точки зору часу, оскільки «натівні» засоби мови Python
продемонстрували свою повільність. Вважається за доцільним застосування
специфічних модулів мови Python та їх комбінацій. В представленій роботі для
пришвидшення алгоритму були використані модулі Numba та NumPy, зокрема
мова йде про їх комбіноване використання – NumPy працює в зв’язці з Numba.
Numba – це Open Source JIT-компілятор, який переводить код на Python та
NumPy у швидкий машинний код. Numba дозволяє прискорювати виконання
обчислювально важких операцій шляхом генерації оптимізованого машинного
коду. [17]
В Numba є два основних декоратори для оптимізації швидкодії – @jit і @njit:
− @jit (Just-in-Time) - це декоратор, який застосовується до функції і
вказує Numba компілювати цю функцію для отримання оптимізованого машинного
коду. При першому виклику функції Numba аналізує типи аргументів і генерує
оптимізований код для цих типів. При наступних викликах функції вже
використовується згенерований машинний код, що прискорює виконання функції.
Цей підхід називається "just-in-time" (лише вчасно) компіляцією, оскільки
оптимізація відбувається "на льоту" перед виконанням функції.
− @njit (No Python mode Just-in-Time) - це більш обмежена версія @jit,
яка вимагає, щоб функція була написана без використання певних
функціональностей Python, що не підтримуються Numba. Наприклад, це означає,
що функція не може містити вкладених функцій, об'єктів класів, генераторів або
взаємодіяти з деякими стандартними бібліотеками Python.
В даній роботі також використано два параметри декораторів @jit і @njit, а
саме:
− параметр inline="always": параметр inline вказує Numba, що слід
завжди виконувати інлайнінг функцій. Інлайнінг означає вставку вмісту функції
Лист
ЧДТУ.22.21090.005 ПЗ 47
Зм Арк №Докум. Підп Дат
безпосередньо у місце її виклику, замість виклику самої функції. Це може
покращити швидкодію, особливо в ситуаціях, коли функції викликаються багато
разів з невеликим об'ємом коду. За замовчуванням, inline має значення "always", що
означає, що інлайнінг завжди застосовується. Однак, його також можна встановити
на False, якщо ви бажаєте вимкнути інлайнінг для певних функцій.
− параметр nopython=True: Параметр nopython вказує Numba спробувати
згенерувати код, який не використовує Python-інтерпретатор. Це означає, що
Numba спробує згенерувати код, який використовує лише примітивні типи даних
та операції, які підтримуються компілятором. Якщо це не вдається (наприклад,
через використання об'єктів Python), Numba генерує повільніший код, що
використовує Python-інтерпретатор. За замовчуванням, nopython має значення
False, але якщо ви встановите його на True, Numba буде намагатись згенерувати
оптимізований код без використання Python-інтерпретатора. Якщо Numba вдається
згенерувати код без використання Python, це призводить до значного прискорення
виконання функцій.
Однак, важливо зауважити, що встановлення параметра nopython=True не
гарантує, що Numba завжди зможе згенерувати код без використання Python. Якщо
функція містить складні структури даних або операції, які не підтримуються
Numba, такі як рекурсія або динамічне створення об'єктів, компіляція може
відмовитися здійснити безпосередню генерацію машинного коду. У таких
випадках Numba переходить до режиму "об'єкта зворотного виклику" (fallback
mode), де вона використовує Python-інтерпретатор для виконання функції, що
призводить до меншої швидкодії.[8]
Деякі окремі наведені вище міркування практично продемонстрували
важливість застосування оптимізаційних рішень наявних в мові Python,
представлених відповідними модулями та засобами.
У симетричного блокового шифрування існує кілька режимів виконання, які
визначають, як шифр буде застосовуватися до блоків повідомлень. Основні режими
виконання включають:
Лист
ЧДТУ.22.21090.005 ПЗ 48
Зм Арк №Докум. Підп Дат
− ECB (Electronic Codebook),
− CBC (Cipher Block Chaining),
− OFB (Output Feedback),
− CFB (Cipher Feedback),
− CTR (Counter).
В процесі реалізації криптоалгоритму було використано режим виконання
симетричного блокового шифрування CTR (Counter). У режимі CTR
використовується лічильник, який створює послідовні числа для шифрування
блоків даних. Лічильник залежить від ключа шифрування, а потім лічильник
збільшується для кожного нового блоку даних.
Кожне число з лічильника використовується як вхід для блокового шифру, в
нашому випадку AES (Advanced Encryption Standard). Результатом шифрування є
шифротекст, який потім об'єднується з відповідним блоком вхідних даних за
допомогою операції побітового XOR. Отриманий результат стає вхідним для
наступного блоку даних.
Рисунок 3.1 – Структура модуля aes.py
Далі будуть наведені функції, які реалізовані для коректної роботи
криптоалгоритму AES та пояснення до них:
1. Функція s_idx – обчислює індекс елемента в матриці 4x4 за індексом
рядка та стовпця. В алгоритмі AES для представлення стану шифру
використовується матриця 4x4. Кожен елемент матриці є байтом (8 біт). Функція
s_idx приймає як вхідні дані індекс рядка (i) та індекс стовпця (j) елемента в матриці
Лист
ЧДТУ.22.21090.005 ПЗ 49
Зм Арк №Докум. Підп Дат
та повертає його лінійний індекс в одновимірному масиві, який представляє
матрицю. Алгоритм наведено на рис. 3.2.
Рисунок 3.2 – Функція s_idx()
2. Функція add_round_key – виконує операцію XOR над кожним байтом
стану state та байтом раундового ключа round_key.
Раундовий ключ складається з 16 байтів і містить у собі ключі, які були
створені на попередніх етапах шифрування. В даній функції round_idx – це індекс
раунду шифрування, для якого застосовується поточний раундовий ключ.
Цикл for проходить по кожному байту в стані state, виконує операцію XOR з
відповідним байтом раундового ключа, щоб отримати нове значення байту. Це
повторюється для кожного байту у стані state, щоб змінити його значення
відповідно до поточного раундового ключа. Результат виконання функції –
змінений стан state, де кожен байт змінено за допомогою операції XOR з
відповідним байтом раундового ключа.
Рисунок 3.3 – Функція add_round_key()
3. Функція sub_bytes – приймає масив стану, який представляє матрицю
4x4 байтів, і масив sbox, який є таблицею пошуку для шифру підстановки байтів.
Функція застосовує шифр підстановки, замінюючи кожен байт у масиві стану
на відповідний байт із масиву sbox. Підстановка виконується шляхом пошуку
значення state[idx] в масиві sbox і присвоєння результату state[idx].
Лист
ЧДТУ.22.21090.005 ПЗ 50
Зм Арк №Докум. Підп Дат
Рисунок 3.4 – Функція sub_bytes()
4. Функція shift_rows. Ця функція реалізує крок «ShiftRows» в алгоритмі
шифрування AES. Ідея цього кроку полягає в тому, щоб зсунути рядки масиву
стану на певну кількість байтів, де кількість байтів для зсуву кожного рядка
визначається індексом рядка.
Перший ряд не зсувається. Другий рядок зсувається на один байт вліво.
Третій рядок зсувається на два байти вліво. Четвертий рядок зсувається на три
байти вліво.
Рисунок 3.5 – Функція shift_rows()
5. Функція permute. Ця функція приймає 8-бітне значення val і виконує
його перестановку за допомогою кінцевого поля Rijndael.
Перестановка складається з двох частин:
Лист
ЧДТУ.22.21090.005 ПЗ 51
Зм Арк №Докум. Підп Дат
− Значення val зміщується вліво на один біт, а потім додається до
значення 0xff, щоб гарантувати збереження лише 8 молодших бітів.
− Якщо старший біт вихідного значення дорівнює 1, значення 0x1b
обробляється XOR зі зміщеним значенням. Це еквівалентно виконанню модульної
редукції за допомогою незвідного полінома x8 + x4 + x3 + x + 1 у кінцевому полі
Рейндаеля.
Результат перестановки повертається як 8-бітне значення. Дана функція
допомагає при множенні в полі Галуа.
Рисунок 3.6 – Функція permute()
6. Функція mix_columns. Ця функція виконує операцію MixColumns
алгоритму шифрування AES на матриці 4x4, що називається станом. Операція
MixColumns бере кожен стовпець матриці та застосовує до нього лінійне
перетворення, у результаті чого створюється новий стовпець, який замінює
вихідний.
Лінійне перетворення виконується за допомогою множення фіксованої
матриці, при цьому кожен елемент стовпця множиться на відповідний елемент
матриці, а потім підсумовується.
Рисунок 3.7 – Функція mix_columns()
Лист
ЧДТУ.22.21090.005 ПЗ 52
Зм Арк №Докум. Підп Дат
7. Функція cipher – Ця функція реалізує алгоритм шифрування AES.
Вона приймає два параметри:
1. state: 16-байтовий масив, що представляє відкритий текст, який потрібно
зашифрувати. Масив є одновимірним масивом numpy форми (16,).
2. round_key: 16-байтовий масив, що представляє круглий ключ, який
використовується для шифрування. Масив є одновимірним масивом numpy форми
(16,). Функція спочатку додає початковий ключ раунду до стану за допомогою
функції add_round_key. Потім він ітеративно виконує такі операції для кожного
раунду:
− sub_bytes: кожен байт у стані замінюється відповідним значенням у S-
Box.
− shift_rows: байти в кожному рядку стану циклічно зсуваються на певну
кількість позицій.
− mix_columns: стовпці стану змішуються за допомогою множення
матриці з фіксованою поліноміальною матрицею.
−
− add_round_key: ключ раунду для поточного раунду додається до стану.
Цикл while у функції зупиняється після AES128_NUM_OF_ROUNDS (10)
раундів.
Нарешті, останній ключ раунду додається до стану за допомогою
add_round_key. Отриманий 16-байтовий масив є зашифрованим текстом.
Лист
ЧДТУ.22.21090.005 ПЗ 53
Зм Арк №Докум. Підп Дат
Рисунок 3.8 – Функція cipher()
8. Функція aes_ctr_cipher приймає як вхідні дані bytearray (buf), iv_value
(байти) і round_key (байти).
Функція використовує режим шифрування CTR (Counter) для шифрування
buf за допомогою алгоритму AES із розміром блоку 128 біт.
Він починається з ініціалізації змінної iv_state заданим iv_value. Потім він
ініціалізує змінну блоку як масив bytearray з формою (AES_BLOCK_LEN,) (що
дорівнює 16, розміром одного блоку AES).
Потім функція входить у цикл, який повторює всі байти в buf. Для кожного
байта він перевіряє, чи оброблено всі 16 байтів поточного блоку. Якщо так, то
спочатку шифрується iv_state за допомогою функції шифрування та виконує XOR
отриманий блок із першими 16 байтами buf.
Нарешті, вона збільшує iv_state на 1 (який служить лічильником для режиму
CTR) і збільшує byte_idx на 1. Функція продовжує обробку наступного байта, доки
не зашифрує всі байти в buf.
Лист
ЧДТУ.22.21090.005 ПЗ 54
Зм Арк №Докум. Підп Дат
Рисунок 3.9 – Функція aes_ctr_cipher()
9. Функція expand_key – приймає 16-байтовий ключ і розширює його до
176-байтового круглого ключа. Він використовує розклад ключів Rijndael для
розширення ключа. Розклад ключів розширює ключ на кілька круглих ключів, по
одному для кожного раунду шифру. Довжина кожного круглого ключа становить
16 байт, що є розміром блоку AES.
Лист
ЧДТУ.22.21090.005 ПЗ 55
Зм Арк №Докум. Підп Дат
Рисунок 3.10 – Функція expand_key()
10. Функція calc_password_hash - приймає рядковий ключ як вхідні дані та
повертає перші 16 байт (128 біт) свого хешу SHA-256. Цей хеш використовується
як ключ шифрування AES для схеми шифрування на основі пароля.
Рисунок 3.11 – Функція calc_password_hash()
Лист
ЧДТУ.22.21090.005 ПЗ 56
Зм Арк №Докум. Підп Дат
11. Функції xcrypt, encrypt, decrypt. Функція xcrypt() приймає вхідні дані у
вигляді об'єкта bytearray, вектору ініціалізації та пароля. Вона використовує
функцію calc_password_hash() для обчислення хеш-коду пароля, який потім
розширюється в ключ шифрування за допомогою функції expand_key(). Ключ
потім використовується для зашифрування даних у режимі AES-CTR за допомогою
функції aes_ctr_cipher(). Ця функція використовуєся для шифрування блоків даних
довільної довжини в режимі CTR. Результат шифрування повертається як об'єкт
bytearray.
Функція encrypt та decrypt використовуються для шифрування та
дешифрування відповідно.
Рисунок 3.12 – Функції xcrypt(), encrypt(), decrypt()
3.3 Реалізація інтерфейсу користувача
Реалізація інтерфейсу користувача основана на біблиотеці python, яка має
назву tkinter. Tkinter – це широко використовувана бібліотека Python для створення
графічних інтерфейсів користувача (GUI).
Він надає набір інструментів і віджетів, які дозволяють розробникам легко
створювати інтерактивні програми.
Лист
ЧДТУ.22.21090.005 ПЗ 57
Зм Арк №Докум. Підп Дат
Рисунок 3.13 – Структура файлу program.py
Далі будуть представлені функції, які реалізовані для відтворення інтерфейсу
користувача та взаємодії з ним:
1. Функція collect_file_paths() – приймає шлях як вхідні дані та повертає
список шляхів до файлів у вказаному каталозі та його підкаталогах.
Ось як працює функція:
− ініціалізує порожній список під назвою paths для зберігання шляхів до
файлів;
− використовує функцію os.walk для повторення всіх каталогів і файлів
у заданому шляху;
− на кожній ітерації os.walk повертає кортеж, що містить поточний
шлях до каталогу (корінь), список підкаталогів (які ми ігноруємо,
використовуючи _ як ім’я змінної) і список імен файлів у цьому каталозі (імена
файлів);
− далі перебирає список імен файлів і додає повний шлях до файлу,
поєднуючи кореневий шлях із кожним іменем файлу за допомогою os.path.join;
− отриманий шлях до файлу додається до списку шляхів;
− після проходження всіх каталогів і файлів функція повертає список
шляхів, що містить усі зібрані шляхи до файлів.
Лист
ЧДТУ.22.21090.005 ПЗ 58
Зм Арк №Докум. Підп Дат
Рисунок 3.14 – Функція collect_file_paths()
2. Клас AESFileEncryptor() містить елементи для формування графічного
інтерфейсу для шифрування та дешифрування файлів з використанням AES-
алгоритму шифрування. Нижче наведено огляд функцій цього класу:
Конструктор класу (init) отримує головний параметр, який є об'єктом tkinter
Tk і представляє головне вікно програми. У конструкторі ініціалізуються різні
елементи графічного інтерфейсу та налаштування:
− встановлюється головний атрибут для отриманого головного об'єкта;
− встановлюється заголовок вікна на "Шифрувальник файлів AES";
− встановлюється розмір вікна 300x300 пікселів;
− вікно центрується на екрані;
− створюється та відображається мітка з текстом "Виберіть папку або
файли для обробки";
− створюється та відображається кнопка з позначкою "Вибрати папку",
яка викликає метод select_folde()r при натисканні;
− створюється та відображається кнопка з позначкою "Вибрати файли",
яка викликає метод select_files() при натисканні;
− створюється та відображається мітка з текстом "Пароль:";
− створюється та відображається поле для введення пароля (з
прихованими символами);
− створюється та відображається кнопка з позначкою "Шифрувати", яка
викликає метод start_encryption при натисканні (спочатку вимкнена);
Лист
ЧДТУ.22.21090.005 ПЗ 59
Зм Арк №Докум. Підп Дат
− створюється та відображається кнопка з позначкою "Дешифрувати",
яка викликає метод start_decryption() при натисканні (спочатку вимкнена);
− ініціалізується змінна прогресу (self.progress) для відстеження
прогресу шифрування або дешифрування;
− створюється та відображається індикатор прогресу (self.progressbar),
який відображає значення self.progress з максимальним значенням 1;
− ініціалізується порожній список self.file_paths для збереження
вибраних шляхів до файлів.
Рисунок 3.15 – Клас AESFileEncryptor()
Лист
ЧДТУ.22.21090.005 ПЗ 60
Зм Арк №Докум. Підп Дат
3. Функція select_folder(). Функція select_folder() є методом у класі
AESFileEncryptor(). Вона працює наступним чином:
− під час виклику функція відкриває діалогове вікно, у якому користувач
може вибрати папку;
− функція filedialog.askdirectory з модуля tkinter.filedialog
використовується для відображення діалогового вікна;
− якщо користувач вибирає папку (тобто якщо змінна папки не порожня),
функція продовжує такі дії:
− викликає функцію collect_file_paths(), передаючи вибрану папку
як аргумент, щоб зібрати всі шляхи до файлів у цій папці та її підкаталогах;
− список зібраних шляхів до файлів зберігається в атрибуті
self.file_paths екземпляра AESFileEncryptor;
− иітка, що відображається у вікні графічного інтерфейсу
користувача, оновлюється, щоб показати шлях до вибраної папки за
допомогою форматування рядка (наприклад, «Вибрана папка: {папка}»);
− кнопки encrypt_button і decrypt_button у вікні графічного
інтерфейсу вмикаються шляхом зміни їхнього стану на «нормальний». Це
дозволяє користувачеві натискати ці кнопки, щоб ініціювати операції
шифрування або дешифрування вибраної папки.
Рисунок 3.16 – Функція select_folder()
4. Функція select_files(). Функція select_files() є методом у класі
AESFileEncryptor(). Вона працює наступним чином:
Лист
ЧДТУ.22.21090.005 ПЗ 61
Зм Арк №Докум. Підп Дат
− під час виклику функція відкриває діалогове вікно, у якому користувач
може вибрати один або декілька файлів;
− функція filedialog.askopenfilenames з модуля tkinter.filedialog
використовується для відображення діалогового вікна;
− діалогове вікно дозволяє користувачеві вибирати кілька файлів, а імена
вибраних файлів повертаються як кортеж рядків;
− якщо користувач вибирає один або кілька файлів (тобто якщо змінна
file_names не порожня), функція продовжує такі дії:
− вибрані імена файлів зберігаються в атрибуті self.file_paths;
− мітка, яка відображається у вікні GUI, оновлюється, щоб вказати,
що вибрано певні файли;
− кнопки encrypt_button і decrypt_button у вікні графічного
інтерфейсу вмикаються шляхом зміни їх стану на «звичайний». Це дозволяє
користувачеві натискати ці кнопки, щоб почати операції шифрування або
дешифрування вибраних файлів.
Рисунок 3.17 – Функція select_files()
5. Функції start_encryption() і start_decryption().
Функція start_encryption:
− під час виклику функція створює новий потік, використовуючи клас
Thread з модуля threading;
− цільовою функцією для потоку встановлено self.encrypt_folder, який є
іншим методом у тому самому класі, відповідальним за процес шифрування;
Лист
ЧДТУ.22.21090.005 ПЗ 62
Зм Арк №Докум. Підп Дат
− метод thread.start() викликається для запуску потоку та виконання
методу self.encrypt_folder одночасно з основним потоком;
− завдяки використанню окремого потоку процес шифрування може
працювати у фоновому режимі, не блокуючи основний потік, що дозволяє
графічному інтерфейсу залишатися чуйним.
Функція start_decryption:
− під час виклику функція створює новий потік, використовуючи клас
Thread з модуля threading.
− цільовою функцією для потоку встановлено self.decrypt_folder, який є
іншим методом у тому ж класі, що відповідає за процес дешифрування.
− метод thread.start() викликається для запуску потоку та виконання
методу self.decrypt_folder одночасно з основним потоком.
− подібно до процесу шифрування, використання окремого потоку
дозволяє процесу дешифрування працювати у фоновому режимі, не блокуючи
основний потік.
Рисунок 3.18 – Функції start_encryption() і start_decryption()
6. Функція encrypt_folder(). Функція encrypt_folder() є методом у класі
AESFileEncryptor(). Вона працює наступним чином:
− отримує пароль, введений користувачем, із віджета self.password_entry.
Якщо пароль не введено, відображається повідомлення про помилку за допомогою
функції messagebox.showerror і повертається, завершуючи процес шифрування;
− функція вимикає кнопки select_file_button, select_folder_button,
encrypt_button і decrypt_button, змінюючи їхній стан на «вимкнено». Це запобігає
взаємодії користувача з цими кнопками під час процесу шифрування;
Лист
ЧДТУ.22.21090.005 ПЗ 63
Зм Арк №Докум. Підп Дат
− обчислює хеш пароля за допомогою функції aes.calc_password_hash() і
призначає його змінній password_hash;
− ініціалізує змінну лічильника n_processed_files, щоб відстежувати
кількість файлів, оброблених під час шифрування;
− потім функція повторює шлях до кожного файлу, що зберігається в
self.file_paths, що представляє файли, вибрані для шифрування;
− для кожного вхідного файлу функція створює шлях до вихідного
файлу, додаючи розширення ".enc" до шляху вхідного файлу;
− відкриває вхідний файл у двійковому режимі та зчитує його вміст
у байтовий масив з назвою data;
− генерує випадковий вектор ініціалізації (iv) за допомогою
os.urandom(16);
− викликає функцію aes.encrypt, передаючи data, iv_val і пароль як
аргументи для виконання операції шифрування;
− відкриває вихідний файл у двійковому режимі та записує хеш
пароля, iv та зашифровані дані у файл;
− видаляє оригінальний вхідний файл за допомогою os.remove,
щоб видалити його після успішного шифрування;
− збільшує лічильник n_processed_files і оновлює індикатор
прогресу, встановлюючи значення прогресу як співвідношення оброблених
файлів до загальної кількості файлів;
− після шифрування всіх файлів відображається повідомлення про
успішне виконання за допомогою messagebox.showinfo із зазначенням кількості
успішно зашифрованих файлів;
− після чтого викликається метод clear_form для скидання форми,
очищення поля введення пароля та скидання елементів графічного інтерфейсу до
початкових станів.
Лист
ЧДТУ.22.21090.005 ПЗ 64
Зм Арк №Докум. Підп Дат
Рисунок 3.19 – Функція encrypt_folder()
7. Функція decrypt_folder(). Функція decrypt_folder() є методом у класі
AESFileEncryptor(). Вона працює наступним чином:
− отримує пароль, введений користувачем, із віджета self.password_entry.
Якщо пароль не введено, воно відображає повідомлення про помилку за допомогою
функції messagebox.showerror і повертається, завершуючи процес дешифрування;
− вимикає кнопки select_file_button, select_folder_button, encrypt_button і
decrypt_button, змінюючи їхній стан на «вимкнено». Це запобігає взаємодії
користувача з цими кнопками під час процесу дешифрування;
− обчислює хеш пароля за допомогою функції aes.calc_password_hash() і
призначає його змінній password_hash;
− ініціалізує дві змінні лічильника: n_processed_files для відстеження
кількості файлів, успішно розшифрованих, і помилок для підрахунку кількості
файлів, які не вдалося розшифрувати через неправильний ключ;
Лист
ЧДТУ.22.21090.005 ПЗ 65
Зм Арк №Докум. Підп Дат
− потім функція повторює шлях до кожного файлу, що зберігається в
self.file_paths, що представляє файли, вибрані для розшифровки;
− після чого функція пропускає файли, які не мають розширення
".enc", оскільки вони не є зашифрованими файлами;
− для кожного вхідного файлу функція створює шлях до вихідного
файлу шляхом видалення останніх 4 символів (розширення ".enc") із шляху
вхідного файлу;
− відкриває вхідний файл у двійковому режимі та виконує наступні
операції:
1. зчитує перші байти aes.AES128_KEY_SIZE, які представляють
збережений хеш пароля, у змінну file_password_hash.
2. зчитує наступні 16 байтів, які представляють вектор ініціалізації
(IV), у змінну iv_val.
3. зчитує решту даних у байтовий масив з назвою data.
− порівнює password_hash із file_password_hash, щоб перевірити,
чи введений пароль правильний. Якщо вони не збігаються, він збільшує
лічильник помилок і продовжує до наступного файлу;
− викликає функцію aes.decrypt, передаючи data, iv_val і пароль як
аргументи для виконання операції дешифрування;
− він відкриває вихідний файл у двійковому режимі та записує
розшифровані дані у файл;
− ін видаляє оригінальний вхідний файл за допомогою os.remove,
щоб видалити його після успішного розшифрування;
− він збільшує лічильник n_processed_files і оновлює індикатор
прогресу, встановлюючи значення прогресу як співвідношення оброблених
файлів до загальної кількості файлів;
− після розшифровки всіх файлів перевіряється значення лічильника
помилок. Якщо він більший за нуль, відображається повідомлення про помилку за
Лист
ЧДТУ.22.21090.005 ПЗ 66
Зм Арк №Докум. Підп Дат
допомогою messagebox.showerror із зазначенням кількості файлів, які не вдалося
розшифрувати через неправильний ключ;
− якщо лічильник помилок дорівнює нулю, він відображає повідомлення
про успішне виконання за допомогою messagebox.showinfo, вказуючи кількість
успішно розшифрованих файлів;
− в кінечному етапі функція викликає метод clear_form для скидання
форми, очищення поля введення пароля та скидання елементів графічного
інтерфейсу до початкових станів.
Рисунок 3.20 – Функція decrypt_folder()
Лист
ЧДТУ.22.21090.005 ПЗ 67
Зм Арк №Докум. Підп Дат
8. Функція clear_form(). Функція clear_form є методом у класі
AESFileEncryptor. Вона працює наступним чином:
− очищає форму, скидаючи різні елементи графічного інтерфейсу до
початкових станів після завершення процесу шифрування чи дешифрування або
коли користувач хоче почати все спочатку;
− використовує метод видалення віджета self.password_entry для
видалення тексту, введеного в поле введення пароля. Аргументи 0 і "end" вказують
на те, що видалення має починатися з початку (індекс 0) і продовжуватися до кінця
поля введення;
− оновлює текст віджета self.label для відображення початкового
повідомлення «Виберіть папку для шифрування:», вказуючи, що користувачеві
потрібно вибрати папку для шифрування;
− вимикає кнопки self.encrypt_button і self.decrypt_button, змінюючи їхні
стани на «вимкнено». Це не дозволяє користувачеві натискати ці кнопки, доки
папка або файли не будуть вибрані знову;
− вмикає кнопки self.select_file_button і self.select_folder_button,
змінюючи їхні стани на «нормальний». Це дозволяє користувачеві натискати ці
кнопки та вибирати нову папку або файли для шифрування чи дешифрування.
Рисунок 3.21 – Функція clear_form()
Нижче наведений зовнішній вигляд інтерфейсу користувача (рис. 3.22-3.24).
Лист
ЧДТУ.22.21090.005 ПЗ 68
Зм Арк №Докум. Підп Дат
Рисунок 3.22 – Зовнішній вигляд програми
Рисунок 3.23 – Зовнішній вигляд програми при шифруванні/дешифруванні файлів
Рисунок 3.24 – Повідомлення про успішне виконання операції
Лист
ЧДТУ.22.21090.005 ПЗ 69
Зм Арк №Докум. Підп Дат
3.4 Тестування
Тестування програми програми відбувалось на комп’ютері ASUS VivoBook,
в якому встановлений процесор intel core i5-10200U та 8 гігабай ОЗУ. За основу
була взята папка «test», яка містить в собі 16,3 Мб файлів (рис. 3.25).
Рисунок 3.25 – Розмір папки «test»
Для початку тестування запускаємо програму та обираємо папку, або файл,
який хочемо зашифрувати, в нашому випадку це папка «test» (рис. 3.26).
Рисунок 3.26 – Початкове вікно програми
Лист
ЧДТУ.22.21090.005 ПЗ 70
Зм Арк №Докум. Підп Дат
Вибравши папку вводимо пароль в текстове поле «Password» та починаємо
процес шифрування натиснувши кнопку «Encrypt» (рис. 3.27).
Рисунок 3.27 – Підготовка до шифрування
Процес шифрування відображаться в індикатор виконання, який
підсвічується зеленим кольором (рис. 3.28), після його заповнення програма
видасть повідомлення про успішне шифрування (рис. 3.29).
Рисунок 3.28 – Процес шифрування
Лист
ЧДТУ.22.21090.005 ПЗ 71
Зм Арк №Докум. Підп Дат
Рисунок 3.29 – Повідомлення про успішне шифрування
Процес дешифрування відбувається на основі таких же самих кроків, що
наведені вище, але якщо пароль вказаний невірно програма видає діалогове вікно,
повідомляючи про те, що пароль вказаний невірно та файли не можуть бути
розшифровані (рис. 3.30).
Рисунок 3.30 – Повідомлення про неправильно вказаний пароль
3.5 Шивидкодія програми
Разом з тестуванням програми проводились заміри швидкодії програми.
Спочатку замірявся стандартний алгоритм на основі python bytearray, який показав,
що шифрування папки розміром 16,3 Мб відбувається протягом 160,5 секунд, а
дешифрування – 159,2 секунд, це вкрай багато часу на шифрування та
дешифрування папки такого розміру. Тому було використано дві бібліотеки python
для пришвидшення роботи алгоритму, а саме Numba та Numpy. [16]
− Numba.
Numba – це just-in-time (JIT) компілятор для Python, який спеціалізується на
оптимізації продуктивності чисельних обчислень. Він спеціально розроблений для
прискорення виконання на центральних і графічних процесорах і особливо
корисний для наукових програм і додатків, що інтенсивно обробляють дані. Numba
Лист
ЧДТУ.22.21090.005 ПЗ 72
Зм Арк №Докум. Підп Дат
досягає цього прискорення, генеруючи високоефективний машинний код під час
виконання, усуваючи потребу в ручній оптимізації коду.
Однією з ключових особливостей Numba є його здатність автоматично
компілювати функції Python в оптимізований машинний код. Використовуючи
визначення типу та своєчасну компіляцію, Numba може перетворити числові
обчислення, написані на Python, у високоефективний низькорівневий код. Це
дозволяє користувачам писати високорівневий виразний код Python, досягаючи
продуктивності, порівнянної з мовами низького рівня, такими як C або Fortran.
Numba підтримує широкий спектр функцій, включаючи підтримку масивів
NumPy, математичних функцій, циклів, умовних операторів і навіть паралельного
виконання на кількох ядрах або графічних процесорах. Він надає декоратори та
функції, які можна застосувати до функцій Python, щоб вказати, що їх потрібно
скомпілювати за допомогою Numba. Потім Numba може динамічно генерувати та
компілювати машинний код, спеціалізований для конкретних типів введення, що
призводить до значного покращення продуктивності.
− NumPy.
NumPy — це фундаментальна бібліотека для чисельних обчислень на Python.
Він забезпечує підтримку великих багатовимірних масивів і матриць разом із
набором математичних функцій для ефективної роботи з цими масивами. NumPy
широко використовується в наукових програмах і програмах аналізу даних завдяки
потужним операціям з масивами та ефективним числовим обчисленням.
В основі NumPy лежить об’єкт ndarray (n-вимірний масив), який
використовується для представлення масивів будь-якої розмірності. NumPy надає
широкий спектр операцій і функцій, які можна застосовувати до цих масивів,
включаючи поелементні операції, лінійну алгебру, перетворення Фур’є, генерацію
випадкових чисел і багато іншого. Операції з масивами NumPy дуже оптимізовані
та написані на C, що робить їх набагато швидшими, ніж еквівалентні операції, які
виконуються на чистому Python.
− Інтеграція NumPy з Numba.
Лист
ЧДТУ.22.21090.005 ПЗ 73
Зм Арк №Докум. Підп Дат
Numba та NumPy працюють разом, щоб забезпечити оптимізовані числові
обчислення в Python. Numba розпізнає масиви NumPy як підтримувані типи даних
і може автоматично генерувати ефективний машинний код для операцій NumPy.
Це означає, що можна писати високорівневий код NumPy і все ще користуватися
перевагами покращення продуктивності, які забезпечує Numba.
Коли Numba компілює функцію, яка містить операції NumPy, вона оптимізує
обчислення за допомогою своїх методів компіляції точно вчасно. Це призводить до
значного прискорення порівняно з виконанням того самого коду за допомогою
чистого Python. Інтеграція між Numba та NumPy дозволяє користувачам писати
експресивний високорівневий код, насолоджуючись перевагами продуктивності
низькорівневої оптимізації.
Підсумовуючи, Numba та NumPy доповнюють один одного, забезпечуючи
швидкі та ефективні чисельні обчислення в Python.
NumPy надає потужний інтерфейс програмування на основі масивів, тоді як
Numba підвищує продуктивність, автоматично генеруючи оптимізований
машинний код для операцій NumPy. Ця комбінація дозволяє користувачам писати
високорівневий виразний код, досягаючи при цьому продуктивності, порівнянної з
низькорівневими мовами, що робить його чудовим вибором для наукових програм
і додатків, що інтенсивно обробляють дані.
Вимірявши швидкодію другого алгоритму з використанням python bytearray,
Numba, NumPy, результат шифрування показав 36,1 секунду, а дешифрування –
34,9 секунди. Це в чотири рази швидше ніж перший алгоритм, тому краще буде
використовувати другий алгоритм. На рисунку 3.29 можно графічно побачити
різницю в швидкодії.
Лист
ЧДТУ.22.21090.005 ПЗ 74
Зм Арк №Докум. Підп Дат
Рисунок 3.31 – Тести швидкодії програми
Лист
ЧДТУ.22.21090.005 ПЗ 75
Зм Арк №Докум. Підп Дат
4 ОХОРОНА ПРАЦІ
4.1 Аналіз небезпек та шкідливостей, що впливають на системних
адміністраторів
Всі роботи, пов’язані з розробкою програми для шифрування інформаційних
ресурсів, виконується у спеціально відведеній кімнаті для системних
адміністраторів.
Щоб забезпечити продуктивність і безпеку системних адміністраторів,
важливо звертати увагу на різноманітні фактори навколишнього середовища, які
можуть вплинути на їхнє здоров’я. Необхідно ретельно враховувати такі фактори,
як освітлення, температура, вологість, рівень шуму та якість повітря.
Робоче місце кожного системного адміністратора складається з робочого
столу, зручного та регульованого крісла та персонального комп'ютера. Столи
розташовані таким чином, щоб забезпечити легке переміщення та зручні робочі
позиції. Комп’ютерні монітори розташовуються на відповідній відстані
щонайменше 70 см від очей користувача та під кутом огляду 30o, щоб мінімізувати
вплив випромінювання на зір.
Робота системних адміністраторів не потребує фізичних навантажень і як
така відноситься до категорії I важкості праці. Однак важливо переконатися, що
крісла мають ергономічну конструкцію, щоб підтримувати природну анатомію
людського тіла та зменшувати ризик захворювань опорно-рухового апарату.
Для підтримки здорових і безпечних умов праці кімната системного
адміністратора обладнана кондиціонером для регулювання рівня температури і
вологості, а також проведені заходи щодо звукоізоляці для зниження рівня шуму.
Також проводиться регулярне технічне обслуговування та очищення обладнання та
засобів, щоб забезпечити безпечне робоче місце.
Кімната системного адміністратора має розміри 10м*10м з висотою стелі 3м,
загальний об'єм 300м3. Приміщення розраховане на розміщення восьми
співробітників, що забезпечує кожній людині 12,5 м2 площі та 37,5 м3 об’єму.
Лист
ЧДТУ.22.21090.005 ПЗ 76
Зм Арк №Докум. Підп Дат
Це відповідає вимогам галузевих стандартів комфортних умов праці згідно з
ДБН В.2.2-28:2010.
Стіни приміщення пофарбовані в світлий колір з коефіцієнтом відбиття
світла 50-54% і мають матову структуру, що забезпечує оптимальне освітлення
робочого простору.
У холодну пору року приміщення обладнано централізованою системою
опалення з шести сталевих радіаторів, які підтримують нормовану температуру
повітря, створюючи комфортні умови для роботи системних адміністраторів згідно
з ДБН В.2.5.67-2013.
Чинники мікроклімату відіграють важливу роль у здоров’ї та самопочутті
системних адміністраторів. Відповідно до ДСН 3.3.6.042-99 нормативні значення
основних факторів мікроклімату такі:
1. Температура повітря:
− У теплий період року - 23-25°С (допустима - 21-28°С);
− У холодний період року - 22-24°С (допустима - 21-25°С).
2. Вологість повітря:
− У теплий період року - 40-60%;
− У холодний період року - 40-60%.
3. Швидкість руху повітря:
− У теплий період року - 0,1 м/с (допустима - 0,1...0,2 м/с).
− У холодний період року - 0,1 м/с (допустимо - менше 0,1 м/с).
Фактичні значення цих параметрів в кімнаті системного адміністратора
становлять:
1. Температура повітря:
− У теплий період року - 24-27°С;
− У холодний період року - 22-24°С.
Лист
ЧДТУ.22.21090.005 ПЗ 77
Зм Арк №Докум. Підп Дат
2. Вологість повітря:
− У теплий період року - 45-50%;
− У холодний період року - 50-52%.
3. Швидкість руху повітря:
− У теплий період року - 0,08-0,12 м/с;
− У холодний період року - 0,07-0,1 м/с.
Фактичні параметри мікроклімату в кімнаті системного адміністратора
повністю відповідають ДСН 3.3.6.042-99, забезпечуючи оптимальні умови праці
співробітників.
У кімнаті системного адміністратора шум є важливим фактором через
тривале перебування працівників біля системного блоку комп’ютера та принтера.
Вентилятор охолодження в системному блоці комп'ютера є основним джерелом
шуму. Нормативне значення еквівалентного рівня шуму для даного виду діяльності
та робочого місця становить 50 дБА. Фактичний рівень шуму в приміщенні
становить 40-45 дБА, що відповідає ДСН 3.3.6.037-99 «Санітарні норми
виробничого шуму, ультразвуку та інфразвуку».
Напруженість електромагнітного поля в приміщенні не перевищує
нормативного значення, зазначеного в ДСН 3.3.6.096-2002 «Державні санітарні
норми і правила при роботі з джерелами електромагнітних полів», що забезпечує
безпеку системних адміністраторів при роботі з електронним обладнанням.
Умови роботи системних адміністраторів визначаються не тільки
параметрами виробничого середовища, але й характеристиками
використовуваного обладнання, якістю робочих матеріалів у робочій зоні та
дизайном робочих меблів. Стільці в кімнату підібрані згідно ДСТУ 8604:2015
«Дизайн і ергономіка. Робоче місце для виконання робіт у положенні сидячи.
Загальні ергономічні вимоги».
Стіл у кімнаті має ширину 1,2 м, що забезпечує достатньо місця для
комфортної роботи системних адміністраторів.
Лист
ЧДТУ.22.21090.005 ПЗ 78
Зм Арк №Докум. Підп Дат
Усі предмети на столі розташовані в межах 75 см від працівника, гарантуючи,
що вони знаходяться в межах робочої зони. Висота письмового столу 74 см, а
висота стільця регулюється для забезпечення зручного та ергономічного робочого
положення згідно ДСанПіН 3.3.2.007-98 «Гігієнічні вимоги до організації роботи з
візуальними дисплейними терміналами електронно-обчислювальних машин».
Кімната системного адміністратора призначена для забезпечення безпечних
і комфортних умов праці для її співробітників. Приміщення відповідає
промисловим стандартам щодо рівня шуму та інтенсивності електромагнітного
поля. Меблі та обладнання підібрано таким чином, щоб забезпечити ергономічні
робочі місця, забезпечуючи комфортне та продуктивне робоче місце для системних
адміністраторів.
На робочу позу системних адміністраторів часто впливає тривале очікування,
поки комп’ютер завершить обробку результатів, що призводить до тривалих
періодів перебування в незручній фіксованій позі протягом до 25% загальної
тривалості роботи. Складність завдання передбачає передачу інформації, обробку
отриманих результатів та визначення їх точності та коректності, що відповідає
допустимому класу умов праці.
Освітлення промислових приміщень безпосередньо впливає на
психофізіологічне благополуччя системних адміністраторів, сприяючи
підвищенню продуктивності, безпеки, зниженню втоми та мінімізації ризику
травм. Щоб забезпечити належні умови освітлення, галузеві стандарти диктують
такі вимоги:
− освітлення повинно бути достатнім для виконання роботи.
Освітлення робочої поверхні має бути рівномірним.
На робочій поверхні не повинно бути тіней, особливо рухомих;
− у полі зору не повинно бути прямих або відбитих відблисків.
Спектральний склад світла повинен відповідати характеру роботи, щоб
забезпечити належну передачу кольору;
Лист
ЧДТУ.22.21090.005 ПЗ 79
Зм Арк №Докум. Підп Дат
− освітлювальні установки не повинні бути джерелом додаткової
небезпеки або небезпеки. установки повинні бути економічними, простими і
надійними в експлуатації;
− кімната системного адміністратора проектується з одностороннім
природним освітленням, з виходом вікон на північний схід. Розміри чотирьох вікон
у кімнаті однакові, 1,4м*1,7м;
− столи розташовують таким чином, щоб вікна були з боку працівників,
забезпечуючи достатнє, рівномірне і безтіньове природне освітлення. Вікна
оснащені світлорозсіювальними шторами для забезпечення оптимальної
освітленості робочих і оточуючих поверхонь при мінімізації відбиття світла від
екранів комп’ютерів і клавіатур.
Відповідно до вимог ДБН В.2.5-28-2018 природне освітлення кімнати
системного адміністратора нормується за коефіцієнтом природного освітлення
(КПО), з категорією зорової роботи ІІ в, роздільною здатністю об’єкта 0,25 мм,
відповідно. до високоточної зорової роботи. Враховується контраст об’єкта з
найменшою роздільною здатністю та фону, наприклад тексту на моніторі, папері
та клавіатурі. Фактичне значення КПО знаходиться в межах 25-30%, що відповідає
вимогам ДБН В.2.5-28-2018.
Для компенсації нестачі природного освітлення в темний час доби
встановлюють штучне освітлення. Величина освітленості в люксах (Lk) для
штучного освітлення нормується на основі характеристик зорової роботи,
включаючи найменший розмір об'єкта розрізнення, фон і контраст. Кімната
системного адміністратора обладнана шістьма світильниками ЛСП 02Б по дві
люмінесцентні лампи. Фактичний рівень штучного освітлення становить 200-220
лк, що не є достатнім для виконання зорової праці ІІ розряду, відповідно ДБН В.2.5-
28-2018. Тому система загального штучного освітлення потребує модернізації.
Робота системного адміністратора пов’язана з відстеженням інформації на
екрані комп’ютера, що призводить до підвищеного навантаження на зір, у тому
числі до постійного мерехтіння, нестійких і розмитих зображень, частої
Лист
ЧДТУ.22.21090.005 ПЗ 80
Зм Арк №Докум. Підп Дат
переадаптації очей до рівня освітленості екрана та кімната. Потреба
пристосовуватися до віддалених об'єктів також сприяє напруженню зору.
У кімнаті системного адміністратора ризик ураження електричним струмом
мінімальний, оскільки встановлене в ній обладнання живиться від напруги 220 В і
споживає менше 2500 Вт. У кімнаті знаходяться металеві корпуси системного
блоку ПК, що означає, що в даній кімнаті повинна бути забезпечена лінія захисного
заземлення згідно ДСТУ Б В.2.5-82-2016. Важливо, щоб системні адміністратори
володіли технікою електробезпеки при роботі з електрообладнанням. Інструкцію
складено на основі ДНАОП 0.00-1.32-01, ДСТУ Б В.2.5-82-2016 та ПУЕ-17.
Необхідно переконатися, що працівники розуміють призначення приладів,
обладнання, матеріалів і правильні способи їх використання для запобігання
нещасним випадкам. При роботі з електрообладнанням важливо дотримуватися
таких правил, як негайне відключення електрообладнання у разі раптового
припинення подачі електричного струму.
Категорично забороняється ремонтувати електрообладнання та проводити
будь-які перемикання на головному розподільчому щитку. Також важливо уникати
зняття запобіжних кожухів і негайно вимикати напругу в разі несправності
електрообладнання, вимірювальних приладів і проводів. У разі ураження
електричним струмом потерпілого необхідно негайно звільнити від дії струму,
вжити заходів щодо надання першої допомоги, у разі потреби викликати лікаря.
Кімната системного адміністратора відноситься до категорії приміщень
категорії пожежо- та вибухонебезпеки В згідно з ДСТУ Б В.1.1-36:2016, до якої
належать легкозаймисті та легкозаймисті рідини, тверді легкозаймисті та
легкозаймисті речовини та речовини, що горять тільки при взаємодії з водою,
повітрям, киснем або іншою речовиною. Для попередження пожежної небезпеки в
приміщенні системного адміністратора проводяться заходи згідно НАПБ А.01.001-
2014 «Правила пожежної безпеки в Україні», зокрема в наявності інструкція з
пожежної безпеки та план евакуації, який вивішений на стіні у вільному доступі.
Лист
ЧДТУ.22.21090.005 ПЗ 81
Зм Арк №Докум. Підп Дат
Кімната обладнана двома димовими сповіщувачами ІП-212-46 та
електропожежним сповіщувачем променевого типу згідно ДБН В.2.5.56-2014.
Також на стіні біля дверей встановлено вогнегасник порошковий ВП-5У,
відповідно до Правил користування вогнегасниками.
Перед початком роботи всі працівники проходять вступний та первинний
інструктажі з питань охорони праці, що відповідає типовому положенню про
навчання з цих питань (ДНАОП 0.00 4.12-05). Після цього проводиться перевірка
знань з вступного та первинного інструктажу, з використанням затвердженого
переліку запитань.
Вступний інструктаж проводиться з усіма працівниками, незалежно від їх
освіти, стажу роботи за цією професією або посади. Цей інструктаж проводиться
при прийомі на роботу, будь то постійну або тимчасову.
Первинний інструктаж проводиться з працівниками та студентами на місці
роботи перед початком роботи. Журнал про проведення вступного інструктажу
ведеться окремо.
Повторний інструктаж проводиться на місці роботи з усіма працівниками та
студентами, на роботах з підвищеною небезпекою - один раз на квартал, на інших
роботах - один раз на півріччя.
Враховуючи вимоги положення про навчання з питань охорони праці, перед
початком роботи всі працівники проходять повний курс інструктажів та перевірку
знань, щоб забезпечити безпеку та здоров'я на робочому місці.
Провівши комплексний аналіз умов праці в кімнаті системного
адміністратора встановлено, що найважливішим фактором, що впливає на безпеку
праці працівника, є недостатній рівень штучного освітлення робочого місця.
Недостатнє освітлення може призвести до напруги зору і викликати різні
негативні ефекти, такі як мерехтіння, нестабільність і розмитість зображення на
екрані, а також часту переадаптацію очей до рівня освітленості екрану дисплея і
загальної освітленості. кімнати. Ці фактори можуть призвести до втоми та
зниження продуктивності в процесі роботи.
Лист
ЧДТУ.22.21090.005 ПЗ 82
Зм Арк №Докум. Підп Дат
4.2 Модернізація системи загального штучного освітлення
Для вирішення проблеми недостатнього штучного освітлення кімнати
системного адміністратора необхідно модернізувати загальну систему штучного
освітлення, як встановили аналізи. Проект системи освітлення повинен
забезпечувати сприятливі гігієнічні умови для зорової роботи з урахуванням
економічних показників.
Приміщення повинне відповідати нормам, встановленим ДБН В.2.5-28-2018
щодо штучного освітлення. Кімната відноситься до категорії II c зорової роботи, де
найменший об’єкт роздільної здатності становить 0,25 мм, що відповідає високому
ступеню точності зорової роботи. Необхідно також враховувати контраст об’єкта
найменшої роздільної здатності та фону, наприклад між текстом на моніторі та
фоном, між текстом на аркуші паперу та аркушем, буквами на клавіатурі.
Для дотримання норм штучного освітлення кімнати необхідно
використовувати освітлювальні прилади, які забезпечують достатню кількість
освітленості в люксах (Лк), виходячи з особливостей зорової роботи, з урахуванням
найменших розмірів об'єкта. У приміщенні системного адміністратора можуть бути
використані світлодіодні світильники, які забезпечують рівномірне освітлення
робочої поверхні, запобігають появі тіней і відблисків, мають спектральний склад,
що відповідає характеру роботи.
Крім того, система освітлення не повинна бути джерелом додаткових
небезпек, а установки повинні бути економічними, простими і надійними в роботі.
Модернізацію системи освітлення проводити згідно з вимогами ДБН В.2.5-28-2018
та виміряти фактичний рівень штучного освітлення на відповідність встановленим
нормам.
При проектуванні нової системи штучного освітлення важливо враховувати
особливості візуальної роботи, що виконується в приміщенні. Для робіт I-IV
категорій рекомендується застосовувати комбіновану систему освітлення,
а також використовувати в комбінованій системі локальне освітлення для
рівномірного освітлення робочого простору.
Лист
ЧДТУ.22.21090.005 ПЗ 83
Зм Арк №Докум. Підп Дат
Освітленість робочої поверхні, створювана світильниками загального
освітлення в комбінованій системі, повинна бути не менше 10% від норми
комбінованого освітлення, але в усіх випадках не менше 150 лк для газорозрядних
ламп і 50 лк для ламп розжарювання. Важливо також вибрати відповідний тип
джерела світла і лампи, визначити розташування освітлювальних приладів,
провести розрахунок штучного освітлення, визначити потужність ламп і
світильників.
Для кімнати системного адміністратора рекомендована комбінована система
освітлення для досягнення необхідної освітленості при мінімізації
енергоспоживання. Для забезпечення сприятливих гігієнічних умов зорової роботи
в якості джерела світла віддають перевагу світлодіодним лампам, завдяки
тривалому терміну служби, спрямованому випромінюванню і безпеки.
Світлодіодні лампи доступні в різних формах і кольорах, від теплого до
холодного білого. У порівнянні з традиційними джерелами освітлення світлодіодні
лампи перевершують їх за багатьма технічними та експлуатаційними параметрами.
Розрахунок системи загального штучного освітлення здійснюється за допомогою
коефіцієнта використання методу світлового потоку.
Для визначення місця розміщення освітлювальних приладів беруться
світильники, які підвішені до стелі (hc – 0.3м ), висота робочої поверхні (hр – 0.75
м), висота підвішування світильників над підлогою (hp – 2.7м) і робочою
поверхнею (h – 1.95м).
Найголовнішим завданням розрахунку штучного освітлення є визначення
необхідної кількості світильників N для того, аби забезпечити достатній рівень
штучного освітлення в приміщенні за наступною формулою:
Eн K з S z
N = , (4.1)
Fл n
де Ен – нормований рівень загального штучного освітлення, лк
(ДБН В.2.5-28-2018);
n – кількість ламп у світильнику;
Лист
ЧДТУ.22.21090.005 ПЗ 84
Зм Арк №Докум. Підп Дат
Fл – світловий потік лампи, лм;
Кз – коефіцієнт запасу, який враховує зниження освітлення в процесі
експлуатації, Кз = 1,5;
S – площа приміщення, яка освітлюється, S = 10 · 10 = 100 м2;
z – коефіцієнт нерівномірності освітлення, приймаємо рівним 1,15;
η – коефіцієнт використання світлового потоку.
Для розрахунку коефіцієнту використання світлового потоку потрібно
знайти індекс приміщення і. Індекс приміщення розраховується за наступною
формулою:
А В
i = ( ) ( ) , (4.2)
Н − 0,8 А+ В
де А – довжина приміщення, В – ширина приміщення і Н – висота
приміщення. Знаючи значення відповідних показників порахуємо індекс
приміщення:
10 · 10
і = = 2,3
(3 − 0,8) · (10 + 10)
Для вирішення проблеми недостатнього штучного освітлення кімнати було
прийнято рішення використати в складі системи загального штучного освітлення
стельовий світлодіодний світильник PL 6500K 48 Вт, який має наступні
характеристики:
− споживана потужність в номінальному режимі – 48 Вт;
− напруга живлячої мережі – 220 В;
− світловий потік світильника – 4100 Лм;
− колір світіння – холодний;
− індекс кольоропередачі – 80 Ra;
− ступінь захисту – ІP20;
− габаритні розміри – 595×595×20 мм;
− площа освітлення – 10-20 кв. м;
Лист
ЧДТУ.22.21090.005 ПЗ 85
Зм Арк №Докум. Підп Дат
− країна виробник – Китай;
− ресурс роботи світильника – 50 000 годин.
Дізнавшись характеристики світильника знаходимо кількість світильників за
формулою 4.1:
400 · 1,5 · 100 · 1,15
= = 21,3
4100 · 1 · 0,79
Проаналізувавши отриманий результат робимо висновок, що для
розподілення світла на робочих місцях в приміщенні системного адміністратора на
стелі приміщення необхідно розташувати двадцять один світильник (рис. 4.1).
Рисунок 4.1 – Зовнішній вигляд світильника PL 6500K 48 Вт
Світлодіодний світильник PL 6500K 48 Вт є ідеальним вибором для
освітлення офісних, житлових, адміністративних та суспільно-побутових
приміщень. Він має потужність 48 Вт, що забезпечує достатній рівень освітленості
для продуктивної роботи працівників. вітильник має квадратну форму і може бути
встановлений на стелі.
Цей світильник виготовлений з металу та пластику, і має стійкість до впливу
навколишнього середовища.
Лист
ЧДТУ.22.21090.005 ПЗ 86
Зм Арк №Докум. Підп Дат
Крім того, він має захист від вологи на рівні IP20, що робить його безпечним
для використання у вологих приміщеннях.
Що стосується характеристик світла, світильник PL 6500K 48 Вт має
холодний колір світла з колірною температурою 6500 К, що забезпечує яскраве та
чітке освітлення. Індекс перенесення кольорів на рівні 80 Ra гарантує точне
відображення кольорів предметів в приміщенні.
Лист
ЧДТУ.22.21090.005 ПЗ 87
Зм Арк №Докум. Підп Дат
ВИСНОВКИ
Темою дипломної роботи є реалізація підсистеми криптографічного захисту
інформаційних ресурсів на базі алгоритму AES. Для того, аби почати роботу над
розробкою програми було проаналізовано предметну область та виявлено, що AES
– це алгоритм симетричного шифрування, який забезпечує безпечний зв’язок і
захист даних. Він працює з з блоками даних фіксованого розміру з розміром блоку
128 біт, процеси шифрування та дешифрування в AES виконуються за допомогою
ключа, який може мати довжину 128, 192 або 256 біт та кількість раундів
встановлюється на 10, 12 або 14 залежно від розміру ключа, який використовується
(чим більше ключ – тим більша кількість раундів).
Для реалізації даної програми була використана мова програмування python
тому, що вона має такі переваги:
− простота використання: Python має простий і зрозумілий синтаксис, що
дозволяє швидко та зручно писати код;
− велика кількість бібліотек: Python має широкий вибір бібліотек і
модулів, що спрощує розробку програм і зменшує необхідність відтворювати
функціонал з нуля;
− платформонезалежність: Python підтримується на багатьох
операційних системах, таких як Windows, macOS і Linux;
− велика спільнота: Python має активну та велику спільноту програмістів,
яка надає підтримку, допомогу та розробляє нові інструменти і бібліотеки.
Протестувавши програму після розробки, можемо зробити висновок, що вона
працює коректно, має дуже інтуітивний інтерфейс користувача та шифрування і
дешифрування файлів відбувається достатньо швидко.
Проаналізувавши систему загального штучного освітлення були прийняті
рішення для її покращення. Виходячи з розрахунків, для розподілення світла на
робочих місцях в приміщенні системного адміністратора на стелі приміщення
необхідно розташувати двадцять один світильник PL 6500K 48 Вт.
Лист
ЧДТУ.22.21090.005 ПЗ 88
Зм Арк №Докум. Підп Дат
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ
1. Проблеми та перспективи захисту персональних даних в Україні
[Електронний ресурс]. Режим доступу - https://bsoprivacygroup.com/data-ptotection-
in-ukraine.
2. Захист персональних даних FAQ [Електронний ресурс]. Режим доступу
- https://www.ombudsman.gov.ua/uk/zahist-personalnih-danih-faq.
3. Сучасні криптосистеми [Електронний ресурс]. Режим доступу -
https://sites.google.com/site/sucasnikriptosistemik/home/porivnanna-simetricnih-z-
asimetricnimi-kriptosistemami.
4. Введення в криптографію: симетричне шифрування [Електронний
ресурс]. Режим доступу - https://markup-ua.com/vvedennya-v-kriptografiyu-
simetrichne-shifruvannya/.
5. Уроки криптографії [Електронний ресурс]. Режим доступу -
https://cryptoworld.su/uroki-kriptografii-sovremennye-zarubezhnye-shifry-chast-4/.
6. Опис алгоритму Blowfish [Електронний ресурс]. Режим доступу -
https://studbooks.net/2349917/tehnika/opisanie_algoritma_blowfish.
7. Вікіпедія [Електронний ресурс]. Режим доступу :
https://uk.wikipedia.org/wiki/%D0%93%D0%BE%D0%BB%D0%BE%D0%B2%D0%
BD%D0%B0_%D1%81%D1%82%D0%BE%D1%80%D1%96%D0%BD%D0%BA%
D0%B0.
8. Посібник з мови програмування Python [Електронний ресурс]. Режим
доступу - https://metanit.com/python/tutorial/.
9. Переваги і недоліки мови Python [Електронний ресурс]. Режим доступу
- https://blog.ithillel.ua/articles/perevagi-i-nedoliki-movi-python.
10. Симетричні криптосистеми [Електронний ресурс]. Режим доступу -
https://studwood.net/2600042/informatika/shemi_shifruvannya.
11. Python GUI програмування [Електронний ресурс]. Режим доступу -
https://codeguida.com/post/140.
Лист
ЧДТУ.22.21090.005 ПЗ 89
Зм Арк №Докум. Підп Дат
12. Режими роботи блочного шифр [ Електронний ресурс]. Режим доступу
- https://coderlessons.com/tutorials/akademicheskii/izuchite-kriptografiiu/rezhimy
raboty-blochnogo-shifra.
13. Проблеми та перспективи захисту персональних даних в Україні
[Електронний ресурс]. Режим доступу - https://bsoprivacygroup.com/data-ptotection-
in-ukraine.
14. Види шифрування інформації [Електронний ресурс]. Режим доступу -
https://ua5.org/protect/395-vidi-shifruvannya-informaciyi.html.
15. Що таке асиметричне та симетричне шифрування [Електронний
ресурс]. Режим доступу - https://www.websiterating.com/uk/vpn/glossary/what-is-
asymmetric-symmetric-encryption/.
16. Python bytearray [Електронний ресурс]. Режим доступу -
https://www.w3resource.com/python/python-bytes.php.
17. Numba 0.57.0 [Електронний ресурс]. Режим доступу -
https://pypi.org/project/numba/.
18. NumPy 1.24.3 [Електронний ресурс]. Режим доступу -
https://pypi.org/project/numpy/.
ДОДАТОК А
Лист
ЧДТУ.22.21090.005 ПЗ 90
Зм Арк №Докум. Підп Дат