Overview
This document specifies the end-to-end CMK Authentication Ceremony - the orchestrated flow that interleaves PRISM password verification (Protocol: PRISM) and the Double-Blind Threshold Signature Scheme (Protocol: Double-Blind TSS) into exactly two sequential API calls between the browser Secure Web Enclave (SWE) and the ORK swarm, followed by token delivery to TideCloak. Both API calls carry data for both sub-protocols in the same messages.
The ceremony produces a standard OIDC-compatible token, signed via a vendor-unlinkable threshold blind signature, with DPoP session binding - all without any party holding the password, the signing key, or the ability to forge tokens.
Loading diagram...
Preconditions
User-side: Username and password. Optionally, a remember-me flag or stored authentication token.
Per-ORK stored state: PRISM share , CMK share , PRISM verifier , public key , ORK key material (, , ). Established during registration (Protocol: Account Creation / KeyGen).
TideCloak (Vendor's IAM) state: , + signature, signed settings (registration policy, return URL), session identifier.
Phase 0: Setup and SWE Initialization
Step 0.1 - SWE Download and Verification
The browser downloads the Secure Web Enclave from the vendor's designated Home-ORK but can be served by any network node. Correctness does not depend on which node serves it - the user may rehome at any time. The SWE package is SRI-verifiable; expected hashes are published by Tide and community sources.
Step 0.2 - Vendor Trust Establishment
The SWE receives from TideCloak redirect: , + its signature, signed settings, and session identifier. It verifies all signatures against .
The SWE implicitly trusts any without a PKI chain: the user identity derived () is inherently bound to the vendor that paid via the voucher system. A malicious party supplying a different would produce identities bound to itself, not to the target vendor. The return URL signature ensures no attacker can redirect results using an honest vendor's key.
Step 0.3 - Session Key Generation
The SWE generates two ephemeral key pairs as non-extractable via the WebCrypto API (
extractable: false):- Network session key pair - ECDH with ORK swarm and cache indexing. Private key cannot be exported or read by any JavaScript context.
- Vendor session key pair - embedded in the authentication token. Approves of any DPoP keys from client. Plays no role in ORK communication.
Step 0.4 - User Input and Derivation
The user enters username and password, optionally setting remember-me. The SWE computes:
ℤ
Step 0.5 - Swarm Roster and Voucher Acquisition
The SWE queries the home-ORK for: , all ORK URLs, identifiers , and public keys for the designated . It then acquires one-time vouchers from the Settlement Layer, which also returns auxiliary values , , for identity recovery.
Phase 1+2: Convert (Round-Trip 1)
The Convert call carries data for both sub-protocols simultaneously: the PRISM decentralized authentication and the double-blind signature protocols. A single API call from the SWE to all CMK ORKs.
Loading diagram...
Throttling: If or source IP address has exceeded the rate limit, the ORK rejects immediately. This enforces network-level rate limiting against brute-force attempts.
Key healing: If the SWE-provided digest () differs from the ORK's local copy, the ORK initiates key healing before proceeding - ensuring the swarm operates on consistent state.
Convergence wait: The SWE waits up to 1 second for all responses, or up to 5 seconds for the first (14) responses, then records participants in with count .
Client-Side Processing (Between Round-Trips)
All cryptographic work between the two API calls is performed entirely client-side by the SWE. No network communication occurs.
PRISM processing (Algorithm references from Protocol: PRISM):
- Threshold reconstruction: interpolate → (PRISM Algorithm 1)
- Verifier derivation: compute each individual ORK verifier for all ORKs (PRISM Algorithm 2)
- Challenge decryption: peel three encryption layers, recover for each responding ORK
- Session timing: median of ORK timestamps; expiry from minimum values
BlindSig processing (Algorithm references from Protocol: Double-Blind TSS):
- Decrypt identity shares: - Coupling to successful PRISM verification
- Identity recovery: interpolate , apply voucher deobfuscation → (Double-Blind TSS Algorithm 1)
- Credential derivation: , , from
- Nonce aggregation:
- Token message construction:
- Blind message preparation: → , (Double-Blind TSS Algorithm 2)
Phase 1+2: Authenticate (Round-Trip 2)
The Authenticate call again carries data for both sub-protocols. Sent to the ORKs that participated in Convert.
Loading diagram...
The ORK performs PRISM verification first PRISM Algorithm 5. Only if authentication succeeds does it compute the partial blind signature (Double-Blind TSS Algorithm 3). This gating ensures no blind signatures are produced for unauthenticated users.
Convergence wait: The SWE waits up to 5 seconds for all responses. If any ORK that participated in Convert fails to respond to Authenticate, the nonce commitment is broken and the ceremony must restart (see Failure Recovery below).
Phase 3: Token Delivery and OIDC Authorization
Signature Assembly
The SWE decrypts all partial signatures, aggregates, and unblinds:
The SWE verifies the assembled signature locally:
Encrypt for Vendor
Remember-Me Storage (Optional)
If remember-me was set, the SWE stores session context in browser local storage: username, network session key reference, persona, , ORK metadata, , , and the computed expiry.
Session binding guarantee: The network session private key is non-extractable from the WebCrypto keystore and is referenced inside each self-sealed capsule (the ORK verifies the ECDH shared secret derived from ). A stolen cannot be used without the ability to perform ECDH operations with - which cannot be exported via any JavaScript API.
Redirect to IAM
The browser redirects to TideCloak (the Vendor's IAM) with and the session identifier.
Authorization Processing
TideCloak decrypts using the vendor's ephemeral private key , verifies the double-blind signature against , and generates a standard OIDC authorization code.
OIDC Code Exchange and VVK JWT Signing
The vendor application exchanges the authorization code (PKCE) for a JWT access token. The JWT is signed via a separate distributed signing ceremony across the vendor's VVK ORK swarm - ensuring no single party holds the vendor's token-signing key. The VVK ORKs independently verify the double-blind signature and all JWT claims before signing. Session integrity is enforced via DPoP binding to the non-extractable session keys. The VVK Temper-Proof Authorization flow is specified in a separate article.
Stored Authentication Variant (Remember-Me)
When a stored authentication token exists and has not expired, the ceremony can skip password entry entirely.
Loading diagram...
The stored values serve as pre-authenticated tokens - the ORK can decrypt the self-sealed capsule because it encrypted it with its own symmetric key. The ECDH shared secret derived from the stored session key validates that the request originates from the same browser context. The PRISM password-conversion step is entirely skipped; authentication rests on the stored capsules and their non-extractable session key binding.
The stored token expires based on the minimum window set during the original ceremony (1-3 hours for remember-me). After expiry, the full password ceremony is required.
Failure Recovery
ORK drops between Convert and Authenticate. If any ORK that participated in Convert fails to respond to Authenticate, the nonce commitment set is inconsistent ( no longer matches). The SWE must restart with a new Convert call. If within the session expiry window and the PRISM product has already been computed, the SWE can use the stored authentication variant - skipping password re-entry.
Fewer than ORKs respond to Convert. The ceremony cannot proceed. The SWE retries after a timeout. Persistent failure indicates network degradation beyond the fault tolerance threshold.
PRISM verification fails (wrong password). The ORK increments its per- throttle counter and returns failure. After repeated failures, the is throttled network-wide. The SWE cannot distinguish a wrong password from a corrupted response.
Local signature verification fails. The assembled signature does not verify against . This indicates either a malicious ORK contributed an incorrect partial signature, or the participation set changed between rounds. The SWE restarts the ceremony.
Notation Reference
This ceremony composes primitives from two sub-protocols. Notation defined in:
- Protocol: PRISM - , , , , , ,
- Protocol: Double-Blind TSS - , , , , , , ,
Additional ceremony-level notation:
| Symbol | Description |
|---|---|
| Network session key pair (non-extractable via WebCrypto). Used for ECDH with ORKs and DPoP. | |
| Vendor session key pair (non-extractable via WebCrypto). Embedded in token for DPoP. | |
| Vendor's long-term public key | |
| Vendor's ephemeral payment/session public key (rotated per payment cycle, signed by ) | |
| Token payload encrypted under for delivery to TideCloak | |
| Bitwise array indicating which ORKs participated in Convert | |
| AES256 decryption of message with key | |
| X25519-based El-Gamal encryption of message with public key | |
| PKCE | Proof Key for Code Exchange - standard OIDC mechanism (RFC7636) for binding authorization codes to a client-generated secret |
Actors and Trust Assumptions
| Actor | Role | Trust Assumption |
|---|---|---|
| Secure Web Enclave | Browser-side cryptographic agent. Orchestrates both sub-protocols, assembles final token. SRI-verifiable, rehomeable. | Potentially adversarial. See malicious SWE analysis in Protocol: Double-Blind TSS. |
| Home ORK | Serves swarm roster (public metadata only). | No elevated trust. Compromised home ORK can return stale roster but cannot influence ceremony. |
| CMK ORK Swarm (20 nodes) | Hold PRISM shares and CMK shares. Execute both sub-protocols. | Up to 13 may be malicious. Each operated independently. |
| TideCloak | Keycloak-based IAM. Initiates redirect, verifies signed token, issues OIDC codes. | Holds (public), signed settings, ephemeral keys. Never possesses VVK private key. |
| VVK ORK Swarm | Signs JWTs via separate threshold ceremony. | Separate trust domain from CMK ORKs. |
| Settlement Layer | Funds operations via one-time vouchers. Returns auxiliary values for identity recovery. | See Article 8: The Settlement Layer. |
Layer Traversal
| Layer | How the Ceremony Engages It |
|---|---|
| Legitimacy | Voucher validates each Convert call. ECDH between and qualifies the channel and binds the session. |
| Authority | Each ORK retrieves its Shamir shares (, ) - undifferentiated key material, agnostic to purpose. |
| Agency | PRISM evaluation and partial blind signature are the purpose-specific MPC operations. |
| Settlement | Voucher funds participation, binds operation to paying vendor, provides auxiliary deobfuscation values, ensures cross-vendor isolation. |
Security Properties
Properties inherited from sub-protocols are referenced, not restated. This table covers ceremony-level properties only.
| Property | Mechanism | Assumption |
|---|---|---|
| Two round-trips suffice | PRISM and CMK data multiplexed in same Convert/Authenticate calls | Protocol design |
| Sub-protocol coupling | CMK identity shares encrypted under PRISM verifier ; blind signing gated on PRISM verification | Correct ORK implementation |
| DPoP session binding | Both and generated as extractable: false via WebCrypto; embedded in token | WebCrypto API integrity |
| Non-extractable session keys | cannot be exported; ECDH with required for ORK communication and remember-me replay | WebCrypto API integrity (software-level) |
| Remember-me security | Stored bound to non-extractable ; time-limited by ; ORK cache destroyed on use | WebCrypto + ORK cache discipline |
| Vendor trust without PKI | SWE trusts any because identity is bound to vendor via voucher; forged creates identities bound to itself | Settlement Layer integrity |
| Transport-independent security | All properties independent of TLS; distributed ceremony provides equivalent guarantees | Cryptographic construction |
| Vendor key protection | JWT signed via separate VVK ORK swarm; vendor never possesses signing key | Separate threshold assumption |
| Anonymity via vouchers | No single party correlates vendor + user + ORK identity simultaneously | Settlement Layer construction |
| User sovereignty | SWE SRI-verifiable and rehomeable to any node | User verifies SRI from independent sources |
For PRISM-specific properties (offline attack resistance, mutual password proof, replay resistance), see Protocol: PRISM.
For signature-specific properties (double-blind construction, vendor unlinkability, malicious SWE containment, domain separation), see Protocol: Double-Blind TSS.
Call Summary
| Call | Direction | PRISM Component | CMK Component |
|---|---|---|---|
| Convert | SWE → all ORKs | Send: , , , voucher. Receive: , | Receive: , |
| Authenticate | SWE → participating ORKs | Send: . ORK verifies. | Send: , . Receive: |
Between calls, the SWE performs all interpolation, deobfuscation, verifier derivation, challenge decryption, identity recovery, credential derivation, and blind message preparation client-side.
References
- Hall, J. L., Hertzog, Y., et al. (2023). Manifesting Unobtainable Secrets: Threshold Elliptic Curve Key Generation using Nested Shamir Secret Sharing. arXi\v.00915. Presented at AustMS 2021.
- Wang, F., Hertzog, Y., et al. (2023). Towards Zero Trust Authentication in Critical Industrial Infrastructures with PRISM. ACNS 2023 Workshops, LNCS 13907. Springer, Cham.
- RFC 9449 - OAuth 2.0 Demonstrating Proof of Possession (DPoP). IETF, 2023.
- RFC 9497 - Oblivious Pseudorandom Functions (OPRFs) Using Prime-Order Groups. IETF, 2023.
- RFC 7636 - Proof Key for Code Exchange by OAuth Public Clients. IETF, 2015.
- Tide Developer Documentation: docs.tidecloak.com
Related Protocol Articles:
- Protocol: PRISM - Distributed password verification sub-protocol.
- Protocol: Double-Blind TSS - Vendor-unlinkable threshold blind signature sub-protocol.
- Protocol: CVK Session - Secondary authentication from CMK to personal wallet session.
- Protocol: Authenticator App - Authenticator App flow without password entry.
- Protocol: Account Creation / KeyGen - Registration ceremony establishing preconditions.