Attest
Collect platform evidence and preserve raw provider artifacts for backend verification.
Mobile trust layer
Project Digitalis verifies runtime signals, keeps trust decisions on the backend, and unlocks protected configuration only after startup conditions are acceptable.
Verification lock
ALLOW
Unified provider abstraction for Apple and Google without flattening assurance differences.
The client gathers evidence. The backend decides allow, deny, degrade, or retry.
Designed to sit in front of protected features without forcing a full platform rewrite.
Architecture
The RFCs describe Project Digitalis as a trust bootstrap runtime. The app is treated as exposed until attestation, verification, policy, config retrieval, and secure installation all complete.
Collect platform evidence and preserve raw provider artifacts for backend verification.
Normalize, bind nonces, enforce freshness, and map results to deterministic policy.
Return signed and optionally encrypted config only after the backend authorizes it.
Store protected material in hardware-backed facilities and prevent silent rollback.
Designed to layer in
Project Digitalis is easiest to understand as an additive control surface. It can sit in front of existing backend logic, preserve a customer-managed backend model, and make startup trust decisions explicit without pretending the client is authoritative.
Digitalis-operated and customer-managed backends can share one contract and one semantic outcome model.
Attestation, signed config delivery, and startup containment add value even before heavier runtime protection is introduced.
Capabilities, degradation, retries, and denials are visible and policy-controlled rather than hidden behind SDK optimism.
Security controls
Project Digitalis combines client hardening, protocol safeguards, short-lived trust, and verified secure storage so protected behavior is never hanging on a single check.
Raises the cost of patching, replaying, and bypassing modified app logic.
Binds verification to fresh challenges so captured evidence is harder to replay or reuse out of context.
Re-checks runtime posture and limits how long a previously valid result can keep protected behavior unlocked.
Uses signed, versioned, and policy-bound configuration so the payload itself remains part of the trust model.
Rejects stale packages and incompatible capability profiles so weaker states are not silently reintroduced.
Anchors approved sensitive material in hardware-backed storage after verification succeeds, where the platform supports it.
Outcome model
Equivalent upstream conditions should produce equivalent outcomes. Protected features stay off unless startup reaches an allowed trusted state.
Trust bootstrap succeeded. Valid config is active. Protected features are enabled.
Only policy-approved non-sensitive behavior may continue. Protected features remain off.
Temporary failure. Retry is allowed. The app enters a containment path instead of guessing.
Backend policy rejected the environment. Blocking UI and timed exit become deliberate controls.
Config, evidence, or runtime integrity is unsafe. Protected capabilities stay disabled.
Capabilities or secure storage requirements cannot be met. No hidden fallback path.