Fact-checked by Grok 2 weeks ago

Object-capability model

The object-capability model (ocap) is a foundational paradigm that enforces through unforgeable references, known as capabilities, which represent an object's to perform operations on other objects exclusively via . In this model, an object's capabilities define its scope of interaction, ensuring that inter-object communication and authority derivation occur only along explicit paths in a reference graph, thereby preventing unauthorized access without relying on centralized principals or discretionary controls. This approach integrates protection with object-oriented computation, treating references as the sole conveyors of causality and authority, and supports fine-grained, dynamic enforcement across sequential, concurrent, and distributed systems. Originating from early capability-based systems in the 1960s, such as Dennis and Van Horn's 1966 paper on structured flow of control, the model evolved through contributions in programming languages and operating systems, including Redell's 1974 work on access abstractions and the Actors model by Hewitt et al. in 1973. It was formalized and unified in Mark S. Miller's 2006 PhD thesis, Robust Composition: Towards a Unified Approach to and , which synthesized over four decades of research to address robust composition in potentially adversarial environments. Key earlier works, such as Miller et al.'s 2003 paper "Capability Myths Demolished," debunked misconceptions about capabilities' equivalence to access control lists (ACLs), irrevocability, and confinement limitations, establishing ocaps as a distinct, composable security primitive. At its core, the model adheres to the principle of least authority (POLA), granting objects only the minimal capabilities needed for their function, which are attenuated through abstractions like forwarding objects or revocable proxies to enable confinement and revocation. It enforces seven fundamental security properties, including "no designation without authority" (knowledge of an object implies no access unless accompanied by a capability) and dynamic subject creation, mitigating risks like the where surrogates abuse ambient authority. Unlike ACLs, ocaps avoid name-space ambiguities and support decentralized authority derivation—"only connectivity begets connectivity"—making them ideal for modular, tamper-proof systems. Practical implementations include the E programming language, which embeds ocaps for secure distributed computation via the Pluribus protocol, and influence modern systems like Google's Caja for JavaScript sandboxing and capability-aware kernels such as seL4. Recent advancements as of 2025 include capability-based control in type systems, as explored in 2024 research on safer programming languages. The model promotes defensive programming by isolating state and using event loops for concurrency, ensuring mutual non-interference even in the presence of faults or malice, and has been analyzed formally for patterns like sealing and facades to verify security properties. By leveraging object encapsulation and reference transparency, ocaps facilitate scalable security without global trust assumptions, remaining a cornerstone for building resilient software in untrusted environments.

History

Origins

The object-capability model originated in the mid-1960s amid efforts to enable secure resource sharing in multiprogrammed computing systems, particularly environments where multiple users accessed shared hardware concurrently. The foundational concept of capabilities was proposed by Jack B. and Earl C. Van Horn at in their 1966 paper "Programming Semantics for Multiprogrammed Computations," published in Communications of the ACM (volume 9, issue 3, pages 143–155). In this work, and Van Horn addressed key challenges in multiprogramming, including protection, naming, sharing, and debugging, by introducing capabilities as a uniform mechanism for controlling access to computational resources. In the Dennis and Van Horn model, capabilities served as the primary units for resource designation in a -managed , allowing processes to operate within protected (domains) while cooperating securely. These were envisioned as hardware-supported, unforgeable tokens—unique bit strings stored in protected capability lists (C-lists) that did not expose physical addresses, thereby preventing unauthorized replication or alteration by user-level code. The enforced access through meta-instructions, such as CREATE for establishing domains and for delegating authority, ensuring that capabilities could only be manipulated under controlled conditions. This approach drew from 1960s research on systems, which sought robust mechanisms for isolating user computations and enabling safe resource allocation among concurrent tasks, as exemplified in early implementations like MIT's timesharing system. By emphasizing hardware enforcement to make capabilities tamper-proof, the model laid the groundwork for addressing the security vulnerabilities inherent in the emerging paradigm of shared computing resources.

Development

