Введение

Концепция безопасности компьютеров – это концепция в проектировании защищённых вычислительных систем, одна из существующих моделей безопасности. Возможность (в некоторых системах известная как ключ) – это передаваемый, не поддающийся подделке токен полномочий. Она представляет собой значение, ссылающееся на объект вместе с ассоциированным набором прав доступа. Пользовательская программа в операционной системе, основанной на возможностях, должна использовать возможность для доступа к объекту. Безопасность, основанная на возможностях, относится к принципу проектирования пользовательских программ таким образом, чтобы они напрямую обменивались возможностями друг с другом в соответствии с принципом наименьших привилегий, а также к инфраструктуре операционной системы, необходимой для обеспечения эффективности и безопасности таких операций. Безопасность, основанная на возможностях, противопоставляется подходу, использующему традиционные разрешения UNIX и списки контроля доступа. Хотя большинство операционных систем реализуют механизм, напоминающий возможности, они обычно не предоставляют достаточной поддержки для того, чтобы обмен возможностями между потенциально недоверяющими сторонами был основным способом предоставления и распределения прав доступа во всей системе. Система, основанная на возможностях, напротив, разрабатывается именно с этой целью.

Введение

Возможности достигают своей цели по улучшению безопасности системы, заменяя собой уязвимые ссылки. Уязвимая ссылка (например, имя файла) идентифицирует объект, но не определяет, какие права доступа уместны для этого объекта и пользовательской программы, владеющей этой ссылкой. Следовательно, любая попытка доступа к указанному объекту должна быть проверена операционной системой на основе полномочий запрашивающей программы, как правило, с использованием списка контроля доступа (ACL). В системе с возможностями сам факт обладания программой данной возможностью дает ей право использовать указанный объект в соответствии с правами, определенными этой возможностью. Теоретически, система с возможностями устраняет необходимость в списках контроля доступа или аналогичных механизмах, предоставляя всем сущностям только те возможности, которые им действительно необходимы. Возможность обычно реализуется как привилегированная структура данных, состоящая из раздела, определяющего права доступа, и раздела, однозначно идентифицирующего объект доступа. Пользователь не обращается к структуре данных или объекту напрямую, а через дескриптор. На практике это используется аналогично файловому дескриптору в традиционной операционной системе (традиционный дескриптор), но для доступа ко всем объектам в системе. Операционная система обычно хранит возможности в списке, с механизмом, предотвращающим прямое изменение содержимого возможности программой (для подделки прав доступа или изменения объекта, на который она указывает). Некоторые системы также основывались на адресации на основе возможностей (аппаратная поддержка возможностей), например, Plessey System 250. Программы, обладающие возможностями, могут выполнять с ними операции, такие как передача их другим программам, преобразование в менее привилегированную версию или удаление. Операционная система должна обеспечивать, чтобы только определенные операции могли выполняться с возможностями в системе, для поддержания целостности политики безопасности. Возможности, обсуждаемые в этой статье, не следует путать с возможностями Portable Operating System Interface (POSIX) 1e/2c. Последние представляют собой грубые привилегии, которые нельзя передавать между процессами.

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

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

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

В проекте 1003.1e Портативного интерфейса операционных систем (POSIX) определена концепция разрешений, называемая "способностями". Однако возможности POSIX отличаются от способностей, описанных в данной статье. Возможность POSIX не привязана к какому-либо объекту; процесс, обладающий возможностью CAP NET BIND SERVICE, может прослушивать любой TCP-порт ниже 1024. Эта система реализована в Linux. В отличие от этого, Capsicum Unix объединяет модель настоящей системы способностей с архитектурой Unix и API POSIX. Способности Capsicum представляют собой усовершенствованную форму файлового дескриптора, делегируемое право между процессами, и позволяют ссылаться на дополнительные типы объектов, помимо классических POSIX, такие как процессы. В режиме работы с возможностями Capsicum процессы не могут использовать глобальные пространства имен (например, пространство имен файловой системы) для поиска объектов, а должны получать их по наследству или посредством делегирования. Эта система изначально присутствует в FreeBSD, но доступны патчи для других систем.