Overview
This document specifies the PRISM Password Change ceremony - the protocol for rotating a user's PRISM secret (the distributed cryptographic salt for password verification) without exposing the old password, the new password, or the complete PRISM secret to any single entity. Only the PRISM secret changes. The CMK,
gCMK, VUID, gCMKAuth, and swarm membership are entirely untouched.The protocol requires dual authorization: the user proves knowledge of the current password via the PRISM (Phase 1), and the CMK authorizes the state transition via an Accountable Group Signature (Phases 3/5). The ceremony reuses the Nested Shamir DKG construction from Protocol: Account Creation / KeyGen, scoped to PRISM only (
numKeys = 1), with the existing swarm loaded from ORK local storage (mIdORK_ij = null).Loading diagram...
Preconditions
| Condition | Detail |
|---|---|
| User | Possesses current username, current password, and desired new password. |
| ORK swarm | Each ORK holds a committed record for this containing: (unchanged), (unchanged), (to be replaced), (to be replaced). Established during Protocol: Account Creation / KeyGen. |
| Network | Home ORK reachable. At least (14) ORKs in the swarm available. |
Protocol Flow
Phase 1: Authentication Preamble (ConvertPass)
Loading diagram...
The ConvertPass call is a partial BYOiD ceremony - the PRISM evaluation and self-request generation from Protocol: CMK Authentication, without the blind signature or JWT issuance. An ORK cannot distinguish this from a standard login preamble.
If the password is wrong, the interpolated
gPassPRISM is incorrect, the derived verifiers fail, and encRequest_i decryption produces garbage. The Secure Web Enclave (SWE) cannot proceed.Phases 2-3: PRISM DKG (UpdateShard + SetPRISM)
Loading diagram...
Key differences from Account Creation DKG:
numKeys = 1 (PRISM only, CMK untouched). mIdORK_ij = null (swarm loaded from ORK local storage). Authorization via selfRequest_i (from ConvertPass) rather than reservation token.Active vs. Passive ORKs: An ORK that participated in ConvertPass and holds a valid
selfRequest_i is "active" - it contributes both PRISM shares and a partial group signature. An ORK that came online between Phases 1 and 2 (missing ConvertPass) is "passive" - it contributes PRISM shares to maintain threshold health but sets S_i = null and does not participate in the Accountable Group Signature. The ORKsBitwise array is updated during SetPRISM based on each peer's activeOrigin flag to reflect this distinction.CMK authorizes the PRISM change. The group signature uses
keyAuth = gCMK and each active ORK signs with mSecORK_i + CMK_i, not the PRISM shard. The old password proved identity (Phase 1); the CMK proves the swarm authorized the state transition.Phase 4: Test Sign-In
The SWE executes a BYOiD
SignIn() using the new password against the uncommitted PRISM state. Successful completion proves the new PRISM secret is correctly generated, the new per-ORK verifiers match the new password-PRISM product, and the unchanged CMK still processes blind signatures correctly.If the test fails, uncommitted state times out and the old password remains in effect.
Phase 5: Commit
Loading diagram...
The mimDB (Mimir Database - The Fabric's synced repository)
AddOrUpdateKeyMAP operation updates the existing record in the TWELVE-MAP directory with the new digest mDigest that encapsulates the updated state of the participating ORKs, new signature S, and new gR. The gCMK and swarm membership mIdORK[1..n] are persisted unchanged. Any ORK that missed the ceremony will detect a digest mismatch and initiate Protocol: Key Healing to retrieve its new PRISM shard from the SafeKeep records.Loading diagram...
Algorithms
Algorithm 1
Algorithm 2
Algorithm 3
Algorithm 4
Algorithm 5
Notation Reference
| Symbol | Description |
|---|---|
| Generator point on Curve25519 / specialized twisted Edwards for double-blind signatures | |
| Scalar-point multiplication | |
| SHA-256 unless stated otherwise | |
| Diffie-Hellman: | |
| Hash-to-point (Elligator 2 on Curve25519) | |
| , | Blinded password points |
| , | Blinding scalars for old and new password respectively |
| ORK 's current PRISM shard (to be replaced) | |
| ORK 's new random PRISM sub-secret contribution | |
| ORK 's final new PRISM share: | |
| ORK 's current per-ORK PRISM verifier | |
| ORK 's new PRISM verifier: | |
| Current PRISM authentication base point | |
| New PRISM authentication base point: | |
| ORK 's CMK shard (unchanged throughout) | |
| User's CMK public key (unchanged throughout) | |
| , | ORK 's long-term private/public key |
| Current key's Accountable Group Signature digest of participating ORKS, as taken from the Home ORK's TWELVE-MAP response: | |
| ORK 's symmetric key | |
| AES256 encryption of message with key | |
| X25519-based El-Gamal encryption of message with public key | |
| X25519-based El-Gamal decryption of message with private key | |
| ORK 's public identifier | |
| Pairwise shared secret between ORKs and | |
| () | SWE's session public key (non-extractable) |
| Per-ORK authorization token from ConvertPass | |
| Boolean: did this ORK participate in ConvertPass? | |
| , , | Swarm size (20), threshold (14), respondent count |
| , | Aggregate / partial Accountable Group Signature |
| , | Aggregate / partial signature nonce |
| Digest: Current key's Accountable Group Signature digest of participating ORKS, as taken from the Home ORK's TWELVE-MAP response: | |
| Bitwise array of ORKs that participated in the original ceremony |
Actors and Trust Assumptions
| Actor | Description | Trust Assumption |
|---|---|---|
| SWE | Browser cryptographic agent. Orchestrates ConvertPass, UpdateShard, SetPRISM, test sign-in, and Commit. Blinds both passwords. | Potentially adversarial. Cannot execute password change without current password (PRISM enforces). |
| Home ORK | Entry point. Provides swarm roster via the TWELVE-MAP lookup. | No elevated trust. Public metadata only. |
| CMK ORKs () | Hold CMK and PRISM shares (and backup SafeKeep packages). Generate new PRISM sub-secrets, combine shares, derive new verifiers, produce partial group signatures (if active). | Up to 13 may collude. Each independently generates random PRISM contribution. |
| mimDB | Mimir Database - The Fabric's synced append-only repository. Stores updated key record. Independently verifies Accountable Group Signature. | Registry integrity. |
| TWELVE-MAP | Tide Wide Enumerated Ledger of Verifiable Entries - Mapping Authoritative Pointers is the self-verifying directory service on mimDB mapping key identifiers to ORK swarms. | Each entry includes a ZK proof attesting to its authenticity against the master registry. |
Layer Traversal
| Layer | How the Protocol Engages It |
|---|---|
| Legitimacy | ECDH session establishment. Voucher validation for ConvertPass and DKG calls. |
| Authority | Primary layer for Phases 2-5. New PRISM shares generated, distributed, combined, and stored via Nested Shamir DKG. Old PRISM shares replaced atomically at commit. CMK shares untouched. |
| Agency | Engaged in Phase 1. The PRISM evaluation () is a purpose-specific MPC operation - the PRISM share is used to verify the old password before the Authority Layer replaces it. |
| Settlement | Vouchers fund ConvertPass and DKG operations. |
Security Properties
| Property | Mechanism | Assumption |
|---|---|---|
| No password exposure (old) | Old password blinded as . ORKs evaluate PRISM on blinded point. | Blinding scalar randomness |
| No password exposure (new) | New password blinded as . ORKs multiply by on blinded point. | Blinding scalar randomness |
| CMK-based authorization | Group signature uses and shards. Old password proves identity (Phase 1); CMK proves swarm authorization (Phase 3). | DLP hardness |
| PRISM isolation from CMK | numKeys = 1 restricts DKG to PRISM. CMK shard, gCMK, VUID, gCMKAuth structurally unaffected. | - |
| Per-ORK verifier uniqueness | . Bound to ORK's private key. SWE never learns individual values. | DLP on Curve25519 |
| ORK learns neither password | Old: sees (blinded). New: sees (blinded) and (one-way hash). Cannot extract passwords or compare old vs. new. | DLP. Hash preimage resistance. |
| Active/passive ORK segregation | Only ORKs that verified old password (ConvertPass) participate in group signature. Passive ORKs contribute shares but not authorization. | - |
| Fraud detection | Schnorr proof verification on each ORK's PRISM contribution before share acceptance. Failure → abort + SLA report. | DLP hardness |
| Two-phase commit | Uncommitted state held until test sign-in succeeds and aggregate signature verified. Old PRISM remains authoritative until explicit commit. Auto-purge on timeout. | - |
| Threshold security tolerance | Up to 13 ORKs may collude without forging authorization or recovering the PRISM secret. | Threshold |
| Transport-independent security | Pairwise ECDH encryption between ORKs. Session ECDH between SWE and each ORK. No reliance on TLS. | ECDH + AES security |
| SafeKeep forward recovery | Absent ORKs' new PRISM shares encrypted under pairwise ECDH, signed, stored on each ORK's local database. Retrievable via Protocol: Key Healing. | AES-256. ORK key integrity. |
Call Summary
| Call | Direction | Purpose |
|---|---|---|
keyLookup | SWE → Home ORK | Retrieve swarm roster and gCMK |
ConvertPass | SWE → all ORKs | PRISM OPRF on blinded old password. Returns triple-encrypted selfRequest tokens. |
UpdateShard | SWE → ORKs | PRISM DKG round 1. numKeys=1, mIdORKij=null, gBlurNewPass as multiplier, selfRequest_i as auth. |
SetPRISM | SWE → ORKs | PRISM DKG round 2. Distribute peer shares, aggregate, verify Schnorr proofs, derive new verifiers, produce group signature (active ORKs). Store uncommitted. |
SignIn | SWE → ORKs | Test authentication with new password against uncommitted state. |
Commit | SWE → ORKs | Submit aggregate signature. Verify, transition Uncommitted → Committed, write to mimDB. |
References
- Hall, J. L., Hertzog, Y., et al. (2023). Manifesting Unobtainable Secrets: Threshold Elliptic Curve Key Generation using Nested Shamir Secret Sharing. arXiv:2309.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.
- Tide Developer Documentation: docs.tidecloak.com
Related Protocol Articles:
- Protocol: Account Creation / KeyGen - The DKG ceremony that created the PRISM secret being replaced. Same Nested Shamir construction, scoped here to PRISM only.
- Protocol: CMK Authentication - The ConvertPass preamble is a partial execution of this protocol. The test sign-in exercises the full ceremony.
- Protocol: Key Healing - Absent ORKs retrieve new PRISM shares from SafeKeep records generated during Commit.
- Protocol: Decentralized Account Recovery - Also resets the PRISM secret, but via secondary authorization factors (e.g., email) rather than current-password verification.
- Protocol: Ragnarök - Eventual disposal of the keys maintained by this protocol.