The object-capability model evolved from hardware-supported systems in the 1970s, such as the Cambridge CAP computer, which implemented capabilities directly in hardware to enforce secure access to resources. Similarly, the Hydra kernel for the Carnegie-Mellon Multi-Mini-Processor (C.mmp) in 1974 provided capability-based protection mechanisms in a multiprocessor environment, emphasizing modularity and secure object access. These early systems demonstrated the feasibility of capabilities for protection but were constrained by hardware limitations. By the 1980s and 1990s, the focus shifted to software-based implementations, integrating capabilities with object-oriented paradigms for greater flexibility. KeyKOS, developed in 1985, exemplified this transition as a persistent, object-capability operating system that used software-enforced capabilities for fine-grained access control without hardware dependencies. This period saw further advancements in systems like EROS (1999) and the E programming language, which embedded object-capabilities directly into language semantics to support secure, distributed computation. A pivotal clarification came in the 2003 paper "Capability Myths Demolished" by Mark S. Miller, Ka-Ping Yee, and Jonathan S. Shapiro, which addressed common misconceptions about capabilities—such as their supposed equivalence to lists, inability to enforce confinement, and irrevocability—while highlighting the strengths of object-capabilities for composable . Building on this, Miller's 2006 , "Robust Composition: Towards a Unified Approach to and ," formalized the object-capability model as a foundation for robust software composition, unifying and concurrency controls through reference-based authority and the principle of least authority. In recent applications, the model has been adapted to and smart contracts, as discussed by E. Dean in 2019, who drew analogies to valet keys for dynamic, revocable permissions in the Agoric platform's JavaScript-based object-capability system. Agoric launched its mainnet in November 2021, enabling secure, JavaScript-based smart contracts using object-capabilities on the . This approach enables secure, interoperable smart contracts by treating permissions as unforgeable object references, facilitating economic cooperation without centralized trust.

Fundamental Concepts

Objects and Capabilities

In the object-capability model, an object is a fundamental computational entity that encapsulates both local state and behavior, representing an instance of an . Objects interact exclusively through , ensuring that they can only affect the external world by sending messages to other objects they reference, thereby maintaining encapsulation and . This design promotes by bundling data and operations within the object, preventing direct access to internal state from outside. A serves as an unforgeable to an object, conferring the to perform specific operations on it, such as invoking methods or sending messages. Unlike traditional lists, capabilities indivisibly combine the designation of the object (identifying what is being accessed) with the permission to act and the means of access, making them tamper-proof tokens of . In this model, possession of a capability is both necessary and sufficient for exercising the associated , enabling fine-grained control without relying on centralized checks. For example, a capability might grant read access to a file object or the right to invoke a on a remote service. References in the object-capability model act as secure, protected pointers that designate objects while embedding , forming the edges of a dynamic that governs interactions. Capabilities are a specialized form of that explicitly carries , distinguishing them from mere naming tokens; all object in a pure object-capability function as capabilities to enforce consistent . These are obtained through initial endowments or via messages, creating chains of from trusted seeds. Messages are the primary for communication in this model, consisting of or requests dispatched via a to invoke behavior on the target object. A message may include first-class as arguments, allowing for further of authority—such as passing a to another object for sub-interactions—while potentially altering the sender's or receiver's . Messages can be synchronous (immediate calls within a local execution context) or asynchronous (eventual sends across distributed boundaries), supporting both tight and loose, fault-tolerant coordination.

Access Principles

In the object-capability model, access to objects is strictly governed by the principle that "only connectivity begets connectivity," ensuring that all interactions derive from prior authorized connections. Capabilities are acquired through four primary mechanisms: initial seed capabilities provided by the system or runtime environment, creation of new objects by an existing object (often termed parenthood, where a object inherently receives a reference to its ), copying or endowment of existing capabilities from one object to another via explicit transfer, and by trusted intermediaries that hold references to both parties and facilitate the . These rules prevent unauthorized by requiring that any new connection traces back to an established authority chain, as disjoint components cannot spontaneously link without such mediation. A key aspect of these access principles is the elimination of ambient authority, where no implicit or contextual rights exist outside of explicit capability possession. In object-capability systems, an object's authority to interact with the external world is determined solely by the references it holds, without reliance on global namespaces, user identities, or environmental assumptions that could grant unintended access. This explicitness enforces that computations operate with precisely the authorities they have been endowed, reducing risks from untrusted code or components. Capabilities support attenuation, allowing the creation of derived with reduced or specialized rights to further confine . For instance, an object can generate a or wrapper that provides read-only access to an underlying resource, or a revocable that can be invalidated later, thereby granting minimal necessary permissions in line with of least authority. Such mechanisms enable safe delegation without exposing full object capabilities. The model adheres to an in authority flow, where permissions propagate through chains of passing and exchanges without centralized or intermediaries imposing additional checks. This ensures that control remains distributed and verifiable at each , as travels overtly via along permitted pathways, fostering robust of components.

Security Model

Comparison with ACLs

