В 2012/2013 учебном году была пересмотрена учебная программа специальности "компьютерная безопасность". В конце учебного кода программа была утверждена. Изменения коснулись III, IV, V курсов. В 2013/2014 учебном году по новой программе начнут учиться I, II, III курсы, старшие курсы будут доучиваться по старой программе. Во-первых, изменения были обусловлены принятием нового образовательного стандарта. Во-вторых, в новой программе были закреплены спецкурсы, появившиеся в последние несколько лет. И, в-третьих, курсы были переупорядочены для более точно соответствия их взаимосвязям. Из-за формальных требований, нам не удалось принять программу, в точности соответствующую нашим представлениям: какие-то курсы были сдвинуты, какие-то урезаны по часам. Но в итоге была сформирована более-менее гармоничная программа, охватывающая большинство вопросов компьютерной безопасности. В этой заметке описана структура и логика новой программы. Для удобства описания все курсы разбиты на тематические блоки.
Общеобразовательные дисциплины
| Учебные дисциплины | Семестры |
|---|---|
| Иностранный язык | 1-4 |
| Физика | 1-3 |
| Физическая культура | 1-6 |
| История Отечества | 1 |
| Русский язык и культура речи | 3 |
| Россиеведение | 2 |
| Информационная культура | 2 |
| Психология | 4 |
| Деловая этика | 3 |
| Безопасность жизнедеятельности | 2 |
| Философия | 4 |
| Экономика | 6 |
| Правоведение | 8 |
| Основы управленческой деятельности | 8 |
Математика
| Учебные дисциплины | Семестры |
|---|---|
| Математический анализ | 1-3 |
| Алгебра | 1-3 |
| Аналитическая геометрия | 1 |
| Теория функций комплексного переменного | 3 |
| Дифференциальные уравнения | 4 |
| Математическая логика и теория алгоритмов | 4 |
| Дискретная математика | 5, 6 |
| Математическая теория трансляторов | 8 |
| Недетерминированные алгоритмы | 8 |
| Теория вероятностей и математическая статистика | 4-6 |
| Теория информации | 6 |
| Алгоритмы кодирования и сжатия информации | 9 |
| Свёрточные коды/Фонтанные коды | 10 |
| Теоретико-числовые методы в криптографии | 5, 6 |
| Криптографические методы защиты информации | 7, 8 |
| Криптографические протоколы | 9 |
Математические дисциплины являются основой и для информатики и для компьютерной безопасности. И отбор конкретных областей математики обусловлен целью сформировать базу для дальнейшего изучения компьютерных дисциплин. На младших курсах изучаются базовые разделы математики: математический анализ, алгебра, аналитическая геометрия, теория функций комплексного переменного, дифференциальные уравнения. Затем идут специальные математические курсы. В курсах по математической логике и дискретной математике изучаются необходимые для программирования и формализации вычислений темы: булева алгебра, исчисление высказываний и предикатов, комбинаторика, дискретные структуры, теория графов, сложность алгоритмов, теория автоматов. Теория вероятностей, являющаяся основой теории информации, криптографии, анализа данных, изучается в течении 3 семестров: основы теории вероятностей, математическая статистика, теория случайных процессов. С III курса начинаются 5 семестров криптографии. В рамках курса "теоретико-числовые методы в криптографии" изучаются разделы теории чисел и алгебры, необходимые для изучения криптографии: конечные поля; кольца вычетов; системы сравнений; подходящие дроби; алгоритмы факторизации, дискретного логарифмирования, проверки чисел на простоту. В курсе "криптографические методы защиты информации" изучаются классические криптосистемы; современные алгоритмы блочного и поточного шифрования; асимметричные криптосистемы шифрования, электронной цифровой подписи, распределения ключей; криптографические хеш-функции; криптоанализ симметричных и асимметричных криптосистем. В курсе "криптографические протоколы" изучается применение криптографических примитивов и алгоритмов для создания защищённых протоколов.
Программирование
| Учебные дисциплины | Семестры |
|---|---|
| Информатика | 1 |
| Языки программирования | 2, 3 |
| Языки ассемблера | 4, 5 |
| Методы программирования | 5, 6 |
| Машинное обучение и искусственный интеллект | 7, 8 |
| Базы данных | 6 |
| Технологии программирования | 7 |
| Web-программирование | 7 |
| Язык программирования Java | 7 |
| Параллельное программирование | 8 |
Изучение программирования начинается в 1 семестре с информатики и с языков программирования во 2 и 3 семестрах. За это время должны быть изучены основы двух языков: С и С++. В первоначальном варианте программы предполагалось 3 семестра языков программирование, но в силу количественных ограничений пришлось сократить до 2. В 4 и 5 семестрах изучаются языки ассемблера. В первом семестре изучаются основы программирования микропроцессоров и язык ассемблера для 16-разрядных процессоров архитектуры x86. Второй семестр языков ассемблера был введен впервые. Причиной этому послужили спецкурсы, требующие знания архитектуры современных процессоров. До этого на изучение языков ассемблера 32-разрядных процессоров отводилось время таких курсов, как системное программирование, защита кода, уязвимости ПО. В добавленном семестре предполагается изучение 32- и 64-разрядных процессоров архитектуры x86 и ARM. Годовой курс машинного обучения был введен впервые вместо семестрового курса нейронных сетей. Соответственно был расширен набор рассматриваемых тем. Помимо программирования нейронных сетей будут изучаться линейные и нелинейные алгоритмы классификации и кластеризации, анализ данных, компьютерное зрение.
Компьютерные сети
| Учебные дисциплины | Семестры |
|---|---|
| Системы и сети передачи данных | 5 |
| Компьютерные сети | 6 |
| Сетевые технологии | 7, 8 |
| Беспроводные сетевые технологии | 9 |
В курсе "системы и сети передачи данных" изучаются физические основы передачи сигналов по сетям связи, а в курсе "компьютерные сети" - основные протоколы компьютерных сетей. Сетевые технологии изучаются на сетевом оборудовании Cisco под руководством сотрудников кафедры, являющихся сертифицированными преподавателями академии Cisco.
Операционные системы
| Учебные дисциплины | Семестры |
|---|---|
| Операционные системы | 4, 5 |
| Администрирование Windows серверов | 7 |
| Администрирование Linux и защита публичных служб | 8, 9 |
| Построение операционных систем | 10 |
Аппаратные средства
| Учебные дисциплины | Семестры |
|---|---|
| Аппаратные средства вычислительной техники | 4 |
| Электроника и схемотехника | 5, 6 |
Информационная безопасность
| Учебные дисциплины | Семестры |
|---|---|
| Основы информационной безопасности | 9 |
| Организационно-правовое обеспечение информационной безопасности | 10 |
| Техническая защита информации | 10 |
Компьютерная безопасность
| Учебные дисциплины | Семестры |
|---|---|
| Модели безопасности компьютерных систем | 3 |
| Защита в операционных системах | 8, 9 |
| Основы построения защищённых баз данных | 7 |
| Основы построения защищённых компьютерных сетей | 9 |
| Системное программирование | 6, 7 |
| Защита программ и данных | 7 |
| Анализ уязвимостей программного обеспечения | 8, 9 |
| Уязвимости web-приложений | 8 |
| Тестирование компьютерных систем на проникновение | 9 |
| Компьютерная вирусология | 9 |
| Статический анализ исходного кода | 10 |
| Исследование вредоносного ПО | 10 |
| Биометрические методы верификации | 10 |
| Методы и стандарты оценки защищённости компьютерных систем | 10 |
В новой программе курс "защита в операционных системах" был расширен с семестра до двух.
Увеличено количество курсов по защите кода. Изначально этой теме был посвящен только один семестровый курс "защита программ и данных". 5 лет назад появился курс "системное программирование", затем "уязвимости ПО". В новой программе эти курсы расширены с семестра до двух. А на V курсе введены курсы по исследованию кода вредоносного ПО. Второй семестр языков ассемблера был введен как раз для удовлетворения потребностей новых курсов. Курс "системное программирование" предназначен для изучения аспектов системного и низкоуровневого программирования, необходимых для понимания функционирования современного вредоносного ПО, в частности руткитов. По старой программе в течении одного семестра изучались следующие темы: программирование загрузчиков; программная архитектура и архитектура ядра Windows NT; программирование драйверов систем безопасности под эту платформу. По новой программе предполагается изучение дополнительных тем: архитектура Linux, *BSD систем и программирование драйверов под них; программирование BIOS; аппаратная виртуализация; форматы исполняемых файлов. В курсе "защита программ и данных" изучаются следующие темы: заражение исполняемых файлов и обнаружение заражения; reverse engineering; дизассемблирование и антидизассемблирование; отладка и антиотладка; упаковщики и протекторы; внедрение и модификация бинарного кода; создание шеллкодов. Курс "анализ уязвимостей программного обеспечения" предназначен для изучения уязвимостей бинарного кода и методов их эксплуатации. В рамках семестрового курса изучались только уязвимости 32-разрядного пользовательского кода под Linux: ошибки целочисленного переполнения; переполнение стека; ошибки форматной строки; защитные механизмы (stack canary, ASLR, DEP, PIE) и методы их обхода (ret2reg, reg2lib, ret2plt, ROP, утечка данных). В годовом курсе предполагается изучение дополнительных тем: уязвимости программного кода под Windows и *BSD; переполнение кучи; уязвимости в коде режима ядра, поиск уязвимостей.
Курсы "уязвимости web-приложений" и "тестирование компьютерных систем на проникновение" впервые были проведены в уходящем учебном году на V курсе. В новой программе первый из них был перенесен с 10 семестра на 8.
В курсе "биометрические методы верификации" изучаются методы и алгоритмы биометрической идентификации и верификации человека по голосу, клавиатурному и рукописному почерку, отпечаткам пальцев.
Общая таблица
В таблице перечислены все учебные курсы с указанием количества академических часов (40 мин.) в неделю по семестрам.
| Учебные дисциплины | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|---|---|---|---|---|---|---|---|---|---|---|
| Общеобразовательные дисциплины | ||||||||||
| Иностранный язык | 4 | 3 | 2 | 2 | ||||||
| Физика | 6 | 6 | 6 | |||||||
| Физическая культура | 4 | 4 | 4 | 4 | 3 | 3 | ||||
| История Отечества | 2 | |||||||||
| Русский язык и культура речи | 2 | |||||||||
| Россиеведение | 2 | |||||||||
| Информационная культура | 2 | |||||||||
| Психология | 2 | |||||||||
| Деловая этика | 3 | |||||||||
| Безопасность жизнедеятельности | 2 | |||||||||
| Философия | 2 | |||||||||
| Экономика | 2 | |||||||||
| Правоведение | 2 | |||||||||
| Основы управленческой деятельности | 2 | |||||||||
| Математика | ||||||||||
| Математический анализ | 4 | 5 | 4 | |||||||
| Алгебра | 5 | 5 | 4 | |||||||
| Аналитическая геометрия | 4 | |||||||||
| Теория функций комплексного переменного | 3 | |||||||||
| Дифференциальные уравнения | 4 | |||||||||
| Математическая логика и теория алгоритмов | 4 | |||||||||
| Дискретная математика | 4 | 3 | ||||||||
| Математическая теория трансляторов | 2 | |||||||||
| Недетерминированные алгоритмы | 2 | |||||||||
| Теория вероятностей и математическая статистика | 4 | 4 | 3 | |||||||
| Теория информации | 4 | |||||||||
| Алгоритмы кодирования и сжатия информации | 3 | |||||||||
| Свёрточные коды/Фонтанные коды | 3 | |||||||||
| Теоретико-числовые методы в криптографии | 4 | 3 | ||||||||
| Криптографические методы защиты информации | 3 | 3 | ||||||||
| Криптографические протоколы | 4 | |||||||||
| Программирование | ||||||||||
| Информатика | 4 | |||||||||
| Языки программирования | 4 | 4 | ||||||||
| Языки ассемблера | 4 | 4 | ||||||||
| Методы программирования | 3 | 3 | ||||||||
| Машинное обучение и искусственный интеллект | 4 | 4 | ||||||||
| Базы данных | 4 | |||||||||
| Технологии программирования | 2 | |||||||||
| Web-программирование | 4 | |||||||||
| Язык программирования Java | 3 | |||||||||
| Параллельное программирование | 4 | |||||||||
| Информационные технологии | ||||||||||
| Системы и сети передачи данных | 4 | |||||||||
| Компьютерные сети | 4 | |||||||||
| Сетевые технологии | 3 | 3 | ||||||||
| Беспроводные сетевые технологии | 3 | |||||||||
| Операционные системы | 4 | 4 | ||||||||
| Администрирование Windows серверов | 3 | |||||||||
| Администрирование Linux и защита публичных служб | 4 | 4 | ||||||||
| Построение операционных систем | 4 | |||||||||
| Аппаратные средства вычислительной техники | 4 | |||||||||
| Электроника и схемотехника | 4 | 2 | ||||||||
| Информационная безопасность | ||||||||||
| Основы информационной безопасности | 3 | |||||||||
| Организационно-правовое обеспечение информационной безопасности | 3 | |||||||||
| Техническая защита информации | 4 | |||||||||
| Компьютерная безопасность | ||||||||||
| Модели безопасности компьютерных систем | 3 | |||||||||
| Защита в операционных системах | 3 | 3 | ||||||||
| Основы построения защищённых баз данных | 4 | |||||||||
| Основы построения защищённых компьютерных сетей | 4 | |||||||||
| Системное программирование | 4 | 4 | ||||||||
| Защита программ и данных | 4 | |||||||||
| Анализ уязвимостей программного обеспечения | 4 | 4 | ||||||||
| Уязвимости web-приложений | 4 | |||||||||
| Тестирование компьютерных систем на проникновение | 4 | |||||||||
| Компьютерная вирусология | 4 | |||||||||
| Статический анализ исходного кода | 4 | |||||||||
| Исследование вредоносного ПО | 4 | |||||||||
| Биометрические методы верификации | 4 | |||||||||
| Методы и стандарты оценки защищённости компьютерных систем | 2 |