This article has multiple issues. Please helpimprove it or discuss these issues on thetalk page.(Learn how and when to remove these messages) (Learn how and when to remove this message)
|
Theobject-capability model is acomputer security model. Acapability describes a transferable right to perform one (or more) operations on a givenobject. It can be obtained by the following combination:
The security model relies on not being able to forge references.
In the object-capability model,all computation is performed following the above rules.
Advantages that motivateobject-oriented programming, such as encapsulation orinformation hiding,modular programming (modularity), andseparation of concerns, correspond to security goals such asleast privilege andprivilege separation in capability-based programming.[1][2]
The object-capability model was first proposed byJack Dennis and Earl C. Van Horn in 1966.[3]
This sectionpossibly containsoriginal research. Pleaseimprove it byverifying the claims made and addinginline citations. Statements consisting only of original research should be removed.(October 2016) (Learn how and when to remove this message) |
Some object-based programming languages (e.g.,JavaScript (criticism),Java, andC#) provide ways to access resources in ways other than according to the rules above, including the following:
Such use ofundeniable authority violates the conditions of the object-capability model.Caja andJoe-E are variants of JavaScript and Java, respectively, that impose restrictions to eliminate these loopholes.
Computer scientist E. Dean Tribble stated that insmart contracts, identity-based access control did not support well dynamically changing permissions, compared to the object-capability model. He analogized the ocap model with giving avalet the key to a car, without giving the right to car ownership.[4]
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 oroperating system. Some of these, specifically 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:
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."
Almost all historical systems that have been described ascapability systems can be modeled as object-capability systems. However, some uses of the termcapability are inconsistent with the model, such asPOSIXcapabilities.
KeyKOS,EROS,Integrity (operating system),[dubious –discuss] CapROS, Coyotos,seL4,OKL4 andFiasco.OC are secure operating systems that implement the object-capability model.