Надежный дизайн

Архитектура безопасности и принципы проектирования

Три элемента безопасности и принципы безопасного проектирования

  • Целостность Integrity
  • Доступность Availability
  • Конфиденциальность Confidentiality

Принцип открытого проектирования

Open Design

  • Дизайн не должен быть секретом, открытый дизайн более безопасен.
  • Безопасность не зависит от секретности.

Принцип безопасного отказа по умолчанию

Fail-safe defaults

  • Решения о доступе основаны на “разрешении”, а не на “запрете”.
  • По умолчанию доступ не разрешается, механизмы защиты используются только для идентификации случаев разрешенного доступа.
  • Безопасный отказ: любая сложная система должна иметь аварийные механизмы безопасности при отказе функций, кроме того, следует быть осторожным с сообщениями об ошибках и журналами, чтобы предотвратить утечку информации.
  • Безопасность по умолчанию: система в начальном состоянии по умолчанию настроена безопасно, предоставляя максимальную безопасность с использованием минимального количества систем и сервисов.

Принцип разделения привилегий

Separation of Privilege

  • Механизм защиты требует использования двух ключей для разблокировки, что более надежно и гибко, чем использование одного ключа.
  • Цели разделения привилегий
  • Предотвращение конфликта интересов, злоупотребление индивидуальной властью
  • Разделение важных полномочий на несколько, чтобы объекты, требующие защиты, было труднее незаконно получить, что делает систему более безопасной.
  • Разделение ответственности и полномочий между различными процессами

Система может по умолчанию настроить 3 роли, права системных учетных записей между ролями независимы, разделение ответственности и полномочий:

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

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

Least Privilege

  • Каждый пользователь, каждая программа в системе должны использовать минимальный и необходимый набор привилегий для выполнения своей работы.
  • Обеспечить, чтобы приложения запускались с наименьшими правами.
  • При настройке различных программ, таких как базы данных, веб-серверы и т.д., необходимо использовать учетные записи с наименьшими правами, а не учетные записи с максимальными системными правами.
  • При создании новой учетной записи по умолчанию присваивать роль с наименьшими правами.

Принцип экономичности механизмов

Economy of Mechanism

  • Сохраняйте проектирование системы и код максимально простыми, компактными.
  • Чем сложнее программное обеспечение, тем выше вероятность появления ошибок в коде; если проектирование максимально изящное, то вероятность возникновения проблем с безопасностью ниже.
  • Удаляйте ненужный избыточный код и функциональные модули, оставление такого кода только увеличивает поверхность атаки системы.
  • Проектирование многоразовых компонентов для уменьшения избыточного кода.
  • Экономичность и практичность: простота, изящество, компонентность.
  • Не перепроектируйте

Принцип минимизации общих механизмов

Least Common Mechanism

  • Старайтесь избегать сценариев, в которых несколько объектов делят один и тот же ресурс, количество и использование общих ресурсов должно быть максимально минимизировано.
  • Общие объекты создают потенциальные опасные каналы для потока информации и непреднамеренного взаимодействия, постарайтесь избегать сценариев, в которых несколько объектов делят один и тот же ресурс.
  • Если один или несколько объектов не удовлетворены обслуживанием, предоставляемым общим механизмом, они могут отказаться от использования общего механизма, чтобы избежать косвенной атаки со стороны ошибок других объектов.
  • Минимизация общего использования памяти
  • Минимизация привязки портов
  • Сокращение соединений, защита от атак DoS

Принцип полного посредничества

Complete Mediation

  • Принцип полного посредничества требует, чтобы каждый доступ к каждому объекту проходил через проверку безопасности.
  • Когда субъект пытается получить доступ к объекту, система каждый раз проверяет, имеет ли субъект соответствующие права.
  • По возможности решения о контроле доступа должны приниматься владельцем ресурса, например, если это URL, то проверка должна проводиться сервером, а не на стороне клиента.
  • Особое внимание следует уделять использованию и проверке кэша, нельзя гарантировать, что информация в кэше не была изменена хакерами. Например, подмена DNS-кэша.

Принцип психологической приемлемости

Psychological Acceptability

  • Механизмы безопасности могут создавать дополнительную нагрузку для пользователей, но эта нагрузка должна быть минимальной и разумной.
  • Механизмы безопасности должны быть максимально дружелюбными для пользователей системы, облегчая их использование и понимание системы.
  • Если метод конфигурации слишком сложен и громоздок, системный администратор может случайно настроить неправильный параметр, что сделает систему менее безопасной.
  • Этот принцип обычно связан с человеко-машинным взаимодействием, UCD (User Centered Design) интерфейсом.

Принцип глубокой обороны

Defense in Depth Глубокая оборона - это комплексное требование с высоким уровнем защиты, обычно требует от архитекторов систем комплексного применения различных принципов безопасного проектирования, использования многоточечных, многократных механизмов проверки безопасности, высокого уровня архитектурного проектирования для комплексной защиты безопасности всей системы, а не полагаться только на единый механизм безопасности.