Access control lists (ACLs) represent a traditional approach to in computer systems, where permissions are managed through centralized lists associated with objects, specifying which subjects—such as users or processes—have particular rights like read, write, or execute on that object. This column-oriented model in the access matrix divides rights by resource, requiring a separate for subject identification and often leading to coarse-grained permissions tied to identities rather than specific actions. In contrast, the object-capability (OCAP) model employs a decentralized, row-oriented structure where access rights are encapsulated in capabilities—unforgeable references to objects that grant specific authorities upon possession. Unlike ACLs, OCAPs do not rely on a central authority for permission resolution; instead, rights are explicit, per-reference, and can be transferred or attenuated through object interactions, ensuring that authority follows the capability rather than ambient user identity. A fundamental difference lies in how each handles designation and trust: ACLs necessitate name resolution through a trusted central , which can introduce ambient authority where subjects inadvertently wield unintended powers, such as accessing resources via group memberships without explicit intent. OCAPs avoid this by requiring direct possession of a for access, eliminating the need for identity-based lookups and mitigating risks like the , where a acts on behalf of another with excessive privileges. This structural divergence refutes claims of formal equivalence between the two models, as ACLs prove strictly more permissive than capabilities under dynamic access rules, particularly in preventing unauthorized designation. For instance, in an ACL-based like Unix, a user granted group read access to a directory might unintentionally access sensitive files within it due to inherited permissions, creating a of ownership and . In an OCAP system, such as the language, access is confined to capabilities explicitly held and delegated, ensuring only intended references enable interaction and enforcing the principle of least authority through minimal, transferable .

Principle of Least Authority

The principle of least authority (POLA) in the object-capability model requires that each computational entity, such as an object or , receives only the specific capabilities essential for its intended , thereby minimizing the potential for misuse or exploitation if compromised. This approach, originally formulated as the principle of least , ensures that authority is allocated dynamically on a "need-to-do" basis, avoiding the over-provisioning of rights that could amplify security risks. By tying authority directly to unforgeable references—capabilities that serve both as designations and permissions—object-capability systems enforce POLA at the language and runtime levels, preventing ambient or implicit access to resources. A core mechanism for upholding POLA involves granting narrowly tailored that limit operations to what is strictly required, such as providing read-only access to a file rather than full control, which reduces the by confining potential damage to isolated, minimal scopes. For instance, a component tasked with displaying might receive a to a object that attenuates the original , allowing only query methods while blocking modifications, ensuring the entity cannot inadvertently or maliciously alter underlying resources. This fine-grained delegation aligns with the model's reference-passing semantics, where are introduced only through explicit channels like initial endowments or controlled introductions, further reinforcing least authority without relying on global state. Privilege separation in object-capability systems complements POLA by ensuring that components operate with disjoint sets of authority, preventing unauthorized escalation or interference between entities. Objects are isolated within bounded contexts, such as vats or arenas, where their reference graphs remain disconnected unless explicitly bridged, allowing independent or of privileges without affecting others. This separation inherently limits the blast radius of faults, as a compromised object can only leverage the minimal, task-specific capabilities it holds, rather than inheriting broader ambient authorities. Revocation and confinement mechanisms enable ongoing enforcement of POLA by allowing authorities to be dynamically withdrawn or restricted, isolating potential faults to prevent propagation. Capabilities can be confined through proxy objects or membranes that mediate access, such as a revocable caretaker that disables further interactions upon detection of anomalies, effectively pruning authority flows in real-time. These techniques ensure that even if an entity exceeds its intended behavior, its influence remains contained, supporting non-monotonic reduction of privileges as needs evolve. Object-capability models facilitate under POLA by enabling static analysis of propagation solely through the structure of references, without needing to examine code internals. This allows verification of confinement properties, such as preventing reverse channels via one-way data diodes implemented as attenuated capabilities, ensuring that sensitive flows adhere to least- constraints. By modeling as a of explicit references, systems can potential leaks or escalations predictively, enhancing overall assurance.

Advantages

Modularity and Encapsulation

