Модель объектных возможностей - это модель компьютерной безопасности . Способность описывает передаче право на выполнение одного (или более) операции на данном объекте. Его можно получить следующей комбинацией:
- Неподдельная ссылка (в смысле ссылок на объекты или защищенных указателей), которую можно отправлять в сообщениях.
- Сообщение, в котором указывается выполняемая операция.
Модель безопасности полагается на невозможность подделки ссылок.
- Объекты могут взаимодействовать только путем отправки сообщений по ссылкам.
- Ссылку можно получить:
- Начальные условия: в начальном состоянии описываемого вычислительного мира объект A может уже иметь ссылку на объект B.
- Родительство: если A создает B, в этот момент A получает единственную ссылку на вновь созданный B.
- Дарование: если A создает B, B рождается с тем подмножеством ссылок A, которыми A решил его наделить.
- Введение: если A имеет ссылки как на B, так и на C, A может отправить B сообщение, содержащее ссылку на C. B может сохранить эту ссылку для последующего использования.
В модели объектных возможностей все вычисления выполняются в соответствии с указанными выше правилами.
Преимущества, которые мотивируют объектно-ориентированное программирование , такие как инкапсуляция или сокрытие информации , модульность и разделение задач , соответствуют целям безопасности, таким как наименьшие привилегии и разделение привилегий в программировании на основе возможностей. [1] [2]
Модель объектных возможностей была впервые предложена Джеком Деннисом и Эрлом Ван Хорном в 1966 году [3].
Лазейки в объектно-ориентированных языках программирования
Некоторые объектно-ориентированные языки программирования (например, JavaScript , Java и C # ) предоставляют способы доступа к ресурсам другими способами, кроме указанных выше, включая следующие:
- Прямое назначение к переменным экземпляра объекта в Java и C #.
- Прямая рефлексивная проверка метаданных объекта на Java и C #.
- Широкая возможность импорта примитивных модулей, например java.io.File, которые позволяют использовать внешние эффекты.
Такое использование неоспоримых полномочий нарушает условия модели объектных возможностей. Caja и Joe-E - это варианты JavaScript и Java, соответственно, которые налагают ограничения для устранения этих лазеек.
Преимущества возможностей объекта
Компьютерный ученый Э. Дин Триббл заявил, что в смарт-контрактах управление доступом на основе личности не поддерживает хорошо динамически изменяющиеся разрешения по сравнению с моделью объектных возможностей. Он сравнен модель OCAP с давая VALET ключ к своей машине, без передачи права на владение автомобилем. [4]
Структурные свойства систем возможностей объектов способствуют модульности в разработке кода и обеспечивают надежную инкапсуляцию в реализации кода.
Эти структурные свойства облегчают анализ некоторых свойств безопасности объектно-функциональной программы или операционной системы. Некоторые из них - в частности, свойства информационного потока - могут быть проанализированы на уровне ссылок на объекты и связи, независимо от каких-либо знаний или анализа кода, который определяет поведение объектов. Как следствие, эти свойства безопасности могут устанавливаться и поддерживаться при наличии новых объектов, содержащих неизвестный и, возможно, вредоносный код.
Эти структурные свойства проистекают из двух правил, регулирующих доступ к существующим объектам:
- 1) Объект может послать сообщение B только тогда , когда объект содержит ссылку на B .
- 2) Объект может получить ссылку на C , только если объект получает сообщение , содержащее ссылку на C .
Как следствие этих двух правил, объект может получить ссылку на другой объект только через уже существующую цепочку ссылок. Короче говоря, «только возможность подключения порождает возможность подключения».
- объектно-способная система
- Вычислительная система, реализующая принципы, описанные в этой статье.
- объект
- Объект имеет локальное состояние и поведение. В этом смысле объект является одновременно субъектом и объектом в смысле, используемом в литературе по контролю доступа.
- Справка
- Неподдельный канал связи (защищенный указатель, непрозрачный адрес), который однозначно обозначает отдельный объект и предоставляет разрешение на отправку сообщений этому объекту.
- сообщение
- Что отправлено по ссылке. В зависимости от системы сообщения могут быть, а могут и не быть объектами первого класса.
- запрос
- Операция, при которой сообщение отправляется по ссылке. Когда сообщение получено, получатель будет иметь доступ ко всем ссылкам, включенным в сообщение.
- затухание
- Распространенный шаблон проектирования в системах объектных возможностей: учитывая одну ссылку на объект, создайте другую ссылку для прокси-объекта с определенными ограничениями безопасности, такими как разрешение только доступа только для чтения или разрешение отзыва. Прокси-объект выполняет проверки безопасности сообщений, которые он получает, и передает любые разрешенные. Глубокое затухание относится к случаю, когда такое же затухание применяется транзитивно к любым объектам, полученным через исходный ослабленный объект, обычно с использованием «мембраны».
Реализации
Почти все исторические системы, которые были описаны как «системы возможностей», можно смоделировать как системы объектных возможностей. (Обратите внимание, однако, что некоторые варианты использования термина «возможности» не согласуются с моделью, например «возможности» POSIX.)
KeyKOS , EROS , Integrity (операционная система) , [ сомнительно ] CapROS , Coyotos , seL4 , OKL4 и Fiasco.OC - это безопасные операционные системы, реализующие модель объектных возможностей.
Языки, реализующие возможности объекта
- Акт 1 (1981) [5] [6]
- Эдем (1985),
- Изумруд (1987),
- Trusty Scheme (1992),
- W7 (1995),
- Джоуль (1996),
- Оригинал-E (1997),
- Оз-Э (2005),
- Джо-И (2005),
- КаПерл (2006),
- Эмили (2006)
- Caja (2007 – настоящее время)
- Монте (2008 – настоящее время)
- Пони (2014 – настоящее время) [4]
- Виверна (2012 – настоящее время)
- Новояз (2007 – настоящее время)
Смотрите также
Рекомендации
- ^ Миллер, Марк Сэмюэл (май 2006 г.). «Надежная композиция: к единому подходу к контролю доступа и контролю параллелизма» . erights.org . Балтимор, штат Мэриленд . Проверено 28 июля 2013 года .
- ^ Марк С. Миллер; Ка-Пинг Йи; Джонатан С. Шапиро (2003). «Разрушенные мифы о возможностях» (PDF) . Технический отчет SRL2003-02. Лаборатория системных исследований, Университет Джона Хопкинса. Цитировать журнал требует
|journal=
( помощь ) - ^ [1] цитируется: JB Dennis, EC Van Horn. «Семантика программирования для многопрограммных вычислений». Сообщения ACM, 9 (3): 143–155, март 1966 г.
- ^ а б Луч, Феликс (26 августа 2019 г.). «Агорические вопросы и ответы с Дином Трибблом» . Хор первый .
- ^ Генри Либерман (июнь 1981 г.). «Превью первого акта». Памятка MIT AI 625. Цитировать журнал требует
|journal=
( помощь ) - ^ Генри Либерман (июнь 1981 г.). «Думать о множестве вещей одновременно, не запутавшись: параллелизм в действии 1». Меморандум MIT AI 626. Цитировать журнал требует
|journal=
( помощь )