Всем привет! Сегодня я хочу поделиться с вами опытом создания формальных моделей СЗИ и рассказать 5 основных шагов с помощью которых можно построить формальную модель СЗИ и доказать ее безопасность.

С 2020 года, после выхода приказа ФСТЭК России № 76 от 02.06.2020 «Об утверждении Требований по безопасности информации, устанавливающих уровни доверия к средствам технической защиты информации и средствам обеспечения безопасности информационных технологий» разработчики ПО в области информационной безопасности для прохождения сертификации во ФСТЭК обязаны формально моделировать и доказывать безопасность своих СЗИ.

Как это сделать, если у Вас нет в арсенале обученных специалистов, компетентных в области формальной верификации или нет времени разбираться в том, как работают заточенные под это дело специальные программные решения (например, известный Event-B)?

Но, например, Вы хорошо учились на первом курсе и знаете введение в мат анализ: теорию множеств.

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

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

Перейдем к последовательному описанию шагов.

Шаг один

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

Для примера давайте рассмотрим простейший модуль СЗИ - систему разграничения доступа прав пользователей (возьмем дискреционную модель разграничения доступа, как наиболее простую в описании). Важно заметить, что мандатная и ролевая системы будут, конечно, сложней в описании, но ненамного. В мандатной системе необходимо будет учесть проверку по мандатным уровням и меткам (то есть там будет не одна, а две функции проверки прав: по мандатным уровням и по мандатным меткам). А в ролевой системе необходимо будет учесть влияния ролей (также дополнительная функция проверки прав).

Вернемся к моделированию: для описания системы дискреционного разграничения доступа зададим основные рекомендуемые множества:

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

Шаг два

Теперь необходимо задать свойства и операции на этих множествах.

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

Приведу пример: одно из самых важных свойств множества при доказательстве безопасности системы - это его замкнутость. Почему это важно? Потому что по сути этим свойством Вы "говорите", что ситуация, при которой возникает дополнительный элемент множества, неудовлетворяющий свойствам этого множества, является невозможной. Если перенести это свойство к описанию СЗИ, это можно сравнить со следующим: в системе не может возникнуть состояния, при котором у пользователя, которому заранее присвоено определенное множество прав доступа, появляется дополнительно право доступа, которым он не должен обладать.

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

И Вы в любой момент должны уметь доказать соответствие формальной модели Вашему продукту (пройти валидацию).

Именно поэтому я рекомендую Вам не перебарщивать со сложностью модели и не обещать в ней «золотых гор", которых по факту в Вашем продукте может не быть.

Зададим основные свойства и операции.

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

Определение: Линейное пространство X определяется как множество элементов, на котором заданы две операции: сумма x+y и произведение λx (элемента x  X  на число λ из некоторого поля), причем

Замечание: При построении и доказательстве математической модели ДД понятие линейного пространства играет одну из ключевых ролей с точки зрения алгебры и теории множеств. Будем считать, что система Q равная декартовому произведению множеств S, O, P определена, как минимум, на линейном пространстве X. Понятие линейного пространства говорит о том, что для системы Q заданы простейшие алгебраические операции: сумма и произведение.

Замечание.

• Объединение любого числа и пересечение конечного числа открытых множеств есть открытое множество.

• Объединение конечного числа и пересечение любого числа замкнутых множеств – замкнутое множество.

• Дополнение замкнутого (открытого) множества до всего пространства есть открытое (замкнутое) множество.

• Замыкание любого множество замкнуто.

Шаг три

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

Здесь под функцией понимается правило взаимодействия субъектов и объектов доступа.

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

Шаг четыре

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

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

Шаг пять

Заключительным этапом будет задание и доказательство основных теорем ИБ и теории множеств.