The object-capability model promotes modularity by enforcing interactions between components solely through capabilities, which act as references that limit dependencies and enable the creation of independent, composable units without shared global state. This approach treats required trust as a form of dependency, allowing developers to design software where separately conceived modules can collaborate securely without introducing unintended vulnerabilities or coupling. As a result, the model facilitates hierarchical decomposition of tasks, reuse of components, and the organization of assumptions about object behaviors, leading to more maintainable code structures. Encapsulation in the object-capability model is achieved by hiding an object's internal , with granted only through specific that expose controlled behaviors, thereby preventing direct or unintended interactions from external entities. This "absolute encapsulation" ensures that even possession of a to an object does not imply unrestricted to its internals, as all must be explicitly conferred via . By packaging code and within objects and reifying into distinct objects, the model isolates and enforces private , reducing the risk of between modules. These principles yield significant design benefits, including robust of software systems, as explored in Miller's on robust composition, which demonstrates that references restrict causal effects between objects to intended exchanges, enabling secure of concurrent or distributed components without prior coordination. This supports the creation of flexible abstraction boundaries that separate concerns and allow practices to coexist, ultimately producing systems that are more resilient to faults or misuse. For instance, in environments on blockchains, object-capabilities enable dynamic of limited rights—such as read or write access to specific actions—without exposing the full authority of the underlying contract, allowing modular extension of functionality while maintaining encapsulation of sensitive state.

Security Analysis

Security analysis in object-capability (OCap) systems focuses on to verify that authority propagation adheres to intended policies, ensuring no unintended leaks occur. One key technique is authority flow analysis, which traces the propagation of capabilities through the system to detect potential violations without requiring detailed code semantics. This approach models interactions using (CSP) and employs tools like the Failures-Divergence Refinement (FDR) checker to verify properties such as non-delegation or revocation. By representing objects as nodes and capabilities as directed edges in a graph, analysts can identify leaks arising from concurrency, , or unbounded object creation, generalizing results to arbitrary system sizes via data-independence theory. Aggregation techniques further simplify analysis by collapsing multiple similar objects into a single representative, enabling efficient detection of subtle vulnerabilities like covert channels. To enforce security policies, OCap systems leverage composable abstractions such as vaults and governors, which provide modular mechanisms for controlling . Vaults, implemented as sealer-unsealer pairs, encapsulate sensitive data or objects, allowing secure transmission across trust boundaries only to authorized recipients; for instance, a sealer encrypts a , and only the matching unsealer can decrypt and it, preventing unauthorized exposure. Governors, often realized as facets or intermediaries, restrict on objects by defining allowed operations, thereby enforcing fine-grained policies like or conditional invocation. These patterns, as demonstrated in capability-based languages, promote the principle of least by design, allowing policies to be composed hierarchically without introducing ambient risks. Compared to traditional models like ACLs, OCap systems offer superior verifiability, enabling end-to-end security proofs that span from high-level specifications to low-level implementations. This is exemplified by the seL4 , where confirms that capability management enforces and properties, providing machine-checked guarantees against common exploits like buffer overflows or privilege escalations. Such proofs rely on the explicit nature of capability flows, which eliminates implicit assumptions prevalent in identity-based systems, facilitating comprehensive of the entire model. A notable application of these analysis techniques appears in smart contract auditing, where OCap models simplify verification by rendering permissions explicit and traceable. In 2019, computer scientist E. Dean Tribble highlighted how OCap-based smart contracts, such as those using escrow mechanisms like Zoe, make authority grants unambiguous—assets are held until offer terms are met, allowing auditors to trace flows and confirm safety properties like refunds on failure without trusting opaque contract logic. This contrasts with identity-based controls, which struggle with dynamic permissions, and reduces audit complexity by focusing on traceable object references rather than hidden state transitions.

Limitations and Challenges

Loopholes in Languages

In (OOP) languages, the object-capability (ocap) model faces significant challenges due to features that introduce unintended authority, violating core principles like explicit access and least authority. These loopholes often stem from ambient authority, where code gains privileges implicitly without explicit capability mediation, enabling unauthorized access or leakage. Ambient authority manifests in global namespaces and mutable references that allow code to access resources without capabilities. For instance, Java's mutable static fields can leak capabilities across modules, as any code can modify shared state without explicit handover. Similarly, reflection mechanisms like Java's java.lang.Class.forName() or JavaScript's eval() enable dynamic code execution or object inspection, bypassing encapsulation and granting broad authority to untrusted code. These features undermine ocap security by allowing ambient access to the runtime environment, where authority is not tied to specific references. External effects further erode ocap discipline through language primitives that perform side effects without capability checks. In Java, the java.io.File class constructor provides direct filesystem access based on the caller's ambient privileges, rather than requiring an explicit token, thus allowing unchecked I/O operations. This contrasts with ocap ideals, where such effects must be mediated by passed references to prevent implicit . Specific examples highlight these vulnerabilities in OOP contexts. Java's unrestricted threading model permits threads to share mutable objects without confinement guarantees, potentially leaking capabilities via race conditions or shared state. OOP languages exacerbate these issues because inheritance and polymorphism can implicitly propagate authority; a subclass might inherit or override methods to access parent capabilities unexpectedly, breaking the unforgeable reference model essential to ocap security. To mitigate these loopholes, restricted subsets of languages enforce ocap compliance. Joe-E, a capability-based subset of , eliminates ambient by mandating immutable statics, prohibiting , taming I/O libraries, and restricting subclassing to prevent inheritance-based leaks, while supporting single-threaded execution for confinement. Similarly, Caja rewrites into Cajita, banning eval() and limiting property access to explicit public getters/setters, ensuring flows only through passed objects and freezing structures to block external effects. These approaches demonstrate how language restrictions can reconcile with ocap principles, though they require careful library taming to fully address ambient risks.

