Skip to content
IRC-CodingIRC-Coding
Качество ПОБезопасностьSecurityCIAOWASP

Качество ПО и безопасность: безопасность как признак качества

Интеграция безопасности в качество ПО. Конфиденциальность, целостность, доступность и практики защищённой разработки.

S

schutzgeist

4 min read
Качество ПО и безопасность: безопасность как признак качества

Качество и безопасность ПО

Безопасность является ключевой характеристикой качества согласно ISO 25010. Она охватывает конфиденциальность, целостность, доступность и такие аспекты, как подлинность.

Коротко о главном

  • Безопасность это характеристика качества.
  • CIA-триада: конфиденциальность, целостность, доступность.
  • Безопасность нужно закладывать в дизайн с самого начала.
  • Security Testing это часть работы, но одного его недостаточно.

CIA-триада

CIA-триада составляет основу информационной безопасности. Она описывает три центральных цели защиты, которые должно обеспечивать любое защищённое ПО.

Конфиденциальность

Конфиденциальность гарантирует, что чувствительная информация доступна только авторизованным лицам. Для этого используют шифрование, контроль доступа и аутентификацию.

Целостность

Целостность означает, что данные не должны изменяться без уведомления. Для защиты применяют хеширование, цифровые подписи и системы контроля версий.

Доступность

Доступность гарантирует, что системы и данные доступны при необходимости. DDoS-атаки и сбои могут её нарушить. Защищают её через избыточность и мониторинг.

Прочие аспекты безопасности

  • Подлинность: надёжная проверка личности пользователей и систем.
  • Подотчётность: возможность отследить выполненные действия.
  • Неотрицаемость: доказательство того, что действие имело место.
  • Защита данных: охрана персональных данных.

Безопасные практики

Security by Design

Безопасность закладывается в архитектуру и дизайн с самого начала. Добавленная позже безопасность обходится дороже и менее эффективна.

Принцип наименьших привилегий

Каждый пользователь и процесс получают только необходимые права. Это ограничивает урон от успешной атаки.

Валидация входных данных

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

Защищённая аутентификация

Строгие требования к паролям, хеширование с солью, Rate Limiting, MFA и защищённые токены сессий укрепляют процесс входа.

Логирование и мониторинг

События, связанные с безопасностью, записываются и мониторятся. Это позволяет рано выявить атаки и отследить произошедшее.

Регулярные обновления

Уязвимости в фреймворках, библиотеках и операционных системах закрываются через обновления и патчи.

Практический пример

Защищённый вход в систему служит классическим примером применения безопасности как характеристики качества. Этот пример выбран потому, что вход в систему часто становится объектом атак и демонстрирует множество целей CIA-триады одновременно. Список ниже показывает, как практики безопасности работают вместе.

Защищённый вход в систему:
- Хеширование паролей при сохранении
- Rate Limiting против перебора
- Обязательный HTTPS
- Многофакторная аутентификация
- Защищённое управление сессиями

Зачем нужны эти меры?

  • Хеширование паролей при сохранении: защищает конфиденциальность учётных данных даже если база данных скомпрометирована.
  • Rate Limiting: предотвращает автоматизированные атаки и повышает доступность системы.
  • Обязательный HTTPS: защищает данные при передаче и обеспечивает целостность.
  • Многофакторная аутентификация: повышает подлинность даже если пароль известен.
  • Защищённое управление сессиями: предотвращает перехват сессии и обеспечивает подотчётность.

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

Плюсы и минусы

ПлюсыМинусы
Защита данных и пользователейДополнительные затраты на разработку
Доверие и репутацияПовышенная сложность архитектуры
Соответствие требованиям нормативных документовБаланс с удобством использования
Ранее выявление атакНеобходимо постоянное обслуживание и обновления
Конкурентное преимущество через надёжностьТребуется специализированное знание
Снижение затрат через раннюю профилактику ошибокЛожные срабатывания и затраты на проверку инструментов

