Object Capability Model
   HOME

TheInfoList



OR:

The object-capability model is a computer security model. A
capability A capability is the ability to execute a specified course of action or to achieve certain outcomes. As it applies to human capital, capability represents performing or achieving certain actions/outcomes in terms of the intersection of capacity an ...
describes a transferable right to perform one (or more) operations on a given object. It can be obtained by the following combination: :* An unforgeable reference (in the sense of object references or protected pointers) that can be sent in messages. :* A message that specifies the operation to be performed. The security model relies on not being able to forge references. :* Objects can interact only by sending messages on references. :* A reference can be obtained by: ::# Initial conditions: In the initial state of the computational world being described, object A may already have a reference to object B. ::# Parenthood: If A creates B, at that moment A obtains the only reference to the newly created B. ::# Endowment: If A creates B, B is born with that subset of A's references with which A chose to endow it. ::# Introduction: If A has references to both B and C, A can send to B a message containing a reference to C. B can retain that reference for subsequent use. In the object-capability model, ''all'' computation is performed following the above rules. Advantages that motivate object-oriented programming, such as encapsulation or information hiding,
modularity Broadly speaking, modularity is the degree to which a system's components may be separated and recombined, often with the benefit of flexibility and variety in use. The concept of modularity is used primarily to reduce complexity by breaking a sy ...
, and separation of concerns, correspond to security goals such as
least privilege In information security, computer science, and other fields, the principle of least privilege (PoLP), also known as the principle of minimal privilege (PoMP) or the principle of least authority (PoLA), requires that in a particular abstraction la ...
and privilege separation in capability-based programming. The object-capability model was first proposed by
Jack Dennis Jack Bonnell Dennis (born October 13, 1931) is a computer scientist and Emeritus Professor of Computer Science and Engineering at Massachusetts Institute of Technology. The work of Dennis in computer systems and computer languages is recognize ...
and Earl C. Van Horn in 1966.


Loopholes in object-oriented programming languages

Some object-based programming languages (e.g. JavaScript, Java, and C#) provide ways to access resources in other ways than according to the rules above including the following: :*Direct assignment to the instance variables of an object in Java and C#. :*Direct
reflective Reflection is the change in direction of a wavefront at an interface between two different media so that the wavefront returns into the medium from which it originated. Common examples include the reflection of light, sound and water waves. The ' ...
inspection of the meta-data of an object in Java and C#. :*The pervasive ability to import primitive modules, e.g. java.io.File that enable external effects. Such use of undeniable authority violates the conditions of the object-capability model. Caja and
Joe-E Joe-E is a subset of the Java programming language intended to support programming according to object-capability discipline. The language is notable for being an early object-capability subset language. It has influenced later subset languages ...
are variants of JavaScript and Java, respectively, that impose restrictions to eliminate these loopholes.


Advantages of object capabilities

Computer scientist E. Dean Tribble stated that in
smart contracts A smart contract is a computer program or a transaction protocol that is intended to automatically execute, control or document events and actions according to the terms of a contract or an agreement. The objectives of smart contracts are the re ...
, identity-based access control did not support well dynamically changing permissions, compared to the object-capability model. He analogized the ocap model with giving a valet the key to one's car, without handing over the right to car ownership. The structural properties of object capability systems favor modularity in code design and ensure reliable encapsulation in code implementation. These structural properties facilitate the analysis of some security properties of an object-capability program or operating system. Some of these in particular, information flow properties can be analyzed at the level of object references and connectivity, independent of any knowledge or analysis of the code that determines the behavior of the objects. As a consequence, these security properties can be established and maintained in the presence of new objects that contain unknown and possibly malicious code. These structural properties stem from the two rules governing access to existing objects: :1) An object ''A'' can send a message to ''B'' only if object ''A'' holds a reference to ''B''. :2) An object ''A'' can obtain a reference to ''C'' only if object ''A'' receives a message containing a reference to ''C''. As a consequence of these two rules, an object can obtain a reference to another object only through a preexisting chain of references. In short, "Only connectivity begets connectivity."


Glossary of related terms

;object-capability system : A computational system that implements principles described in this article. ;object : An object has local state and behavior. An object in this sense is both a ''subject'' and an ''object'' in the sense used in the access control literature. ;reference : An unforgeable communications channel (protected pointer, opaque address) that unambiguously designates a single object, and provides permission to send messages to that object. ;message : What is sent on a reference. Depending on the system, messages may or may not themselves be first-class objects. ;request : An operation in which a message is sent on a reference. When the message is received, the receiver will have access to any references included in the message. ;attenuation : A common design pattern in object-capability systems: given one reference of an object, create another reference for a proxy object with certain security restrictions, such as only permitting read-only access or allowing revocation. The proxy object performs security checks on messages that it receives and passes on any that are allowed. Deep attenuation refers to the case where the same attenuation is applied transitively to any objects obtained via the original attenuated object, typically by use of a "membrane".


Implementations

Almost all historical systems that have been described as "capability systems" can be modeled as object-capability systems. (Note, however, that some uses of the term "capability" are not consistent with the model, such as POSIX "capabilities".)
KeyKOS KeyKOS is a persistent, pure capability-based operating system for the IBM S/370 mainframe computers. It allows emulating the environments of VM, MVS, and Portable Operating System Interface (POSIX). It is a predecessor of the Extremely Reliab ...
, EROS,
Integrity (operating system) INTEGRITY and INTEGRITY-178B are real-time operating systems (RTOSes) produced and marketed by Green Hills Software. INTEGRITY INTEGRITY is POSIX-certified and intended for use in embedded system An embedded system is a computer system&mdas ...
,
CapROS Capability-based Reliable Operating System (CapROS) is an operating system incorporating pure capability-based security. It features automatic persistence of data and processes, even across system reboots. Capability systems naturally support th ...
, Coyotos,
seL4 L4 is a family of second-generation microkernels, used to implement a variety of types of operating systems (OS), though mostly for Unix-like, ''Portable Operating System Interface'' (POSIX) compliant types. L4, like its predecessor microkernel ...
,
OKL4 L4 is a family of second-generation microkernels, used to implement a variety of types of operating systems (OS), though mostly for Unix-like, ''Portable Operating System Interface'' (POSIX) compliant types. L4, like its predecessor microkernel ...
and Fiasco.OC are secure operating systems that implement the object-capability model.


Languages that implement object capabilities

* Act 1 (1981) *Eden (1985), *
Emerald Emerald is a gemstone and a variety of the mineral beryl (Be3Al2(SiO3)6) colored green by trace amounts of chromium or sometimes vanadium.Hurlbut, Cornelius S. Jr. and Kammerling, Robert C. (1991) ''Gemology'', John Wiley & Sons, New York, p ...
(1987), *Trusty Scheme (1992), *W7 (1995), * Joule (1996), *Original-E (1997),
Oz-E
(2005), *
Joe-E Joe-E is a subset of the Java programming language intended to support programming according to object-capability discipline. The language is notable for being an early object-capability subset language. It has influenced later subset languages ...
(2005),
CaPerl
(2006),
Emily
(2006) * Caja (2007–2021)
Monte
(2008–present)
Pony
(2014–present) * Wyvern (2012–present) * Newspeak (2007–present) * Hacklang (2021-present)
Rholang
(2018-present)


See also

* Capability-based security *
Capability-based addressing In computer science, capability-based addressing is a scheme used by some computers to control access to memory as an efficient implementation of capability-based security. Under a capability-based addressing scheme, pointers are replaced by protec ...
*Actor model


References

{{DEFAULTSORT:Object-Capability Model Computer security models