Architecture
The web delivers; the enclave anchors.
A browser cannot hold a BLS key and a camera channel is not a boundary. The architecture delivers frictionless assurance on the web and anchors trust once, in a sensor attacker software cannot reach.
Browser plane (zero install)
- LoA 0 ambient — JA4 · WebGPU shader-math compute probe · canvas entropy · Turnstile
- LoA 1 behavioural — keystroke dwell/flight · pointer physics · Fitts conformance
- LoA 2 passkey — credentials.get · PRF (CTAP2 hmac-secret) → HKDF → KEK
- LoA 3 passive biometrics — BlazeFace + AdaFace · 15-frame voting · inside a worker
Anchor plane (once, at payout)
- App Attest (SEP P-256) — genuine hardware + unmodified app
- TrueDepth / IR capture, in-process (no getUserMedia → no injector path)
- AdaFace 512-D on the ANE — no image retained
- (2,3) Pedersen DKG over {device · committee · escrow} → group_public_key
- PRF bind → KEK → seal share s₁ · zeroize · Spec B receipt
Coordination plane
- Subnet 54 (Finney, netuid 54) — threshold BLS share s₂
- OPRF committee → unlinkable nullifiers
- drand (League of Entropy) — unbiasable DKG seeds
Enterprise plane
- AuthorityGrantV1 delegation · Spec B receipts (ADR-014)
- PEP/AML screening · CRVP v2.0 R1–R6
Privacy invariant register — hard constraints
| # | Invariant | Mechanical gate |
|---|---|---|
| P1 | Zero server-side facial storage | biometric_egress_detected |
| P2 | No biometric template at rest | template_retained |
| P3 | No plaintext master secret anywhere | shared_secret_assembled |
| P4 | No cross-RP linkability | linkage_property_unproven |
| P5 | No keystroke content capture | keystroke_content_captured |
| P6 | Zeroization reported, never asserted | zeroization_unreported |
| P7 | No camera on the Day-0 path | day0_biometric_gate_detected |
Packages & hard budgets
| Package | Role | Budget |
|---|---|---|
@yanez/web-yid-core | Framework-agnostic engine | < 45 KB gz |
@yanez/web-yid-webcomponent | 1-line <yanez-verify> | < 8 KB gz |
@yanez/web-yid-react | useYanezVerify hook | < 6 KB gz |
@yanez/web-yid-wasm | BLS + vision core | lazy · ≤4 MB int8 |
@yanez/web-yid-edge | Worker + Durable Object | < 1 MB gz |