- Галузь знань: 12 Інформаційні технології
- Спеціальність: 123 Компʼютерна інженерія
- Освітня програма: "Сучасне програмування, мобільні пристрої та комп’ютерні ігри"
- Рівень вищої освіти: другий (магістерський)
- Вид дисципліни: професійна підготовка; обовʼязкова
- Форма навчання: денна
- Лекцій: 16 годин
- Лабораторних занять: 32 годин
- Практичних занять: -- годин
- Форма контролю: екзамен
- Термін викладання для освітньо-кваліфікаційного рівня "магістр": 9 семестр
Мета навчальної дисципліни "Сучасні технології безпечного програмування" є отримання студентами загальних відомостей про сучасні технології створення безпечного програмного забезпечення; отримання знань та базових навичок практичного застосування реверс-інжинірингу для аналізу ступеню захисту існуючого "закритого" програмного продукту. Курс містить практичні вправи для ознайомлення студентів з базовими принципами криптографії та програмування для вирішення поставлених задач з використання безпечних заходів як для десктопного програмного забезпечення, так і Web-додатків.
Компетентності:
- Z9. Здатність застосовувати методи математичного та комп’ютерного моделювання для дослідження та проектування процесів та систем в галузі інформаційних технологій.
- Р1. Здатність проектувати комп’ютерні системи й засоби усіх рівнів складності, проводити вибір їх компонентів згідно з вимогами та умовами експлуатації, використовуючи вимоги державних стандартів та відповідних нормативних документів.
- P9. Здатність проектувати програмні компоненти та комплекси.
- P17. Здатність проектувати безпечні програми.
Результати навчання:
- N6. Знати вимоги державних стандартів та нормативних документів щодо розробки й супроводження програмних засобів.
- N9. Знати принципи побудови клієнтських та серверних додатків.
Збільшення залежності людського суспільства від мережевих програмних систем супроводжується збільшенням кількості нападів, скоєних на ці системи. Такі напади - спрямовані проти урядів, корпорацій, навчальних закладів та приватних осіб - призводять до втрати і компрометації конфіденційних даних, пошкодженню систем, втрат продуктивності і фінансових втрат. Хоча проблема сьогоднішніх атак в Інтернеті — це не більше, ніж просто невелика незручність, велика кількість більше свідчень того, що злочинці, терористи й інші шкідники шукають і використовують уразливості в програмних системах для досягнення своїх цілей. Сьогодні швидкість відкриття вразливостей програмного забезпечення становить понад 4000 на рік. Це викликано проєктуванням і реалізацією програмного забезпечення, які не захищають системи належним чином, і поширеною практикою програмування, коли програмісти недостатньо зосереджуються на ліквідації дефектів реалізації, які призводять до появи уразливості. Спостерігається також стійкий прогрес у витонченості і ефективності атак зловмисників, що швидко розробляють нові шкідливі сценарії, які використовують виявлені в програмах уразливості. Потім ці сценарії запроваджуються для несанкціонованого доступу до інформації, а взаємообмін такими сценаріями сприяє їх широкому розповсюдженню. Ці сценарії в поєднанні з програмами, автоматично скануючими мережу в пошуках уразливих систем, і їх атаки призводять до вибухоподібного поширення нападів на обчислювальні системи.
Велика кількість виявлених щороку вразливостей призводить до перевантаженості адміністраторів роботою з виправлення існуючих систем. Виправлення для цих програм можуть бути важко застосовними або мають несподівані побічні ефекти. З того моменту, коли розробник випускає оновлення безпеки, і до моменту його установлення на 90-95 % уразливих комп'ютерів можуть пройти місяці або навіть роки. Раніше користувачі Інтернету в значній мірі спиралися на можливості інтернет-спільноти в цілому досить швидко реагувати на атаки на систему безпеки і зводити завдані збитки до мінімуму. Сьогодні, однак, стає ясно, що ми досягли межі ефективності наших реактивних рішень. Незважаючи на всі зусилля окремих організацій з раціоналізації та автоматизації процедур виправлень, кількість вразливостей в комерційних програмних продуктах сьогодні знаходиться на рівні, що не дозволяє ніяким, крім самих забезпечених будь-якими ресурсами, організаціям йти в ногу з новими виправленнями вразливостей. Є дуже мало свідчень поліпшень в області безпеки для більшості програмних продуктів. Багато розробників програмного забезпечення не засвоїли уроки з виявлених вразливостей і не застосовують належні стратегії для пом'якшення наслідків. Про це свідчить той факт, що CERT / CC1 продовжує знаходити ті ж типи вразливостей в останніх версіях продуктів, які були і в попередніх версіях. Взяті разом, ці фактори вказують, що слід очікувати значних економічних втрат від атак і збоїв в обслуговуванні навіть під час відгуку, меншому, ніж ми можемо реально сподіватися досягти. Агресивний, скоординовану відповідь як і раніше необхідний, але ми повинні удосконалені системи, зламати які буде істотно складніше.
У даному навчально-методичному посібнику описані основні помилки при програмуванні мовами високого рівня при розробленні веб-додатків, які можуть призводити до найбільш поширених, небезпечних і руйнівних вразливостей програмного забезпечення. Проведено як поглиблений аналіз інженерних програмних помилок, які призводять до таких уражень, так і наведено стратегії, що можуть бути ефективно застосовано для зменшення або усунення ризику використання цих вразливостей зловмисниками.
На лекційних, практичних та лабораторних заняттях використовуються: розповідь, пояснення, демонстрація, дискусія.
На лекційних заняттях викладання матеріалу здійснюється в усній формі з використанням презентацій із записом основних положень лекції у конспект.
На лабораторних заняттях студенти виконують та демонструють індивідуальні завдання по аналізу та розробці програмних продуктів. Для цього вони використовують необхідні програмні та апаратні інструментальні засоби: середовище розробки, декомпілятори, персональні комп’ютери (або ноутбуки).
Самостійна робота студента зводиться до опрацювання лекційного матеріалу, підготовці до лабораторних занять з використанням методичних рекомендацій.
За джерелами знань використовуються такі методи навчання: словесні – розповідь, пояснення, інструктаж; наочні – демонстрація, ілюстрація; лабораторна робота, вправи, контрольні роботи. За характером логіки пізнання використовуються такі методи: аналітичний, синтетичний, аналітико-синтетичний, індуктивний, дедуктивний. За рівнем самостійної розумової діяльності використовуються методи: проблемний, частково-пошуковий, дослідницький.
Поточний контроль реалізується у формі опитування під час проведення занять, захисту лабораторних робіт, проведення контрольних робіт.
Контроль складової робочої програми, яка освоюється під час самостійної роботи студента, проводиться:
- з лекційного матеріалу – шляхом перевірки контрольних робіт;
- з лабораторних занять – за допомогою перевірки виконаних завдань.
Семестровий контроль проводиться у формі екзамену у терміни, встановлені навчальним планом.
Семестровий контроль проводиться в усній та письмовій формах по екзаменаційних білетах, які включають екзаменаційні запитання та контрольні завдання (задачі).
Результати поточного контролю (поточна успішність) можуть враховуватись як допоміжна інформація для виставлення оцінки з даної дисципліни.
Відповідно до порядку визнання результатів навчання, здобутих у неформальній та/або інформальній освіті в НТУ "ХПІ", отримані надбання можуть бути частково зарахованими у вигляді балів за лабораторні заняття.
Студент вважається допущеним до семестрового екзамену з навчальної дисципліни за умови повного відпрацювання усіх лабораторних занять, передбачених навчальною програмою з дисципліни.
Семестровий контроль проводиться у формі екзамену у терміни, встановлені навчальним планом у усній або письмовій формі за екзаменаційними білетами, які включають екзаменаційні запитання та контрольні завдання (задачі). За умови дистанційного навчання екзамени проходять за допомогою функціоналу Microsoft Teams.
- Christian Collberg, Jasvir Nagra "Surreptitious Software: Obfuscation, Watermarking, and Tamperproofing for Software Protection: Obfuscation, Watermarking, and Tamperproofing for Software Protection". ISBN 0-321-54925-2.
- Robert C. Seacord "Secure Coding in C and C++". ISBN: 978-0321822130
- Pavel Kravchenko, Bohdan Skriabin, Oksana Dubinina "Blockchain And Decentralized Systems". 2018
- Greg Hoglund, Gary McGraw “Exploiting Software. How to Break Code”, Addison-Wesley Publishing Company, 2004
- Gary McGraw “Software Security. Building Security in”, Addison-Wesley Publishing Company, 2006
- Jonh Viega, Gary McGraw “Building secure software. How to Avoid Security Problems the Right Way”, Addison-Wesley Publishing Company, 2005
- Варфоломеев А.А. Основы информационной безопасности: Учеб. пособие. – М.: РУДН, 2008. – 412 с.
- https://www.owasp.org/index.php/Main_Page
- https://martinfowler.com/articles/microservices.html
- https://www.kb.cert.org/
- а також інформаційні ресурси, що наведені до кожної лабораторної роботи