Skip to content
Tech News
← Back to articles

Capability-Based Security for Redox: Namespace and CWD as Capabilities

read original get Redox Operating System Book → more articles
Why This Matters

This article highlights advancements in capability-based security within Redox OS, focusing on replacing kernel-managed namespace and CWD management with capabilities. These innovations enhance resource control, security, and modularity in the operating system, offering valuable insights for the development of more secure and flexible systems in the tech industry. For consumers, this means potentially more secure and reliable OS environments in future devices.

Key Takeaways

By Ibuki Omatsu on

Hello everyone! I’m Ibuki Omatsu. I’m currently working on the project “Capability-based security for Redox”, graciously funded by NGI Zero Commons and NLnet.

In this post, I’ll explain “Namespace management in Userspace” and “CWD as a Capability”. We’ll explore how we reimplemented the namespace that previously was managed by the kernel, and the previously string-based CWD management, using capabilities.

You might want to read about Capability-based security if you are unfamiliar with it. A simplified description is that an open file descriptor is a capability, because it identifies a resource and the application’s access rights for that resource. Capability-based security expects that all resources will be accessed starting from a capability.

Introduction: The architecture of Redox OS

In this section, I’ll explain two Redox specific concepts: resource provider “Schemes”, and our implementation of the C standard library, “relibc”.

Scheme: Resource Provider Services

As you know, Redox OS is a microkernel-based operating system. This means most system components and drivers, such as filesystems and process managers, run as separate programs in userspace. “Schemes” are the services that these programs provide.

For example, RedoxFS (Redox OS’s Filesystem service) provides the file scheme, and the process manager provides the proc scheme. All resources are accesssed by a “Scheme-rooted Path” that takes following form: /scheme/{scheme-name}/{resource-name} .

Example of Scheme-rooted Paths:

... continue reading