Введение

В области разработки программного обеспечения, обеспечение безопасности программных систем направлено на оптимизацию безопасности системы на этапах проектирования, разработки, эксплуатации и обслуживания программных систем, а также их интеграции с аппаратно-техническими системами, критически важными для безопасности, в рабочей среде.

Обзор

Безопасность программных систем является частью системной безопасности и системной инженерии и является синонимом аспектов программной инженерии функциональной безопасности. В рамках общей программы обеспечения безопасности и разработки программного обеспечения недопустимо, чтобы программное обеспечение функционировало изолированно от общей работы. Как простые, так и высокоинтегрированные системы демонстрируют значительный рост использования компьютеров и программного обеспечения для мониторинга и/или управления подсистемами или функциями, критически важными для безопасности. Ошибка в спецификации программного обеспечения, дефект проектирования или отсутствие общих требований к безопасности могут привести к сбою системы или ошибочному решению, принимаемому человеком. Для достижения приемлемого уровня безопасности программного обеспечения, используемого в критически важных приложениях, инженерная безопасность программных систем должна быть приоритетной задачей на ранних этапах определения требований и концептуального проектирования системы. Программное обеспечение, критически важное для безопасности, должно затем постоянно подвергаться управленческому контролю и инженерному анализу на протяжении всего жизненного цикла разработки и эксплуатации системы. Программное обеспечение с функциями, критически важными для безопасности, должно быть тщательно верифицировано с помощью объективного анализа. Функциональный анализ опасностей (ФАО) часто проводится на ранней стадии параллельно или как часть функционального анализа системной инженерии для определения функций, критически важных для безопасности (ФКБ), систем для дальнейшего анализа и верификации. Безопасность программных систем напрямую связана с наиболее важными аспектами проектирования и атрибутами безопасности в программном обеспечении и функциональности системы, в то время как атрибуты качества программного обеспечения принципиально отличаются и требуют стандартного контроля и строгости разработки. Уровни обеспечения разработки (DAL) и соответствующий уровень строгости (LOR) представляют собой градированный подход к обеспечению качества программного обеспечения и гарантии проектирования программного обеспечения как предварительного условия для применения подходящего процесса разработки программного обеспечения для обеспечения уверенности. Концепции и стандарты LOR, такие как DO 178C, НЕ являются заменой безопасности программного обеспечения. Безопасность программного обеспечения в соответствии с IEEE STD 1228 и MIL STD 882E направлена на обеспечение выполнения и верификацию четких требований безопасности с использованием функциональных подходов с точки зрения анализа требований безопасности и тестирования. Анализ опасностей для безопасности программного обеспечения, необходимый для более сложных систем, где программное обеспечение управляет критическими функциями, обычно проводится в следующих последовательных категориях и поэтапно в рамках процесса обеспечения безопасности или системной безопасности: анализ требований к безопасности программного обеспечения; анализ проектирования безопасности программного обеспечения (на верхнем, детальном и уровне кода); анализ тестирования безопасности программного обеспечения и анализ изменений безопасности программного обеспечения. После завершения анализа "функциональной" безопасности программного обеспечения команда разработчиков программного обеспечения будет знать, где следует уделять особое внимание безопасности и на какие функциональные потоки, пути, области и границы следует сосредоточиться при проектировании атрибутов безопасности программного обеспечения для обеспечения правильной функциональности и обнаружения неисправностей, сбоев, ошибок, а также для реализации множества стратегий смягчения последствий для контроля опасностей. Безопасность программного обеспечения и различные технологии защиты программного обеспечения аналогичны атрибутам безопасности программного обеспечения в проектировании для смягчения различных типов угроз, уязвимостей и рисков. При проектировании стремятся к детерминированному программному обеспечению путем верификации корректного и предсказуемого поведения на системном уровне.