DID Key Recovery Threat Model
& Security Specification
A Formal Threat Taxonomy and Security Framework for DID Key Recovery
§Abstract
This specification defines a comprehensive, literature-backed threat model and security framework designed to complement and extend existing W3C threat modeling efforts for Decentralized Identifiers (DIDs), Verifiable Credentials (VCs), and Self-Sovereign Identity (SSI) infrastructure. It serves as the formal security and privacy companion to the DID Key Recovery Extension (DID-KR), providing the rigorous threat taxonomy, attack catalog, and normative countermeasures that underpin the security considerations of decentralized key recovery mechanisms.
This specification introduces STRIDE-DID—an adaptation of the classical STRIDE taxonomy purpose-built for decentralized architectures—and proposes an eighth threat class, K (Key Lifecycle Failure), which has no equivalent in any existing threat modeling framework and represents the primary novel contribution of this specification. The K-Class was developed specifically to formalize the security and privacy risks inherent in the three recovery types defined in DID-KR: Type A (Social Recovery), Type B (Time-Locked Inheritance), and Type C (MPC-Mediated Recovery).
The specification provides:
- A formal taxonomy of 7 threat classes (STRIDE-DID + K-Class).
- A structured attack catalog of over 50 named attacks with unique identifiers (
DID-TM-ATK-NNN), attack trees, CVSS-DID scores, and peer-reviewed literature citations. - Cryptographic threat analysis covering Verifiable Secret Sharing (VSS), Zero-Knowledge Proofs (ZKP), Verifiable Delay Functions (VDF), and threshold signature schemes (fROST).
- Normative security and privacy requirements (MUST/SHOULD/MAY) with threat-to-control traceability—directly mapping to and extending the security and privacy sections of DID-KR.
- Compliance alignment with NIST SP 800-63, ISO 27001, eIDAS 2.0, and SOC 2.
- A machine-readable
JSON-LDcontext for embedding threat metadata in DID Documents.
§Status of This Document
This is the Editors Draft of the DID Key Recovery Threat Model & Security Specification (DID-TM), prepared by Amir Hameed Mir of Sirraya Labs. This document is a companion to the DID Key Recovery Extension (DID-KR v1.0.0) and extends the W3C Decentralized Identifier specification's §10 (Security Considerations) and §11 (Privacy Considerations) into a standalone, normative framework.
This document is a work in progress and has not been formally reviewed. Implementers SHOULD treat all normative requirements as subject to change until a stable release is published. Feedback is welcomed via the GitHub issue tracker.
1. Introduction
Decentralized identity systems invert the classical security model. In centralized systems, a trusted third party — an identity provider, a certificate authority, a directory service — anchors trust, bears security obligations, and provides out-of-band recovery paths. Security practitioners can reason about such systems using well-established frameworks: STRIDE models spoofing and tampering against known service boundaries; LINDDUN maps privacy threats against a data controller; PASTA derives attack scenarios from a defined application architecture.
Decentralized identifier systems eliminate the trusted third party by design. The DID controller is simultaneously the subject, the authority, and the recovery path. Verifiable Credentials travel directly between issuers and holders without a central directory. Key recovery, if it exists at all, is a cryptographic construction — not an operational procedure. This architectural shift renders classical threat frameworks structurally incomplete.
The most visible symptom of this incompleteness is the Key Lifecycle Gap: no existing framework — not STRIDE, not LINDDUN, not PASTA, not MITRE ATT&CK — contains a threat class for failures arising from the cryptographic key management lifecycle in a system where the key is the identity. Guardian collusion in a secret-sharing scheme, share drift across MPC epoch boundaries, VDF difficulty miscalibration, and post-quantum algorithm migration all represent threats with no natural home in any existing taxonomy. This specification creates that home.
1.1 Why a New Taxonomy
The argument for a purpose-built taxonomy rests on three observations:
- Trust model mismatch: STRIDE's threat categories implicitly assume boundaries between trusted and untrusted zones, mediated by a server the defender controls. In DID systems, the resolver is not controlled by the subject. The ledger is not controlled by any party. The guardian is a social relationship, not an administrative role. Threats must be modeled across a fundamentally different trust topology.
- Cryptographic primitives as first-class attack surfaces: Classical threat models treat cryptography as a solved sub-problem — "encrypt the channel," "sign the message." DID systems expose cryptographic constructions (VSS polynomials, Schnorr proofs, VDFs, fROST ceremonies) as protocol-level surfaces that can be attacked at the algebraic, implementation, and operational layers simultaneously.
- Privacy as a structural property: LINDDUN treats privacy threats as threats against a data controller's handling of personal data. In SSI systems, privacy is a structural property of the protocol — selective disclosure, unlinkability, and holder binding are baked into the cryptographic design. Threats to privacy are therefore threats to cryptographic properties, not to data handling policies.
1.2 Design Goals
- Completeness: Every threat relevant to DID/SSI systems MUST be expressible within the taxonomy.
- Precision: Each threat class and attack entry MUST be defined precisely enough to be cited in a security audit, a CVE description, or a standards body comment.
- Traceability: Every normative security requirement MUST trace to one or more threat entries, and every threat entry MUST have at least one normative mitigation.
- Interoperability: Threat metadata MUST be expressible in JSON-LD for embedding in DID Documents and VC proofs.
- Literature grounding: Every threat class and cryptographic analysis MUST cite peer-reviewed literature or recognized standards documents.
1.3 Relationship to Existing Standards
This specification extends and complements the following:
- W3C DID Core §10–11: This specification operationalizes the security and privacy considerations of DID Core into normative, testable requirements.
- DID-KR (Sirraya Labs): The DID Key Recovery Extension defines recovery mechanisms; this specification formally characterizes the threats those mechanisms must address and provides the K-class taxonomy they exemplify.
- W3C VC Data Model §8: Verifiable Credential security considerations are subsumed by the VC/VP attack catalog in §14.
- NIST SP 800-63: Where applicable, requirements are aligned with NIST's digital identity guidelines for authentication assurance levels.
- ETSI EN 319 401 / eIDAS 2.0: EU regulatory alignment is addressed in §27.
2. Conformance
All authoring guidelines, diagrams, examples, and notes in this specification are non-normative. Everything else is normative.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals.
A conforming DID Method with respect to this specification is one that documents its security profile using the taxonomy and attack identifiers defined herein, provides normative responses to all applicable threat classes, and publishes that documentation at a stable URL referenced from its DID Method specification.
A conforming DID Wallet is an implementation that satisfies all MUST-level requirements in §24 applicable to the wallet boundary and passes all test assertions in Appendix A marked as applicable to wallets.
3. Terminology
- Threat
- A potential event or action that could cause harm to a DID system, its controllers, or its participants.
- Attack
- A deliberate realization of a threat by an adversary.
- Threat Class
- A category of related threats sharing common attack mechanisms, affected assets, and countermeasure families. This specification defines seven threat classes (§4–5).
- Attack Surface
- The set of interfaces, protocols, and data stores that an adversary can interact with to mount an attack.
- Adversary
- An entity that deliberately attempts to compromise the security or privacy properties of a DID system.
- Trust Boundary
- An interface at which control of data or execution transitions from one principal to another, and across which security properties cannot be assumed without verification.
- DID Controller
- As defined in DID Core: the entity authorized to make changes to a DID Document.
- Holder
- An entity that possesses one or more Verifiable Credentials and can generate Verifiable Presentations.
- Issuer
- An entity that creates and signs Verifiable Credentials.
- Verifier
- An entity that receives and verifies Verifiable Presentations.
- Guardian
- An entity holding a cryptographic share as part of a social recovery scheme.
- Key Ceremony
- A formal, witnessed procedure for generating, distributing, or destroying cryptographic key material.
- Share Drift
- A state in which the secret shares held by distributed participants become inconsistent across epoch boundaries, potentially preventing successful threshold reconstruction.
- CVSS-DID
- An extension of the Common Vulnerability Scoring System (CVSS 3.1) with additional metrics specific to decentralized identity systems, defined in §7.
- Attack Tree
- A formal model representing the ways an attacker can reach an attack goal, using AND/OR logical composition of sub-goals (Schneier 1999).
- Post-Quantum Security
- Security against adversaries with access to a cryptographically relevant quantum computer capable of running Shor's or Grover's algorithms at scale.
4. STRIDE-DID Threat Classes
STRIDE (Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege) is a threat elicitation framework introduced by Loren Kohnfelder and Praerit Garg at Microsoft in 1999 and formalized in [STRIDE-ORIGINAL]. This specification re-specifies each STRIDE class for the decentralized identity context, replacing implicit assumptions about centralized control with explicit definitions applicable to DID/SSI architectures.
The relationship between original STRIDE and STRIDE-DID is analogous to the relationship between generic network security models and post-perimeter security models: the original categories remain relevant but their definitions, threat agents, and countermeasures must be re-derived from a different threat model.
Each threat class is assigned a single-letter identifier: S, T, R, I, D, E, K. Every attack in Part III carries a primary class assignment and optionally up to two secondary class assignments. An attack assigned S as primary and I as secondary is primarily a spoofing attack that also discloses information.
4.1 S — Spoofing
Classical definition: An entity pretends to be another entity.
DID-specific definition: An adversary asserts control of a DID or presents credentials as if issued to or by a DID they do not control. In decentralized systems, identity assertions are backed by cryptographic proof; spoofing therefore requires either compromising private key material, forging proofs, or exploiting weaknesses in the verification chain from DID Document to key to signature.
Affected assets: DID private keys, DID Documents, VC issuer keys, presentation proofs, resolver responses.
Primary attack mechanisms:
- Key compromise: Direct theft or derivation of a DID controller's private key material.
- DID Document substitution: Replacing the legitimate DID Document with one containing attacker-controlled verification methods, typically via registry-level attacks.
- Resolver cache poisoning: Causing a resolver to return a tampered DID Document without the resolver or client detecting the manipulation.
- Guardian identity fraud: An adversary impersonates a legitimate guardian to inject malicious share contributions into a social recovery ceremony.
- Credential subject spoofing: Presenting a credential issued to a different subject by exploiting holder binding weaknesses or absent binding proofs.
Distinguishing characteristic in SSI: Because DID resolution is a network operation, the verification chain must be verified end-to-end. A resolver that returns a valid DID Document does not prove that the document has not been tampered with unless the DID method provides cryptographic anchoring (e.g., via a blockchain ledger). Non-ledger methods (did:web, did:key) have significantly expanded spoofing surfaces.
Literature: Fett et al. [FETT-DID-2019] demonstrate resolver-based impersonation attacks. Mühle et al. [MUHLE-2018] analyze credential subject spoofing in SSI architectures.
4.2 T — Tampering
Classical definition: Unauthorized modification of data.
DID-specific definition: Unauthorized modification of a DID Document, Verifiable Credential, Verifiable Presentation, or any component of the cryptographic infrastructure that supports DID resolution and verification. Tampering attacks in decentralized systems are particularly consequential because the modified data may be cached, replicated, or relied upon by verifiers without the subject's knowledge.
Affected assets: DID Documents, VC payloads, proof objects, DID method registries, smart contract state.
Primary attack mechanisms:
- DID Document injection: Adding unauthorized verification methods or service endpoints to a DID Document, either by compromising the controller's signing key or exploiting write permissions in the DID method registry.
- Verifiable Credential forgery: Modifying VC claims or proof metadata such that a verifier accepts a modified credential.
- Smart contract state manipulation: For ledger-based DID methods, exploiting reentrancy, integer overflow, or access control vulnerabilities in the DID registry smart contract to write unauthorized state.
- Commitment manipulation in VSS: A dishonest dealer publishes VSS commitments that are inconsistent with the distributed shares, causing share verification to pass while reconstruction fails or recovers the wrong secret.
- Proof modification in transit: An active network adversary modifies a VC proof or presentation token before it reaches the verifier.
Literature: Atzei et al. [ATZEI-2017] catalog smart contract vulnerabilities applicable to DID registries. Camenisch & Lysyanskaya [CAMENISCH-2001] formalize credential forgery in their CL signature scheme analysis.
4.3 R — Repudiation
Classical definition: An entity denies having performed an action.
DID-specific definition: An adversary — or a legitimate principal acting in bad faith — denies having authorized a DID operation, issued a credential, or participated in an identity-bearing transaction. In decentralized systems, repudiation is complicated by the absence of centrally maintained audit logs, the availability of key rotation as a plausible-deniability mechanism, and the potential for legitimate key compromise claims to mask intentional repudiation.
Primary attack mechanisms:
- Key rotation as deniability: A controller rotates their DID signing key and claims all previous operations were performed by an attacker who compromised the old key, denying responsibility for legitimate prior actions.
- Distributed log manipulation: In systems relying on distributed ledgers for audit trails, an adversary with sufficient stake or hash power manipulates the record of DID operations.
- Selective presentation: A holder selectively presents credentials to verifiers, denying having made certain claims to parties they do not wish to acknowledge having transacted with.
- Multi-sig deniability: In threshold signature schemes, any signing participant can claim their partial signature was produced under coercion or key compromise, making accountability for the aggregate signature ambiguous.
4.4 I — Information Disclosure
Classical definition: Exposure of information to unauthorized parties.
DID-specific definition: The unintended exposure of identity-related information — including the association between DIDs and real-world identities, social graph structure, behavioral patterns, or credential contents — to adversaries who should not have access to that information. Information disclosure in SSI systems is particularly insidious because it can arise from the protocol structure itself (correlation via DID reuse) rather than from a breach of access controls.
Primary attack mechanisms:
- DID correlation: An adversary observes a subject using the same DID across multiple interactions and correlates those interactions to build a behavioral profile, even in the absence of any explicit personal data in the DID Document.
- Social graph leakage: Publishing guardian identifiers, delegation chains, or service endpoints in a DID Document reveals relationship graphs that can be used to infer sensitive associations.
- Credential content inference: An adversary infers the contents of a selectively disclosed credential from the disclosed subset, the credential schema, or statistical knowledge of the issuer's credential population.
- Metadata timing analysis: Correlating the timing of DID resolution requests with transaction events to identify when subjects are active and with whom.
- ZKP linkability in repeated presentations: A ZKP that reuses the same nonce, deterministic randomness, or proof component across multiple presentations allows a verifier or passive observer to link those presentations to the same holder.
Literature: Pöhls et al. [POHLS-2020] analyze metadata leakage in self-sovereign identity systems. Chaum's foundational work on unlinkability [CHAUM-1985] underpins the privacy requirements in §25.
4.5 D — Denial of Service
Classical definition: Making a service unavailable to legitimate users.
DID-specific definition: Disrupting the availability of identity services — resolution, verification, issuance, or recovery — in ways that prevent legitimate principals from exercising control of their identities. DoS threats in DID systems extend beyond network-layer flooding to include protocol-layer availability attacks unique to decentralized architectures: a DID can be made effectively unusable without any network disruption if its associated cryptographic state is corrupted or if required participants in a threshold scheme become unavailable.
Primary attack mechanisms:
- Resolver flooding: Saturating DID resolver infrastructure with resolution requests, degrading availability for legitimate users.
- DID method deregistration: For methods relying on centralized or semi-centralized registries, forcing deregistration of a DID through administrative or legal means.
- Guardian unavailability: In social recovery schemes, preventing a threshold of guardians from responding to recovery requests, effectively making the DID unrecoverable without an alternative mechanism.
- VDF computation interference: Disrupting the computation environment for time-locked recovery, either by interfering with hardware or by providing false timing proofs.
- Ledger griefing: Flooding a DID method's underlying ledger with low-fee transactions, causing DID write operations to be delayed or dropped due to fee market dynamics.
- Revocation registry poisoning: Flooding a credential status list or revocation registry with invalid entries, degrading verifier performance or causing false revocation positives.
4.6 E — Privilege Escalation
Classical definition: Gaining capabilities beyond what is authorized.
DID-specific definition: An adversary gains the ability to perform DID operations — key rotation, service endpoint modification, credential issuance delegation — for a DID they do not legitimately control, or gains access to secrets that should require multi-party cooperation to reconstruct. Privilege escalation in DID systems is particularly critical because full key compromise is equivalent to complete identity takeover, with no administrative override available.
Primary attack mechanisms:
- Guardian collusion: A threshold of guardians in a social recovery scheme collude to reconstruct the controller's secret without the controller's knowledge or consent, gaining full control of the DID.
- MPC provider compromise: An adversary compromises a threshold of MPC nodes in a Type C (MPC-Mediated) recovery scheme, enabling unauthorized threshold signatures.
- Threshold bypass via share pollution: An adversary who knows fewer than t shares injects maliciously crafted shares into a reconstruction ceremony, causing the reconstructed secret to be a value the adversary controls rather than the original secret.
- Delegation chain exploitation: A DID controller grants a delegation credential to a sub-controller; the sub-controller exploits ambiguities in the delegation scope to perform operations beyond what was intended.
- Verification method confusion: A verifier uses a key listed in the DID Document under one verification relationship (e.g.,
keyAgreement) to verify a signature that should only be valid under a different relationship (e.g.,authentication).
5. K — Key Lifecycle Failure (Novel Class)
The K threat class is the primary novel contribution of this specification. It has no equivalent in STRIDE, LINDDUN, PASTA, TRIKE, or MITRE ATT&CK. The formalization of this class is the reason this taxonomy is necessary.
Definition: A K-class threat arises when the cryptographic key management lifecycle — including key generation, distribution, custody, rotation, recovery, and post-quantum migration — fails in a way that causes permanent loss of identity control, unauthorized transfer of identity control, or structural degradation of the cryptographic guarantees that back the identity system. K-class failures are distinct from all other threat classes because they are often irreversible: unlike a data breach (I-class), a compromised DID from a K-class failure cannot be remediated by changing a password or invalidating a session. The key is the identity.
5.1 Why K Cannot Be Subsumed by Existing Classes
A naive analysis might assign key management failures to existing STRIDE classes: key theft to S (Spoofing), share manipulation to T (Tampering), key unavailability to D (DoS). This analysis is insufficient for three reasons:
- Lifecycle coherence: K-class failures span the entire key lifecycle as a unified phenomenon. A share drift failure (§18, attack DID-TM-ATK-401) begins with an operational failure (missed epoch refresh), manifests as a cryptographic inconsistency, and results in either DoS (reconstruction fails) or privilege escalation (wrong secret reconstructed). No single existing class captures this lifecycle arc.
- Cryptographic construction as attack surface: K-class threats attack the design of the cryptographic construction, not just its implementation. A VDF calibrated to a reference platform that has been superseded by ASIC hardware is not a DoS attack or a tampering attack — it is a failure of the key lifecycle specification that makes the time-lock property invalid.
- Non-custodial irreversibility: In non-custodial systems, there is no authority with the power to override a key management failure. The irreversibility of K-class failures in fully decentralized systems requires a distinct threat class with its own countermeasure family.
5.2 K-Class Sub-categories
- K1 — Key Ceremony Failure
- Failure of the formal procedure by which key material is generated, backed up, or distributed, resulting in insecure key generation, unwitnessed key ceremonies, or improper key escrow.
- K2 — Share Lifecycle Failure
- Failure in the distribution, custody, refreshment, or reconstruction of secret shares in threshold schemes. Includes share drift (§18, DID-TM-ATK-401), share loss, and proactive refresh desynchronization.
- K3 — Time-Lock Integrity Failure
- Failure of a VDF or time-lock construction to enforce the intended temporal property. Includes difficulty miscalibration, ASIC advantage exploitation, and false proof acceptance.
- K4 — Rotation and Revocation Failure
- Failure of key rotation or revocation to take effect correctly, leaving revoked keys accepted or creating windows of dual validity.
- K5 — Post-Quantum Migration Failure
- Failure to migrate cryptographic constructions to quantum-resistant algorithms before a cryptographically relevant quantum computer becomes available, resulting in retroactive compromise of archived identity records.
- K6 — Inheritance and Recovery Chain Failure
- Failure of the designated succession path for a DID — including dead-man's switch failures, beneficiary key loss, and inheritance chain breaks — resulting in permanent loss of identity control after the controller's incapacity.
The K-class concept is informed by Bonneau et al.'s analysis of password replacement [BONNEAU-2012] (which identifies lifecycle properties as distinct from cryptographic strength), Herzberg et al.'s original proactive secret sharing work [HERZBERG-1995] (which shows that share lifetime is a security parameter distinct from threshold), and Boneh et al.'s VDF formalization [BONEH-2018] (which treats computation time as a cryptographically enforceable property that can be violated by hardware advances).
6. LINDDUN-DID Privacy Threat Mapping
LINDDUN (Linkability, Identifiability, Non-repudiation, Detectability, Disclosure of information, Unawareness, Non-compliance) is a privacy threat elicitation framework developed by Deng et al. [DENG-2011]. This section maps LINDDUN categories to DID/SSI-specific privacy threats and identifies where DID architecture creates novel privacy threat surfaces not covered by the original framework.
| LINDDUN Class | DID-Specific Manifestation | Novel SSI Surface | STRIDE-DID Cross-reference |
|---|---|---|---|
| Linkability | DID reuse across verifiers; correlated credential presentations; resolver query linkability | Pairwise DID rotation insufficient if resolver queries are logged; ZKP nonce reuse links presentations | I |
| Identifiability | Quasi-identifier exposure through partial VC disclosure; DID Document metadata enabling re-identification | Selective disclosure without proof of non-disclosure; k-anonymity failures in small issuer populations | I |
| Non-repudiation | Irrevocable credential signatures enabling retroactive audit; persistent DID operation ledger entries | Blockchain immutability as privacy threat: DID operations cannot be deleted after publication | R |
| Detectability | DID resolution frequency revealing activity patterns; presence of recovery methods revealing security posture | Recovery method type in DID Document reveals guardian count and type — a high-value metadata target | I |
| Disclosure | Credential content inference from disclosed attributes; proof metadata revealing undisclosed claims | BBS+ signature reveal-all-or-nothing failures; range proof boundaries inferring sensitive values | I |
| Unawareness | Holder unaware of verifier's retention policy; issuer unaware of downstream VC propagation | Verifier ecosystems accumulating VC presentation logs without holder consent or awareness | I, T |
| Non-compliance | DID Document containing personal data subject to GDPR right-to-erasure — technically irreconcilable with blockchain immutability | Legal obligation to delete vs. cryptographic immutability: a structural tension unique to decentralized identity on public ledgers | K (K4) |
7. CVSS-DID Scoring Methodology
The Common Vulnerability Scoring System v3.1 [CVSS-31] provides a standardized method for assessing vulnerability severity. This specification extends CVSS 3.1 with four additional metrics specific to decentralized identity systems. CVSS-DID scores are used throughout the attack catalog in Part III.
7.1 CVSS-DID Extension Metrics
| Metric | Abbreviation | Values | Rationale |
|---|---|---|---|
| Decentralization Factor | DF |
High (H) / Medium (M) / Low (L) | Higher decentralization reduces the blast radius of any single node compromise but may increase attack persistence. H = no central authority; L = federated with trust anchors. |
| Recovery Availability | RA |
Available (A) / Degraded (D) / None (N) | Whether a valid recovery path exists for the compromised DID. N = permanent identity loss risk. |
| Threshold Collusion Required | TC |
None (N) / Partial (P) / Full (F) | Whether the attack requires compromise of a threshold of distributed participants. F = full threshold needed; N = single-party attack. |
| Quantum Advantage | QA |
Applicable (A) / Not Applicable (N) | Whether a sufficiently powerful quantum computer would change the exploitability of this vulnerability from theoretical to practical. |
7.2 Severity Classification
| Severity | CVSS-DID Base Score | Description | Example |
|---|---|---|---|
| Critical | 9.0–10.0 | Permanent identity loss or complete impersonation without recovery path | Guardian collusion at threshold; full MPC provider compromise |
| High | 7.0–8.9 | Unauthorized DID operations or credential forgery with significant impact | DID Document injection; resolver cache poisoning |
| Medium | 4.0–6.9 | Partial information disclosure or degraded availability | Social graph leakage; resolver flooding |
| Low | 0.1–3.9 | Limited impact, difficult to exploit, or easily mitigated | Timing side-channel on key derivation; DID method metadata exposure |
8. The DID Stack
This specification models the DID ecosystem as a four-layer stack. Each layer has a distinct attack surface, set of trust assumptions, and applicable countermeasure family. Attacks typically exploit weaknesses at a single layer but may propagate across layer boundaries.
8.1 Layer 1 — Registry and Method Layer
The registry layer encompasses the substrate on which DID Documents are anchored. This includes public blockchain ledgers (Ethereum, Bitcoin, Hyperledger Indy), web servers (for did:web), distributed hash tables (for IPFS-backed methods), and DNS infrastructure. The security properties of this layer are entirely determined by the DID method and are largely outside the control of the DID subject.
Primary threats: Smart contract vulnerabilities (T-class), ledger consensus manipulation (T-class), DNS hijacking for did:web (S-class), IPFS content addressing collisions (T-class).
8.2 Layer 2 — Resolution and Transport Layer
The resolution layer encompasses DID resolvers — universal or method-specific — that transform DID strings into DID Documents. Resolvers are trust boundaries: a resolver that returns a manipulated DID Document invalidates all security properties that depend on the resolved document, regardless of the strength of the underlying registry.
Primary threats: Resolver cache poisoning (S-class), DNS-over-HTTPS MITM (T-class), resolution result tampering (T-class), resolver DoS (D-class).
8.3 Layer 3 — Protocol Layer
The protocol layer encompasses the exchange protocols that use DIDs and Verifiable Credentials: DIDComm messaging, OpenID for Verifiable Credentials (OID4VC), the Verifiable Presentation Request protocol, and credential status protocols. This layer's primary threats concern the integrity and privacy of credential exchanges.
Primary threats: Credential forgery (T-class), holder binding bypass (S-class, E-class), presentation replay (S-class), credential correlation (I-class).
8.4 Layer 4 — Application and Wallet Layer
The wallet layer is the most heterogeneous and, in practice, the highest-risk layer. Wallets hold private key material, manage credential stores, and execute user-facing operations. Hardware security module (HSM) integration and secure enclave usage vary widely across implementations.
Primary threats: Private key extraction (K-class, E-class), seed phrase compromise (K-class), wallet malware (K-class, S-class), biometric bypass (S-class, E-class).
9. Adversary Model
This specification defines four adversary tiers based on capability and resources. Each attack entry in Part III is annotated with the minimum adversary tier required to execute the attack.
| Tier | Name | Capabilities | Examples |
|---|---|---|---|
| T0 | Script Kiddie | Uses publicly available tools and exploits; no original research capability; network-level adversary only | Phishing for seed phrases; replaying captured VPs; public resolver abuse |
| T1 | Skilled Attacker | Can develop novel exploits against published protocols; understands cryptographic constructions at a practitioner level; can compromise individual MPC nodes or guardians | Smart contract exploitation; resolver cache poisoning; side-channel on wallet implementations |
| T2 | Nation-State / Well-Funded | Can perform cryptanalytic attacks on weakened algorithms; can compromise threshold fractions of distributed systems; sustained access to target infrastructure | Coordinated guardian compromise; ledger consensus manipulation; large-scale correlation via resolver log access |
| T3 | Quantum-Capable | Possesses a cryptographically relevant quantum computer; can break RSA-2048, ECDSA/Ed25519, and Diffie-Hellman in polynomial time using Shor's algorithm | Retroactive compromise of archived DID key material; breaking Ed25519 holder binding; DH key exchange decryption |
9.1 Adversary Goals
Adversaries attacking DID systems pursue goals that differ meaningfully from classical adversaries. The primary goals, in approximate order of prevalence:
- Identity takeover — gaining full control of a target's DID, enabling impersonation and credential issuance
- Credential forgery — creating false credentials without controlling the issuer's DID
- Correlation and surveillance — building behavioral profiles of subjects across verifiers without their knowledge
- Identity denial — preventing a legitimate subject from using or recovering their DID
- Recovery subversion — gaining the ability to trigger or manipulate recovery mechanisms at a time of the adversary's choosing
10. Identity Lifecycle Threat Map
Every DID passes through a common lifecycle. This section maps the primary threat classes applicable at each lifecycle stage.
The threat classes annotated on each transition arrow indicate which classes are most active during the transition. For example, the transition from Creation to Issuance carries S (key ceremony impersonation), T (DID Document tampering during registration), and K sub-class K1 (key ceremony failure).
The attack catalog assigns each attack a permanent identifier of the form DID-TM-ATK-NNN. Identifiers are stable across versions of this specification; attacks are never renumbered. Deprecated attacks are marked as such but retain their identifier.
Each entry contains: identifier, name, primary and secondary threat class(es), CVSS-DID score and severity, affected DID stack layer, minimum adversary tier, attack description, attack tree (abbreviated), normative mitigation references, and peer-reviewed literature citations.
11. Registry and Method Layer Attacks (50x)
12. Resolution and Transport Layer Attacks (100x)
13. Wallet and Key Material Attacks (200x)
14. Verifiable Credential and Presentation Attacks (300x)
expirationDate of no more than 5 minutes for interactive authentication. REQ-302: Verifiers MUST maintain a seen-nonce cache for the nonce validity window.credentialSubject.id field or without requiring a holder-signed presentation proof, a party who obtains a copy of the credential through a data breach or social engineering can present it as if they were the legitimate holder.credentialSubject.id corresponding to a DID controlled by the holder. REQ-304: Verifiers MUST verify that the presentation proof is signed by the key associated with the credentialSubject.id. REQ-305: Issuers SHOULD use link secrets (as in Hyperledger AnonCreds) for credentials issued to pseudonymous holders.15. Recovery-Specific Attacks (400x)
Recovery attacks are a sub-family of K-class threats that specifically target the mechanisms defined in DID-KR. This catalog entry series maps directly to the recovery types defined in [DID-KR].
maxEpochSkew behind the majority. REQ-406: Refresh transcripts MUST be cryptographically verifiable (as specified in DID-KR §5.4.3). REQ-407: Recovery coordinators MUST detect epoch skew before initiating signing ceremonies.tolerance factor of at least 0.3 (30% margin). REQ-409: VDF parameters MUST be periodically revised as reference platform performance improvements are published. REQ-410: Implementations SHOULD use VDF constructions with inherent ASIC-resistance or provide ASIC-resistance guidance in the parameter calibration documentation. REQ-411: Wesolowski VDF proof verification MUST be performed by an independent verifier, not self-reported by the beneficiary.g^s_i ≡ ∏ C_j^(i^j mod q) (mod p) MUST hold for each submitted (i, s_i). REQ-413: Reconstruction MUST fail and abort if any share verification fails. REQ-414: ZKP proofs (Schnorr proofs as defined in DID-KR §7.2) MUST be verified for each guardian submission.16. Cross-Cutting Attacks (500x)
11. Registry and Method Layer Attacks (50x)
12. Resolution and Transport Layer Attacks (100x)
13. Wallet and Key Material Attacks (200x)
14. Verifiable Credential and Presentation Attacks (300x)
expirationDate of no more than 5 minutes for interactive authentication. REQ-302: Verifiers MUST maintain a seen-nonce cache for the nonce validity window.credentialSubject.id field or without requiring a holder-signed presentation proof, a party who obtains a copy of the credential through a data breach or social engineering can present it as if they were the legitimate holder.credentialSubject.id corresponding to a DID controlled by the holder. REQ-304: Verifiers MUST verify that the presentation proof is signed by the key associated with the credentialSubject.id. REQ-305: Issuers SHOULD use link secrets (as in Hyperledger AnonCreds) for credentials issued to pseudonymous holders.15. Recovery-Specific Attacks (400x)
Recovery attacks are a sub-family of K-class threats that specifically target the mechanisms defined in DID-KR. This catalog entry series maps directly to the recovery types defined in [DID-KR].
maxEpochSkew behind the majority. REQ-406: Refresh transcripts MUST be cryptographically verifiable (as specified in DID-KR §5.4.3). REQ-407: Recovery coordinators MUST detect epoch skew before initiating signing ceremonies.tolerance factor of at least 0.3 (30% margin). REQ-409: VDF parameters MUST be periodically revised as reference platform performance improvements are published. REQ-410: Implementations SHOULD use VDF constructions with inherent ASIC-resistance or provide ASIC-resistance guidance in the parameter calibration documentation. REQ-411: Wesolowski VDF proof verification MUST be performed by an independent verifier, not self-reported by the beneficiary.g^s_i ≡ ∏ C_j^(i^j mod q) (mod p) MUST hold for each submitted (i, s_i). REQ-413: Reconstruction MUST fail and abort if any share verification fails. REQ-414: ZKP proofs (Schnorr proofs as defined in DID-KR §7.2) MUST be verified for each guardian submission.16. Cross-Cutting Attacks (500x)
17. Algebraic Assumptions and Failure Conditions
The cryptographic constructions used in DID systems rest on a hierarchy of hardness assumptions. An assumption failure — whether due to mathematical advances, implementation errors, or quantum computing — cascades upward through all constructions that depend on it. This section catalogs the relevant assumptions and their failure consequences.
| Assumption | Used In | Classical Security | Quantum Security | Failure Consequence |
|---|---|---|---|---|
| Discrete Logarithm (DLog) | Feldman VSS commitments, Schnorr proofs, fROST | ~128 bits (256-bit group) | Broken by Shor's algorithm | Commitments forgeable; ZKP soundness lost; threshold signatures broken |
| Computational Diffie-Hellman (CDH) | ECDH in DIDComm, X25519 key agreement | ~128 bits (Curve25519) | Broken by Shor's algorithm | Encrypted DIDComm messages retroactively decryptable |
| RSA Strong Sequentiality | Wesolowski/Pietrzak VDF (RSA groups) | ~128 bits (2048-bit RSA) | Broken by Shor's algorithm | VDF time-lock property void; inheritance time-locks immediately bypassable |
| Collision Resistance (SHA-256) | Credential hashing, Merkle proofs, DID Document content addressing | ~128 bits | Grover: ~64 bits (mitigated by doubling output) | Credential forgery; Merkle proof bypass; content addressing collision |
| One-Way Function (PBKDF2, HKDF) | Seed derivation, key stretching | Security determined by parameters | Grover: halved effective security | Seed recovery from backup material; brute force of weak seeds |
18. VSS-Specific Threats
Feldman's Verifiable Secret Sharing (as specified in DID-KR §7.1) has several attack surfaces arising from incorrect parameterization, implementation errors, and adversarial dealer behavior. This section documents these threats and their normative mitigations.
18.1 Incorrect Group Parameterization (DID-TM-ATK-410)
The most critical VSS implementation error is using the wrong modulus for share arithmetic. If shares s_i = P(i) mod p are computed modulo the group prime p rather than the scalar field order q, the Feldman verification equation fails silently for large share values — shares appear to verify but Lagrange interpolation recovers the wrong secret.
All scalar arithmetic (polynomial evaluation, Lagrange interpolation, share addition during refresh) MUST be performed modulo q, the prime order of the subgroup. Commitment group operations (modular exponentiation for Feldman commitments) are performed modulo p. Mixing these moduli is the most common Feldman VSS implementation vulnerability.
Formally: shares live in the scalar field Z_q; commitments live in the group Z_p*. These are distinct algebraic objects. The invariant that enables verification is: ord(g) = q, so g^(x mod q) = g^x mod p for any integer x. This invariant holds only when g is a generator of a subgroup of order exactly q in Z_p*.
18.2 Dishonest Dealer Attack (DID-TM-ATK-411)
A dishonest dealer can distribute inconsistent shares — shares that are not evaluations of any single polynomial — if VSS commitment verification is not performed by each participant before acknowledging receipt. The Feldman commitment scheme makes this detectable: if a share s_i does not satisfy the verification equation, the dealer is provably cheating.
Mitigations: REQ-420: Each participant MUST verify their share against all commitments upon receipt, before acknowledging. REQ-421: Any participant who receives a share that fails verification MUST broadcast a complaint with the failing verification equation.
18.3 Share Refreshment Zero-Term Error (DID-TM-ATK-412)
During proactive refresh (DID-KR §7.1.4), the refresh polynomial R(x) must satisfy R(0) = 0 to preserve the secret. If an implementation inadvertently includes a non-zero constant term — due to an off-by-one error in polynomial construction or incorrect coefficient generation — the refresh changes the secret, rendering previously issued credentials (whose holder binding references the original public key) invalid.
19. ZKP-Specific Threats
19.1 Proof Malleability (DID-TM-ATK-420)
A malleable proof scheme allows an adversary to modify a valid proof to produce another valid proof for the same or a related statement, without knowing the witness. For Schnorr proofs as used in DID-KR §7.2, malleability can arise if the challenge derivation is not commitment-binding or if the verifier accepts proofs with negated response values (since -z is also a valid response in some parameterizations).
Mitigation: REQ-430: Implementations MUST use the Fiat-Shamir heuristic with a domain-separated hash function for non-interactive Schnorr proofs. The challenge MUST be derived as c = H(g || g^r || commitments || session_context) where session_context includes the DID, the recovery session ID, and the current timestamp. REQ-431: Response values MUST be checked to be in [0, q-1] before verification.
19.2 Soundness Failure under Weak Fiat-Shamir (DID-TM-ATK-421)
The Fiat-Shamir transform produces a non-interactive proof that is only sound in the Random Oracle Model. Implementations that use non-random hash functions, truncated hash outputs, or domain separation that allows cross-protocol collision are vulnerable to soundness attacks where a prover without knowledge of the witness can forge a valid proof.
Mitigation: REQ-432: All Fiat-Shamir transformations MUST use SHA-256 or SHA-3-256 with proper domain separation. The domain separator MUST include the protocol identifier "DID-KR-ZKP-v1" and the specific statement type. Hash output MUST NOT be truncated below 128 bits for the challenge.
20. VDF-Specific Threats
20.1 ASIC Hardware Advantage (DID-TM-ATK-430)
VDF security relies on the assumption that sequential computation cannot be parallelized. For RSA-based VDFs (Wesolowski, Pietrzak), this assumption holds for software adversaries. However, custom ASIC hardware optimized for modular squaring can execute the sequential squaring chain at clock speeds 10x–100x faster than a reference CPU, undermining the time-lock guarantee by the same factor.
Mitigation: REQ-440: VDF parameter specifications MUST include an ASIC advantage factor in the difficulty calibration. For Wesolowski VDFs, a minimum ASIC resistance factor of 10x SHOULD be applied — meaning the intended wall-clock time should be achievable by an ASIC adversary at no less than 10% of the nominal time before the parameter is considered broken. REQ-441: VDF parameters MUST be versioned and updatable without changing the DID controller's key material.
20.2 Wesolowski Proof Forgery via Low-Order Elements (DID-TM-ATK-431)
The Wesolowski VDF uses an RSA group whose order is unknown (under the assumption that factoring is hard). An adversary who finds a low-order element in the group can forge a VDF proof without performing the sequential computation. This threat is mitigated by careful modulus generation (using a modulus with no small factors) but must be explicitly verified.
Mitigation: REQ-442: VDF moduli MUST be generated using a verifiably random process. REQ-443: Modulus generation ceremonies MUST be documented and publicly auditable. REQ-444: Implementations MUST verify that the VDF input x ∈ QR(N) (quadratic residuosity check) before evaluation.
21. Threshold Signature Threats
21.1 fROST Nonce Reuse (DID-TM-ATK-440)
fROST threshold signatures require each participant to generate a fresh nonce for each signing ceremony. Nonce reuse — whether due to a faulty PRNG, a state rollback, or incorrect ceremony management — allows an adversary who observes two signing rounds with the same nonce to recover the participant's secret share using simple algebra. This is the single most critical implementation requirement for any Schnorr-based threshold signature scheme.
Mitigation: REQ-450: fROST implementations MUST use deterministic nonce generation per RFC 6979, seeded with the participant's secret share and the message being signed. REQ-451: Participants MUST abort any signing ceremony where the same nonce has been used in a prior ceremony.
21.2 Rogue Key Attack in Key Generation (DID-TM-ATK-441)
In fROST distributed key generation (DKG), a malicious participant can choose their public key share to cancel out or manipulate contributions from other participants, effectively controlling the aggregate public key. This attack is mitigated by requiring proof of knowledge of the corresponding secret key during DKG.
Mitigation: REQ-452: fROST DKG implementations MUST require each participant to prove knowledge of their secret key contribution using a Schnorr proof before their public key share is accepted. This is the KOSK (Knowledge of Secret Key) assumption enforcement.
22. Side-Channel and Implementation Threats
22.1 Timing Attacks on Key Derivation
Variable-time key derivation or signature operations allow an adversary who can measure operation timing (locally or via remote timing) to extract information about secret key material. For DID wallets, the most common timing attack surface is in the comparison of credential proofs or the conditional branches in Lagrange interpolation.
Mitigation: REQ-460: All cryptographic operations involving secret values MUST be implemented in constant time. This includes modular arithmetic, scalar multiplications, and any conditional branch whose path depends on a secret value. Implementations MUST use constant-time comparison functions for all proof verification.
22.2 Fault Injection in Hardware Wallets
Hardware wallets are vulnerable to fault injection attacks — voltage glitching, electromagnetic fault injection (EMFI), or laser fault injection — that can cause the secure element to skip security checks, reveal intermediate computation values, or produce faulty signatures from which the key can be derived.
Mitigation: REQ-461: Hardware wallets MUST implement fault detection countermeasures including instruction duplication, computation result verification, and random delays. Security certifications (Common Criteria EAL4+, FIPS 140-2 Level 3) are RECOMMENDED for hardware wallets used with high-assurance DIDs.
23. Post-Quantum Threat Model
The NIST Post-Quantum Cryptography standardization process concluded in 2024, producing final standards for ML-KEM (CRYSTALS-Kyber), ML-DSA (CRYSTALS-Dilithium), and SLH-DSA (SPHINCS+) [NIST-PQC-2024]. DID systems built on elliptic curve cryptography face a long-term threat from quantum computing that requires a deliberate migration strategy.
23.1 Harvest-Now Decrypt-Later
An adversary can archive encrypted DIDComm messages, sealed credential lockboxes, and other encrypted identity data today, with the intent to decrypt them when a cryptographically relevant quantum computer becomes available. For long-lived identity data (medical records, legal credentials, financial history), this represents a present-day threat to future privacy.
Mitigation: REQ-470: DIDComm implementations SHOULD migrate to hybrid classical/post-quantum key encapsulation mechanisms (HPKE with ML-KEM-768 + X25519). REQ-471: VDF moduli MUST be transitioned to class group-based constructions that are believed to be quantum-resistant, as RSA-group VDFs are broken by Shor's algorithm.
23.2 Migration Window Analysis
Post-quantum migration for DID systems requires coordinated updates across four layers simultaneously: signing algorithms for DID Document proofs, key agreement algorithms for DIDComm, credential proof algorithms for VCs, and threshold signature algorithms for MPC recovery. Partial migration leaves the weakest layer as the attack vector.
DID method specifications MUST define a quantum migration path before deploying DIDs intended to be valid beyond 2030. The migration MUST address all four cryptographic layers simultaneously and MUST NOT rely on the simultaneous availability of both classical and post-quantum security to avoid creating a hybrid-mode vulnerability.
24. Normative Security Requirements
The following requirements are normative. Each requirement is assigned an identifier, a requirement level (MUST/SHOULD/MAY per RFC 2119), the applicable DID stack component, and a pointer to the threat(s) it mitigates.
24.1 DID Registry Requirements
- REQ-50: [MUST] DID registry smart contracts MUST implement Checks-Effects-Interactions. Mitigates: DID-TM-ATK-050.
- REQ-51: [MUST] Registry contracts MUST use a reentrancy guard. Mitigates: DID-TM-ATK-050.
- REQ-52: [MUST] did:web implementations MUST use DNSSEC and TLS certificate monitoring. Mitigates: DID-TM-ATK-051.
- REQ-53: [SHOULD] did:web DID Documents SHOULD include a self-signed proof for detection of unauthorized modification. Mitigates: DID-TM-ATK-051.
- REQ-54: [MUST] Resolvers MUST connect to multiple independent ledger nodes. Mitigates: DID-TM-ATK-052.
24.2 Resolver Requirements
- REQ-100: [MUST] Cached DID Documents MUST be cryptographically anchored to the registry. Mitigates: DID-TM-ATK-100.
- REQ-101: [MUST] Cache TTLs MUST NOT exceed DID method minimum update propagation time. Mitigates: DID-TM-ATK-100.
- REQ-103: [MUST] Resolvers MUST validate all DID Document URLs against an allowlist. Mitigates: DID-TM-ATK-101.
- REQ-105: [MUST] DID Document size MUST be limited (RECOMMENDED: 64 KB). Mitigates: DID-TM-ATK-102.
- REQ-107: [MUST] Resolvers MUST implement rate limiting per source IP and DID method. Mitigates: DID-TM-ATK-102.
24.3 Wallet Requirements
- REQ-200: [MUST] Wallets MUST use OS-provided secure key storage for all private key material. Mitigates: DID-TM-ATK-200.
- REQ-201: [MUST] Seed phrases MUST NOT be held decrypted in heap memory beyond minimum required time. Mitigates: DID-TM-ATK-200.
- REQ-203: [MUST] Wallets MUST display seed phrases in a secure UI surface preventing clipboard access. Mitigates: DID-TM-ATK-201.
- REQ-205: [MUST] Wallets MUST use hardware-backed biometric APIs. Mitigates: DID-TM-ATK-202.
- REQ-460: [MUST] All cryptographic operations involving secret values MUST be constant-time. Mitigates: §22.1.
24.4 Credential and Presentation Requirements
- REQ-300: [MUST] Verifiable Presentations MUST include a verifier-provided nonce bound to the proof. Mitigates: DID-TM-ATK-300.
- REQ-301: [MUST] Presentation expiry MUST NOT exceed 5 minutes for interactive authentication. Mitigates: DID-TM-ATK-300.
- REQ-303: [MUST] Credentials MUST include credentialSubject.id corresponding to a holder-controlled DID. Mitigates: DID-TM-ATK-301.
- REQ-306: [MUST] ZKP presentation proofs MUST use fresh, cryptographically secure randomness for each generation. Mitigates: DID-TM-ATK-302.
24.5 Recovery Requirements
- REQ-400: [MUST] Guardian sets MUST be distributed across independent jurisdictions and organizations. Mitigates: DID-TM-ATK-400.
- REQ-404: [MUST] MPC implementations MUST implement the catch-up protocol (DID-KR §5.4.3). Mitigates: DID-TM-ATK-401.
- REQ-408: [MUST] VDF difficulty MUST include a tolerance factor ≥ 0.3. Mitigates: DID-TM-ATK-402.
- REQ-412: [MUST] Every submitted VSS share MUST be verified against Feldman commitments before Lagrange interpolation. Mitigates: DID-TM-ATK-403.
- REQ-415: [MUST] Recovery method dependency graphs MUST be validated as acyclic at publication time. Mitigates: DID-TM-ATK-404.
- REQ-450: [MUST] fROST implementations MUST use deterministic nonce generation per RFC 6979. Mitigates: DID-TM-ATK-440.
25. Normative Privacy Requirements
25.1 Selective Disclosure Requirements
- PRI-100: [MUST] Credential issuers MUST support selective disclosure schemes (BBS+, SD-JWT, or AnonCreds) for credentials containing more than one attribute.
- PRI-101: [MUST] Wallet implementations MUST NOT present more claims than explicitly requested by the verifier's presentation request.
- PRI-102: [SHOULD] Verifiers SHOULD request the minimum set of claims necessary for their use case (data minimization principle).
25.2 Unlinkability Requirements
- PRI-200: [MUST] Holders MUST use pairwise DIDs (unique DID per verifier relationship) for all interactions where unlinkability is a requirement.
- PRI-201: [MUST] ZKP presentation proofs MUST achieve proof unlinkability across presentations (no shared proof components across presentations to different verifiers).
- PRI-202: [SHOULD] DID resolution SHOULD be performed through anonymizing infrastructure (Tor, onion services) where unlinkability at the resolver layer is required.
25.3 Minimization Requirements
- PRI-300: [MUST] DID Documents MUST NOT contain personal data. Service endpoints MUST NOT include information that could identify the subject without DID resolution.
- PRI-301: [MUST] Recovery method representations in DID Documents MUST use hashed or pseudonymous guardian identifiers (see DID-KR §9.2). Mitigates: DID-TM-ATK-501.
- PRI-302: [SHOULD] Issuers SHOULD issue single-use credentials for sensitive attributes to prevent accumulation of presentation history at verifiers.
26. Threat-to-Control Traceability Matrix
The following matrix maps selected attacks to their primary normative controls. Y = directly addresses the threat; P = partially addresses; N = not addressed by this control.
| Attack | REQ-50/51 | REQ-100/101 | REQ-200/201 | REQ-300/301 | REQ-400/401 | REQ-412/413 | REQ-415 | REQ-450/451 | PRI-200/201 |
|---|---|---|---|---|---|---|---|---|---|
| ATK-050 Smart contract reentrancy | Y | N | N | N | N | N | N | N | N |
| ATK-100 Resolver cache poisoning | N | Y | N | N | N | N | N | N | N |
| ATK-200 Cold boot key extraction | N | N | Y | N | N | N | N | N | N |
| ATK-300 VP replay | N | N | N | Y | N | N | N | N | N |
| ATK-400 Guardian collusion | N | N | N | N | Y | N | N | N | N |
| ATK-403 VSS share pollution | N | N | N | N | P | Y | N | N | N |
| ATK-404 Recovery loop deadlock | N | N | N | N | N | N | Y | N | N |
| ATK-440 fROST nonce reuse | N | N | N | N | N | N | N | Y | N |
| ATK-501 Resolver log correlation | N | N | N | N | N | N | N | N | Y |
27. Regulatory and Framework Alignment
27.1 NIST SP 800-63 Digital Identity Guidelines
NIST SP 800-63 defines Identity Assurance Levels (IAL), Authentication Assurance Levels (AAL), and Federation Assurance Levels (FAL). DID-TM security requirements map to these levels as follows:
| Assurance Level | Relevant DID-TM Requirements | Notes |
|---|---|---|
| IAL2 | REQ-303, REQ-304 (credential subject binding) | Identity evidence verification out of scope for DID-TM but referenced by REQ-500 |
| AAL2 | REQ-205 (hardware-backed biometrics), REQ-206 (MFA for high-value ops) | Did method key binding satisfies "something you have" |
| AAL3 | REQ-461 (hardware security module), REQ-200 (secure enclave key storage) | Hardware cryptographic module requirement met by HSM/SE wallets |
| FAL2 | REQ-300 (nonce binding), REQ-302 (nonce cache) | Holder-presented VC with nonce binding satisfies FAL2 replay resistance |
27.2 ISO/IEC 27001 and SOC 2
DID-TM requirements applicable to infrastructure operators (resolver services, MPC providers, guardian services) map to ISO 27001 controls and SOC 2 Trust Services Criteria as follows: The Annex A control A.12.2 (Protection from malware) maps to REQ-201 and REQ-203. A.14.2.8 (System security testing) maps to the test assertions in Appendix A. SOC 2 CC6.1 (logical access controls) maps to REQ-200 through REQ-206.
27.3 eIDAS 2.0 / European Digital Identity Wallet
The European Digital Identity (EUDI) Wallet under eIDAS 2.0 defines security requirements for qualified electronic signatures and seals that must be grounded in Common Criteria-certified hardware. DID-TM REQ-461 (hardware wallet certification) aligns with the eIDAS 2.0 QEAA (Qualified Electronic Attestation of Attributes) requirements. The credential format requirements of the EUDI Architecture Reference Framework (ARF) are satisfied by conformance to REQ-303 through REQ-308.
27.4 W3C DID Core §10–11 Gap Analysis
W3C DID Core §10 identifies security considerations including residual risks of compromise, authentication, verification relationships, and DID method security. This specification extends each consideration into normative requirements with specific attack identifiers and measurable test assertions. The primary gap filled by DID-TM is the absence of a formal threat taxonomy in DID Core: the specification lists considerations but does not provide a framework for systematically eliciting or classifying threats, a gap addressed by the STRIDE-DID taxonomy in §4–5.
28. DID Method Security Profiles
Different DID methods have materially different security properties. This section provides a threat exposure profile for the four most widely deployed methods.
| Method | Registry Trust Model | Highest Exposure Threat Classes | K-Class Profile | Quantum Exposure |
|---|---|---|---|---|
| did:web | DNS + HTTPS (centralized, operator-controlled) | S (DNS hijack), T (host compromise) | Low; no on-chain key material | High; TLS PKI is quantum-vulnerable |
| did:key | None; key material is the DID | K (no rotation possible), D (permanent key loss = DID loss) | Critical; key loss = permanent DID loss; no recovery path | Critical; Ed25519/X25519 broken by quantum |
| did:ion (Sidetree/Bitcoin) | Bitcoin blockchain (PoW, high cost to rewrite) | T (limited; high reorg cost), D (fee griefing) | Medium; key rotation supported via Sidetree recovery keys; recovery key loss is permanent | Medium; Bitcoin PoW has some quantum resistance; ECDSA key exposure is quantum-vulnerable |
| did:peer | Out-of-band exchange; no external registry | S (peer impersonation at setup), R (no external audit trail) | High; rotation requires re-establishment of all peer relationships | Medium; offline key material; quantum threat is key-specific |
Appendix A: Test Assertions
The following test assertions are normative. A conforming implementation MUST pass all applicable assertions. Assertions are designated by component scope: [W] = wallet, [R] = resolver, [M] = DID method, [V] = verifier.
{
"testSuite": "DID-TM-v1",
"assertions": [
{
"id": "DID-TM-TA-001",
"scope": ["W"],
"requirement": "REQ-200",
"description": "Wallet MUST store private keys in OS secure storage",
"method": "static-analysis",
"passCriteria": "No private key bytes in cleartext heap or swap",
"attack": "DID-TM-ATK-200"
},
{
"id": "DID-TM-TA-002",
"scope": ["V"],
"requirement": "REQ-300",
"description": "Verifier MUST reject VP without verifier-issued nonce",
"method": "protocol-test",
"passCriteria": "HTTP 400 response when presentation.proof.challenge absent",
"attack": "DID-TM-ATK-300"
},
{
"id": "DID-TM-TA-003",
"scope": ["W"],
"requirement": "REQ-412",
"description": "VSS reconstruction MUST verify all shares before interpolation",
"method": "unit-test",
"passCriteria": "Reconstruction aborts with error when any share fails Feldman verification",
"attack": "DID-TM-ATK-403"
},
{
"id": "DID-TM-TA-004",
"scope": ["M"],
"requirement": "REQ-415",
"description": "DID method MUST reject DID Documents with cyclic recovery dependencies",
"method": "protocol-test",
"passCriteria": "DID update rejected when recovery method dependency graph contains cycle",
"attack": "DID-TM-ATK-404"
},
{
"id": "DID-TM-TA-005",
"scope": ["W"],
"requirement": "REQ-450",
"description": "fROST implementation MUST use deterministic nonce per RFC 6979",
"method": "unit-test",
"passCriteria": "Same (message, key) pair produces identical nonce across invocations",
"attack": "DID-TM-ATK-440"
}
]
}
Appendix B: Threat Register Template
Implementers SHOULD maintain a threat register using the following JSON schema for each DID system deployment. The register enables ongoing threat tracking and provides evidence for security audits.
{
"$schema": "https://sirraya.org/schemas/did-tm-threat-register/v1",
"system": "Example DID Wallet v2.1",
"assessmentDate": "2026-01-15",
"assessor": "Security Team, Example Corp",
"threats": [
{
"attackId": "DID-TM-ATK-200",
"attackName": "Cold Boot Seed Phrase Extraction",
"class": "K",
"cvss_did": "9.6",
"inherentRisk": "Critical",
"controlsImplemented": ["REQ-200", "REQ-201", "REQ-202"],
"residualRisk": "Low",
"residualRiskJustification": "iOS Secure Enclave stores key material; seed phrase cleared from memory immediately after derivation; mlock applied to key derivation buffers",
"reviewDate": "2026-07-15"
}
]
}
Appendix C: JSON-LD Context
Available at: https://sirraya.org/ns/did/threat-model/v1.jsonld
{
"@context": {
"@version": 1.1,
"@protected": true,
"id": "@id",
"type": "@type",
"ThreatModel": "https://sirraya.org/ns/did/threat-model#ThreatModel",
"ThreatEntry": "https://sirraya.org/ns/did/threat-model#ThreatEntry",
"AttackCatalogEntry": "https://sirraya.org/ns/did/threat-model#AttackCatalogEntry",
"threatModel": {
"@id": "https://sirraya.org/ns/did/threat-model#threatModel",
"@type": "@id"
},
"attackId": {
"@id": "https://sirraya.org/ns/did/threat-model#attackId",
"@type": "xsd:string"
},
"threatClass": {
"@id": "https://sirraya.org/ns/did/threat-model#threatClass",
"@type": "xsd:string"
},
"cvssDid": {
"@id": "https://sirraya.org/ns/did/threat-model#cvssDid",
"@type": "xsd:decimal"
},
"mitigationRefs": {
"@id": "https://sirraya.org/ns/did/threat-model#mitigationRefs",
"@type": "xsd:string",
"@container": "@list"
},
"residualRisk": {
"@id": "https://sirraya.org/ns/did/threat-model#residualRisk",
"@type": "xsd:string"
},
"assessmentDate": {
"@id": "https://sirraya.org/ns/did/threat-model#assessmentDate",
"@type": "xsd:date"
}
}
}
Appendix D: References
Normative References
- [DID-CORE]
- W3C. "Decentralized Identifiers (DIDs) v1.0." W3C Recommendation, 2022. https://www.w3.org/TR/did-core/
- [DID-KR]
- Mir, A. H. "DID Key Recovery Specification v1.0.0." Sirraya Labs, 2026.
- [VC-DATA-MODEL]
- W3C. "Verifiable Credentials Data Model 2.0." W3C Recommendation, 2024.
- [RFC2119]
- Bradner, S. "Key words for use in RFCs to Indicate Requirement Levels." IETF RFC 2119, 1997.
- [RFC8174]
- Leiba, B. "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words." IETF RFC 8174, 2017.
- [RFC6979]
- Thomas, P. "Deterministic Usage of the Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA)." IETF RFC 6979, 2013.
- [CVSS-31]
- FIRST.org. "Common Vulnerability Scoring System v3.1 Specification." 2019.
- [NIST-PQC-2024]
- NIST. "Post-Quantum Cryptography Standards." FIPS 203, 204, 205, 2024.
- [NIST-SP-800-63]
- NIST. "Digital Identity Guidelines." SP 800-63-3, 2017.
Informative References
- [STRIDE-ORIGINAL]
- Kohnfelder, L. & Garg, P. "The threats to our products." Microsoft Interface, 1999.
- [DENG-2011]
- Deng, M., Wuyts, K., Scandariato, R., Preneel, B., Joosen, W. "A privacy threat analysis framework: supporting the elicitation and fulfillment of privacy requirements." Requirements Engineering Journal, 2011.
- [FELDMAN-1987]
- Feldman, P. "A Practical Scheme for Non-interactive Verifiable Secret Sharing." FOCS 1987.
- [SHAMIR-1979]
- Shamir, A. "How to Share a Secret." Communications of the ACM, 1979.
- [HERZBERG-1995]
- Herzberg, A., Jarecki, S., Krawczyk, H., Yung, M. "Proactive Secret Sharing, Or: How to Cope With Perpetual Leakage." CRYPTO 1995.
- [BONEH-2018]
- Boneh, D., Bonneau, J., Bünz, B., Fisch, B. "Verifiable Delay Functions." CRYPTO 2018.
- [BONNEAU-2012]
- Bonneau, J., Herley, C., van Oorschot, P. C., Stajano, F. "The Quest to Replace Passwords." IEEE S&P 2012.
- [HALDERMAN-2008]
- Halderman, J. A. et al. "Lest We Remember: Cold Boot Attacks on Encryption Keys." USENIX Security 2008.
- [FETT-DID-2019]
- Fett, D., Küsters, R., Schmitz, G. "An Extensive Formal Security Analysis of the OpenID Financial-grade API." IEEE S&P 2019.
- [ATZEI-2017]
- Atzei, N., Bartoletti, M., Cimoli, T. "A Survey of Attacks on Ethereum Smart Contracts." ICPSS 2017.
- [HEILMAN-2015]
- Heilman, E., Kendler, A., Zohar, A., Goldberg, S. "Eclipse Attacks on Bitcoin's Peer-to-Peer Network." USENIX Security 2015.
- [CHAUM-1985]
- Chaum, D. "Security without identification: Transaction systems to make big brother obsolete." CACM 1985.
- [MUHLE-2018]
- Mühle, A., Grüner, A., Gayvoronskaya, T., Meinel, C. "A Survey on Essential Components of a Self-Sovereign Identity." Computer Science Review, 2018.
- [PEDERSEN-1992]
- Pedersen, T. P. "Non-Interactive and Information-Theoretic Secure Verifiable Secret Sharing." CRYPTO 1991.
- [GENNARO-1996]
- Gennaro, R., Jarecki, S., Krawczyk, H., Rabin, T. "Robust Threshold DSS Signatures." EUROCRYPT 1996.
Appendix E: Acknowledgements
The editor wishes to acknowledge the foundational contributions of the cryptographic research community whose work is cited throughout this specification, particularly the authors of the Feldman VSS, proactive secret sharing, and VDF literature. The DID-TM specification builds directly on the security work of the W3C Verifiable Credentials Working Group, the Decentralized Identity Foundation (DIF), and the Trust Over IP Foundation.
Special acknowledgement is due to the researchers whose work established the theoretical foundations that make formal DID Key Recovery Threat Modeling possible: the formalization of Schnorr proofs and their use in threshold schemes (Schnorr 1991), the Fiat-Shamir heuristic (Fiat & Shamir 1987), and the proactive secret sharing framework that underpins MPC-mediated recovery security (Herzberg et al. 1995).
The K-class taxonomy was developed in conjunction with the DID Key Recovery Extension (DID-KR), and the authors of that specification's cryptographic constructions directly informed the K2, K3, and K4 sub-category definitions.