- •Архитектуры и модели программ и знаний
- •Литература по курсу (1/4)
- •Литература по курсу (2/4)
- •Литература по курсу (3/4)
- •Литература по курсу (4/4)
- •Цели и задачи курса
- •Основоположники технологии и методологии программирования в СССР и России
- •Эволюция программного обеспечения и подходов к разработке программ
- •Trustworthy Computing
- •Жизненный цикл разработки безопасных программных продуктов
- •Основные идеи и принципы TWC и
- •Общая схема SDLC и его связь с “водопадной” моделью
- •STRIDE – классификация угроз
- •Оценка атак на программное обеспечение:
- •Вопросы и домашнее задание к лекции 1
Основные идеи и принципы TWC и
SDLC
В течение всего цикла разработки ПО, начиная с самых ранних этапов (требования, спецификации, проектирование), необходимо постоянно предусматривать меры надежности и безопасности ПО, чтобы впоследствии не пришлось их встраивать в систему в “авральном порядке”, что значительно увеличит затратыНеобходимо заранее анализировать и моделировать возможные угрозы и атаки на ПО и разрабатывать меры их отражения
Необходимы инструменты количественной оценки рисков, с точки зрения надежности и безопасности
Необходимы специальные виды тестирования ПО – security testing, fuzzy testing (fuzzing)
Необходимы эксперты по безопасности ПО (security buddies), участвующие в разработке в течение всего цикла
(C) Сафонов В.О. 2012
Общая схема SDLC и его связь с “водопадной” моделью
(C) Сафонов В.О. 2012
SD3+C
Безопасность как результат проектирования
(Secure by Design)
Защита программы и ее данных
Безопасность по умолчанию
(Secure by Default)
Разработчики должны предполагать, что возможны уязвимые места в системе безопасности.
Принципы: наименьшие привилегии и предотвращение
отказов системы
Безопасность при развертывании (Secure in Deployment)
Документация и инструменты для пользователей и администраторов.
Простота инсталляции обновлений безопасности
Коммуникации
(Communications)
Открытая и оперативная коммуникация с системными администраторами и пользователями с целью
помощи им в настройке(C) Сафонов В.О. и2012улучшении безопасности
STRIDE – классификация угроз
Spoofing – букв.: пародирование, розыгрыш
Например, воспроизведение транзакции, выполняющей аутентификацию пользователя.
Tampering – Несанкционированное изменение
Изменение данных с целью атаки Например, модификация аутентификационных файлов с целью добавления
нового пользователя
Repudiation – букв.: категорическое несогласие, отрицание, отказ
Пример из повседневной жизни: отрицание того, что Вы купили товары, которые Вы на самом деле купили.
Драйвер может быть подвержен repudiation-угрозе, если он не выполняет журналирование (logging) действий, которые могут привести к нарушению безопасности.
Например, драйвер видеоустройства, который не фиксирует запросы на изменение фокуса и уменьшение размеров изображения (который могут привести к его искажению
Information disclosure – Несанкционированный доступ к конфиденциальной информации
Например: Получение списка номеров кредитных карт клиентов банка
Denial of service – Отказ в обслуживании
Например: сознательное достижение эффекта излишней загрузки процессора, используя недостатки хеш-алгоритма
Elevation of privilege – Увеличение привилегий
Например: Запуск привилегированной программы для выполнения Ваших команд
(C) Сафонов В.О. 2012
Оценка атак на программное обеспечение:
Схема DREAD
Damage - Ущерб
Reproducibility - Воспроизводимость
Как часто происходит и можен ли быть
воспроизведена (смоделирована)
Exploitability – здесь: Квалификация
(уровень)
Опыт и квалификация (хакера), необходимые
для атаки
Affected users – Против каких
пользователей направлена
Discoverability – Может ли быть
обнаружена
(C) Сафонов В.О. 2012
Вопросы и домашнее задание к лекции 1
1)Проанализируйте известные парадигмы разработки программ
сточки зрения поддержки надежности и безопасности:
Объектно-ориентированное программированиеАспектно-ориентированное программированиеГенерирующее программирование (Generative Programming)Метапрограммирование (Meta-programming)
Адаптивное программирование
Контрактное проектирование(Design by Contract)Функциональное программированиеЛогическое программирование
2) Проанализируйте меры обеспечения надежности и безопасности, реализованные в широко используемом ПО фирмы Microsoft: ОС Windows (XP, 2003, Vista, 2008, 7); Internet Explorer; Microsoft Office и др. Сформулируйте, в чем смысл этих мер. Проанализируйте возможные последствия отключения этих проверок
(C) Сафонов В.О. 2012