Implementation Issues

Implementing object-capability (ocap) systems often incurs performance overhead due to the runtime costs associated with capability and maintaining unforgeable references. These validate access rights at each interaction, which can slow down high-throughput applications, particularly those involving frequent accesses or invocations. For instance, in capability-based schemes, the addition of validity and revocation using structures like revocation trees introduces overhead ranging from 0% to 50% compared to traditional unprotected systems, depending on workload intensity and miss rates. In large-scale systems, cascading controls such as membranes exacerbate this by increasing indirection levels and call overhead, potentially leading to unacceptable runtime penalties without optimizations like static type . Retrofitting ocap security into existing object-oriented programming (OOP) languages poses significant challenges for , often requiring restrictive s that limit full language utilization. Approaches like Joe-E, a -based of , enforce ocap discipline by prohibiting features such as native methods and untamed libraries, ensuring every valid Joe-E program runs on standard Java virtual machines while preserving tool compatibility. However, this model restricts adoption because it demands new code adhere to principles unfamiliar to most programmers and involves labor-intensive "taming" of libraries, which is error-prone and unsuitable for securing legacy Java applications. As a result, such retrofits enable modular integration (e.g., for plugins) but hinder widespread use in established OOP ecosystems due to the need for architectural redesign rather than seamless extension. Recent analyses highlight additional adoption barriers, including usability issues like the need for centralized "god objects" to manage permissions and ongoing debates over appropriate threat models, contributing to ocap's limited mainstream uptake as of 2025. In distributed systems, achieving end-to-end introduces complexity, particularly in coordinating modifications across networked nodes and propagating efficiently. Concurrent operations like grants or revokes require among kernels, risking orphaned capabilities or incomplete controls if messaging occur. propagation, for example, can take up to three times longer in group-spanning scenarios (e.g., ~3876 cycles versus ~1997 for local revokes) due to inter-kernel communication, complicating real-time enforcement in heterogeneous networks. These and coordination overheads challenge the of ocap models, as ensuring consistent across distributed boundaries demands robust two-phase protocols that balance with . POSIX capabilities represent a partial alignment with ocap principles but serve as an incomplete implementation due to their lack of full object integration and dynamic resource handling. Modeled as "capabilities-as-rows," they aggregate subject-based authorities through fixed flags (e.g., CAP_CHOWN for ownership changes), enabling finer-grained separation than traditional Unix models without supporting dynamic resource creation central to ocap systems. This static, system-wide granularity limits composability and delegation, as does not integrate capabilities with object-oriented abstractions for fine-grained, per-object control, rendering it an extension rather than a pure ocap foundation. Consequently, while useful for avoiding binaries, falls short in enforcing end-to-end ocap security without additional object-level mechanisms.

Implementations

Programming Languages

