Безопасность на основе возможностей - Capability-based security

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

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

Возможности, обсуждаемые в этой статье, не следует путать с POSIX 1e / 2c "Возможности ". Последние представляют собой общие привилегии, которые нельзя передавать между процессами.

Вступление

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

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

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

Примеры

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

Предположим, что в пространстве памяти пользовательского процесса существует следующая строка:

/ etc / passwd

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

/ и т.д. / passwdO_RDWR

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

Теперь предположим, что пользовательская программа успешно выполняет следующий оператор:

int fd = открыто("/ etc / passwd", O_RDWR);

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

Обмен между процессами

В традиционных операционных системах программы часто взаимодействуют друг с другом и с хранилищем, используя ссылки, подобные тем, что указаны в первых двух примерах. Имена путей часто передаются как параметры командной строки, отправляются через сокеты и сохраняются на диске. Эти ссылки не являются возможностями и должны быть проверены, прежде чем их можно будет использовать. В этих системах центральным вопросом является "на чьей орган власти должна ли быть оценена данная ссылка? »Это становится критической проблемой, особенно для процессов, которые должны действовать от имени двух разных авторитетных объектов. Они становятся восприимчивыми к программной ошибке, известной как запутанная депутатская проблема, очень часто приводя к дыра в безопасности.

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

Один из новаторских подходов к решению этой проблемы включает использование ортогонально стойкий Операционная система. В такой системе нет необходимости отбрасывать объекты и делать их возможности недействительными, и, следовательно, требуется механизм, подобный ACL, для восстановления этих возможностей в более позднее время. Операционная система всегда поддерживает целостность и безопасность возможностей, содержащихся во всех хранилищах, как энергозависимых, так и энергонезависимых; частично за счет выполнения всех сериализация задачи сами по себе, а не требовать, чтобы пользовательские программы выполняли это, как в большинстве операционных систем. Поскольку пользовательские программы освобождены от этой ответственности, нет необходимости доверять им воспроизведение только законных возможностей или проверять запросы на доступ с помощью контроль доступа механизм. Пример реализации - Гибкая машина с начала 1980-х гг.

Возможности POSIX

Проект POSIX 1003.1e определяет понятие разрешений, называемое «возможностями». Однако возможности POSIX отличаются от возможностей, описанных в этой статье - возможности POSIX не связаны ни с каким объектом; процесс, имеющий возможность CAP_NET_BIND_SERVICE, может прослушивать любой TCP-порт ниже 1024. Эта система находится в Linux.[1]

В отличие, Стручковый перец гибридизирует истинную модель системы возможностей с дизайном UNIX и API POSIX. Возможности Capsicum - это усовершенствованная форма дескриптора файла, делегируемое право между процессами и дополнительными типами объектов помимо классического POSIX, такими как процессы, на которые можно ссылаться через возможности. В режиме возможностей Capsicum процессы не могут использовать глобальные пространства имен (например, пространство имен файловой системы) для поиска объектов и должны вместо этого наследовать или делегировать их. Эта система встроена в FreeBSD, но для других систем доступны исправления.[2]

Реализации

Известные исследовательские и коммерческие системы, использующие безопасность на основе возможностей, включают следующее:

Рекомендации

  1. ^ возможности (7) – Linux Программиста Руководство - Обзор, условные обозначения и разное
  2. ^ стручковый перец (4) – FreeBSD Интерфейсы ядра Руководство
  3. ^ https://www.freebsd.org/cgi/man.cgi?capsicum(4)
  4. ^ https://www.cl.cam.ac.uk/research/security/capsicum/papers/2010usenix-security-capsicum-website.pdf
  5. ^ «Genode OS: глоток свежего воздуха в безопасности операционных систем и программного обеспечения».
  6. ^ https://www.engadget.com/2016/08/13/google-fuchsia-operating-system/

дальнейшее чтение

Возможности POSIX в Linux:

внешняя ссылка