Ключевые пункты для подготовки

  • ISO 25010: безопасность является отдельной характеристикой с подхарактеристиками: конфиденциальность, целостность, доступность и подлинность.
  • CIA-триада: конфиденциальность, целостность, доступность это три столпа информационной безопасности.
  • Security by Design: безопасность должна учитываться уже на этапе проектирования.
  • Принцип наименьших привилегий: выдавать только необходимые права.
  • Валидация входных данных: проверять все входные данные на сервере, чтобы предотвратить инъекции и другие атаки.
  • Защищённая аутентификация: хеширование паролей, MFA, Rate Limiting и защищённые сессии.
  • Логирование и мониторинг: записывать и контролировать события, связанные с безопасностью.
  • Регулярные обновления: держать фреймворки, библиотеки и системы в актуальном состоянии.
  • Защита данных: охрана персональных данных согласно GDPR.
  • Threat Modeling: системный анализ угроз на этапе проектирования.
  • Defense in Depth: несколько слоёв защиты вместо одной меры.
  • Безопасность vs Security Testing: безопасность это характеристика качества, Security Testing это метод проверки.

Основные источники

  1. https://owasp.org/www-project-top-ten/
  2. https://iso25000.com
  3. https://en.wikipedia.org/wiki/Information_security

Часто задаваемые вопросы

Что такое CIA-триада?

CIA-триада описывает три цели защиты: конфиденциальность, целостность и доступность. Это основная модель информационной безопасности.

Является ли безопасность характеристикой качества согласно ISO 25010?

Да, согласно ISO 25010 безопасность это отдельная характеристика с подхарактеристиками: конфиденциальность, целостность, доступность и подлинность.

Что означает конфиденциальность?

Конфиденциальность означает, что чувствительные данные должны быть доступны только авторизованным лицам. Для этого используют шифрование, контроль доступа и аутентификацию.

Что означает целостность?

Целостность означает, что данные при хранении, передаче и обработке не должны изменяться без уведомления. Хеширование и цифровые подписи защищают данные.

Что означает доступность?

Доступность означает, что системы и данные должны быть доступны при необходимости. Избыточность, балансировка нагрузки и мониторинг повышают доступность.

Что такое Security by Design?

Безопасность закладывается в дизайн уже на этапе проектирования. Так она обходится дешевле и работает эффективнее.

Что такое принцип наименьших привилегий?

Каждый пользователь и процесс получают только необходимые им права.

Что такое валидация входных данных?

Валидация входных данных проверяет тип, длину и формат данных, чтобы предотвратить атаки.

Что такое защищённая аутентификация?

Она включает строгие требования к паролям, хеширование, MFA, Rate Limiting и защищённые сессии.

Почему логирование важно?

Логирование делает действия отслеживаемыми и позволяет выявить атаки.

Что такое инцидент безопасности?

Событие, которое нарушает конфиденциальность, целостность или доступность данных и систем.

Что такое compliance?

Соответствие нормативным и юридическим требованиям, таким как GDPR, ISO 27001 или PCI-DSS.

В чём различие между безопасностью и Security Testing?

Безопасность это характеристика качества, Security Testing это метод её проверки.

Что такое защита данных?

Защита персональных данных от несанкционированного доступа и злоупотреблений.

Что такое Threat Modeling?

Системный анализ потенциальных угроз уже на этапе проектирования.

Что такое подлинность?

Надёжная проверка личности пользователей и систем.

Что такое Defense in Depth?

Несколько слоёв защиты вместо одной единственной меры.

Почему нужно хешировать пароли?

Хеширование защищает пароли даже если база данных скомпрометирована.

Что такое аудит безопасности?

Системная проверка мер и процессов безопасности.

Почему регулярные обновления важны?

Обновления закрывают известные уязвимости в ПО и библиотеках.

Продолжение пути обучения: Качество ПО

Следующий материал в пути обучения «Качество ПО» посвящен качеству ПО и производительности — как производительность становится атрибутом качества.

Назад к блогу
Share:

Похожие статьи