The E language is a pure object-capability programming language designed for secure , developed by Mark S. Miller and collaborators starting in 1997. It enforces object-capability discipline through its object-oriented semantics, where communication occurs solely via capability passing, enabling fine-grained authority delegation without implicit access to global namespaces or ambient authority. E's design supports distributed persistence and strong security guarantees, making it suitable for building robust, tamper-resistant systems like secure web applications. Pony is an open-source, actor-model programming language that incorporates reference capabilities and linear types to enforce object-capability discipline, thereby preventing data races and ensuring safe concurrency. Developed since 2015, Pony's type system distinguishes between different kinds of references—such as isolated, alias, and transition capabilities—to control access and mutation, aligning with ocap principles for modular and secure code. This approach allows developers to build high-performance applications, such as financial systems, with built-in guarantees against common concurrency vulnerabilities. Lua, a lightweight embeddable , has been extended with mechanisms to support object-capability models, particularly for sandboxed environments. For instance, the Proxy Cap project introduces an model inspired by ocap discipline, using proxies to mediate object interactions and enforce least in untrusted code execution. These extensions leverage Lua's metatable features to implement without altering the core , enabling secure scripting in applications like games and embedded systems. Agoric's platform extends with object-capability security for developing secure smart contracts on blockchains. By using a hardened runtime and ocap patterns, it ensures that contracts operate under explicit authority grants, mitigating risks like reentrancy attacks through composable, secure object interactions. This approach, rooted in Mark Miller's work on distributed electronic rights, facilitates economic applications with cryptographic enforcement of capabilities. Restricted subsets of existing languages address ocap compliance by eliminating loopholes that grant ambient authority. Joe-E, a security-oriented of developed in 2008, enforces object-capability rules via a static verifier, preventing unauthorized access through features like reflection or class loaders while preserving Java's familiarity. Similarly, Caja, a project from 2008 to 2021, compiles untrusted into a capability-safe called Cajita, using membranes to wrap objects and restrict ambient capabilities for secure embedding. These subsets demonstrate how ocap discipline can be retrofitted to mainstream languages for building secure, decomposable systems.

Systems and Operating Systems

KeyKOS, developed in the by Key Logic, Inc., represents one of the earliest persistent capability-based operating systems, where is enforced at the of individual objects rather than processes or users. The system divides functionality into fine-grained objects, each protected by capabilities that grant specific rights, enabling persistent storage and recovery of capabilities across reboots without compromising . This supports high-performance operations in commercial environments, as demonstrated by its implementation on various hardware platforms. Building on similar principles, EROS, introduced in the late by Jonathan Shapiro and colleagues, is a capability-based operating system designed for commodity processors. It employs a single-level model for automatic and persistence, with revocable capabilities that allow dynamic adjustment of access rights to mitigate risks from compromised components. EROS emphasizes efficient and real-time support, positioning it as a platform for secure system design. CapROS, a successor to EROS developed in the early 2000s, is an experimental operating system that integrates object-capability derived from EROS and KeyKOS. It focuses on performance enhancements and resource management while maintaining revocable capabilities for fine-grained control, supporting ports for and architectures. Although primarily a effort, CapROS demonstrates practical object-capability enforcement in kernel design. The seL4 microkernel, formally verified for functional correctness in 2009 by researchers at NICTA (now Data61 ), incorporates a capability-based model that enables object-capability-like confinement of system components. Capabilities in seL4 serve as unforgeable tokens referencing kernel objects such as threads, address spaces, and endpoints, ensuring that authority flows explicitly and supporting formal proofs of isolation properties. This design has been influential in high-assurance systems, including and applications. Other notable systems include Coyotos, a research operating system from the mid-2000s that extends EROS principles with rigorous capability verification for enhanced security in untrusted environments. Fiasco.OC, developed at , is a third-generation utilizing object capabilities to implement the principle of least authority, supporting platforms like x86, , and PowerPC for secure component . OKL4, a from OK Labs, employs capability lists for protection domains, facilitating and secure partitioning in systems. In more modern contexts, the SDK applies object-capability concepts to modules, ensuring that authority propagation between components like keepers and routers is explicit and confined to prevent unintended access escalations.

