МЕТОДЫ РАЗРАБОТКИ ЗАЩИЩЕННОГО ПРОГРАММНОГО
ОБЕСПЕЧЕНИЯ Панфилов И.А.
Панфилов Игорь Алексеевич - магистрант, кафедра динамики процессов и управления, Институт компьютерных технологий и защиты информации Казанский национальный исследовательский технический университет им. А.Н. Туполева - КАИ,
г. Казань
Аннотация: в статье рассматриваются существующие тенденции защиты программного обеспечения. Рассматривается одно из направлений повышения уровня безопасности программного обеспечения: внедрение в рамках жизненного цикла программного обеспечения различных процедур, касающихся снижения числа ошибок и уязвимостей. Рассматриваются применяемые при разработке защищенного программного обеспечения методы на основе ГОСТ Р 58412-2019.
Ключевые слова: информационная безопасность, программное обеспечение, безопасность программного продукта.
METHODS FOR DEVELOPING SECURE SOFTWARE
Panfilov I-А.
Panfilov Igor Alekseevich - Undergraduate, DEPARTMENT OF PROCESS DYNAMICS AND CONTROL, INSTITUTE OF COMPUTER TECHNOLOGIES AND INFORMATION PROTECTION KAZAN NATIONAL RESEARCH TECHNICAL UNIVERSITY NAMED AFTER A.N. TUPOLEV - KAI,
KAZAN
Abstract: the article discusses the current trends in software protection. One of the ways to improve the level of software security is considered: the introduction of various procedures within the software life cycle to reduce the number of errors and vulnerabilities. The methods used in the development of secure software based on GOST R 58412-2019 are considered.
Keywords: information security, software, software product security.
УДК 62-7
Существующие тенденции в области информационной безопасности характеризуются постоянным устойчивым ростом количества компьютерных атак, приводящих к снижению уровня защищенности ресурсов автоматизированных систем. В большинстве случаев основной причиной успешности компьютерной атаки является наличие уязвимостей программного обеспечения (далее - ПО), используемого в составе таких систем [3]. Одним из направлений повышения уровня безопасности ПО является внедрение в рамках жизненного цикла ПО различных процедур, касающихся снижения числа ошибок и уязвимостей [1, 2, 4].
До появления ГОСТов в области создания безопасного программного обеспечения, направленных на достижение целей, связанных с предотвращением появления и/или устранением уязвимостей программ, использовался избыточный перечень документов. К такому перечню относятся: корпоративные, отраслевые, международные стандарты содержащих указания для разработчиков ПО, «лучшие практики», которые рекомендуется внедрять в жизненном цикле ПО с целью создания ПО с минимально возможным количеством уязвимостей и формирования среды обеспечения оперативного устранения выявленных пользователем ПО проблем (уязвимостей ПО). В документах прописывается перечень мер разработки безопасного ПО, он является стандартной и содержит меры, связанные с риск-анализом архитектуры ПО (моделирование угроз безопасности информации), проведением статического анализа исходного кода программы, тестирования на проникновение.
Вместе с тем можно отметить, что существующие документы не содержат четко определенного аппарата, который мог бы использоваться для независимой оценки реализованных разработчиком мер требованиям разработки безопасного ПО. Сегодня этот пробел в документах по разработке защищенного ПО решает документ ГОСТ Р 58412-2019.
В настоящее время разрабатывается большое количество программного обеспечения. Но производители не всегда считают первостепенной задачей безопасность, что в будущем может очень плохо сказаться, как и перед разработчиками, так и перед пользователями этого ПО. Проблемой защищенного ПО является незаинтересованность разработчиков тратить слишком большое количество средств на безопасность. При решении такой проблемы необходимо провести целый комплекс мер по определению уязвимых мест и их немедленного устранения. В наше время существует ГОСТ Р 58412-
2019, который с рядом других документов помогает разработчикам учесть все уязвимости в их ПО и устранить их.
Определимся в применяемых при разработке защищенного ПО методах. Целью таких методов является повышение качества и безопасности конечного программного продукта. Можно выделить следующие группы методов относительно этапов и процессов разработки ПО, в которых они применяются: методы, применяемые в процессе управления разработкой ПО; методы, применяемые при анализе и формировании требований и составлении спецификаций, а также в процессе проектирования; методы, применяемые в процессе реализации; методы, применяемые в процессе тестирования, вводе в эксплуатацию и поддержке разработанного ПО. Методы разработки защищенного ПО можно отличить по нескольким критериям: границы применения, цели использования в процессе разработки ПО. Решение об использовании при создании защищенного ПО какого-либо метода безопасной разработки можно принимать на основе указанных критериев. Поэтому выбор метода должен осуществляться с точки зрения его эффективности и границ применения. К числу методов, применяемых в процессе управления разработкой защищенного ПО можно отнести: метод «команды безопасности», проведение обзорных анализов безопасности, метод «стерильной комнаты», модель улучшения процессов СММ1, метод структурной корректности.
Метод «команды безопасности» заключается в выделении в структуре организации группы либо отдела, называемых командой безопасности, которая отвечает за развитие и совершенствование процессов разработки с точки зрения информационной безопасности, выступает в роли эксперта по вопросам информационной безопасности для всей организации в целом и для каждого из проектов в частности. Рассмотрим подробнее.
Важнейшим пунктом в начале жизненного пути программы является разработка Технического Задания (ТЗ), в котором описываются цели, задачи и способы защиты программы. Это основополагающий документ, на который в будущем будут опираться разработчики этого продукта.
Стандартные требования к разработке включают в себя: бизнес-требования, высокоуровневые цели организации или заказчика ПО, границы проекта, устав проекта, требования пользователей, а также решения определенных проблем, возникающие у пользователей. Также определяются функциональные требования для разработчиков ПО, другими словами, конкретное поведение системы на взаимодействие пользователей с системой. Определение системных требований охватывает дополнительное ПО и оборудование, необходимое для работы всей системы.
Анализ и расчет рисков следует проводить в зависимости от объема разрабатываемого ПО.
Общие требования к безопасности включают в себя обеспечение: идентификации и аутентификации, защиты от несанкционированного доступа к информации, регистрации событий и ошибок, контроля точности, полноты и правильности данных, поступающих в систему, обработка программных ошибок и исключительных ситуаций.
При разработке технического задания обязательно учитываются следующие характеристики 1Т-систем и работы бизнес-процессов Заказчика:
критичность защищаемых информационных систем для бизнес-процессов Заказчика; требования к доступности информационных систем; количество и квалификация сотрудников Заказчика, осуществляющих эксплуатацию систем Заказчика.
Техническое задание на систему защиты содержит все данные, необходимые для оценки объемов и планирования работ, связанных с последующими стадиями создания системы, и может использоваться Заказчиком в составе конкурсной документации.
Техническое задание на систему безопасности, в общем случае, содержит следующие разделы: общие сведения; назначение и цели создания (развития) системы; характеристика объектов автоматизации; требования к системе; состав и содержание работ по созданию системы; порядок контроля и приемки системы; требования к составу и содержанию работ по подготовке объекта автоматизации к вводу системы в действие; требования к документированию; источники разработки. Результатом должно стать формирование основного регламента, на который будет опираться исполнитель в своей работе — технического задания на разработку программного обеспечения.
Следующим не менее важным пунктом является проектирование. Проектирование - это моделирование теоретической основы будущего продукта. Самые современные средства программирования позволяют частично объединить этапы проектирования и кодирования, то есть технической реализации проекта, будучи основанными на объектно-ориентированном подходе, но полноценное планирование требует более тщательного и скрупулезного моделирования. Одной из составных частей этапа проектирования, например, является выбор инструментальных средств и операционной системы, которых сегодня на рынке присутствует очень большое количество.
В рамках данного этапа стороны должны осуществить: оценку результатов проведенного первоначально анализа и выявленных ограничений; поиск критических участков проекта; формирование окончательной архитектуры создаваемой системы; анализ необходимости использования программных
модулей или готовых решений сторонних разработчиков; проектирование основных элементов продукта
- модели базы данных, процессов и кода; выбор среды программирования и инструментов разработки, утверждение интерфейса программы, включая элементы графического отображения данных; определение основных требований к безопасности разрабатываемого ПО.
Следующим шагом становится непосредственная работа с кодом, опираясь на выбранный в процессе подготовки язык программирования. Если речь идет о написании кода для выполнения узкоспециализированных задач в рамках конкретного предприятия, то от грамотного подхода к этапу кодирования зависит эффективность работы компании, заказавшей разработку. Кодирование может происходить параллельно со следующим этапом разработки — тестированием программного обеспечения, что помогает вносить изменения непосредственно по ходу написания кода. Уровень и эффективность взаимодействия всех элементов, задействованных для выполнения сформулированных задач компанией-разработчиком, на текущем этапе является самым важным — от слаженности действий программистов, тестировщиков и проектировщиков зависит качество реализации проекта [5].
После достижения, задуманного программистами в написанном коде следуют не менее важные этапы разработки программного обеспечения, зачастую объединяемые в одну фазу — тестирование продукта и последующая отладка, позволяющая ликвидировать огрехи программирования и добиться конечной цели
— полнофункциональной работы разработанной программы. Процесс тестирования позволяет смоделировать ситуации, при которых программный продукт перестает функционировать. Отдел отладки затем локализует и исправляет обнаруженные ошибки кода, отлаживая его до практически идеального состояния. Эти два этапа занимают затрачивают достаточно много времени, так как от их качественного исполнения зависит судьба созданного силами программистов программного обеспечения. Нередко функции тестировщика и отладчика исполняет один отдел, однако самым оптимальным будет распределить эти обязанности между разными исполнителями, что позволит увеличить эффективность поиска имеющихся в программном коде ошибок.
Процедура внедрения программного обеспечения в эксплуатацию является завершающей стадией разработки и нередко происходит совместно с отладкой системы. Как правило, ввод в эксплуатацию ПО осуществляется в три этапа: первоначальная загрузка данных; постепенное накопление информации; вывод созданного ПО на проектную мощность.
Ключевой целью поэтапного внедрения разработанной программы становится постепенное выявление необнаруженных ранее ошибок и недочетов кода. В рамках этого этапа разработки программного обеспечения и заказчик, и исполнитель могут столкнуться с рядом достаточно узкого спектра ошибок, связанных с частичной рассогласованностью данных при их загрузке в базы данных, а также срывов выполнения программных процедур в связи с применением многопользовательского доступа. Именно на этой стадии выкристаллизовывается окончательная картина взаимодействия пользователя с программой, а также определяется степень лояльности последнего к разработанному интерфейсу. Если выход системы на проектную мощность после ряда проведенных доработок и улучшений произошел без особых осложнений, значит, предварительная работа над проектом и реализация предыдущих стадий разработки осуществлялась правильно.
Создание даже небольшого и технически простого ПО зависит от четкого выполнения каждой фазы, то есть деятельности всех отделов, задействованных в процессе разработки. Четкий план выполнения необходимых мероприятий с указанием конечных целей становится неотъемлемой частью работы разработчиков, планирующих оставаться широко востребованными на рынке труда специалистами.
Список литературы /References
1. Жидков И.В., Шубенин А.А., Хабибуллин И.В., Поздняков С.Ю. Испытания систем защиты информации автоматизированных систем управления // Решетневские чтения, 2013. Т. 2. № 17. С. 281-282.
2. Казарин О.В., Кондаков С.Е., Троицкий И.И. Подходы к количественной оценке защищенности ресурсов автоматизированных систем // Вопросы кибербезопасности, 2015. № 2 (10). С. 31-35.
3. Михайлов Д.М., Жуков И.Ю., Шеремет И.А. Защита автоматизированных систем от информационно -технологических воздействий. М.: НИЯУ МИФИ, 2014. 184 с.
4. Рибер Г., Малмквист К., Щербаков А. Многоуровневый подход к оценке безопасности программных средств // Вопросы кибербезопасности, 2014. № 1 (2). С. 36-39.
5. Этапы разработки программного обеспечения. [Электронный ресурс]. Режим доступа: https://ru.intechcore.com/stages-software-development/ (дата обращения: 18.03.2022).