ROU

CASE STUDY

← All Projects

ROU_TITAN

Titan Kernel

Formally verified micro-kernel for high-assurance embedded systems.

Active Development Restricted Access

PROJECT BRIEF

A formally verified micro-kernel written in Zig, designed for separation of concerns in secure embedded environments. The work focuses on a minimal trusted computing base, capability isolation, and reproducible verification artifacts.

TIMEFRAME

2025 - Present

ROLE

Kernel architecture, verification strategy, embedded systems research

STACK

ZigQEMURISC-VTLA+Property Testing

PROBLEM

Embedded systems often accumulate privileged code paths until the security model becomes impossible to reason about. Titan needed a kernel structure small enough to verify while still practical enough to host real device, scheduling, and message-passing behavior.

The privileged core had to stay small enough for verification to remain practical.

The API needed to support real embedded workloads without leaking authority between components.

Build artifacts and proofs had to be reproducible across development machines.

Debuggability could not depend on compromising isolation assumptions.

APPROACH

The kernel was shaped around capabilities, minimal privileged surfaces, reproducible verification artifacts, and a strict separation between policy and mechanism.

Threat Model

Started from authority boundaries

We began by defining what a component should never be able to do by accident: access unrelated memory, signal unrelated tasks, or mutate device state without an explicit capability.

This made the kernel API a security boundary rather than just a convenience layer.

Verification

Kept proofs close to implementation

The verification strategy avoids a separate theoretical model that drifts from the code. Properties are attached to build and simulation workflows so regressions are caught before integration.

The goal is practical assurance, not ornamental proof language.

Bring-up

Validated behavior through simulated hardware paths

QEMU and hardware-in-the-loop tests were used to exercise scheduling, message passing, fault handling, and capability checks before direct target deployment.

This let the team separate kernel design failures from board-specific bring-up friction.

EVIDENCE

Trusted Core

Minimal surface

Kernel mechanisms are intentionally narrow so the verification target remains bounded.

Authority Model

Capability based

Components receive explicit capabilities instead of ambient access to shared resources.

Release Gate

Proof artifacts

Verification outputs are treated as build artifacts, not optional documentation.

ARCHITECTURE

Micro-kernel Core

Mechanism lives in the kernel, policy lives outside

The kernel offers scheduling primitives, IPC, memory isolation, and capability enforcement.

Device policy, service orchestration, and higher-level behavior are pushed outside the privileged core.

Capability Table

Authority is represented as data

A component can act only through capabilities it has been granted. This makes permission transfer explicit and testable.

It also creates a clearer audit trail for what each subsystem can influence.

FIELD MATERIAL

Hardware board and embedded workstation
Titan bring-up environment with hardware-in-the-loop validation.
Kernel observability trace replay from verification suite.

SEQUENCE

01

Kernel boundary design

Defined the minimum privileged responsibilities and excluded policy-heavy behavior.

02

Capability model

Modeled component authority and message-passing constraints.

03

Verification loop

Integrated proof and simulation artifacts into the development flow.

OUTCOME

The project reduced the critical fault surface and created repeatable proof gates for core execution paths before broader hardware bring-up.

Reduced trusted surface

Security-critical behavior is concentrated in a smaller kernel core.

Clearer authority

Subsystem permissions are explicit and easier to audit.

Repeatable validation

Proof and simulation outputs provide regression signals for core behavior.

LESSONS

01

Verification gets more valuable when the implementation is designed to be verified.

02

Capability systems force architecture conversations earlier, which is usually where they belong.

03

Small kernels are only useful when the surrounding system respects the same boundaries.