Skip to content
CoRISE
CASE / 01Product Engineering · Security & ResilienceDevelopment collaboration

Auth Platform PoC with Formal Verification

CoRISE contributed to an authentication and authorization platform PoC that combined Rust implementation with formal verification and model checking. The work used existing formal-verification assets alongside Kani at the implementation level and Tamarin at the protocol level to examine properties at different layers.

Domain
Product Engineering / Security & Resilience
Type
Proof of Concept
Techniques
Formal verification / Model checking / Protocol verification
Implementation
Rust
Tools and existing assets
Kani / Tamarin / Project Everest

Working behavior is one part of the question.

Authentication and authorization require considering which properties hold under unexpected inputs, complex state transitions and adversarial behavior. Alongside conventional tests, this PoC examined four questions.

Connecting technical direction to implementation and verification.

↔ Scroll horizontally to see the full diagram.

Implementation and two verification subjectsKani examines the central Rust implementation through a harness. Tamarin examines a separately authored protocol model. The dashed connection between code and model denotes correspondence to examine, not automatic translation or a proven refinement.checks codeexamine model correspondenceKANIHarness-based code analysisRUSTCode, boundaries and stateTAMARINSymbolic protocol model
Fig. 01 — Code analysis and protocol-model verification.

Rust implementation

Contributed to platform functionality in Rust, making code concrete with attention to the boundaries and state transitions under examination.

Model checking with Kani

Contributed to checking Rust properties through harnesses that define inputs, assumptions, exploration bounds and conditions to examine.

Protocol verification with Tamarin

Contributed to examining symbolic models of message exchange, state transitions and security properties, including adversarial behavior.

Different verification layers, explicit assumptions.

Kani examines Rust code; Tamarin examines a symbolic protocol model. Each result is interpreted with its subject, assumptions and scope. The following diagram is a conceptual view of these relationships.

↔ Scroll horizontally to see the full diagram.

Existing assets, implementation and verification evidenceExisting verified assets are integrated into Rust. Kani checks code reachable from a harness; Tamarin verifies a separately authored symbolic model. Model-to-code correspondence remains a relationship to examine. Results are collected with assumptions and scope, informing implementation revisions. Boxes distinguish verification subjects, not system trust boundaries.asset scope + integration assumptionsseparately authored modelfeedback to codeEXISTING VERIFIED ASSETSRUST IMPLEMENTATIONAuth / authz code and stateKANI · RUST CODEHarness, assumptions, boundsImplementation-level checkingTAMARIN · SYMBOLIC MODELProtocol model and adversaryProtocol-level verificationEVIDENCE · ASSUMPTIONS · SCOPEDistinct from whole-platform proof
Fig. 02 — Evidence at each layer remains tied to assumptions and scope.

Use existing verification work within its assurance scope.

This PoC used outputs from Project Everest. Integrating existing formal-verification assets requires distinguishing the guarantees of each asset from the properties that the consuming system must establish.

What the asset guarantees

Identify the specific properties established by the existing work.

Assumptions it depends on

Check the conditions required for those guarantees to apply.

Integration boundaries

Distinguish the asset’s scope from the code that consumes it.

Remaining responsibility

Identify properties the integrating system must still establish.

Examine Rust properties under harness-defined conditions.

Kani analyzes Rust code through a verification harness. The harness provides an entry point into reachable code, with explicit assumptions and bounds for the analysis.

↔ Scroll horizontally to see the full diagram.

Kani harness and analysis scopeA harness defines inputs and assumptions for reachable Rust code. Analysis bounds and properties define the check. Exhaustive checking within the configured scope is distinct from proving the entire application.RUST IMPLEMENTATIONHARNESS → REACHABLE CODEInputs and assumptionsBOUNDS + SELECTED PROPERTIESRESULT WITHIN DEFINED SCOPE
Fig. 03 — Reachable code checked under explicit conditions.

Examine protocol behavior with an explicit adversary model.

Tamarin works on a symbolic protocol model rather than Rust code itself. It considers participant communication, state transitions and the adversary capabilities defined in the model.

↔ Scroll horizontally to see the full diagram.

Tamarin symbolic model and adversaryA symbolic exchange between parties A and B includes modeled adversary capabilities. Properties are checked against that model. Secrecy and event correspondence are illustrative properties, not claims of completed PoC proofs. Correspondence to the Rust implementation is examined separately.symbolic message exchangemapping examined separatelyPARTY APARTY BADVERSARY MODELPROPERTIES CHECKED ON MODELExamples: secrecy, event correspondenceEXAMINE MAPPING TO RUST
Fig. 04 — Model verification and a separate correspondence question.

Iterate across design, implementation and verification.

Implementation and verification proceeded together, connecting the properties under examination to the code. The diagram illustrates a development approach in which assumptions and counterexamples inform revisions.

↔ Scroll horizontally to see the full diagram.

Design, implementation and verification loopDefine properties, implement, build a model or harness, verify, inspect assumptions and counterexamples, revise design or implementation, then return to property definition. This is a conceptual iterative development loop.Implementation and verification proceed together01Define properties02Implement03Build model / harness04Verify05Inspect assumptionsand counterexamples06Revise design / code
Fig. 05 — Feed assumptions and findings into the next iteration.

Connect formal methods to software development.

  1. 01Rust implementation
  2. 02Formal-method-aware development
  3. 03Model checking with Kani
  4. 04Symbolic protocol verification with Tamarin
  5. 05Use of existing formally verified assets
  6. 06Explicit verification and assurance scope
  7. 07Connecting assumptions to evidence
  8. 08Implementation and verification feedback

Distinguish verified properties from what remains outside scope.

This case does not mean that the security of the entire authentication and authorization platform has been formally proven.

Results depend on the implementation or model examined, assumptions, exploration bounds and adversary model. Work at the PoC stage is also distinct from assurance of reliability in production.

Making the limits of a result explicit is part of engineering high-assurance systems, alongside explaining what has been established.

Contact

Discuss a system that needs a higher level of assurance.

We can contribute implementation and verification work on authentication, authorization and other challenges that benefit from formal methods alongside conventional tests.

Start a conversation

Back to all work