Разработка безопасного ПО является одной из самых сложных задач в программной инженерии и становится все более важной. Новые технологии, такие как облачные вычисления, приводят к тому, что высокораспределенные взаимосвязанные системы взаимодействуют через Интернет, что добавляет дополнительные проблемы к так называемой тройственности проблем: соединенности, сложности и расширяемости. Безопасность по замыслу - это новая парадигма разработки безопасного ПО. Его можно рассматривать как набор лучших практик, встроенных в жизненный цикл разработки программного обеспечения (SDLC). Это безопасный жизненный цикл разработки программного обеспечения (SSDLC), который включает в себя вопросы безопасности на всех этапах процесса разработки. Защита данных по умолчанию является еще одной смежной концепцией, которая должна быть реализована на практике.
Многие проблемы, часто возникающие на этапе разработки, можно смягчить на архитектурном уровне, если аспекты безопасности уже учтены на этапе проектирования. Особенно важно, когда используется криптография. Криптография может помочь на многих уровнях обеспечить эффективную и действенную защиту данных и информационных систем.
Эта технология должна быть тщательно продумана с нуля, чтобы полностью раскрыть свой потенциал. При неправильном применении криптографии она может не только утратить свои защитные свойства, но и внести новые уязвимости. Криптография должна систематически рассматриваться на протяжении всего процесса разработки ПО - и особенно на этапе проектирования.
В настоящее время широко признается важность предотвращения дефектов, связанных с безопасностью ПО. Передовая практика обеспечения безопасности ПО включает в себя анализ безопасности на ранних этапах разработки и учет вопросов безопасности на всех период существования.
Компания Microsoft приложила усилия и разработала программу The Security Development Lifecycle (SDL). SDL является сегодня одним из отраслевых стандартов, так как она открыта и бесплатна для поддержки некоторых этапов процесса.
Кроме того, сообщество участников Открытого проекта по безопасности веб-приложений (OWASP) разработало модель зрелости программного обеспечения (SAMM), которая представляет собой более легкий аналог подхода Microsoft. SAMM помогает организациям оценить, сформулировать и реализовать стратегию обеспечения безопасности ПО, которая может быть интегрирована в их существующий SDLC.
Цель заключается в том, чтобы компьютерные приложения обеспечивали желаемый или необходимый уровень безопасности для поддержки системы управления информационной безопасностью организации, адекватно реагируя на многие угрозы безопасности IKT.
Путь развития криптографической инженерии
Существуют комплексные подходы к разработке защищенного ПО, но они не охватывают вопросы интеграции криптографической инженерии в защищенный SDLC. Криптографические решения признаны важными и универсальными техническими решениями для защиты информационных ресурсов.
Под криптографической инженерией подразумевают выбор, адаптацию, внедрение и развертывание криптографических примитивов в продуктивных системах.
Это выходит за рамки включения известных существующих методов, таких как TLS на линии связи между двумя внутренними серверами. В поддержку этой логики можно привести недавние результаты, которые ясно указывают на трудности в разработке криптографических приложений (при анализе подходов к разработке ПО для хранения паролей). Самым важным результатом стало то, что разработчики сначала думают о функциональности, прежде чем думать о безопасности.
Разработчикам следует напомнить об этом до начала проекта. Ни одно из разработанных решений не соответствовало современным академическим стандартам - в основном потому, что они не были интегрированы с широко используемыми в разработке структурами. Также это относится и для других примитивов и протоколов. Даже если процесс проектирования не предполагает перепроектирования криптографических алгоритмов, как в случае использования SSL или TLS, которые основаны на существующих криптографических примитивах и стандартизированных описаниях протоколов.
Принципы криптографической инженерии
При разработке и практическом применении CryptSDLC исследователи выявили несколько ингибиторов и промоторов успешной интеграции криптографической защиты в облачные сервиса. Они получили три принципа, которые должны быть поддержаны в жизненном цикле криптографического ПО.
Криптографическая инженерия должна быть тесно связана с современной гибкой разработкой.
Исторически криптография работала надежным способом для решения узконаправленных, понятных проблем и в статических сценариях. Наиболее заметно он использовался для создания защищенных каналов по ненадежным сетям и для защиты данных в покое. Все эти задачи имеют четко определенные требования безопасности, которые не должны меняться с течением времени или для каждого приложения. То же самое можно сказать и о базовых моделях доверия. Такие стандартные конструкции могут терпеть неудачу, когда они выполняются на разовой основе.
Примером может служить неправильное сочетание режимов шифрования (ENC) и аутентификационных кодов сообщений (MAC), приводящее к атакам оракулов, что позволило взломать безопасную схему шифрования внутри SSL. Таким образом, криптографическая инженерия должна быть тесно связана с современной гибкой и динамичной разработкой.
Криптографическая инженерия начинается с глубокого понимания криптографических примитивов.
С начала нового тысячелетия в рамках криптографических исследований был разработан большой массив примитивов и протоколов, обеспечивающих потенциал для расширения функциональности и гибкости облачных приложений на протяжении всего жизненного цикла данных. Но инжиниринг этих передовых криптографических функций в программное обеспечение является очень сложной задачей и требует глубокой криптографической экспертизы. И хотя современные жизненные циклы разработки защищенного ПО рекомендуют использование криптографии, на практике существует лишь небольшое количество реальных рекомендаций о том, как безопасная адаптация и безопасная интеграция могут быть достигнуты на практике.
Криптографическая инженерия требует междисциплинарного опыта и коммуникации.
Инжиниринг расширенных криптографических функций в программные системы требует специальных знаний в различных областях. На самом низком уровне необходимы криптографические знания и опыт для реального безопасного внедрения криптографии. Часто эти навыки встречаются у разных людей, и требуется междисциплинарное сотрудничество между криптографами и разработчиками криптографических средств.
Требования защиты обычно исходят от разработчиков сервисов и приложений и должны доводиться до сведения криптографов и разработчиков криптографических средств. С другой стороны, возможности и потенциал криптографических алгоритмов должны быть доведены до сведения разработчиков услуг и приложений более высокого уровня. Эксперты по безопасности, наблюдающие за безопасной интеграцией, должны быть активными на всех уровнях процесса развития.