Модель Take-Grant
Модель Take-Grant (от англ. take — «брать», англ. grant — «давать») — формальная модель, применяемая в области компьютерной безопасности для анализа систем дискреционного управления доступом. Модель используется для проверки защищённости автоматизированных систем, которые должны соответствовать определённым требованиям безопасности. В рамках модели система представляется в виде направленного графа, где узлы соответствуют либо объектам, либо субъектам[1]. Дуги между ними имеют метки, отражающие права, которыми располагает объект или субъект (узел). В модели выделяются два основных правила — «брать» и «давать», которые определяют допустимые преобразования в графе. Всего присутствует четыре преобразования:
- правило «брать»;
- правило «давать»;
- правило «создать»;
- правило «удалить».
Позволяет воспроизвести возможные состояния системы в зависимости от распределения и изменения прав доступа и, соответственно, проанализировать потенциальные угрозы для системы. На базе классической модели разработана расширенная версия, применяемая для оценки рисков несанкционированного доступа и утечки информации[2].[3]
Обычная модель
- O — множество объектов (файлы, сегменты памяти и др.);
- S — множество субъектов (пользователи, процессы системы);
- R = {r1, r2, r3, r4, …, rn} ∪ {t, g} — множество прав доступа;
- t (take) — право брать «права доступа»;
- g (grant) — право давать «права доступа»;
- G = (S, O, E) — конечный помеченный ориентированный граф без петель;
- ⊗ — объекты, элементы множества O[4];
- • — субъекты, элементы множества S[4];
- E ∈ O × O × R — дуги графа.
Состояние системы описывается соответствующим графом.
Преобразование G в граф G' — это применение правила и обозначается как:
Правило «брать»
Брать = take(r, x, y, s), r ∈ R. Пусть s ∈ S, x, y ∈ O — вершины графа G.
Тогда граф G:
То есть субъект S берёт у объекта X право r на объект Y.
Для применения правила должны выполняться следующие формальные условия: инициатор действия должен являться субъектом, обладать правом t (take) на исходный объект, который имеет передаваемые права на целевой объект; запрашиваемые права должны быть подмножеством имеющихся, а субъект и целевой объект не должны совпадать[5][6].
В результате выполнения правила в граф добавляется новое ребро от субъекта к целевому объекту с полученным правом[5][6].
Правило «давать»
Давать = grant(r, x, y, s), r ∈ R. Пусть s ∈ S, x, y ∈ O — вершины графа G.
Тогда граф G:
То есть субъект S даёт объекту X право r на объект Y.
Для выполнения правила должны выполняться следующие предусловия: инициатор должен быть субъектом, обладать правом g (grant) на объект-получатель и передаваемым правом на целевой объект (передаваемое право должно быть подмножеством имеющегося), при этом получатель и целевой объект должны различаться[7].
Правило «создать»
Создать = create(p, x, s), r ∈ R. Пусть s ∈ S, x, y ∈ O — вершины графа G.
Тогда граф G:
То есть субъект S создаёт новый объект или субъект X с p-правами[8].
Правило «удалить»
Удалить = remove(r, x, s), r ∈ R. Пусть s ∈ S, x, y ∈ O — вершины графа G.
Тогда граф G:
То есть субъект S удаляет право доступа r на объект X, при этом из множества дуг графа удаляется только дуга с конкретной меткой права r, а не всё ребро между вершинами[9].
Для выполнения правила должны соблюдаться следующие условия: субъект S и объект X должны быть различными вершинами, субъект S должен обладать некоторым набором прав доступа к объекту X, а удаляемое право r должно быть подмножеством этого набора[10].
Примеры реализации
В графе P1 и P2 представляют субъекты (возможные пользователи), а Ds и Fs обозначают объекты — каталоги и файлы соответственно. Право «чтение» заменено на правило «брать» для всех уровней, кроме непосредственно файловых уровней в каталогах. Право «записи» также трансформировано через правило «давать». Из этого графа видно: если субъект обладает правом чтения (брать) объекта, то он может получить право чтения любых других объектов, на которые этот объект имеет какие-либо права. Аналогично, если субъект имеет право записи (давать) объекта, он способен делегировать любые свои права на этот объект.
Посредством комбинации указанных выше четырёх правил в структуру каталогов может быть добавлен новый файл, а права на чтение или запись определяются согласно действующим правилам каталога, в который записывается этот файл.
Пример последовательности операций для добавления файла и назначения прав:
- P1 создаёт права R/W для нового объекта F7;
- P1 получает право t для D1 от D;
- P1 получает право g для D11 от D1;
- P1 делегирует права RW от F7 к D11.
Расширенная модель
В расширенной модели Take-Grant дополнительно рассматриваются права на чтение (r) и запись (w). Также вводятся правила де-факто (post, spy, find, pass и другие), применение которых формирует в графе доступов мнимые дуги. Эти дуги изображаются пунктиром, помечаются правами r или w и указывают направления информационных каналов в системе[11].[12]
Основной механизм анализа включает применение правил де-факто и вычисление замыкания графа с учётом стоимости[13].[14] Расширенная модель позволяет учитывать доступ и риски утечки информации через неограниченное количество посредников с использованием алгоритмов поиска tg-путей, островов и мостов[15].[16]