References

  1. [1]
    [PDF] Robust Composition: Towards a Unified Approach to Access Control ...
    The object-capability model does not describe access control as a separate ... PhD thesis, Dept. of Math- ematics, Massachusetts Institute of ...
  2. [2]
    [PDF] Capability Myths Demolished - Papers
    The other two myths concern what is feasible in a capability system; we examine them in the context of the object-capability model, which represents the vast ...Missing: PhD | Show results with:PhD
  3. [3]
    [PDF] Analysing Object-Capability Security
    The Object-Capability (OCap) Model is a promising remedy, because it enables the creation of security-enforcing ... The Object-Capability Model Modern computing ...
  4. [4]
    Programming semantics for multiprogrammed computations
    Earl C. Van Horn. Earl C. Van Horn. Massachusetts Institute of Technology ... Programming semantics for multiprogrammed computations. Special 25th ...
  5. [5]
    [PDF] Early Capability Architectures
    This chapter first describes the Dennis and. Van Horn supervisor and its use of capabilities and then exam- ines some of the early systems influenced by its ...Missing: origins | Show results with:origins
  6. [6]
    [PDF] The Cambridge CAP Computer
    In 1970, Roger Needham and Maurice Wilkes at Cambridge University began a research project to construct a capability- based machine. In contrast to the Chicago ...
  7. [7]
    HYDRA: the kernel of a multiprocessor operating system
    Protection in the Hydra Operating System. This paper describes the capability based protection mechanisms provided by the Hydra Operating System Kernel.
  8. [8]
  9. [9]
    Welcome to ERights.Org
    Objects written in the E language are only able to interact with other objects according to ELib's semantics, enabling object granularity intra-process security ...Quick Start · What's E? · Smart Contracts
  10. [10]
    9 Agoric's Secure JavaScript Smart Contracts ... - Chorus One Podcast
    Agoric's focus on object-capabilities security approach enables developers to write secure smart contracts in JavaScript. The episode dives into the long ...
  11. [11]
    Why we invested in Agoric - Outlier Ventures
    May 13, 2019 · Agoric's interoperable secure distributed smart contract platform is foundational to the Convergence Stack and is crucial in supporting an open data economy.
  12. [12]
    Overview: An Ode to the Granovetter Diagram - ERights.Org
    In a capability system, only connectivity begets connectivity. In a capability system, an object's authority to affect the world outside itself is ...
  13. [13]
    [PDF] Paradigm Regained: Abstraction Mechanisms for Access Control
    By these rules, only connectivity begets connectivity—all access must derive from pre- vious access. ... object-capability model is used to solve access control ...
  14. [14]
    [PDF] On access control, capabilities, their equivalence, and confused ...
    We first prove that access control systems and. (object) capabilities are fundamentally different. We further study capabilities as an enforcement mechanism for ...Missing: ACLs seminal
  15. [15]
    [PDF] ProtectionInfo_Saltzer.pdf - Princeton University
    Put another way, if a mechanism can provide. "firewalls," the principle of least privilege provides a rationale minimized. 9. We should note that the principle ...
  16. [16]
    From Objects to Capabilities - ERights.Org
    The capability model is, in a sense, the object model taken to its logical extreme. Where object programmers seek modularity -- a decrease in the dependencies ...
  17. [17]
  18. [18]
    [PDF] Analysing the Security Properties of Object-Capability Patterns
    Mar 5, 2011 · 2.2 The Object-Capability Model . ... roop Sridhar, and Mark Miller. Towards a verified, general- purpose operating system kernel. In ...
  19. [19]
    The E Language in a Walnut - SkyHunter.com
    The E Language in a Walnut. by Marc Stiegler. Copyright (C) 2000, Marc ... Safety Deposit Vault Metaphor. Java introduced the concept of a sandbox for ...
  20. [20]
    [PDF] Comprehensive Formal Verification of an OS Microkernel - seL4
    We present an in-depth coverage of the comprehensive machine-checked formal verification of seL4, a general-purpose operating system microkernel.
  21. [21]
    Zoe vs. the Low-Level Status Quo. Introducing Agoric's ... - Medium
    Oct 15, 2019 · Dean Tribble is CEO and Co-Founder of Agoric. He designed the negotiation process and contract for the first smart contracting system, AMiX.
  22. [22]
    [PDF] Joe-E: A Security-Oriented Subset of Java - People @EECS
    In contrast with most other object-capability languages, which use dynamic typing, in Joe-E we can leverage the Java type system to place static restrictions ...
  23. [23]
    [PDF] Object Capabilities and Isolation of Untrusted Web Applications
    object-capability model. Keywords-Language-based Security, Capabilities ... We thank Mark Miller and the Google. Caja team for invaluable comments and discussions ...
  24. [24]
    [PDF] A Capability-based Foundation for Trustless Secure Memory Access
    Aug 9, 2023 · The results sug- gest that overall performance overhead of CAPSTONE over a traditional system is within 50%. A full hardware imple- mentation ...
  25. [25]
    [PDF] Extending the Object-Capability Model with Fine-Grained Type ...
    This is why classical OCap is right in its analysis of authority and its use of membranes to manifest any restrictions in the objects themselves. So what we ...<|control11|><|separator|>
  26. [26]
    [PDF] SemperOS: A Distributed Capability System | USENIX
    Jul 10, 2019 · Capabilities are unforgeable tokens of authority granting rights ... The term capability was first used by Dennis and van Horn [20] to ...
  27. [27]
    [PDF] Capability Myths Demolished
    The other two myths concern what is feasible in a capability system; we examine them in the context of the object-capability model, which represents the vast ...Missing: PhD | Show results with:PhD
  28. [28]
    [PDF] Delegating Responsibility in Digital Systems: Horton's “Who Done It?”
    Capabilities seem to have opposite strengths and weaknesses. A capability—like an object-reference in a memory-safe language—is a communicable and un- forgeable ...
  29. [29]
    Object Capabilities - Pony Tutorial
    The object-capability model on its own does not address concurrency. It makes clear what will happen if there is simultaneous access to an object, but it does ...Missing: computer | Show results with:computer
  30. [30]
    Using the Actor-model Language Pony for FinTech - InfoQ
    Mar 14, 2016 · Pony is an actor-model capabilities-secure native language that is compiled ahead of time using LLVM. The actor model, probably best known from ...
  31. [31]
    Actors - Pony Tutorial
    When you call a behavior on an actor, you are sending it a message. If you aren't familiar with message passing, don't worry about it. We've got you covered.Missing: linear | Show results with:linear
  32. [32]
    "Proxy Cap - La Lua Protector" by Swift Sheng - SJSU ScholarWorks
    Inspired by the object capability model and sandbox, this project, Proxy Cap, introduces a new Lua access control model that improves the language's security ...
  33. [33]
    Capabilities for Lua: what experience is there? - Stack Overflow
    Nov 9, 2010 · There's been some discussion on the cap-talk mailing list around whether Lua and Javascript support the object-capability model, with the ...How can I sandbox untrusted user-submitted JavaScript content?Why is BigInt not a constructor function, unlike Number, Boolean and ...More results from stackoverflow.com
  34. [34]
    Tech Stack - Agoric
    The Digital Path: Smart Contracts and the Third World · Publication Year: 2013. Distributed Electronic Rights in JavaScript. OCAPS: Object Capabilities.
  35. [35]
    Beta - Papers - Agoric
    Our ocap platform consists of: A robust architecture for building secure smart contracts. A foundation in JavaScript for maximum reach. A cryptographic routing ...<|control11|><|separator|>
  36. [36]
    [PDF] The Joe-E Language Specification, Version 1.0 - UC Berkeley EECS
    Aug 7, 2008 · We describe the Joe-E language, a capability-based subset of Java intended to make it easier to build secure systems. The goal of object ...
  37. [37]
    googlearchive/caja - GitHub
    Feb 2, 2021 · Caja uses an object-capability security model to allow for a wide range of flexible security policies, so that your website can effectively ...
  38. [38]
    The Joe-E Subset of Java - USENIX
    The goal of object capability languages is to support the Principle of Least Authority (POLA), so that each object naturally receives the least privilege ...
  39. [39]
    [PDF] KeyKOS OSR Paper - PDOS-MIT
    May 29, 1992 · This publication introduces the architecture of KeyKOS, a capability-based system written in software for implementa- tion on a wide variety of ...
  40. [40]
    Security in a secure capability-based system
    KeyKOS performance has been demonstrated to be very competitive in commercial applications [KeyTXF]. Object-oriented systems make an ideal platform for open ...
  41. [41]
    [PDF] EROS: a fast capability system - Yale FLINT Group
    EROS is a capability-based operating system for commodity processors which uses a single level storage model. The sin- gle level store's persistence is ...
  42. [42]
    The CapROS Operating System
    CapROS is a new operating system that merges some very old ideas about capabilities with some newer ideas about performance and resource management.Missing: object- | Show results with:object-
  43. [43]
    capros-os - GitHub
    CapROS is an experimental operating system based on object-capabilities, derived from EROS, KeyKOS, and Gnosis. Ports exist for the Intel IA-32 and ARM9 ...
  44. [44]
    [PDF] SeL4 Whitepaper [pdf]
    seL4 is still the world's only OS that is both capability-based and formally verified, and as such has a defensible claim of being the world's most secure OS.
  45. [45]
    Capabilities - seL4 docs
    A capability is a unique, unforgeable token that gives the possessor permission to access an entity or object in system. One way to think of a capability is as ...
  46. [46]
    The Fiasco microkernel - Overview
    Aug 26, 2023 · 3rd-generation microkernels use the state-of-the-art security concept of object capabilities that implements the principle of least authority ( ...
  47. [47]
    Object-Capability Model | Cosmos SDK
    The structural properties of object capability systems favor modularity in code design and ensure reliable encapsulation in code implementation.