Здесь важно соблюдать последовательность: сперва Вы говорите, что принято считать безопасной системой, описываете ее свойства, которым она должна удовлетворять (отличная теория на эту тему есть в книжке Девянина П.Н. «Модели безопасности компьютерных систем. Управление доступом и информационными потоками»), затем переходите в математическое пространство, задаете смысловую однозначность теорем ИБ и теорем из теории множеств и далее доказываете теоремы в мат пространстве.

Их доказательство влечет за собой доказательство теорем ИБ и, следовательно, безопасность Вашей системы.

Отмечу еще раз, что указанный алгоритм построения и доказательства модели СЗИ не является единственным, но наиболее простым, по мнению автора.

Со статьей по теме формального моделирования, можно ознакомится здесь (в ней приведен полный текст примера моделирования СЗИ с дискреционной политикой разграничения доступа).

Далее планирую освятить вопрос моделирования МЭ и мандатной политики разграничения прав пользователей.

Подписывайтесь на канал

Буду рада взаимодействию с Вами!

Комментарии (3)


  1. Megakazbek
    28.07.2022 16:57

    Звучит как известная цитата - "Современным математикам вообще трудно читать своих предшественников, которые писали: `Петя вымыл руки' там, где просто следовало сказать: `Существует t1 < 0, такое, что образ Петя(t1) точки t1 при естественном отображении t → Петя(t) принадлежит множеству грязноруких и такое t2 из полуинтервала (t1, 0], что образ точки t2 при том же отображении принадлежит дополнению к множеству, о котором шла речь при рассмотрении точки t1.'"

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


    1. anger32
      28.07.2022 23:28

      Т.е, совсем непонятно, зачем задачу типа "доказать, что у пользователя не может появиться дополнительное право доступа, которым он не должен обладать" переформулировать в терминах теории множеств

      Есть вероятность, что эти требования пролоббированы в ФСТЭК отдельными игроками дабы усложнить жизнь конкурентам. Отсюда сама постановка вашего вопроса не состоятельна. Но!

      Исходная мысль формальной верификации в контексте IT вполне академически интересна - построить мат. модель программного объекта, обладающую той или иной логической непротиворечивостью процессов. И уже на ее основе приступать к проектированию и разработке ПО, обладающего исходно требуемыми характеристиками. Встречал упоминания инструмента, который позволяет формировать абстрагированный исходный код и даже отсылки к академическим проектам, где этот подход реализован на практике. Нужно ли упоминать, что экономически это сильно накладнее *-и-в-продакшен? В 2008-2012 ЕС проплатили разработку некоммерческого Eclipse-based IDE для реализации этой идеи (см. "The development of Rodin has been supported by the European Union projects DEPLOY (2008–2012), RODIN (2004–2007), and ADVANCE (2011–2014)"). Его развитие, к слову, не остановлено и сейчас - выходят новые версии, хотя это и похоже больше на багфиксы.

      У нас в стране, однако, формальная верификация превратилась большую фикцию.

      Здравую идею перевернули с ног на голову. По описанию (а не по реальному объекту или его исходникам) некоего процесса в объекте строится модель и формальными методами доказывается ее (модели) непротиворечивости. Таким образом, имеем построение формальной модели по вербальной модели (описанию той же СЗИ) реального объекта и дальнейшее формулирование выводов об исходном объекте. Это сродни метамоделированию, но совершенно отвязанное от реальности, поскольку сам объект никак не затрагивает. В итоге весь исходный мат. аппарат используется в обратной последовательности. Адепты этого подхода апеллируют к тому, что логика есть мощнейший инструмент доказательства сам по себе. Вот только состоятельность метамодели может быть доказана лишь относительно исходной модели, но не самого объекта. Предположение относительно целей сего фарса я уже высказал.


  1. anger32
    28.07.2022 22:44

    Далее планирую освятить вопрос

    Без привлечения церкви в этом вопросе никак не обойтись?


    P.S. Почему вы указываете, что вы PhD, когда вы аспирант? Корректное наименование postgraduate student или Ph.D. student.